summaryrefslogtreecommitdiff
path: root/www-client/basilisk/basilisk-2020.11.25-r1.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'www-client/basilisk/basilisk-2020.11.25-r1.ebuild')
-rw-r--r--www-client/basilisk/basilisk-2020.11.25-r1.ebuild335
1 files changed, 335 insertions, 0 deletions
diff --git a/www-client/basilisk/basilisk-2020.11.25-r1.ebuild b/www-client/basilisk/basilisk-2020.11.25-r1.ebuild
new file mode 100644
index 000000000000..526951e56d1f
--- /dev/null
+++ b/www-client/basilisk/basilisk-2020.11.25-r1.ebuild
@@ -0,0 +1,335 @@
+# Copyright 2020 LiGurOs Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=7
+
+REQUIRED_BUILDSPACE='16G'
+GCC_SUPPORTED_VERSIONS="6.5 7.5 8.4 9.3 10.2 11.0"
+
+inherit eutils flag-o-matic pax-utils desktop xdg-utils
+
+KEYWORDS="*"
+DESCRIPTION="Basilisk Web Browser"
+HOMEPAGE="https://www.basilisk-browser.org/"
+UNIFIED="RELBASE_20201124"
+SRC_URI="https://repo.palemoon.org/MoonchildProductions/Basilisk/archive/v${PV}.tar.gz
+ https://repo.palemoon.org/MoonchildProductions/UXP/archive/${UNIFIED}.tar.gz"
+
+SLOT="0"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="
+ +official-branding
+ +optimize
+ cpu_flags_x86_sse
+ cpu_flags_x86_sse2
+ +shared-js
+ threads
+ debug
+ +jemalloc
+ -valgrind
+ dbus
+ -necko-wifi
+ gnome
+ +gconf
+ +gtk2
+ -gtk3
+ pulseaudio
+ +devtools
+ -system-sqlite -system-cairo -system-pixman -system-libevent -system-hunspell
+ -system-vpx -system-compress -system-images -system-nss -system-ffi
+"
+
+DEPEND="
+ >=dev-lang/perl-5.6
+ dev-lang/nasm
+ >=x11-libs/pango-1.22.0
+ >=dev-libs/glib-2.22
+ >=app-arch/brotli-1.0.9
+"
+
+RDEPEND="
+ x11-libs/libXt
+ app-arch/zip
+ media-libs/freetype
+ media-libs/fontconfig
+ optimize? ( sys-libs/glibc )
+ valgrind? ( dev-util/valgrind )
+ shared-js? ( virtual/libffi )
+ 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 )
+ media-libs/alsa-lib
+ pulseaudio? ( media-sound/pulseaudio )
+ media-video/ffmpeg[x264]
+ necko-wifi? ( net-wireless/wireless-tools )
+ system-cairo? ( >=x11-libs/cairo-1.10 )
+ system-compress?
+ (
+ >=sys-libs/zlib-1.2.3
+ app-arch/bzip2
+ )
+ system-images?
+ (
+ media-libs/libjpeg-turbo
+ media-libs/libpng:*[apng]
+ )
+ system-libevent? ( dev-libs/libevent )
+ system-ffi? ( dev-libs/libffi )
+ system-hunspell? ( app-text/hunspell )
+ system-nss? ( >=dev-libs/nss-3.41.4 )
+ system-pixman? ( >=x11-libs/pixman-0.19.2 )
+ system-sqlite? ( >=dev-db/sqlite-3.29.0[secure-delete] )
+ system-vpx? ( >=media-libs/libvpx-1.5.0 )
+"
+
+# autoconf 2.13 is still needed as the configure scripts are not updated yet
+# python 2.7 is also still needed as the mach build system can't handle python3
+BDEPEND="
+ ${RDEPEND}
+ >=sys-devel/autoconf-2.13:2.1
+ dev-lang/python:2.7"
+
+REQUIRED_USE="
+ optimize? ( !debug )
+ jemalloc? ( !valgrind )
+ ^^ ( gtk2 gtk3 )
+ necko-wifi? ( dbus )
+ official-branding? (
+ !system-sqlite !system-cairo !system-pixman !system-libevent !system-vpx
+ !system-compress !system-images !system-nss !system-ffi !system-hunspell
+ )
+"
+
+S="${WORKDIR}/basilisk"
+
+src_prepare() {
+ eapply_user
+ #mv ${WORKDIR}/UXP-${UNIFIED}/* ${S}/platform
+ mv ${WORKDIR}/uxp/* ${S}/platform
+ #mv ${WORKDIR}/UXP-${UNIFIED}/.[a-z]* ${S}/platform
+ mv ${WORKDIR}/uxp/.[a-z]* ${S}/platform
+ #rmdir ${WORKDIR}/UXP-${UNIFIED}
+ rmdir ${WORKDIR}/uxp
+ default
+}
+
+src_configure() {
+ # Basic configuration:
+ echo "ac_add_options --enable-application=basilisk" > "${S}/.mozconfig"
+ echo "ac_add_options --disable-updater" >> "${S}/.mozconfig"
+ echo "ac_add_options --disable-install-strip" >> "${S}/.mozconfig"
+ echo "ac_add_options --disable-accessibility" >> "${S}/.mozconfig"
+
+ if use official-branding; then
+ elog "You are enabling the official branding. You may not redistribute this build"
+ elog "to any users on your network or the internet. Doing so puts yourself into"
+ elog "a legal problem with Moonchild Productions."
+ elog "You can disable the official branding by emerging ${PN} _without_"
+ elog "the official-branding USE flag."
+ echo "ac_add_options --enable-official-branding" >> "${S}/.mozconfig"
+ fi
+
+ # System-* flags
+ # Some options aren't in configure.in anymore (e.g. webp, spelling)
+ if use system-compress; then
+ echo "ac_add_options --with-system-zlib" >> "${S}/.mozconfig"
+ echo "ac_add_options --with-system-bz2" >> "${S}/.mozconfig"
+ fi
+
+ if use system-libevent; then
+ echo "ac_add_options --with-system-libevent" >> "${S}/.mozconfig"
+ fi
+
+ if use system-nss; then
+ echo "ac_add_options --with-system-nss" >> "${S}/.mozconfig"
+ fi
+
+ if use system-images; then
+ echo "ac_add_options --with-system-jpeg" >> "${S}/.mozconfig"
+ echo "ac_add_options --with-system-png" >> "${S}/.mozconfig"
+ fi
+
+ if use system-vpx; then
+ echo "ac_add_options --with-system-libvpx" >> "${S}/.mozconfig"
+ fi
+
+ if use system-sqlite; then
+ echo "ac_add_options --with-system-sqlite" >> "${S}/.mozconfig"
+ fi
+
+ if use system-cairo; then
+ echo "ac_add_options --with-system-cairo" >> "${S}/.mozconfig"
+ fi
+
+ if use system-pixman; then
+ echo "ac_add_options --with-system-pixman" >> "${S}/.mozconfig"
+ fi
+
+ if use system-ffi; then
+ echo "ac_add_options --with-system-ffi" >> "${S}/.mozconfig"
+ 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
+ echo "ac_add_options --enable-optimize=\"${O}\"" >> "${S}/.mozconfig"
+ filter-flags '-O*' '-msse2' '-mfpmath=sse'
+ else
+ echo "ac_add_options --disable-optimize" >> "${S}/.mozconfig"
+ fi
+
+ if use threads; then
+ echo "ac_add_options --with-pthreads" >> "${S}/.mozconfig"
+ fi
+
+ if use debug; then
+ echo "mk_add_options MOZ_DEBUG_SYMBOLS=1" >> "${S}/.mozconfig"
+ echo "ac_add_options --enable-debug-symbols=\"-gdwarf-2\"" >> "${S}/.mozconfig"
+ fi
+
+ if ! use shared-js; then
+ echo "ac_add_options --disable-shared-js" >> "${S}/.mozconfig"
+ fi
+
+ if use jemalloc; then
+ echo "ac_add_options --enable-jemalloc" >> "${S}/.mozconfig"
+ fi
+
+ if use valgrind; then
+ echo "ac_add_options --enable-valgrind" >> "${S}/.mozconfig"
+ fi
+
+ if ! use dbus; then
+ echo "ac_add_options --disable-dbus" >> "${S}/.mozconfig"
+ fi
+
+ if ! use gnome; then
+ echo "ac_add_options --disable-gconf" >> "${S}/.mozconfig"
+ fi
+
+ if use gtk2; then
+ echo "ac_add_options --enable-default-toolkit=\"cairo-gtk2\"" >> "${S}/.mozconfig"
+ fi
+
+ if use gtk3; then
+ echo "ac_add_options --enable-default-toolkit=\"cairo-gtk3\"" >> "${S}/.mozconfig"
+ fi
+
+ if ! use necko-wifi; then
+ echo "ac_add_options --disable-necko-wifi" >> "${S}/.mozconfig"
+ fi
+
+ if ! use pulseaudio; then
+ echo "ac_add_options --disable-pulseaudio" >> "${S}/.mozconfig"
+ fi
+
+ if use devtools; then
+ echo "ac_add_options --enable-devtools" >> "${S}/.mozconfig"
+ fi
+
+ if ! use gconf; then
+ echo "ac_add_options --disable-gconf" >> "${S}/.mozconfig"
+ 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".
+ echo "ac_add_options --disable-precompiled-startupcache" >> "${S}/.mozconfig"
+
+ # Mainly to prevent system's NSS/NSPR from taking precedence over
+ # the built-in ones:
+ append-ldflags -Wl,-rpath="$EPREFIX/usr/$(get_libdir)/basilisk"
+
+ export MOZBUILD_STATE_PATH="${WORKDIR}/mach_state"
+ echo "mk_add_options PYTHON=$(which python2)" >> "${S}/.mozconfig"
+ echo "mk_add_options AUTOCONF=$(which autoconf-2.13)" >> "${S}/.mozconfig"
+ echo "mk_add_options MOZ_MAKE_FLAGS=\"${MAKEOPTS}\"" >> "${S}/.mozconfig"
+
+ # Shorten obj dir to limit some errors linked to the path size hitting
+ # a kernel limit (127 chars):
+ echo "mk_add_options MOZ_OBJDIR=\"@TOPSRCDIR@/o\"" >> "${S}/.mozconfig"
+
+ # 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
+ # Basilisk build system checks:
+ # See: https://gitweb.gentoo.org/proj/portage.git/tree/bin/isolated-functions.sh
+ export XARGS="$(which xargs)"
+ export SHELL="${SHELL:-${EPREFIX}/bin/bash}"
+ ${S}/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..."
+ ${S}/mach package || die
+ local extracted_dir="${T}/package"
+ mkdir -p "${extracted_dir}"
+ cd "${extracted_dir}"
+
+ einfo "Extracting the package..."
+ # Extract BuildID
+ BuildID=`awk 'BEGIN {FS="="} /BuildID/ { print $2 }' ${S}/o/dist/basilisk/platform.ini`
+ tar xJpf "${S}/${obj_dir}/dist/${PN}-${BuildID}.linux-${CTARGET_default%%-*}.tar.xz" || 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}/"{basilisk,basilisk-bin,plugin-container}
+
+ # Install icons and .desktop for menu entry:
+ cp -rL "${S}/${obj_dir}/dist/branding" "${extracted_dir}/"
+ local size sizes icon_path icon name
+ sizes="16 32 48"
+ icon_path="${extracted_dir}/branding"
+ icon="${PN}"
+ name="Basilisk"
+
+ 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"
+ newins "${icon_path}/mozicon128.png" "${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
+}
+
+pkg_postinst() {
+ # Update mimedb for the new .desktop file
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+}