]> git.pld-linux.org Git - packages/chromium-browser.git/blobdiff - update-source.sh
sync clean source script
[packages/chromium-browser.git] / update-source.sh
old mode 100644 (file)
new mode 100755 (executable)
index 69a3167..2924824
@@ -3,12 +3,75 @@
 # ./update-source.sh
 # env variables controlling behaviour
 #  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
@@ -20,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
@@ -30,83 +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 -q -c $url
-       upload=$tarball
+       wget $(test "$quiet" = "1" && echo -q) -c $url
 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)
 
-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 [ "$newtar" = "$tarball" ]; then
+       echo "$specfile already up to $newtar"
+
+       # 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
-               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"
-                       else
-                               . ~/.builderrc
-                       fi
-                       LOGFILE='$logfile'
-               EOF
-
-               > $logfile
-               HOME_ETC=$outdir \
-                       ../builder -bb --clean \
-                       --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
+
+       ../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
This page took 0.115066 seconds and 4 git commands to generate.