diff options
Diffstat (limited to 'waterfox/waterfox.spec')
-rw-r--r-- | waterfox/waterfox.spec | 982 |
1 files changed, 982 insertions, 0 deletions
diff --git a/waterfox/waterfox.spec b/waterfox/waterfox.spec new file mode 100644 index 0000000..441d647 --- /dev/null +++ b/waterfox/waterfox.spec @@ -0,0 +1,982 @@ +%global commit 2294d4556bf76a6293275a17dbf9ef5fd187459e +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global date 20180908 +%global with_snapshot 1 + +%global freebsd_rev 478244 +%global freebsd_root %{name}-FreeBSD-patches-r%{freebsd_rev} + +%if 0%{?with_snapshot} +%global gver .%{date}git%{shortcommit} +%endif + +# Build with only clang? +%global with_clang 0 + +# Use ALSA backend? +%global alsa_backend 1 + +# Use system nspr/nss? +%global system_nss 1 + +# Use system hunspell? +%global system_hunspell 1 + +# Use system libevent? +%global system_libevent 1 + +# Use system sqlite? +%global system_sqlite 1 + +%global system_ffi 1 + +# Use system cairo? +%global system_cairo 0 + +# Use system graphite2/harfbuzz? +%global system_harfbuzz 1 + +# Use system libvpx? +%global system_libvpx 1 + +# Use system webp? +%global system_webp 1 + +# Use system libvpx? +%global system_vorbis 1 + +# Use system libicu? +%global system_libicu 0 + +# Big endian platforms +%ifarch ppc64 s390x +# Javascript Intl API is not supported on big endian platforms right now: +# https://bugzilla.mozilla.org/show_bug.cgi?id=1322212 +%global big_endian 1 +%endif + +# Hardened build? +%global hardened_build 1 + +%global system_jpeg 1 + +%ifarch %{ix86} x86_64 +%global run_tests 0 +%else +%global run_tests 0 +%endif + +# Build as a debug package? +%global debug_build 0 + +%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html +%global waterfox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} +# Minimal required versions +%global cairo_version 1.13.1 +%global freetype_version 2.1.9 +%if %{?system_harfbuzz} +%global graphite2_version 1.3.10 +%global harfbuzz_version 1.4.7 +%endif +%if %{?system_libevent} +%global libevent_version 2.1.8 +%endif +%global libnotify_version 0.7.0 +%if %{?system_libvpx} +%global libvpx_version 1.4.0 +%endif +%if %{?system_webp} +%global webp_version 1.0.0 +%endif +%if %{?system_vorbis} +%global ogg_version 1.3.3 +%global vorbis_version 1.3.5 +%endif + +%if %{?system_nss} +%global nspr_version 4.17.0 +# NSS/NSPR quite often ends in build override, so as requirement the version +# we're building against could bring us some broken dependencies from time to time. +%global nspr_build_version %{nspr_version} +%global nss_version 3.34 +%global nss_build_version %{nss_version} +%endif + +%if %{?system_sqlite} +%global sqlite_version 3.8.4.2 +# The actual sqlite version (see #480989): +%global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536) +%endif + +%global mozappdir %{_libdir}/%{name} +%global mozappdirdev %{_libdir}/%{name}-devel-%{version} +%global langpackdir %{mozappdir}/langpacks + +%global build_langpacks 1 + +Summary: Waterfox Web browser +Name: waterfox +Version: 56.2.2 +Release: 4%{?gver}%{?dist} +URL: https://www.waterfoxproject.org +License: MPLv1.1 or GPLv2+ or LGPLv2+ +%if 0%{?with_snapshot} +Source0: https://github.com/MrAlex94/%{name}/archive/%{commit}.tar.gz#/%{name}-%{shortcommit}.tar.gz +%else +Source0: https://github.com/MrAlex94/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +%endif + +# FreeBSD patches +# https://www.freshports.org/www/waterfox +# rev=revision ./waterfox-FreeBSD-patches-snapshot.sh +Source600: http://dl.bintray.com/phantomx/tarballs/%{freebsd_root}.tar.xz + +Source10: waterfox-mozconfig +Source12: waterfox-chinfo-default-prefs.js +Source20: waterfox.desktop +Source21: waterfox.sh.in +Source23: waterfox.1 +Source26: distribution.ini + +# Build patches +Patch0: firefox-install-dir.patch +Patch3: mozilla-build-arm.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=814879#c3 +Patch18: xulrunner-24.0-jemalloc-ppc.patch +Patch20: firefox-build-prbool.patch +Patch25: rhbz-1219542-s390-build.patch +Patch26: build-icu-big-endian.patch +Patch27: mozilla-1335250.patch +Patch30: fedora-build.patch +Patch31: build-ppc64-s390x-curl.patch +Patch32: build-rust-ppc64le.patch +Patch35: build-ppc-jit.patch +Patch36: build-missing-xlocale-h.patch +# Always feel lucky for unsupported platforms: +# https://bugzilla.mozilla.org/show_bug.cgi?id=1347128 +Patch37: build-jit-atomic-always-lucky.patch +# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x) +Patch38: build-cacheFlush-missing.patch + +# Fedora specific patches +Patch215: firefox-enable-addons.patch +Patch219: rhbz-1173156.patch +Patch221: firefox-fedora-ua.patch +Patch224: mozilla-1170092.patch +Patch225: mozilla-1005640-accept-lang.patch +#ARM run-time patch +Patch226: rhbz-1354671.patch +Patch230: rhbz-1497932.patch + +# Firefox upstream patches +Patch402: mozilla-1196777.patch +Patch406: mozilla-256180.patch +Patch413: mozilla-1353817.patch +Patch414: mozilla-1435695.patch +Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch +Patch416: bug1375074-save-restore-x28.patch +Patch417: mozilla-1436242.patch + +# Upstream updates + +%global wf_url https://github.com/MrAlex94/Waterfox +#Patch???: %%{wf_url}/commit/commit.patch#/wf-commit.patch +Patch490: %{wf_url}/pull/547.patch#/wf-pull-547.patch + +# Debian patches +Patch500: mozilla-440908.patch + +# Chinforinfula patches +Patch700: %{name}-nolangpacks.patch +Patch701: %{name}-waterfoxdir.patch + +%if %{?system_nss} +BuildRequires: pkgconfig(nspr) >= %{nspr_version} +BuildRequires: pkgconfig(nss) >= %{nss_version} +BuildRequires: nss-static >= %{nss_version} +%endif +%if %{?system_cairo} +BuildRequires: pkgconfig(cairo) >= %{cairo_version} +%endif +BuildRequires: pkgconfig(libpng) +%if %{?system_jpeg} +BuildRequires: libjpeg-devel +%endif +BuildRequires: zip +BuildRequires: bzip2-devel +BuildRequires: pkgconfig(zlib) +BuildRequires: pkgconfig(libIDL-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(freetype2) >= %{freetype_version} +%if %{?system_harfbuzz} +BuildRequires: pkgconfig(graphite2) >= %{graphite2_version} +BuildRequires: pkgconfig(harfbuzz) >= %{harfbuzz_version} +%endif +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(xrender) +%if %{?system_hunspell} +BuildRequires: pkgconfig(hunspell) +%endif +%if %{?system_libevent} +BuildRequires: pkgconfig(libevent) >= %{libevent_version} +%endif +BuildRequires: pkgconfig(libstartup-notification-1.0) +%if %{?alsa_backend} +BuildRequires: pkgconfig(alsa) +%endif +BuildRequires: pkgconfig(libnotify) >= %{libnotify_version} +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(libcurl) +BuildRequires: dbus-glib-devel +BuildRequires: pkgconfig(libv4l2) +%if %{?system_libvpx} +BuildRequires: pkgconfig(vpx) >= %{libvpx_version} +%endif +%if %{?system_webp} +BuildRequires: pkgconfig(libwebp) >= %{webp_version} +%endif +%if %{?system_vorbis} +BuildRequires: pkgconfig(ogg) >= %{ogg_version} +BuildRequires: pkgconfig(vorbis) >= %{vorbis_version} +%endif +BuildRequires: autoconf213 +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(icu-i18n) +BuildRequires: yasm +BuildRequires: llvm +BuildRequires: llvm-devel +BuildRequires: clang +BuildRequires: clang-libs +%if !0%{?with_clang} +BuildRequires: gcc-c++ +%endif +BuildRequires: patchutils + +Requires: mozilla-filesystem +Requires: waterfox-filesystem +Requires: p11-kit-trust +%if %{?system_nss} +Requires: nspr >= %{nspr_build_version} +Requires: nss >= %{nss_build_version} +%endif +BuildRequires: python2-devel + +BuildRequires: nss-devel >= 3.29.1-2.1 +Requires: nss >= 3.29.1-2.1 + +BuildRequires: desktop-file-utils +BuildRequires: system-bookmarks +%if %{?system_sqlite} +BuildRequires: pkgconfig(sqlite3) >= %{sqlite_version} +Requires: sqlite >= %{sqlite_build_version} +%endif + +%if %{?system_ffi} +BuildRequires: pkgconfig(libffi) +%endif + +%if %{?run_tests} +BuildRequires: xorg-x11-server-Xvfb +%endif +BuildRequires: rust +BuildRequires: cargo + +Obsoletes: mozilla <= 37:1.7.13 +Provides: webclient + +%description +Waterfox is an open-source web browser, specialised modification of the Mozilla +platform, designed for privacy and user choice in mind. + +%if %{run_tests} +%global testsuite_pkg_name mozilla-%{name}-testresults +%package -n %{testsuite_pkg_name} +Summary: Results of testsuite +%description -n %{testsuite_pkg_name} +This package contains results of tests executed during build. +%files -n %{testsuite_pkg_name} +/test_results +%endif + +#--------------------------------------------------------------------- + +%prep +%if 0%{?with_snapshot} +%setup -q -n Waterfox-%{commit} -a 600 +%else +%setup -q -n Waterfox-%{version} -a 600 +%endif + +%if %{build_langpacks} + mkdir waterfox-langpacks + mv browser/extensions/langpack-*.xpi waterfox-langpacks/ +%else + rm -f browser/extensions/langpack-*.xpi +%endif + +# Build patches, can't change backup suffix from default because during build +# there is a compare of config and js/config directories and .orig suffix is +# ignored during this compare. +%patch0 -p1 + + +%patch18 -p1 -b .jemalloc-ppc +%patch20 -p1 -b .prbool +%ifarch s390 +%patch25 -p1 -b .rhbz-1219542-s390 +%endif +%patch30 -p1 -b .fedora-build +%patch31 -p1 -b .ppc64-s390x-curl +%patch32 -p1 -b .rust-ppc64le +%ifarch ppc ppc64 ppc64le +%patch35 -p1 -b .ppc-jit +%endif +%patch37 -p1 -b .jit-atomic-lucky + +%patch3 -p1 -b .arm + +# For branding specific patches. + +# Fedora patches +%patch215 -p1 -b .addons +%patch219 -p2 -b .rhbz-1173156 +%patch221 -p2 -b .fedora-ua +%patch224 -p1 -b .1170092 +%patch225 -p1 -b .1005640-accept-lang +#ARM run-time patch +%ifarch aarch64 +%patch226 -p1 -b .1354671 +%endif +%patch230 -p1 -b .1497932 + +%patch402 -p1 -b .1196777 +%patch406 -p1 -b .256180 +%patch413 -p1 -b .1353817 +%patch414 -p1 -b .1435695 +%ifarch %{arm} +%patch415 -p1 -b .mozilla-1238661 +%endif +%patch416 -p1 -b .bug1375074-save-restore-x28 +%patch417 -p1 -b .mozilla-1436242 + +%patch490 -p1 + +# Debian extension patch +%patch500 -p1 -b .440908 + +# Prepare FreeBSD patches +mkdir _patches +cp -p %{freebsd_root}/patch-{bug,z-bug,revert-bug}* _patches/ + +filterdiff -x dom/svg/crashtests/crashtests.list %{freebsd_root}/patch-bug1343147 \ + > _patches/patch-bug1343147 +filterdiff -x dom/security/test/csp/mochitest.ini %{freebsd_root}/patch-bug1381761 \ + > _patches/patch-bug1381761 + +for i in 1404057 1404324 1404180 1405878 ;do + filterdiff \ + -x layout/style/crashtests/crashtests.list \ + -x layout/reftests/bugs/reftest.list \ + %{freebsd_root}/patch-bug${i} > _patches/patch-bug${i} +done + +# 1: unneeded +# 2: no apply +# 3: uncertain +for i in \ + 702179 991253 1021761 1144632 1288587 1452576 1425930 1469914 1469309 1470260 1472925 \ + 1388744 1413143 \ + 1447519 +do + rm -f _patches/patch-bug${i} +done + +%if 0%{?fedora} < 28 + rm -f _patches/patch-bug730495 +%endif + +patchcommand='patch -p0 -s -i' + +for i in _patches/patch-{bug{??????,???????},revert-bug*,z-*} ;do + ${patchcommand} ${i} +done + +# Install langpacks other way +%patch700 -p1 -b .nolangpacks +%patch701 -p1 -b .waterfoxdir + +# Patch for big endian platforms only +%if 0%{?big_endian} +%patch26 -p1 -b .icu +%patch36 -p2 -b .xlocale +%endif + +rm -f .mozconfig +cp %{SOURCE10} .mozconfig + +%if 0%{?with_clang} +echo 'export CC=clang' >> .mozconfig +echo 'export CXX=clang++' >> .mozconfig +%endif + +%if %{?system_nss} +echo "ac_add_options --with-system-nspr" >> .mozconfig +echo "ac_add_options --with-system-nss" >> .mozconfig +%else +echo "ac_add_options --without-system-nspr" >> .mozconfig +echo "ac_add_options --without-system-nss" >> .mozconfig +%endif + +%if %{?system_sqlite} +echo "ac_add_options --enable-system-sqlite" >> .mozconfig +%else +echo "ac_add_options --disable-system-sqlite" >> .mozconfig +%endif + +%if %{?system_cairo} +echo "ac_add_options --enable-system-cairo" >> .mozconfig +%else +echo "ac_add_options --disable-system-cairo" >> .mozconfig +%endif + +%if %{?system_harfbuzz} +echo "ac_add_options --enable-system-graphite2" >> .mozconfig +echo "ac_add_options --enable-system-harfbuzz" >> .mozconfig +%else +echo "ac_add_options --disable-system-graphite2" >> .mozconfig +echo "ac_add_options --disable-system-harfbuzz" >> .mozconfig +%endif + +%if %{?system_ffi} +echo "ac_add_options --enable-system-ffi" >> .mozconfig +%endif + +%ifarch %{arm} +echo "ac_add_options --disable-elf-hack" >> .mozconfig +%endif + +%if %{?alsa_backend} +echo "ac_add_options --enable-alsa" >> .mozconfig +%endif + +%if %{?system_hunspell} +echo "ac_add_options --enable-system-hunspell" >> .mozconfig +%else +echo "ac_add_options --disable-system-hunspell" >> .mozconfig +%endif + +%if %{?system_libevent} +echo "ac_add_options --enable-system-libevent" >> .mozconfig +%else +echo "ac_add_options --disable-system-libevent" >> .mozconfig +%endif + +%if %{?debug_build} +echo "ac_add_options --enable-debug" >> .mozconfig +echo "ac_add_options --disable-optimize" >> .mozconfig +%else +%global optimize_flags "none" +# Fedora 26 (gcc7) needs to disable default build flags (mozbz#1342344) +%ifnarch s390 s390x +%global optimize_flags "-g -O2" +%endif +%ifarch armv7hl +# ARMv7 need that (rhbz#1426850) +%global optimize_flags "-g -O2 -fno-schedule-insns" +%endif +%ifarch ppc64le aarch64 +%global optimize_flags "-g -O2" +%endif +%if %{optimize_flags} != "none" +echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig +%else +echo 'ac_add_options --enable-optimize' >> .mozconfig +%endif +echo "ac_add_options --disable-debug" >> .mozconfig +%endif + +# s390(x) fails to start with jemalloc enabled +%ifarch s390 s390x +echo "ac_add_options --disable-jemalloc" >> .mozconfig +%endif + +%ifnarch %{ix86} x86_64 +echo "ac_add_options --disable-webrtc" >> .mozconfig +%endif + +%if %{?run_tests} +echo "ac_add_options --enable-tests" >> .mozconfig +%endif + +%if !%{?system_jpeg} +echo "ac_add_options --without-system-jpeg" >> .mozconfig +%else +echo "ac_add_options --with-system-jpeg" >> .mozconfig +%endif + +%if %{?system_libvpx} +echo "ac_add_options --with-system-libvpx" >> .mozconfig +%else +echo "ac_add_options --without-system-libvpx" >> .mozconfig +%endif + +%if %{?system_webp} +echo "ac_add_options --with-system-webp" >> .mozconfig +%else +echo "ac_add_options --without-system-webp" >> .mozconfig +%endif + +%if %{?system_vorbis} +echo "ac_add_options --with-system-ogg" >> .mozconfig +echo "ac_add_options --with-system-vorbis" >> .mozconfig +%else +echo "ac_add_options --without-system-ogg" >> .mozconfig +echo "ac_add_options --without-system-vorbis" >> .mozconfig +%endif + +%if %{?system_libicu} +echo "ac_add_options --with-system-icu" >> .mozconfig +%else +echo "ac_add_options --without-system-icu" >> .mozconfig +%endif +%ifarch s390 s390x +echo "ac_add_options --disable-ion" >> .mozconfig +%endif + + +#--------------------------------------------------------------------- + +%build +%if %{?system_sqlite} +# Do not proceed with build if the sqlite require would be broken: +# make sure the minimum requirement is non-empty, ... +sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1 +# ... and that major number of the computed build-time version matches: +case "%{sqlite_build_version}" in + "$sqlite_version"*) ;; + *) exit 1 ;; +esac +%endif + +echo "Generate big endian version of config/external/icu/data/icud58l.dat" +%if 0%{?big_endian} + ./mach python intl/icu_sources_data.py . + ls -l config/external/icu/data + rm -f config/external/icu/data/icudt*l.dat +%endif + +# Update the various config.guess to upstream release for aarch64 support +find ./ -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';' + +# -fpermissive is needed to build with gcc 4.6+ which has become stricter +# +# Mozilla builds with -Wall with exception of a few warnings which show up +# everywhere in the code; so, don't override that. +# +# Disable C++ exceptions since Mozilla code is not exception-safe +# +MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//') +#rhbz#1037063 +# -Werror=format-security causes build failures when -Wno-format is explicitly given +# for some sources +# Explicitly force the hardening flags for Waterfox so it passes the checksec test; +# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages +MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security" +# Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045) +MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fno-delete-null-pointer-checks" +# Use hardened build? +%if %{?hardened_build} +MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" +%endif +%if %{?debug_build} +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') +%endif +%ifarch s390 +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') +# If MOZ_DEBUG_FLAGS is empty, waterfox's build will default it to "-g" which +# overrides the -g1 from line above and breaks building on s390 +# (OOM when linking, rhbz#1238225) +export MOZ_DEBUG_FLAGS=" " +%endif +%ifarch s390 %{arm} ppc aarch64 +MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" +%endif +export CFLAGS=$MOZ_OPT_FLAGS +export CXXFLAGS=$MOZ_OPT_FLAGS +export LDFLAGS=$MOZ_LINK_FLAGS + +export PREFIX='%{_prefix}' +export LIBDIR='%{_libdir}' + +MOZ_SMP_FLAGS=-j1 +# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel, +# however builds tend to fail on other arches when building in parallel. +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64 +[ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" +[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 +[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 +[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 +%endif + +make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" MOZ_SERVICES_SYNC="1" + +%if %{?run_tests} +%if %{?system_nss} +ln -s /usr/bin/certutil objdir/dist/bin/certutil +ln -s /usr/bin/pk12util objdir/dist/bin/pk12util + +%endif +mkdir test_results +./mach --log-no-times check-spidermonkey &> test_results/check-spidermonkey || true +./mach --log-no-times check-spidermonkey &> test_results/check-spidermonkey-2nd-run || true +./mach --log-no-times cppunittest &> test_results/cppunittest || true +xvfb-run ./mach --log-no-times crashtest &> test_results/crashtest || true +./mach --log-no-times gtest &> test_results/gtest || true +xvfb-run ./mach --log-no-times jetpack-test &> test_results/jetpack-test || true +# not working right now ./mach marionette-test &> test_results/marionette-test || true +xvfb-run ./mach --log-no-times mochitest-a11y &> test_results/mochitest-a11y || true +xvfb-run ./mach --log-no-times mochitest-browser &> test_results/mochitest-browser || true +xvfb-run ./mach --log-no-times mochitest-chrome &> test_results/mochitest-chrome || true +xvfb-run ./mach --log-no-times mochitest-devtools &> test_results/mochitest-devtools || true +xvfb-run ./mach --log-no-times mochitest-plain &> test_results/mochitest-plain || true +xvfb-run ./mach --log-no-times reftest &> test_results/reftest || true +xvfb-run ./mach --log-no-times webapprt-test-chrome &> test_results/webapprt-test-chrome || true +xvfb-run ./mach --log-no-times webapprt-test-content &> test_results/webapprt-test-content || true +./mach --log-no-times webidl-parser-test &> test_results/webidl-parser-test || true +xvfb-run ./mach --log-no-times xpcshell-test &> test_results/xpcshell-test || true +%if %{?system_nss} +rm -f objdir/dist/bin/certutil +rm -f objdir/dist/bin/pk12util +%endif + +%endif +#--------------------------------------------------------------------- + +%install + +# set up our default bookmarks +cp -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/en-US/locale/browser/bookmarks.html + +# Make sure locale works for langpacks +cat > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF +pref("general.useragent.locale", "chrome://global/locale/intl.properties"); +EOF + +DESTDIR=%{buildroot} make -C objdir install + +mkdir -p %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} + +desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} + +# set up the waterfox start script +rm -rf %{buildroot}%{_bindir}/waterfox +cat %{SOURCE21} > %{buildroot}%{_bindir}/waterfox +chmod 755 %{buildroot}%{_bindir}/waterfox + +install -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/waterfox.1 + +rm -f %{buildroot}/%{mozappdir}/waterfox-config +rm -f %{buildroot}/%{mozappdir}/update-settings.ini + +for s in 16 22 24 32 48 256; do + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps + cp -p browser/branding/unofficial/default${s}.png \ + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/waterfox.png +done + +# Register as an application to be visible in the software center +# +# NOTE: It would be *awesome* if this file was maintained by the upstream +# project, translated and installed into the right place during `make install`. +# +# See http://www.freedesktop.org/software/appstream/docs/ for more details. +# +mkdir -p %{buildroot}%{_metainfodir} +cat > %{buildroot}%{_metainfodir}/%{name}.appdata.xml <<EOF +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright 2014 Richard Hughes <richard@hughsie.com> --> +<application> + <id type="desktop">waterfox.desktop</id> + <metadata_license>CC0-1.0</metadata_license> + <description> + <p> + Bringing together all kinds of awesomeness to make browsing better for you. + Get to your favorite sites quickly – even if you don’t remember the URLs. + Type your term into the location bar (aka the Awesome Bar) and the autocomplete + function will include possible matches from your browsing history, bookmarked + sites and open tabs. + </p> + <!-- FIXME: Needs another couple of paragraphs --> + </description> + <url type="homepage">http://www.mozilla.org/</url> + <!-- FIXME: change this to an upstream email address for spec updates + <updatecontact>someone_who_cares@upstream_project.org</updatecontact> + --> +</application> +EOF + +echo > %{name}.lang +%if %{build_langpacks} +# Extract langpacks, make any mods needed, repack the langpack, and install it. +mkdir -p %{buildroot}%{langpackdir} +for langpack in `ls waterfox-langpacks/*.xpi`; do + language=`basename $langpack .xpi | sed -e 's/^langpack-//' -e 's/@waterfox//'` + extensionID=langpack-$language@waterfox + mkdir -p $extensionID + unzip -qq $langpack -d $extensionID + find $extensionID -type f | xargs chmod 644 + + cd $extensionID + zip -qq -r9mX ../${extensionID}.xpi * + cd - + + install -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir} + language=`echo $language | sed -e 's/-/_/g'` + echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang +done +rm -rf waterfox-langpacks + +# Install langpack workaround (see #707100, #821169) +function create_default_langpack() { +language_long=$1 +language_short=$2 +cd %{buildroot}%{langpackdir} +ln -s langpack-$language_long@waterfox.xpi langpack-$language_short@waterfox.xpi +cd - +echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@waterfox.xpi" >> %{name}.lang +} + +# Table of fallbacks for each language +create_default_langpack "bn-IN" "bn" +create_default_langpack "es-AR" "es" +create_default_langpack "fy-NL" "fy" +create_default_langpack "ga-IE" "ga" +create_default_langpack "gu-IN" "gu" +create_default_langpack "hi-IN" "hi" +create_default_langpack "hy-AM" "hy" +create_default_langpack "nb-NO" "nb" +create_default_langpack "nn-NO" "nn" +create_default_langpack "pa-IN" "pa" +create_default_langpack "pt-PT" "pt" +create_default_langpack "sv-SE" "sv" +create_default_langpack "zh-TW" "zh" +%endif # build_langpacks + +mkdir -p %{buildroot}/%{mozappdir}/browser/features + +mkdir -p %{buildroot}/%{mozappdir}/browser/defaults/preferences + +# System config dir +mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/pref + +# System extensions +mkdir -p %{buildroot}%{_datadir}/waterfox/extensions/%{waterfox_app_id} +mkdir -p %{buildroot}%{_libdir}/waterfox/extensions/%{waterfox_app_id} + +# Copy over the LICENSE +install -p -c -m 644 LICENSE %{buildroot}/%{mozappdir} + +# Use the system hunspell dictionaries +rm -rf %{buildroot}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries + +%if %{run_tests} +# Add debuginfo for crash-stats.mozilla.com +mkdir -p %{buildroot}/test_results +cp test_results/* %{buildroot}/test_results +%endif + +# Default +cp %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences + +# Add distribution.ini +mkdir -p %{buildroot}%{mozappdir}/distribution +cp %{SOURCE26} %{buildroot}%{mozappdir}/distribution + +# Remove copied libraries to speed up build +rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so +rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so +rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so +#--------------------------------------------------------------------- + +# Moves defaults/preferences to browser/defaults/preferences +%pretrans -p <lua> +require 'posix' +require 'os' +if (posix.stat("%{mozappdir}/browser/defaults/preferences", "type") == "link") then + posix.unlink("%{mozappdir}/browser/defaults/preferences") + posix.mkdir("%{mozappdir}/browser/defaults/preferences") + if (posix.stat("%{mozappdir}/defaults/preferences", "type") == "directory") then + for i,filename in pairs(posix.dir("%{mozappdir}/defaults/preferences")) do + os.rename("%{mozappdir}/defaults/preferences/"..filename, "%{mozappdir}/browser/defaults/preferences/"..filename) + end + f = io.open("%{mozappdir}/defaults/preferences/README","w") + if f then + f:write("Content of this directory has been moved to %{mozappdir}/browser/defaults/preferences.") + f:close() + end + end +end + + +%preun +# is it a final removal? +if [ $1 -eq 0 ]; then + rm -rf %{mozappdir}/components + rm -rf %{langpackdir} +fi + +%files -f %{name}.lang +%{_bindir}/waterfox +%{mozappdir}/waterfox +%{mozappdir}/waterfox-bin +%doc %{_mandir}/man1/* +%dir %{_sysconfdir}/%{name} +%dir %{_sysconfdir}/%{name}/* +%dir %{_datadir}/waterfox/extensions/* +%dir %{_libdir}/waterfox/extensions/* +%{_metainfodir}/*.appdata.xml +%{_datadir}/applications/*.desktop +%dir %{mozappdir} +%license %{mozappdir}/LICENSE +%{mozappdir}/browser/chrome +%{mozappdir}/browser/chrome.manifest +%{mozappdir}/browser/defaults/preferences/waterfox-chinfo-default-prefs.js +%{mozappdir}/browser/features +%{mozappdir}/distribution/distribution.ini +# That's Windows only +%ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi +%attr(644, root, root) %{mozappdir}/browser/blocklist.xml +%dir %{mozappdir}/browser/extensions +%{mozappdir}/browser/extensions/* +%if %{build_langpacks} +%dir %{langpackdir} +%endif +%{mozappdir}/browser/omni.ja +%{mozappdir}/browser/icons +%{mozappdir}/chrome.manifest +%{mozappdir}/run-mozilla.sh +%{mozappdir}/application.ini +%exclude %{mozappdir}/removed-files +%{_datadir}/icons/hicolor/16x16/apps/waterfox.png +%{_datadir}/icons/hicolor/22x22/apps/waterfox.png +%{_datadir}/icons/hicolor/24x24/apps/waterfox.png +%{_datadir}/icons/hicolor/256x256/apps/waterfox.png +%{_datadir}/icons/hicolor/32x32/apps/waterfox.png +%{_datadir}/icons/hicolor/48x48/apps/waterfox.png +%{mozappdir}/*.so +%{mozappdir}/gtk2/*.so +%{mozappdir}/defaults/pref/channel-prefs.js +%{mozappdir}/dependentlibs.list +%{mozappdir}/dictionaries +%{mozappdir}/omni.ja +%{mozappdir}/platform.ini +%{mozappdir}/plugin-container +%{mozappdir}/gmp-clearkey +%{mozappdir}/fonts/EmojiOneMozilla.ttf +%if !%{?system_libicu} +%{mozappdir}/icudt*.dat +%endif +%if !%{?system_nss} +%{mozappdir}/libfreeblpriv3.chk +%{mozappdir}/libnssdbm3.chk +%{mozappdir}/libsoftokn3.chk +%exclude %{mozappdir}/libnssckbi.so +%endif + +#--------------------------------------------------------------------- + +%changelog +* Sun Sep 09 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.2-4.20180908git2294d45 +- New snapshot +- clang only build switch + +* Sun Jul 15 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.2-3.20180807git9a88873 +- Crash fixes + +* Sun Jul 15 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.2-2.20180713giteb9e7d6 +- New release + +* Thu Jul 05 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.2-1.20180618gitb7b9ee7 +- New release/snapshot + +* Wed Jul 04 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.1-2.20180618git75c40de +- New snapshot + +* Tue Jun 19 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.1-1.20180618gitff88ad0 +- New release/snapshot + +* Sat Jun 09 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.0-3.20180530gitf435a82 +- New release/snapshot + +* Tue May 29 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.0-2.20180527git01e6727 +- New release/snapshot +- Update patchset + +* Tue May 15 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.2.0-1.20180514git4368983 +- New release/snapshot +- Update patchset + +* Mon May 14 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-7.20180514git94abeb3 +- New snapshot +- Update patchset +- Rebrand waterfox.sh.in + +* Sat May 12 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-6.20180511git2bb1a86 +- New snapshot +- Update patchset + +* Tue May 01 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-5.20180430gitd5c2541 +- New snapshot +- Update patchset +- Enable system webp + +* Tue Apr 24 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-4.20180419git8864091 +- Some more FreeBSD backport patches, BR: patchutils +- Enable ogg/vorbis, BR: pkgconfig(vorbis) + +* Thu Apr 19 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-3.20180419git8864091 +- Apply most of FreeBSD backport patches +- Enable system libevent and harfbuzz + +* Sat Apr 14 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-2.20180412gita52b5ea +- Build latest snapshot for servo fixes +- Drop unneeded patches +- gcc 8 fix + +* Fri Apr 06 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.1.0-1 +- 56.1.0 + +* Fri Feb 02 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.0.4-1 +- 56.0.4 + +* Fri Jan 12 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.0.3-1 +- 56.0.3 + +* Fri Jan 05 2018 Phantom X <megaphantomx at bol dot com dot br> - 56.0.2-1 +- 56.0.2 +- Fix release tarball support +- Unused patches cleanup +- Fix man + +* Wed Dec 27 2017 Phantom X <megaphantomx at bol dot com dot br> - 56.0.1-4.20171213git388770f +- New patch to ~/.waterfox/{extensions,plugins} and /usr/share/waterfox +- R: waterfox-filesystem + +* Tue Dec 26 2017 Phantom X <megaphantomx at bol dot com dot br> - 56.0.1-3.20171213git388770f +- New snapshot +- BR: libevent, disabled, needs new releases +- Patch to use ~/.waterfox/extensions + +* Tue Dec 19 2017 Phantom X <megaphantomx at bol dot com dot br> - 56.0.1-2.20171213git7b7aa8b +- Fixes borrowed from FreeBSD +- Enable stylo +- Do not use api keys from Fedora Firefox package +- Build with gold + +* Wed Dec 13 2017 Phantom X <megaphantomx at bol dot com dot br> - 56.0.1-1.20171213git7b7aa8b +- First spec, borrowed from Fedora Firefox |