Page 1 of 1

Firebird with Firefly 最新的 patch

Posted: Tue Dec 09, 2003 11:00 am
by Skyer0130
Firebird with Firefly 1208 patch

讓 Mozilla 能正確解讀中文字型

快照在相簿的最後一張..
http://tw.photo.yahoo.com/jackyci.tw/ab2

Patch 位置
http://firefly.idv.tw/setfont-xft/patch ... 1111.patch
http://firefly.idv.tw/setfont-xft/patch ... 1208.patch

將上面 patch 抓至
/usr/portage/net-www/mozilla-firebird/files


mozilla-firebird-0.7.ebuild

Code: Select all

# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-x86/net-www/mozilla-firebird/mozilla-firebird-0.7.ebuild,v 1.11 2003/12/05 20:01:56 agriffis Exp $

inherit makeedit flag-o-matic gcc nsplugins eutils

S=${WORKDIR}/mozilla

DESCRIPTION="The Mozilla Firebird Web Browser"
HOMEPAGE="http://www.mozilla.org/projects/firebird/"
SRC_URI="http://ftp.mozilla.org/pub/firebird/releases/${PV}/MozillaFirebird-source-${PV}.tar.gz"

KEYWORDS="x86 ~ppc ~sparc alpha ~amd64 ia64"
SLOT="0"
LICENSE="MPL-1.1 | NPL-1.1"
IUSE="java gtk2 ipv6 gnome moznoxft"

RDEPEND="virtual/x11
    >=dev-libs/libIDL-0.8.0
    >=gnome-base/ORBit-0.5.10-r1
    virtual/xft
    >=sys-libs/zlib-1.1.4
    >=media-libs/jpeg-6b
    >=media-libs/libmng-1.0.0
    >=media-libs/libpng-1.2.1
    >=sys-apps/portage-2.0.36
    dev-libs/expat
    app-arch/zip
    app-arch/unzip
    ( gtk2? >=x11-libs/gtk+-2.1.1 :
        =x11-libs/gtk+-1.2* )
    java?  ( virtual/jre )
    !net-www/mozilla-firebird-bin
    !net-www/mozilla-firebird-cvs"

DEPEND="${RDEPEND}
    virtual/glibc
    dev-lang/perl
    java? ( >=dev-java/java-config-0.2.0 )"

# needed by src_compile() and src_install()
export MOZ_PHOENIX=1
export MOZ_CALENDAR=0
export MOZ_ENABLE_XFT=1

src_unpack() {
    unpack MozillaFirebird-source-${PV}.tar.gz

    epatch ${FILESDIR}/mozilla-1.5-add_ft2build_header-20031111.patch
    epatch ${FILESDIR}/mozilla-1.5-xft_cjkfamilyname-20031208.patch

    # alpha stubs patch from lfs project.
    # <taviso@gentoo.org> (26 Jun 2003)
    use alpha && epatch ${FILESDIR}/mozilla-1.3-alpha-stubs.patch
    use amd64 && epatch ${FILESDIR}/mozilla-firebird-amd64.patch
}

src_compile() {
    local enable_optimize=''
    local myconf="--disable-composer \
        --with-x \
        --with-system-jpeg \
        --with-system-zlib \
        --with-system-png \
        --with-system-mng \
        --disable-mailnews \
        --disable-calendar \
        --disable-pedantic \
        --disable-svg \
        --enable-mathml \
        --without-system-nspr \
        --enable-nspr-autoconf \
        --enable-xsl \
        --enable-crypto \
        --enable-xinerama=no \
        --with-java-supplement \
        --with-pthreads \
        --with-default-mozilla-five-home=/usr/lib/MozillaFirebird \
        --with-user-appdir=.phoenix \
        --disable-jsd \
        --disable-accessibility \
        --disable-tests \
        --disable-debug \
        --disable-dtd-debug \
        --disable-logging \
        --enable-reorder \
        --enable-strip \
        --enable-strip-libs \
        --enable-cpp-rtti \
        --enable-xterm-updates \
        --disable-ldap \
        --disable-toolkit-qt \
        --disable-toolkit-xlib \
        --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help"

    if [ -n "`use gtk2`" ] ; then
        myconf="${myconf} --enable-toolkit-gtk2 \
                            --enable-default-toolkit=gtk2 \
                            --disable-toolkit-gtk"
    else
        myconf="${myconf} --enable-toolkit-gtk \
                            --enable-default-toolkit=gtk \
                            --disable-toolkit-gtk2"
    fi

    if [ -z "`use moznoxft`" ]
    then
        if [ -n "`use gtk2`" ]
        then
            local pango_version=""

            # We need Xft2.0 localy installed
            if (test -x /usr/bin/pkg-config) && (pkg-config xft)
            then
                pango_version="`pkg-config --modversion pango | cut -d. -f1,2`"
                pango_version="`echo ${pango_version} | sed -e 's:\.::g'`"

                # We also need pango-1.1, else Mozilla links to both
                # Xft1.1 *and* Xft2.0, and segfault...
                if [ "${pango_version}" -gt "10" ]
                then
                    einfo "Building with Xft2.0 (Gtk+-2.0) support!"
                    myconf="${myconf} --enable-xft --disable-freetype2"
                    touch ${WORKDIR}/.xft
                else
                    ewarn "Building without Xft2.0 support!"
                    myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
                fi
            else
                ewarn "Building without Xft2.0 support!"
                myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
            fi
        else
            einfo "Building with Xft2.0 (Gtk+-1.0) support!"
            myconf="${myconf} --enable-xft --disable-freetype2"
            touch ${WORKDIR}/.xft
        fi
    else
        myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
    fi

    if [ -n "`use ipv6`" ] ; then
        myconf="${myconf} --enable-ipv6"
    fi

    # Per-architecture flags
    case "${ARCH}" in
        alpha|amd64|ia64)
            # 64-bit needs -fPIC
            append-flags -fPIC
            ;;
        sparc)
            # Added to get MozillaFirebird to compile on sparc
            replace-sparc64-flags
            ;;
        ppc)
            # Fix to avoid gcc-3.3.x miscompilation issues.
            if [ "$(gcc-major-version).$(gcc-minor-version)" = "3.3" ]; then
                append-flags -fno-strict-aliasing
            fi
            ;;
    esac

    # 32-bit vs. 64-bit optimization
    case "${ARCH}" in
        alpha|amd64|ia64)
            # Allow -O0 or -O1: Anything more than this causes
            # segfaults on startup on 64-bit (bug 33767)
            enable_optimize=$(echo "$CFLAGS" | sed 's/.*\(-O[01]\?\).*/\1/p')
            enable_optimize=${enable_optimize:--O1}
            filter-flags -O -O?
            ;;
        *)
            # -O2 and below allowed on 32-bit
            enable_optimize=$(echo "$CFLAGS" | sed 's/.*\(-O[012]\?\).*/\1/p')
            enable_optimize=${enable_optimize:--O2}
            filter-flags -O -O?
            ;;
    esac

    # Crashes on start when compiled with -fomit-frame-pointer
    filter-flags -fomit-frame-pointer -mpowerpc-gfxopt
    filter-flags -ffast-math
    append-flags -s -fforce-addr

    if [ "$(gcc-major-version)" -eq "3" ]; then
        # Currently gcc-3.2 or older do not work well if we specify "-march"
        # and other optimizations for pentium4.
        if [ "$(gcc-minor-version)" -lt "3" ]; then
            replace-flags -march=pentium4 -march=pentium3
            filter-flags -msse2
        fi

        # Enable us to use flash, etc plugins compiled with gcc-2.95.3
        if [ "${ARCH}" = "x86" ]; then
            myconf="${myconf} --enable-old-abi-compat-wrappers"
        fi
    fi

    econf --enable-optimize="${enable_optimize}" ${myconf} || die

    edit_makefiles
    emake MOZ_PHOENIX=1 || die
}

src_install() {
    # Plugin path creation
    PLUGIN_DIR="/usr/lib/nsbrowser/plugins"
    dodir ${PLUGIN_DIR}

    dodir /usr/lib
    dodir /usr/lib/MozillaFirebird
    cp -RL --no-preserve=links ${S}/dist/bin/* ${D}/usr/lib/MozillaFirebird

    #fix permissions
    chown -R root.root ${D}/usr/lib/MozillaFirebird

    # Plugin path setup (rescuing the existent plugins)
    src_mv_plugins /usr/lib/MozillaFirebird/plugins

    dobin ${FILESDIR}/MozillaFirebird

    # Fix icons to look the same everywhere
    insinto /usr/lib/MozillaFirebird/icons
    doins ${S}/build/package/rpm/SOURCES/mozicon16.xpm
    doins ${S}/build/package/rpm/SOURCES/mozicon50.xpm

    # Install icon and .desktop for menu entry
    if [ "`use gnome`" ]
    then
        insinto /usr/share/pixmaps
        doins ${S}/build/package/rpm/SOURCES/mozilla-icon.png

        # Fix comment of menu entry
        cd ${S}/build/package/rpm/SOURCES
        cp mozilla.desktop mozillafirebird.desktop
        perl -pi -e 's:Name=Mozilla:Name=Mozilla Firebird:' mozillafirebird.desktop
        perl -pi -e 's:Comment=Mozilla:Comment=Mozilla Firebird Web Browser:' mozillafirebird.desktop
        perl -pi -e 's:Exec=/usr/bin/mozilla:Exec=/usr/bin/MozillaFirebird:' mozillafirebird.desktop
        cd ${S}
        insinto /usr/share/gnome/apps/Internet
        doins ${S}/build/package/rpm/SOURCES/mozillafirebird.desktop
    fi
}

pkg_preinst() {
    # Remove the old plugins dir
    pkg_mv_plugins /usr/lib/MozillaFirebird/plugins
}

pkg_postinst() {

    export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/MozillaFirebird"

    # Needed to update the run time bindings for REGXPCOM
    # (do not remove next line!)
    env-update
    # Register Components and Chrome
    einfo "Registering Components and Chrome..."
    LD_LIBRARY_PATH=/usr/lib/MozillaFirebird ${MOZILLA_FIVE_HOME}/regxpcom
    LD_LIBRARY_PATH=/usr/lib/MozillaFirebird ${MOZILLA_FIVE_HOME}/regchrome
    # Fix permissions of component registry
    chmod 0644 ${MOZILLA_FIVE_HOME}/components/compreg.dat
    # Fix directory permissions
    find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 0755 {} \; || :
    # Fix permissions on chrome files
    find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :
}

Posted: Tue Dec 09, 2003 4:05 pm
by scsi
我也來貼一下mozilla的 ebuild

/usr/portage/net-www/mozilla/

把同樣的patch放到files的目錄裡

mozilla-1.5-r1.ebuild

Code: Select all

# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.5.ebuild,v 1.7 2003/10/20 09:25:53 brad Exp $

IUSE="java crypt ipv6 gtk2 ssl ldap gnome debug"
# Internal USE flags that I do not really want to advertise ...
IUSE="${IUSE} mozcalendar mozaccess mozxmlterm"
IUSE="${IUSE} moznoirc moznomail moznocompose moznoxft"

inherit flag-o-matic gcc eutils nsplugins

# Strip over-aggressive CFLAGS - Mozilla supplies its own fine-tuned CFLAGS and shouldn't be interfered with
strip-flags

# Strip flags which create more documented instability
filter-flags "-fomit-frame-pointer"
filter-flags -ffast-math
append-flags -s -fforce-addr

# Sparc support ...
replace-sparc64-flags

#fix to avoid gcc-3.3.x micompilation issues.
if [ "`use ppc`" -a "$(gcc-major-version)" -eq "3" -a "$(gcc-minor-version)" -eq "3" ]
then

append-flags -fno-strict-aliasing

fi

# We set -O in ./configure to -O1, as -O2 cause crashes on startup ... (bug #13287)

if [ "${ARCH}" = "amd64" ]
then
	# Anything more than this causes segfaults on startup on amd64
	export CFLAGS="-Wall -O -fPIC -pipe"
	export CXXFLAGS=${CFLAGS}
else
	export CFLAGS="${CFLAGS//-O?}"
	export CXXFLAGS="${CFLAGS//-O?}"
fi

EMVER="0.76.7"
IPCVER="1.0.4"

PATCH_VER="1.0"

# handle _rc versions
MY_PV1="${PV/_}"
MY_PV2="${MY_PV1/eta}"
S="${WORKDIR}/mozilla"
DESCRIPTION="The Mozilla Web Browser"
SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/${PN}${MY_PV2}/src/${PN}-source-${MY_PV2}.tar.bz2
	crypt? ( http://downloads.mozdev.org/enigmail/src/enigmail-${EMVER}.tar.gz
			 http://downloads.mozdev.org/enigmail/src/ipc-${IPCVER}.tar.gz )"
#	mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
HOMEPAGE="http://www.mozilla.org"

KEYWORDS="x86 ~ppc ~sparc ~alpha amd64"
SLOT="0"
LICENSE="MPL-1.1 NPL-1.1"

RDEPEND=">=x11-base/xfree-4.2.0-r11
	>=dev-libs/libIDL-0.8.0
	>=sys-libs/zlib-1.1.4
	>=media-libs/fontconfig-2.1
	virtual/xft
	>=media-libs/jpeg-6b
	>=media-libs/libpng-1.2.1
	>=sys-apps/portage-2.0.14
	dev-libs/expat
	app-arch/zip
	app-arch/unzip
	( gtk2? >=x11-libs/gtk+-2.2.0 :
	        =x11-libs/gtk+-1.2* )
	( gtk2? >=dev-libs/glib-2.2.0 :
	        =dev-libs/glib-1.2* )
	gtk2?  ( >=x11-libs/pango-1.2.1 )
	!gtk2? ( >=gnome-base/ORBit-0.5.10-r1 )
	java?  ( virtual/jre )
	crypt? ( >=app-crypt/gnupg-1.2.1 )"

DEPEND="${RDEPEND}
	virtual/x11
	dev-util/pkgconfig
	dev-lang/perl
	java? ( >=dev-java/java-config-0.2.0 )"


moz_setup() {

	# Set MAKEOPTS to have proper -j? option ..
	get_number_of_jobs
	# This should enable parallel builds, I hope
	export MAKE="emake"

	# needed by src_compile() and src_install()
	export MOZILLA_OFFICIAL=1
	export BUILD_OFFICIAL=1

	# make sure the nss module gets build (for NSS support)
	if [ -n "`use ssl`" ]
	then
		export MOZ_PSM="1"
	fi

}

src_unpack() {

	moz_setup

	unpack ${A}

	cd ${S}

	if [ "$(gcc-major-version)" -eq "3" ]
	then
		# ABI Patch for alpha/xpcom for gcc-3.x
		if [ "${ARCH}" = "alpha" ]
		then
			cd ${S}; epatch ${FILESDIR}/${PN}-alpha-xpcom-subs-fix.patch
		fi
		if [ "${ARCH}" = "amd64" ]
		then
			cd ${S}; epatch ${FILESDIR}/${PN}-1.4-amd64.patch
		fi
	fi

	# patch mozilla-1.5-xft_cjkfamilyname-20031021.patch
	cd ${S}
	epatch  ${FILESDIR}/mozilla-1.5-xft_cjkfamilyname-20031208.patch
	epatch  ${FILESDIR}/mozilla-1.5-add_ft2build_header-20031111.patch
	cd -

	epatch ${FILESDIR}/1.2/${PN}-1.2b-default-plugin-less-annoying.patch.bz2
	epatch ${FILESDIR}/1.2/${PN}-1.2b-over-the-spot.patch.bz2
	epatch ${FILESDIR}/1.2/${PN}-1.2b-wallet.patch.bz2

	# Fix logic error when using RAW target
	# <azarah@gentoo.org> (23 Feb 2003)
	epatch ${FILESDIR}/1.3/${PN}-1.3-fix-RAW-target.patch

	export WANT_AUTOCONF_2_1=1
	autoconf &> /dev/null
	unset WANT_AUTOCONF_2_1

	# Unpack the enigmail plugin
	if [ -n "`use crypt`" -a -z "`use moznomail`" ]
	then
		mv -f ${WORKDIR}/ipc ${S}/extensions/
		mv -f ${WORKDIR}/enigmail ${S}/extensions/
		cp ${FILESDIR}/enigmail/Makefile-enigmail ${S}/extensions/enigmail/Makefile
		cp ${FILESDIR}/enigmail/Makefile-ipc ${S}/extensions/ipc/Makefile
	fi

}

src_compile() {

	moz_setup

	local myconf=
	# NOTE: QT and XLIB toolkit seems very unstable, leave disabled until
	#       tested ok -- azarah
	if [ -n "`use gtk2`" ]
	then
		myconf="${myconf} --enable-toolkit-gtk2 \
		                  --enable-default-toolkit=gtk2 \
		                  --disable-toolkit-qt \
		                  --disable-toolkit-xlib \
		                  --disable-toolkit-gtk"
	else
		myconf="${myconf} --enable-toolkit-gtk \
			              --enable-default-toolkit=gtk \
			              --disable-toolkit-qt \
			              --disable-toolkit-xlib \
			              --disable-toolkit-gtk2"
	fi

	if [ -z "`use ldap`" ]
	then
		myconf="${myconf} --disable-ldap"
	fi

	if [ -z "`use debug`" ]
	then
		myconf="${myconf} --enable-strip-libs \
			              --disable-debug \
			              --disable-tests \
						  --enable-reorder \
						  --enable-strip"
#						  --enable-cpp-rtti"

		# Currently --enable-elf-dynstr-gc only works for x86 and ppc,
		# thanks to Jason Wever <weeve@gentoo.org> for the fix.
		if [ -n "`use x86`" -o -n "`use ppc`" ]
		then
			myconf="${myconf} --enable-elf-dynstr-gc"
		fi
	fi

	# Check if we should enable Xft support ...
	if [ -z "`use moznoxft`" ]
	then
		if [ -n "`use gtk2`" ]
		then
			local pango_version=""

			# We need Xft2.0 localy installed
			if (test -x /usr/bin/pkg-config) && (pkg-config xft)
			then
				pango_version="`pkg-config --modversion pango | cut -d. -f1,2`"
				pango_version="`echo ${pango_version} | sed -e 's:\.::g'`"

				# We also need pango-1.1, else Mozilla links to both
				# Xft1.1 *and* Xft2.0, and segfault...
				if [ "${pango_version}" -gt "10" ]
				then
					einfo "Building with Xft2.0 (Gtk+-2.0) support!"
					myconf="${myconf} --enable-xft --disable-freetype2"
					touch ${WORKDIR}/.xft
				else
					ewarn "Building without Xft2.0 support!"
					myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
				fi
			else
				ewarn "Building without Xft2.0 support!"
				myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
			fi
		else
			einfo "Building with Xft2.0 (Gtk+-1.0) support!"
			myconf="${myconf} --enable-xft --disable-freetype2"
			touch ${WORKDIR}/.xft
		fi
	else
		myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
	fi

	if [ -n "`use ipv6`" ]
	then
		myconf="${myconf} --enable-ipv6"
	fi


	# NB!!:  Due to the fact that the non default extensions do not always
	#        compile properly, using them is considered unsupported, and
	#        is just here for completeness.  Please do not use if you
	#        do not know what you are doing!
	#
	# The defaults are:
	# cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix 
	# venkman inspector irc universalchardet typeaheadfind webservices 
	# spellcheck
	# Non-defaults are:
	#     xmlterm access-builtin datetime finger cview
	local myext="default"
	if [ -n "`use mozxmlterm`" ]
	then
		myext="${myext},xmlterm"
	fi
	if [ -n "`use mozaccess`" ]
	then
		myext="${myext},access-builtin"
	fi
	if [ -n "`use moznoirc`" ]
	then
		myext="${myext},-irc"
	fi

# Disable SVG until it's properly implemented
#	if [ -n "`use mozsvg`" ]
#	then
#		export MOZ_INTERNAL_LIBART_LGPL="1"
#		myconf="${myconf} --enable-svg"
#	else
#		myconf="${myconf} --disable-svg"
#	fi
	if [ -n "`use mozcalendar`" ]
	then
		myconf="${myconf} --enable-calendar"
	fi

	if [ -n "`use moznomail`" ]
	then
		myconf="${myconf} --disable-mailnews"
	fi
	if [ -n "`use moznocompose`" -a -n "`use moznomail`" ]
	then
		myconf="${myconf} --disable-composer"
	fi

	if [ "$(gcc-major-version)" -eq "3" ]
	then
		# Currently gcc-3.2 or older do not work well if we specify "-march"
		# and other optimizations for pentium4.
		if [ "$(gcc-minor-version)" -lt "3" ]; then
			replace-flags -march=pentium4 -march=pentium3
			filter-flags -msse2
		fi

		# Enable us to use flash, etc plugins compiled with gcc-2.95.3
		if [ "${ARCH}" = "x86" ]
		then
			myconf="${myconf} --enable-old-abi-compat-wrappers"
		fi
	fi

	if [ -n "`use alpha`" ]
	then
		# mozilla wont link with X11 on alpha, for some crazy reason.
		# set it to link explicitly here.
		sed -i 's/\(EXTRA_DSO_LDOPTS += $(MOZ_GTK_LDFLAGS).*$\)/\1 -L/usr/X11R6/lib -lX11/' \
			${S}/gfx/src/gtk/Makefile.in
	fi

	# *********************************************************************
	#
	#  Configure and build Mozilla
	#
	# *********************************************************************

	export BUILD_MODULES=all
	export BUILD_OPT=1

	# Get it to work without warnings on gcc3
	export CXXFLAGS="${CXXFLAGS} -Wno-deprecated"

	# On amd64 we statically set 'safe' CFLAGS. Use those only.
	# using the standard -O2 will cause segfaults on startup for amd64
	if [ "${ARCH}" = "amd64" ]
	then
		ENABLE_OPTIMIZE="${CFLAGS}"
	else
		ENABLE_OPTIMIZE="-O2"
	fi

	cd ${S}
	einfo "Configuring Mozilla..."
	./configure --prefix=/usr/lib/mozilla \
		--disable-pedantic \
		--disable-short-wchar \
		--disable-xprint \
		--enable-mathml \
		--without-system-nspr \
		--enable-nspr-autoconf \
		--with-system-zlib \
		--enable-xsl \
		--enable-crypto \
		--enable-extensions="${myext}" \
		--enable-optimize="${ENABLE_OPTIMIZE}" \
		--with-default-mozilla-five-home=/usr/lib/mozilla \
		${myconf} || die

	einfo "Building Mozilla..."
	make WORKDIR="${WORKDIR}" || die

	# *********************************************************************
	#
	#  Build Mozilla NSS
	#
	# *********************************************************************

	# Build the NSS/SSL support
	if [ "`use ssl`" ]
	then
		einfo "Building Mozilla NSS..."
		cd ${S}/security/coreconf

		# Fix #include problem
		cp headers.mk headers.mk.orig
		echo 'INCLUDES += -I$(DIST)/include/nspr -I$(DIST)/include/dbm'\
			>>headers.mk

		# Disable jobserver here ...
		make MAKE="make" || die

		cd ${S}/security/nss

		# Disable jobserver here ...
		make MAKE="make" moz_import || die
		make MAKE="make" || die
		cd ${S}
	fi

	# *********************************************************************
	#
	#  Build Enigmail plugin
	#
	# *********************************************************************

	# Build the enigmail plugin
	if [ -n "`use crypt`" -a -z "`use moznomail`" ]
	then
		einfo "Building Enigmail plugin..."
		cd ${S}/extensions/ipc
		make || die

		cd ${S}/extensions/enigmail
		make || die
	fi
}

src_install() {

	moz_setup

	# Install, don't create tarball
	dodir /usr/lib
	cd ${S}/xpinstall/packager
	einfo "Installing mozilla into build root..."
	make MOZ_PKG_FORMAT="RAW" TAR_CREATE_FLAGS="-chf" > /dev/null || die
	mv -f ${S}/dist/mozilla ${D}/usr/lib/mozilla

	einfo "Installing includes and idl files..."
	# Copy the include and idl files
	dodir /usr/lib/mozilla/include/idl /usr/include
	cd ${S}/dist
	cp -LfR include/* ${D}/usr/lib/mozilla/include
	cp -LfR idl/* ${D}/usr/lib/mozilla/include/idl
	dosym /usr/lib/mozilla/include /usr/include/mozilla

	# Install the development tools in /usr
	dodir /usr/bin
	mv ${D}/usr/lib/mozilla/{xpcshell,xpidl,xpt_dump,xpt_link} ${D}/usr/bin

	# Install the NSS/SSL libs, headers and tools
	if [ "`use ssl`" ]
	then
		einfo "Installing Mozilla NSS..."
		# Install the headers ('make install' do not work for headers ...)
		insinto /usr/lib/mozilla/include/nss
		[ -d ${S}/dist/public/nss ] && doins ${S}/dist/public/nss/*.h
		[ -d ${S}/dist/public/seccmd ] && doins ${S}/dist/public/seccmd/*.h
		[ -d ${S}/dist/public/security ] && doins ${S}/dist/public/security/*.h
		# These come with zlib ...
		rm -f ${D}/usr/lib/mozilla/include/nss/{zconf.h,zlib.h}

		cd ${S}/security/nss

		mkdir -p ${WORKDIR}/nss/{bin,lib}
		export BUILD_OPT=1
		export SOURCE_BIN_DIR=${WORKDIR}/nss/bin
		export SOURCE_LIB_DIR=${WORKDIR}/nss/lib

		make install || die
		# Gets installed as symbolic links ...
		cp -Lf ${WORKDIR}/nss/bin/* ${D}/usr/bin
		cp -Lf ${WORKDIR}/nss/lib/* ${D}/usr/lib/mozilla

		# Need to unset these incase we want to rebuild, else the build
		# gets newked.
		unset SOURCE_LIB_DIR
		unset SOURCE_BIN_DIR
	fi

	cd ${S}/build/unix
	# Fix mozilla-config and install it
	perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" mozilla-config
	perl -pi -e "s:/mozilla-${MY_PV2}::g" mozilla-config
	exeinto /usr/lib/mozilla
	doexe mozilla-config
	# Fix pkgconfig files and install them
	insinto /usr/lib/pkgconfig
	for x in *.pc
	do
		if [ -f ${x} ]
		then
			perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" ${x}
			perl -pi -e "s:/mozilla-${MY_PV2}::g" ${x}
			doins ${x}
		fi
	done

	cd ${S}
	exeinto /usr/bin
	newexe ${FILESDIR}/mozilla.sh mozilla
	insinto /etc/env.d
	doins ${FILESDIR}/10mozilla
	dodoc LEGAL LICENSE README/mozilla/README*

	# Install rebuild script
	exeinto /usr/lib/mozilla/
	newexe ${S}/build/package/rpm/SOURCES/mozilla-rebuild-databases.pl.in \
		mozilla-rebuild-databases.pl
	dosed 's|LIBDIR|/usr/lib|g' /usr/lib/mozilla/mozilla-rebuild-databases.pl
	dosed 's|-MOZILLA_VERSION||g' /usr/lib/mozilla/mozilla-rebuild-databases.pl

	# Move plugins dir
	src_mv_plugins /usr/lib/mozilla/plugins

	# Update Google search plugin to use UTF8 charset ...
	insinto /usr/lib/mozilla/searchplugins
	doins ${FILESDIR}/google.src

	if [ -f "${WORKDIR}/.xft" ]
	then
		# We are using Xft, so change the default font
		insinto /usr/lib/mozilla/defaults/pref
		doins ${FILESDIR}/xft.js
	fi

	# Fix icons to look the same everywhere
	insinto /usr/lib/mozilla/icons
	doins ${S}/build/package/rpm/SOURCES/mozicon16.xpm
	doins ${S}/build/package/rpm/SOURCES/mozicon50.xpm

	# Install icon and .desktop for menu entry
	if [ "`use gnome`" ]
	then
		insinto /usr/share/pixmaps
		doins ${S}/build/package/rpm/SOURCES/mozilla-icon.png

		# Fix comment of menu entry
		cd ${S}/build/package/rpm/SOURCES
		perl -pi -e 's:Comment=Mozilla:Comment=Mozilla Web Browser:' mozilla.desktop
		cd ${S}
		insinto /usr/share/gnome/apps/Internet
		doins ${S}/build/package/rpm/SOURCES/mozilla.desktop
	fi

	# Take care of non root execution
	# (seems the problem is that not all files are readible by the user)
	einfo "Fixing Permissions..."
	chmod -R g+r,o+r ${D}/usr/lib/mozilla
	find ${D}/usr/lib/mozilla/ -type d -exec chmod 0755 {} \; || :
}

pkg_preinst() {
	# Stale components and chrome files break when unmerging old
	if [ -d ${ROOT}/usr/lib/mozilla/components ]
	then
		rm -rf ${ROOT}/usr/lib/mozilla/components
	fi
	if [ -d ${ROOT}/usr/lib/mozilla/chrome ]
	then
		rm -rf ${ROOT}/usr/lib/mozilla/chrome
	fi

	# Remove stale component registry.
	if [ -e ${ROOT}/usr/lib/mozilla/component.reg ]
	then
		rm -f ${ROOT}/usr/lib/mozilla/component.reg
	fi
	if [ -e ${ROOT}/usr/lib/mozilla/components/compreg.dat ]
	then
		rm -f ${ROOT}/usr/lib/mozilla/components/compreg.dat
	fi

	# Make sure these are removed.
	rm -f ${ROOT}/usr/lib/mozilla/lib{Xft,Xrender}.so*

	# Move old plugins dir
	pkg_mv_plugins /usr/lib/mozilla/plugins
}

pkg_postinst() {

	export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"

	# Needed to update the run time bindings for REGXPCOM
	# (do not remove next line!)
	env-update
	# Register Components and Chrome
	einfo "Registering Components and Chrome..."
	${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
	# Fix permissions of component registry
	chmod 0644 ${MOZILLA_FIVE_HOME}/components/compreg.dat
	# Fix directory permissions
	find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 0755 {} \; || :
	# Fix permissions on chrome files
	find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :


	echo
	ewarn "Please unmerge old versions of mozilla, as the header"
	ewarn "layout in /usr/lib/mozilla/include have changed and will"
	ewarn "result in compile errors when compiling programs that need"
	ewarn "mozilla headers and libs (galeon, nautilus, ...)"
}

pkg_postrm() {

	# Regenerate component.reg in case some things changed
	if [ -e ${ROOT}/usr/lib/mozilla/regxpcom ]
	then
		export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"

		if [ -x "${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl" ]
		then
			${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
			# Fix directory permissions
			find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 755 {} \; || :
			# Fix permissions on chrome files
			find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :
		fi
	fi
}

mozilla-1.6a.ebuild

Code: Select all

# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.6a.ebuild,v 1.2 2003/11/21 20:20:43 agriffis Exp $

IUSE="java crypt ipv6 gtk2 ssl ldap gnome debug"
# Internal USE flags that I do not really want to advertise ...
IUSE="${IUSE} mozcalendar mozaccess mozxmlterm"
IUSE="${IUSE} moznoirc moznomail moznocompose moznoxft"

inherit flag-o-matic gcc eutils nsplugins

# Strip over-aggressive CFLAGS - Mozilla supplies its own fine-tuned CFLAGS and shouldn't be interfered with
strip-flags

# Strip flags which create more documented instability
filter-flags "-fomit-frame-pointer"
filter-flags -ffast-math
append-flags -s -fforce-addr

# Merged ARCH stuff into a single case statement.  But shouldn't this
# stuff go in src_compile? (18 Nov 2003 agriffis)
case "${ARCH}" in
	alpha|ia64)
		# Anything more than this causes segfaults on startup on 64-bit
		# (bug 33767)
		export CFLAGS="${CFLAGS//-O[1-9s]/-O} -Wall -fPIC -pipe"
		export CXXFLAGS="${CXXFLAGS//-O[1-9s]/-O} -Wall -fPIC -pipe"
		;;
	amd64)
		# Anything more than this causes segfaults on startup on amd64
		# [Note: I think amd64 could use the same as above in the
		# alpha/ia64 section, but I'll let the amd64 devs choose. -agriffis]
		export CFLAGS="-O -Wall -fPIC -pipe"
		export CXXFLAGS="${CFLAGS}"
		;;
	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
		;;
	sparc)
		# Sparc support ...
		replace-sparc64-flags
		;;
	*)
		# We set -O in ./configure to -O1, as -O2 cause crashes on
		# startup (bug 13287)
		export CFLAGS="${CFLAGS//-O?}"
		export CXXFLAGS="${CFLAGS//-O?}"
		;;
esac

EMVER="0.82.2"
IPCVER="1.0.5"

PATCH_VER="1.0"

# handle _rc versions
MY_PV1="${PV/_}"
MY_PV2="${MY_PV1/eta}"
S="${WORKDIR}/mozilla"
DESCRIPTION="The Mozilla Web Browser"
SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/${PN}${MY_PV2}/src/${PN}-source-${MY_PV2}.tar.bz2
	crypt? ( mirror://gentoo/enigmail-${EMVER}.tar.gz
			 http://downloads.mozdev.org/enigmail/src/ipc-${IPCVER}.tar.gz )"
#	mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
HOMEPAGE="http://www.mozilla.org"

KEYWORDS="~x86 ~ppc ~sparc ~alpha ~amd64 ~ia64"
SLOT="0"
LICENSE="MPL-1.1 NPL-1.1"

RDEPEND=">=x11-base/xfree-4.2.0-r11
	>=dev-libs/libIDL-0.8.0
	>=sys-libs/zlib-1.1.4
	>=media-libs/fontconfig-2.1
	virtual/xft
	>=media-libs/jpeg-6b
	>=media-libs/libpng-1.2.1
	>=sys-apps/portage-2.0.14
	dev-libs/expat
	app-arch/zip
	app-arch/unzip
	( gtk2? >=x11-libs/gtk+-2.2.0 :
	        =x11-libs/gtk+-1.2* )
	( gtk2? >=dev-libs/glib-2.2.0 :
	        =dev-libs/glib-1.2* )
	gtk2?  ( >=x11-libs/pango-1.2.1 )
	!gtk2? ( >=gnome-base/ORBit-0.5.10-r1 )
	java?  ( virtual/jre )
	crypt? ( >=app-crypt/gnupg-1.2.1 )"

DEPEND="${RDEPEND}
	virtual/x11
	dev-util/pkgconfig
	dev-lang/perl
	java? ( >=dev-java/java-config-0.2.0 )"


moz_setup() {

	# Set MAKEOPTS to have proper -j? option ..
	get_number_of_jobs
	# This should enable parallel builds, I hope
	export MAKE="emake"

	# needed by src_compile() and src_install()
	export MOZILLA_OFFICIAL=1
	export BUILD_OFFICIAL=1

	# make sure the nss module gets build (for NSS support)
	if [ -n "`use ssl`" ]
	then
		export MOZ_PSM="1"
	fi

}

src_unpack() {

	moz_setup

	unpack ${A}

	cd ${S}

	if [ "$(gcc-major-version)" -eq "3" ]
	then
		# ABI Patch for alpha/xpcom for gcc-3.x
		if [ "${ARCH}" = "alpha" ]
		then
			cd ${S}; epatch ${FILESDIR}/${PN}-alpha-xpcom-subs-fix.patch
		fi
		if [ "${ARCH}" = "amd64" ]
		then
			cd ${S}; epatch ${FILESDIR}/${PN}-1.4-amd64.patch
		fi
	fi


    # patch mozilla-1.5-xft_cjkfamilyname-20031021.patch
   cd ${S}
   epatch  ${FILESDIR}/mozilla-1.5-xft_cjkfamilyname-20031208.patch
   epatch  ${FILESDIR}/mozilla-1.5-add_ft2build_header-20031111.patch
   cd -

	epatch ${FILESDIR}/1.2/${PN}-1.2b-default-plugin-less-annoying.patch.bz2
	epatch ${FILESDIR}/1.2/${PN}-1.2b-over-the-spot.patch.bz2
	epatch ${FILESDIR}/1.2/${PN}-1.2b-wallet.patch.bz2

	# Fix logic error when using RAW target
	# <azarah@gentoo.org> (23 Feb 2003)
	epatch ${FILESDIR}/1.3/${PN}-1.3-fix-RAW-target.patch

	export WANT_AUTOCONF_2_1=1
	autoconf &> /dev/null
	unset WANT_AUTOCONF_2_1

	# Unpack the enigmail plugin
	if [ -n "`use crypt`" -a -z "`use moznomail`" ]
	then
		mv -f ${WORKDIR}/ipc ${S}/extensions/
		mv -f ${WORKDIR}/enigmail ${S}/extensions/
		cp ${FILESDIR}/enigmail/Makefile-enigmail ${S}/extensions/enigmail/Makefile
		cp ${FILESDIR}/enigmail/Makefile-ipc ${S}/extensions/ipc/Makefile
	fi

}

src_compile() {

	moz_setup

	local myconf=
	# NOTE: QT and XLIB toolkit seems very unstable, leave disabled until
	#       tested ok -- azarah
	if [ -n "`use gtk2`" ]
	then
		myconf="${myconf} --enable-toolkit-gtk2 \
		                  --enable-default-toolkit=gtk2 \
		                  --disable-toolkit-qt \
		                  --disable-toolkit-xlib \
		                  --disable-toolkit-gtk"
	else
		myconf="${myconf} --enable-toolkit-gtk \
			              --enable-default-toolkit=gtk \
			              --disable-toolkit-qt \
			              --disable-toolkit-xlib \
			              --disable-toolkit-gtk2"
	fi

	if [ -z "`use ldap`" ]
	then
		myconf="${myconf} --disable-ldap"
	fi

	if [ -z "`use debug`" ]
	then
		myconf="${myconf} --enable-strip-libs \
			              --disable-debug \
			              --disable-tests \
						  --enable-reorder \
						  --enable-strip"
#						  --enable-cpp-rtti"

		# Currently --enable-elf-dynstr-gc only works for x86 and ppc,
		# thanks to Jason Wever <weeve@gentoo.org> for the fix.
		if [ -n "`use x86`" -o -n "`use ppc`" ]
		then
			myconf="${myconf} --enable-elf-dynstr-gc"
		fi
	fi

	# Check if we should enable Xft support ...
	if [ -z "`use moznoxft`" ]
	then
		if [ -n "`use gtk2`" ]
		then
			local pango_version=""

			# We need Xft2.0 localy installed
			if (test -x /usr/bin/pkg-config) && (pkg-config xft)
			then
				pango_version="`pkg-config --modversion pango | cut -d. -f1,2`"
				pango_version="`echo ${pango_version} | sed -e 's:\.::g'`"

				# We also need pango-1.1, else Mozilla links to both
				# Xft1.1 *and* Xft2.0, and segfault...
				if [ "${pango_version}" -gt "10" ]
				then
					einfo "Building with Xft2.0 (Gtk+-2.0) support!"
					myconf="${myconf} --enable-xft --disable-freetype2"
					touch ${WORKDIR}/.xft
				else
					ewarn "Building without Xft2.0 support!"
					myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
				fi
			else
				ewarn "Building without Xft2.0 support!"
				myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
			fi
		else
			einfo "Building with Xft2.0 (Gtk+-1.0) support!"
			myconf="${myconf} --enable-xft --disable-freetype2"
			touch ${WORKDIR}/.xft
		fi
	else
		myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
	fi

	if [ -n "`use ipv6`" ]
	then
		myconf="${myconf} --enable-ipv6"
	fi


	# NB!!:  Due to the fact that the non default extensions do not always
	#        compile properly, using them is considered unsupported, and
	#        is just here for completeness.  Please do not use if you
	#        do not know what you are doing!
	#
	# The defaults are:
	# cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix 
	# venkman inspector irc universalchardet typeaheadfind webservices 
	# spellcheck
	# Non-defaults are:
	#     xmlterm access-builtin datetime finger cview
	use mozxmlterm || use mozaccess && \
		ewarn "" && \
		ewarn "The use of the non-default extensions is considered unsupported, and these" && \
		ewarn "may not always compile properly." && \
		ewarn "Please do not use if you do not know what you're doing!" && \
		ewarn "" && \
		sleep 3

	local myext="default"
	if [ -n "`use mozxmlterm`" ]
	then
		myext="${myext},xmlterm"
	fi
	if [ -n "`use mozaccess`" ]
	then
		myext="${myext},access-builtin"
	fi
	if [ -n "`use moznoirc`" ]
	then
		myext="${myext},-irc"
	fi

# Disable SVG until it's properly implemented
#	if [ -n "`use mozsvg`" ]
#	then
#		export MOZ_INTERNAL_LIBART_LGPL="1"
#		myconf="${myconf} --enable-svg"
#	else
#		myconf="${myconf} --disable-svg"
#	fi
	if [ -n "`use mozcalendar`" ]
	then
		myconf="${myconf} --enable-calendar"
	fi

	if [ -n "`use moznomail`" ]
	then
		myconf="${myconf} --disable-mailnews"
	fi
	if [ -n "`use moznocompose`" -a -n "`use moznomail`" ]
	then
		myconf="${myconf} --disable-composer"
	fi

	if [ "$(gcc-major-version)" -eq "3" ]
	then
		# Currently gcc-3.2 or older do not work well if we specify "-march"
		# and other optimizations for pentium4.
		if [ "$(gcc-minor-version)" -lt "3" ]; then
			replace-flags -march=pentium4 -march=pentium3
			filter-flags -msse2
		fi

		# Enable us to use flash, etc plugins compiled with gcc-2.95.3
		if [ "${ARCH}" = "x86" ]
		then
			myconf="${myconf} --enable-old-abi-compat-wrappers"
		fi
	fi

	if [ -n "`use alpha`" ]
	then
		# mozilla wont link with X11 on alpha, for some crazy reason.
		# set it to link explicitly here.
		sed -i 's/\(EXTRA_DSO_LDOPTS += $(MOZ_GTK_LDFLAGS).*$\)/\1 -L/usr/X11R6/lib -lX11/' \
			${S}/gfx/src/gtk/Makefile.in
	fi

	# *********************************************************************
	#
	#  Configure and build Mozilla
	#
	# *********************************************************************

	export BUILD_MODULES=all
	export BUILD_OPT=1

	# Get it to work without warnings on gcc3
	export CXXFLAGS="${CXXFLAGS} -Wno-deprecated"

	# On 64-bit we statically set 'safe' CFLAGS. Use those only.
	# using the standard -O2 will cause segfaults on startup
	case "${ARCH}" in
		alpha|amd64|ia64)
			ENABLE_OPTIMIZE="${CFLAGS}"
			;;
		*)
			ENABLE_OPTIMIZE="-O2"
			;;
	esac

	cd ${S}
	einfo "Configuring Mozilla..."
	./configure --prefix=/usr/lib/mozilla \
		--disable-pedantic \
		--disable-short-wchar \
		--disable-xprint \
		--enable-mathml \
		--without-system-nspr \
		--enable-nspr-autoconf \
		--with-system-zlib \
		--enable-xsl \
		--enable-crypto \
		--enable-extensions="${myext}" \
		--enable-optimize="${ENABLE_OPTIMIZE}" \
		--with-default-mozilla-five-home=/usr/lib/mozilla \
		${myconf} || die

	einfo "Building Mozilla..."
	make WORKDIR="${WORKDIR}" || die

	# *********************************************************************
	#
	#  Build Mozilla NSS
	#
	# *********************************************************************

	# Build the NSS/SSL support
	if [ "`use ssl`" ]
	then
		einfo "Building Mozilla NSS..."
		cd ${S}/security/coreconf

		# Fix #include problem
		cp headers.mk headers.mk.orig
		echo 'INCLUDES += -I$(DIST)/include/nspr -I$(DIST)/include/dbm'\
			>>headers.mk

		# Disable jobserver here ...
		make MAKE="make" || die

		cd ${S}/security/nss

		# Disable jobserver here ...
		make MAKE="make" moz_import || die
		make MAKE="make" || die
		cd ${S}
	fi

	# *********************************************************************
	#
	#  Build Enigmail plugin
	#
	# *********************************************************************

	# Build the enigmail plugin
	if [ -n "`use crypt`" -a -z "`use moznomail`" ]
	then
		einfo "Building Enigmail plugin..."
		cd ${S}/extensions/ipc
		make || die

		cd ${S}/extensions/enigmail
		make || die
	fi
}

src_install() {

	moz_setup

	# Install, don't create tarball
	dodir /usr/lib
	cd ${S}/xpinstall/packager
	einfo "Installing mozilla into build root..."
	make MOZ_PKG_FORMAT="RAW" TAR_CREATE_FLAGS="-chf" > /dev/null || die
	mv -f ${S}/dist/mozilla ${D}/usr/lib/mozilla

	einfo "Installing includes and idl files..."
	# Copy the include and idl files
	dodir /usr/lib/mozilla/include/idl /usr/include
	cd ${S}/dist
	cp -LfR include/* ${D}/usr/lib/mozilla/include
	cp -LfR idl/* ${D}/usr/lib/mozilla/include/idl
	dosym /usr/lib/mozilla/include /usr/include/mozilla

	# Install the development tools in /usr
	dodir /usr/bin
	mv ${D}/usr/lib/mozilla/{xpcshell,xpidl,xpt_dump,xpt_link} ${D}/usr/bin

	# Install the NSS/SSL libs, headers and tools
	if [ "`use ssl`" ]
	then
		einfo "Installing Mozilla NSS..."
		# Install the headers ('make install' do not work for headers ...)
		insinto /usr/lib/mozilla/include/nss
		[ -d ${S}/dist/public/nss ] && doins ${S}/dist/public/nss/*.h
		[ -d ${S}/dist/public/seccmd ] && doins ${S}/dist/public/seccmd/*.h
		[ -d ${S}/dist/public/security ] && doins ${S}/dist/public/security/*.h
		# These come with zlib ...
		rm -f ${D}/usr/lib/mozilla/include/nss/{zconf.h,zlib.h}

		cd ${S}/security/nss

		mkdir -p ${WORKDIR}/nss/{bin,lib}
		export BUILD_OPT=1
		export SOURCE_BIN_DIR=${WORKDIR}/nss/bin
		export SOURCE_LIB_DIR=${WORKDIR}/nss/lib

		make install || die
		# Gets installed as symbolic links ...
		cp -Lf ${WORKDIR}/nss/bin/* ${D}/usr/bin
		cp -Lf ${WORKDIR}/nss/lib/* ${D}/usr/lib/mozilla

		# Need to unset these incase we want to rebuild, else the build
		# gets newked.
		unset SOURCE_LIB_DIR
		unset SOURCE_BIN_DIR
	fi

	cd ${S}/build/unix
	# Fix mozilla-config and install it
	perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" mozilla-config
	perl -pi -e "s:/mozilla-${MY_PV2}::g" mozilla-config
	exeinto /usr/lib/mozilla
	doexe mozilla-config
	# Fix pkgconfig files and install them
	insinto /usr/lib/pkgconfig
	for x in *.pc
	do
		if [ -f ${x} ]
		then
			perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" ${x}
			perl -pi -e "s:/mozilla-${MY_PV2}::g" ${x}
			doins ${x}
		fi
	done

	cd ${S}
	exeinto /usr/bin
	newexe ${FILESDIR}/mozilla.sh mozilla
	insinto /etc/env.d
	doins ${FILESDIR}/10mozilla
	dodoc LEGAL LICENSE README/mozilla/README*

	# Install rebuild script
	exeinto /usr/lib/mozilla/
	newexe ${S}/build/package/rpm/SOURCES/mozilla-rebuild-databases.pl.in \
		mozilla-rebuild-databases.pl
	dosed 's|LIBDIR|/usr/lib|g' /usr/lib/mozilla/mozilla-rebuild-databases.pl
	dosed 's|-MOZILLA_VERSION||g' /usr/lib/mozilla/mozilla-rebuild-databases.pl

	# Move plugins dir
	src_mv_plugins /usr/lib/mozilla/plugins

	# Update Google search plugin to use UTF8 charset ...
	insinto /usr/lib/mozilla/searchplugins
	doins ${FILESDIR}/google.src

	if [ -f "${WORKDIR}/.xft" ]
	then
		# We are using Xft, so change the default font
		insinto /usr/lib/mozilla/defaults/pref
		doins ${FILESDIR}/xft.js
	fi

	# Fix icons to look the same everywhere
	insinto /usr/lib/mozilla/icons
	doins ${S}/build/package/rpm/SOURCES/mozicon16.xpm
	doins ${S}/build/package/rpm/SOURCES/mozicon50.xpm

	# Install icon and .desktop for menu entry
	if [ "`use gnome`" ]
	then
		insinto /usr/share/pixmaps
		doins ${S}/build/package/rpm/SOURCES/mozilla-icon.png

		# Fix comment of menu entry
		cd ${S}/build/package/rpm/SOURCES
		perl -pi -e 's:Comment=Mozilla:Comment=Mozilla Web Browser:' mozilla.desktop
		cd ${S}
		insinto /usr/share/gnome/apps/Internet
		doins ${S}/build/package/rpm/SOURCES/mozilla.desktop
	fi

	# Take care of non root execution
	# (seems the problem is that not all files are readible by the user)
	einfo "Fixing Permissions..."
	chmod -R g+r,o+r ${D}/usr/lib/mozilla
	find ${D}/usr/lib/mozilla/ -type d -exec chmod 0755 {} \; || :
}

pkg_preinst() {
	# Stale components and chrome files break when unmerging old
	if [ -d ${ROOT}/usr/lib/mozilla/components ]
	then
		rm -rf ${ROOT}/usr/lib/mozilla/components
	fi
	if [ -d ${ROOT}/usr/lib/mozilla/chrome ]
	then
		rm -rf ${ROOT}/usr/lib/mozilla/chrome
	fi

	# Remove stale component registry.
	if [ -e ${ROOT}/usr/lib/mozilla/component.reg ]
	then
		rm -f ${ROOT}/usr/lib/mozilla/component.reg
	fi
	if [ -e ${ROOT}/usr/lib/mozilla/components/compreg.dat ]
	then
		rm -f ${ROOT}/usr/lib/mozilla/components/compreg.dat
	fi

	# Make sure these are removed.
	rm -f ${ROOT}/usr/lib/mozilla/lib{Xft,Xrender}.so*

	# Move old plugins dir
	pkg_mv_plugins /usr/lib/mozilla/plugins
}

pkg_postinst() {

	export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"

	# Needed to update the run time bindings for REGXPCOM
	# (do not remove next line!)
	env-update
	# Register Components and Chrome
	einfo "Registering Components and Chrome..."
	${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
	# Fix permissions of component registry
	chmod 0644 ${MOZILLA_FIVE_HOME}/components/compreg.dat
	# Fix directory permissions
	find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 0755 {} \; || :
	# Fix permissions on chrome files
	find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :


	echo
	ewarn "Please unmerge old versions of mozilla, as the header"
	ewarn "layout in /usr/lib/mozilla/include have changed and will"
	ewarn "result in compile errors when compiling programs that need"
	ewarn "mozilla headers and libs (galeon, nautilus, ...)"
}

pkg_postrm() {

	# Regenerate component.reg in case some things changed
	if [ -e ${ROOT}/usr/lib/mozilla/regxpcom ]
	then
		export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"

		if [ -x "${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl" ]
		then
			${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
			# Fix directory permissions
			find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 755 {} \; || :
			# Fix permissions on chrome files
			find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :
		fi
	fi
}


Posted: Wed Dec 10, 2003 1:26 am
by 【Palatis】
omg, 看來真的要去弄 phpbb 貼檔的 mod = =