]> git.pld-linux.org Git - packages/chromium-browser.git/blobdiff - update-source.sh
update clean rules
[packages/chromium-browser.git] / update-source.sh
old mode 100644 (file)
new mode 100755 (executable)
index 035bb4c..2924824
@@ -3,15 +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
@@ -34,7 +94,7 @@ else
                exit 1
        fi
        echo "Fetching latest tarball name..."
-       urls=$(lynx -dump $baseurl/ | awk '/[0-9]+\. .*orig\.tar\.gz/{print $NF}')
+       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
@@ -47,28 +107,30 @@ 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 $(test "$quiet" = "1" && echo -q) -c $url
-       upload=$tarball
 fi
 
-
-# cvs up specfile, rename in case of conflicts
-cvs up $specfile || { set -x; mv -b $specfile $specfile.old && cvs up $specfile; }
+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=${pkg}_${version}~${svndate:+svn${svndate}}r${svnver}.orig.tar.gz
+newtar=$(version2url $url_tpl)
+
 if [ "$newtar" = "$tarball" ]; then
        echo "$specfile already up to $newtar"
 
@@ -78,35 +140,28 @@ if [ "$newtar" = "$tarball" ]; then
        fi
 else
        echo "Updating $specfile to $tarball"
-       part=${tarball#${pkg}_}
-       version=${part%~*} part=${part#*${version}~}
-       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%%.*}
+       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
+       ../builder --no-init -ncs -5 $specfile
 fi
 
 # if we don't build. we're done
-if [ "$build_package" = 0 ]; then
+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
+outdir=$(readlink -f $dir)/BUILD/$dist-$arch
 logfile=$outdir/$pkg.log
 rpmdir=$outdir/RPMS
 rpmdest=~/public_html/chromium-browser/$dist/$arch
@@ -114,37 +169,31 @@ install -d $rpmdir
 
 # if already published?
 if [ "$publish_packages" = 1 ]; then
-       pkg=$rpmdest/$pkg-$version-0.$svnver.$rel.$arch.rpm
+       pkg=$rpmdest/$pkg-$version-${svnver:+0.$svnver.}$release.$arch.rpm
        if [ -f "$pkg" ]; then
                exit 0
        fi
 fi
 
-# 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 \
+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" \
-       $specfile || {
+       --without debuginfo \
+       --with verbose \
+       $specfile > $logfile 2>&1 || {
        echo >&2 "Package build failed"
        tail -n 1000 $logfile >&2
        exit 1
 }
 
-if [ "$publish_packages" ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
+if [ "$publish_packages" = 1 ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
        install -d $rpmdest
        umask 022
        chmod 644 $rpmdir/*.rpm
This page took 0.138395 seconds and 4 git commands to generate.