packages: vim/autoup.sh (NEW) - script to automatically try upgrade package

glen glen at pld-linux.org
Mon Dec 6 14:33:04 CET 2010


Author: glen                         Date: Mon Dec  6 13:33:04 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- script to automatically try upgrade package

---- Files affected:
packages/vim:
   autoup.sh (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/vim/autoup.sh
diff -u /dev/null packages/vim/autoup.sh:1.1
--- /dev/null	Mon Dec  6 14:33:04 2010
+++ packages/vim/autoup.sh	Mon Dec  6 14:32:59 2010
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Usage:
+# ./autoup.sh
+# env variables controlling behaviour
+#  build_package=[0|1] - build package when new version is fetched
+#  publish_packages=[0|1] - publish built packages in ~/public_html/$dist/$arch
+#  quiet=[0|1] - discard stdout of process
+
+# work in package dir
+dir=$(dirname "$0")
+cd "$dir"
+
+# abort on errors
+set -e
+
+# setup $quiet, you may override with env it
+quiet=${quiet:-$(tty -s && echo 0 || echo 1)}
+if [ "$quiet" = "1" ]; then
+	# we do not want output when running on cron
+	exec 1>/dev/null
+fi
+
+pkg=vim
+specfile=$pkg.spec
+basever=7.3
+baseurl=ftp://ftp.vim.org/pub/editors/vim/patches/$basever
+
+if [ "$1" ]; then
+	ver=$1
+else
+	echo "Fetching latest $pkg version..."
+	ver=$(curl -s $baseurl/MD5SUMS | grep -vF .gz | tail -n1 | awk '{print $2}')
+fi
+
+curpatch=$(awk '/^%define[ 	]+patchlevel[ 	]+/{print $NF}' $specfile)
+curver=$basever.$curpatch
+
+if [ "$curver" != "$ver" ]; then
+	echo "Updating $specfile to $ver"
+	patch=${ver#$basever.}
+	sed -i -e "
+		s/^\(%define[ \t]\+patchlevel[ \t]\+\)[0-9]\+\$/\1$patch/
+	" $specfile
+
+	# cvs up specfile, rename in case of conflicts
+	cvs up $specfile || { set -x; mv -b $specfile $specfile.old; };
+
+	WGET_OPTS="-nv" ../builder -g $specfile
+	cvs -Q add $basever.??? || :
+
+	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"
+			tail -n 1000 $logfile >&2
+			exit 1
+		}
+
+		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
+else
+	echo "$specfile already up to $ver"
+fi
================================================================


More information about the pld-cvs-commit mailing list