Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Firefox 9.0beta1
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
robnotts
Guru
Guru


Joined: 15 Mar 2004
Posts: 405
Location: Nottingham, UK

PostPosted: Tue Nov 15, 2011 1:38 pm    Post subject: Firefox 9.0beta1 Reply with quote

Using a modified ebuild from the zuigana overlay, along with a modified patch from mozilla's bugzilla, am happily up and running firefox 9. Probably only for the brave, but works well. You need to extract some files from the firefox-8.0-patches file to go with it.

Code:
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/www-client/firefox/firefox-6.0.ebuild,v 1.6 2011/08/28 01:03:44 anarchy Exp $

EAPI="3"
VIRTUALX_REQUIRED="pgo"
WANT_AUTOCONF="2.1"

inherit flag-o-matic toolchain-funcs eutils gnome2-utils mozconfig-3 multilib pax-utils fdo-mime autotools mozextension versionator python virtualx

MAJ_FF_PV="$(get_version_component_range 1-2)" # 3.5, 3.6, 4.0, etc.
FF_PV="${PV/_alpha/a}" # Handle alpha for SRC_URI
FF_PV="${FF_PV/_beta/b}" # Handle beta for SRC_URI
FF_PV="${FF_PV/_rc/rc}" # Handle rc for SRC_URI
CHANGESET="e56ecd8b3a68"
PATCH="${PN}-8.0-patches-0.2"

DESCRIPTION="Firefox Web Browser"
HOMEPAGE="http://www.mozilla.com/firefox"

KEYWORDS="~amd64 ~arm ~ppc ~x86 ~amd64-linux ~x86-linux"
SLOT="0"
LICENSE="|| ( MPL-1.1 GPL-2 LGPL-2.1 )"
IUSE="bindist +crashreporter +methodjit +ipc pgo system-sqlite +webm"

FTP_URI="ftp://ftp.mozilla.org/pub/firefox/releases/"
# More URIs appended below...
SRC_URI="http://dev.gentoo.org/~anarchy/mozilla/patchsets/${PATCH}.tar.xz"

ASM_DEPEND=">=dev-lang/yasm-1.1"

# Mesa 7.10 needed for WebGL + bugfixes
RDEPEND="
        >=sys-devel/binutils-2.16.1                                                                                               
        >=dev-libs/nss-3.13.1                                                                                                     
        >=dev-libs/nspr-4.8.8                                                                                                     
        >=dev-libs/glib-2.26:2                                                                                                     
        >=media-libs/mesa-7.10                                                                                                     
        media-libs/libpng[apng]                                                                                                   
        dev-libs/libffi                                                                                                           
        system-sqlite? ( >=dev-db/sqlite-3.7.4[fts3,secure-delete,unlock-notify,debug=] )                                         
        webm? ( media-libs/libvpx                                                                                                 
                media-libs/alsa-lib )                                                                                             
        crashreporter? ( net-misc/curl )"                                                                                         
# We don't use PYTHON_DEPEND/PYTHON_USE_WITH for some silly reason                                                                 
DEPEND="${RDEPEND}                                                                                                                 
        dev-util/pkgconfig                                                                                                         
        pgo? (                                                                                                                     
                =dev-lang/python-2*[sqlite]                                                                                       
                >=sys-devel/gcc-4.5 )                                                                                             
        webm? ( x86? ( ${ASM_DEPEND} )                                                                                             
                amd64? ( ${ASM_DEPEND} ) )"                                                                                       
                                                                                                                                   
# No source releases for alpha|beta                                                                                               
if [[ ${PV} =~ alpha ]]; then                                                                                                     
        SRC_URI="${SRC_URI}                                                                                                       
                http://dev.gentoo.org/~anarchy/mozilla/firefox/firefox-${FF_PV}_${CHANGESET}.source.tar.bz2"                       
        S="${WORKDIR}/mozilla-central"
elif [[ ${PV} =~ beta ]]; then
        SRC_URI="${SRC_URI}
                ${FTP_URI}/${FF_PV}/source/firefox-${FF_PV}.source.tar.bz2"
        S="${WORKDIR}/mozilla-beta"
else
        SRC_URI="${SRC_URI}
                ${FTP_URI}/${FF_PV}/source/firefox-${FF_PV}.source.tar.bz2"
        S="${WORKDIR}/mozilla-release"
fi

# No language packs for alphas
if ! [[ ${PV} =~ alpha|beta ]]; then
        # This list can be updated with scripts/get_langs.sh from mozilla overlay
        LANGS=(af ak ar ast be bg bn-BD bn-IN br bs ca cs cy da de el en en-GB en-US
        en-ZA eo es-AR es-CL es-ES es-MX et eu fa fi fr fy-NL ga-IE gd gl gu-IN he
        hi-IN hr hu hy-AM id is it ja kk kn ko ku lg lt lv mai mk ml mr nb-NO nl
        nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta ta-LK
        te th tr uk vi zh-CN zh-TW zu)

        for X in "${LANGS[@]}" ; do
                # en and en_US are handled internally
                if [[ ${X} != en ]] && [[ ${X} != en-US ]]; then
                        SRC_URI="${SRC_URI}
                                linguas_${X/-/_}? ( ${FTP_URI}/${FF_PV}/linux-i686/xpi/${X}.xpi -> ${P}-${X}.xpi )"
                fi
                IUSE="${IUSE} linguas_${X/-/_}"
                # Install all the specific locale xpis if there's no generic locale xpi
                # Example: there's no pt.xpi, so install all pt-*.xpi
                if ! has ${X%%-*} "${LANGS[@]}"; then
                        SRC_URI="${SRC_URI}
                                linguas_${X%%-*}? ( ${FTP_URI}/${FF_PV}/linux-i686/xpi/${X}.xpi -> ${P}-${X}.xpi )"
                        IUSE="${IUSE} linguas_${X%%-*}"
                fi
        done
fi

QA_PRESTRIPPED="usr/$(get_libdir)/${PN}/firefox"

# TODO: Move all the linguas crap to an eclass
linguas() {
        # Generate the list of language packs called "linguas"
        # This list is used to install the xpi language packs
        local LINGUA
        for LINGUA in ${LINGUAS}; do
                if has ${LINGUA} en en_US; then
                        # For mozilla products, en and en_US are handled internally
                        continue
                # If this language is supported by ${P},
                elif has ${LINGUA} "${LANGS[@]//-/_}"; then
                        # Add the language to linguas, if it isn't already there
                        has ${LINGUA//_/-} "${linguas[@]}" || linguas+=(${LINGUA//_/-})
                        continue
                # For each short LINGUA that isn't in LANGS,
                # add *all* long LANGS to the linguas list
                elif ! has ${LINGUA%%-*} "${LANGS[@]}"; then
                        for LANG in "${LANGS[@]}"; do
                                if [[ ${LANG} == ${LINGUA}-* ]]; then
                                        has ${LANG} "${linguas[@]}" || linguas+=(${LANG})
                                        continue 2
                                fi
                        done
                fi
                ewarn "Sorry, but ${P} does not support the ${LINGUA} locale"
        done
}

pkg_setup() {
        moz_pkgsetup

        # Avoid PGO profiling problems due to enviroment leakage
        # These should *always* be cleaned up anyway
        unset DBUS_SESSION_BUS_ADDRESS \
                DISPLAY \
                ORBIT_SOCKETDIR \
                SESSION_MANAGER \
                XDG_SESSION_COOKIE \
                XAUTHORITY

        if ! use bindist; then
                einfo
                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"
                elog "You can disable it by emerging ${PN} _with_ the bindist USE-flag"
        fi

        if ! use methodjit; then
                einfo
                ewarn "You are disabling the method-based JIT in JägerMonkey."
                ewarn "This will greatly slowdown JavaScript in ${PN}!"
        fi

        if use pgo; then
                einfo
                ewarn "You will do a double build for profile guided optimization."
                ewarn "This will result in your build taking at least twice as long as before."
        fi
}

src_unpack() {
        unpack ${A}

        linguas
        for X in "${linguas[@]}"; do
                # FIXME: Add support for unpacking xpis to portage
                xpi_unpack "${P}-${X}.xpi"
        done
}

src_prepare() {
        # Allow user to apply any additional patches without modifing ebuild
        epatch "${FILESDIR}"/v06-682677.patch
#        epatch "${FILESDIR}"/1000-config_rules_install_dist_files.patch
        epatch "${FILESDIR}"/2000-firefox_gentoo_install_dirs.patch
        epatch "${FILESDIR}"/2001-gentoo_no_app_updates.patch
        epatch "${FILESDIR}"/2002_fix-preferences-gentoo.patch
        epatch_user

        # Enable gnomebreakpad
        if use debug ; then
                sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \
                        "${S}"/build/unix/run-mozilla.sh || die "sed failed!"
        fi

        # Disable gnomevfs extension
        sed -i -e "s:gnomevfs::" "${S}/"browser/confvars.sh \
                -e "s:gnomevfs::" "${S}/"xulrunner/confvars.sh \
                || die "Failed to remove gnomevfs extension"

        # 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!"

        # Fix sandbox violations during make clean, bug 372817
        sed -e "s:\(/no-such-file\):${T}\1:g" \
                -i "${S}"/config/rules.mk \
                -i "${S}"/js/src/config/rules.mk \
                -i "${S}"/nsprpub/configure{.in,} \
                || die

        #Fix compilation with curl-7.21.7 bug 376027
        sed -e '/#include <curl\/types.h>/d'  \
                -i "${S}"/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc \
                -i "${S}"/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.cc \
                -i "${S}"/config/system-headers \
                -i "${S}"/js/src/config/system-headers || die "Sed failed"

        eautoreconf

        cd js/src
        eautoreconf
}

src_configure() {
        MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
        MEXTENSIONS="default"

        ####################################
        #
        # mozconfig, CFLAGS and CXXFLAGS setup
        #
        ####################################

        mozconfig_init
        mozconfig_config

        # It doesn't compile on alpha without this LDFLAGS
        use alpha && append-ldflags "-Wl,--no-relax"

        mozconfig_annotate '' --prefix="${EPREFIX}"/usr
        mozconfig_annotate '' --libdir="${EPREFIX}"/usr/$(get_libdir)
        # mozconfig_annotate '' --target="${target}"
        mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}"
        mozconfig_annotate '' --disable-gconf
        mozconfig_annotate '' --disable-mailnews
        mozconfig_annotate '' --enable-canvas
        mozconfig_annotate '' --enable-safe-browsing
        mozconfig_annotate '' --with-system-png

        # Other ff-specific settings
        mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME}

        mozconfig_use_enable system-sqlite
        mozconfig_use_enable methodjit

        # 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
        fi

        # Finalize and report settings
        mozconfig_final

        if [[ $(gcc-major-version) -lt 4 ]]; then
                append-cxxflags -fno-stack-protector
        elif [[ $(gcc-major-version) -gt 4 || $(gcc-minor-version) -gt 3 ]]; then
                if use amd64 || use x86; then
                        append-flags -mno-avx
                fi
        fi
}

src_compile() {
        if use pgo; then
                addpredict /root
                addpredict /etc/gconf
                # Firefox tries to dri stuff when it's run, see bug 380283
                shopt -s nullglob
                local cards=$(echo -n /dev/{dri,ati}/card* /dev/nvidiactl* | sed 's/ /:/g')
                shopt -u nullglob
                test -n "${cards}" && addpredict "${cards}"

                CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" \
                MOZ_MAKE_FLAGS="${MAKEOPTS}" \
                Xemake -f client.mk profiledbuild || die "Xemake failed"
        else
                CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" \
                MOZ_MAKE_FLAGS="${MAKEOPTS}" \
                emake -f client.mk || die "emake failed"
        fi

}

src_install() {
        MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"

        # MOZ_BUILD_ROOT, and hence OBJ_DIR change depending on arch, compiler, pgo, etc.
        local obj_dir="$(echo */config.log)"
        obj_dir="${obj_dir%/*}"
        cd "${S}/${obj_dir}"

        # Add our default prefs for firefox + xulrunner
        cp "${FILESDIR}"/gentoo-default-prefs.js \
                "${S}/${obj_dir}/dist/bin/defaults/pref/all-gentoo.js" || die

        MOZ_MAKE_FLAGS="${MAKEOPTS}" \
        emake DESTDIR="${D}" install || die "emake install failed"

        linguas
        for X in "${linguas[@]}"; do
                xpi_install "${WORKDIR}/${P}-${X}"
        done

        local size sizes icon_path icon name
        if use bindist; then
                sizes="16 32 48"
                icon_path="${S}/browser/branding/unofficial"
                # Firefox's new rapid release cycle means no more codenames
                # Let's just stick with this one...
                icon="tumucumaque"
                name="Tumucumaque"
        else
                sizes="16 22 24 32 256"
                icon_path="${S}/browser/branding/official"
                icon="${PN}"
                name="Mozilla Firefox"
        fi

        # Install icons and .desktop for menu entry
        for size in ${sizes}; do
                insinto "/usr/share/icons/hicolor/${size}x${size}/apps"
                newins "${icon_path}/default${size}.png" "${icon}.png" || die
        done
        # The 128x128 icon has a different name
        insinto "/usr/share/icons/hicolor/128x128/apps"
        newins "${icon_path}/mozicon128.png" "${icon}.png" || die
        # Install a 48x48 icon into /usr/share/pixmaps for legacy DEs
        newicon "${icon_path}/content/icon48.png" "${icon}.png" || die
        newmenu "${FILESDIR}/icon/${PN}.desktop" "${PN}.desktop" || die
        sed -i -e "s:@NAME@:${name}:" -e "s:@ICON@:${icon}:" \
                "${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}/firefox-bin
        pax-mark m "${ED}"/${MOZILLA_FIVE_HOME}/plugin-container

        # Plugins dir
        dosym ../nsbrowser/plugins "${MOZILLA_FIVE_HOME}"/plugins \
                || die "failed to symlink"

        # very ugly hack to make firefox not sigbus on sparc
        # FIXME: is this still needed??
        use sparc && { sed -e 's/Firefox/FirefoxGentoo/g' \
                                         -i "${ED}/${MOZILLA_FIVE_HOME}/application.ini" || \
                                         die "sparc sed failed"; }
}

pkg_preinst() {
        gnome2_icon_savelist
}

pkg_postinst() {
        # Update mimedb for the new .desktop file
        fdo-mime_desktop_database_update
        gnome2_icon_cache_update
}

pkg_postrm() {
        gnome2_icon_cache_update
}


Code:
gentoo-acerPC ~ # cat /usr/portage/local/www-client/firefox/files/v06-682677.patch
diff --git a/image/decoders/nsICODecoder.cpp b/image/decoders/nsICODecoder.cpp
--- a/modules/libpr0n/decoders/nsICODecoder.cpp 2011-10-20 09:32:27.000000000 -0400
+++ b/modules/libpr0n/decoders/nsICODecoder.cpp 2011-11-03 20:03:47.000000000 -0400
@@ -336,18 +336,17 @@ nsICODecoder::WriteInternal(const char*
       return;
     }
     mPos += aCount;
     aBuffer += aCount;
     aCount = 0;
 
     // Raymond Chen says that 32bpp only are valid PNG ICOs
     // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx
-    if (static_cast<nsPNGDecoder*>(mContainedDecoder.get())->HasValidInfo() &&
-        static_cast<nsPNGDecoder*>(mContainedDecoder.get())->GetPixelDepth() != 32) {
+    if (!static_cast<nsPNGDecoder*>(mContainedDecoder.get())->IsValidICO()) {
       PostDataError();
     }
     return;
   }
 
   // We've processed all of the icon dir entries and are within the
   // bitmap info size
   if (!mIsPNG && mCurrIcon == mNumIcons && mPos >= mImageOffset &&
diff --git a/image/decoders/nsPNGDecoder.h b/image/decoders/nsPNGDecoder.h
--- a/modules/libpr0n/decoders/nsPNGDecoder.h   2011-10-20 09:32:27.000000000 -0400
+++ b/modules/libpr0n/decoders/nsPNGDecoder.h   2011-11-03 20:10:07.000000000 -0400
@@ -68,29 +68,35 @@ public:
 
   void CreateFrame(png_uint_32 x_offset, png_uint_32 y_offset,
                    PRInt32 width, PRInt32 height,
                    gfxASurface::gfxImageFormat format);
   void SetAnimFrameInfo();
 
   void EndImageFrame();
 
-  // Checks if the info header contains valid information
-  bool HasValidInfo() const
+  // Check if PNG is valid ICO (32bpp RGBA)
+  // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx
+  bool IsValidICO() const
   {
-    return mInfo && mInfo->valid;
-  }
-
-  // Obtain the pixel depth if available or 0 otherwise
-  PRInt32 GetPixelDepth() const
-  {
-    if (!mInfo) {
-      return 0;
+    png_uint_32
+        png_width,  // Unused
+        png_height; // Unused
+
+    int png_bit_depth,
+        png_color_type;
+
+    if (png_get_IHDR(mPNG, mInfo, &png_width, &png_height, &png_bit_depth,
+                     &png_color_type, NULL, NULL, NULL)) {
+
+      return (png_color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
+              png_bit_depth == 8);
+    } else {
+      return false;
     }
-    return mInfo->pixel_depth;
   }
 
 public:
   png_structp mPNG;
   png_infop mInfo;
   nsIntRect mFrameRect;
   PRUint8 *mCMSLine;
   PRUint8 *interlacebuf;


Code:
gentoo-acerPC ~ # ls /usr/portage/local/www-client/firefox/files/
1000-config_rules_install_dist_files.patch                   5010_only_add_-DEANBLE_JIT-1_to_CXXFLAGS.patch
1001-fix_jemalloc_vs_aslr.patch                              5013_dont_enable_YARR_JIT_on_mips.patch
2000-firefox_gentoo_install_dirs.patch                       5015_add_mips_hppa_ia64_s390_sparch_defines_in_ipc.patch
2001-gentoo_no_app_updates.patch                             5016_allow_armv4t_in_nanojit.patch
2002_fix-preferences-gentoo.patch                            firefox.1
2003_fix_system_hunspell_dict_detection.patch                firefox-default-prefs.js
5000_arm-bug-644136.patch                                    fix-preferences-gentoo.patch
5001_fix-title-backspace.patch                               gentoo-default-prefs.js
5002_allow_locked_prefs.patch                                icon
5003_avoid_spurious_run_items_in_application_handlers.patch  v06-682677.patch
5004_properly_launch_applications_set_in_home.patch          xulrunner-1.9.2-gtk+-2.21.patch

_________________
---

Gentoo Phenom][ X4 955 on AMD790 + Geforce 220GT 8GB/1.75TB (Desktop)
+ MythTV (3xFreeview,1xFreesat HD) on 1080p
Gentoo Turion64 X2 Geforce 6150 2GB/120GB (Laptop)
Back to top
View user's profile Send private message
audiodef
Watchman
Watchman


Joined: 06 Jul 2005
Posts: 6313
Location: /usr/lib64/lv2

PostPosted: Tue Nov 15, 2011 2:15 pm    Post subject: Reply with quote

What does 9 have over the latest stable (or heck, even ~arch) version in Portage?
_________________
Gentoo Studio: A Gentoo-based, professional digital audio workstation OS.
Back to top
View user's profile Send private message
robnotts
Guru
Guru


Joined: 15 Mar 2004
Posts: 405
Location: Nottingham, UK

PostPosted: Tue Nov 15, 2011 2:22 pm    Post subject: Reply with quote

Apparently a much faster javascript engine. I was just bored and playing!
_________________
---

Gentoo Phenom][ X4 955 on AMD790 + Geforce 220GT 8GB/1.75TB (Desktop)
+ MythTV (3xFreeview,1xFreesat HD) on 1080p
Gentoo Turion64 X2 Geforce 6150 2GB/120GB (Laptop)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum