]> git.pld-linux.org Git - packages/google-chrome.git/blob - update-source.sh
resume doesn't really work; wget doesn't notice when new primary.xml.gz appears on...
[packages/google-chrome.git] / update-source.sh
1 #!/bin/sh
2
3 if [ "$1" = "-k" ]; then
4         cache=yes
5         shift
6 else
7         cache=no
8 fi
9
10 # product name
11 product=chrome
12 # name
13 name=google-$product
14 # this package
15 specfile=$name.spec
16 # arch to check package. irrelevant for actual arch
17 arch=x86_64
18 # branch: stable, beta, unstable. default: stable
19 branch=${1:-stable}
20
21 case "${branch}" in
22         stable|beta|unstable)
23                 ;;
24         *)
25                 echo "$0: Unknown branch: $branch. Supported branches: stable, beta, unstable." >&2
26                 exit 1
27                 ;;
28 esac
29
30 sourceurl=http://dl.google.com/linux/$product/rpm/stable/$arch
31
32 set -e
33
34 echo -n "Fetching latest version... "
35 t=$(mktemp)
36
37 # poldek is buggy, see https://bugs.launchpad.net/poldek/+bug/1026762
38 #poldek -q --st=metadata --source "$sourceurl/" --update
39 #poldek -q --skip-installed --st=metadata --source "$sourceurl/" --cmd "ls google-chrome-$branch" > $t
40
41 repodata=primary-$branch-$(date +%Y%m%d).xml
42 [ "$cache" = "yes" ] || rm -f "$repodata"
43 test -e $repodata || {
44         wget $sourceurl/repodata/primary.xml.gz -O $repodata.gz
45         gzip -dc $repodata.gz > $repodata || test -s $repodata
46 }
47 perl -ne 'm{<name>google-'$product-$branch'</name>} and m{<version epoch="0" ver="([\d.]+)" rel="(\d+)"/>} and print "$1 $2"' > $t < $repodata
48
49 set -- $(sed -re "s,^.+-([^-]+)-([^-]+).$arch$,\1 \2," $t)
50
51 ver=$1
52 rel=$2
53
54 if [ -z "$ver" -o -z "$rel" ]; then
55         echo "Error: xml file is missing data for ${branch} type"
56         exit 1
57 fi
58
59 # check google-chrome ver only
60 oldver=$(awk '/^Version:[ \t]+/{print $NF; exit}' $specfile)
61 oldrel=$(awk '/^Release:[ \t]+/{print $NF; exit}' $specfile)
62 if [ "$oldrel" = "$rel" -a "$oldver" = "$ver" ]; then
63         echo "Already up to date (google-chrome/$ver-$rel)"
64         exit 0
65 fi
66
67 # extract flash version
68 rpm=$name-$branch-$ver-$rel.$arch.rpm
69 manifest=manifest-$ver.json
70 test -e $rpm || wget -c $sourceurl/$rpm
71 test -e $manifest || {
72         echo ./opt/google/chrome*/PepperFlash/manifest.json > $t
73         rpm2cpio $rpm | cpio -i -E $t --to-stdout > manifest-$ver.json
74         if [ ! -s manifest-$ver.json ]; then
75                 echo "Failed to extract flash version."
76                 exit 1
77         fi
78 }
79 flashv=$(awk -F'"' '/version/{print $4}' manifest-$ver.json)
80
81 rm -f "$t" "$manifest"
82
83 # check google-chrome and flash ver
84 oldflash=$(awk '/^%define[      ]+flashv[       ]+/{print $NF}' $specfile)
85 if [ "$oldrel" = "$rel" -a "$oldver" = "$ver" -a "$oldflash" = "$flashv" ]; then
86         echo "Already up to date (google-chrome/$ver-$rel flash/$flashv)"
87         exit 0
88 fi
89
90 echo "Updating $specfile for google-chrome/$oldver-$oldrel -> $ver-$rel, flash/$oldflash -> $flashv"
91 sed -i -e "
92         s/^\(%define[ \t]\+state[ \t]\+\)[a-z]\+\$/\1$branch/
93         s/^\(%define[ \t]\+flashv[ \t]\+\)[0-9.]\+\$/\1$flashv/
94         s/^\(Version:[ \t]\+\)[.0-9]\+\$/\1$ver/
95         s/^\(Release:[ \t]\+\)[.0-9]\+\$/\1$rel/
96 " $specfile
97 ../builder -ncs -nd -n5 -g $specfile || :
98 ../builder -ncs -nd -5 $specfile
This page took 0.043641 seconds and 4 git commands to generate.