public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Ian Stakenvicius" <axs@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/mozilla:master commit in: www-client/firefox/, eclass/
Date: Fri,  6 May 2016 20:29:26 +0000 (UTC)	[thread overview]
Message-ID: <1462566550.953e7051d5ca66d42b3a56cbdc71af3e96f86152.axs@gentoo> (raw)

commit:     953e7051d5ca66d42b3a56cbdc71af3e96f86152
Author:     Ian Stakenvicius <axs <AT> gentoo <DOT> org>
AuthorDate: Fri May  6 20:24:10 2016 +0000
Commit:     Ian Stakenvicius <axs <AT> gentoo <DOT> 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 <mozilla@gentoo.org>
+# @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 <weeve@gentoo.org> 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


             reply	other threads:[~2016-05-06 20:30 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-06 20:29 Ian Stakenvicius [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-05-02 14:15 [gentoo-commits] proj/mozilla:master commit in: www-client/firefox/, eclass/ Ian Stakenvicius
2017-09-29 19:00 Ian Stakenvicius
2017-08-25 11:28 Jory Pratt
2017-07-25  1:58 Ian Stakenvicius
2017-07-16 17:02 Jory Pratt
2017-06-14 16:00 Jory Pratt
2017-05-19  2:14 Ian Stakenvicius
2017-01-24 19:24 Ian Stakenvicius
2016-09-12 14:46 Ian Stakenvicius
2016-06-02 15:19 Ian Stakenvicius
2016-06-02 15:19 Ian Stakenvicius
2016-04-27 20:44 Ian Stakenvicius
2016-04-27 15:07 Ian Stakenvicius
2016-03-07 17:48 Ian Stakenvicius
2016-02-07 17:36 Jory Pratt
2015-12-31 22:57 Jory Pratt
2015-09-04 15:31 Ian Stakenvicius
2015-07-23 16:05 Ian Stakenvicius
2015-07-03 16:25 Ian Stakenvicius
2015-06-12 23:05 Jory Pratt
2015-05-27  3:48 Ian Stakenvicius
2015-04-06 22:13 Ian Stakenvicius
2015-03-04  0:16 git@oystercatcher mirror+tproxy
2014-12-04  4:30 Ian Stakenvicius
2014-10-15 14:22 Ian Stakenvicius
2014-10-08 19:58 Ian Stakenvicius
2014-08-25 19:25 Ian Stakenvicius
2014-07-29 20:40 Ian Stakenvicius
2014-08-25 19:25 ` Ian Stakenvicius
2014-07-06 18:00 Jory Pratt
2012-12-03  5:47 Lars Wendler
2012-12-02 21:11 Jory Pratt
2012-12-01  3:49 Jory Pratt
2012-02-28  3:47 Jory Pratt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1462566550.953e7051d5ca66d42b3a56cbdc71af3e96f86152.axs@gentoo \
    --to=axs@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox