summaryrefslogtreecommitdiffstats
path: root/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'source/xap/mozilla-firefox/mozilla-firefox.SlackBuild')
-rwxr-xr-xsource/xap/mozilla-firefox/mozilla-firefox.SlackBuild191
1 files changed, 142 insertions, 49 deletions
diff --git a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
index a6f6c65c5..78f826750 100755
--- a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
+++ b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,22 +25,20 @@
VERSION=$(basename $(ls firefox-*.tar.bz2 | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)
RELEASEVER=$(echo $VERSION | cut -f 1 -d r | cut -f 1 -d b)
+# With esr releases we need to fix this
+if [ "${RELEASEVER}r" = "$VERSION" ]; then
+ RELEASEVER=$(echo $RELEASEVER | cut -f 1 -d e)
+ RELEASEVERMAJ=$(echo $RELEASEVER | cut -f 1 -d .)
+fi
BUILD=${BUILD:-1}
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-mozilla-firefox
-
-# Figure out if this is a beta, or a release:
-if echo $VERSION | grep -q b ; then # we think it is a beta
- if bzgrep -q mozilla-beta/ $CWD/firefox-$VERSION.source.tar.bz2 ; then
- MOZVERS=${MOZVERS:-beta}
- else # blindly assume it is a release
- MOZVERS=${MOZVERS:-release}
- fi
-else # release, no "b" in the tarball version:
- MOZVERS=${MOZVERS:-release}
-fi
+# Specify this variable for a localized build.
+# For example, to build a version of Firefox with Italian support, run
+# the build script like this:
+#
+# MOZLOCALIZE=it ./mozilla-firefox.SlackBuild
+#
+MOZLOCALIZE=${MOZLOCALIZE:-}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -52,6 +50,33 @@ if [ -z "$ARCH" ]; then
esac
fi
+# Use PGO? Doubles the time and drive space requirements for the build,
+# but should provide a performance increase. How much depends on which
+# benchmarks you believe, but I've typically seen around 2.5%. I've also
+# seen some which say it can be negligably (a fraction of a percent) slower
+# with this enganged. The anecdotal reports usually say there's a noticable
+# improvement in overall responsiveness. Seems like a good bet if you have
+# the time and your system is able to handle it. Set the variable to
+# anything else prior to the build to compile Firefox in less time (but
+# without the possible benefits of Profile-Guided Optimization).
+#
+# NOTE: The 23.0 release fails to compile with a GLib assert error if PGO
+# is enabled, so it is being disabled by default. I can't say I ever noticed
+# a lot of difference with this anyway (other than a much, much longer compile
+# time. But pass PGO=yes to the SlackBuild if you want to try it.
+#if [ "$ARCH" = "x86_64" ]; then
+# PGO=${PGO:-yes}
+#else
+# # 32-bit systems have problems compiling with PGO, as the per-process
+# # memory requirements are too large. Possibly compiling with a 64-bit
+# # kernel could be a workaround for this, but for now we will default to
+# # using PGO only for x86_64.
+# PGO=${PGO:-no}
+#fi
+#
+# PGO is disabled by default:
+PGO=${PGO:-no}
+
# Try to be gentle to the compiler, no optimizations:
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O"
@@ -70,6 +95,23 @@ elif [ "$ARCH" = "armel" ]; then
LIBDIRSUFFIX=""
fi
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mozilla-firefox
+
+# If not specified, figure out if this is a beta, an esr
+# or a release (we start assuming this last):
+MOZVERS=${MOZVERS:-release}
+if echo $VERSION | grep -q b ; then # we think it is a beta
+ if bzgrep -q ^mozilla-beta/ $CWD/firefox-$VERSION.source.tar.bz2 ; then
+ MOZVERS=beta
+ fi
+elif echo $VERSION | grep -q esr ; then # we think it is an esr
+ if bzgrep -q ^mozilla-esr$RELEASEVERMAJ/ $CWD/firefox-$VERSION.source.tar.bz2 ; then
+ MOZVERS=esr$RELEASEVERMAJ
+ fi
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
rm -rf $PKG
@@ -80,6 +122,16 @@ rm -rf mozilla-$MOZVERS
tar xvf $CWD/firefox-$VERSION.source.tar.bz2 || exit 1
cd mozilla-$MOZVERS || exit 1
+# Fetch localization, if requested:
+if [ ! -z $MOZLOCALIZE ]; then
+ LOC_TAG="FIREFOX_$( echo $VERSION | tr \. _ )_RELEASE"
+ rm -f $LOC_TAG.tar.bz2
+ if echo $MOZVERS | grep -q esr ; then LOC_VERS=release ; else LOC_VERS=$MOZVERS ; fi
+ wget https://hg.mozilla.org/releases/l10n/mozilla-$LOC_VERS/$MOZLOCALIZE/archive/$LOC_TAG.tar.bz2
+ tar xvf $LOC_TAG.tar.bz2
+ mv $MOZLOCALIZE-$LOC_TAG $MOZLOCALIZE
+fi
+
# Fix a long standing bug that's prevented staying current on GTK+.
# Thanks to the BLFS folks. :-)
cat << EOF >> layout/build/Makefile.in
@@ -111,18 +163,8 @@ if gcc --version | grep -q "gcc (GCC) 4.7.0" ; then
sed -i 's# ""##' browser/base/Makefile.in
fi
-# Mozilla devs enforce using an objdir for building
-# and launching configure with the absolute path
-# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir
-mkdir obj
-cd obj
-export MOZILLA_OFFICIAL="1" &&
-export BUILD_OFFICIAL="1" &&
-export MOZ_PHOENIX="1" &&
-export CFLAGS="$SLKCFLAGS" &&
-export CXXFLAGS="$SLKCFLAGS" &&
-export MOZ_MAKE_FLAGS="$NUMJOBS" &&
-$TMP/mozilla-$MOZVERS/configure \
+# Our building options, in a configure-like display ;)
+OPTIONS="\
--enable-official-branding \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -143,29 +185,75 @@ $TMP/mozilla-$MOZVERS/configure \
--enable-strip \
--enable-cpp-rtti \
--enable-single-profile \
+ --disable-gnomevfs \
--disable-ldap \
--disable-accessibility \
--disable-crashreporter \
--disable-debug \
- --disable-tests \
--disable-pedantic \
--disable-installer \
--disable-mailnews \
--disable-composer \
- --disable-profilesharing
- # Complains about missing APNG support in Slackware's libpng:
- #--with-system-png \
-
+ --disable-profilesharing"
+# Complains about missing APNG support in Slackware's libpng:
+# --with-system-png \
# This option breaks mozilla-12.0:
# --enable-system-cairo \
-#
+if [ ! -z $MOZLOCALIZE ]; then
+ OPTIONS=$OPTIONS" \
+ --enable-ui-locale=$MOZLOCALIZE
+ --with-l10n-base=.."
+ # There's no dictionaries in localized builds
+ sed -i "/@BINPATH@\/dictionaries\/\*/d" browser/installer/package-manifest.in || exit 1
+fi
+
+export MOZILLA_OFFICIAL="1"
+export BUILD_OFFICIAL="1"
+export MOZ_PHOENIX="1"
+export MOZ_PACKAGE_JSSHELL="1"
+export CFLAGS="$SLKCFLAGS"
+export CXXFLAGS="$SLKCFLAGS"
+export MOZ_MAKE_FLAGS="$NUMJOBS"
+
+# Clear some variables that could break the build
+unset DBUS_SESSION_BUS_ADDRESS ORBIT_SOCKETDIR SESSION_MANAGER \
+ XDG_SESSION_COOKIE XAUTHORITY MAKEFLAGS
+
+# Assemble our .mozconfig, we use this method for building, seems
+# needed for PGO.
+echo ". \$topsrcdir/browser/config/mozconfig" > .mozconfig
+
+# Mozilla devs enforce using an objdir for building
+# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir
+mkdir obj
+echo "mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj" >> .mozconfig
+
+if [ "$MOZLOCALIZE" ]; then
+ echo "mk_add_options MOZ_CO_LOCALES=\"$MOZLOCALIZE\"" >> .mozconfig
+fi
+
+# Write in it the options above
+for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done
-#make -f client.mk build MOZ_MAKE_FLAGS="$NUMJOBS" || exit 1
-make MOZ_MAKE_FLAGS="$NUMJOBS" $NUMJOBS || exit 1
-make install DESTDIR=$PKG || exit 1
+# https://developer.mozilla.org/en-US/docs/Building_with_Profile-Guided_Optimization
+# Thanks to ArchLinux and Gentoo for the additional hints.
+if [ "$PGO" = "yes" ]; then
+ # Do a PGO build, double time and disk space but worth it.
+ export MOZ_PGO=1
+ echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> .mozconfig
+ export DISPLAY=:99
+ # Launch Xvfb to let the profile scripts run in a X session.
+ # Ugly note: if the build breaks you may want to do a "killall Xvfb".
+ Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY &
+ dbus-launch --exit-with-session make -f client.mk build || exit 1
+ kill $! || true
+else
+ # Do a normal build
+ echo "ac_add_options --disable-tests" >> .mozconfig
+ make -f client.mk build || exit 1
+fi
-# Exit obj directory:
-cd ..
+make -f client.mk install DESTDIR=$PKG || exit 1
# We don't need these (just symlinks anyway):
rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/firefox-devel-$RELEASEVER
@@ -190,8 +278,6 @@ rm -rf $PKG/usr/include
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
mkdir -p $PKG/usr/share/applications
cat $CWD/mozilla-firefox.desktop > $PKG/usr/share/applications/mozilla-firefox.desktop
-mkdir -p $PKG/usr/share/pixmaps
-cat $CWD/firefox.png > $PKG/usr/share/pixmaps/firefox.png
# These files/directories are usually created if Firefox is run as root,
# which on many systems might (and possibly should) be never. Therefore, if we
@@ -208,14 +294,17 @@ cat $CWD/firefox.png > $PKG/usr/share/pixmaps/firefox.png
)
# Need some default icons in the right place:
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/chrome/icons/default
-install -m 644 other-licenses/branding/firefox/default16.png \
- $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/icons/
-install -m 644 other-licenses/branding/firefox/default16.png \
- $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/chrome/icons/default/
-( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER
- install -m 644 icons/{default,mozicon50}.xpm chrome/icons/default/
-)
+for i in 16 22 24 32 48 256; do
+ install -m 0644 -D browser/branding/official/default${i}.png \
+ $PKG/usr/share/icons/hicolor/${i}x${i}/apps/firefox.png
+done
+mkdir -p $PKG/usr/share/pixmaps
+( cd $PKG/usr/share/pixmaps ; ln -sf /usr/share/icons/hicolor/256x256/apps/firefox.png . )
+mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default
+install -m 644 browser/branding/official/default16.png \
+ $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/icons/
+install -m 644 browser/branding/official/default16.png \
+ $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default/
# Copy over the LICENSE
install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/
@@ -224,5 +313,9 @@ mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-$BUILD.txz
+if [ -z $MOZLOCALIZE ]; then
+ /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-$BUILD.txz
+else
+ /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-${BUILD}_$MOZLOCALIZE.txz
+fi