#!/bin/sh # Slackware build script for Chromium Web Browser # # Copyright 2010 Yucatan "Kenjiro" Costa, Alegrete, RS, Brasil # Copyright 2013,2016 Francisco Ambrozio <sbo@franciscoambrozio.com> # # This work is based on AlienBOB's Chromium SlackBuild # http://www.slackware.com/~alien/slackbuilds/chromium/ # # All rights reserved. # # 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. PRGNAM=chromium VERSION=${VERSION:-53.0.2785.143} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} USE_CLANG=${USE_CLANG:-NO} # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # Here we following the same way of Arch Linux and Gentoo. # Note: These are for this build use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact me for more information. GOOGLE_API_KEY=AIzaSyBhWJ-j5RXyt5911BMuVen-WuS10mvOnrY GOOGLE_DEFAULT_CLIENT_ID=952820686433-mbp5sv9scfj78siq96jlvrem47qgvbi3.apps.googleusercontent.com GOOGLE_DEFAULT_CLIENT_SECRET=XU4b-j0Ssy-XkTvSVmiFMvNY if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" SLKLDFLAGS="" LIBDIRSUFFIX="" TARGETARCH="ia32" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" SLKLDFLAGS="" LIBDIRSUFFIX="" TARGETARCH="ia32" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" SLKLDFLAGS="-L/usr/lib64" LIBDIRSUFFIX="64" TARGETARCH="x64" else SLKCFLAGS="-O2" SLKLDFLAGS="" LIBDIRSUFFIX="" TARGETARCH="ia32" fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.xz cd $PRGNAM-$VERSION chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; # Disable MADV_FREE (if set by glibc) # https://bugzilla.redhat.com/show_bug.cgi?id=1361157 patch -p1 -i $CWD/chromium-52.0.2743.116-unset-madv_free.patch if [ "$USE_CLANG" = "YES" ]; then CLANG_OPT="-Dclang=1 -Dclang_use_chrome_plugins=0" sed -e '/-Wno-absolute-value/d' -i build/common.gypi export CC="clang" export CXX="clang++" SLKCFLAGS="${SLKCFLAGS} -Wno-unknown-warning-option" else CLANG_OPT="-Dclang=0" SLKCFLAGS="${SLKCFLAGS} -Wno-unused-local-typedefs" fi export -n LDFLAGS="$SLKLDFLAGS" CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" _conf=( $CLANG_OPT -Ddisable_glibc=1 -Dffmpeg_branding=Chrome -Dffmpeg_component=shared_library -Dgoogle_api_key=$GOOGLE_API_KEY -Dgoogle_default_client_id=$GOOGLE_DEFAULT_CLIENT_ID -Dgoogle_default_client_secret=$GOOGLE_DEFAULT_CLIENT_SECRET -Dicu_use_data_file_flag=1 -Dlinux_sandbox_path=/usr/lib${LIBDIRSUFFIX}/chromium/chrome_sandbox -Dlinux_strip_binary=1 -Dlinux_use_bundled_binutils=0 -Dlinux_use_bundled_gold=0 -Dlinux_use_gold_binary=0 -Dlinux_use_gold_flags=0 -Dlogging_like_official_build=1 -Dproprietary_codecs=1 -Dremove_webcore_debug_symbols=1 -Dusb_ids_path=/usr/share/hwdata/usb.ids -Duse_allocator=none -Duse_gconf=0 -Duse_kerberos=0 -Duse_sysroot=0 -Duse_pulseaudio=1 -Duse_system_bzip2=0 -Duse_system_ffmpeg=0 -Duse_system_harfbuzz=0 -Duse_system_icu=0 -Duse_system_libjpeg=0 -Duse_system_libpng=0 -Duse_system_libxml=0 -Duse_system_libxslt=0 -Duse_system_opus=0 -Duse_system_snappy=0 -Duse_system_zlib=0 -Duse_system_flac=1 -Duse_system_libevent=1 -Duse_system_nspr=1 -Duse_system_openssl=1 -Duse_system_xdg_utils=1 -Duse_system_yasm=1 -Dwerror= -Drelease_extra_cflags="$CFLAGS" -Dtarget_arch=$TARGETARCH -Ddisable_nacl=1 -Ddisable_sse2=1 ) # Steps needed to build third_party/libaddressinput/chromium/tools/update-strings.py touch chrome/test/data/webui/i18n_process_css_test.html build/linux/unbundle/replace_gyp_files.py "${_conf[@]}" build/gyp_chromium --depth=. "${_conf[@]}" ninja -C out/Release chrome chrome_sandbox chromedriver # "Install" process install -D out/Release/chrome $PKG/usr/lib${LIBDIRSUFFIX}/chromium/chromium install -D -m4755 -o root -g root out/Release/chrome_sandbox \ $PKG/usr/lib${LIBDIRSUFFIX}/chromium/chrome-sandbox install -D out/Release/chromedriver \ $PKG/usr/lib${LIBDIRSUFFIX}/chromium/chromedriver cp out/Release/*.pak $PKG/usr/lib${LIBDIRSUFFIX}/chromium cp -a out/Release/locales $PKG/usr/lib${LIBDIRSUFFIX}/chromium cp -a out/Release/pseudo_locales $PKG/usr/lib${LIBDIRSUFFIX}/chromium ln -s locales $PKG/usr/lib${LIBDIRSUFFIX}/chromium/remoting_locales cp -a out/Release/resources $PKG/usr/lib${LIBDIRSUFFIX}/chromium mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/chromium/lib cp out/Release/lib/libffmpeg.so $PKG/usr/lib${LIBDIRSUFFIX}/chromium/lib cp out/Release/natives_blob.bin $PKG/usr/lib${LIBDIRSUFFIX}/chromium cp out/Release/snapshot_blob.bin $PKG/usr/lib${LIBDIRSUFFIX}/chromium cp -a out/Release/icudtl.dat $PKG/usr/lib${LIBDIRSUFFIX}/chromium mkdir -p $PKG/usr/man/man1 install -m 0644 -D out/Release/chrome.1 $PKG/usr/man/man1/chromium.1 mkdir -p $PKG/usr/bin cat $CWD/chromium.sh | sed s/@LIBDIRSUFFIX@/$LIBDIRSUFFIX/ > $PKG/usr/bin/chromium chmod 0755 $PKG/usr/bin/chromium ln -s ../lib${LIBDIRSUFFIX}/chromium/chromedriver $PKG/usr/bin/chromedriver for size in 16 32; do install -D -m0644 \ chrome/app/theme/default_100_percent/chromium/product_logo_$size.png \ $PKG/usr/share/icons/hicolor/${size}x${size}/apps/${PRGNAM}.png done for size in 22 24 48 64 128 256; do install -D -m0644 \ chrome/app/theme/chromium/product_logo_$size.png \ $PKG/usr/share/icons/hicolor/${size}x${size}/apps/${PRGNAM}.png done install -D -m 0644 $CWD/chromium.desktop $PKG/usr/share/applications/chromium.desktop mkdir -p $PKG/etc/chromium cat $CWD/chromium.default > $PKG/etc/chromium/00-default.conf.new mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a AUTHORS LICENSE $PKG/usr/doc/$PRGNAM-$VERSION/ || true find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true find $PKG/usr/man -type f -exec gzip -9 {} \; for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}