diff options
author | xiota | 2024-01-17 19:37:09 -0800 |
---|---|---|
committer | xiota | 2024-01-17 20:59:10 -0800 |
commit | 37f95524ba7bb3af87c4c7d1082e7978a2b45f02 (patch) | |
tree | bb84b007c09971a78fe0175d71167a2a56075882 | |
parent | 7a8b8adcf985fb52b405c8e5d88324750aee0055 (diff) | |
download | aur-37f95524ba7bb3af87c4c7d1082e7978a2b45f02.tar.gz |
11.2.r48: Floorp fork
-rw-r--r-- | .SRCINFO | 82 | ||||
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | PKGBUILD | 414 | ||||
-rw-r--r-- | midori-git.desktop | 9 | ||||
-rw-r--r-- | midori-git.sh | 2 | ||||
-rw-r--r-- | midori.desktop | 26 |
6 files changed, 476 insertions, 63 deletions
@@ -1,22 +1,70 @@ pkgbase = midori-git - pkgdesc = Lightweight Electron- and React-based web browser - pkgver = 10.0.2.r99.ea22c22 + pkgdesc = Web browser forked from Floorp + pkgver = 11.2.r48.gfb3b7133 pkgrel = 1 - url = https://astian.org/en/midori-browser-desktop - arch = any - license = LGPL3 + url = https://github.com/goastian/midori-desktop + arch = x86_64 + license = MPL-2.0 + makedepends = cbindgen + makedepends = clang + makedepends = diffutils + makedepends = dump_syms makedepends = git - makedepends = jq - makedepends = libxcrypt-compat - makedepends = npm - makedepends = yarn - depends = electron17 - depends = hicolor-icon-theme - source = git+https://gitlab.com/midori-web/midori-desktop.git - source = midori-git.sh - source = midori-git.desktop - b2sums = SKIP - b2sums = ed8e942ad985f6f8b501c3b7a7cc38e715481f9c9c8eeab429f960a1fad308194a09b2649d4274bdb42956804424000d2ea25585d2f0e40e5e8f87f910683294 - b2sums = ba608913f8e279fafbfc7503ebf5bd41cb40455357caad15d6bb9bd70c9fdfaa8513d1efdc400adba6c00584c6508bdb0aa6f88e5f63d16e9d6f1835d9606262 + makedepends = imake + makedepends = inetutils + makedepends = jack + makedepends = lld + makedepends = llvm + makedepends = mercurial + makedepends = mesa + makedepends = nasm + makedepends = nodejs + makedepends = python + makedepends = rust + makedepends = unzip + makedepends = wasi-compiler-rt + makedepends = wasi-libc + makedepends = wasi-libc++ + makedepends = wasi-libc++abi + makedepends = yasm + makedepends = zip + makedepends = weston + makedepends = xwayland-run + depends = dbus-glib + depends = ffmpeg + depends = gtk3 + depends = libevent + depends = libjpeg + depends = libpulse + depends = libvpx + depends = libwebp + depends = libxss + depends = libxt + depends = mime-types + depends = nspr + depends = nss + depends = pipewire + depends = ttf-font + depends = zlib + optdepends = hunspell-dictionary: Spell checking + optdepends = libnotify: Notification integration + optdepends = networkmanager: Location detection via available WiFi networks + optdepends = speech-dispatcher: Text-to-Speech + optdepends = xdg-desktop-portal: Screensharing with Wayland + provides = midori=11.2 + conflicts = midori + noextract = lss-v2022.10.12.tar.gz + options = !debug + options = !emptydirs + options = !lto + options = !strip + source = midori-tensei::git+https://github.com/goastian/midori-desktop.git + source = goastian.l10n-central::git+https://github.com/goastian/l10n-central.git + source = lss-v2022.10.12.tar.gz::https://chromium.googlesource.com/linux-syscall-support/+archive/refs/tags/v2022.10.12.tar.gz + source = midori.desktop + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = 7ef0f85f2b111caa08a3e855cb4b6595b6d0f62b3de13ce59eea94a580eec470 pkgname = midori-git diff --git a/.gitignore b/.gitignore index 6d41467897d0..018a3de08144 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ * -!.gitignore -!.SRCINFO -!midori-git.desktop -!midori-git.sh !PKGBUILD +!.SRCINFO +!.gitignore @@ -1,47 +1,399 @@ -# Maintainer: éclairevoyant +# Maintainer: +# Contributor: éclairevoyant -_electron=electron17 -_pkgname=midori -pkgname="$_pkgname-git" -pkgver=10.0.2.r99.ea22c22 +## useful links: +# https://astian.org/midori-browser/download/ +# https://github.com/goastian/midori-desktop + +## options +: ${_build_pgo:=true} +: ${_build_pgo_reuse:=true} + +: ${_build_git:=true} + +[[ "${_build_git::1}" == "t" ]] && _pkgtype+="-git" + +## basic info +_pkgname="midori" +pkgname="$_pkgname${_pkgtype:-}" +pkgver=11.2.r48.gfb3b7133 pkgrel=1 -pkgdesc='Lightweight Electron- and React-based web browser' -arch=('any') -url='https://astian.org/en/midori-browser-desktop' -license=('LGPL3') -depends=("$_electron" 'hicolor-icon-theme') -makedepends=('git' 'jq' 'libxcrypt-compat' 'npm' 'yarn') -_gitname='midori-desktop' -source=("git+https://gitlab.com/midori-web/$_gitname.git" - $pkgname.sh - $pkgname.desktop) -b2sums=('SKIP' - 'ed8e942ad985f6f8b501c3b7a7cc38e715481f9c9c8eeab429f960a1fad308194a09b2649d4274bdb42956804424000d2ea25585d2f0e40e5e8f87f910683294' - 'ba608913f8e279fafbfc7503ebf5bd41cb40455357caad15d6bb9bd70c9fdfaa8513d1efdc400adba6c00584c6508bdb0aa6f88e5f63d16e9d6f1835d9606262') +pkgdesc="Web browser forked from Floorp" +url="https://github.com/goastian/midori-desktop" +license=('MPL-2.0') +arch=(x86_64) + +# main package +_main_package() { + depends=( + dbus-glib + ffmpeg + gtk3 + libevent + libjpeg + libpulse + libvpx + libwebp + libxss + libxt + mime-types + nspr + nss + pipewire + ttf-font + zlib + ) + makedepends=( + cbindgen + clang + diffutils + dump_syms + git + imake + inetutils + jack + lld + llvm + mercurial + mesa + nasm + nodejs + python + rust + unzip + wasi-compiler-rt + wasi-libc + wasi-libc++ + wasi-libc++abi + yasm + zip + ) + optdepends=( + 'hunspell-dictionary: Spell checking' + 'libnotify: Notification integration' + 'networkmanager: Location detection via available WiFi networks' + 'speech-dispatcher: Text-to-Speech' + 'xdg-desktop-portal: Screensharing with Wayland' + ) + + if [[ "${_build_pgo::1}" == "t" ]] ; then + makedepends+=( + weston + xwayland-run # AUR + ) + fi + + provides=("$_pkgname=${pkgver%%.r*}") + conflicts=("$_pkgname") + + options=( + !debug + !emptydirs + !lto + !strip + ) + : ${_lssver:=v2022.10.12} + noextract=("lss-${_lssver}.tar.gz") + + _pkgsrc="midori-tensei" + _pkgext="tar.gz" + source=( + "$_pkgsrc"::"git+$url.git" + "goastian.l10n-central"::"git+https://github.com/goastian/l10n-central.git" + "lss-${_lssver}.tar.gz"::"https://chromium.googlesource.com/linux-syscall-support/+archive/refs/tags/${_lssver}.tar.gz" + "$_pkgname.desktop" + ) + sha256sums=( + 'SKIP' + 'SKIP' + 'SKIP' + '7ef0f85f2b111caa08a3e855cb4b6595b6d0f62b3de13ce59eea94a580eec470' + ) +} + +# common functions pkgver() { - cd $_gitname - printf "%s.r%s.%s" "$(jq '.version' <package.json | tr -d '"')" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + cd "$_pkgsrc" + git describe --long --tags --abbrev=8 --exclude='*[a-zA-Z][a-zA-Z]*' \ + | sed -E 's/^[^0-9]*//;s/([^-]*-g)/r\1/;s/-/./g' } prepare() { - sed -i "s/@ELECTRON@/$_electron/g" $pkgname.sh + mkdir -p mozbuild + + # submodules + ( + cd "$_pkgsrc" + local -A _submodules=( + ['goastian.l10n-central']='l10n-central' + ) + local key + for key in ${!_submodules[@]} ; do + git submodule init "${_submodules[${key}]}" + git submodule set-url "${_submodules[${key}]}" "${srcdir}/${key}" + git -c protocol.file.allow=always submodule update "${_submodules[${key}]}" + done + ) + + # prepare google breakpad + local _lss_path="toolkit/crashreporter/google-breakpad/src/third_party/lss" + mkdir -p "$_pkgsrc/$_lss_path" + bsdtar -xf "lss-${_lssver}.tar.gz" -C "$_pkgsrc/$_lss_path" + + # clear forced startup pages + sed -E 's&^\s*pref\("startup\.homepage.*$&&' -i "$_pkgsrc/browser/branding/official/pref/firefox-branding.js" + + # prepare api keys + cp "$_pkgsrc/floorp/apis"/api-*-key "$_pkgsrc/" - cd $_gitname - yarn install --no-fund + # configure + cd "$_pkgsrc" + cat >../mozconfig <<END +ac_add_options --enable-application=browser +ac_add_options --disable-artifact-builds + +mk_add_options MOZ_OBJDIR=${PWD@Q}/obj + +ac_add_options --prefix=/usr +ac_add_options --enable-release +ac_add_options --enable-hardening +ac_add_options --enable-rust-simd +ac_add_options --enable-wasm-simd +ac_add_options --enable-linker=lld +ac_add_options --disable-elf-hack +ac_add_options --disable-bootstrap +ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot +ac_add_options --enable-default-toolkit=cairo-gtk3-x11-wayland +export MOZ_ENABLE_WAYLAND=1 + +export AR=llvm-ar +export CC='clang' +export CXX='clang++' +export NM=llvm-nm +export RANLIB=llvm-ranlib + +# Branding +ac_add_options --with-app-basename=midori +ac_add_options --with-app-name=midori +ac_add_options --with-branding=browser/branding/official +ac_add_options --enable-update-channel=nightly +ac_add_options --with-distribution-id=org.archlinux +ac_add_options --with-unsigned-addon-scopes=app,system +ac_add_options --allow-addon-sideload +export MOZILLA_OFFICIAL=1 +export NIGHTLY_BUILD=1 +export MOZ_APP_REMOTINGNAME=midori + +# Keys +ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/api-mozilla-key +ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/api-google-location-service-key +ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/api-google-safe-browsing-key + +# System Libraries +ac_add_options --with-system-jpeg +ac_add_options --with-system-libevent +ac_add_options --with-system-libvpx +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-webp +ac_add_options --with-system-zlib + +# Features +ac_add_options --enable-alsa +ac_add_options --enable-av1 +ac_add_options --enable-eme=widevine +ac_add_options --enable-jack +ac_add_options --enable-jxl +ac_add_options --enable-pulseaudio +ac_add_options --enable-raw +ac_add_options --enable-sandbox +ac_add_options --enable-webrtc +ac_add_options --disable-crashreporter +ac_add_options --disable-default-browser-agent +ac_add_options --disable-parental-controls +ac_add_options --disable-tests +ac_add_options --disable-updater + +# Disables Telemetry by Default +mk_add_options MOZ_DATA_REPORTING=0 +mk_add_options MOZ_SERVICES_HEALTHREPORT=0 +mk_add_options MOZ_TELEMETRY_REPORTING=0 + +# Debugging +ac_add_options --disable-debug +ac_add_options --disable-debug-symbols +ac_add_options --disable-debug-js-modules +ac_add_options --enable-strip +ac_add_options --enable-install-strip +export STRIP_FLAGS="--strip-debug --strip-unneeded" + +# Optimization +ac_add_options --enable-optimize=-O3 +ac_add_options --enable-lto=cross,full +ac_add_options OPT_LEVEL="3" +ac_add_options RUSTC_OPT_LEVEL="3" + +# Other +END } build() { - cd $_gitname - yarn run build - npx --no-install electron-builder --linux --publish never + cd "$_pkgsrc" + + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip + export MOZBUILD_STATE_PATH="$srcdir/mozbuild" + export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)" + export MOZ_ENABLE_FULL_SYMBOLS=1 + export MOZ_NOSPAM=1 + export MOZ_SOURCE_REPO="$_repo" + + # LTO/PGO needs more open files + ulimit -n 4096 + + if [[ "${_build_pgo::1}" == "t" ]] ; then + # Do 3-tier PGO + local _old_profdata="${SRCDEST:-$startdir}/$_pkgname-merged.profdata" + local _old_jarlog="${SRCDEST:-$startdir}/$_pkgname-jarlog" + + # Restore old profile + if [[ "${_build_pgo_reuse::1}" == "t" ]] ; then + if [[ -s "$_old_profdata" ]] ; then + echo "Restoring old profile data." + cp --reflink=auto -f "$_old_profdata" merged.profdata + fi + + if [[ -s "$_old_jarlog" ]] ; then + echo "Restoring old jar log." + cp --reflink=auto -f "$_old_jarlog" jarlog + fi + fi + + # Make new profile + if [[ "${_build_pgo_reuse::1}" != "t" ]] || [[ ! -s merged.profdata ]] ; then + echo "Building instrumented browser..." + cat >.mozconfig ../mozconfig + echo >>.mozconfig "ac_add_options --enable-profile-generate=cross" + ./mach build + + echo "Profiling instrumented browser..." + ./mach package + + LLVM_PROFDATA=llvm-profdata JARLOG_FILE="$PWD/jarlog" \ + wlheadless-run -c weston --width=1920 --height=1080 \ + -- ./mach python build/pgo/profileserver.py + + echo "Removing instrumented browser..." + ./mach clobber + fi + + echo "Building optimized browser..." + cat >.mozconfig ../mozconfig + + if [[ -s merged.profdata ]] ; then + stat -c "Profile data found (%s bytes)" merged.profdata + echo >>.mozconfig "ac_add_options --enable-profile-use=cross" + echo >>.mozconfig "ac_add_options --with-pgo-profile-path='${PWD@Q}/merged.profdata'" + + # save profdata for reuse + cp --reflink=auto -f merged.profdata "$_old_profdata" + else + echo "Profile data not found." + fi + + if [[ -s jarlog ]] ; then + stat -c "Jar log found (%s bytes)" jarlog + echo >>.mozconfig "ac_add_options --with-pgo-jarlog='${PWD@Q}/jarlog'" + + # save jarlog for reuse + cp --reflink=auto -f jarlog "$_old_jarlog" + else + echo "Jar log not found." + fi + + ./mach build + else + echo "Building browser..." + cat >.mozconfig ../mozconfig + + ./mach build + fi } package() { - install -Dm755 $pkgname.sh "$pkgdir/usr/bin/$pkgname" - install -Dm644 $pkgname.desktop -t "$pkgdir/usr/share/applications/" + cd "$_pkgsrc" + DESTDIR="$pkgdir" ./mach install + + local vendorjs="$pkgdir/usr/lib/$_pkgname/browser/defaults/preferences/vendor.js" + install -Dvm644 /dev/stdin "$vendorjs" <<END +// Use LANG environment variable to choose locale +pref("intl.locale.requested", ""); - cd $_gitname - install -Dm644 dist/linux-unpacked/resources/app.asar -t "$pkgdir/usr/lib/$pkgname/" - install -Dm644 static/icons/icon.png "$pkgdir/usr/share/icons/hicolor/$pkgname.png" +// Use system-provided dictionaries +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable extensions in the application directory +pref("extensions.autoDisableScopes", 11); + +// Enable GNOME Shell search provider +pref("browser.gnome-search-provider.enabled", true); + +// Enable JPEG XL images +pref("image.jxl.enabled", true); + +// Prevent about:config warning +pref("browser.aboutConfig.showWarning", false); + +// Prevent telemetry notification +pref("services.settings.main.search-telemetry-v2.last_check", $(date +%s)); +END + + local distini="$pkgdir/usr/lib/$_pkgname/distribution/distribution.ini" + install -Dvm644 /dev/stdin "$distini" <<END +[Global] +id=archlinux +version=${pkgver} +about=Midori for Arch Linux + +[Preferences] +app.distributor=archlinux +app.distributor.channel=$_pkgname +app.partner.archlinux=archlinux +END + + # search provider + local sprovider="$pkgdir/usr/share/gnome-shell/search-providers/$_pkgname.search-provider.ini" + install -Dvm644 /dev/stdin "$sprovider" <<END +[Shell Search Provider] +DesktopId=$_pkgname.desktop +BusName=org.mozilla.${_pkgname//-/}.SearchProvider +ObjectPath=/org/mozilla/${_pkgname//-/}/SearchProvider +Version=2 +END + + # Replace duplicate binary + ln -sf "/usr/bin/$_pkgname" "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin" + + # Use system certificates + local nssckbi="$pkgdir/usr/lib/$_pkgname/libnssckbi.so" + if [[ -e "$nssckbi" ]]; then + ln -sf "/usr/lib/libnssckbi.so" "$nssckbi" + fi + + # desktop file + install -Dvm644 ../$_pkgname.desktop \ + "$pkgdir/usr/share/applications/$_pkgname.desktop" + + # icons + local i theme=official + for i in 16 22 24 32 48 64 128 256; do + install -Dvm644 browser/branding/$theme/default$i.png \ + "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$_pkgname.png" + done } + +# execute +_main_package diff --git a/midori-git.desktop b/midori-git.desktop deleted file mode 100644 index 747b5dd2211b..000000000000 --- a/midori-git.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=Midori Browser -Comment=Lightweight Electron- and React-based browser -Exec=/usr/bin/midori-git %u -Terminal=false -Type=Application -Icon=midori-git -Categories=Network;WebBrowser; -MimeType=application/xhtml+xml;application/xhtml_xml;application/xml;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; diff --git a/midori-git.sh b/midori-git.sh deleted file mode 100644 index 450e7e644dfb..000000000000 --- a/midori-git.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env sh -exec @ELECTRON@ /usr/lib/midori-git/app.asar "$@" diff --git a/midori.desktop b/midori.desktop new file mode 100644 index 000000000000..99f62f014cb5 --- /dev/null +++ b/midori.desktop @@ -0,0 +1,26 @@ +[Desktop Entry] +Name=Midori +Comment=Web browser based on Firefox ESR +GenericName=Web Browser +Keywords=Internet;WWW;Browser;Web;Explorer +Exec=midori %u +Icon=midori +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json; +StartupNotify=true +Categories=Network;WebBrowser; +Actions=new-window;new-private-window;profile-manager-window; +StartupWMClass=firefoxnightly + +[Desktop Action new-window] +Name=Open a New Window +Exec=midori --new-window %u + +[Desktop Action new-private-window] +Name=Open a New Private Window +Exec=midori --private-window %u + +[Desktop Action profile-manager-window] +Name=Open the Profile Manager +Exec=midori --ProfileManager |