X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=update-source.sh;h=2924824e789762ac1a73de83a486360af12dfc72;hb=8099609f6a3387e9d53c7d1b906f82626559bb7c;hp=565d0486abc98a3c26b566edd2a5d1ac8a947a11;hpb=9119788a46ea6d48303998c4b6ae5c6d08471165;p=packages%2Fchromium-browser.git diff --git a/update-source.sh b/update-source.sh old mode 100644 new mode 100755 index 565d048..2924824 --- a/update-source.sh +++ b/update-source.sh @@ -2,14 +2,76 @@ # Usage: # ./update-source.sh # env variables controlling behaviour -# skip_distfiles=[0|1] - skip upload to distfiles if new version is fetched # build_package=[0|1] - build package when new version is fetched +# prep_package=[0|1] - check if package can be unpacked (implies build_package) # publish_packages=[0|1] - publish built packages in ~/public_html/$dist/$arch # quiet=[0|1] - discard stdout of process +test "$prep_package" = 0 && build_package=0 + +pkg=chromium-browser +specfile=$pkg.spec + # work in package dir dir=$(dirname "$0") cd "$dir" +dir=$(pwd) + +# extract version components from url +# exports: $version; $release; $svndate; $svnver; $branch; $basever +extract_version() { + local url=$1 part + + part=${url#${pkg}[_-]} + if [[ $version = *~* ]]; then + # ubuntu urls + version=${part%~*}; part=${part#*${version}~} + else + version=${part%.tar.*}; part=${part#*${version}} + part=${part#.tar.xz} + part=${part#.tar.gz} + fi + + # release always 1 :) + release=1 + if [ "$part" != "${part%%svn*}" ]; then + svndate=${part#svn*}; svndate=${svndate%%r*} + part=${part#svn${svndate}} + else + svndate='%{nil}' + fi + svnver=${part#r}; svnver=${svnver%%.*} + + branch=${version%.*} + basever=${version#${branch}.} + + : EXTRACTED: version=$version release=$release svnver=$svnver branch=$branch basever=$basever +} + +url2version() { + local url=$1 + + echo "${url}" | sed -e " + s,$version,%{version},g + s,$release,%{release},g + s,$svndate,%{svndate},g + s,$svnver,%{svnver},g + " +} + +# setup url from template +version2url() { + local url=$1 + + echo "${url}" | sed -e " + s,%{version},$version,g + s,%{release},$release,g + s,%{basever},$basever,g + s,%{branch},$branch,g + s,%{svndate},$svndate,g + s,%{svnver},$svnver,g + " +} # abort on errors set -e @@ -21,7 +83,8 @@ if [ "$quiet" = "1" ]; then exec 1>/dev/null fi -baseurl=http://ppa.launchpad.net/chromium-daily/ppa/ubuntu/pool/main/c/chromium-browser +# take baseurl from .spec Source0 +baseurl=$(awk '/^Source0:/{print $2}' $specfile | xargs dirname) if [ "$1" ]; then url=$1 @@ -31,66 +94,114 @@ else exit 1 fi echo "Fetching latest tarball name..." - url=$(lynx -dump $baseurl/ | awk '/orig\.tar\.gz/{tarball=$NF} END{print tarball}') + urls=$(lynx -width 200 -dump $baseurl/ | awk '/[0-9]+\. .*\.tar/{print $NF}') + # unescape "~" encoded by lighttpd + url=$(echo "$urls" | sed -e 's,%7e,~,gi' | sort -Vr | head -n1) +fi + +if [ -z "$url" ]; then + echo >&2 "URL empty..." + exit 1 fi tarball=${url##*/} echo "tarball: $tarball..." + if [ ! -f $tarball ]; then if [ ! -x /usr/bin/wget ]; then echo >&2 "${1##*/}: need wget to fetch tarball" exit 1 fi - wget -nv -c $url - upload=$tarball + wget $(test "$quiet" = "1" && echo -q) -c $url fi -if [ -z "$skip_distfiles" ] && [ "$upload" ] && [ -x /usr/bin/lftp ]; then - echo "Uploading to dropin. ^C to abort" - ../dropin $upload -fi - -pkg=chromium-browser -specfile=$pkg.spec +extract_version $tarball +url_tpl=$(url2version $tarball) svndate=$(awk '/^%define[ ]+svndate[ ]+/{print $NF}' $specfile) svnver=$(awk '/^%define[ ]+svnver[ ]+/{print $NF}' $specfile) -version=$(awk '/^Version:[ ]+/{print $NF}' $specfile) +branch=$(awk '/^%define[ ]+branch[ ]+/{print $NF}' $specfile) +basever=$(awk '/^%define[ ]+basever[ ]+/{print $NF}' $specfile) +version=$(awk '/^Version:[ ]+/{print $NF}' $specfile | tail -n1) rel=$(awk '/^%define[ ]+rel[ ]+/{print $NF}' $specfile) +if [ "$svndate" = "%{nil}" ]; then + svndate= +fi + +newtar=$(version2url $url_tpl) + +if [ "$newtar" = "$tarball" ]; then + echo "$specfile already up to $newtar" -newtar=${pkg}_${version}~svn${svndate}r${svnver}.orig.tar.gz -if [ "$newtar" != "$tarball" ]; then - echo "Updating $specfile $to $newtar" - version=${tarball#${pkg}_} version=${version%~*} - svndate=${tarball#*svn} svndate=${svndate%%r*} - svnver=${tarball#${pkg}_${version}~svn${svndate}r} svnver=${svnver%%.*} + # if we don't publish result, there's nothing more to do + if [ "$publish_packages" != 1 ]; then + exit 0 + fi +else + echo "Updating $specfile to $tarball" + extract_version $tarball sed -i -e " s/^\(%define[ \t]\+svnver[ \t]\+\)[0-9]\+\$/\1$svnver/ - s/^\(%define[ \t]\+svndate[ \t]\+\)[0-9]\+\$/\1$svndate/ + s/^\(%define[ \t]\+svndate[ \t]\+\).\+\$/\1$svndate/ + s/^\(%define[ \t]\+branch[ \t]\+\).\+\$/\1$branch/ + s/^\(%define[ \t]\+basever[ \t]\+\).\+\$/\1$basever/ + s/^\(%define[ \t]\+rel[ \t]\+\)[0-9]\+\$/\1$release/ s/^\(Version:[ \t]\+\)[.0-9]\+\$/\1$version/ " $specfile - ../builder -ncs -5 $specfile - - if [ "$build_package" ]; then - dist=$(rpm -E %{pld_release}) - arch=$(rpm -E %{_host_cpu}) - outdir=$(readlink -f $dir)/build-$dist-$arch - rpmdir=$outdir/RPMS - install -d $rpmdir - - ../builder -bb --clean --define '_enable_debug_packages 0' --define "_builddir $outdir" --define "_rpmdir $rpmdir" $specfile - - 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 + + ../builder --no-init -ncs -5 $specfile +fi + +# if we don't build. we're done +if [ "$prep_package" = 0 ]; then + exit 0 +fi + +dist=$(rpm -E %{pld_release}) +arch=$(rpm -E %{_host_cpu}) +outdir=$(readlink -f $dir)/BUILD/$dist-$arch +logfile=$outdir/$pkg.log +rpmdir=$outdir/RPMS +rpmdest=~/public_html/chromium-browser/$dist/$arch +install -d $rpmdir + +# if already published? +if [ "$publish_packages" = 1 ]; then + pkg=$rpmdest/$pkg-$version-${svnver:+0.$svnver.}$release.$arch.rpm + if [ -f "$pkg" ]; then + exit 0 + fi +fi + +command=-bp +test "$build_package" = 1 && command=-bb +rpmbuild $command --clean \ + --define "_unpackaged_files_terminate_build 1" \ + --define '_enable_debug_packages 0' \ + --define "_topdir $dir" \ + --define "_specdir $dir" \ + --define "_sourcedir $dir" \ + --define "_builddir $outdir" \ + --define "_rpmdir $rpmdir" \ + --without debuginfo \ + --with verbose \ + $specfile > $logfile 2>&1 || { + echo >&2 "Package build failed" + tail -n 1000 $logfile >&2 + exit 1 +} + +if [ "$publish_packages" = 1 ] && [ "$(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 + + if [ -x /usr/bin/createrepo ]; then + install -d $rpmdest/repodata/cache + createrepo -q -c $rpmdest/repodata/cache $rpmdest fi -else - echo "$specfile already up to $newtar" fi