eclass: remove old icecat eclasses
Signed-off-by: Alfred Wingate <parona@protonmail.com>
This commit is contained in:
parent
64d6ac78dc
commit
5c845fa4ef
@ -1,422 +0,0 @@
|
|||||||
# Copyright 2019-2022 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
#
|
|
||||||
# @ECLASS: icecatconfig-v6.60.eclass
|
|
||||||
# @MAINTAINER:
|
|
||||||
# moog621@gmail.com
|
|
||||||
# @SUPPORTED_EAPIS: 5 6 7
|
|
||||||
# @BLURB: the new gnuzilla common configuration eclass for FF33 and newer, v6
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# This eclass is used in gnuzilla ebuilds (icecat)
|
|
||||||
# to provide a single common place for the common gnuzilla engine compoments.
|
|
||||||
#
|
|
||||||
# The eclass provides all common dependencies as well as common use flags.
|
|
||||||
#
|
|
||||||
# Some use flags which may be optional in particular gnuzilla 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 mozcoreconf-v6
|
|
||||||
|
|
||||||
# @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.
|
|
||||||
|
|
||||||
# use-flags common among all gnuzilla ebuilds
|
|
||||||
IUSE="${IUSE} clang dbus debug neon pulseaudio selinux startup-notification
|
|
||||||
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.34:0=[apng]
|
|
||||||
>=media-libs/mesa-10.2:*
|
|
||||||
media-libs/fontconfig
|
|
||||||
>=media-libs/freetype-2.4.10
|
|
||||||
kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) )
|
|
||||||
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=[threads] )
|
|
||||||
system-sqlite? ( >=dev-db/sqlite-3.23.1:3[secure-delete,debug=] )
|
|
||||||
system-libvpx? (
|
|
||||||
>=media-libs/libvpx-1.5.0:0=[postproc]
|
|
||||||
<media-libs/libvpx-1.8:0=[postproc]
|
|
||||||
)
|
|
||||||
"
|
|
||||||
|
|
||||||
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.30
|
|
||||||
sys-apps/findutils
|
|
||||||
|| (
|
|
||||||
(
|
|
||||||
sys-devel/clang:9
|
|
||||||
!clang? ( sys-devel/llvm:9 )
|
|
||||||
clang? (
|
|
||||||
=sys-devel/lld-9*
|
|
||||||
sys-devel/llvm:9[gold]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(
|
|
||||||
sys-devel/clang:8
|
|
||||||
!clang? ( sys-devel/llvm:8 )
|
|
||||||
clang? (
|
|
||||||
=sys-devel/lld-8*
|
|
||||||
sys-devel/llvm:8[gold]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(
|
|
||||||
sys-devel/clang:7
|
|
||||||
!clang? ( sys-devel/llvm:7 )
|
|
||||||
clang? (
|
|
||||||
=sys-devel/lld-7*
|
|
||||||
sys-devel/llvm:7[gold]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(
|
|
||||||
sys-devel/clang:6
|
|
||||||
!clang? ( sys-devel/llvm:6 )
|
|
||||||
clang? (
|
|
||||||
=sys-devel/lld-6*
|
|
||||||
sys-devel/llvm:6[gold]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
pulseaudio? ( media-sound/pulseaudio )
|
|
||||||
elibc_glibc? (
|
|
||||||
virtual/rust
|
|
||||||
)
|
|
||||||
elibc_musl? (
|
|
||||||
virtual/rust
|
|
||||||
)
|
|
||||||
${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 gnuzilla 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() {
|
|
||||||
if use clang && ! tc-is-clang ; then
|
|
||||||
# Force clang
|
|
||||||
einfo "Enforcing the use of clang due to USE=clang ..."
|
|
||||||
CC=${CHOST}-clang
|
|
||||||
CXX=${CHOST}-clang++
|
|
||||||
strip-unsupported-flags
|
|
||||||
elif ! use clang && ! tc-is-gcc ; then
|
|
||||||
# Force gcc
|
|
||||||
einfo "Enforcing the use of gcc due to USE=-clang ..."
|
|
||||||
CC=${CHOST}-gcc
|
|
||||||
CXX=${CHOST}-g++
|
|
||||||
strip-unsupported-flags
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Migrated from mozcoreconf-2
|
|
||||||
mozconfig_annotate 'system_libs' \
|
|
||||||
--with-system-zlib \
|
|
||||||
--with-system-bz2
|
|
||||||
|
|
||||||
# Stylo is horribly broken on arm, renders GUI unusable
|
|
||||||
use arm && mozconfig_annotate 'breaks UI on arm' --disable-stylo
|
|
||||||
|
|
||||||
# Must pass release in order to properly select linker
|
|
||||||
mozconfig_annotate 'Enable by Gentoo' --enable-release
|
|
||||||
|
|
||||||
# Set correct update channel, bug 677722
|
|
||||||
if [[ -n "${MOZ_ESR}" ]] ; then
|
|
||||||
mozconfig_annotate 'set update channel to ESR' --enable-update-channel=esr
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Avoid auto-magic on linker
|
|
||||||
if use clang ; then
|
|
||||||
# This is upstream's default
|
|
||||||
mozconfig_annotate "forcing ld=lld due to USE=clang" --enable-linker=lld
|
|
||||||
elif tc-ld-is-gold ; then
|
|
||||||
mozconfig_annotate "linker is set to gold" --enable-linker=gold
|
|
||||||
else
|
|
||||||
mozconfig_annotate "linker is set to bfd" --enable-linker=bfd
|
|
||||||
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 gnuzilla 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
|
|
||||||
mozconfig_annotate '' --enable-system-pixman
|
|
||||||
|
|
||||||
# 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
|
|
||||||
mozconfig_annotate "${toolkit_comment}" --enable-default-toolkit=${toolkit}
|
|
||||||
|
|
||||||
# Instead of the standard --build= and --host=, gnuzilla uses --host instead
|
|
||||||
# of --build, and --target intstead of --host.
|
|
||||||
# Note, gnuzilla also has --build but it does not do what you think it does.
|
|
||||||
# Set both --target and --host as gnuzilla 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
|
|
||||||
|
|
||||||
mozconfig_use_enable system-sqlite
|
|
||||||
mozconfig_use_with system-jpeg
|
|
||||||
mozconfig_use_with system-icu
|
|
||||||
mozconfig_use_with system-libvpx
|
|
||||||
|
|
||||||
if use clang ; then
|
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1423822
|
|
||||||
mozconfig_annotate 'elf-hack is broken when using Clang' --disable-elf-hack
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Modifications to better support ARM, bug 553364
|
|
||||||
if use neon ; then
|
|
||||||
mozconfig_annotate '' --with-fpu=neon
|
|
||||||
|
|
||||||
if ! tc-is-clang ; then
|
|
||||||
# thumb options aren't supported when using clang, bug 666966
|
|
||||||
mozconfig_annotate '' --with-thumb=yes
|
|
||||||
mozconfig_annotate '' --with-thumb-interwork=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ ${CHOST} == armv*h* ]] ; 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 gnuzilla
|
|
||||||
# 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 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
|
|
||||||
}
|
|
@ -1,382 +0,0 @@
|
|||||||
# Copyright 2019-2022 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
# @ECLASS: icecatlinguas-v2.eclass
|
|
||||||
# @MAINTAINER:
|
|
||||||
# moog621@gmail.com
|
|
||||||
# @AUTHOR:
|
|
||||||
# moog621@gmail.com
|
|
||||||
# @SUPPORTED_EAPIS: 2 3 4 5 6
|
|
||||||
# @BLURB: Handle language packs for gnuzilla products
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Sets IUSE according to MOZ_LANGS (language packs available). Also exports
|
|
||||||
# src_unpack, src_compile and src_install for use in ebuilds, and provides
|
|
||||||
# supporting functions for langpack generation and installation.
|
|
||||||
|
|
||||||
inherit mozextension
|
|
||||||
|
|
||||||
case "${EAPI:-0}" in
|
|
||||||
0|1)
|
|
||||||
die "EAPI ${EAPI:-0} does not support the '->' SRC_URI operator";;
|
|
||||||
2|3|4|5|6)
|
|
||||||
EXPORT_FUNCTIONS src_unpack src_compile src_install;;
|
|
||||||
*)
|
|
||||||
die "EAPI ${EAPI} is not supported, contact eclass maintainers";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_LANGS
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Array containing the list of language pack xpis available for
|
|
||||||
# this release. The list can be updated with scripts/get_langs.sh from the
|
|
||||||
# mozilla overlay.
|
|
||||||
: ${MOZ_LANGS:=()}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_PV
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Ebuild package version converted to equivalent upstream version.
|
|
||||||
# Defaults to ${PV}, and should be overridden for alphas, betas, and RCs
|
|
||||||
: ${MOZ_PV:="${PV}"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_PN
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Ebuild package name converted to equivalent upstream name.
|
|
||||||
# Defaults to ${PN}, and should be overridden for binary ebuilds.
|
|
||||||
: ${MOZ_PN:="${PN}"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_P
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Ebuild package name + version converted to upstream equivalent.
|
|
||||||
# Defaults to ${MOZ_PN}-${MOZ_PV}
|
|
||||||
: ${MOZ_P:="${MOZ_PN}-${MOZ_PV}"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_FTP_URI
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The ftp URI prefix for the release tarballs and language packs.
|
|
||||||
: ${MOZ_FTP_URI:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_HTTP_URI
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The http URI prefix for the release tarballs and language packs.
|
|
||||||
: ${MOZ_HTTP_URI:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_LANGPACK_HTTP_URI
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# An alternative http URI if it differs from official mozilla URI.
|
|
||||||
# Defaults to whatever MOZ_HTTP_URI was set to.
|
|
||||||
: ${MOZ_LANGPACK_HTTP_URI:=${MOZ_HTTP_URI}}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_LANGPACK_PREFIX
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The relative path till the lang code in the langpack file URI.
|
|
||||||
# Defaults to ${MOZ_PV}/langpacks
|
|
||||||
: ${MOZ_LANGPACK_PREFIX:="${MOZ_PV}/langpacks/${MOZ_P}."}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_LANGPACK_SUFFIX
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The suffix after the lang code in the langpack file URI.
|
|
||||||
# Defaults to '.xpi'
|
|
||||||
: ${MOZ_LANGPACK_SUFFIX:=".langpack.xpi"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_LANGPACK_UNOFFICIAL
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The status of the langpack, used to differentiate within
|
|
||||||
# Manifests and on Gentoo mirrors as to when the langpacks are
|
|
||||||
# generated officially by gnuzilla or if they were generated
|
|
||||||
# unofficially by others. When
|
|
||||||
# this var is set, the distfile will have a .unofficial.xpi
|
|
||||||
# suffix.
|
|
||||||
: ${MOZ_LANGPACK_UNOFFICIAL:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_GENERATE_LANGPACKS
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# This flag specifies whether or not the langpacks should be
|
|
||||||
# generated directly during the build process, rather than
|
|
||||||
# being downloaded and installed from upstream pre-built
|
|
||||||
# extensions. Primarily it supports pre-release builds.
|
|
||||||
# Defaults to empty.
|
|
||||||
: ${MOZ_GENERATE_LANGPACKS:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_L10N_SOURCEDIR
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The path that l10n sources can be found at, once unpacked.
|
|
||||||
# Defaults to ${WORKDIR}/l10n-sources
|
|
||||||
: ${MOZ_L10N_SOURCEDIR:="${WORKDIR}/l10n-sources"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_L10N_URI_PREFIX
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The full URI prefix of the distfile for each l10n locale. The
|
|
||||||
# AB_CD and MOZ_L10N_URI_SUFFIX will be appended to this to complete the
|
|
||||||
# SRC_URI when MOZ_GENERATE_LANGPACKS is set. If empty, nothing will
|
|
||||||
# be added to SRC_URI.
|
|
||||||
# Defaults to empty.
|
|
||||||
: ${MOZ_L10N_URI_PREFIX:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_L10N_URI_SUFFIX
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# The suffix of l10n source distfiles.
|
|
||||||
# Defaults to '.tar.xz'
|
|
||||||
: ${MOZ_L10N_URI_SUFFIX:=".tar.xz"}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_FORCE_UPSTREAM_L10N
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Set this to use upstream langpaks even if the package normally
|
|
||||||
# shouldn't (ie it is an alpha or beta package)
|
|
||||||
: ${MOZ_FORCE_UPSTREAM_L10N:=""}
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_TOO_REGIONALIZED_FOR_L10N
|
|
||||||
# @INTERNAL
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Upstream identifiers that should not contain region subtags in L10N
|
|
||||||
MOZ_TOO_REGIONALIZED_FOR_L10N=( fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO nn-NO pa-IN sv-SE )
|
|
||||||
|
|
||||||
# @ECLASS_VARIABLE: MOZ_INSTALL_L10N_XPIFILE
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Install langpacks as .xpi file instead of unpacked directory.
|
|
||||||
# Leave unset to install unpacked
|
|
||||||
: ${MOZ_INSTALL_L10N_XPIFILE:=""}
|
|
||||||
|
|
||||||
# Add l10n_* to IUSE according to available language packs
|
|
||||||
# No language packs for alphas and betas
|
|
||||||
if ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] ; then
|
|
||||||
if ! [[ ${PV} =~ alpha|beta ]] || { [[ ${PN} == seamonkey ]] && ! [[ ${PV} =~ alpha ]] ; } || [[ -n ${MOZ_FORCE_UPSTREAM_L10N} ]] ; then
|
|
||||||
[[ -z ${MOZ_FTP_URI} ]] && [[ -z ${MOZ_LANGPACK_HTTP_URI} ]] && die "No URI set to download langpacks, please set one of MOZ_{FTP,HTTP_LANGPACK}_URI"
|
|
||||||
for x in "${MOZ_LANGS[@]}" ; do
|
|
||||||
# en and en_US are handled internally
|
|
||||||
if [[ ${x} == en ]] || [[ ${x} == en-US ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
# strip region subtag if $x is in the list
|
|
||||||
if has ${x} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
|
|
||||||
xflag=${x%%-*}
|
|
||||||
else
|
|
||||||
xflag=${x}
|
|
||||||
fi
|
|
||||||
SRC_URI+=" l10n_${xflag/[_@]/-}? ("
|
|
||||||
[[ -n ${MOZ_FTP_URI} ]] && SRC_URI+="
|
|
||||||
${MOZ_FTP_URI}/${MOZ_LANGPACK_PREFIX}${x}${MOZ_LANGPACK_SUFFIX} -> ${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
|
|
||||||
[[ -n ${MOZ_LANGPACK_HTTP_URI} ]] && SRC_URI+="
|
|
||||||
${MOZ_LANGPACK_HTTP_URI}/${MOZ_LANGPACK_PREFIX}${x}${MOZ_LANGPACK_SUFFIX} -> ${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
|
|
||||||
SRC_URI+=" )"
|
|
||||||
IUSE+=" l10n_${xflag/[_@]/-}"
|
|
||||||
# einfo "MOZ_LANGPACK_HTTP_URI: ${MOZ_LANGPACK_HTTP_URI}"
|
|
||||||
# einfo "MOZ_LANGPACK_PREFIX: ${MOZ_LANGPACK_PREFIX}"
|
|
||||||
# einfo "x: ${x}"
|
|
||||||
# einfo "MOZ_LANGPACK_SUFFIX: ${MOZ_LANGPACK_SUFFIX}"
|
|
||||||
# We used to do some magic if specific/generic locales were missing, but
|
|
||||||
# we stopped doing that due to bug 325195.
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
for x in "${MOZ_LANGS[@]}" ; do
|
|
||||||
# en and en_US are handled internally
|
|
||||||
if [[ ${x} == en ]] || [[ ${x} == en-US ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
# strip region subtag if $x is in the list
|
|
||||||
if has ${x} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
|
|
||||||
xflag=${x%%-*}
|
|
||||||
else
|
|
||||||
xflag=${x}
|
|
||||||
fi
|
|
||||||
if [[ -n ${MOZ_L10N_URI_PREFIX} ]]; then
|
|
||||||
SRC_URI+=" l10n_${xflag/[_@]/-}? ( ${MOZ_L10N_URI_PREFIX}${x}${MOZ_L10N_URI_SUFFIX} )"
|
|
||||||
fi
|
|
||||||
IUSE+=" l10n_${xflag/[_@]/-}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
unset x xflag
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas_export
|
|
||||||
# @INTERNAL
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Generate the list of language packs called "icecatlinguas"
|
|
||||||
# This list is used to unpack and install the xpi language packs
|
|
||||||
icecatlinguas_export() {
|
|
||||||
if [[ ${PN} == seamonkey ]] ; then
|
|
||||||
[[ ${PV} =~ alpha ]] && ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] && return
|
|
||||||
else
|
|
||||||
[[ ${PV} =~ alpha|beta ]] && ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] && return
|
|
||||||
fi
|
|
||||||
local lingua lflag
|
|
||||||
icecatlinguas=()
|
|
||||||
# Set icecatlinguas based on the enabled l10n_* USE flags.
|
|
||||||
for lingua in "${MOZ_LANGS[@]}"; do
|
|
||||||
# strip region subtag if $x is in the list
|
|
||||||
if has ${lingua} en en-US; then
|
|
||||||
# For gnuzilla products, en and en_US are handled internally
|
|
||||||
continue
|
|
||||||
elif has ${lingua} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
|
|
||||||
lflag=${lingua%%-*}
|
|
||||||
else
|
|
||||||
lflag=${lingua}
|
|
||||||
fi
|
|
||||||
use l10n_${lflag/[_@]/-} && icecatlinguas+=( ${lingua} )
|
|
||||||
done
|
|
||||||
# Compatibility code - Check LINGUAS and warn if anything set there isn't enabled via l10n
|
|
||||||
for lingua in ${LINGUAS}; do
|
|
||||||
if has ${lingua//[_@]/-} en en-US; then
|
|
||||||
# For gnuzilla products, en and en_US are handled internally
|
|
||||||
continue
|
|
||||||
# If this language is supported by ${P},
|
|
||||||
elif has ${lingua} "${MOZ_LANGS[@]//-/_}"; then
|
|
||||||
# Warn the language is missing, if it isn't already there
|
|
||||||
has ${lingua//[_@]/-} "${icecatlinguas[@]//[_@]/-}" || \
|
|
||||||
ewarn "LINGUAS value ${lingua} is not enabled using L10N use flags"
|
|
||||||
continue
|
|
||||||
# For each short lingua that isn't in MOZ_LANGS,
|
|
||||||
# We used to add *all* long MOZ_LANGS to the icecatlinguas list,
|
|
||||||
# but we stopped doing that due to bug 325195.
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
einfo "Sorry, but ${P} does not support the ${lingua} locale in LINGUAS"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas_src_unpack
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Unpack xpi language packs according to the user's LINGUAS settings
|
|
||||||
icecatlinguas_src_unpack() {
|
|
||||||
local x
|
|
||||||
einfo "LOL"
|
|
||||||
if ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
|
|
||||||
icecatlinguas_export
|
|
||||||
for x in "${icecatlinguas[@]}"; do
|
|
||||||
# FIXME: Add support for unpacking xpis to portage
|
|
||||||
xpi_unpack "${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
|
|
||||||
done
|
|
||||||
if [[ "${icecatlinguas[*]}" != "" && "${icecatlinguas[*]}" != "en" ]]; then
|
|
||||||
einfo "Selected language packs (first will be default): ${icecatlinguas[*]}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# For the phase function export
|
|
||||||
icecatlinguas-v2_src_unpack() {
|
|
||||||
icecatlinguas_src_unpack
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas_mozconfig
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# if applicable, add the necessary flag to .mozconfig to support
|
|
||||||
# the generation of locales. Note that this function requires
|
|
||||||
# mozconfig_annontate to already be declared via an inherit of
|
|
||||||
# mozconfig or mozcoreconf.
|
|
||||||
icecatlinguas_mozconfig() {
|
|
||||||
if [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
|
|
||||||
if declare -f mozconfig_annotate >/dev/null ; then
|
|
||||||
mozconfig_annotate 'for building locales' --with-l10n-base=${MOZ_L10N_SOURCEDIR}
|
|
||||||
else
|
|
||||||
die "Could not configure l10n-base, mozconfig_annotate not declared -- missing inherit?"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas_src_compile
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# if applicable, build the selected locales.
|
|
||||||
icecatlinguas_src_compile() {
|
|
||||||
if [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
|
|
||||||
# leverage BUILD_OBJ_DIR if set otherwise assume PWD.
|
|
||||||
local x y targets=( "langpack" ) localedir="${BUILD_OBJ_DIR:-.}"
|
|
||||||
case ${PN} in
|
|
||||||
*firefox)
|
|
||||||
localedir+="/browser/locales"
|
|
||||||
;;
|
|
||||||
seamonkey)
|
|
||||||
localedir+="/suite/locales"
|
|
||||||
;;
|
|
||||||
*thunderbird)
|
|
||||||
localedir+="/mail/locales"
|
|
||||||
targets+=( "calendar-langpack" )
|
|
||||||
;;
|
|
||||||
*) die "Building locales for ${PN} is not supported."
|
|
||||||
esac
|
|
||||||
pushd "${localedir}" > /dev/null || die
|
|
||||||
icecatlinguas_export
|
|
||||||
for x in "${icecatlinguas[@]}"; do for y in "${targets[@]}"; do
|
|
||||||
emake ${y}-${x} LOCALE_MERGEDIR="./${y}-${x}"
|
|
||||||
done; done
|
|
||||||
popd > /dev/null || die
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# For the phase function export
|
|
||||||
icecatlinguas-v2_src_compile() {
|
|
||||||
icecatlinguas_src_compile
|
|
||||||
}
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas_xpistage_langpacks
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Add extra langpacks to the xpi-stage dir for prebuilt plugins
|
|
||||||
#
|
|
||||||
# First argument is the path to the extension
|
|
||||||
# Second argument is the prefix of the source (same as first if unspecified)
|
|
||||||
# Remaining arguments are the modules in the extension that are localized
|
|
||||||
# (basename of first if unspecified)
|
|
||||||
#
|
|
||||||
# Example - installing extra langpacks for lightning:
|
|
||||||
# src_install() {
|
|
||||||
# ... # general installation steps
|
|
||||||
# icecatlinguas_xpistage_langpacks \
|
|
||||||
# "${BUILD_OBJ_DIR}"/dist/xpi-stage/lightning \
|
|
||||||
# "${WORKDIR}"/lightning \
|
|
||||||
# lightning calendar
|
|
||||||
# ... # proceed with installation from the xpi-stage dir
|
|
||||||
# }
|
|
||||||
|
|
||||||
icecatlinguas_xpistage_langpacks() {
|
|
||||||
local l c modpath="${1}" srcprefix="${1}" modules=( "${1##*/}" )
|
|
||||||
shift
|
|
||||||
if [[ -n ${1} ]] ; then srcprefix="${1}" ; shift ; fi
|
|
||||||
if [[ -n ${1} ]] ; then modules=( $@ ) ; fi
|
|
||||||
|
|
||||||
icecatlinguas_export
|
|
||||||
mkdir -p "${modpath}/chrome" || die
|
|
||||||
for l in "${icecatlinguas[@]}"; do for c in "${modules[@]}" ; do
|
|
||||||
if [[ -e "${srcprefix}-${l}/chrome/${c}-${l}" ]]; then
|
|
||||||
cp -RLp -t "${modpath}/chrome" "${srcprefix}-${l}/chrome/${c}-${l}" || die
|
|
||||||
grep "locale ${c} ${l} chrome/" "${srcprefix}-${l}/chrome.manifest" \
|
|
||||||
>>"${modpath}/chrome.manifest" || die
|
|
||||||
elif [[ -e "${srcprefix}/chrome/${c}-${l}" ]]; then
|
|
||||||
cp -RLp -t "${modpath}/chrome" "${srcprefix}/chrome/${c}-${l}" || die
|
|
||||||
grep "locale ${c} ${l} chrome/" "${srcprefix}/chrome.manifest" \
|
|
||||||
>>"${modpath}/chrome.manifest" || die
|
|
||||||
else
|
|
||||||
ewarn "Locale ${l} was not found for ${c}, skipping."
|
|
||||||
fi
|
|
||||||
done; done
|
|
||||||
}
|
|
||||||
|
|
||||||
# @FUNCTION: icecatlinguas-v2_src_install
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Install xpi language packs according to the user's L10N settings
|
|
||||||
# NOTE - uses ${BUILD_OBJ_DIR} or PWD if unset, for source-generated langpacks
|
|
||||||
icecatlinguas_src_install() {
|
|
||||||
local x
|
|
||||||
icecatlinguas_export
|
|
||||||
if [[ -n ${MOZ_GENERATE_LANGPACKS} ]] && [[ -n ${icecatlinguas[*]} ]]; then
|
|
||||||
local repopath="${WORKDIR}/${PN}-generated-langpacks"
|
|
||||||
mkdir -p "${repopath}" || die
|
|
||||||
pushd "${BUILD_OBJ_DIR:-.}"/dist/*/xpi > /dev/null || die
|
|
||||||
for x in "${icecatlinguas[@]}"; do
|
|
||||||
cp "${MOZ_P}.${x}.langpack.xpi" \
|
|
||||||
"${repopath}/${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi" || die
|
|
||||||
xpi_unpack "${repopath}/${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
|
|
||||||
done
|
|
||||||
popd > /dev/null || die
|
|
||||||
fi
|
|
||||||
|
|
||||||
for x in "${icecatlinguas[@]}"; do
|
|
||||||
if [[ -n ${MOZ_INSTALL_L10N_XPIFILE} ]]; then
|
|
||||||
xpi_copy "${WORKDIR}/${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}"
|
|
||||||
else
|
|
||||||
xpi_install "${WORKDIR}/${MOZ_P}.${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# For the phase function export
|
|
||||||
icecatlinguas-v2_src_install() {
|
|
||||||
icecatlinguas_src_install
|
|
||||||
}
|
|
@ -1,424 +0,0 @@
|
|||||||
# Copyright 1999-2022 Gentoo Authors
|
|
||||||
# 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/glib-2.26:2
|
|
||||||
>=media-libs/freetype-2.4.10
|
|
||||||
>=media-libs/libpng-1.6.31:0=[apng]
|
|
||||||
>=media-libs/mesa-10.2:*
|
|
||||||
>=sys-libs/zlib-1.2.3
|
|
||||||
>=x11-libs/cairo-1.10[X]
|
|
||||||
>=x11-libs/gtk+-2.18:2
|
|
||||||
>=x11-libs/pango-1.22.0
|
|
||||||
>=x11-libs/pixman-0.19.2
|
|
||||||
dev-libs/atk
|
|
||||||
dev-libs/expat
|
|
||||||
dev-libs/libffi
|
|
||||||
media-libs/fontconfig
|
|
||||||
media-video/ffmpeg
|
|
||||||
virtual/freedesktop-icon-theme
|
|
||||||
x11-libs/gdk-pixbuf
|
|
||||||
x11-libs/libX11
|
|
||||||
x11-libs/libXcomposite
|
|
||||||
x11-libs/libXdamage
|
|
||||||
x11-libs/libXext
|
|
||||||
x11-libs/libXfixes
|
|
||||||
x11-libs/libXrender
|
|
||||||
x11-libs/libXt
|
|
||||||
dbus? (
|
|
||||||
>=sys-apps/dbus-0.60
|
|
||||||
>=dev-libs/dbus-glib-0.72
|
|
||||||
)
|
|
||||||
kernel_linux? (
|
|
||||||
!pulseaudio? (
|
|
||||||
media-libs/alsa-lib
|
|
||||||
)
|
|
||||||
)
|
|
||||||
pulseaudio? (
|
|
||||||
|| (
|
|
||||||
media-sound/pulseaudio
|
|
||||||
>=media-sound/apulse-0.1.9
|
|
||||||
)
|
|
||||||
)
|
|
||||||
startup-notification? (
|
|
||||||
>=x11-libs/startup-notification-0.8
|
|
||||||
)
|
|
||||||
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
|
|
||||||
}
|
|
@ -1,278 +0,0 @@
|
|||||||
# Copyright 1999-2022 Gentoo Authors
|
|
||||||
# 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
|
|
Loading…
Reference in New Issue
Block a user