%ifarch %{ix86} %define debug_package %{nil} %endif %bcond_with clang %bcond_with syshunspell %define oname Pale-Moon %define newmoon_appid \{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4\} %define uxp_version 20210330 # (tpg) MOZILLA_FIVE_HOME %define mozillalibdir %{_libdir}/%{name}-%{version} %define pluginsdir %{_libdir}/mozilla/plugins # For bundled NSS. copied from firefox.spec # Do not make provides from plugins /usr/lib64/*/*.so %global __provides_exclude_from ^%{_libdir}/.*/.*\\.so$ # Do not require filtered out provides # To inspect them: # for i in /usr/lib64/firefox/* ; do if file $i | grep -q ELF ; then echo ; echo -- $i ; LC_ALL=C ldd $i | grep found ; fi; done # To make this list: # ( for i in /usr/lib64/firefox/* ; do if file $i | grep -q ELF ; then LC_ALL=C ldd $i | grep found | awk '{print $1}' | awk -F '\\.so' '{print $1}' ; fi; done ) | sort -u | tr '\n' '|' %global __requires_exclude ^(liblgpllibs|libmozavutil|libmozgtk|libmozsandbox|libmozsqlite3|libmozwayland|libnspr4|libnss3|libnssutil3|libplc4|libplds4|libsmime3|libssl3|libxul)\\.so.*$ Summary: Web browser based on Goanna engine Name: newmoon Version: 29.2.0 Release: 2 License: MPLv2.0 Group: Networking/WWW Url: http://www.palemoon.org Source0: https://repo.palemoon.org/MoonchildProductions/Pale-Moon/archive/%{version}_Release.tar.gz?/%{oname}-%{version}_Release.tar.gz Source1: https://github.com/MoonchildProductions/UXP/archive/refs/tags/RELBASE_%{uxp_version}.tar.gz Source2: xulstore.json Source3: newmoon.rpmlintrc 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 Patch5: palemoon-28.9.1-enable-addons.patch Patch6: palemoon-28.9.1-user-agent-overrides.patch # The following headers are used less widely in libstdc++ # and may need to be included explicitly when compiled with GCC 11 Patch7: newmoon-gcc11.patch BuildRequires: autoconf2.1 %if %{with clang} BuildRequires: clang BuildRequires: clang-devel BuildRequires: lld %endif BuildRequires: doxygen BuildRequires: imagemagick BuildRequires: makedepend BuildRequires: python3-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} Recommends: hunspell-en %endif Recommends: %{_lib}canberra0 Recommends: %{_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 %{_rpmmacrodir}/*%{name}* #---------------------------------------------------------------------------- %prep %setup -qn pale-moon -a1 if [ -d %{_builddir}/obj ] then rm -rf %{_builddir}/obj fi rm -rf platform mv UXP-RELBASE_%{uxp_version} platform %patch1 -p1 -b .prefs %patch5 -p1 -b .addons %patch6 -p1 -b .ua %patch7 -p1 # delete unofficial.shtml sed -i -e "31d" palemoon/branding/unofficial/pref/palemoon-branding.js pushd platform/js/src autoconf-2.13 popd autoconf-2.13 %build %ifarch %{ix86} %global optflags %(echo %{optflags} | sed -e 's/-gdwarf-4//' -e 's/-Wa,--compress-debug-sections//') %endif %if %{with clang} export CC=clang export CXX=clang++ export LINKER=ld.lld export CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-defaulted-function-deleted -Wno-enum-compare-switch -Wno-unused-private-field -Wno-unreachable-code -Wno-sign-compare" export CXXFLAGS="$CFLAGS -fpermissive" %global optflags %(echo %{optflags} | sed -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//') %else %setup_compile_flags CFLAGS=$(echo %{optflags} | sed -e 's/-fexceptions//') CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-ignored-optimization-argument" 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-debug-symbols ac_add_options --disable-official-branding ac_add_options --disable-optimize ac_add_options --disable-startupcache 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 EOF ./mach build --verbose %install make -C %{_builddir}/obj/palemoon/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0 # Copy files to buildroot mkdir -p %{buildroot}%{mozillalibdir} cp -rfL %{_builddir}/obj/dist/bin/* %{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/bin/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 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("general.useragent.override.consultant.ru", "Mozilla/5.0 (X11; Linux %{_target_cpu}; rv:78.0) Gecko/20100101 Firefox/78.0"); 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 palemoon/locales/en-US/searchplugins/bing.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/bing.xml cp -f palemoon/locales/en-US/searchplugins/duckduckgo-palemoon.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/duckduckgo-palemoon.xml cp -f palemoon/locales/en-US/searchplugins/wikipedia.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/wikipedia.xml cp -f palemoon/locales/en-US/searchplugins/yahoo.xml %{buildroot}%{mozillalibdir}/browser/searchplugins/yahoo.xml cat <macro # 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 %install_macro %{name} macro