X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=get-source.sh;h=9d5af7290aec463482b43eecae4da224e21025f2;hb=8099609f6a3387e9d53c7d1b906f82626559bb7c;hp=600600b97fd384c52b565f2601f3e47bf9eed4a1;hpb=2a415062a91e95f4be1ca03515a58f76a43f54a9;p=packages%2Fchromium-browser.git diff --git a/get-source.sh b/get-source.sh index 600600b..9d5af72 100755 --- a/get-source.sh +++ b/get-source.sh @@ -6,13 +6,18 @@ CHANNEL=${1:-beta} CHANNELS_URL=http://omahaproxy.appspot.com/all PACKAGE_NAME=chromium-browser -WORK_DIR=$(cd $(dirname "$0"); pwd) -CHROMIUM=$HOME/svn/$PACKAGE_NAME-$CHANNEL +PROGRAM=${0##*/} +WORK_DIR=$(cd "$(dirname "$0")"; pwd) LOCKFILE=$WORK_DIR/$PACKAGE_NAME-$CHANNEL.lock +# Browse URL: http://gsdview.appspot.com/chromium-browser-official/ OFFICIAL_URL=http://commondatastorage.googleapis.com/chromium-browser-official +ALT_URL=https://github.com/zcbenz/chromium-source-tarball/releases/download DIST_DIR=$HOME/public_html/chromium-browser/src/$CHANNEL -VERSION=$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $3}') +# skip package build if interactive +tty -s && build_package=0 + +VERSION=${2:-$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $3}')} if [ -z "$VERSION" ]; then echo >&2 "Can't figure out version for $CHANNEL" exit 1 @@ -33,92 +38,89 @@ fi set -x -# consider lockfile stale after 3h -if ! lockfile -l 10800 $LOCKFILE; then - exit 1 -fi - -trap "rm -f $LOCKFILE" EXIT - -TMP_DIR=$(mktemp -d $WORK_DIR/$PACKAGE_NAME-$CHANNEL-$VERSION-_XXXXXX) -LOGFILE=$TMP_DIR/$PACKAGE_NAME-$VERSION.log - ( -cd "$TMP_DIR" -srctarball=$PACKAGE_NAME-$VERSION.tar.bz2 -if [ "$CHANNEL" = "dev" ]; then - wget -c -nv -O $srctarball "$OFFICIAL_URL/chromium-$VERSION-lite.tar.bz2" -else - wget -c -nv -O $srctarball "$OFFICIAL_URL/chromium-$VERSION.tar.bz2" -fi - -# repackage cleaned up tarball -test -d $PACKAGE_NAME-$VERSION || { - tar xjvf $srctarball - install -d $PACKAGE_NAME-$VERSION - # relocate to src dir (needed to workaround some gyp bug) - mv chromium-$VERSION $PACKAGE_NAME-$VERSION/src -} - -ls -lh $srctarball -rm $srctarball - -cd $PACKAGE_NAME-$VERSION/src -du -sh . - -awk 'NR=1 {print $NF; exit}' v8/ChangeLog | tee -a v8.txt - -# keep v8 in sources if branch is not stable -if [ "$CHANNEL" = "stable" ]; then - v8=0 -else - v8=0 -fi - -if [ "$CHANNEL" != "dev" ]; then - sh -x $WORK_DIR/clean-source.sh v8=$v8 protobuf=0 -fi - -# do not keep REMOVED*.txt in tarball. they are visible in .log anyway -rm -vf REMOVED-*.txt - -du -sh . - -# add LASTCHANGE info, take "branch_revision" item -svnver=$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $8}') -echo "$svnver" > build/LASTCHANGE.in - -cd ../.. - -tarball=$PACKAGE_NAME-$VERSION.tar.$EXT -# xz -9 OOM's on carme -XZ_OPT=-e8 tar -cf $tarball --$EXT $PACKAGE_NAME-$VERSION -ls -lh $tarball - -rm -rf $PACKAGE_NAME-$VERSION - -chmod 644 $tarball -mv $tarball $DIST_DIR - -) > $LOGFILE 2>&1 - -chmod 644 $LOGFILE -mv $LOGFILE $DIST_DIR - -rm -rf $TMP_DIR - -# create diff patches -BASEVER=${VERSION%.*}.0 -if [ -e $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT ]; then - base=$(readlink -f $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT) - current=$DIST_DIR/$PACKAGE_NAME-$VERSION.tar.$EXT - sh -x $WORK_DIR/make-diff-patch.sh $base $current - mv $PACKAGE_NAME-$VERSION.patch.xz $DIST_DIR -fi - -# try updating spec and build it as well -if [ -x $WORK_DIR/update-source.sh ]; then - build_package=1 \ - publish_packages=1 \ - sh -x $WORK_DIR/update-source.sh -fi + flock -n 9 || { echo "$PROGRAM: locked"; exit 1; } + + TMP_DIR=$(mktemp -d $WORK_DIR/$PACKAGE_NAME-$CHANNEL-$VERSION-_XXXXXX) + LOGFILE=$TMP_DIR/$PACKAGE_NAME-$VERSION.log + + ( + cd "$TMP_DIR" + srctarball=$PACKAGE_NAME-$VERSION.tar.xz + wget -nc -nv -O $srctarball "$OFFICIAL_URL/chromium-$VERSION.tar.xz" || : + wget -nc -nv -O $srctarball "$ALT_URL/$VERSION/chromium-$VERSION.tar.xz" || : + test -f $srctarball + + # repackage cleaned up tarball + test -d $PACKAGE_NAME-$VERSION || { + tar xvf $srctarball + mv chromium-$VERSION $PACKAGE_NAME-$VERSION + } + + ls -lh $srctarball + rm $srctarball + + cd $PACKAGE_NAME-$VERSION + du -sh . + + awk '/^#define/ && /(MAJOR|MINOR)_VERSION|BUILD_NUMBER|PATCH_LEVEL/ { printf("%s=%s\n", $2, $3) }' v8/src/version.cc | tee -a v8.sh + + if [ "$CHANNEL" = "stable" ]; then + patch -p1 < $WORK_DIR/remove_bundled_libraries-stale.patch + sh -x $WORK_DIR/clean-source.sh emptydirs=1 v8=0 mesa=0 sqlite=0 ffmpeg=0 protobuf=0 + patch -p1 -R < $WORK_DIR/remove_bundled_libraries-stale.patch + fi + + # do not keep REMOVED*.txt in tarball. they are visible in .log anyway + rm -vf REMOVED-*.txt + + du -sh . + + # add LASTCHANGE info, take "branch_revision" item + svnver=$(wget -qO - "$CHANNELS_URL?os=linux&channel=$CHANNEL" | awk -F, 'NR > 1{print $8}') + echo "$svnver" > build/LASTCHANGE.in + + cd .. + + tarball=$PACKAGE_NAME-$VERSION.tar.$EXT + # xz -9 OOM's on carme + XZ_OPT=-e8 tar -caf $tarball $PACKAGE_NAME-$VERSION + ls -lh $tarball + + rm -rf $PACKAGE_NAME-$VERSION + + chmod 644 $tarball + mv $tarball $DIST_DIR + + ) > $LOGFILE 2>&1 + + chmod 644 $LOGFILE + mv $LOGFILE $DIST_DIR + + rm -rf $TMP_DIR + + # create diff patches + BASEVER=${VERSION%.*}.0 + if [ -e $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT ]; then + base=$(readlink -f $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT) + current=$DIST_DIR/$PACKAGE_NAME-$VERSION.tar.$EXT + if [ "$(basename $base)" != "$(basename $current)" ]; then + sh -x $WORK_DIR/make-diff-patch.sh $base $current + chmod 644 $PACKAGE_NAME-$VERSION.patch.xz + mv $PACKAGE_NAME-$VERSION.patch.xz $DIST_DIR + # for beta and dev channels, update the diff pointer + if [ "$CHANNEL" != "stable" ]; then + ln -sf $PACKAGE_NAME-$VERSION.tar.$EXT $DIST_DIR/$PACKAGE_NAME-$BASEVER.tar.$EXT + fi + fi + fi + + # try updating spec and build it as well + if [ -x $WORK_DIR/update-source.sh ]; then + build_package=${build_package-1} \ + publish_packages=${publish_packages-1} \ + sh -x $WORK_DIR/update-source.sh + fi + + rm $LOCKFILE +) 9>$LOCKFILE