diff options
Diffstat (limited to 'source/xap/seamonkey/seamonkey.SlackBuild')
-rwxr-xr-x | source/xap/seamonkey/seamonkey.SlackBuild | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/source/xap/seamonkey/seamonkey.SlackBuild b/source/xap/seamonkey/seamonkey.SlackBuild index cfa82188..6f3dc56e 100755 --- a/source/xap/seamonkey/seamonkey.SlackBuild +++ b/source/xap/seamonkey/seamonkey.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -26,7 +26,7 @@ PKGNAM=seamonkey TARBALLVER=${VERSION:-$(basename $(ls seamonkey-*.tar.* | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)} # Strip the end from beta versions: VERSION=$(echo $TARBALLVER | cut -f 1 -d b) -BUILD=${BUILD:-2} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -57,19 +57,32 @@ else OPTIMIZE_FLAG=${OPTIMIZE_FLAG:-"-O1"} fi -# Link using gold. This avoids running out of memory on 32-bit systems, and -# avoids a recurring build failure with GNU ld on other systems. -PATH="$(pwd)/gold:$PATH" -export CC=${CC:-"gcc -B$(pwd)/gold"} -export CXX=${CXX:-"g++ -B$(pwd)/gold"} +# Seamonkey has been requiring more and more memory, especially while linking +# libxul. If it fails to build natively on x86 32-bit, it can be useful to +# attempt the build using an x86_64 kernel and a 32-bit userspace. Detect this +# situation and set the ARCH to i686. Later in the script we'll add some +# options to the .mozconfig so that the compile will do the right thing. +if [ "$(uname -m)" = "x86_64" -a "$(file -L /usr/bin/gcc | grep 80386 | grep 32-bit)" != "" ]; then + COMPILE_X86_UNDER_X86_64=true + ARCH=i686 +fi + +# Choose a compiler (gcc/g++ or clang/clang++): +export CC=${CC:-clang} +export CXX=${CXX:-clang++} # -Wformat is needed for -Werror=format-security -# -Wno-format-overflow bypasses gcc9 build failure # -fno-delete-null-pointer-checks disables gcc6 optimization that leads to instability -# -fno-schedule-insns2 don't do an additional pass of instruction scheduling -# -fno-lifetime-dse allow object storage to persist beyond the lifetime of the object -export CFLAGS="-Wformat -Wno-format-overflow -fno-delete-null-pointer-checks -fno-schedule-insns2" -export CXXFLAGS="-Wformat -Wno-format-overflow -fno-delete-null-pointer-checks -fno-schedule-insns2 -fno-lifetime-dse -fpermissive" +export CFLAGS="-Wformat -fno-delete-null-pointer-checks" +export CXXFLAGS="-Wformat -fno-delete-null-pointer-checks -fpermissive" + +# Keep memory usage as low as possible when linking: +SLKLDFLAGS=" -Wl,--as-needed -Wl,--no-keep-memory -Wl,--stats" +export LDFLAGS="$SLKLDFLAGS" +export MOZ_LINK_FLAGS="$SLKLDFLAGS" + +# Don't use icecream: +PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g") NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -84,7 +97,7 @@ PKG=$TMP/package-seamonkey # following these instructions: # https://bugzilla.mozilla.org/show_bug.cgi?id=1377987#c0 if [ -r /root/google-api-key ]; then - GOOGLE_API_KEY="--with-google-api-keyfile=/root/google-api-key" + GOOGLE_API_KEY="--with-google-safebrowsing-api-keyfile=/root/google-api-key" fi rm -rf $PKG @@ -110,10 +123,14 @@ cd seamonkey-${TARBALLVER} || exit 1 zcat $CWD/sm.ui.scrollToClick.diff.gz | patch -p1 --verbose || exit 1 # Fix for glibc-2.30's included gettid(): -zcat $CWD/seamonkey.gettid.patch.gz | patch -p2 --verbose || exit 1 +zcat $CWD/seamonkey.gettid.patch.gz | patch -p1 --verbose || exit 1 + +# Don't fail on a Rust warning due to deprecated syntax: +zcat $CWD/seamonkey.nsstring.patch.gz | patch -p0 --verbose || exit 1 -# Don't complain if Rust is i686: -zcat $CWD/seamonkey.i686.triplet.fix.diff.gz | patch -p1 --verbose || exit 1 +# More Rust syntax changes: +zcat $CWD/seamonkey.rust14x.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/seamonkey.rust.encoding_rs.diff.gz | patch -p1 --verbose || exit 1 # Make sure the perms/ownerships are sane: chown -R root:root . @@ -123,8 +140,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -chown -R root:root . - # Our building options, in a configure-like display ;) OPTIONS="\ --prefix=/usr \ @@ -134,18 +149,16 @@ OPTIONS="\ --enable-startup-notification \ --enable-alsa \ --disable-debug \ - --with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION} \ + --enable-gold \ --enable-strip \ --disable-tests \ --disable-crashreporter \ --enable-accessibility \ $GOOGLE_API_KEY \ - --enable-safe-browsing \ --disable-updater \ --enable-chrome-format=omni \ --disable-necko-wifi \ --enable-extensions=default \ - --enable-rust \ --enable-js-shell \ --enable-elf-hack \ --enable-release \ @@ -182,6 +195,12 @@ mkdir -p mozilla/obj # Set options for $OPTIMIZE_FLAG: echo "ac_add_options --enable-optimize=\"${OPTIMIZE_FLAG}\"" >> .mozconfig +if [ "$COMPILE_X86_UNDER_X86_64" = "true" ]; then + # Compile for i686 under an x86_64 kernel: + echo "ac_add_options --host=i686-pc-linux-gnu" >> .mozconfig + echo "ac_add_options --target=i686-pc-linux-gnu" >> .mozconfig +fi + # Add the $OPTIONS above to .mozconfig: for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done |