From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 7DBA8138222 for ; Fri, 6 May 2016 20:30:24 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id BD07A21C130; Fri, 6 May 2016 20:29:32 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1952A21C130 for ; Fri, 6 May 2016 20:29:32 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 93E693407D7 for ; Fri, 6 May 2016 20:29:29 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 02D3F327 for ; Fri, 6 May 2016 20:29:26 +0000 (UTC) From: "Ian Stakenvicius" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ian Stakenvicius" Message-ID: <1462566550.953e7051d5ca66d42b3a56cbdc71af3e96f86152.axs@gentoo> Subject: [gentoo-commits] proj/mozilla:master commit in: www-client/firefox/, eclass/ X-VCS-Repository: proj/mozilla X-VCS-Files: eclass/mozconfig-v6.46.eclass eclass/mozcoreconf-v4.eclass www-client/firefox/firefox-46.0.ebuild X-VCS-Directories: www-client/firefox/ eclass/ X-VCS-Committer: axs X-VCS-Committer-Name: Ian Stakenvicius X-VCS-Revision: 953e7051d5ca66d42b3a56cbdc71af3e96f86152 X-VCS-Branch: master Date: Fri, 6 May 2016 20:29:26 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: c067f1dc-db8c-4ecd-8c08-baee23efed98 X-Archives-Hash: e3898ad7990bb3606bdce57b965842e5 commit: 953e7051d5ca66d42b3a56cbdc71af3e96f86152 Author: Ian Stakenvicius gentoo org> AuthorDate: Fri May 6 20:24:10 2016 +0000 Commit: Ian Stakenvicius gentoo org> CommitDate: Fri May 6 20:29:10 2016 +0000 URL: https://gitweb.gentoo.org/proj/mozilla.git/commit/?id=953e7051 Minor ebuild and eclass reworking, for improved toolchain support This commit migrated MOZILLA_FIVE_HOME as well as -Wl,-rpath ldflag settings out of firefox-46.0.ebuild and into mozcoreconf-v4.eclass, via the inherit in mozconfig-v6.46.eclass mozconfig-v6.46.eclass also carries some modifications that are necessary to properly support crossdev based builds. (Note that this is not a complete fix for crossdev-build support, as currently the build system does not find the in-crossdev copy of NSS properly) eclass/mozconfig-v6.46.eclass | 20 ++- eclass/mozcoreconf-v4.eclass | 277 +++++++++++++++++++++++++++++++++ www-client/firefox/firefox-46.0.ebuild | 12 +- 3 files changed, 291 insertions(+), 18 deletions(-) diff --git a/eclass/mozconfig-v6.46.eclass b/eclass/mozconfig-v6.46.eclass index 90b11ef..76de513 100644 --- a/eclass/mozconfig-v6.46.eclass +++ b/eclass/mozconfig-v6.46.eclass @@ -27,7 +27,7 @@ case ${EAPI} in ;; esac -inherit flag-o-matic toolchain-funcs mozcoreconf-v3 +inherit flag-o-matic toolchain-funcs mozcoreconf-v4 # @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_WIFI # @DESCRIPTION: @@ -270,11 +270,11 @@ mozconfig_config() { fi # These are enabled by default in all mozilla applications - mozconfig_annotate '' --with-system-nspr --with-nspr-prefix="${EPREFIX}"/usr - mozconfig_annotate '' --with-system-nss --with-nss-prefix="${EPREFIX}"/usr - mozconfig_annotate '' --x-includes="${EPREFIX}"/usr/include --x-libraries="${EPREFIX}"/usr/$(get_libdir) + 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="${EPREFIX}"/usr + mozconfig_annotate '' --with-system-libevent="${SYSROOT}${EPREFIX}"/usr fi mozconfig_annotate '' --prefix="${EPREFIX}"/usr mozconfig_annotate '' --libdir="${EPREFIX}"/usr/$(get_libdir) @@ -331,8 +331,14 @@ mozconfig_config() { mozconfig_annotate '' --enable-replace-malloc fi - mozconfig_annotate '' --target="${CTARGET:-${CHOST}}" - mozconfig_annotate '' --build="${CTARGET:-${CHOST}}" + # 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. + mozconfig_annotate '' --target="${CHOST}" + if [[ "${CBUILD:-${CHOST}}" != "${CHOST}" ]]; then + # set --host only when cross-compiling + mozconfig_annotate '' --host="${CBUILD:-${CHOST}}" + fi use ffmpeg || mozconfig_annotate '-ffmpeg' --disable-ffmpeg mozconfig_use_enable pulseaudio diff --git a/eclass/mozcoreconf-v4.eclass b/eclass/mozcoreconf-v4.eclass new file mode 100644 index 0000000..88f7b4b --- /dev/null +++ b/eclass/mozcoreconf-v4.eclass @@ -0,0 +1,277 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ +# +# @ECLASS: mozcoreconf.eclass +# @MAINTAINER: +# Mozilla team +# @BLURB: core options and configuration functions for mozilla +# @DESCRIPTION: +# +# inherit mozconfig-v5.* or above for mozilla configuration support + +# @ECLASS-VARIABLE: MOZILLA_FIVE_HOME +# @DESCCRIPTION: +# This is an eclass-generated variable that defines the rpath that the mozilla +# product will be installed in. Read-only + +if [[ ! ${_MOZCORECONF_V3} ]]; 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 + 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 + eval 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) + + #################################### + # + # 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) + 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 [[ ${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 -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 + 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 + ;; + esac + + # Go a little faster; use less RAM + append-flags "$MAKEEDIT_FLAGS" + + # Use the MOZILLA_FIVE_HOME for the rpath + append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}" + # Set MOZILLA_FIVE_HOME in mozconfig + mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME} + + #################################### + # + # mozconfig setup + # + #################################### + + mozconfig_annotate disable_update_strip \ + --disable-pedantic \ + --disable-updater \ + --disable-strip \ + --disable-install-strip \ + --disable-installer \ + --disable-strip-libs + + if [[ ${PN} != seamonkey ]]; then + mozconfig_annotate basic_profile \ + --disable-profilelocking \ + --enable-single-profile \ + --disable-profilesharing + fi + + # Here is a strange one... + if is-flag '-mcpu=ultrasparc*' || is-flag '-mtune=ultrasparc*'; then + mozconfig_annotate "building on ultrasparc" --enable-js-ultrasparc + fi + + # Currently --enable-elf-dynstr-gc only works for x86, + # thanks to Jason Wever for the fix. + if use x86 && [[ ${enable_optimize} != -O0 ]]; then + mozconfig_annotate "${ARCH} optimized build" --enable-elf-dynstr-gc + fi + + # 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: +# 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 + 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_V3=1 +fi diff --git a/www-client/firefox/firefox-46.0.ebuild b/www-client/firefox/firefox-46.0.ebuild index a7c5a69..e21af16 100644 --- a/www-client/firefox/firefox-46.0.ebuild +++ b/www-client/firefox/firefox-46.0.ebuild @@ -165,7 +165,6 @@ src_prepare() { } src_configure() { - MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" 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 @@ -181,9 +180,6 @@ src_configure() { mozconfig_init mozconfig_config - # We want rpath support to prevent unneeded hacks on different libc variants - append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}" - # It doesn't compile on alpha without this LDFLAGS use alpha && append-ldflags "-Wl,--no-relax" @@ -200,9 +196,6 @@ src_configure() { mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}" mozconfig_annotate '' --disable-mailnews - # Other ff-specific settings - mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME} - # Allow for a proper pgo build if use pgo; then echo "mk_add_options PROFILE_GEN_SCRIPT='\$(PYTHON) \$(OBJDIR)/_profile/pgo/profileserver.py'" >> "${S}"/.mozconfig @@ -218,6 +211,7 @@ src_configure() { fi # workaround for funky/broken upstream configure... + SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ emake -f client.mk configure } @@ -243,11 +237,9 @@ src_compile() { shopt -u nullglob addpredict "${cards}" - CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" \ MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ virtx emake -f client.mk profiledbuild || die "virtx emake failed" else - CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" \ MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ emake -f client.mk realbuild fi @@ -255,8 +247,6 @@ src_compile() { } src_install() { - MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" - cd "${BUILD_OBJ_DIR}" || die # Add our default prefs for firefox