newmoon/newmoon.spec
2018-05-29 01:25:46 +03:00

321 lines
12 KiB
RPMSpec

%bcond_with syshunspell
%define oname Pale-Moon
%define newmoon_appid \{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4\}
# (tpg) MOZILLA_FIVE_HOME
%define mozillalibdir %{_libdir}/%{name}-%{version}
%define pluginsdir %{_libdir}/mozilla/plugins
# this seems fragile, so require the exact version or later (#58754)
%define sqlite3_version %(pkg-config --modversion sqlite3 &>/dev/null && pkg-config --modversion sqlite3 2>/dev/null || echo 0)
%define nss_version %(pkg-config --modversion nss &>/dev/null && pkg-config --modversion nss 2>/dev/null || echo 0)
%define nspr_version %(pkg-config --modversion nspr &>/dev/null && pkg-config --modversion nspr 2>/dev/null |sed -e 's!\.0!!' || echo 0)
# We cannot use "Pale Moon" branding because of various restrictions, see:
# http://www.palemoon.org/branding.shtml
Summary: Web browser based on Goanna engine
Name: newmoon
Version: 27.9.2
Release: 1
License: MPLv2.0
Group: Networking/WWW
Url: http://www.palemoon.org
Source0: https://github.com/MoonchildProductions/Pale-Moon/archive/%{version}_Release.tar.gz?/%{oname}-%{version}_Release.tar.gz
Source2: icons.tar.bz2
Source1: xulstore.json
Source4: %{name}.desktop
Source5: firefox-searchengines-yandex.xml
Source6: firefox-searchengines-google.xml
Source9: kde.js
Patch1: palemoon-27.4.0-lang.patch
Patch3: palemoon-27.4.0-disable-check-default-browser.patch
Patch5: firefox-3.5.3-default-mail-handler.patch
Patch6: palemoon-27.4.0-enable-addons.patch
Patch7: palemoon-27.4.0-user-agent-overrides.patch
# Patches for KDE integration of New Moon
Patch11: palemoon-27.3.0-firefox-kde.patch
Patch12: palemoon-27.4.0-mozilla-kde.patch
Patch13: mozilla-kde-background.patch
BuildRequires: autoconf2.1
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: jpeg-devel
BuildRequires: nss-static-devel
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(dbus-glib-1)
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)
%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(nspr)
# In fact, doesn't support system nss (as for 26.3.1)
BuildRequires: pkgconfig(nss) >= 3.21
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(pixman-1)
BuildRequires: pkgconfig(python)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xscrnsaver)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(zlib)
Requires: %{_lib}nspr4 >= 2:%{nspr_version}
Requires: %{_lib}nss3 >= 2:%{nss_version}
Requires: %{_lib}sqlite3_0 >= %{sqlite3_version}
Requires: indexhtml
Requires: xdg-utils
# fixes bug #42096
Requires: mailcap
Suggests: hunspell-en
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
%{_libdir}/%{name}-%{version}*
%dir %{_libdir}/mozilla
%dir %{_libdir}/mozilla/extensions
%dir %{pluginsdir}
%dir %{_libdir}/mozilla/extensions/%{newmoon_appid}
%dir %{_datadir}/mozilla/extensions/%{newmoon_appid}
#----------------------------------------------------------------------------
%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 %{oname}-%{version}_Release
tar xf %{SOURCE2}
%patch1 -p1 -b .lang
%patch3 -p1 -b .disable-software-update
%patch5 -p1 -b .default-mail-handler
%patch6 -p1 -b .addons
%patch7 -p1 -b .ua
# KDE integration
%patch11 -p1 -b .kdepatch
%patch12 -p1 -b .kdemoz
%patch13 -p1 -b .kdebackground
pushd js/src
autoconf-2.13
popd
autoconf-2.13
%build
%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
export MOZCONFIG=`pwd`/mozconfig
cat << EOF > $MOZCONFIG
mk_add_options MOZILLA_OFFICIAL=0
mk_add_options BUILD_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 --host=%{_host}
ac_add_options --target=%{_target_platform}
ac_add_options --enable-optimize
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 --datadir="%{_datadir}"
ac_add_options --with-system-nspr
ac_add_options --without-system-nss
ac_add_options --with-system-zlib
ac_add_options --with-pthreads
ac_add_options --enable-webm
ac_add_options --disable-webrtc
ac_add_options --enable-ogg
ac_add_options --enable-jemalloc
ac_add_options --enable-gio
ac_add_options --disable-gnomevfs
ac_add_options --disable-updater
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --without-system-libvpx
ac_add_options --disable-official-branding
ac_add_options --enable-libproxy
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo
ac_add_options --enable-system-pixman
ac_add_options --enable-canvas
ac_add_options --enable-svg
ac_add_options --enable-system-sqlite
ac_add_options --enable-extensions=default
ac_add_options --enable-startup-notification
ac_add_options --enable-libnotify
ac_add_options --enable-xinerama
ac_add_options --with-distribution-id=org.rosa
ac_add_options --disable-crashreporter
ac_add_options --enable-gstreamer
ac_add_options --with-valgrind
ac_add_options --disable-javaxpcom
ac_add_options --enable-opus
ac_add_options --enable-default-toolkit=cairo-gtk2
EOF
perl -p -i -e 's|\-0|\-9|g' config/make-jars.pl
export LDFLAGS="%{ldflags}"
make -f client.mk build
%install
make -C %{_builddir}/obj/browser/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
cp %{buildroot}%{mozillalibdir}/browser/chrome/icons/default/default16.png %{buildroot}/%{mozillalibdir}/browser/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 browser/branding/unofficial/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 browser/app/profile/prefs.js %{buildroot}%{mozillalibdir}/browser/defaults/profile/prefs.js
cat << EOF >> %{buildroot}%{mozillalibdir}/browser/defaults/profile/prefs.js
user_pref("browser.EULA.override", true);
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.ctrlTab.previews", true);
user_pref("browser.tabs.insertRelatedAfterCurrent", false);
user_pref("browser.tabs.onTop", true);
user_pref("startup.homepage_welcome_url", "file:///usr/share/branding-configs/fresh/first_startup.html");
user_pref("browser.startup.homepage", "file:///usr/share/doc/HTML/index.html");
user_pref("browser.startup.page", 1);
user_pref("browser.newtab.url", "about:newtab");
user_pref("browser.search.openintab", true);
user_pref("browser.backspace_action", 2);
user_pref("browser.display.use_system_colors", true);
user_pref("browser.download.folderList", 1);
user_pref("browser.link.open_external", 3);
user_pref("app.update.auto", false);
user_pref("app.update.enabled", false);
user_pref("app.update.autoInstallEnabled", false);
user_pref("dom.ipc.plugins.enabled.nswrapper*", false);
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.shownSelectionUI", true);
user_pref("network.manage-offline-status", true);
EOF
install -m644 %{SOURCE1} %{buildroot}%{mozillalibdir}/browser/defaults/profile/xulstore.json
# display icon for New Moon button
mkdir -p %{buildroot}%{mozillalibdir}/browser/defaults/profile/chrome
cat << EOF > %{buildroot}%{mozillalibdir}/browser/defaults/profile/chrome/userChrome.css
#appmenu-toolbar-button {
list-style-image: url("chrome://branding/content/icon16.png");
}
EOF
# use the system myspell dictionaries
rm -fr %{buildroot}%{mozillalibdir}/dictionaries
ln -s %{_datadir}/dict/mozilla/ %{buildroot}%{mozillalibdir}/dictionaries
# (lm) touch and %%ghost bookmarks.html to a proper uninstall
touch %{buildroot}%{mozillalibdir}/browser/defaults/profile/bookmarks.html
# search engines
rm -f %{buildroot}%{mozillalibdir}/browser/searchplugins/*
cp -f %{SOURCE5} %{buildroot}%{mozillalibdir}/browser/searchplugins/yandex.xml
cp -f %{SOURCE6} %{buildroot}%{mozillalibdir}/browser/searchplugins/google.xml
cp -f browser/locales/en-US/searchplugins/bing.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/bing.xml
cp -f browser/locales/en-US/searchplugins/duckduckgo-palemoon.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/duckduckgo-palemoon.xml
cp -f browser/locales/en-US/searchplugins/wikipedia.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/wikipedia.xml
cp -f browser/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