summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorxiota2024-01-17 19:37:09 -0800
committerxiota2024-01-17 20:59:10 -0800
commit37f95524ba7bb3af87c4c7d1082e7978a2b45f02 (patch)
treebb84b007c09971a78fe0175d71167a2a56075882
parent7a8b8adcf985fb52b405c8e5d88324750aee0055 (diff)
downloadaur-37f95524ba7bb3af87c4c7d1082e7978a2b45f02.tar.gz
11.2.r48: Floorp fork
-rw-r--r--.SRCINFO82
-rw-r--r--.gitignore6
-rw-r--r--PKGBUILD414
-rw-r--r--midori-git.desktop9
-rw-r--r--midori-git.sh2
-rw-r--r--midori.desktop26
6 files changed, 476 insertions, 63 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 768587bd6e8e..565616d4f9a3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 84bf3e48a4cf..7c78fb944579 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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