newmoon/newmoon.spec
2019-05-23 05:35:31 +03:00

286 lines
10 KiB
RPMSpec

%bcond_with syshunspell
%define oname PM
%define newmoon_appid \{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4\}
# (tpg) MOZILLA_FIVE_HOME
%define mozillalibdir %{_libdir}/%{name}-%{version}
%define pluginsdir %{_libdir}/mozilla/plugins
%bcond_without clang
Summary: Web browser based on Goanna engine
Name: newmoon
Version: 28.5.0
Release: 2
License: MPLv2.0
Group: Networking/WWW
Url: http://www.palemoon.org
Source0: https://github.com/MoonchildProductions/UXP/archive/%{oname}%{version}_Release.tar.gz?/UXP-%{oname}%{version}_Release.tar.gz
Source1: newmoon.rpmlintrc
Source2: xulstore.json
Source4: %{name}.desktop
Source5: firefox-searchengines-yandex.xml
Source6: firefox-searchengines-google.xml
Source9: kde.js
# https://www.mozilla.org/en-US/firefox/all/
Source10: firefox-dictionary-61.0.2.tar.bz2
Patch1: palemoon-28.0.1-prefs-edit.patch
Patch6: palemoon-27.4.0-enable-addons.patch
Patch7: palemoon-27.4.0-user-agent-overrides.patch
BuildRequires: autoconf2.1
%if %{with clang}
BuildRequires: clang
BuildRequires: clang-devel
BuildRequires: lld
%endif
BuildRequires: doxygen
BuildRequires: imagemagick
BuildRequires: makedepend
BuildRequires: python-simplejson
BuildRequires: rootcerts
BuildRequires: unzip
BuildRequires: valgrind
BuildRequires: wget
BuildRequires: yasm
BuildRequires: zip
BuildRequires: libiw-devel
BuildRequires: nss-static-devel
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-app-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
%if %{with syshunspell}
BuildRequires: pkgconfig(hunspell)
%endif
BuildRequires: pkgconfig(libIDL-2.0)
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(libproxy-1.0)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libstartup-notification-1.0)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(python)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xscrnsaver)
BuildRequires: pkgconfig(xt)
Requires: indexhtml
Requires: xdg-utils
# fixes bug #42096
Requires: mailcap
%if %{with syshunspell}
Suggests: hunspell-en
%endif
Suggests: %{_lib}canberra0
Suggests: %{_lib}cups2
Provides: palemoon = %{EVRD}
Provides: webclient
%description
New Moon (unofficial branding for Pale Moon) is an Open Source, Goanna-based
web browser available for Microsoft Windows and Linux (with other operating
systems in development), focusing on efficiency and ease of use.
New Moon offers you a browsing experience in a browser completely built from
its own, independently developed source that has been forked off from
Firefox/Mozilla code, with carefully selected features and optimizations
to improve the browser's speed, resource use, stability and user experience,
while offering full customization and a growing collection of extensions and
themes to make the browser truly your own.
%files
%{_bindir}/%{name}
%{_iconsdir}/hicolor/*/apps/*.png
%{_datadir}/applications/*.desktop
%{mozillalibdir}*
%dir %{_libdir}/mozilla
%dir %{_libdir}/mozilla/extensions
%dir %{_libdir}/mozilla/extensions/%{newmoon_appid}
%dir %{_datadir}/mozilla/extensions/%{newmoon_appid}
%dir %{pluginsdir}
#----------------------------------------------------------------------------
%package devel
Summary: Development files for %{name}
Group: Development/Other
%description devel
Files and macros mainly for building New Moon extensions.
%files devel
%{_sys_macros_dir}/%{name}.macros
#----------------------------------------------------------------------------
%prep
%setup -qn UXP-%{oname}%{version}_Release
%patch1 -p1 -b .prefs
%patch6 -p1 -b .addons
%patch7 -p1 -b .ua
pushd js/src
autoconf-2.13
popd
autoconf-2.13
%build
%if %{with clang}
export CC=clang
export CXX=clang++
export LINKER=ld.lld
%else
%global optflags %(echo %{optflags} | sed -e 's/-gdwarf-4//' -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//' -e 's/-Wa,--compress-debug-sections//')
%setup_compile_flags
CFLAGS=$(echo %{optflags} | sed -e 's/-fexceptions//')
CFLAGS="$CFLAGS -fno-strict-aliasing"
CXXFLAGS="$CFLAGS -fpermissive"
RPM_OPT_FLAGS="$CFLAGS"
LDFLAGS="%{ldflags}"
export CFLAGS
export CXXFLAGS
export RPM_OPT_FLAGS
export LDFLAGS
%endif
export MOZCONFIG=`pwd`/mozconfig
cat << EOF > $MOZCONFIG
mk_add_options BUILD_OFFICIAL=0
mk_add_options MOZILLA_OFFICIAL=0
mk_add_options MOZ_MAKE_FLAGS="%{_smp_mflags}"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
mk_add_options AUTOCLOBBER=1
ac_add_options --enable-application=palemoon
ac_add_options --datadir="%{_datadir}"
ac_add_options --host=%{_host}
ac_add_options --includedir="%{_includedir}"
ac_add_options --libdir="%{_libdir}"
ac_add_options --prefix="%{_prefix}"
ac_add_options --target=%{_target_platform}
# https://github.com/MoonchildProductions/UXP/issues/1073
ac_add_options --disable-accessibility
ac_add_options --disable-crashreporter
ac_add_options --disable-debug
ac_add_options --disable-official-branding
ac_add_options --disable-tests
ac_add_options --disable-updater
ac_add_options --disable-webrtc
ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-extensions=default
ac_add_options --enable-gio
ac_add_options --enable-jemalloc
ac_add_options --enable-libproxy
ac_add_options --enable-startup-notification
ac_add_options --with-distribution-id=org.rosa
ac_add_options --with-pthreads
%if %{mdkver} > 201610
ac_add_options --disable-optimize
%else
ac_add_options --enable-optimize
%endif
EOF
./mach build
%install
make -C %{_builddir}/obj/application/palemoon/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
# Copy files to buildroot
mkdir -p %{buildroot}%{mozillalibdir}
cp -rf %{_builddir}/obj/dist/palemoon/* %{buildroot}%{mozillalibdir}
mkdir -p %{buildroot}%{_bindir}
ln -sf %{mozillalibdir}/palemoon %{buildroot}%{_bindir}/newmoon
mkdir -p %{buildroot}%{mozillalibdir}/browser/defaults/preferences/
install -m 644 %{SOURCE9} %{buildroot}%{mozillalibdir}/browser/defaults/preferences/kde.js
# Create and own %%_libdir/mozilla/plugins & newmoon extensions directories
mkdir -p %{buildroot}%{pluginsdir}
mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/%{newmoon_appid}
mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/%{newmoon_appid}
# (tpg) desktop entry
mkdir -p %{buildroot}%{_datadir}/applications
install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/applications/%{name}.desktop
# (tpg) icons
for i in 16 22 24 32 48 128; do
# (cg) Not all icon sizes are installed with make install, so just redo it here.
convert %{_builddir}/obj/dist/palemoon/browser/icons/mozicon128.png -scale ${i}x${i} %{buildroot}%{mozillalibdir}/browser/chrome/icons/default/default${i}.png
mkdir -p %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps
ln -sf %{mozillalibdir}/browser/chrome/icons/default/default$i.png %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps/%{name}.png ;
done
# exclusions
rm -f %{buildroot}%{mozillalibdir}/README.txt
rm -f %{buildroot}%{mozillalibdir}/removed-files
rm -f %{buildroot}%{mozillalibdir}/precomplete
install -D -m644 application/palemoon/app/profile/prefs.js %{buildroot}%{mozillalibdir}/browser/defaults/preferences/prefs.js
cat << EOF >> %{buildroot}%{mozillalibdir}/browser/defaults/preferences/prefs.js
pref("app.update.auto", false);
pref("app.update.autoInstallEnabled", false);
pref("app.update.enabled", false);
pref("browser.EULA.override", true);
pref("browser.backspace_action", 2);
pref("browser.ctrlTab.previews", true);
pref("browser.display.use_system_colors", true);
pref("browser.download.folderList", 1);
pref("browser.link.open_external", 3);
pref("browser.newtab.url", "file:///usr/share/doc/HTML/index.html");
pref("browser.search.openintab", true);
pref("browser.shell.checkDefaultBrowser", false);
pref("browser.startup.homepage", "file:///usr/share/doc/HTML/index.html");
pref("browser.startup.page", 1);
pref("browser.tabs.insertRelatedAfterCurrent", false);
pref("browser.tabs.onTop", true);
pref("dom.ipc.plugins.enabled.nswrapper*", false);
pref("extensions.autoDisableScopes", 0);
pref("extensions.shownSelectionUI", true);
pref("general.useragent.compatMode", 2);
pref("intl.locale.matchOS", true);
pref("network.manage-offline-status", true);
pref("startup.homepage_welcome_url", "file:///usr/share/doc/HTML/first_startup.html");
EOF
install -m644 %{SOURCE2} %{buildroot}%{mozillalibdir}/browser/defaults/preferences/xulstore.json
# use the system myspell dictionaries
%if %{with syshunspell}
rm -fr %{buildroot}%{mozillalibdir}/dictionaries
ln -s %{_datadir}/dict/mozilla/ %{buildroot}%{mozillalibdir}/dictionaries
%else
rm -fr %{buildroot}%{mozillalibdir}/dictionaries
mkdir -p %{buildroot}%{mozillalibdir}/dictionaries
tar xjf %{SOURCE10} -C %{buildroot}%{mozillalibdir}/dictionaries
%endif
# (lm) touch and %%ghost bookmarks.html to a proper uninstall
touch %{buildroot}%{mozillalibdir}/browser/defaults/preferences/bookmarks.html
# search engines
mkdir -p %{buildroot}%{mozillalibdir}/browser/searchplugins
cp -f %{SOURCE5} %{buildroot}%{mozillalibdir}/browser/searchplugins/yandex.xml
cp -f %{SOURCE6} %{buildroot}%{mozillalibdir}/browser/searchplugins/google.xml
cp -f application/palemoon/locales/en-US/searchplugins/bing.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/bing.xml
cp -f application/palemoon/locales/en-US/searchplugins/duckduckgo-palemoon.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/duckduckgo-palemoon.xml
cp -f application/palemoon/locales/en-US/searchplugins/wikipedia.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/wikipedia.xml
cp -f application/palemoon/locales/en-US/searchplugins/yahoo.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/yahoo.xml
mkdir -p %{buildroot}%{_sys_macros_dir}
cat <<FIN >%{buildroot}%{_sys_macros_dir}/%{name}.macros
# Macros from %{name} package
%%newmoon_major %{version}
%%newmoon_version %{version}
%%newmoon_mozillapath %{mozillalibdir}
%%newmoon_pluginsdir %{pluginsdir}
%%newmoon_appid \{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4\}
%%newmoon_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{newmoon_appid}; else echo %%{_libdir}/mozilla/extensions/%%{newmoon_appid}; fi)
FIN