diff options
Diffstat (limited to 'eclass/mozilla-app.eclass')
-rw-r--r-- | eclass/mozilla-app.eclass | 457 |
1 files changed, 0 insertions, 457 deletions
diff --git a/eclass/mozilla-app.eclass b/eclass/mozilla-app.eclass deleted file mode 100644 index 2789666..0000000 --- a/eclass/mozilla-app.eclass +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -# @ECLASS: mozilla-config.eclass -# @MAINTAINER: -# Sardem FF7 <sardemff7.pub@gmail.com> -# @BLURB: This eclass provides Mozilla app build support - -WANT_AUTOCONF="2.1" - -inherit base multilib toolchain-funcs autotools flag-o-matic pax-utils mozilla-scm - -S="${WORKDIR}/${XULRUNNER_HG_MODULE}" - -# -# Some per-application stuff -# -MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" -case "${PN}" in - firefox) - MOZ_APPLICATION=browser - ;; - thunderbird) - MOZ_APPLICATION=mail - ;; -esac - -RDEPEND=" - x11-libs/libXrender - x11-libs/libXt - x11-libs/libXmu - >=sys-libs/zlib-1.1.4 - virtual/jpeg - dev-libs/expat - app-arch/unzip - >=x11-libs/gtk+-2.14.0 - >=dev-libs/glib-2.26 - >=x11-libs/pango-1.10.1 - >=dev-libs/libIDL-0.8.0 - >=dev-libs/libevent-1.4.7 - !<x11-base/xorg-x11-6.7.0-r2 - - >=sys-devel/binutils-2.16.1 - ~dev-libs/nss-9999 - >=app-text/hunspell-1.2 - >=x11-libs/cairo-1.10.2[X] - x11-libs/pixman - dev-libs/libffi - - alsa? ( media-libs/alsa-lib ) - dbus? ( >=dev-libs/dbus-glib-0.72 ) - gconf? ( gnome-base/gconf:2 ) - libnotify? ( >=x11-libs/libnotify-0.4 ) - startup-notification? ( >=x11-libs/startup-notification-0.8 ) - system-sqlite? ( >=dev-db/sqlite-3.7.5[fts3,secure-delete,unlock-notify] ) - webm? ( >=media-libs/libvpx-0.9.7 ) - wifi? ( net-wireless/wireless-tools ) - " - -DEPEND="${RDEPEND} - meta-sync/mozilla-repositories[mozdom=] - webm? ( dev-lang/yasm ) - >=sys-devel/gcc-4.1 - " - -RDEPEND+=" - !net-libs/xulrunner - !www-plugins/weave - " - -IUSE="+alsa bindist custom-optimization debug dbus gconf +ipc libnotify mozdom raw startup-notification +system-sqlite +webm wifi" - - -EXPORT_FUNCTIONS pkg_setup src_prepare src_configure src_install pkg_postinst - -function mozilla-app_pkg_setup() { - mozilla-scm_pkg_setup - # Set by configure (plus USE_AUTOCONF=1), but useful for NSPR - export MOZILLA_CLIENT=1 - export BUILD_OPT=1 - export NO_STATIC_LIB=1 - export USE_PTHREADS=1 - - if [ "${XULRUNNER_HG_MODULE}" = "mozilla-aurora" ]; then - MOZ_BRANDING=aurora - elif use bindist; then - MOZ_BRANDING=nightly - else - MOZ_BRANDING=official - - elog "You are enabling official branding. You may not redistribute this build" - elog "to any users on your network or the internet. Doing so puts yourself into" - elog "a legal problem with Mozilla Foundation" - fi -} - -function mozilla-app_src_prepare() { - epatch "${FILESDIR}"/gcc46.patch - - # fix double symbols due to double -ljemalloc - sed -i \ - -e '/^LIBS += $(JEMALLOC_LIBS)/s/^/#/' \ - xulrunner/stub/Makefile.in \ - || die - - # Enable gnomebreakpad - if use debug; then - sed -i \ - -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \ - build/unix/run-mozilla.sh \ - || die "sed failed!" - fi - - # tmp fix - sed -i \ - -e '/XPIDL_LINK =/s|$(LIBXUL_DIST)/sdk/bin|$(DEPTH)/xpcom/typelib/xpt/tools|' \ - config/config.mk \ - js/src/config/config.mk \ - || die "tmp fix failed (maybe the time to remove it)" - - # Gentoo install dirs - sed -i \ - -e 's:$(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION):$(includedir)/idl:' \ - -e 's:$(MOZ_APP_NAME)-$(MOZ_APP_VERSION):'${PN}':' \ - -e 's:$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION):'${PN}':' \ - config/autoconf.mk.in \ - || die "${MAJ_XUL_PV} sed failed!" - - # Avoid failures when nothing to remove (.pyc) - edo sed -i \ - -e 's/xargs rm/xargs rm -f/' \ - toolkit/mozapps/installer/packager.mk - - eautoreconf - - cd js/src - eautoreconf -} - -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_flag() { - mozconfig_annotate "USE-flag: $(useq $1 && echo +$1 || echo -$1)" "$2" -} - -mozconfig_use_enable() { - mozconfig_flag "$1" "$(use_enable "$@")" -} - -mozconfig_use_with() { - mozconfig_flag "$1" "$(use_with "$@")" -} - -function mozilla-app_src_configure() { - MAKEOPTS=${MAKEOPTS/--no-print-directory/} - - # Ensure that are plugins dir is enabled as default - sed -i -e "s:/usr/lib/mozilla/plugins:/usr/$(get_libdir)/nsbrowser/plugins:" \ - "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path!" - - # hack added to workaround bug 299905 on hosts with libc that doesn't - # support tls, (probably will only hit this condition with Gentoo Prefix) - tc-has-tls -l || export ac_cv_thread_keyword=no - - - #################################### - # - # Setup the initial .mozconfig - # See https://developer.mozilla.org/en/Configuring_Build_Options - # - #################################### - - cp ${MOZ_APPLICATION}/config/mozconfig .mozconfig \ - || die "cp mozconfig failed" - - #################################### - # - # CFLAGS setup and ARCH support - # - #################################### - - # Set optimization level - if use custom-optimization; then - local opt=-O2 - # Set optimization level based on CFLAGS - if [[ ${ARCH} == x86 ]]; then - if is-flag -O0; then - opt=-O0 - elif is-flag -O1; then - opt=-O1 - elif is-flag -Os; then - opt=-Os - fi - elif is-flag -O3; then - opt=-O3 - fi - mozconfig_annotate 'USE-flag: +custom-optimization' --enable-optimize=$opt - else - # Enable Mozilla's default - # It should be fine on all platform - mozconfig_annotate 'Default optimization: Mozilla' --enable-optimize - fi - - # Now strip optimization from CFLAGS so it doesn't end up in the - # compile string - filter-flags '-O*' - - # Strip over-aggressive CFLAGS - Mozilla supplies its own - # fine-tuned CFLAGS and shouldn't be interfered with.. Do this - # AFTER setting optimization above since strip-flags only allows - # -O -O1 and -O2 - strip-flags - - 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" - - if [[ "${ARCH}" == x86 && - ( $(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 - elif [[ $(gcc-major-version) -lt 4 ]]; then - append-flags -fno-stack-protector - fi - - # Go a little faster; use less RAM - append-flags "$MAKEEDIT_FLAGS" - - # Ensure we do not fail on i{3,5,7} processors that support -mavx - append-flags -mno-avx - - #################################### - # - # mozconfig setup - # - #################################### - - mozconfig_annotate 'Gentoo system' \ - --disable-installer \ - --disable-pedantic \ - --with-system-jpeg \ - --with-system-bz2 \ - --with-system-zlib \ - --disable-updater \ - --disable-system-cairo \ - --enable-system-hunspell \ - --enable-system-ffi \ - --disable-strip \ - --enable-default-toolkit=cairo-gtk2 \ - --disable-strip-libs \ - --disable-install-strip \ - --without-system-nspr \ - --without-system-nss \ - --with-system-libevent="${EPREFIX}"/usr \ - --x-includes="${EPREFIX}"/usr/include \ - --x-libraries="${EPREFIX}"/usr/$(get_libdir) \ - --with-distribution-id=org.gentoo - - mozconfig_annotate 'Gentoo defaults' \ - --enable-gio \ - --enable-single-profile \ - --disable-profilesharing \ - --disable-profilelocking - - mozconfig_annotate 'Provide and use libmozjs' --enable-shared-js - - sed -i \ - -e '/--enable-application=/d' \ - -e '/--enable-extensions=/d'\ - .mozconfig - local extensions="default" - use mozdom && extensions+=",inspector" - mozconfig_annotate 'Application defaults' \ - --enable-application=${MOZ_APPLICATION} \ - --with-default-mozilla-five-home="${MOZILLA_FIVE_HOME}" \ - --enable-extensions="${extensions}" - - mozconfig_annotate 'Basic features' \ - --enable-crypto \ - --enable-tracejit \ - --enable-pango \ - --enable-mathml \ - --enable-safe-browsing \ - --enable-storage \ - --enable-places \ - --enable-places_bookmarks - - # jemalloc won't build with older glibc - ! has_version ">=sys-libs/glibc-2.4" && mozconfig_annotate 'old glibc' --disable-jemalloc - - if [ "${MOZ_BRANDING}" = "official" ]; then - mozconfig_annotate 'Official branding' \ - --enable-official-branding - else - mozconfig_annotate 'Unofficial branding' \ - --with-branding=${MOZ_APPLICATION}/branding/${MOZ_BRANDING} - fi - - # Use system libraries - mozconfig_use_enable alsa ogg - mozconfig_use_enable alsa wave - mozconfig_use_enable dbus - mozconfig_use_enable gconf - mozconfig_use_enable ipc # +ipc, upstream default - mozconfig_use_enable libnotify - mozconfig_use_enable raw - mozconfig_use_enable startup-notification - mozconfig_use_enable system-sqlite - mozconfig_use_enable webm - mozconfig_use_with webm system-libvpx - mozconfig_use_enable wifi necko-wifi - - - # NOTE: Uses internal copy of libvpx - if use webm && ! use alsa; then - die "USE=webm needs USE=alsa" - fi - - - # Debug - if use debug; then - mozconfig_annotate 'Debug activated' \ - --disable-optimize \ - --enable-valgrind \ - --enable-debug=-ggdb \ - --enable-debug-modules=all \ - --enable-debugger-info-modules - else - mozconfig_annotate 'Debug deactivated' \ - --disable-debug \ - --disable-debug-symbols \ - --disable-tests - fi - - # omni.jar breaks ff on xr - # Bug 60668: Galeon doesn't build without oji enabled, so enable it - # regardless of java setting.--enable-oji - mozconfig_annotate 'Broken' \ - --disable-crashreporter \ - --enable-chrome-format=jar \ - --enable-oji - - mozconfig_annotate 'Deprecated' \ - --disable-gnomeui \ - --disable-gnomevfs - - - # Currently --enable-elf-dynstr-gc only works for x86 and ppc, - # thanks to Jason Wever <weeve@gentoo.org> for the fix. - # -- This breaks now on ppc, no idea why -# if use x86 || use ppc && [[ ${enable_optimize} != -O0 ]]; then - if use x86 && [[ ${enable_optimize} != -O0 ]]; then - mozconfig_annotate "${ARCH} optimized build" --enable-elf-dynstr-gc - fi -# fi - - 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 ' %-60s %s\n' "${opt}" "${reason:-mozilla.org default}" - done - echo '==========================================================' - echo - - CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" PYTHON="$(PYTHON)" econf "$@" -} - -function mozilla-app_src_compile() { - emake tier_app_dirs=xulrunner || die "emake failed" -} - -function mozilla-app_src_install() { - emake DESTDIR="${D}" install || die "emake install failed" - - local prefdir="${ED}/${MOZILLA_FIVE_HOME}/defaults/pref" - [[ -d "${prefdir}erences" ]] && prefdir+="erences" - cp "${FILESDIR}"/default-prefs.js \ - "${prefdir}/all-gentoo.js" || \ - die "failed to cp default-prefs.js" - - local size branding_path icon - branding_path="${S}"/${MOZ_APPLICATION}/branding/${MOZ_BRANDING} - source "${branding_path}"/configure.sh - iconsname=default - case "${MOZ_APPLICATION}" in - mail) iconsname=mailicon ;; - esac - targeticonname="${MOZ_APP_DISPLAYNAME,,}" - - # Install icons and .desktop for menu entry - for size in 16 22 24 32 256; do - insinto "/usr/share/icons/hicolor/${size}x${size}/apps" - [ -f "${branding_path}/${iconsname}${size}.png" ] && { - newins "${branding_path}/${iconsname}${size}.png" "${targeticonname}.png" || die - } - done - - # The 128x128 icon has a different name - insinto "/usr/share/icons/hicolor/128x128/apps" - [ -f "${branding_path}/mozicon128.png" ] && { - newins "${branding_path}/mozicon128.png" "${targeticonname}.png" || die - } - - # Install a 48x48 icon into /usr/share/pixmaps for legacy DEs - newicon "${branding_path}/content/icon48.png" "${targeticonname}.png" || die - newmenu "${FILESDIR}/${PN}.desktop" "${PN}.desktop" || die - - sed -i -e "s:@NAME@:${MOZ_APP_DISPLAYNAME}:" -e "s:@ICON@:${targeticonname}:" \ - "${ED}/usr/share/applications/${PN}.desktop" || die - - # Add StartupNotify=true bug 237317 - if use startup-notification ; then - echo "StartupNotify=true" >> "${ED}"/usr/share/applications/${PN}.desktop - fi - - pax-mark m "${ED}"/${MOZILLA_FIVE_HOME}/plugin-container - pax-mark m "${ED}"/${MOZILLA_FIVE_HOME}/${PN} - - # Plugins dir - dosym ../nsbrowser/plugins "${MOZILLA_FIVE_HOME}"/plugins \ - || die "failed to symlink" -} - -## -## eclass exported function -## pkg_postinst -## -function mozilla-app_pkg_postinst { - ewarn "All the packages built against ${PN} won't compile," - ewarn "any package that fails to build warrants a bug report." - - inherit fdo-mime - # Update mimedb for the new .desktop file - fdo-mime_desktop_database_update - - ewarn "This is highly experimental DO NOT file a bug report" - ewarn "on Gentoo's bugzilla, please visit the Mozilla one instead" - - einfo "Don't forget to sync with meta-sync/mozilla-repositories" -} |