File MozillaFirefox.spec of Package MozillaFirefox

#
# spec file for package MozillaFirefox (Version 2.0.0.9)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild
# for debugging
BuildRequires: emacs-nox openssh subversion vim git-core

Name:           MozillaFirefox
BuildRequires:  gcc-c++ libgnomeui-devel libidl-devel mozilla-nss-devel orbit-devel startup-notification-devel unzip update-desktop-files zip
%if %suse_version >= 1000
%if %suse_version <= 1010
BuildRequires:  dbus-1-devel
%else
BuildRequires:  dbus-1-glib-devel
%endif
%endif
%if %suse_version > 1020
BuildRequires:  fdupes
%endif
# fix broken 9.3 requirements
%if %suse_version <= 930
BuildRequires:  freetype2-devel popt-devel
%endif
# fix broken SLES9 requirements
%if %suse_version == 910
BuildRequires:  pkgconfig libgnomeui
%endif
License:        MPL/GPL/LGPL
Provides:       web_browser
Provides:       MozillaFirebird
Provides:       firefox
Obsoletes:      MozillaFirebird
%if %sles_version == 10
Obsoletes:      mozilla
%endif
Version:        2.0.0.9
Release:        1
Summary:        Mozilla Firefox Web Browser
URL:            http://www.mozilla.org/
Group:          Productivity/Networking/Web/Browsers
# Creation of firefox and l10n tarballs:
# cvs -d :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r MOZILLA_1_8_BRANCH mozilla/client.mk
# cd mozilla
# export MOZ_CO_PROJECT=browser
# export MOZ_CO_LOCALES=all
# make -f client.mk checkout
# cd ..
# tar cjf l10n.tar.bz2 l10n; tar cjf firefox-2.0-source.tar.bz2 mozilla
Source:         firefox-%{version}-source.tar.bz2
Source1:        MozillaFirefox.desktop
Source2:        add-plugins.sh.in
Source3:        mozilla.sh.in
Source4:        tango-theme.tar.bz2
Source5:        search-addons.tar.bz2
Source6:        MozillaFirefox.desktop.nld
Source7:        l10n-%{version}.tar.bz2
Source8:        plastikfox-theme.tar.bz2
Source9:        bookmarks.html.nld
Source10:       bookmarks.html.suse
Source11:       firefox48.png
Source16:       firefox.1
Source17:       firefox-suse-default-prefs.js
Source18:       firefox.schemas
Patch1:         x11-session.patch
Patch2:         rpath.patch
Patch3:         gcc-undefined-ops.patch
Patch5:         abuild.patch
# NSPR bmo #270502
Patch6:         nspr-prdtoa.patch
Patch7:         locale.patch
# lockdown infrastructure
Patch8:         firefox-ui-lockdown.patch
Patch9:         gecko-lockdown.patch
Patch10:        gconf-backend.patch
Patch11:        gnome-vfs.patch
Patch12:        misc.dif
Patch13:        nss-opt.patch
Patch14:        credits.patch
Patch15:        em-356370.patch
# bmo #273524 (only for NLD)
Patch16:        gnome-vfs-default.patch
# integration
Patch17:        firefox-appname.patch
Patch18:        firefox-no-update.patch
Patch19:        dbus.patch
# customization
Patch22:        cjk-postscript-fonts.dif
Patch23:        startup.patch
# bmo #324060
Patch24:        cups-paper.patch
Patch25:        system-extensions.patch
Patch27:        system-proxies.patch
# bmo #331522
Patch32:        postscript.patch
Patch33:        proxy-dev.patch
# integration
Patch34:        skin-selection.patch
Patch36:        greasemonkey.patch

Patch37:        firefox-gcc4.3-fixes.patch
# gconf-backend.patch dbus.patch startup.patch
Patch100:       configure.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
PreReq:         libstdc++ fileutils textutils /bin/sh gconf2
%if %sles_version == 10
%define default_home_page http://www.novell.com/linux/sle10
%else
%define default_home_page http://www.opensuse.org/
%endif
%define has_system_nspr  0
%define has_system_nss   0
%define has_system_cairo 0
%if %suse_version > 930 || %opensuse_bs
%define has_system_nspr  1
%endif
%if %suse_version > 930
%define has_system_cairo 1
%endif
%if %suse_version > 1010 || %opensuse_bs
%define has_system_nss   1
%endif
%if %has_system_nspr
Requires:       mozilla-nspr >= %( echo `rpm -q --queryformat '%{VERSION}' mozilla-nspr`)
%endif
%if %has_system_nss
Requires:       mozilla-nss >= %( echo `rpm -q --queryformat '%{VERSION}' mozilla-nss`)
%endif
%define _unpackaged_files_terminate_build 0
%define releasedate 2007110100
%define progname firefox
%if %suse_version < 1010
%define progdir /opt/MozillaFirefox/%_lib
%else
%define progdir %{_prefix}/%_lib/firefox
%endif
%if %suse_version > 1020
%define gnome_confdir %{_sysconfdir}
%define gnome_dir     %{_prefix}
%gconf_schemas_prereq
%else
%define gnome_confdir %{_sysconfdir}/opt/gnome
%define gnome_dir     /opt/gnome
%endif
%define nld9 %(if grep -q sles9-sld /.buildenv; then echo 1; else echo 0; fi)
%define my_provides /tmp/my-provides
%define my_requires /tmp/my-requires
%if %suse_version > 920
%define libgssapi libgssapi_krb5.so.2
%else
%define libgssapi libgssapi.so.1
%endif
# let add-plugins.sh maintain Java
%if %suse_version <= 1000
%define JAVA 1
%else
%define JAVA 0
%endif
### build options
%define milestone 1
%define localize  1
%define broken 0
### build options end

%description
Mozilla Firefox, formerly known as Phoenix and Firebird, is a redesign
of the Mozilla browser component, similar to Galeon, K-Meleon and
Camino, but written using the XUL user interface language and designed
to be cross-platform. It is a stand-alone application instead of part
of the Mozilla Application Suite.



Authors:
--------
    Mozilla Foundation <drivers@mozilla.org>

%package translations
Summary:        Translations for MozillaFirefox
Provides:       locale(MozillaFirefox:af;ar;bg;be;ca;cs;da;de;el;en_GB;es_AR;es_ES;eu;fi;fr;fy_NL;ga_IE;gu_IN;he;hu;it;ja;ka;ko;ku;lt;mk;mn;nb_NO;nl;nn_NO;pa_IN;pl;pt_BR;pt_PT;ro;ru;sk;sl;sv_SE;tr;zh_CN;zh_TW)
Group:          Productivity/Networking/Web/Browsers
PreReq:         %{name} = %{version}

%description translations
This package contains several optional languages for the user interface
of MozillaFirefox.



Authors:
--------
    Mozilla Foundation <drivers@mozilla.org>

%debug_package

%prep
%setup -q -n mozilla -b 7 -b 4 -b 8
cd $RPM_BUILD_DIR/mozilla
%patch1 -p1
%patch2
%patch3
%patch5
%patch6
%patch7
# lockdown stuff
%patch8
%patch9
%patch10
%patch11
%patch12
%patch13
%patch14
%patch15
%patch17
%patch18
%patch19
%patch22
%patch23
%patch24
%patch25
%patch27
%if %nld9
%patch16
%endif
%patch32
%patch33
%patch34
%patch36
%patch37 -p1
%patch100
# custom bookmarks
%if %nld9
cp -f %{SOURCE9} $RPM_BUILD_DIR/mozilla/browser/locales/en-US/profile/bookmarks.html
%else
cp -f %{SOURCE10} $RPM_BUILD_DIR/mozilla/browser/locales/en-US/profile/bookmarks.html
%endif

%build
export MOZ_BUILD_DATE=%{releasedate}
export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
export CFLAGS="$RPM_OPT_FLAGS -g -Os -fno-strict-aliasing"  
%if %suse_version > 1000
export CFLAGS="$CFLAGS -fstack-protector"
%endif
# gcc on 10.3 still has an issue with visibility
%if %suse_version > 1020
export ac_cv_visibility_hidden="no"
%endif
export CXXFLAGS="$CFLAGS"
export RPATH="-Wl,-rpath -Wl,%{progdir}"
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
cat << EOF > $MOZCONFIG
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
. \$topsrcdir/browser/config/mozconfig
ac_add_options --prefix=%{_prefix}
ac_add_options --libdir=%{_libdir}
ac_add_options --sysconfdir=%{_sysconfdir}
ac_add_options --mandir=%{_mandir}
ac_add_options --includedir=%{_includedir}
ac_add_options --enable-optimize="$CFLAGS"
ac_add_options --with-system-jpeg
ac_add_options --with-system-png
ac_add_options --with-system-mng
ac_add_options --with-system-zlib
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --enable-gconf
ac_add_options --enable-svg
ac_add_options --enable-canvas
ac_add_options --enable-xft
ac_add_options --disable-freetype2
ac_add_options --disable-installer
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-tests
ac_add_options --disable-debug
EOF
%if %is_plus || %suse_version >= 930
cat << EOF >> $MOZCONFIG
ac_add_options --enable-pango
EOF
%endif
%if %has_system_nspr
cat << EOF >> $MOZCONFIG
ac_add_options --with-system-nspr
EOF
%endif
%if %has_system_nss
cat << EOF >> $MOZCONFIG
ac_add_options --with-system-nss
EOF
%endif
%if %has_system_cairo
cat << EOF >> $MOZCONFIG
ac_add_options --enable-system-cairo
EOF
%endif
%if %suse_version >= 1000
cat << EOF >> $MOZCONFIG
ac_add_options --enable-dbus
ac_add_options --enable-extensions="dbus default"
EOF
%endif
%if %suse_version >= 1010
cat << EOF >> $MOZCONFIG
ac_add_options --enable-startup-notification
EOF
%endif
%if %milestone
cat << EOF >> $MOZCONFIG
ac_add_options --enable-official-branding
EOF
%endif
make -f client.mk build

%install
make -C browser/installer STRIP=/bin/true
# copy tree into RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/%{progdir}
cp -rf $RPM_BUILD_DIR/mozilla/dist/firefox/* $RPM_BUILD_ROOT/%{progdir}
# install additional locales
%if %localize
echo %defattr\(-,root,root\) > %{_tmppath}/translations.list
for locale in $(awk '{ print $1; }' browser/locales/shipped-locales); do
  case $locale in
   ja-JP-mac)
	# broken locales, do not work
	;;
   *)
  	make -C browser/locales libs-$locale
  	cp dist/xpi-stage/locale-$locale/chrome/$locale.jar \
    	  $RPM_BUILD_ROOT/%{progdir}/chrome
  	cp dist/xpi-stage/locale-$locale/chrome/$locale.manifest \
     	  $RPM_BUILD_ROOT/%{progdir}/chrome
  	echo %{progdir}/chrome/$locale.jar      >> %{_tmppath}/translations.list
  	echo %{progdir}/chrome/$locale.manifest >> %{_tmppath}/translations.list
  esac
done
%endif
# overwrite the mozilla start-script and link it to /usr/bin
mkdir --parents $RPM_BUILD_ROOT/usr/bin
sed "s:%%PREFIX:%{_prefix}:g
s:%%PROGDIR:%{progdir}:g
s:%%APPNAME:%{progname}:g
s:%%PROFILE:.mozilla/firefox:g" \
  %{SOURCE3} > $RPM_BUILD_ROOT%{progdir}/%{progname}.sh
chmod 755 $RPM_BUILD_ROOT%{progdir}/%{progname}.sh
ln -sf ../..%{progdir}/%{progname}.sh $RPM_BUILD_ROOT/usr/bin/%{progname}
# desktop definition
%if %nld9
mkdir -p $RPM_BUILD_ROOT/opt/gnome/share/applications
install -m 644 %{SOURCE6} \
               $RPM_BUILD_ROOT/opt/gnome/share/applications/%{name}.desktop
%else
mkdir -p $RPM_BUILD_ROOT/usr/share/applications
%if %suse_version < 1010
# no startup notification for 10.0 and older
sed "s:StartupNotify=true:StartupNotify=false:g" \
   %{SOURCE1} > $RPM_BUILD_ROOT/usr/share/applications/%{name}.desktop
%else
install -m 644 %{SOURCE1} \
   $RPM_BUILD_ROOT/usr/share/applications
%endif
%endif
# SCHEMA File
mkdir -p $RPM_BUILD_ROOT%{gnome_confdir}/gconf/schemas
install -m 644 %{SOURCE18} \
               $RPM_BUILD_ROOT/%{gnome_confdir}/gconf/schemas/
# Themes
cp -a $RPM_BUILD_DIR/tango\@novell.com $RPM_BUILD_ROOT%{progdir}/extensions/
%if %broken
cp -a $RPM_BUILD_DIR/\{4674e8a2-eb7e-4822-b517-b18328b3e8e8\} $RPM_BUILD_ROOT%{progdir}/extensions/
%endif
# install add-plugins.sh 
sed "s:%%PROGDIR:%{progdir}:g
s:%%APPNAME:%{progname}:g
s:%%JAVA:%{JAVA}:g" \
  %{SOURCE2} > $RPM_BUILD_ROOT%{progdir}/add-plugins.sh
chmod 755 $RPM_BUILD_ROOT%{progdir}/add-plugins.sh
# install man-page
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1/
cp %{SOURCE16} $RPM_BUILD_ROOT%{_mandir}/man1/
# apply SUSE defaults
sed -e 's,RPM_VERSION,%{version}-%{release},g
s,GSSAPI,%{libgssapi},g' \
   %{SOURCE17} > suse-default-prefs
cp suse-default-prefs $RPM_BUILD_ROOT/%{progdir}/defaults/pref/firefox-novell.js
rm suse-default-prefs
# use correct locale for useragent
cat > $RPM_BUILD_ROOT%{progdir}/defaults/pref/firefox-l10n.js << EOF
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
EOF
##########
# ADDONS
#
(cd $RPM_BUILD_ROOT%{progdir}/searchplugins ; tar xjf %{SOURCE5})
# browserconfig.properties
sed "s;browser.startup.homepage=.*;browser.startup.homepage=%{default_home_page};g
s;browser.startup.homepage_reset=.*;browser.startup.homepage_reset=%{default_home_page};g" \
  dist/firefox/browserconfig.properties > $RPM_BUILD_ROOT%{progdir}/browserconfig.properties
cat << EOF >> $RPM_BUILD_ROOT%{progdir}/browserconfig.properties
startup.homepage_override_url=%{default_home_page}
EOF
mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps/
%if %milestone
cp -f other-licenses/branding/firefox/mozicon128.png $RPM_BUILD_ROOT/usr/share/pixmaps/firefox.png
mkdir -p $RPM_BUILD_ROOT%{gnome_dir}/share/icons/hicolor/48x48/apps/
install -m 644 %{SOURCE11} $RPM_BUILD_ROOT%{gnome_dir}/share/icons/hicolor/48x48/apps/firefox.png
ln -sf firefox.png $RPM_BUILD_ROOT/usr/share/pixmaps/firefox-gnome.png
%else
cp -f $RPM_BUILD_ROOT%{progdir}/icons/mozicon50.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/firefox.xpm
%endif
%suse_update_desktop_file %{name} Network WebBrowser X-Ximian-Main X-Ximian-Toplevel GTK
%if %has_system_nspr && !%has_system_nss
# modify provides and requires lists (don't export NSS)
cat << EOF > %{my_provides}
grep -vE "libnss3.so|libnssckbi.so|libsmime3.so|libsoftokn3.so|libssl3.so" | %{__find_provides}
EOF
chmod 755 %{my_provides}
%define __find_provides %{my_provides}
cat << EOF > %{my_requires}
grep -vE "libnss3.so|libnssckbi.so|libsmime3.so|libsoftokn3.so|libssl3.so|firefox-bin" | %{__find_requires}
EOF
chmod 755 %{my_requires}
%define __find_requires %{my_requires}
%endif
%if %suse_version > 1020
%find_gconf_schemas
%fdupes $RPM_BUILD_ROOT%{progdir}
%fdupes $RPM_BUILD_ROOT%{_datadir}
%endif
chmod -x $RPM_BUILD_ROOT%{_datadir}/pixmaps/firefox.png

%clean
rm -rf $RPM_BUILD_ROOT
%if %has_system_nspr && !%has_system_nss
rm -f %{my_provides}
rm -f %{my_requires}
%endif

%if %suse_version > 1020
%pre -f %{name}.schemas_pre

%preun -f %{name}.schemas_preun
[ "$1" = "0" ] && rm -f %{progdir}/dictionaries/*
exit 0
%else
%preun
[ "$1" = "0" ] && rm -f %{progdir}/dictionaries/*
exit 0
%endif

%post
%if %suse_version >= 1010
# move plugins to new location
if [ "$1" = "2" ]; then
  if [ -d /opt/MozillaFirefox/%{_lib}/plugins ]; then
    rm -rf /opt/MozillaFirefox/%{_lib}/plugins/libnullplugin.so
    cp -fud /opt/MozillaFirefox/%{_lib}/plugins/* %{progdir}/plugins
    rm -rf /opt/MozillaFirefox/%{_lib}/plugins
  fi
fi
%endif
%if %suse_version <= 1020
if [ ! -f /.buildenv ]; then
  export GCONF_CONFIG_SOURCE=`%{gnome_dir}/bin/gconftool-2 --get-default-source`
  %{gnome_dir}bin/gconftool-2 --makefile-install-rule %{gnome_confdir}/gconf/schemas/firefox.schemas > /dev/null 2>&1
%if %suse_version <= 1000
  # restart gconfd
  killall -HUP gconfd-2 2>&1 >/dev/null
%endif
fi
%endif
%{progdir}/add-plugins.sh > /dev/null 2>&1
exit 0

%if %suse_version > 1020
%posttrans -f %{name}.schemas_posttrans
%endif

%triggerin -- myspell-dictionary
%{progdir}/add-plugins.sh > /dev/null 2>&1
exit 0

%triggerpostun -- myspell-dictionary
%{progdir}/add-plugins.sh > /dev/null 2>&1
exit 0

%if %suse_version <= 1000
%triggerin -- IBMJava2-JRE, java2-jre, java2, IBMJava2-SDK, BlackdownJava2-JRE, java-1_4_2-sun-plugin, java-1_5_0-sun-plugin
%{progdir}/add-plugins.sh > /dev/null 2>&1
exit 0

%triggerpostun --  IBMJava2-JRE, java2-jre, java2, IBMJava2-SDK, BlackdownJava2-JRE, java-1_4_2-sun-plugin, java-1_5_0-sun-plugin
if [ -L %{progdir}/plugins/libjavaplugin_oji.so -a ! -f %{progdir}/plugins/libjavaplugin_oji.so ]; then
  rm -f %{progdir}/plugins/libjavaplugin_oji.so
fi
%{progdir}/add-plugins.sh > /dev/null 2>&1
exit 0
%endif

%if %suse_version > 1020
%files -f %{name}.schemas_list
%else
%files
%endif
%defattr(-,root,root)
%if %suse_version < 1010
%dir /opt/MozillaFirefox
%endif
%dir %{progdir}
%dir %{progdir}/chrome/
%{progdir}/chrome/browser.*
%{progdir}/chrome/classic.*
%{progdir}/chrome/comm.*
%{progdir}/chrome/en-US.*
%{progdir}/chrome/pippki.*
%{progdir}/chrome/toolkit.*
%{progdir}/chrome/reporter.*
%{progdir}/chrome/icons
%{progdir}/components/
%{progdir}/greprefs/
%{progdir}/defaults/
%{progdir}/dictionaries/
%{progdir}/extensions/
%{progdir}/icons/
#%{progdir}/init.d/
%dir %{progdir}/plugins
%{progdir}/plugins/libnullplugin.so
%{progdir}/res/
%{progdir}/searchplugins/
%{progdir}/add-plugins.sh
%{progdir}/%{progname}-bin
%attr(755,root,root) %{progdir}/%{progname}.sh
%{progdir}/browserconfig.properties
# NSPR
%if ! %has_system_nspr
%{progdir}/libnspr4.so
%{progdir}/libplc4.so
%{progdir}/libplds4.so
%endif
# NSS
%if ! %has_system_nss
%{progdir}/libnssckbi.so
%{progdir}/libnss3.so
%{progdir}/libsmime3.so
%{progdir}/libsoftokn3.chk
%{progdir}/libsoftokn3.so
%{progdir}/libssl3.so
%endif
#
%{progdir}/libmozjs.so
%{progdir}/libxpcom.so
%{progdir}/libxpcom_core.so
%{progdir}/libxpcom_compat.so
%{progdir}/libxpistub.so
%{progdir}/mozilla-xremote-client
%{progdir}/run-mozilla.sh
%{progdir}/updater
%{progdir}/updater.ini
%{progdir}/xpicleanup
%exclude %{progdir}/removed-files
%exclude %{progdir}/firefox
%{progdir}/readme.txt
%if %nld9
/opt/gnome/share/applications/%{name}.desktop
%else
/usr/share/applications/%{name}.desktop
%endif
%{gnome_confdir}/gconf/schemas/firefox.schemas
/usr/share/pixmaps/firefox*
%if %milestone
%{gnome_dir}/share/icons/hicolor/
%endif
/usr/bin/%{progname}
%doc %{_mandir}/man1/firefox.1.gz

%if %localize
%files translations -f %{_tmppath}/translations.list
%defattr(-,root,root)
%endif
openSUSE Build Service is sponsored by