# Copyright 2019-2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 GCC_SUPPORTED_VERSIONS="4.9 5.4 7.3 8.2 8.3 9.2 9.3" PYTHON_COMPAT=( python2_7 ) REQUIRED_BUILDSPACE='9G' inherit palemoon-v1 git-r3 flag-o-matic pax-utils python-any-r1 DESCRIPTION="Pale Moon Web Browser" HOMEPAGE="https://www.palemoon.org/" if [[ "${PV}" == *9999* ]]; then EGIT_REPO_URI="https://github.com/MoonchildProductions/Pale-Moon.git" else EGIT_REPO_URI="https://github.com/MoonchildProductions/Pale-Moon.git" EGIT_COMMIT="${PV}_Release" KEYWORDS="~amd64" fi RESTRICT="mirror" LICENSE="MPL-2.0 GPL-2 LGPL-2.1" SLOT="0" IUSE=" cpu_flags_x86_sse cpu_flags_x86_sse2 dbus +devtools debug gnome -gtk2 +gtk3 jemalloc pulseaudio -necko-wifi official-branding +optimize threads -valgrind " REQUIRED_USE=" optimize? ( !debug ) jemalloc? ( !valgrind ) ^^ ( gtk2 gtk3 ) necko-wifi? ( dbus ) " DEPEND=" ${PYTHON_DEPS} >=dev-lang/perl-5.6 >=sys-devel/autoconf-2.13:2.1 dev-lang/yasm " RDEPEND=" app-arch/zip media-libs/alsa-lib media-libs/fontconfig media-libs/freetype virtual/ffmpeg[x264] x11-libs/libXt dbus? ( >=sys-apps/dbus-0.60 >=dev-libs/dbus-glib-0.60 ) gnome? ( gnome-base/gconf ) gtk2? ( >=x11-libs/gtk+-2.18.0:2 ) gtk3? ( >=x11-libs/gtk+-3.4.0:3 ) necko-wifi? ( net-wireless/wireless-tools ) pulseaudio? ( media-sound/pulseaudio ) valgrind? ( dev-util/valgrind ) optimize? ( sys-libs/glibc ) " src_prepare() { # Ensure that our plugins dir is enabled by default: sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \ "${S}/platform/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}/platform/xpcom/io/nsAppFileLocationProvider.cpp" \ || die "sed failed to replace plugin path for 64bit!" default } src_configure() { # Does not build with -fno-common filter-flags -fno-common append-flags -fcommon # Basic configuration: mozconfig_init mozconfig_disable updater install-strip accessibility if use official-branding; then official-branding_warning mozconfig_enable official-branding fi if use optimize; then O='-O2' if use cpu_flags_x86_sse && use cpu_flags_x86_sse2; then O="${O} -msse2 -mfpmath=sse" fi mozconfig_enable "optimize=\"${O}\"" filter-flags '-O*' '-msse2' '-mfpmath=sse' else mozconfig_disable optimize fi if use threads; then mozconfig_with pthreads fi if use debug; then mozconfig_var MOZ_DEBUG_SYMBOLS 1 mozconfig_enable "debug-symbols=\"-gdwarf-2\"" fi if use jemalloc; then mozconfig_enable jemalloc fi if use valgrind; then mozconfig_enable valgrind fi if ! use dbus; then mozconfig_disable dbus fi if ! use gnome; then mozconfig_disable gconf fi if use gtk2; then mozconfig_enable default-toolkit=\"cairo-gtk2\" fi if use gtk3; then mozconfig_enable default-toolkit=\"cairo-gtk3\" fi if ! use necko-wifi; then mozconfig_disable necko-wifi fi if ! use pulseaudio; then mozconfig_disable pulseaudio fi if use devtools; then mozconfig_enable devtools fi # Enabling this causes xpcshell to hang during the packaging process, # so disabling it until the cause can be tracked down. It most likely # has something to do with the sandbox since the issue goes away when # building with FEATURES="-sandbox -usersandbox". mozconfig_disable precompiled-startupcache # Mainly to prevent system's NSS/NSPR from taking precedence over # the built-in ones: append-ldflags -Wl,-rpath="${EPREFIX}/usr/$(get_libdir)/palemoon" export MOZBUILD_STATE_PATH="${WORKDIR}/mach_state" mozconfig_var PYTHON "$(which python2)" mozconfig_var AUTOCONF "$(which autoconf-2.13)" mozconfig_var MOZ_MAKE_FLAGS "\"${MAKEOPTS}\"" # Shorten obj dir to limit some errors linked to the path size hitting # a kernel limit (127 chars): mozconfig_var MOZ_OBJDIR "@TOPSRCDIR@/o" # Disable mach notifications, which also cause sandbox access violations: export MOZ_NOSPAM=1 } src_compile() { # Prevents portage from setting its own XARGS which messes with the # Pale Moon build system checks: # See: https://gitweb.gentoo.org/proj/portage.git/tree/bin/isolated-functions.sh XARGS="$(which xargs)" export XARGS python2 "${S}/platform/mach" build || die } src_install() { # obj_dir changes depending on arch, compiler, etc: local obj_dir="$(echo */config.log)" obj_dir="${obj_dir%/*}" # Disable MPROTECT for startup cache creation: pax-mark m "${obj_dir}"/dist/bin/xpcshell # Set the backspace behaviour to be consistent with the other platforms: set_pref "browser.backspace_action" 0 # Gotta create the package, unpack it and manually install the files # from there not to miss anything (e.g. the statusbar extension): einfo "Creating the package..." python2 "${S}/platform/mach" mozpackage || die local extracted_dir="${T}/package" mkdir -p "${extracted_dir}" cd "${extracted_dir}" einfo "Extracting the package..." find "${S}/${obj_dir}/dist/" -name "*.bz2" -printf "${S}/${obj_dir}/dist/%P" | xargs tar xjpf || die einfo "Installing the package..." local dest_libdir="/usr/$(get_libdir)" mkdir -p "${D}/${dest_libdir}" cp -rL "${PN}" "${D}/${dest_libdir}" dosym "${dest_libdir}/${PN}/${PN}" "/usr/bin/${PN}" einfo "Done installing the package." # Until JIT-less builds are supported, # also disable MPROTECT on the main executable: pax-mark m "${D}/${dest_libdir}/${PN}/"{palemoon,palemoon-bin,plugin-container} # Install icons and .desktop for menu entry: install_branding_files }