]> git.pld-linux.org Git - packages/chromium-browser.git/blob - get-source.sh
use flock for locking
[packages/chromium-browser.git] / get-source.sh
1 #!/bin/sh
2 set -e
3
4 # CHANNEL: any from CHANNELS_URL: stable, beta, dev
5 CHANNEL=${1:-beta}
6
7 CHANNELS_URL=http://omahaproxy.appspot.com/all
8 PACKAGE_NAME=chromium-browser
9 PROGRAM=${0##*/}
10 WORK_DIR=$(cd "$(dirname "$0")"; pwd)
11 LOCKFILE=$WORK_DIR/$PACKAGE_NAME-$CHANNEL.lock
12 OFFICIAL_URL=http://commondatastorage.googleapis.com/chromium-browser-official
13 DIST_DIR=$HOME/public_html/chromium-browser/src/$CHANNEL
14
15 VERSION=$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $3}')
16 if [ -z "$VERSION" ]; then
17         echo >&2 "Can't figure out version for $CHANNEL"
18         exit 1
19 fi
20
21 # don't use .xz for beta channels, annoying if unpacks that slowly
22 if [ "$CHANNEL" = "stable" ]; then
23         EXT=xz
24 else
25         EXT=gz
26 fi
27 VERSION_FILE=$DIST_DIR/$PACKAGE_NAME-$VERSION.tar.$EXT
28
29 if [ -e $VERSION_FILE -a -z "$FORCE" ]; then
30         # nothing to update
31         exit 0
32 fi
33
34 set -x
35
36 (
37         flock -n 9 || { echo "$PROGRAM: locked"; exit 1; }
38
39         TMP_DIR=$(mktemp -d $WORK_DIR/$PACKAGE_NAME-$CHANNEL-$VERSION-_XXXXXX)
40         LOGFILE=$TMP_DIR/$PACKAGE_NAME-$VERSION.log
41
42         (
43         cd "$TMP_DIR"
44         if [ "$CHANNEL" != "stable" ]; then
45                 srctarball=$PACKAGE_NAME-$VERSION.tar.xz
46                 wget -c -nv -O $srctarball "$OFFICIAL_URL/chromium-$VERSION.tar.xz"
47         else
48                 srctarball=$PACKAGE_NAME-$VERSION.tar.bz2
49                 wget -c -nv -O $srctarball "$OFFICIAL_URL/chromium-$VERSION.tar.bz2"
50         fi
51
52         # repackage cleaned up tarball
53         test -d $PACKAGE_NAME-$VERSION || {
54                 tar xvf $srctarball
55                 install -d $PACKAGE_NAME-$VERSION
56                 # relocate to src dir (needed to workaround some gyp bug)
57                 mv chromium-$VERSION $PACKAGE_NAME-$VERSION/src
58         }
59
60         ls -lh $srctarball
61         rm $srctarball
62
63         cd $PACKAGE_NAME-$VERSION/src
64         du -sh .
65
66         awk 'NR=1 {print $NF; exit}' v8/ChangeLog | tee -a v8.txt
67
68         if [ "$CHANNEL" != "dev" ]; then
69                 sh -x $WORK_DIR/clean-source.sh emptydirs=1 v8=0 libvpx=0 mesa=0 re2=0
70         fi
71
72         # do not keep REMOVED*.txt in tarball. they are visible in .log anyway
73         rm -vf REMOVED-*.txt
74
75         du -sh .
76
77         # add LASTCHANGE info, take "branch_revision" item
78         svnver=$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $8}')
79         echo "$svnver" > build/LASTCHANGE.in
80
81         cd ../..
82
83         tarball=$PACKAGE_NAME-$VERSION.tar.$EXT
84         # xz -9 OOM's on carme
85         XZ_OPT=-e8 tar -caf $tarball $PACKAGE_NAME-$VERSION
86         ls -lh $tarball
87
88         rm -rf $PACKAGE_NAME-$VERSION
89
90         chmod 644 $tarball
91         mv $tarball $DIST_DIR
92
93         ) > $LOGFILE 2>&1
94
95         chmod 644 $LOGFILE
96         mv $LOGFILE $DIST_DIR
97
98         rm -rf $TMP_DIR
99
100         # create diff patches
101         BASEVER=${VERSION%.*}.0
102         if [ -e $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT ]; then
103                 base=$(readlink -f $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT)
104                 current=$DIST_DIR/$PACKAGE_NAME-$VERSION.tar.$EXT
105                 sh -x $WORK_DIR/make-diff-patch.sh $base $current
106                 mv $PACKAGE_NAME-$VERSION.patch.xz $DIST_DIR
107                 # for beta and dev channels, move the diff pointer
108                 if [ "$CHANNEL" != "stable" ]; then
109                         ln -sf $PACKAGE_NAME-$VERSION.tar.$EXT $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT
110                 fi
111         fi
112
113         # try updating spec and build it as well
114         if [ -x $WORK_DIR/update-source.sh ]; then
115                 build_package=1 \
116                 publish_packages=1 \
117                 sh -x $WORK_DIR/update-source.sh
118         fi
119
120         rm $LOCKFILE
121 ) 9>$LOCKFILE
This page took 0.062443 seconds and 4 git commands to generate.