www-client/waterfox: new package; new eclasses

This commit is contained in:
Maciej Barć 2020-05-26 10:44:03 +02:00
parent 88fb558095
commit 78e4fab76b
No known key found for this signature in database
GPG Key ID: 031C9FE65BED714A
10 changed files with 1457 additions and 0 deletions

View File

@ -0,0 +1,398 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
# @ECLASS: mozconfig-v6.55.eclass
# @MAINTAINER:
# mozilla team <mozilla@gentoo.org>
# @BLURB: the new mozilla common configuration eclass for FF33 and newer, v6
# @DESCRIPTION:
# This eclass is used in mozilla ebuilds (firefox, thunderbird, seamonkey)
# to provide a single common place for the common mozilla engine compoments.
#
# The eclass provides all common dependencies as well as common use flags.
#
# Some use flags which may be optional in particular mozilla packages can be
# supported through setting eclass variables.
#
# This eclass inherits mozconfig helper functions as defined in mozcoreconf-v3,
# and so ebuilds inheriting this eclass do not need to inherit that.
case ${EAPI} in
0|1|2|3|4)
die "EAPI=${EAPI} not supported"
;;
5)
inherit multilib
;;
esac
inherit flag-o-matic toolchain-funcs
case ${PN} in
(seamonkey) inherit mozcoreconf-v6 ;;
(waterfox) inherit mozcoreconf-v5 ;;
(*) die "Don't use this eclass with some other package!" ;;
esac
# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_WIFI
# @DESCRIPTION:
# Set this variable before the inherit line, when an ebuild needs to provide
# optional necko-wifi support via IUSE="wifi". Currently this would include
# ebuilds for firefox, and potentially seamonkey.
#
# Leave the variable UNSET if necko-wifi support should not be available.
# Set the variable to "enabled" if the use flag should be enabled by default.
# Set the variable to any value if the use flag should exist but not be default-enabled.
# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_JIT
# @DESCRIPTION:
# Set this variable before the inherit line, when an ebuild needs to provide
# deterministic jit support via IUSE="jit". The upstream default will be used
# otherwise, which is generally to enable jit unless support for the platform
# is missing.
#
# Set the variable to "enabled" if the use flag should be enabled by default.
# Set the variable to any value if the use flag should exist but not be default-enabled.
# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_GTK3
# @DESCRIPTION:
# Set this variable before the inherit line, when an ebuild can provide
# optional gtk3 support via IUSE="force-gtk3". Currently this would include
# thunderbird and seamonkey in the future, once support is ready for testing.
#
# Leave the variable UNSET if gtk3 support should not be optionally available.
# Set the variable to "enabled" if the use flag should be enabled by default.
# Set the variable to any value if the use flag should exist but not be default-enabled.
# If gtk+:3 is to be the standard toolkit, do not use this and instead use
# MOZCONFIG_OPTIONAL_GTK2ONLY.
# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_GTK2ONLY
# @DESCRIPTION:
# Set this variable before the inherit line, when an ebuild can provide
# optional gtk2-only support via IUSE="gtk2".
#
# Note that this option conflicts directly with MOZCONFIG_OPTIONAL_GTK3, both
# variables cannot be set at the same time and this variable will be ignored if
# MOZCONFIG_OPTIONAL_GTK3 is set.
#
# Leave the variable UNSET if gtk2-only support should not be available.
# Set the variable to "enabled" if the use flag should be enabled by default.
# Set the variable to any value if the use flag should exist but not be default-enabled.
# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_QT5
# @DESCRIPTION:
# Set this variable before the inherit line, when an ebuild can provide
# optional qt5 support via IUSE="qt5". Currently this would include
# ebuilds for firefox, but thunderbird and seamonkey could follow in the future.
#
# Leave the variable UNSET if qt5 support should not be available.
# Set the variable to "enabled" if the use flag should be enabled by default.
# Set the variable to any value if the use flag should exist but not be default-enabled.
# use-flags common among all mozilla ebuilds
IUSE="${IUSE} dbus debug neon pulseaudio selinux startup-notification system-harfbuzz
system-icu system-jpeg system-libevent system-sqlite system-libvpx"
# some notes on deps:
# gtk:2 minimum is technically 2.10 but gio support (enabled by default) needs 2.14
# media-libs/mesa needs to be 10.2 or above due to a bug with flash+vdpau
RDEPEND=">=app-text/hunspell-1.5.4:=
dev-libs/atk
dev-libs/expat
>=x11-libs/cairo-1.10[X]
>=x11-libs/gtk+-2.18:2
x11-libs/gdk-pixbuf
>=x11-libs/pango-1.22.0
>=media-libs/libpng-1.6.31:0=[apng]
>=media-libs/mesa-10.2:*
media-libs/fontconfig
>=media-libs/freetype-2.4.10
kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) )
pulseaudio? ( || ( media-sound/pulseaudio
>=media-sound/apulse-0.1.9 ) )
virtual/freedesktop-icon-theme
dbus? ( >=sys-apps/dbus-0.60
>=dev-libs/dbus-glib-0.72 )
startup-notification? ( >=x11-libs/startup-notification-0.8 )
>=x11-libs/pixman-0.19.2
>=dev-libs/glib-2.26:2
>=sys-libs/zlib-1.2.3
>=virtual/libffi-3.0.10
virtual/ffmpeg
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXrender
x11-libs/libXt
system-icu? ( >=dev-libs/icu-59.1:= )
system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
system-libevent? ( >=dev-libs/libevent-2.0:0= )
system-sqlite? ( >=dev-db/sqlite-3.19.3:3[secure-delete,debug=] )
system-libvpx? ( >=media-libs/libvpx-1.5.0:0=[postproc] )
system-harfbuzz? ( >=media-libs/harfbuzz-1.3.3:0= >=media-gfx/graphite2-1.3.9-r1 )
"
if [[ -n ${MOZCONFIG_OPTIONAL_GTK3} ]]; then
MOZCONFIG_OPTIONAL_GTK2ONLY=
if [[ ${MOZCONFIG_OPTIONAL_GTK3} = "enabled" ]]; then
IUSE+=" +force-gtk3"
else
IUSE+=" force-gtk3"
fi
RDEPEND+=" force-gtk3? ( >=x11-libs/gtk+-3.4.0:3 )"
elif [[ -n ${MOZCONFIG_OPTIONAL_GTK2ONLY} ]]; then
if [[ ${MOZCONFIG_OPTIONAL_GTK2ONLY} = "enabled" ]]; then
IUSE+=" +gtk2"
else
IUSE+=" gtk2"
fi
RDEPEND+=" !gtk2? ( >=x11-libs/gtk+-3.4.0:3 )"
else
# no gtk3 related dep set by optional use flags, force it
RDEPEND+=" >=x11-libs/gtk+-3.4.0:3"
fi
if [[ -n ${MOZCONFIG_OPTIONAL_WIFI} ]]; then
if [[ ${MOZCONFIG_OPTIONAL_WIFI} = "enabled" ]]; then
IUSE+=" +wifi"
else
IUSE+=" wifi"
fi
RDEPEND+="
wifi? (
kernel_linux? ( >=sys-apps/dbus-0.60
>=dev-libs/dbus-glib-0.72
net-misc/networkmanager )
)"
fi
DEPEND="app-arch/zip
app-arch/unzip
>=sys-devel/binutils-2.16.1
sys-apps/findutils
pulseaudio? ( media-sound/pulseaudio )
${RDEPEND}"
RDEPEND+="
pulseaudio? ( || ( media-sound/pulseaudio
>=media-sound/apulse-0.1.9 ) )
selinux? ( sec-policy/selinux-mozilla )"
# @FUNCTION: mozconfig_config
# @DESCRIPTION:
# Set common configure options for mozilla packages.
# Call this within src_configure() phase, after mozconfig_init
#
# Example:
#
# inherit mozconfig-v6.46
#
# src_configure() {
# mozconfig_init
# mozconfig_config
# # ... misc ebuild-unique settings via calls to
# # ... mozconfig_{annotate,use_with,use_enable}
# mozconfig_final
# }
mozconfig_config() {
# Migrated from mozcoreconf-2
mozconfig_annotate 'system_libs' \
--with-system-zlib \
--with-system-bz2
# Disable for testing purposes only
mozconfig_annotate 'Upstream bug 1341234' --disable-stylo
# Must pass release in order to properly select linker via gold useflag
mozconfig_annotate 'Enable by Gentoo' --enable-release
# Must pass --enable-gold if using ld.gold
if tc-ld-is-gold ; then
mozconfig_annotate 'tc-ld-is-gold=true' --enable-gold
else
mozconfig_annotate 'tc-ld-is-gold=false' --disable-gold
fi
if has bindist ${IUSE}; then
mozconfig_use_enable !bindist official-branding
if [[ ${PN} == firefox ]] && use bindist ; then
mozconfig_annotate '' --with-branding=browser/branding/aurora
fi
fi
# Enable position independent executables
mozconfig_annotate 'enabled by Gentoo' --enable-pie
mozconfig_use_enable debug
mozconfig_use_enable debug tests
if ! use debug ; then
mozconfig_annotate 'disabled by Gentoo' --disable-debug-symbols
else
mozconfig_annotate 'enabled by Gentoo' --enable-debug-symbols
fi
mozconfig_use_enable startup-notification
if [[ -n ${MOZCONFIG_OPTIONAL_WIFI} ]] ; then
# wifi pulls in dbus so manage both here
mozconfig_use_enable wifi necko-wifi
if use kernel_linux && use wifi && ! use dbus; then
echo "Enabling dbus support due to wifi request"
mozconfig_annotate 'dbus required by necko-wifi on linux' --enable-dbus
else
mozconfig_use_enable dbus
fi
else
mozconfig_use_enable dbus
mozconfig_annotate 'disabled' --disable-necko-wifi
fi
if [[ -n ${MOZCONFIG_OPTIONAL_JIT} ]]; then
mozconfig_use_enable jit ion
fi
# These are enabled by default in all mozilla applications
mozconfig_annotate '' --with-system-nspr --with-nspr-prefix="${SYSROOT}${EPREFIX}"/usr
mozconfig_annotate '' --with-system-nss --with-nss-prefix="${SYSROOT}${EPREFIX}"/usr
mozconfig_annotate '' --x-includes="${SYSROOT}${EPREFIX}"/usr/include --x-libraries="${SYSROOT}${EPREFIX}"/usr/$(get_libdir)
if use system-libevent; then
mozconfig_annotate '' --with-system-libevent="${SYSROOT}${EPREFIX}"/usr
fi
mozconfig_annotate '' --prefix="${EPREFIX}"/usr
mozconfig_annotate '' --libdir="${EPREFIX}"/usr/$(get_libdir)
mozconfig_annotate 'Gentoo default' --enable-system-hunspell
mozconfig_annotate '' --disable-crashreporter
mozconfig_annotate 'Gentoo default' --with-system-png
mozconfig_annotate '' --enable-system-ffi
mozconfig_annotate '' --disable-gconf
mozconfig_annotate '' --with-intl-api
# skia has no support for big-endian platforms
if [[ $(tc-endian) == "big" ]]; then
mozconfig_annotate 'big endian target' --disable-skia
else
mozconfig_annotate '' --enable-skia
fi
# default toolkit is cairo-gtk3, optional use flags can change this
local toolkit="cairo-gtk3"
local toolkit_comment=""
if [[ -n ${MOZCONFIG_OPTIONAL_GTK3} ]]; then
if ! use force-gtk3; then
toolkit="cairo-gtk2"
toolkit_comment="force-gtk3 use flag"
fi
fi
if [[ -n ${MOZCONFIG_OPTIONAL_GTK2ONLY} ]]; then
if use gtk2 ; then
toolkit="cairo-gtk2"
else
toolkit_comment="gtk2 use flag"
fi
fi
if [[ -n ${MOZCONFIG_OPTIONAL_QT5} ]]; then
if use qt5; then
toolkit="cairo-qt"
toolkit_comment="qt5 use flag"
# need to specify these vars because the qt5 versions are not found otherwise,
# and setting --with-qtdir overrides the pkg-config include dirs
local i
for i in qmake moc rcc; do
echo "export HOST_${i^^}=\"$(qt5_get_bindir)/${i}\"" \
>> "${S}"/.mozconfig || die
done
echo 'unset QTDIR' >> "${S}"/.mozconfig || die
mozconfig_annotate '+qt5' --disable-gio
fi
fi
mozconfig_annotate "${toolkit_comment}" --enable-default-toolkit=${toolkit}
# Instead of the standard --build= and --host=, mozilla uses --host instead
# of --build, and --target intstead of --host.
# Note, mozilla also has --build but it does not do what you think it does.
# Set both --target and --host as mozilla uses python to guess values otherwise
mozconfig_annotate '' --target="${CHOST}"
mozconfig_annotate '' --host="${CBUILD:-${CHOST}}"
mozconfig_use_enable pulseaudio
# force the deprecated alsa sound code if pulseaudio is disabled
if use kernel_linux && ! use pulseaudio ; then
mozconfig_annotate '-pulseaudio' --enable-alsa
fi
# For testing purpose only
mozconfig_annotate 'Sandbox' --enable-content-sandbox
mozconfig_use_enable system-sqlite
mozconfig_use_with system-jpeg
mozconfig_use_with system-icu
mozconfig_use_with system-libvpx
mozconfig_use_with system-harfbuzz
mozconfig_use_with system-harfbuzz system-graphite2
# Modifications to better support ARM, bug 553364
if use neon ; then
mozconfig_annotate '' --with-fpu=neon
mozconfig_annotate '' --with-thumb=yes
mozconfig_annotate '' --with-thumb-interwork=no
fi
if [[ ${CHOST} == armv* ]] ; then
mozconfig_annotate '' --with-float-abi=hard
if ! use system-libvpx ; then
sed -i -e "s|softfp|hard|" \
"${S}"/media/libvpx/moz.build
fi
fi
}
# @FUNCTION: mozconfig_install_prefs
# @DESCRIPTION:
# Set preferences into the prefs.js file specified as a parameter to
# the function. This sets both some common prefs to all mozilla
# packages, and any prefs that may relate to the use flags administered
# by mozconfig_config().
#
# Call this within src_install() phase, after copying the template
# prefs file (if any) from ${FILESDIR}
#
# Example:
#
# inherit mozconfig-v6.46
#
# src_install() {
# cp "${FILESDIR}"/gentoo-default-prefs.js \
# "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
# || die
#
# mozconfig_install_prefs \
# "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js"
#
# ...
# }
mozconfig_install_prefs() {
local prefs_file="${1}"
einfo "Adding prefs from mozconfig to ${prefs_file}"
# set dictionary path, to use system hunspell
echo "pref(\"spellchecker.dictionary_path\", \"${EPREFIX}/usr/share/myspell\");" \
>>"${prefs_file}" || die
# force the graphite pref if system-harfbuzz is enabled, since the pref cant disable it
if use system-harfbuzz ; then
echo "sticky_pref(\"gfx.font_rendering.graphite.enabled\",true);" \
>>"${prefs_file}" || die
fi
# force cairo as the canvas renderer on platforms without skia support
if [[ $(tc-endian) == "big" ]] ; then
echo "sticky_pref(\"gfx.canvas.azure.backends\",\"cairo\");" \
>>"${prefs_file}" || die
echo "sticky_pref(\"gfx.content.azure.backends\",\"cairo\");" \
>>"${prefs_file}" || die
fi
}

View File

@ -0,0 +1,278 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
# @ECLASS: mozcoreconf-v5.eclass
# @MAINTAINER:
# Mozilla team <mozilla@gentoo.org>
# @BLURB: core options and configuration functions for mozilla
# @DESCRIPTION:
#
# inherit mozconfig-v6.* or above for mozilla configuration support
# @ECLASS-VARIABLE: MOZILLA_FIVE_HOME
# @DESCRIPTION:
# This is an eclass-generated variable that defines the rpath that the mozilla
# product will be installed in. Read-only
if [[ ! ${_MOZCORECONF} ]]; then
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE='ncurses,sqlite,ssl,threads'
inherit multilib toolchain-funcs flag-o-matic python-any-r1 versionator
IUSE="${IUSE} custom-cflags custom-optimization"
DEPEND="virtual/pkgconfig
${PYTHON_DEPS}"
# @FUNCTION: mozconfig_annotate
# @DESCRIPTION:
# add an annotated line to .mozconfig
#
# Example:
# mozconfig_annotate "building on ultrasparc" --enable-js-ultrasparc
# => ac_add_options --enable-js-ultrasparc # building on ultrasparc
mozconfig_annotate() {
declare reason=$1 x ; shift
[[ $# -gt 0 ]] || die "mozconfig_annotate missing flags for ${reason}\!"
for x in ${*}; do
echo "ac_add_options ${x} # ${reason}" >>.mozconfig
done
}
# @FUNCTION: mozconfig_use_enable
# @DESCRIPTION:
# add a line to .mozconfig based on a USE-flag
#
# Example:
# mozconfig_use_enable truetype freetype2
# => ac_add_options --enable-freetype2 # +truetype
mozconfig_use_enable() {
declare flag=$(use_enable "$@")
mozconfig_annotate "$(use $1 && echo +$1 || echo -$1)" "${flag}"
}
# @FUNCTION mozconfig_use_with
# @DESCRIPTION
# add a line to .mozconfig based on a USE-flag
#
# Example:
# mozconfig_use_with kerberos gss-api /usr/$(get_libdir)
# => ac_add_options --with-gss-api=/usr/lib # +kerberos
mozconfig_use_with() {
declare flag=$(use_with "$@")
mozconfig_annotate "$(use $1 && echo +$1 || echo -$1)" "${flag}"
}
# @FUNCTION mozconfig_use_extension
# @DESCRIPTION
# enable or disable an extension based on a USE-flag
#
# Example:
# mozconfig_use_extension gnome gnomevfs
# => ac_add_options --enable-extensions=gnomevfs
mozconfig_use_extension() {
declare minus=$(use $1 || echo -)
mozconfig_annotate "${minus:-+}$1" --enable-extensions=${minus}${2}
}
moz_pkgsetup() {
# Ensure we use C locale when building
export LANG="C"
export LC_ALL="C"
export LC_MESSAGES="C"
export LC_CTYPE="C"
# Ensure we use correct toolchain
export HOST_CC="$(tc-getBUILD_CC)"
export HOST_CXX="$(tc-getBUILD_CXX)"
tc-export CC CXX LD PKG_CONFIG
# Ensure that we have a sane build enviroment
export MOZILLA_CLIENT=1
export BUILD_OPT=1
export NO_STATIC_LIB=1
export USE_PTHREADS=1
export ALDFLAGS=${LDFLAGS}
# ensure MOZCONFIG is not defined
unset MOZCONFIG
# set MOZILLA_FIVE_HOME
export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
# nested configure scripts in mozilla products generate unrecognized options
# false positives when toplevel configure passes downwards.
export QA_CONFIGURE_OPTIONS=".*"
if [[ $(gcc-major-version) -eq 3 ]]; then
ewarn "Unsupported compiler detected, DO NOT file bugs for"
ewarn "outdated compilers. Bugs opened with gcc-3 will be closed"
ewarn "invalid."
fi
python-any-r1_pkg_setup
}
# @FUNCTION: mozconfig_init
# @DESCRIPTION:
# Initialize mozilla configuration and populate with core settings.
# This should be called in src_configure before any other mozconfig_* functions.
mozconfig_init() {
declare enable_optimize pango_version myext x
declare XUL=$([[ ${PN} == xulrunner ]] && echo true || echo false)
declare FF=$([[ ${PN} == firefox ]] && echo true || echo false)
declare SM=$([[ ${PN} == seamonkey ]] && echo true || echo false)
declare TB=$([[ ${PN} == thunderbird ]] && echo true || echo false)
declare WF=$([[ ${PN} == waterfox ]] && echo true || echo false)
####################################
#
# Setup the initial .mozconfig
# See http://www.mozilla.org/build/configure-build.html
#
####################################
case ${PN} in
*xulrunner)
cp xulrunner/config/mozconfig .mozconfig \
|| die "cp xulrunner/config/mozconfig failed" ;;
*firefox|waterfox)
cp browser/config/mozconfig .mozconfig \
|| die "cp browser/config/mozconfig failed" ;;
seamonkey)
# Must create the initial mozconfig to enable application
: >.mozconfig || die "initial mozconfig creation failed"
mozconfig_annotate "" --enable-application=suite ;;
*thunderbird)
# Must create the initial mozconfig to enable application
: >.mozconfig || die "initial mozconfig creation failed"
mozconfig_annotate "" --enable-application=mail ;;
esac
####################################
#
# CFLAGS setup and ARCH support
#
####################################
# Set optimization level
if [[ $(gcc-major-version) -ge 7 ]]; then
mozconfig_annotate "Workaround known breakage" --enable-optimize=-O2
elif [[ ${ARCH} == hppa ]]; then
mozconfig_annotate "more than -O0 causes a segfault on hppa" --enable-optimize=-O0
elif [[ ${ARCH} == x86 ]]; then
mozconfig_annotate "less then -O2 causes a segfault on x86" --enable-optimize=-O2
elif use custom-optimization || [[ ${ARCH} =~ (alpha|ia64) ]]; then
# Set optimization level based on CFLAGS
if is-flag -O0; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O0
elif [[ ${ARCH} == ppc ]] && has_version '>=sys-libs/glibc-2.8'; then
mozconfig_annotate "more than -O1 segfaults on ppc with glibc-2.8" --enable-optimize=-O1
elif is-flag -O4; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O4
elif is-flag -O3; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O3
elif is-flag -O1; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O1
elif is-flag -Os; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-Os
else
mozconfig_annotate "Gentoo's default optimization" --enable-optimize=-O2
fi
else
# Enable Mozilla's default
mozconfig_annotate "mozilla default" --enable-optimize
fi
# Strip optimization so it does not end up in compile string
filter-flags '-O*'
# Strip over-aggressive CFLAGS
use custom-cflags || strip-flags
# Additional ARCH support
case "${ARCH}" in
arm)
# Reduce the memory requirements for linking
append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
;;
alpha)
# Historically we have needed to add -fPIC manually for 64-bit.
# Additionally, alpha should *always* build with -mieee for correct math
# operation
append-flags -fPIC -mieee
;;
ia64)
# Historically we have needed to add this manually for 64-bit
append-flags -fPIC
;;
ppc64)
append-flags -fPIC -mminimal-toc
# Reduce the memory requirements for linking
append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
;;
esac
# We need to append flags for gcc-6 support
if [[ $(gcc-major-version) -ge 6 ]]; then
append-cxxflags -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2
fi
# Use the MOZILLA_FIVE_HOME for the rpath
append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
# Set MOZILLA_FIVE_HOME in mozconfig
mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME}
####################################
#
# mozconfig setup
#
####################################
mozconfig_annotate disable_update_strip \
--disable-updater \
--disable-strip \
--disable-install-strip
# jemalloc won't build with older glibc
! has_version ">=sys-libs/glibc-2.4" && mozconfig_annotate "we have old glibc" --disable-jemalloc
}
# @FUNCTION: mozconfig_final
# @DESCRIPTION:
# Apply EXTRA_ECONF values to .mozconfig
# Display a table describing all configuration options paired
# with reasons, then clean up extensions list.
# This should be called in src_configure at the end of all other mozconfig_* functions.
mozconfig_final() {
declare ac opt hash reason
# Apply EXTRA_ECONF entries to .mozconfig
if [[ -n ${EXTRA_ECONF} ]]; then
IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
for opt in "${ac[@]}"; do
mozconfig_annotate "EXTRA_ECONF" --${opt#--}
done
fi
echo
echo "=========================================================="
echo "Building ${PF} with the following configuration"
grep ^ac_add_options .mozconfig | while read ac opt hash reason; do
[[ -z ${hash} || ${hash} == \# ]] \
|| die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}"
done
echo "=========================================================="
echo
# Resolve multiple --enable-extensions down to one
declare exts=$(sed -n 's/^ac_add_options --enable-extensions=\([^ ]*\).*/\1/p' \
.mozconfig | xargs)
sed -i '/^ac_add_options --enable-extensions/d' .mozconfig
echo "ac_add_options --enable-extensions=${exts// /,}" >> .mozconfig
}
_MOZCORECONF=1
fi

View File

@ -0,0 +1,2 @@
DIST firefox-56.0-patches-07.tar.xz 12696 BLAKE2B 60fe9e4aee235bebd1ceeeca9f455b5129368e3b83a1a7487e912d28642f2c67f0041f10333f05ce5a17b8b0db05e33730c972038e72c0250551194316a6dfa6 SHA512 b7f1b32b8dc563b2c0c6b12eb1698fbd145c9b45597ef0f46159888e1c792f944c92cd1c1e3d0a5b36a3cf3cdc2f7ae9e8c537adbbfa6a1ce293311d3956a2d2
DIST waterfox-2020.05.tar.gz 409604600 BLAKE2B 2ba76eea8623c27c9bfa4baa182a89c5f6734c107082032cf49a4f3bdda340b3d65c54337553908f8cf8657d9da515d3fa6d3536b4d5ff869092582a85de7e0b SHA512 50bc6c8f2d8a1c9d529c75b466413343a1475fca3b5177067b01f4de19c22a437f549824d19f97b49f0383c146f728a2ebd296daeb0c354c3a3d9ca0db86346f

View File

@ -0,0 +1,156 @@
--- Waterfox-56.2.4/config/Makefile.in
+++ Waterfox-56.2.4/config/Makefile.in
@@ -41,6 +41,7 @@
$(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
-DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \
-DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
+ -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \
-DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \
-DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \
-DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \
--- Waterfox-56.2.4/config/system-headers
+++ Waterfox-56.2.4/config/system-headers
@@ -1274,6 +1274,11 @@
libsn/sn-monitor.h
libsn/sn-util.h
#endif
+#if MOZ_SYSTEM_HARFBUZZ==1
+harfbuzz/hb-glib.h
+harfbuzz/hb-ot.h
+harfbuzz/hb.h
+#endif
#if MOZ_SYSTEM_HUNSPELL==1
hunspell.hxx
#endif
--- Waterfox-56.2.4/dom/base/moz.build
+++ Waterfox-56.2.4/dom/base/moz.build
@@ -476,6 +476,9 @@
if CONFIG['MOZ_X11']:
CXXFLAGS += CONFIG['TK_CFLAGS']
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
GENERATED_FILES += [
'PropertyUseCounterMap.inc',
'UseCounterList.h',
--- Waterfox-56.2.4/gfx/harfbuzz/README-mozilla
+++ Waterfox-56.2.4/gfx/harfbuzz/README-mozilla
@@ -19,3 +19,8 @@
If the collection of source files changes, manual updates to moz.build may be
needed, as we don't use the upstream makefiles.
+
+The in-tree copy may be omitted during build by --with-system-harfbuzz.
+Make sure to keep pkg-config version check within toolkit/moz.configure in sync
+with checkout version or increment latest tag by one if it's not based
+on upstream release.
--- Waterfox-56.2.4/gfx/moz.build
+++ Waterfox-56.2.4/gfx/moz.build
@@ -10,6 +10,9 @@
if CONFIG['MOZ_TREE_CAIRO']:
DIRS += ['cairo']
+if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ DIRS += ['harfbuzz/src']
+
DIRS += [
'2d',
'ycbcr',
@@ -19,7 +22,6 @@
'gl',
'layers',
'graphite2/src',
- 'harfbuzz/src',
'ots/src',
'thebes',
'ipc',
--- Waterfox-56.2.4/gfx/skia/generate_mozbuild.py
+++ Waterfox-56.2.4/gfx/skia/generate_mozbuild.py
@@ -148,6 +148,9 @@
'-Wno-unused-private-field',
]
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
--- Waterfox-56.2.4/gfx/skia/moz.build
+++ Waterfox-56.2.4/gfx/skia/moz.build
@@ -823,6 +823,9 @@
'-Wno-unused-private-field',
]
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
--- Waterfox-56.2.4/gfx/thebes/moz.build
+++ Waterfox-56.2.4/gfx/thebes/moz.build
@@ -273,6 +273,9 @@
DEFINES['GRAPHITE2_STATIC'] = True
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
if CONFIG['CLANG_CXX']:
# Suppress warnings from Skia header files.
SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough']
--- Waterfox-56.2.4/intl/unicharutil/util/moz.build
+++ Waterfox-56.2.4/intl/unicharutil/util/moz.build
@@ -29,4 +29,7 @@
'ICUUtils.cpp',
]
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
FINAL_LIBRARY = 'xul'
--- Waterfox-56.2.4/netwerk/dns/moz.build
+++ Waterfox-56.2.4/netwerk/dns/moz.build
@@ -69,6 +69,9 @@
'/netwerk/base',
]
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
if CONFIG['ENABLE_INTL_API']:
DEFINES['IDNA2008'] = True
USE_LIBS += ['icu']
--- Waterfox-56.2.4/toolkit/library/moz.build
+++ Waterfox-56.2.4/toolkit/library/moz.build
@@ -212,6 +212,9 @@
if CONFIG['MOZ_SYSTEM_PNG']:
OS_LIBS += CONFIG['MOZ_PNG_LIBS']
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
+
if CONFIG['MOZ_SYSTEM_WEBP']:
OS_LIBS += CONFIG['MOZ_WEBP_LIBS']
--- Waterfox-56.2.4/toolkit/moz.configure
+++ Waterfox-56.2.4/toolkit/moz.configure
@@ -314,6 +314,16 @@
add_old_configure_assignment('_HAVE_FREETYPE2',
depends_if(freetype2_info)(lambda _: True))
+# HarfBuzz
+# ==============================================================
+option('--with-system-harfbuzz',
+ help="Use system harfbuzz (located with pkgconfig)")
+
+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.2',
+ when='--with-system-harfbuzz')
+
+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
+
# Apple platform decoder support
# ==============================================================
@depends(toolkit)

View File

@ -0,0 +1,150 @@
--- Waterfox-56.2.4/config/Makefile.in
+++ Waterfox-56.2.4/config/Makefile.in
@@ -41,6 +41,7 @@
$(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
-DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \
-DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
+ -DMOZ_SYSTEM_GRAPHITE2=$(MOZ_SYSTEM_GRAPHITE2) \
-DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \
-DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \
-DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \
--- Waterfox-56.2.4/config/system-headers
+++ Waterfox-56.2.4/config/system-headers
@@ -1274,6 +1274,10 @@
libsn/sn-monitor.h
libsn/sn-util.h
#endif
+#if MOZ_SYSTEM_GRAPHITE2==1
+graphite2/Font.h
+graphite2/Segment.h
+#endif
#if MOZ_SYSTEM_HARFBUZZ==1
harfbuzz/hb-glib.h
harfbuzz/hb-ot.h
--- Waterfox-56.2.4/gfx/graphite2/moz-gr-update.sh
+++ Waterfox-56.2.4/gfx/graphite2/moz-gr-update.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# Script used to update the Graphite2 library in the mozilla source tree
+# and bump version for --with-system-graphite2
# This script lives in gfx/graphite2, along with the library source,
# but must be run from the top level of the mozilla-central tree.
@@ -37,12 +38,16 @@
#find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
#find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
+# chase version for --with-system-graphite2
+perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \
+ if /GR2_VERSION_REQUIRE/" old-configure.in
+
# summarize what's been touched
echo Updated to $RELEASE.
echo Here is what changed in the gfx/graphite2 directory:
echo
-hg stat gfx/graphite2
+hg stat old-configure.in gfx/graphite2
echo
echo If gfx/graphite2/src/files.mk has changed, please make corresponding
--- Waterfox-56.2.4/gfx/moz.build
+++ Waterfox-56.2.4/gfx/moz.build
@@ -10,6 +10,9 @@
if CONFIG['MOZ_TREE_CAIRO']:
DIRS += ['cairo']
+if not CONFIG['MOZ_SYSTEM_GRAPHITE2']:
+ DIRS += ['graphite2/src' ]
+
if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
DIRS += ['harfbuzz/src']
@@ -21,7 +24,6 @@
'qcms',
'gl',
'layers',
- 'graphite2/src',
'ots/src',
'thebes',
'ipc',
--- Waterfox-56.2.4/gfx/thebes/moz.build
+++ Waterfox-56.2.4/gfx/thebes/moz.build
@@ -271,7 +271,10 @@
LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
-DEFINES['GRAPHITE2_STATIC'] = True
+if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
+ CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
+else:
+ DEFINES['GRAPHITE2_STATIC'] = True
if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
--- Waterfox-56.2.4/old-configure.in
+++ Waterfox-56.2.4/old-configure.in
@@ -4376,6 +4376,27 @@
fi
dnl ========================================================
+dnl Check for graphite2
+dnl ========================================================
+if test -n "$MOZ_SYSTEM_GRAPHITE2"; then
+ dnl graphite2.pc has bogus version, check manually
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS"
+ AC_TRY_COMPILE([ #include <graphite2/Font.h>
+ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \
+ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
+ * 100 + GR2_VERSION_BUGFIX >= \
+ (major) * 10000 + (minor) * 100 + (bugfix) )
+ ], [
+ #if !GR2_VERSION_REQUIRE(1,3,8)
+ #error "Insufficient graphite2 version."
+ #endif
+ ], [],
+ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])])
+ CFLAGS=$_SAVE_CFLAGS
+fi
+
+dnl ========================================================
dnl Check if we need the 32-bit Linux SSE2 error dialog
dnl ========================================================
--- Waterfox-56.2.4/toolkit/library/moz.build
+++ Waterfox-56.2.4/toolkit/library/moz.build
@@ -212,6 +212,9 @@
if CONFIG['MOZ_SYSTEM_PNG']:
OS_LIBS += CONFIG['MOZ_PNG_LIBS']
+if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
+ OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
+
if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
--- Waterfox-56.2.4/toolkit/moz.configure
+++ Waterfox-56.2.4/toolkit/moz.configure
@@ -314,6 +314,20 @@
add_old_configure_assignment('_HAVE_FREETYPE2',
depends_if(freetype2_info)(lambda _: True))
+# Graphite2
+# ==============================================================
+option('--with-system-graphite2',
+ help="Use system graphite2 (located with pkgconfig)")
+
+@depends('--with-system-graphite2')
+def check_for_graphite2(value):
+ return bool(value)
+
+system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2',
+ when=check_for_graphite2)
+
+set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True))
+
# HarfBuzz
# ==============================================================
option('--with-system-harfbuzz',

View File

@ -0,0 +1,17 @@
pref("app.update.enabled", false);
pref("app.update.autoInstallEnabled", false);
pref("browser.display.use_system_colors", true);
pref("browser.link.open_external", 3);
pref("general.smoothScroll", true);
pref("general.autoScroll", false);
pref("browser.tabs.tabMinWidth", 15);
pref("browser.backspace_action", 0);
pref("browser.urlbar.hideGoButton", true);
pref("accessibility.typeaheadfind", true);
pref("browser.shell.checkDefaultBrowser", false);
pref("browser.EULA.override", true);
pref("general.useragent.vendor", "Gentoo");
pref("intl.locale.matchOS", true);
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
pref("extensions.autoDisableScopes", 0);
pref("layout.css.dpi", 0);

View File

@ -0,0 +1,2 @@
pref("layers.acceleration.force-enabled", true);
pref("webgl.force-enabled", true);

View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=@NAME@
Comment=Web Browser
Exec=waterfox %u
Icon=@ICON@
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
Categories=Network;WebBrowser;

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<upstream>
<remote-id type="github">MrAlex94/Waterfox</remote-id>
</upstream>
<use>
<flag name="custom-optimization">
Build with user-specified compiler optimizations
(-Os, -O0, -O1, -O2, -O3) from CFLAGS (unsupported)
</flag>
<flag name="eme-free">
Disable EME (DRM plugin) cabability at build time
</flag>
<flag name="gmp-autoupdate">
Allow Gecko Media Plugins (binary blobs) to be automatically
downloaded and kept up-to-date in user profiles
</flag>
<flag name="hwaccel">
Force-enable hardware-accelerated rendering (Mozilla bug 594876)
</flag>
<flag name="pgo">
Add support for profile-guided optimization using gcc-4.5,
for faster binaries. This option will double the compile time.
</flag>
<flag name="system-harfbuzz">
Use the system-wide <pkg>media-libs/harfbuzz</pkg>
and <pkg>media-gfx/graphite2</pkg> instead of bundled.
</flag>
<flag name="system-icu">
Use the system-wide <pkg>dev-libs/icu</pkg>
instead of bundled.
</flag>
<flag name="system-jpeg">
Use the system-wide <pkg>media-libs/libjpeg-turbo</pkg>
instead of bundled.
</flag>
<flag name="system-libevent">
Use the system-wide <pkg>dev-libs/libevent</pkg>
instead of bundled.
</flag>
<flag name="system-libvpx">
Use the system-wide <pkg>media-libs/libvpx</pkg>
instead of bundled.
</flag>
<flag name="system-sqlite">
Use the system-wide <pkg>dev-db/sqlite</pkg>
installation with secure-delete enabled
</flag>
</use>
</pkgmetadata>

View File

@ -0,0 +1,394 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
VIRTUALX_REQUIRED="pgo"
WANT_AUTOCONF="2.1"
MOZ_ESR=""
# This list can be updated with scripts/get_langs.sh from the mozilla overlay
MOZ_LANGS=( ach af an ar as ast az bg bn-BD bn-IN br bs ca cak cs cy da de dsb
el en en-GB en-US en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE
gd gl gn gu-IN he hi-IN hr hsb hu hy-AM id is it ja ka kab kk km kn ko lij lt lv
mai mk ml mr ms nb-NO nl nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq
sr sv-SE ta te th tr uk uz vi xh zh-CN zh-TW )
# Patch version
PATCH="firefox-56.0-patches-07"
#PATCH="waterfox-2019.12-patches-01"
MOZ_HTTP_URI="https://github.com/MrAlex94/Waterfox/archive"
#MOZ_LANGPACK_HTTP_URI="https://github.com/MrAlex94/www.waterfoxproject.org"
MOZCONFIG_OPTIONAL_WIFI=1
inherit check-reqs eapi7-ver flag-o-matic toolchain-funcs eutils gnome2-utils \
mozconfig-v6.56 pax-utils xdg-utils autotools virtualx
MY_PV="${PV}-classic"
DESCRIPTION="Waterfox Web Browser"
HOMEPAGE="http://www.waterfoxproject.org"
KEYWORDS="~amd64"
SLOT="0"
LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
IUSE="
+gmp-autoupdate
eme-free
hardened hwaccel
jack
nsplugin
pgo
selinux
test
"
PATCH_URIS=( https://dev.gentoo.org/~{anarchy,axs,polynomial-c}/mozilla/patchsets/${PATCH}.tar.xz )
SRC_URI="
${MOZ_HTTP_URI}/${MY_PV}.tar.gz -> ${P}.tar.gz
${PATCH_URIS[@]}
"
ASM_DEPEND="
>=dev-lang/yasm-1.1
"
RDEPEND="
jack? ( virtual/jack )
>=dev-libs/nss-3.32.1
>=dev-libs/nspr-4.16
selinux? ( sec-policy/selinux-mozilla )
"
DEPEND="${RDEPEND}
pgo? ( >=sys-devel/gcc-4.5 )
virtual/rust
amd64? ( ${ASM_DEPEND} virtual/opengl )
x86? ( ${ASM_DEPEND} virtual/opengl )
"
S="${WORKDIR}/${PN^}-${MY_PV}"
QA_PRESTRIPPED="usr/lib*/${PN}/waterfox"
BUILD_OBJ_DIR="${S}/wf"
# allow GMP_PLUGIN_LIST to be set in an eclass or
# overridden in the enviromnent (advanced hackers only)
if [[ -z ${GMP_PLUGIN_LIST} ]]; then
GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
fi
pkg_setup() {
moz_pkgsetup
# Avoid PGO profiling problems due to enviroment leakage
# These should *always* be cleaned up anyway
unset DBUS_SESSION_BUS_ADDRESS \
DISPLAY \
ORBIT_SOCKETDIR \
SESSION_MANAGER \
XDG_SESSION_COOKIE \
XAUTHORITY
if use pgo; then
einfo
ewarn "You will do a double build for profile guided optimization."
ewarn "This will result in your build taking at least twice as long as before."
fi
}
pkg_pretend() {
# Ensure we have enough disk space to compile
if use pgo || use debug || use test ; then
CHECKREQS_DISK_BUILD="8G"
else
CHECKREQS_DISK_BUILD="4G"
fi
check-reqs_pkg_setup
}
src_prepare() {
local patch_exclude=(
1000_gentoo_install_dir.patch
2001_system_harfbuzz.patch
2002_system_graphite2.patch
)
local mpatch
for mpatch in ${patch_exclude[@]} ; do
if [[ -f "${FILESDIR}"/${mpatch} ]] ; then
cp "${FILESDIR}"/${mpatch} \
"${WORKDIR}"/firefox/ || die
else
rm "${WORKDIR}"/firefox/${mpatch} || die
fi
done
# Apply our patches
eapply "${WORKDIR}/firefox"
#eapply "${FILESDIR}/${P}-classic-version.patch"
# Enable gnomebreakpad
if use debug ; then
sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \
"${S}"/build/unix/run-mozilla.sh || die "sed failed!"
fi
# Drop -Wl,--as-needed related manipulation for ia64 as it causes ld sefgaults, bug #582432
if use ia64 ; then
sed -i \
-e '/^OS_LIBS += no_as_needed/d' \
-e '/^OS_LIBS += as_needed/d' \
"${S}"/widget/gtk/mozgtk/gtk2/moz.build \
"${S}"/widget/gtk/mozgtk/gtk3/moz.build \
|| die "sed failed to drop --as-needed for ia64"
fi
# Ensure that our plugins dir is enabled as default
sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \
"${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 32bit!"
sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \
"${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 64bit!"
# Fix sandbox violations during make clean, bug 372817
sed -e "s:\(/no-such-file\):${T}\1:g" \
-i "${S}"/config/rules.mk \
-i "${S}"/nsprpub/configure{.in,} \
|| die
# Don't exit with error when some libs are missing which we have in
# system.
sed '/^MOZ_PKG_FATAL_WARNINGS/s@= 1@= 0@' \
-i "${S}"/browser/installer/Makefile.in || die
# Don't error out when there's no files to be removed:
sed 's@\(xargs rm\)$@\1 -f@' \
-i "${S}"/toolkit/mozapps/installer/packager.mk || die
# Keep codebase the same even if not using official branding
#sed '/^MOZ_DEV_EDITION=1/d' \
# -i "${S}"/browser/branding/aurora/configure.sh || die
# Allow user to apply any additional patches without modifing ebuild
eapply_user
# Autotools configure is now called old-configure.in
# This works because there is still a configure.in that happens to be for the
# shell wrapper configure script
eautoreconf old-configure.in
# Must run autoconf in js/src
cd "${S}"/js/src || die
eautoconf old-configure.in
}
src_configure() {
MEXTENSIONS="default"
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Gentoo Linux use ONLY. For your own distribution, please
# get your own set of keys.
_google_api_key=AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc
####################################
#
# mozconfig, CFLAGS and CXXFLAGS setup
#
####################################
mozconfig_init
mozconfig_config
# enable JACK, bug 600002
mozconfig_use_enable jack
use eme-free && mozconfig_annotate '+eme-free' --disable-eme
# It doesn't compile on alpha without this LDFLAGS
use alpha && append-ldflags "-Wl,--no-relax"
# Add full relro support for hardened
if use hardened; then
append-ldflags "-Wl,-z,relro,-z,now"
mozconfig_use_enable hardened hardening
fi
# Setup api key for location services
echo -n "${_google_api_key}" > "${S}"/google-api-key
mozconfig_annotate '' --with-google-api-keyfile="${S}/google-api-key"
mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}"
# Waterfox specific stuff
mozconfig_annotate 'Waterfox' --disable-elf-hack
mozconfig_annotate 'Waterfox' --with-app-name=${PN}
mozconfig_annotate 'Waterfox' --with-app-basename=${PN}
mozconfig_annotate 'Waterfox' --with-branding=browser/branding/unofficial
mozconfig_annotate 'Waterfox' --with-distribution-id=org.waterfoxproject
# Allow for a proper pgo build
if use pgo; then
echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> "${S}"/.mozconfig
fi
echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig
echo "mk_add_options XARGS=/usr/bin/xargs" >> "${S}"/.mozconfig
# Finalize and report settings
mozconfig_final
# workaround for funky/broken upstream configure...
SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
emake -f client.mk configure
}
src_compile() {
if use pgo; then
addpredict /root
addpredict /etc/gconf
# Reset and cleanup environment variables used by GNOME/XDG
gnome2_environment_reset
# Firefox tries to use dri stuff when it's run, see bug 380283
shopt -s nullglob
cards=$(echo -n /dev/dri/card* | sed 's/ /:/g')
if test -z "${cards}"; then
cards=$(echo -n /dev/ati/card* /dev/nvidiactl* | sed 's/ /:/g')
if test -n "${cards}"; then
# Binary drivers seem to cause access violations anyway, so
# let's use indirect rendering so that the device files aren't
# touched at all. See bug 394715.
export LIBGL_ALWAYS_INDIRECT=1
fi
fi
shopt -u nullglob
[[ -n "${cards}" ]] && addpredict "${cards}"
MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
virtx emake -f client.mk profiledbuild || die "virtx emake failed"
else
MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
emake -f client.mk realbuild
fi
}
src_install() {
cd "${BUILD_OBJ_DIR}" || die
# Pax mark xpcshell for hardened support, only used for startupcache creation.
pax-mark m "${BUILD_OBJ_DIR}"/dist/bin/xpcshell
# Add our default prefs for firefox
cp "${FILESDIR}"/gentoo-default-prefs.js-1 \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
|| die
mozconfig_install_prefs \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js"
# Augment this with hwaccel prefs
if use hwaccel ; then
cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-1 >> \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
|| die
fi
echo "pref(\"extensions.autoDisableScopes\", 3);" >> \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
|| die
if use nsplugin; then
echo "pref(\"plugin.load_flash_only\", false);" >> \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
|| die
fi
local plugin
use gmp-autoupdate || use eme-free || for plugin in "${GMP_PLUGIN_LIST[@]}" ; do
echo "pref(\"media.${plugin}.autoupdate\", false);" >> \
"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
|| die
done
MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
emake DESTDIR="${D}" install
# Install language packs
#mozlinguas_src_install
local size sizes icon_path icon name
sizes="16 22 24 32 256"
icon_path="${S}/browser/branding/unofficial"
icon="${PN}"
name="Waterfox"
# Install icons and .desktop for menu entry
for size in ${sizes}; do
insinto "/usr/share/icons/hicolor/${size}x${size}/apps"
newins "${icon_path}/default${size}.png" "${icon}.png"
done
# The 128x128 icon has a different name
insinto "/usr/share/icons/hicolor/128x128/apps"
doins "${icon_path}/${icon}.png"
# Install a 48x48 icon into /usr/share/pixmaps for legacy DEs
newicon "${icon_path}/default48.png" "${icon}.png"
newmenu "${FILESDIR}/icon/${PN}.desktop" "${PN}.desktop"
sed -i -e "s:@NAME@:${name}:" -e "s:@ICON@:${icon}:" \
"${ED%/}/usr/share/applications/${PN}.desktop" \
|| die
# Add StartupNotify=true bug 237317
if use startup-notification ; then
echo "StartupNotify=true" >> \
"${ED%/}/usr/share/applications/${PN}.desktop" || die
fi
# Required in order to use plugins and even run firefox on hardened.
pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/{waterfox,waterfox-bin,plugin-container}
}
pkg_preinst() {
gnome2_icon_savelist
# if the apulse libs are available in MOZILLA_FIVE_HOME then apulse
# doesn't need to be forced into the LD_LIBRARY_PATH
if use pulseaudio && has_version ">=media-sound/apulse-0.1.9" ; then
einfo "APULSE found - Generating library symlinks for sound support"
local lib
pushd "${ED}"${MOZILLA_FIVE_HOME} &>/dev/null || die
for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
# a quickpkg rolled by hand will grab symlinks as part of the package,
# so we need to avoid creating them if they already exist.
if ! [ -L ${lib##*/} ]; then
ln -s "${lib}" ${lib##*/} || die
fi
done
popd &>/dev/null || die
fi
}
pkg_postinst() {
# Update mimedb for the new .desktop file
xdg_desktop_database_update
gnome2_icon_cache_update
if ! use gmp-autoupdate && ! use eme-free ; then
elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or"
elog "installing into new profiles:"
local plugin
for plugin in "${GMP_PLUGIN_LIST[@]}"; do elog "\t ${plugin}" ; done
fi
if use pulseaudio && has_version ">=media-sound/apulse-0.1.9"; then
elog "Apulse was detected at merge time on this system and so it will always be"
elog "used for sound. If you wish to use pulseaudio instead please unmerge"
elog "media-sound/apulse."
fi
}
pkg_postrm() {
gnome2_icon_cache_update
}