# Maintainer: # Contributor: éclairevoyant ## 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="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 "$_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() { 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/" # configure cd "$_pkgsrc" cat >../mozconfig <.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() { cd "$_pkgsrc" DESTDIR="$pkgdir" ./mach install local vendorjs="$pkgdir/usr/lib/$_pkgname/browser/defaults/preferences/vendor.js" install -Dvm644 /dev/stdin "$vendorjs" <