# NOTE: PLD distributes iceweasel instead # # TODO: # - (12:22:58) patrys: can you also move _libdir/mozilla-firefox to just _libdir/firefox? # (12:23:25) patrys: it's not like we ship official firefox # - fix wrapper script to allow playing with profiles (must not use -remote) # # Conditional build: %bcond_with tests # enable tests (whatever they check) %bcond_with gtk3 # GTK+ 3.x instead of 2.x %bcond_without kerberos # disable krb5 support %bcond_with xulrunner # system xulrunner [no longer supported] # - disabled shared_js - https://bugzilla.mozilla.org/show_bug.cgi?id=1039964 %bcond_with shared_js # shared libmozjs library [broken] %if %{without xulrunner} # The actual sqlite version (see RHBZ#480989): %define sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo ERROR) %endif %define nspr_ver 4.10.6 %define nss_ver 3.17.2 Summary: Firefox Community Edition web browser Summary(pl.UTF-8): Firefox Community Edition - przeglądarka WWW Name: mozilla-firefox Version: 33.1.1 Release: 1 License: MPL v2.0 Group: X11/Applications/Networking Source0: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/%{version}/source/firefox-%{version}.source.tar.bz2 # Source0-md5: 2c23350a10d508f1d9b9a5f82df5dd93 Source3: %{name}.desktop Source4: %{name}.sh Source5: vendor.js Source6: vendor-ac.js Patch0: %{name}-branding.patch Patch7: %{name}-prefs.patch Patch9: %{name}-no-subshell.patch Patch11: %{name}-middle_click_paste.patch Patch12: %{name}-packaging.patch Patch13: %{name}-system-virtualenv.patch Patch15: %{name}-Disable-Firefox-Health-Report.patch URL: http://www.mozilla.org/projects/firefox/ BuildRequires: OpenGL-devel BuildRequires: alsa-lib-devel BuildRequires: automake BuildRequires: bzip2-devel BuildRequires: cairo-devel >= 1.10.2-5 BuildRequires: dbus-glib-devel >= 0.60 BuildRequires: freetype-devel >= 1:2.1.8 BuildRequires: gcc-c++ >= 6:4.4 BuildRequires: glib2-devel >= 1:2.20 BuildRequires: gstreamer-devel >= 1.0 BuildRequires: gstreamer-plugins-base-devel >= 1.0 %{!?with_gtk3:BuildRequires: gtk+2-devel >= 2:2.14} %{?with_gtk3:BuildRequires: gtk+3-devel >= 3.0.0} %{?with_kerberos:BuildRequires: heimdal-devel >= 0.7.1} BuildRequires: hunspell-devel >= 1.2.3 BuildRequires: libIDL-devel >= 0.8.0 BuildRequires: libdnet-devel BuildRequires: libevent-devel >= 1.4.7 # standalone libffi 3.0.9 or gcc's from 4.5(?)+ BuildRequires: libffi-devel >= 6:3.0.9 BuildRequires: libicu-devel >= 50.1 # requires libjpeg-turbo implementing at least libjpeg 6b API BuildRequires: libjpeg-devel >= 6b BuildRequires: libjpeg-turbo-devel BuildRequires: libpng(APNG)-devel >= 0.10 BuildRequires: libpng-devel >= 2:1.6.10 BuildRequires: libstdc++-devel >= 6:4.4 BuildRequires: libvpx-devel >= 1.3.0 BuildRequires: nspr-devel >= 1:%{nspr_ver} BuildRequires: nss-devel >= 1:%{nss_ver} BuildRequires: pango-devel >= 1:1.22.0 BuildRequires: pixman-devel >= 0.19.2 BuildRequires: perl-modules >= 5.004 BuildRequires: pkgconfig BuildRequires: pkgconfig(libffi) >= 3.0.9 BuildRequires: pulseaudio-devel BuildRequires: python-modules >= 1:2.5 BuildRequires: python-virtualenv >= 1.9.1-4 BuildRequires: readline-devel BuildRequires: rpm >= 4.4.9-56 BuildRequires: rpmbuild(macros) >= 1.601 BuildRequires: sqlite3-devel >= 3.8.5 BuildRequires: startup-notification-devel >= 0.8 BuildRequires: xorg-lib-libXScrnSaver-devel BuildRequires: xorg-lib-libXext-devel BuildRequires: xorg-lib-libXinerama-devel BuildRequires: xorg-lib-libXt-devel %if %{with xulrunner} BuildRequires: xulrunner-devel >= 2:%{version} %endif BuildRequires: zip BuildRequires: zlib-devel >= 1.2.3 Requires(post): mktemp >= 1.5-18 Requires: desktop-file-utils Requires: hicolor-icon-theme %if %{with xulrunner} %requires_eq_to xulrunner xulrunner-devel %else Requires: browser-plugins >= 2.0 Requires: cairo >= 1.10.2-5 Requires: dbus-glib >= 0.60 Requires: glib2 >= 1:2.20 %{!?with_gtk3:Requires: gtk+2 >= 2:2.14} %{?with_gtk3:Requires: gtk+3 >= 3.0.0} Requires: libjpeg-turbo Requires: libpng >= 2:1.6.10 Requires: libpng(APNG) >= 0.10 Requires: libvpx >= 1.3.0 Requires: myspell-common Requires: nspr >= 1:%{nspr_ver} Requires: nss >= 1:%{nss_ver} Requires: pango >= 1:1.22.0 Requires: sqlite3 >= %{sqlite_build_version} Requires: startup-notification >= 0.8 %endif Provides: wwwbrowser Obsoletes: mozilla-firebird Obsoletes: mozilla-firefox-lang-en < 2.0.0.8-3 Obsoletes: mozilla-firefox-libs Conflicts: mozilla-firefox-lang-resources < %{version} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define filterout_cpp -D_FORTIFY_SOURCE=[0-9]+ # don't satisfy other packages (don't use %{name} here) %define _noautoprovfiles %{_libdir}/mozilla-firefox %if %{without xulrunner} # and as we don't provide them, don't require either %define _noautoreq libmozalloc.so libmozjs.so libxpcom.so libxul.so %endif %description Firefox Community Edition is an open-source web browser, designed for standards compliance, performance and portability. %description -l pl.UTF-8 Firefox Community Edition jest przeglądarką WWW rozpowszechnianą zgodnie z ideami ruchu otwartego oprogramowania oraz tworzoną z myślą o zgodności ze standardami, wydajnością i przenośnością. %prep %setup -qc mv -f mozilla-release mozilla cd mozilla %patch0 -p1 %patch7 -p1 %patch9 -p2 %patch11 -p2 %patch12 -p2 %patch13 -p2 %patch15 -p1 %build cd mozilla cp -pf %{_datadir}/automake/config.* build/autoconf cat << 'EOF' > .mozconfig . $topsrcdir/browser/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-%{_target_cpu} # Options for 'configure' (same as command-line options). ac_add_options --build=%{_target_platform} ac_add_options --host=%{_target_platform} ac_add_options --prefix=%{_prefix} ac_add_options --exec-prefix=%{_exec_prefix} ac_add_options --bindir=%{_bindir} ac_add_options --sbindir=%{_sbindir} ac_add_options --sysconfdir=%{_sysconfdir} ac_add_options --datadir=%{_datadir} ac_add_options --includedir=%{_includedir} ac_add_options --libdir=%{_libdir} ac_add_options --libexecdir=%{_libexecdir} ac_add_options --localstatedir=%{_localstatedir} ac_add_options --sharedstatedir=%{_sharedstatedir} ac_add_options --mandir=%{_mandir} ac_add_options --infodir=%{_infodir} %if %{?debug:1}0 ac_add_options --disable-optimize ac_add_options --enable-debug ac_add_options --enable-debug-modules ac_add_options --enable-debugger-info-modules ac_add_options --enable-crash-on-assert %else ac_add_options --disable-debug ac_add_options --disable-debug-modules ac_add_options --disable-logging ac_add_options --enable-optimize="%{rpmcflags} -Os" %endif ac_add_options --disable-strip ac_add_options --disable-strip-libs ac_add_options --disable-install-strip %if %{with tests} ac_add_options --enable-tests ac_add_options --enable-mochitest %else ac_add_options --disable-tests ac_add_options --disable-mochitest %endif ac_add_options --disable-cpp-exceptions ac_add_options --disable-crashreporter ac_add_options --disable-elf-dynstr-gc ac_add_options --disable-gconf ac_add_options --disable-gnomeui ac_add_options --disable-gnomevfs ac_add_options --disable-installer ac_add_options --disable-javaxpcom ac_add_options --disable-long-long-warning ac_add_options --disable-necko-wifi ac_add_options --disable-pedantic ac_add_options --disable-updater ac_add_options --disable-xterm-updates ac_add_options --enable-canvas ac_add_options --enable-chrome-format=omni ac_add_options --enable-default-toolkit=%{?with_gtk3:cairo-gtk3}%{!?with_gtk3:cairo-gtk2} ac_add_options --enable-extensions=default ac_add_options --enable-gio ac_add_options --enable-gstreamer=1.0 ac_add_options --enable-libxul ac_add_options --enable-mathml ac_add_options --enable-pango ac_add_options --enable-readline ac_add_options --enable-safe-browsing %{?with_shared_js:ac_add_options --enable-shared-js} ac_add_options --enable-startup-notification ac_add_options --enable-svg ac_add_options --enable-system-cairo ac_add_options --enable-system-ffi ac_add_options --enable-system-hunspell ac_add_options --enable-system-sqlite ac_add_options --enable-url-classifier ac_add_options --enable-xinerama ac_add_options --with-default-mozilla-five-home=%{_libdir}/%{name} ac_add_options --with-distribution-id=org.pld-linux %if %{with xulrunner} ac_add_options --with-libxul-sdk=$(pkg-config --variable=sdkdir libxul) %endif ac_add_options --with-pthreads ac_add_options --with-system-bz2 ac_add_options --with-system-jpeg ac_add_options --with-system-libevent ac_add_options --with-system-libvpx ac_add_options --with-system-nspr ac_add_options --with-system-nss ac_add_options --with-system-ply ac_add_options --with-system-png ac_add_options --with-system-zlib ac_add_options --with-system-icu ac_add_options --with-x EOF %{__make} -j1 -f client.mk build \ CC="%{__cc}" \ CXX="%{__cxx}" \ MOZ_MAKE_FLAGS="%{_smp_mflags}" %install rm -rf $RPM_BUILD_ROOT cd mozilla install -d \ $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_libdir}} \ $RPM_BUILD_ROOT%{_desktopdir} \ $RPM_BUILD_ROOT%{_datadir}/%{name}/browser \ $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/plugins %browser_plugins_add_browser %{name} -p %{_libdir}/%{name}/browser/plugins %{__make} -C obj-%{_target_cpu}/browser/installer stage-package \ DESTDIR=$RPM_BUILD_ROOT \ installdir=%{_libdir}/%{name} \ PKG_SKIP_STRIP=1 cp -a obj-%{_target_cpu}/dist/firefox/* $RPM_BUILD_ROOT%{_libdir}/%{name}/ %if %{with xulrunner} # >= 5.0 seems to require this ln -s ../xulrunner $RPM_BUILD_ROOT%{_libdir}/%{name}/xulrunner %endif # move arch independant ones to datadir mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/chrome $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/chrome mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/extensions $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/extensions mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/icons $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/icons mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/searchplugins $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/searchplugins %if %{without xulrunner} mv $RPM_BUILD_ROOT%{_libdir}/%{name}/defaults $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults mv $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults/{pref,preferences} %else mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/defaults $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults %endif ln -s ../../../share/%{name}/browser/chrome $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/chrome ln -s ../../../share/%{name}/browser/defaults $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/defaults ln -s ../../../share/%{name}/browser/extensions $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/extensions ln -s ../../../share/%{name}/browser/icons $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/icons ln -s ../../../share/%{name}/browser/searchplugins $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/searchplugins %if %{without xulrunner} %{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries ln -s %{_datadir}/myspell $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries %endif sed 's,@LIBDIR@,%{_libdir},' %{SOURCE4} > $RPM_BUILD_ROOT%{_bindir}/mozilla-firefox chmod 755 $RPM_BUILD_ROOT%{_bindir}/mozilla-firefox ln -s mozilla-firefox $RPM_BUILD_ROOT%{_bindir}/firefox # install icons and desktop file for i in 48 64; do install -d $RPM_BUILD_ROOT%{_iconsdir}/hicolor/${i}x${i}/apps cp -a browser/branding/unofficial/content/icon${i}.png \ $RPM_BUILD_ROOT%{_iconsdir}/hicolor/${i}x${i}/apps/mozilla-firefox.png done cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop # install our settings %if "%{pld_release}" == "ac" cp -a %{SOURCE6} $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults/preferences/vendor.js %else cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults/preferences/vendor.js %endif # files created by firefox -register touch $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/components/compreg.dat touch $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/components/xpti.dat cat << 'EOF' > $RPM_BUILD_ROOT%{_sbindir}/%{name}-chrome+xpcom-generate #!/bin/sh umask 022 rm -f %{_libdir}/%{name}/browser/components/{compreg,xpti}.dat # it attempts to touch files in $HOME/.mozilla # beware if you run this with sudo!!! export HOME=$(mktemp -d) # also TMPDIR could be pointing to sudo user's homedir unset TMPDIR TMP || : %{_libdir}/%{name}/firefox -register rm -rf $HOME EOF chmod 755 $RPM_BUILD_ROOT%{_sbindir}/%{name}-chrome+xpcom-generate %clean rm -rf $RPM_BUILD_ROOT %pretrans if [ -d %{_libdir}/%{name}/browser/extensions ] && [ ! -L %{_libdir}/%{name}/browser/extensions ]; then install -d %{_datadir}/%{name}/browser if [ -e %{_datadir}/%{name}/browser/extensions ]; then mv %{_datadir}/%{name}/browser/extensions{,.rpmsave} fi mv -v %{_libdir}/%{name}/browser/extensions %{_datadir}/%{name}/browser/extensions fi if [ -d %{_libdir}/%{name}/dictionaries ] && [ ! -L %{_libdir}/%{name}/dictionaries ]; then mv -v %{_libdir}/%{name}/dictionaries{,.rpmsave} fi exit 0 %post %{_sbindir}/%{name}-chrome+xpcom-generate %update_browser_plugins %update_icon_cache hicolor %update_desktop_database %postun if [ "$1" = 0 ]; then %update_browser_plugins %update_icon_cache hicolor fi %files %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/%{name} %attr(755,root,root) %{_bindir}/firefox %attr(755,root,root) %{_sbindir}/%{name}-chrome+xpcom-generate %{_desktopdir}/mozilla-firefox.desktop %{_iconsdir}/hicolor/*/apps/mozilla-firefox.png # browser plugins v2 %{_browserpluginsconfdir}/browsers.d/%{name}.* %config(noreplace) %verify(not md5 mtime size) %{_browserpluginsconfdir}/blacklist.d/%{name}.*.blacklist %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/browser %dir %{_libdir}/%{name}/browser/components %dir %{_libdir}/%{name}/browser/plugins %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/browser %dir %{_datadir}/%{name}/browser/extensions %{_datadir}/%{name}/browser/chrome %{_datadir}/%{name}/browser/defaults %{_datadir}/%{name}/browser/icons %{_datadir}/%{name}/browser/searchplugins # symlinks %{_libdir}/%{name}/browser/extensions %{_libdir}/%{name}/browser/chrome %{_libdir}/%{name}/browser/icons %{_libdir}/%{name}/browser/searchplugins %if %{with xulrunner} %{_libdir}/%{name}/xulrunner %endif %{_libdir}/%{name}/browser/defaults %attr(755,root,root) %{_libdir}/%{name}/firefox %attr(755,root,root) %{_libdir}/%{name}/firefox-bin %attr(755,root,root) %{_libdir}/%{name}/run-mozilla.sh %{_libdir}/%{name}/application.ini %{_libdir}/%{name}/browser/blocklist.xml %{_libdir}/%{name}/browser/chrome.manifest %{_libdir}/%{name}/browser/components/components.manifest %attr(755,root,root) %{_libdir}/%{name}/browser/components/libbrowsercomps.so # the signature of the default theme %{_datadir}/%{name}/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} %{_libdir}/%{name}/browser/omni.ja %{_libdir}/%{name}/webapprt %attr(755,root,root) %{_libdir}/%{name}/webapprt-stub # files created by firefox -register %ghost %{_libdir}/%{name}/browser/components/compreg.dat %ghost %{_libdir}/%{name}/browser/components/xpti.dat %if %{without xulrunner} # private xulrunner instance %{_libdir}/%{name}/dependentlibs.list %{_libdir}/%{name}/platform.ini %dir %{_libdir}/%{name}/components %{_libdir}/%{name}/components/components.manifest %attr(755,root,root) %{_libdir}/%{name}/components/libdbusservice.so %attr(755,root,root) %{_libdir}/%{name}/components/libmozgnome.so %attr(755,root,root) %{_libdir}/%{name}/libmozalloc.so %{?with_shared_js:%attr(755,root,root) %{_libdir}/%{name}/libmozjs.so} %attr(755,root,root) %{_libdir}/%{name}/libxul.so %attr(755,root,root) %{_libdir}/%{name}/mozilla-xremote-client %attr(755,root,root) %{_libdir}/%{name}/plugin-container %{_libdir}/%{name}/dictionaries %{_libdir}/%{name}/chrome.manifest %{_libdir}/%{name}/omni.ja %endif