#!/bin/sh # Heavily based on the Slackware 14.1 SlackBuild (v1) # Written by Andrea Sciucca ( gohanz at infinito.it) # Last build from Matteo Rossini ( zerouno at slacky it ) # Slackware build script for chromium # Official Site: http://www.chromium.org/ # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Require: set -e PKGNAME=chromium #VERSION=${VERSION:-SNAPSHOT} # Set to SNAPSHOT to install the latest release. VERSION=${VERSION:-34.0.1847.116} # or set an exact realese #VERSION=${VERSION:-28} # or set your prefered major version BUILD=${BUILD:-2} TAG=${TAG:-sl} ARCH=${ARCH:-x86_64} CONTINUE=${CONTINUE:-0} SOURCE="http://commondatastorage.googleapis.com/chromium-browser-official" if [ "$VERSION" == "SNAPSHOT" ];then VERSION=. fi #VERSION=$(wget http://src.chromium.org/viewvc/chrome/releases/?view=log -O - -q|grep DEPS|awk '{print $7}'|grep -m1 ^$VERSION) SOURCE=$SOURCE/chromium-$VERSION.tar.xz TAR= # empty = auto DIR= # empty = auto DOCS="AUTHORS Android.mk DEPS LICENSE OWNERS PRESUBMIT.py WATCHLISTS" SLKFILES="chromium.desktop chromium_gyp.patch" # Automatically determine the architecture we're building on: case "$ARCH" in i?86) export ARCH=i486; SLKCFLAGS="-O2 -march=i486 -mtune=i686"; CHOST="i486-slackware-linux" ;; x86_64) SLKCFLAGS="-O2 -fPIC -fno-ipa-cp"; LIBDIRSUFFIX="64"; CHOST="x86_64-slackware-linux" ;; arm*) export ARCH=arm; SLKCFLAGS="-O2 -march=armv5te"; CHOST="arm-slackware-linux-gnueabi" ;; # Unless $ARCH is already set, use uname -m for all other archs: *) export ARCH=$( uname -m ) ;; esac # Does not touch following if not needed JOBS=${JOBS:--j2} CWD=$(pwd) TMP=${TMP:-/tmp/buildpkgs/$PKGNAME} PKG=$TMP/package-$PKGNAME OUTPUT=${OUTPUT:-$CWD} TAR=${TAR:-$(basename $SOURCE)} DIR=${DIR:-$(echo "$TAR"|sed -r 's/(\.tar|)(.gz|.bz2|.xz|)$//')} if [ ! -e "$CWD/$TAR" -a "$CONTINUE" != "1" ];then wget "$SOURCE" -O "$CWD/$TAR" fi rm -rf $PKG if [ "$CONTINUE" != "1" ];then ### Preparing Source rm -rf $TMP mkdir -p $TMP $PKG $OUTPUT cd $TMP echo "Extracting source..." tar xf $CWD/$TAR cd $DIR patch -p0 < $CWD/chromium_gyp.patch chown -R root:root . chmod -R u+w,go+r-w,a-s . CONFIGURE=1 fi # Building Chromium package cd $TMP/$DIR if [ "$CONFIGURE" == "1" ];then build/gyp_chromium -f make build/all.gyp --depth=. \ -Dgcc_version=47 \ -Dno_strict_aliasing=1 \ -Dwerror= \ -Dlinux_strip_binary=1 \ -Drelease_extra_cflags="$SLKCFLAGS ${CFLAGS}" \ -Dffmpeg_branding=Chrome \ -Dproprietary_codecs=1 \ -Duse_system_libjpeg=1 \ -Duse_system_libxslt=1 \ -Duse_system_libxml=1 \ -Duse_system_speex=0 \ -Duse_system_flac=1 \ -Duse_system_libwebp=0 \ -Duse_system_bzip2=1 \ -Duse_system_zlib=1 \ -Duse_system_libpng=1 \ -Duse_system_ffmpeg=0 \ -Duse_system_yasm=1 \ -Duse_system_libevent=0 \ -Dremove_webcore_debug_symbols=1 \ -Duse_system_ssl=0 \ -Duse_gnome_keyring=0 \ -Dlinux_link_gnome_keyring=0 \ -Ddisable_nacl=1 \ -Duse_kerberos=0 \ -Duse_gconf=0 \ -Dlinux_fpic=1 \ -Dbuild_ffmpegsumo=1 \ -Duse_openssl=0 \ -Duse_pulseaudio=0 \ $([ "${ARCH}" == 'i686' ] && echo '-Ddisable_sse2=1') ### Building Chrome executable CXXFLAGS="-include /usr/include/expat.h -include unistd.h" \ make $JOBS chrome chrome_sandbox BUILDTYPE=Release fi # Installing Chrome executable, sandbox and driver mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME install -m 0755 -o root -g root out/Release/chrome $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME/chromium install -m 4755 -o root -g root -D out/Release/chrome_sandbox $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME/chrome-sandbox #install -m 0755 -o root -g root -D out/Release/chromedriver $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME/chromiumdriver # out/Release/chrome.pak \ # Installing Chrome data, resources and libraries mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME/themes cp -r \ out/Release/resources.pak \ out/Release/content_resources.pak \ out/Release/chrome_100_percent.pak \ out/Release/libffmpegsumo.so \ out/Release/locales \ out/Release/resources \ out/Release/icudtl.dat \ $PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAME # Installing manpage install -m 0644 -D out/Release/chrome.1 $PKG/usr/man/man1/$PKGNAME.1 # Installing desktop menu and icon files install -m 0644 -D $CWD/$PKGNAME.desktop $PKG/usr/share/applications/chromium.desktop for res in 22 24 48 64 128 256 ;do dir=${PKG}/usr/share/icons/hicolor/${res}x${res}/apps mkdir -p ${dir} cp chrome/app/theme/chromium/product_logo_${res}.png ${dir}/${PKGNAME}.png done res=32 dir=${PKG}/usr/share/icons/hicolor/${res}x${res}/apps mkdir -p ${dir} cp chrome/app/theme/chromium/product_logo_${res}.xpm ${dir}/${PKGNAME}.xpm # Linking Chrome executable on default path mkdir -p $PKG/usr/bin ln -s ../../usr/lib${LIBDIRSUFFIX}/chromium/chromium $PKG/usr/bin/chromium # Documentation mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION for DC in $DOCS;do [ -e $DC ] && cp -r $DC $PKG/usr/doc/$PKGNAME-$VERSION/ || true done mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild cd $CWD for SB in $PKGNAME.SlackBuild slack-desc doinst.sh doinst.sh.gz EULA.TXT $SLKFILES;do [ -e $SB ]&&cp -r $SB $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/$SB done for i in man info do if [ -d $PKG/usr/$i ]; then cd $PKG/usr/$i find . -type f -exec gzip -9 {} \; for file in $( find . -type l ) ; do ln -s $( readlink $file ).gz $file.gz ; rm $file ; done [ "$i" == "info" ] && rm -f dir fi done # Strip binaries and shared objects, if present ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2> /dev/null || true find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2> /dev/null || true find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs -r strip --strip-unneeded 2> /dev/null || true ) mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc [ -e $CWD/doinst.sh ] && cat $CWD/doinst.sh > $PKG/install/doinst.sh [ -e $CWD/doinst.sh.gz ] && zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh # Find and print dependencies into slack-required file cd $PKG chown -R root:root $PKG if [ -x /usr/bin/requiredbuilder ];then ADD=$(ls /var/log/packages/ | sed -ne 's/\(mozilla-nss\)-\([^-]\+-[^-]\+-[^-]\+\)/\1 >= \2,/p' \ -e 's/\(seamonkey-solibs\)-\([^-]\+-[^-]\+-[^-]\+\)/\1 >= \2/p') \ requiredbuilder -y -v -b -s $CWD $PKG fi # Create txz package ## NOTE THE -p parameter /sbin/makepkg -p -l y -c n $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz} # Cleanup if enabled if [ "$1" = "--cleanup" ]; then rm -rf $TMP fi