diff --git a/README.md b/README.md index 622ba03..f0e71ba 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@

- + - + - - + + - + - +

@@ -28,6 +28,24 @@ A quick guide on how to test ebuilds will follow. Mostly to have fun. +## For whom? + +src_prepare overlay was based on a concept of [GURU](https://wiki.gentoo.org/wiki/Project:GURU) with the following exceptions: +- easier to get access to the master branch +- main contact with the src_prepare project is via [Matrix](https://matrix.to/#/#src_prepare:matrix.org) +- main git repo is hosted on [Gitlab](https://gitlab.com/src_prepare/src_prepare-overlay) with [Github](https://github.com/xgqt/src_prepare-overlay) and [Codeberg](https://codeberg.org/src_prepare/src_prepare-overlay) mirrors +- more freedom in creating ebuilds +- no requirement for GPG keys +- no requirement for private info + +src_prepare project doesn't want to overtake the GURU project, the course that the GURU project takes is more professional, src_prepare overlay is more open for ebuilds: +- binary packages from upstream +- from inexperienced users +- from software created by the src_prepare project itself +- live ebuilds +- programs that run under WINE (or other emulators) + + ## Adding the overlay ### Official list diff --git a/app-office/onlyoffice-bin/Manifest b/app-office/onlyoffice-bin/Manifest index 24ed869..5a13c74 100644 --- a/app-office/onlyoffice-bin/Manifest +++ b/app-office/onlyoffice-bin/Manifest @@ -1,2 +1,3 @@ DIST ONLYOFFICE-DesktopEditors-5.4.2_amd64.deb 163646374 BLAKE2B 19824eb921cd4262e5eb8f3b6bd70472e33d67badadc3d748ab325d90f980413c8e48e776058ebd23de804ca95bc6c87f70bc24bf53756ce0aa2417c9702db67 SHA512 2b85119722d9ba0d4112a2782d365e3eb29e3bce868b6dc68547caf14e2d4df6e4bcd94da2b31670b9574874f13b8a65a3d84aa2e58ce0eeea1f1b1a6aca6888 DIST ONLYOFFICE-DesktopEditors-5.5.1_amd64.deb 179305960 BLAKE2B 7d1e50b6a9fec1e2bd37ccf3988b35f908f752fb1925b1eccb2a9f113d8d50929cbd10bc9aed7f8b3f1315ee903bd8a4f78d9876bd8ddc25e6eefcc027c956fd SHA512 8a87eba1ed160b8ae89c949db427614a282e54b525562476ef7145a4d141b56723fd967b7171cd16aaa2d99922080c7c6ca2baa90d3823564885241c48ae97ea +DIST ONLYOFFICE-DesktopEditors-5.6.0_amd64.deb 180022552 BLAKE2B 841c1876f8d6713dcd1102e37989d4908cfe889f247e887f71b231810f35d0fb974177dfaa083c12276b56f318307c02cd411a40a73eba383915c9ccbb7129e7 SHA512 6a757d547d5bcd7b4c6e112fdb67d308d0e26e75d5e13fdea0767e2a5778f4cafd71821cc950cf191bcc4c91d7d5c32c0e7e935709b8572a19ac5937e05141c3 diff --git a/app-office/onlyoffice-bin/files/fixshellsyntax.patch b/app-office/onlyoffice-bin/files/fixshellsyntax.patch new file mode 100644 index 0000000..9349e0c --- /dev/null +++ b/app-office/onlyoffice-bin/files/fixshellsyntax.patch @@ -0,0 +1,13 @@ +diff --git a/usr/bin/onlyoffice-desktopeditors b/usr/bin/onlyoffice-desktopeditors +index 6fa731f..16e7b41 100755 +--- a/usr/bin/onlyoffice-desktopeditors ++++ b/usr/bin/onlyoffice-desktopeditors +@@ -68,7 +68,7 @@ set_names_ru() { + } + + check_templates() { +- if [ $1 != "--new-document-templates" ]; then ++ if [ "$1" != "--new-document-templates" ]; then + return 0 + fi + diff --git a/app-office/onlyoffice-bin/onlyoffice-bin-5.6.0.ebuild b/app-office/onlyoffice-bin/onlyoffice-bin-5.6.0.ebuild new file mode 100644 index 0000000..b7b72f7 --- /dev/null +++ b/app-office/onlyoffice-bin/onlyoffice-bin-5.6.0.ebuild @@ -0,0 +1,116 @@ +# Copyright 2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit desktop gnome2-utils multilib unpacker xdg-utils + +MY_PN="ONLYOFFICE-DesktopEditors" +MY_P="${MY_PN}-${PVR//r}" + +DESCRIPTION="onlyoffice is an office productivity suite (binary version)" +HOMEPAGE="https://www.onlyoffice.com/" + +KEYWORDS="~amd64" + +SRC_URI=" + amd64? ( + https://github.com/ONLYOFFICE/DesktopEditors/releases/download/${MY_P}/${PN/bin/desktopeditors}_amd64.deb -> ${MY_P}_amd64.deb + ) +" + +SLOT="0" +RESTRICT="mirror strip" +LICENSE="AGPL-3" +IUSE="" + +DEPEND=" + app-arch/bzip2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi + dev-libs/libxml2:2 + dev-libs/nss + dev-libs/atk + dev-qt/qtgui:5 + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtmultimedia:5 + dev-qt/qtwidgets:5 + dev-qt/qtx11extras:5 + dev-qt/qtsvg:5 + dev-qt/qtnetwork:5 + dev-qt/qtopengl:5 + media-libs/fontconfig:1.0 + media-libs/freetype:2 + media-libs/glu + media-libs/gst-plugins-base + media-libs/gstreamer + net-misc/curl + virtual/opengl + media-libs/tiff + sys-apps/util-linux + sys-libs/zlib + x11-libs/libdrm + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libxcb + x11-libs/libXdamage + x11-libs/libXdmcp + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrender + x11-libs/libXxf86vm + media-libs/libmng + media-fonts/dejavu + media-fonts/crosextrafonts-carlito + net-print/cups + net-misc/wget + x11-libs/cairo + x11-libs/gtk+:2 +" +RDEPEND=" + ${DEPEND} + dev-db/sqlite:3 + net-libs/libcurl-gnutls + !app-office/onlyoffice +" + +PATCHES=( "${FILESDIR}/fixshellsyntax.patch" ) + +S="${WORKDIR}" + +src_unpack(){ + unpack_deb ${A} +} + +src_install() { + mkdir -p "${D}" + cp -r . "${D}" + local res + for res in 16 24 32 48 64 128 256; do + doicon -s ${res} opt/onlyoffice/desktopeditors/asc-de-${res}.png + done + dosym "${EPREFIX}/usr/$(get_libdir)/libcurl-gnutls.so.4" "${EPREFIX}/opt/onlyoffice/desktopeditors/libcurl-gnutls.so.4" +} + +pkg_preinst(){ + gnome2_gconf_savelist + xdg_environment_reset +} + +pkg_postinst() { + gnome2_gconf_install + xdg_desktop_database_update + xdg_mimeinfo_database_update + xdg_icon_cache_update +} + +pkg_postrm() { + gnome2_gconf_uninstall + xdg_desktop_database_update + xdg_mimeinfo_database_update + xdg_icon_cache_update +} diff --git a/app-text/pandoc-bin/Manifest b/app-text/pandoc-bin/Manifest new file mode 100644 index 0000000..c38728f --- /dev/null +++ b/app-text/pandoc-bin/Manifest @@ -0,0 +1 @@ +DIST pandoc-2.10.1-linux-amd64.tar.gz 24738243 BLAKE2B b139274bbce6c8ee57ab9a29d6bd1bab23b543a8e93841dfa2f5640b944a5e927360517d9e9f840c73a6ca1455d678ef780577279f9cea34ea985ba2298de2c9 SHA512 5de8bcdf4c008e4521432cd4af86e7b8f6e309b8373a43b8d51b91825a1cc7e05fd59c24ef606b5ea92403383c9c5cb565f3c5f4335148b30cd4bc92211a7b83 diff --git a/app-text/pandoc-bin/metadata.xml b/app-text/pandoc-bin/metadata.xml new file mode 100644 index 0000000..0e026d7 --- /dev/null +++ b/app-text/pandoc-bin/metadata.xml @@ -0,0 +1,11 @@ + + + + + xgqt@protonmail.com + Maciej Barć + + + jgm/pandoc + + diff --git a/app-text/pandoc-bin/pandoc-bin-2.10.1.ebuild b/app-text/pandoc-bin/pandoc-bin-2.10.1.ebuild new file mode 100644 index 0000000..8037086 --- /dev/null +++ b/app-text/pandoc-bin/pandoc-bin-2.10.1.ebuild @@ -0,0 +1,45 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +MY_PN="${PN//-bin/}" +MY_P="${MY_PN}-${PV}" + +DESCRIPTION="Universal markup converter" +HOMEPAGE="https://pandoc.org" +SRC_URI="https://github.com/jgm/${MY_PN}/releases/download/${PV}/${MY_P}-linux-amd64.tar.gz" + +RESTRICT="mirror bindist" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="-* ~amd64" +IUSE="" + +RDEPEND=" + !app-text/${MY_PN} +" + +S="${WORKDIR}/${MY_P}" + +QA_PRESTRIPPED=" + usr/bin/${MY_PN} + usr/bin/${MY_PN}-citeproc +" + +src_unpack() { + default + + # manpages are gzipped + find . -name "*.gz" | xargs gunzip +} + +src_install() { + cd "${S}/bin" || die + dobin "${MY_PN}" + dobin "${MY_PN}-citeproc" + + cd "${S}/share/man/man1" || die + doman "${MY_PN}.1" + doman "${MY_PN}-citeproc.1" +} diff --git a/www-client/palemoon/palemoon-28.12.0.ebuild b/www-client/palemoon/palemoon-28.12.0.ebuild new file mode 100644 index 0000000..5088662 --- /dev/null +++ b/www-client/palemoon/palemoon-28.12.0.ebuild @@ -0,0 +1,253 @@ +# Copyright 2019-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +GCC_SUPPORTED_VERSIONS="4.9 5.4 7.3 8.2 8.3 9.2 9.3" +PYTHON_COMPAT=( python2_7 ) +REQUIRED_BUILDSPACE='9G' + +inherit palemoon-v1 git-r3 flag-o-matic pax-utils python-any-r1 + +DESCRIPTION="Pale Moon Web Browser" +HOMEPAGE="https://www.palemoon.org/" + +if [[ "${PV}" == *9999* ]]; then + EGIT_REPO_URI="https://github.com/MoonchildProductions/Pale-Moon.git" + KEYWORDS="" +else + EGIT_REPO_URI="https://github.com/MoonchildProductions/Pale-Moon.git" + EGIT_COMMIT="${PV}_Release" + KEYWORDS="~amd64" +fi + +RESTRICT="mirror" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +SLOT="0" +IUSE=" + cpu_flags_x86_sse + cpu_flags_x86_sse2 + dbus + +devtools + debug + gnome + -gtk2 + +gtk3 + jemalloc + pulseaudio + -necko-wifi + official-branding + +optimize + threads + -valgrind +" +REQUIRED_USE=" + optimize? ( + !debug + ) + jemalloc? ( + !valgrind + ) + ^^ ( + gtk2 + gtk3 + ) + necko-wifi? ( + dbus + ) +" + +DEPEND=" + ${PYTHON_DEPS} + >=dev-lang/perl-5.6 + >=sys-devel/autoconf-2.13:2.1 + dev-lang/yasm +" +RDEPEND=" + app-arch/zip + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + virtual/ffmpeg[x264] + x11-libs/libXt + dbus? ( + >=sys-apps/dbus-0.60 + >=dev-libs/dbus-glib-0.60 + ) + gnome? ( + gnome-base/gconf + ) + gtk2? ( + >=x11-libs/gtk+-2.18.0:2 + ) + gtk3? ( + >=x11-libs/gtk+-3.4.0:3 + ) + necko-wifi? ( + net-wireless/wireless-tools + ) + pulseaudio? ( + media-sound/pulseaudio + ) + valgrind? ( + dev-util/valgrind + ) + optimize? ( + sys-libs/glibc + ) +" + +src_prepare() { + + # Ensure that our plugins dir is enabled by default: + sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \ + "${S}/platform/xpcom/io/nsAppFileLocationProvider.cpp" \ + || die "sed failed to replace plugin path for 32bit!" + sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \ + "${S}/platform/xpcom/io/nsAppFileLocationProvider.cpp" \ + || die "sed failed to replace plugin path for 64bit!" + + default +} + +src_configure() { + + # Does not build with -fno-common + filter-flags -fno-common + append-flags -fcommon + + # Basic configuration: + mozconfig_init + + mozconfig_disable updater install-strip accessibility + + if use official-branding; then + official-branding_warning + mozconfig_enable official-branding + fi + + if use optimize; then + O='-O2' + if use cpu_flags_x86_sse && use cpu_flags_x86_sse2; then + O="${O} -msse2 -mfpmath=sse" + fi + mozconfig_enable "optimize=\"${O}\"" + filter-flags '-O*' '-msse2' '-mfpmath=sse' + else + mozconfig_disable optimize + fi + + if use threads; then + mozconfig_with pthreads + fi + + if use debug; then + mozconfig_var MOZ_DEBUG_SYMBOLS 1 + mozconfig_enable "debug-symbols=\"-gdwarf-2\"" + fi + + if use jemalloc; then + mozconfig_enable jemalloc + fi + + if use valgrind; then + mozconfig_enable valgrind + fi + + if ! use dbus; then + mozconfig_disable dbus + fi + + if ! use gnome; then + mozconfig_disable gconf + fi + + if use gtk2; then + mozconfig_enable default-toolkit=\"cairo-gtk2\" + fi + + if use gtk3; then + mozconfig_enable default-toolkit=\"cairo-gtk3\" + fi + + if ! use necko-wifi; then + mozconfig_disable necko-wifi + fi + + if ! use pulseaudio; then + mozconfig_disable pulseaudio + fi + + if use devtools; then + mozconfig_enable devtools + fi + + # Enabling this causes xpcshell to hang during the packaging process, + # so disabling it until the cause can be tracked down. It most likely + # has something to do with the sandbox since the issue goes away when + # building with FEATURES="-sandbox -usersandbox". + mozconfig_disable precompiled-startupcache + + # Mainly to prevent system's NSS/NSPR from taking precedence over + # the built-in ones: + append-ldflags -Wl,-rpath="${EPREFIX}/usr/$(get_libdir)/palemoon" + + export MOZBUILD_STATE_PATH="${WORKDIR}/mach_state" + mozconfig_var PYTHON "$(which python2)" + mozconfig_var AUTOCONF "$(which autoconf-2.13)" + mozconfig_var MOZ_MAKE_FLAGS "\"${MAKEOPTS}\"" + + # Shorten obj dir to limit some errors linked to the path size hitting + # a kernel limit (127 chars): + mozconfig_var MOZ_OBJDIR "@TOPSRCDIR@/o" + + # Disable mach notifications, which also cause sandbox access violations: + export MOZ_NOSPAM=1 +} + +src_compile() { + + # Prevents portage from setting its own XARGS which messes with the + # Pale Moon build system checks: + # See: https://gitweb.gentoo.org/proj/portage.git/tree/bin/isolated-functions.sh + XARGS="$(which xargs)" + export XARGS + + python2 "${S}/platform/mach" build || die +} + +src_install() { + + # obj_dir changes depending on arch, compiler, etc: + local obj_dir="$(echo */config.log)" + obj_dir="${obj_dir%/*}" + + # Disable MPROTECT for startup cache creation: + pax-mark m "${obj_dir}"/dist/bin/xpcshell + + # Set the backspace behaviour to be consistent with the other platforms: + set_pref "browser.backspace_action" 0 + + # Gotta create the package, unpack it and manually install the files + # from there not to miss anything (e.g. the statusbar extension): + einfo "Creating the package..." + python2 "${S}/platform/mach" mozpackage || die + local extracted_dir="${T}/package" + mkdir -p "${extracted_dir}" + cd "${extracted_dir}" + einfo "Extracting the package..." + find "${S}/${obj_dir}/dist/" -name "*.bz2" -printf "${S}/${obj_dir}/dist/%P" | xargs tar xjpf || die + einfo "Installing the package..." + local dest_libdir="/usr/$(get_libdir)" + mkdir -p "${D}/${dest_libdir}" + cp -rL "${PN}" "${D}/${dest_libdir}" + dosym "${dest_libdir}/${PN}/${PN}" "/usr/bin/${PN}" + einfo "Done installing the package." + + # Until JIT-less builds are supported, + # also disable MPROTECT on the main executable: + pax-mark m "${D}/${dest_libdir}/${PN}/"{palemoon,palemoon-bin,plugin-container} + + # Install icons and .desktop for menu entry: + install_branding_files +} diff --git a/www-client/palemoon/palemoon-9999.ebuild b/www-client/palemoon/palemoon-9999.ebuild index 7c8954a..5088662 100644 --- a/www-client/palemoon/palemoon-9999.ebuild +++ b/www-client/palemoon/palemoon-9999.ebuild @@ -33,7 +33,7 @@ IUSE=" gnome -gtk2 +gtk3 - +jemalloc + jemalloc pulseaudio -necko-wifi official-branding diff --git a/www-client/waterfox/Manifest b/www-client/waterfox/Manifest index 461f50d..8eda102 100644 --- a/www-client/waterfox/Manifest +++ b/www-client/waterfox/Manifest @@ -1,3 +1,4 @@ DIST firefox-56.0-patches-07.tar.xz 12696 BLAKE2B 60fe9e4aee235bebd1ceeeca9f455b5129368e3b83a1a7487e912d28642f2c67f0041f10333f05ce5a17b8b0db05e33730c972038e72c0250551194316a6dfa6 SHA512 b7f1b32b8dc563b2c0c6b12eb1698fbd145c9b45597ef0f46159888e1c792f944c92cd1c1e3d0a5b36a3cf3cdc2f7ae9e8c537adbbfa6a1ce293311d3956a2d2 DIST waterfox-2020.05.tar.gz 409604600 BLAKE2B 2ba76eea8623c27c9bfa4baa182a89c5f6734c107082032cf49a4f3bdda340b3d65c54337553908f8cf8657d9da515d3fa6d3536b4d5ff869092582a85de7e0b SHA512 50bc6c8f2d8a1c9d529c75b466413343a1475fca3b5177067b01f4de19c22a437f549824d19f97b49f0383c146f728a2ebd296daeb0c354c3a3d9ca0db86346f DIST waterfox-2020.07.1.tar.gz 410117026 BLAKE2B 5c2a54caa27c3dec323c1f66110e288ab84b45b6001eb78ff3623d992d1cea3ea4b6378e1c18e0618ace9f049d341c987cc25231a6d10bec2f3f4df96d20bfe5 SHA512 28c111de097e165fe9e80d20f92e68ef095a10fd136bc906c1ec75ebf4af0aacb31e6f10d74222438014f5d579d68c773cae6e7aedfb78e869fb8d26372d569e +DIST waterfox-2020.07.2.tar.gz 410119190 BLAKE2B dded02d62a61e664ddf1a24fbfecf7381d5a26dd0360e2fb0844aae79a815e02046fcb997c4e2f355f853a6b5432402c97ed6d45a5fe515707c631345edc2cb2 SHA512 9a554067a9b19d06d6fd3d20f9743d484138130516dd099d0656f4b0a911cbab8c38e0286fd7c0ed66aefebf6c3f1af609c09f4c7fead77278b69f14794bb6d4 diff --git a/www-client/waterfox/waterfox-2020.07.2.ebuild b/www-client/waterfox/waterfox-2020.07.2.ebuild new file mode 100644 index 0000000..d6c8b9d --- /dev/null +++ b/www-client/waterfox/waterfox-2020.07.2.ebuild @@ -0,0 +1,410 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +VIRTUALX_REQUIRED="pgo" +WANT_AUTOCONF="2.1" +MOZ_ESR="" + +# This list can be updated with scripts/get_langs.sh from the mozilla overlay +MOZ_LANGS=( ach af an ar as ast az bg bn-BD bn-IN br bs ca cak cs cy da de dsb +el en en-GB en-US en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE +gd gl gn gu-IN he hi-IN hr hsb hu hy-AM id is it ja ka kab kk km kn ko lij lt lv +mai mk ml mr ms nb-NO nl nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq +sr sv-SE ta te th tr uk uz vi xh zh-CN zh-TW ) + +# Patch version +PATCH="firefox-56.0-patches-07" +#PATCH="waterfox-2019.12-patches-01" +MOZ_HTTP_URI="https://github.com/MrAlex94/Waterfox/archive" +#MOZ_LANGPACK_HTTP_URI="https://github.com/MrAlex94/www.waterfoxproject.org" + +MOZCONFIG_OPTIONAL_WIFI=1 + +inherit check-reqs eapi7-ver flag-o-matic toolchain-funcs eutils gnome2-utils \ + mozconfig-v6.56 pax-utils xdg-utils autotools virtualx + +MY_PV="${PV}-classic" + +DESCRIPTION="Waterfox Web Browser" +HOMEPAGE="http://www.waterfoxproject.org" + +RESTRICT=" + !test? ( test ) + mirror +" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64" +IUSE=" + +gmp-autoupdate + eme-free + hardened + hwaccel + jack + nsplugin + pgo + selinux + test +" + +PATCH_URIS=( https://dev.gentoo.org/~{anarchy,axs,polynomial-c}/mozilla/patchsets/${PATCH}.tar.xz ) + +SRC_URI=" + ${MOZ_HTTP_URI}/${MY_PV}.tar.gz -> ${P}.tar.gz + ${PATCH_URIS[@]} +" + +ASM_DEPEND=" + >=dev-lang/yasm-1.1 +" +RDEPEND=" + >=dev-libs/nss-3.32.1 + >=dev-libs/nspr-4.16 + jack? ( + virtual/jack + ) + selinux? ( + sec-policy/selinux-mozilla + ) +" +DEPEND=" + ${RDEPEND} + virtual/rust + pgo? ( + >=sys-devel/gcc-4.5 + ) + amd64? ( + ${ASM_DEPEND} virtual/opengl + ) + x86? ( + ${ASM_DEPEND} virtual/opengl + ) +" + +S="${WORKDIR}/${PN^}-${MY_PV}" + +QA_PRESTRIPPED="usr/lib*/${PN}/waterfox" + +BUILD_OBJ_DIR="${S}/wf" + +# allow GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z ${GMP_PLUGIN_LIST} ]]; then + GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +pkg_setup() { + moz_pkgsetup + + # Avoid PGO profiling problems due to enviroment leakage + # These should *always* be cleaned up anyway + unset DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + ORBIT_SOCKETDIR \ + SESSION_MANAGER \ + XDG_SESSION_COOKIE \ + XAUTHORITY + + if use pgo; then + einfo + ewarn "You will do a double build for profile guided optimization." + ewarn "This will result in your build taking at least twice as long as before." + fi +} + +pkg_pretend() { + # Ensure we have enough disk space to compile + if use pgo || use debug || use test ; then + CHECKREQS_DISK_BUILD="8G" + else + CHECKREQS_DISK_BUILD="4G" + fi + check-reqs_pkg_setup +} + +src_prepare() { + local patch_exclude=( + 1000_gentoo_install_dir.patch + 2001_system_harfbuzz.patch + 2002_system_graphite2.patch + ) + + local mpatch + for mpatch in ${patch_exclude[@]} ; do + if [[ -f "${FILESDIR}"/${mpatch} ]] ; then + cp "${FILESDIR}"/${mpatch} \ + "${WORKDIR}"/firefox/ || die + else + rm "${WORKDIR}"/firefox/${mpatch} || die + fi + done + + # Apply our patches + eapply "${WORKDIR}/firefox" + + #eapply "${FILESDIR}/${P}-classic-version.patch" + + # Enable gnomebreakpad + if use debug ; then + sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \ + "${S}"/build/unix/run-mozilla.sh || die "sed failed!" + fi + + # Drop -Wl,--as-needed related manipulation for ia64 as it causes ld sefgaults, bug #582432 + if use ia64 ; then + sed -i \ + -e '/^OS_LIBS += no_as_needed/d' \ + -e '/^OS_LIBS += as_needed/d' \ + "${S}"/widget/gtk/mozgtk/gtk2/moz.build \ + "${S}"/widget/gtk/mozgtk/gtk3/moz.build \ + || die "sed failed to drop --as-needed for ia64" + fi + + # Ensure that our plugins dir is enabled as default + sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \ + "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 32bit!" + sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \ + "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 64bit!" + + # Fix sandbox violations during make clean, bug 372817 + sed -e "s:\(/no-such-file\):${T}\1:g" \ + -i "${S}"/config/rules.mk \ + -i "${S}"/nsprpub/configure{.in,} \ + || die + + # Don't exit with error when some libs are missing which we have in + # system. + sed '/^MOZ_PKG_FATAL_WARNINGS/s@= 1@= 0@' \ + -i "${S}"/browser/installer/Makefile.in || die + + # Don't error out when there's no files to be removed: + sed 's@\(xargs rm\)$@\1 -f@' \ + -i "${S}"/toolkit/mozapps/installer/packager.mk || die + + # Keep codebase the same even if not using official branding + #sed '/^MOZ_DEV_EDITION=1/d' \ + # -i "${S}"/browser/branding/aurora/configure.sh || die + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Autotools configure is now called old-configure.in + # This works because there is still a configure.in that happens to be for the + # shell wrapper configure script + eautoreconf old-configure.in + + # Must run autoconf in js/src + cd "${S}"/js/src || die + eautoconf old-configure.in +} + +src_configure() { + MEXTENSIONS="default" + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + _google_api_key=AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc + + #################################### + # + # mozconfig, CFLAGS and CXXFLAGS setup + # + #################################### + + mozconfig_init + mozconfig_config + + # enable JACK, bug 600002 + mozconfig_use_enable jack + + use eme-free && mozconfig_annotate '+eme-free' --disable-eme + + # It doesn't compile on alpha without this LDFLAGS + use alpha && append-ldflags "-Wl,--no-relax" + + # Add full relro support for hardened + if use hardened; then + append-ldflags "-Wl,-z,relro,-z,now" + mozconfig_use_enable hardened hardening + fi + + # Setup api key for location services + echo -n "${_google_api_key}" > "${S}"/google-api-key + mozconfig_annotate '' --with-google-api-keyfile="${S}/google-api-key" + + mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}" + + # Waterfox specific stuff + mozconfig_annotate 'Waterfox' --disable-elf-hack + mozconfig_annotate 'Waterfox' --with-app-name=${PN} + mozconfig_annotate 'Waterfox' --with-app-basename=${PN} + mozconfig_annotate 'Waterfox' --with-branding=browser/branding/unofficial + mozconfig_annotate 'Waterfox' --with-distribution-id=org.waterfoxproject + + # Allow for a proper pgo build + if use pgo; then + echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> "${S}"/.mozconfig + fi + + echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig + echo "mk_add_options XARGS=/usr/bin/xargs" >> "${S}"/.mozconfig + + # Finalize and report settings + mozconfig_final + + # workaround for funky/broken upstream configure... + SHELL="${SHELL:-${EPREFIX}/bin/bash}" \ + emake -f client.mk configure +} + +src_compile() { + if use pgo; then + addpredict /root + addpredict /etc/gconf + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + # Firefox tries to use dri stuff when it's run, see bug 380283 + shopt -s nullglob + cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if test -z "${cards}"; then + cards=$(echo -n /dev/ati/card* /dev/nvidiactl* | sed 's/ /:/g') + if test -n "${cards}"; then + # Binary drivers seem to cause access violations anyway, so + # let's use indirect rendering so that the device files aren't + # touched at all. See bug 394715. + export LIBGL_ALWAYS_INDIRECT=1 + fi + fi + shopt -u nullglob + [[ -n "${cards}" ]] && addpredict "${cards}" + + MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \ + virtx emake -f client.mk profiledbuild || die "virtx emake failed" + else + MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \ + emake -f client.mk realbuild + fi + +} + +src_install() { + cd "${BUILD_OBJ_DIR}" || die + + # Pax mark xpcshell for hardened support, only used for startupcache creation. + pax-mark m "${BUILD_OBJ_DIR}"/dist/bin/xpcshell + + # Add our default prefs for firefox + cp "${FILESDIR}"/gentoo-default-prefs.js-1 \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + + mozconfig_install_prefs \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" + + # Augment this with hwaccel prefs + if use hwaccel ; then + cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-1 >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + fi + + echo "pref(\"extensions.autoDisableScopes\", 3);" >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + + if use nsplugin; then + echo "pref(\"plugin.load_flash_only\", false);" >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + fi + + local plugin + use gmp-autoupdate || use eme-free || for plugin in "${GMP_PLUGIN_LIST[@]}" ; do + echo "pref(\"media.${plugin}.autoupdate\", false);" >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + done + + MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \ + emake DESTDIR="${D}" install + + # Install language packs + #mozlinguas_src_install + + local size sizes icon_path icon name + + sizes="16 22 24 32 256" + icon_path="${S}/browser/branding/unofficial" + icon="${PN}" + name="Waterfox" + + # Install icons and .desktop for menu entry + for size in ${sizes}; do + insinto "/usr/share/icons/hicolor/${size}x${size}/apps" + newins "${icon_path}/default${size}.png" "${icon}.png" + done + # The 128x128 icon has a different name + insinto "/usr/share/icons/hicolor/128x128/apps" + doins "${icon_path}/${icon}.png" + # Install a 48x48 icon into /usr/share/pixmaps for legacy DEs + newicon "${icon_path}/default48.png" "${icon}.png" + newmenu "${FILESDIR}/icon/${PN}.desktop" "${PN}.desktop" + sed -i -e "s:@NAME@:${name}:" -e "s:@ICON@:${icon}:" \ + "${ED%/}/usr/share/applications/${PN}.desktop" \ + || die + + # Add StartupNotify=true bug 237317 + if use startup-notification ; then + echo "StartupNotify=true" >> \ + "${ED%/}/usr/share/applications/${PN}.desktop" || die + fi + + # Required in order to use plugins and even run firefox on hardened. + pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/{waterfox,waterfox-bin,plugin-container} +} + +pkg_preinst() { + gnome2_icon_savelist + + # if the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # doesn't need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.9" ; then + einfo "APULSE found - Generating library symlinks for sound support" + local lib + pushd "${ED}"${MOZILLA_FIVE_HOME} &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # a quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if ! [ -L ${lib##*/} ]; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +pkg_postinst() { + # Update mimedb for the new .desktop file + xdg_desktop_database_update + gnome2_icon_cache_update + + if ! use gmp-autoupdate && ! use eme-free ; then + elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" + elog "installing into new profiles:" + local plugin + for plugin in "${GMP_PLUGIN_LIST[@]}"; do elog "\t ${plugin}" ; done + fi + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.9"; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + fi +} + +pkg_postrm() { + gnome2_icon_cache_update +}