[packages/vim] update-source: reorganize code into functions
glen
glen at pld-linux.org
Thu Jan 22 11:48:29 CET 2015
commit 9e39b66b73475b7b35c6b6a5f627f5257d325970
Author: Elan Ruusamäe <glen at delfi.ee>
Date: Thu Jan 22 12:47:55 2015 +0200
update-source: reorganize code into functions
update-source.sh | 157 +++++++++++++++++++++++++++++++------------------------
1 file changed, 88 insertions(+), 69 deletions(-)
---
diff --git a/update-source.sh b/update-source.sh
index fd3bf65..1a4a511 100755
--- a/update-source.sh
+++ b/update-source.sh
@@ -10,6 +10,87 @@
dir=$(dirname "$0")
cd "$dir"
+update_sources() {
+ local ver="$1"
+ local patch msg over file
+
+ echo "Updating $specfile to $ver"
+ patch=${ver#$basever.}
+ if [ -z "$patch" ]; then
+ echo >&2 "Will not set empty patchlevel"
+ exit 1
+ fi
+ sed -i -e "
+ s/^\(%define[ \t]\+patchlevel[ \t]\+\)[0-9]\+\$/\1$patch/
+ s/^\(%define[ \t]\+rel[ \t]\+\)[0-9.]\+\$/\11/
+ " $specfile
+
+ # fetch missing/mismatching files manually. faster than builder script does that
+ md5sum -c sources 2>/dev/null | awk -F: '$NF != " OK" {print $1}' | while read file; do
+ echo "$baseurl/$file"
+ done | wget -nv -i -
+
+ WGET_OPTS="-nv" ../builder -g $specfile
+
+ if [ "$build_package" != 0 ]; then
+ build_package
+ fi
+
+ # autocommit
+ msg=$(mktemp)
+ echo "updated to $ver" > $msg
+ echo "" >> $msg
+ over=$(git diff sources | awk '/^\+[0-9a-f]+/{over=$NF; gsub(/\./, "\\.",over); print over; exit}')
+ sed -ne "/$over/,\$p" README.patches | sed -re 's,^[ 0-9]+ ,,' >> $msg
+ git commit -F $msg $specfile sources
+ rm -f $msg
+}
+
+build_package() {
+ local logfile=$outdir/$pkg.log
+
+ install -d $rpmdir
+
+ # setup custom logfile via $HOME_ETC hack
+ # TODO: just add --logfile support for builder
+ cat > $outdir/.builderrc <<-EOF
+ if [ -n "$HOME_ETC" ]; then
+ . "$HOME_ETC/.builderrc"
+ elif [ -r ~/.builderrc ]; then
+ . ~/.builderrc
+ fi
+ LOGFILE='$logfile'
+ EOF
+
+ > $logfile
+ HOME_ETC=$outdir \
+ ../builder -bb --clean \
+ --define "_unpackaged_files_terminate_build 1" \
+ --define '_enable_debug_packages 0' \
+ --define "_builddir $outdir" \
+ --define "_rpmdir $rpmdir" \
+ $specfile || {
+ echo "Package build failed" >&2
+ tail -n 1000 $logfile >&2
+ exit 1
+ }
+ echo >&2 "Package build OK"
+
+ if [ "$publish_packages" ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
+ publish_packages
+ fi
+}
+
+publish_packages() {
+ local rpmdest=~/public_html/$dist/$arch/
+
+ install -d $rpmdest
+ umask 022
+ chmod 644 $rpmdir/*.rpm
+ mv -v $rpmdir/*.rpm $rpmdest/
+ poldek --cachedir=$HOME/tmp --mkidx -s $rpmdest/ --mt=pndir
+}
+
# abort on errors
set -e
@@ -26,6 +107,12 @@ basever=7.4
baseurl=ftp://ftp.vim.org/pub/editors/vim/patches/$basever
sources=ftp://ftp.vim.org/pub/editors/vim/patches/$basever/MD5SUMS
+# setup some paths
+dist=$(rpm -E %{pld_release})
+arch=$(rpm -E %{_host_cpu})
+outdir=$(readlink -f $dir)/BUILD-$dist-$arch
+rpmdir=$outdir/RPMS
+
status=$(git status --porcelain sources)
if [ "$status" ]; then
echo >&2 "WARNING: sources status not clean; commit or stash any pending changes"
@@ -50,75 +137,7 @@ curpatch=$(awk '/^%define[ ]+patchlevel[ ]+/{print $NF}' $specfile)
curver=$basever.$curpatch
if [ "$curver" != "$ver" ]; then
- echo "Updating $specfile to $ver"
- patch=${ver#$basever.}
- if [ -z "$patch" ]; then
- echo >&2 "Will not set empty patchlevel"
- exit 1
- fi
- sed -i -e "
- s/^\(%define[ \t]\+patchlevel[ \t]\+\)[0-9]\+\$/\1$patch/
- s/^\(%define[ \t]\+rel[ \t]\+\)[0-9.]\+\$/\11/
- " $specfile
-
- # fetch missing/mismatching files manually. faster than builder script does that
- md5sum -c sources 2>/dev/null | awk -F: '$NF != " OK" {print $1}' | while read file; do
- echo "$baseurl/$file"
- done | wget -nv -i -
-
- WGET_OPTS="-nv" ../builder -g $specfile
-
- if [ "$build_package" != 0 ]; then
- dist=$(rpm -E %{pld_release})
- arch=$(rpm -E %{_host_cpu})
- outdir=$(readlink -f $dir)/BUILD-$dist-$arch
- logfile=$outdir/$pkg.log
- rpmdir=$outdir/RPMS
- install -d $rpmdir
-
- # setup custom logfile via $HOME_ETC hack
- # TODO: just add --logfile support for builder
- cat > $outdir/.builderrc <<-EOF
- if [ -n "$HOME_ETC" ]; then
- . "$HOME_ETC/.builderrc"
- elif [ -r ~/.builderrc ]; then
- . ~/.builderrc
- fi
- LOGFILE='$logfile'
- EOF
-
- > $logfile
- HOME_ETC=$outdir \
- ../builder -bb --clean \
- --define "_unpackaged_files_terminate_build 1" \
- --define '_enable_debug_packages 0' \
- --define "_builddir $outdir" \
- --define "_rpmdir $rpmdir" \
- $specfile || {
- echo "Package build failed" >&2
- tail -n 1000 $logfile >&2
- exit 1
- }
- echo >&2 "Package build OK"
-
- rpmdest=~/public_html/$dist/$arch/
- if [ "$publish_packages" ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
- install -d $rpmdest
- umask 022
- chmod 644 $rpmdir/*.rpm
- mv -v $rpmdir/*.rpm $rpmdest/
- poldek --cachedir=$HOME/tmp --mkidx -s $rpmdest/ --mt=pndir
- fi
- fi
-
- # autocommit
- msg=$(mktemp)
- echo "updated to $ver" > $msg
- echo "" >> $msg
- over=$(git diff sources | awk '/^\+[0-9a-f]+/{over=$NF; gsub(/\./, "\\.",over); print over; exit}')
- sed -ne "/$over/,\$p" README.patches | sed -re 's,^[ 0-9]+ ,,' >> $msg
- git commit -F $msg $specfile sources
- rm -f $msg
+ update_sources "$ver"
else
echo "$specfile already up to $ver"
fi
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/vim.git/commitdiff/9e39b66b73475b7b35c6b6a5f627f5257d325970
More information about the pld-cvs-commit
mailing list