]> git.pld-linux.org Git - packages/vim.git/blame - update-source.sh
obsolete syntax packages bundled into vim-rt
[packages/vim.git] / update-source.sh
CommitLineData
c12e8e1b
ER
1#!/bin/sh
2# Usage:
cbe35070 3# ./update-source.sh
c12e8e1b
ER
4# env variables controlling behaviour
5# build_package=[0|1] - build package when new version is fetched
6# publish_packages=[0|1] - publish built packages in ~/public_html/$dist/$arch
7# quiet=[0|1] - discard stdout of process
8
9# work in package dir
10dir=$(dirname "$0")
11cd "$dir"
12
9e39b66b
ER
13update_sources() {
14 local ver="$1"
15 local patch msg over file
16
17 echo "Updating $specfile to $ver"
18 patch=${ver#$basever.}
19 if [ -z "$patch" ]; then
20 echo >&2 "Will not set empty patchlevel"
21 exit 1
22 fi
23 sed -i -e "
24 s/^\(%define[ \t]\+patchlevel[ \t]\+\)[0-9]\+\$/\1$patch/
25 s/^\(%define[ \t]\+rel[ \t]\+\)[0-9.]\+\$/\11/
26 " $specfile
27
28 # fetch missing/mismatching files manually. faster than builder script does that
29 md5sum -c sources 2>/dev/null | awk -F: '$NF != " OK" {print $1}' | while read file; do
30 echo "$baseurl/$file"
31 done | wget -nv -i -
32
33 WGET_OPTS="-nv" ../builder -g $specfile
34
35 if [ "$build_package" != 0 ]; then
36 build_package
37 fi
38
39 # autocommit
40 msg=$(mktemp)
41 echo "updated to $ver" > $msg
42 echo "" >> $msg
43 over=$(git diff sources | awk '/^\+[0-9a-f]+/{over=$NF; gsub(/\./, "\\.",over); print over; exit}')
44 sed -ne "/$over/,\$p" README.patches | sed -re 's,^[ 0-9]+ ,,' >> $msg
45 git commit -F $msg $specfile sources
46 rm -f $msg
47}
48
49build_package() {
50 local logfile=$outdir/$pkg.log
51
52 install -d $rpmdir
53
54 # setup custom logfile via $HOME_ETC hack
55 # TODO: just add --logfile support for builder
56 cat > $outdir/.builderrc <<-EOF
57 if [ -n "$HOME_ETC" ]; then
58 . "$HOME_ETC/.builderrc"
59 elif [ -r ~/.builderrc ]; then
60 . ~/.builderrc
61 fi
62 LOGFILE='$logfile'
63 EOF
64
65 > $logfile
66 HOME_ETC=$outdir \
67 ../builder -bb --clean \
68 --define "_unpackaged_files_terminate_build 1" \
69 --define '_enable_debug_packages 0' \
70 --define "_builddir $outdir" \
71 --define "_rpmdir $rpmdir" \
72 $specfile || {
73 echo "Package build failed" >&2
74 tail -n 1000 $logfile >&2
75 exit 1
76 }
77 echo >&2 "Package build OK"
78
79 if [ "$publish_packages" ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
80 publish_packages
81 fi
82}
83
84publish_packages() {
85 local rpmdest=~/public_html/$dist/$arch/
86
87 install -d $rpmdest
88 umask 022
89 chmod 644 $rpmdir/*.rpm
90 mv -v $rpmdir/*.rpm $rpmdest/
91 poldek --cachedir=$HOME/tmp --mkidx -s $rpmdest/ --mt=pndir
92}
93
c12e8e1b
ER
94# abort on errors
95set -e
96
97# setup $quiet, you may override with env it
98quiet=${quiet:-$(tty -s && echo 0 || echo 1)}
99if [ "$quiet" = "1" ]; then
100 # we do not want output when running on cron
101 exec 1>/dev/null
102fi
103
104pkg=vim
105specfile=$pkg.spec
7928792f 106basever=7.4
c12e8e1b 107baseurl=ftp://ftp.vim.org/pub/editors/vim/patches/$basever
6eada10b
ER
108sources=ftp://ftp.vim.org/pub/editors/vim/patches/$basever/MD5SUMS
109
9e39b66b
ER
110# setup some paths
111dist=$(rpm -E %{pld_release})
112arch=$(rpm -E %{_host_cpu})
113outdir=$(readlink -f $dir)/BUILD-$dist-$arch
114rpmdir=$outdir/RPMS
115
6eada10b
ER
116status=$(git status --porcelain sources)
117if [ "$status" ]; then
48820310 118 echo >&2 "WARNING: sources status not clean; commit or stash any pending changes"
6eada10b 119 echo "$status"
6eada10b 120fi
c12e8e1b
ER
121
122if [ "$1" ]; then
123 ver=$1
124else
6eada10b 125 echo "Fetching latest patches list..."
6f9e8e2c
ER
126 wget -nv $sources -O sources.tmp 2>&1
127 sort -k 2 -V < sources.tmp > sources.new
315a13bc
ER
128 # exclude files already in git tree
129 git ls-files "$basever.*" | sed -e 's/\./\\./g;s/$/$/'| grep -vf - sources.new > sources
6f9e8e2c 130 rm sources.new sources.tmp
f58097e5 131 # also update patches README
62bb1941 132 wget -nv $baseurl/README -O README.patches 2>&1
6eada10b
ER
133 ver=$(tail -n1 sources | awk '{print $NF}')
134fi
1d58e95d 135
c12e8e1b
ER
136curpatch=$(awk '/^%define[ ]+patchlevel[ ]+/{print $NF}' $specfile)
137curver=$basever.$curpatch
138
139if [ "$curver" != "$ver" ]; then
9e39b66b 140 update_sources "$ver"
c12e8e1b
ER
141else
142 echo "$specfile already up to $ver"
143fi
This page took 0.116701 seconds and 4 git commands to generate.