]> git.pld-linux.org Git - packages/chromium-browser.git/blame - update-source.sh
up to 25.0.1364.97
[packages/chromium-browser.git] / update-source.sh
CommitLineData
4bc08302 1#!/bin/sh
04217bf5
ER
2# Usage:
3# ./update-source.sh
4# env variables controlling behaviour
04217bf5 5# build_package=[0|1] - build package when new version is fetched
6b7ab851 6# prep_package=[0|1] - check if package can be unpacked (implies build_package)
04217bf5
ER
7# publish_packages=[0|1] - publish built packages in ~/public_html/$dist/$arch
8# quiet=[0|1] - discard stdout of process
9
79c2c6e5 10test "$prep_package" = 0 && build_package=0
6b7ab851 11
0cad051b
ER
12pkg=chromium-browser
13specfile=$pkg.spec
14
68aa31d5
ER
15# work in package dir
16dir=$(dirname "$0")
17cd "$dir"
4605be6f 18dir=$(pwd)
68aa31d5 19
d1bc0a80
ER
20# extract version components from url
21# exports: $version; $release; $svndate; $svnver
22extract_version() {
d1bc0a80
ER
23 local url=$1 part
24
25 part=${url#${pkg}[_-]}
26 if [[ $version = *~* ]]; then
27 # ubuntu urls
28 version=${part%~*}; part=${part#*${version}~}
29 else
807fd984 30 version=${part%.tar.*}; part=${part#*${version}.tar.*}
d1bc0a80
ER
31 fi
32
33 # release always 1 :)
34 release=1
35 if [ "$part" != "${part%%svn*}" ]; then
36 svndate=${part#svn*}; svndate=${svndate%%r*}
37 part=${part#svn${svndate}}
38 else
39 svndate='%{nil}'
40 fi
41 svnver=${part#r}; svnver=${svnver%%.*}
807fd984
ER
42
43 : version=$version release=$release svnver=$svnver
d1bc0a80
ER
44}
45
46url2version() {
47 local url=$1
48
49 echo "${url}" | sed -e "
50 s,$version,%{version},g
51 s,$release,%{release},g
52 s,$svndate,%{svndate},g
53 s,$svnver,%{svnver},g
54 "
55}
56
57# setup url from template
58version2url() {
59 local url=$1
60
61 echo "${url}" | sed -e "
62 s,%{version},$version,g
63 s,%{release},$release,g
64 s,%{svndate},$svndate,g
65 s,%{svnver},$svnver,g
66 "
67}
68
68aa31d5
ER
69# abort on errors
70set -e
71
04217bf5
ER
72# setup $quiet, you may override with env it
73quiet=${quiet:-$(tty -s && echo 0 || echo 1)}
74if [ "$quiet" = "1" ]; then
75 # we do not want output when running on cron
76 exec 1>/dev/null
77fi
78
0cad051b 79# take baseurl from .spec Source0
d954b7a8 80baseurl=$(awk '/^Source0:/{print $2}' $specfile | xargs dirname)
4bc08302
ER
81
82if [ "$1" ]; then
83 url=$1
84else
85 if [ ! -x /usr/bin/lynx ]; then
86 echo >&2 "${1##*/}: need lynx to parse sources"
87 exit 1
88 fi
89 echo "Fetching latest tarball name..."
d1bc0a80 90 urls=$(lynx -width 200 -dump $baseurl/ | awk '/[0-9]+\. .*\.tar/{print $NF}')
0cad051b 91 # unescape "~" encoded by lighttpd
53bd333c 92 url=$(echo "$urls" | sed -e 's,%7e,~,gi' | sort -Vr | head -n1)
0cad051b
ER
93fi
94
95if [ -z "$url" ]; then
96 echo >&2 "URL empty..."
97 exit 1
4bc08302
ER
98fi
99
100tarball=${url##*/}
101echo "tarball: $tarball..."
102
d1bc0a80 103
4bc08302
ER
104if [ ! -f $tarball ]; then
105 if [ ! -x /usr/bin/wget ]; then
106 echo >&2 "${1##*/}: need wget to fetch tarball"
107 exit 1
108 fi
e2d00dcd 109 wget $(test "$quiet" = "1" && echo -q) -c $url
4bc08302
ER
110fi
111
d1bc0a80
ER
112extract_version $tarball
113url_tpl=$(url2version $tarball)
114
4bc08302
ER
115svndate=$(awk '/^%define[ ]+svndate[ ]+/{print $NF}' $specfile)
116svnver=$(awk '/^%define[ ]+svnver[ ]+/{print $NF}' $specfile)
117version=$(awk '/^Version:[ ]+/{print $NF}' $specfile)
65b68643 118rel=$(awk '/^%define[ ]+rel[ ]+/{print $NF}' $specfile)
0cad051b
ER
119if [ "$svndate" = "%{nil}" ]; then
120 svndate=
121fi
4bc08302 122
d1bc0a80
ER
123newtar=$(version2url $url_tpl)
124
78ba8619
ER
125if [ "$newtar" = "$tarball" ]; then
126 echo "$specfile already up to $newtar"
78ba8619 127
213129c3
ER
128 # if we don't publish result, there's nothing more to do
129 if [ "$publish_packages" != 1 ]; then
130 exit 0
131 fi
132else
0cad051b 133 echo "Updating $specfile to $tarball"
d1bc0a80 134 extract_version $tarball
213129c3
ER
135
136 sed -i -e "
137 s/^\(%define[ \t]\+svnver[ \t]\+\)[0-9]\+\$/\1$svnver/
b15a99fe 138 s/^\(%define[ \t]\+svndate[ \t]\+\).\+\$/\1$svndate/
d954b7a8 139 s/^\(%define[ \t]\+rel[ \t]\+\)[0-9]\+\$/\1$release/
213129c3
ER
140 s/^\(Version:[ \t]\+\)[.0-9]\+\$/\1$version/
141 " $specfile
142
3f764c5a 143 ../builder --no-init -ncs -5 $specfile
213129c3 144fi
78ba8619 145
213129c3 146# if we don't build. we're done
6b7ab851 147if [ "$prep_package" = 0 ]; then
3cdc039f
ER
148 exit 0
149fi
150
151dist=$(rpm -E %{pld_release})
152arch=$(rpm -E %{_host_cpu})
126ea630 153outdir=$(readlink -f $dir)/BUILD-$dist-$arch
3cdc039f
ER
154logfile=$outdir/$pkg.log
155rpmdir=$outdir/RPMS
213129c3 156rpmdest=~/public_html/chromium-browser/$dist/$arch
3cdc039f
ER
157install -d $rpmdir
158
213129c3
ER
159# if already published?
160if [ "$publish_packages" = 1 ]; then
820bbd71 161 pkg=$rpmdest/$pkg-$version-${svnver:+0.$svnver.}$release.$arch.rpm
213129c3
ER
162 if [ -f "$pkg" ]; then
163 exit 0
164 fi
165fi
166
6b7ab851 167command=-bp
79c2c6e5 168test "$build_package" = 1 && command=-bb
4605be6f 169 rpmbuild $command --clean \
3cdc039f
ER
170 --define "_unpackaged_files_terminate_build 1" \
171 --define '_enable_debug_packages 0' \
4605be6f
ER
172 --define "_topdir $dir" \
173 --define "_specdir $dir" \
174 --define "_sourcedir $dir" \
3cdc039f
ER
175 --define "_builddir $outdir" \
176 --define "_rpmdir $rpmdir" \
4605be6f
ER
177 --without debuginfo \
178 --with verbose \
179 $specfile > $logfile 2>&1 || {
15670155 180 echo >&2 "Package build failed"
3cdc039f
ER
181 tail -n 1000 $logfile >&2
182 exit 1
183}
184
6b7ab851 185if [ "$publish_packages" = 1 ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
3cdc039f
ER
186 install -d $rpmdest
187 umask 022
188 chmod 644 $rpmdir/*.rpm
189 mv -v $rpmdir/*.rpm $rpmdest/
190 poldek --cachedir=$HOME/tmp --mkidx -s $rpmdest/ --mt=pndir
191
192 if [ -x /usr/bin/createrepo ]; then
193 install -d $rpmdest/repodata/cache
194 createrepo -q -c $rpmdest/repodata/cache $rpmdest
68aa31d5 195 fi
4bc08302 196fi
This page took 0.127895 seconds and 4 git commands to generate.