diff --git a/www-client/palemoon/palemoon-28.14.2.ebuild b/www-client/palemoon/palemoon-28.14.2.ebuild new file mode 100644 index 0000000..e9cb785 --- /dev/null +++ b/www-client/palemoon/palemoon-28.14.2.ebuild @@ -0,0 +1,252 @@ +# 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 +}