* [gentoo-dev-announce] Mozilla eclass changes: mozconfig-3, mozcoreconf-2
@ 2011-03-14 18:13 Nirbheek Chauhan
0 siblings, 0 replies; only message in thread
From: Nirbheek Chauhan @ 2011-03-14 18:13 UTC (permalink / raw
To: Gentoo Dev; +Cc: gentoo-dev-announce, mozilla
[-- Attachment #1: Type: text/plain, Size: 895 bytes --]
Hello everyone,
The mozilla team has been making some changes to the mozilla eclasses
to make them easier to use, remove obsolete code, and reduce
duplicated code between mozilla products. Note that the only ebuilds
using these eclasses are:
net-libs/xulrunner
www-client/firefox
www-client/icecat
www-client/seamonkey
mail-client/thunderbird
x11-plugins/enigmail
The changes are straightforward and mostly backwards-compatible: the
only side-effect will be duplicated configure options in the older
ebuilds. I'm attaching just the new eclasses since the diff is hard to
read — lines were moved around a lot. The eclasses are being tested in
the mozilla overlay[1], and can be found there as well.
Comments for improvement are appreciated.
Thanks!
1. http://git.overlays.gentoo.org/gitweb/?p=proj/mozilla.git
--
~Nirbheek Chauhan
Gentoo GNOME+Mozilla Team
[-- Attachment #2: mozconfig-3.eclass --]
[-- Type: application/octet-stream, Size: 3088 bytes --]
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# mozconfig.eclass: the new mozilla.eclass
inherit multilib flag-o-matic mozcoreconf-2
# use-flags common among all mozilla ebuilds
IUSE="+alsa +dbus debug libnotify startup-notification system-sqlite +webm wifi"
RDEPEND="app-arch/zip
app-arch/unzip
>=app-text/hunspell-1.2
dev-libs/expat
>=dev-libs/glib-2.26
>=dev-libs/libIDL-0.8.0
>=dev-libs/libevent-1.4.7
!<x11-base/xorg-x11-6.7.0-r2
>=x11-libs/cairo-1.10.2[X]
>=x11-libs/gtk+-2.8.6
>=x11-libs/pango-1.10.1
virtual/jpeg
alsa? ( media-libs/alsa-lib )
dbus? ( >=dev-libs/dbus-glib-0.72 )
libnotify? ( >=x11-libs/libnotify-0.4 )
startup-notification? ( >=x11-libs/startup-notification-0.8 )
system-sqlite? ( >=dev-db/sqlite-3.7.4[fts3,secure-delete,unlock-notify,debug=] )
webm? ( media-libs/libvpx
media-libs/alsa-lib )
wifi? ( net-wireless/wireless-tools )"
DEPEND="${RDEPEND}"
mozconfig_config() {
mozconfig_annotate '' --enable-default-toolkit=cairo-gtk2
if has bindist ${IUSE}; then
mozconfig_use_enable !bindist official-branding
fi
mozconfig_use_enable alsa ogg
mozconfig_use_enable alsa wave
if has crashreporter ${IUSE} ; then
mozconfig_use_enable crashreporter
fi
mozconfig_use_enable dbus
mozconfig_use_enable debug
mozconfig_use_enable debug tests
mozconfig_use_enable debug debugger-info-modeules
if has ipc ${IUSE}; then
mozconfig_use_enable ipc
fi
mozconfig_use_enable libnotify
mozconfig_use_enable startup-notification
mozconfig_use_enable system-sqlite
if use system-sqlite; then
mozconfig_annotate '' --with-sqlite-prefix="${EPREFIX}"/usr
fi
mozconfig_use_enable wifi necko-wifi
if ${XUL}; then
mozconfig_annotate 'mozjs' --enable-shared-js
fi
if ${SM} || ${XUL} || ${FF} || ${IC}; then
if use webm && ! use alsa; then
echo "Enabling alsa support due to webm request"
mozconfig_annotate '+webm -alsa' --enable-ogg
mozconfig_annotate '+webm -alsa' --enable-wave
mozconfig_annotate '+webm' --enable-webm
else
mozconfig_use_enable webm
mozconfig_use_with webm system-libvpx
fi
if use amd64 || use x86 || use arm || use sparc; then
mozconfig_annotate '' --enable-tracejit
fi
fi
if ${SM} || ${TB} || ${XUL}; then
MEXTENSIONS="default"
mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}"
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 'places' --enable-storage --enable-places --enable-places_bookmarks
mozconfig_annotate '' --with-system-libevent="${EPREFIX}"/usr
mozconfig_annotate '' --enable-oji --enable-mathml
mozconfig_annotate 'broken' --disable-mochitest
mozconfig_annotate '' --enable-system-hunspell
mozconfig_annotate '' --disable-gnomevfs
mozconfig_annotate '' --enable-gio
}
[-- Attachment #3: mozcoreconf-2.eclass --]
[-- Type: application/octet-stream, Size: 8071 bytes --]
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# mozcoreconf.eclass : core options for mozilla
# inherit mozconfig-2 if you need USE flags
inherit multilib flag-o-matic python
IUSE="${IUSE} custom-optimization"
RDEPEND="x11-libs/libXrender
x11-libs/libXt
x11-libs/libXmu
>=sys-libs/zlib-1.1.4"
DEPEND="${RDEPEND}
dev-util/pkgconfig
=dev-lang/python-2*[threads]"
# mozconfig_annotate: 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
}
# mozconfig_use_enable: 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 "$(useq $1 && echo +$1 || echo -$1)" "${flag}"
}
# mozconfig_use_with: 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 "$(useq $1 && echo +$1 || echo -$1)" "${flag}"
}
# mozconfig_use_extension: 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=$(useq $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 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}
python_set_active_version 2
}
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 IC=$([[ ${PN} == icecat ]] && echo true || echo false)
declare SM=$([[ ${PN} == seamonkey ]] && echo true || echo false)
declare TB=$([[ ${PN} == thunderbird ]] && echo true || echo false)
declare EM=$([[ ${PN} == enigmail ]] && 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" ;;
*icecat)
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 ;;
enigmail)
cp mail/config/mozconfig .mozconfig \
|| die "cp mail/config/mozconfig failed" ;;
esac
####################################
#
# CFLAGS setup and ARCH support
#
####################################
# Set optimization level
if [[ ${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 -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
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
;;
ppc)
# Fix to avoid gcc-3.3.x micompilation issues.
if [[ $(gcc-major-version).$(gcc-minor-version) == 3.3 ]]; then
append-flags -fno-strict-aliasing
fi
;;
x86)
if [[ $(gcc-major-version) -eq 3 ]]; then
# gcc-3 prior to 3.2.3 doesn't work well for pentium4
# see bug 25332
if [[ $(gcc-minor-version) -lt 2 ||
( $(gcc-minor-version) -eq 2 && $(gcc-micro-version) -lt 3 ) ]]
then
replace-flags -march=pentium4 -march=pentium3
filter-flags -msse2
fi
fi
;;
esac
if [[ $(gcc-major-version) -eq 3 ]]; then
# Enable us to use flash, etc plugins compiled with gcc-2.95.3
mozconfig_annotate "building with >=gcc-3" --enable-old-abi-compat-wrappers
# Needed to build without warnings on gcc-3
CXXFLAGS="${CXXFLAGS} -Wno-deprecated"
fi
# Go a little faster; use less RAM
append-flags "$MAKEEDIT_FLAGS"
####################################
#
# mozconfig setup
#
####################################
mozconfig_annotate system_libs \
--with-system-jpeg \
--with-system-zlib \
--enable-pango \
--enable-svg \
--enable-system-cairo
# Requires libpng with apng support
#--with-system-png \
mozconfig_annotate disable_update_strip \
--disable-installer \
--disable-pedantic \
--disable-updater \
--disable-strip \
--disable-strip-libs \
--disable-install-strip
if [[ ${PN} != seamonkey ]]; then
mozconfig_annotate basic_profile \
--enable-single-profile \
--disable-profilesharing \
--disable-profilelocking
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
}
# mozconfig_final: display a table describing all configuration options paired
# with reasons, then clean up extensions list
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
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-03-14 18:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-14 18:13 [gentoo-dev-announce] Mozilla eclass changes: mozconfig-3, mozcoreconf-2 Nirbheek Chauhan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox