mirror of
https://aur.archlinux.org/firedragon.git
synced 2024-12-26 12:44:21 +00:00
Major version update - Floorp-based PKGBUILD 11.9.0
This commit is contained in:
parent
249f181f54
commit
e65a622e5c
115
.SRCINFO
115
.SRCINFO
@ -1,89 +1,78 @@
|
|||||||
pkgbase = firedragon
|
pkgbase = firedragon
|
||||||
pkgdesc = Librewolf fork build using custom branding & settings
|
pkgdesc = Floorp fork build using custom branding & settings
|
||||||
pkgver = 119.0
|
pkgver = 11.9.0
|
||||||
pkgrel = 2
|
pkgrel = 1
|
||||||
url = https://gitlab.com/dr460nf1r3/settings/
|
url = http://dr460nf1r3.org
|
||||||
install = firedragon.install
|
install = firedragon.install
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
arch = x86_64_v3
|
license = MPL2
|
||||||
arch = aarch64
|
makedepends = cbindgen
|
||||||
license = MPL
|
makedepends = clang
|
||||||
license = GPL
|
|
||||||
license = LGPL
|
|
||||||
makedepends = unzip
|
|
||||||
makedepends = zip
|
|
||||||
makedepends = diffutils
|
makedepends = diffutils
|
||||||
makedepends = yasm
|
makedepends = dump_syms
|
||||||
makedepends = mesa
|
makedepends = imagemagick
|
||||||
makedepends = imake
|
makedepends = imake
|
||||||
makedepends = inetutils
|
makedepends = inetutils
|
||||||
makedepends = xorg-server-xvfb
|
|
||||||
makedepends = autoconf2.13
|
|
||||||
makedepends = rust
|
|
||||||
makedepends = clang
|
|
||||||
makedepends = llvm
|
|
||||||
makedepends = jack
|
makedepends = jack
|
||||||
makedepends = nodejs
|
|
||||||
makedepends = cbindgen
|
|
||||||
makedepends = nasm
|
|
||||||
makedepends = mold
|
|
||||||
makedepends = gawk
|
|
||||||
makedepends = python-setuptools
|
|
||||||
makedepends = python-zstandard
|
|
||||||
makedepends = git
|
|
||||||
makedepends = binutils
|
|
||||||
makedepends = dump_syms
|
|
||||||
makedepends = lld
|
makedepends = lld
|
||||||
makedepends = libxss
|
makedepends = llvm
|
||||||
makedepends = wasi-compiler-rt>15
|
makedepends = mesa
|
||||||
makedepends = wasi-libc>=1:0+314+a1c7c2c
|
makedepends = nasm
|
||||||
makedepends = wasi-libc++>15
|
makedepends = nodejs
|
||||||
makedepends = wasi-libc++abi>15
|
makedepends = python
|
||||||
makedepends = pciutils
|
makedepends = rust
|
||||||
|
makedepends = unzip
|
||||||
|
makedepends = wasi-compiler-rt
|
||||||
|
makedepends = wasi-libc
|
||||||
|
makedepends = wasi-libc++
|
||||||
|
makedepends = wasi-libc++abi
|
||||||
|
makedepends = xorg-server-xvfb
|
||||||
|
makedepends = yasm
|
||||||
|
makedepends = zip
|
||||||
|
depends = dbus
|
||||||
|
depends = dbus-glib
|
||||||
|
depends = ffmpeg
|
||||||
depends = gtk3
|
depends = gtk3
|
||||||
|
depends = libevent
|
||||||
|
depends = libjpeg
|
||||||
|
depends = libpulse
|
||||||
|
depends = libvpx
|
||||||
|
depends = libwebp
|
||||||
|
depends = libxss
|
||||||
depends = libxt
|
depends = libxt
|
||||||
depends = mime-types
|
depends = mime-types
|
||||||
depends = dbus-glib
|
|
||||||
depends = nss
|
depends = nss
|
||||||
|
depends = pipewire
|
||||||
depends = ttf-font
|
depends = ttf-font
|
||||||
depends = libpulse
|
depends = zlib
|
||||||
depends = ffmpeg
|
optdepends = hunspell-dictionary: Spell checking
|
||||||
depends = xdg-desktop-portal
|
|
||||||
optdepends = firejail-git: Sandboxing the browser using the included profiles
|
|
||||||
optdepends = profile-sync-daemon: Load the browser profile into RAM
|
|
||||||
optdepends = whoogle: Searching the web using a locally running Whoogle instance
|
|
||||||
optdepends = searx: Searching the web using a locally running searX instance
|
|
||||||
optdepends = networkmanager: Location detection via available WiFi networks
|
|
||||||
optdepends = libnotify: Notification integration
|
optdepends = libnotify: Notification integration
|
||||||
|
optdepends = networkmanager: Location detection via available WiFi networks
|
||||||
|
optdepends = profile-sync-daemon: Load the browser profile into RAM
|
||||||
optdepends = pulseaudio: Audio support
|
optdepends = pulseaudio: Audio support
|
||||||
|
optdepends = searx: Searching the web using a locally running searX instance
|
||||||
optdepends = speech-dispatcher: Text-to-Speech
|
optdepends = speech-dispatcher: Text-to-Speech
|
||||||
optdepends = hunspell-en_US: Spell checking, American English
|
optdepends = whoogle: Searching the web using a locally running Whoogle instance
|
||||||
optdepends = libappindicator-gtk3: Global menu support for GTK apps
|
optdepends = xdg-desktop-portal: Screensharing with Wayland
|
||||||
optdepends = appmenu-gtk-module-git: Appmenu for GTK only
|
replaces = firedragon-next
|
||||||
optdepends = plasma5-applets-window-appmenu: Appmenu for Plasma only
|
options = !debug
|
||||||
options = !emptydirs
|
options = !emptydirs
|
||||||
|
options = !lto
|
||||||
options = !makeflags
|
options = !makeflags
|
||||||
options = !strip
|
options = !strip
|
||||||
options = !lto
|
|
||||||
options = !debug
|
|
||||||
backup = usr/lib/firedragon/firedragon.cfg
|
backup = usr/lib/firedragon/firedragon.cfg
|
||||||
backup = usr/lib/firedragon/distribution/policies.json
|
backup = usr/lib/firedragon/distribution/policies.json
|
||||||
source = https://archive.mozilla.org/pub/firefox/releases/119.0/source/firefox-119.0.source.tar.xz
|
source = https://github.com/Floorp-Projects/Floorp/archive/refs/tags/v11.9.0.tar.gz
|
||||||
source = https://archive.mozilla.org/pub/firefox/releases/119.0/source/firefox-119.0.source.tar.xz.asc
|
source = floorp-core::git+https://github.com/Floorp-Projects/Floorp-core#commit=cefaa9a0352456c45be6a917e6664f8ef054a68f
|
||||||
|
source = floorp-l10n-central::git+https://github.com/Floorp-Projects/Unified-l10n-central#commit=6915ae0005fdb1684f3b6b0731bdec1a0596f7e8
|
||||||
|
source = common::git+https://gitlab.com/garuda-linux/firedragon/common.git
|
||||||
|
source = settings::git+https://gitlab.com/garuda-linux/firedragon/settings.git
|
||||||
source = firedragon.desktop
|
source = firedragon.desktop
|
||||||
source = git+https://gitlab.com/dr460nf1r3/common.git
|
sha256sums = 11a7b2bfc2582220e0e0f0be90b9575249f52856fe21b55cbce9b72c516d654e
|
||||||
source = git+https://gitlab.com/dr460nf1r3/settings.git
|
sha256sums = SKIP
|
||||||
source = librewolf-source::git+https://codeberg.org/librewolf/source.git
|
sha256sums = SKIP
|
||||||
source = librewolf-settings::git+https://codeberg.org/librewolf/settings.git
|
sha256sums = SKIP
|
||||||
source = cachyos-source::git+https://github.com/CachyOS/CachyOS-Browser-Common.git
|
|
||||||
validpgpkeys = 14F26682D0916CDD81E37B6D61B7B526D98F0353
|
|
||||||
sha256sums = f63e44194548f246e1396508800739a24c0517e65e920002a6f67ee099be39dd
|
|
||||||
sha256sums = SKIP
|
sha256sums = SKIP
|
||||||
sha256sums = 53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560
|
sha256sums = 53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560
|
||||||
sha256sums = SKIP
|
|
||||||
sha256sums = SKIP
|
|
||||||
sha256sums = SKIP
|
|
||||||
sha256sums = SKIP
|
|
||||||
sha256sums = SKIP
|
|
||||||
|
|
||||||
pkgname = firedragon
|
pkgname = firedragon
|
||||||
|
569
PKGBUILD
569
PKGBUILD
@ -1,406 +1,349 @@
|
|||||||
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
|
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
|
||||||
# Co-Maintainer: FGD
|
# Co-Maintainer: FGD
|
||||||
# Contributor: Peter Jung <admin@ptr1337.dev>
|
|
||||||
# Contributor: vnepogodin
|
|
||||||
# Contributor: torvic9 AT mailbox DOT org
|
|
||||||
# Contributor: lsf
|
|
||||||
|
|
||||||
pkgname=firedragon
|
pkgname=firedragon
|
||||||
_pkgname=FireDragon
|
_pkgname=FireDragon
|
||||||
pkgver=119.0
|
pkgver=11.9.0
|
||||||
pkgrel=2
|
_floorp_core_commit=cefaa9a0352456c45be6a917e6664f8ef054a68f
|
||||||
pkgdesc="Librewolf fork build using custom branding & settings"
|
_floorp_l10n_commit=6915ae0005fdb1684f3b6b0731bdec1a0596f7e8
|
||||||
arch=(x86_64 x86_64_v3 aarch64)
|
pkgrel=1
|
||||||
backup=('usr/lib/firedragon/firedragon.cfg'
|
pkgdesc="Floorp fork build using custom branding & settings"
|
||||||
'usr/lib/firedragon/distribution/policies.json')
|
url='http://dr460nf1r3.org'
|
||||||
license=(MPL GPL LGPL)
|
arch=('x86_64')
|
||||||
url=https://gitlab.com/dr460nf1r3/settings/
|
license=('MPL2')
|
||||||
_arch_git=https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/firefox/trunk
|
depends=(dbus
|
||||||
_arch_git_blob=https://raw.githubusercontent.com/archlinux/svntogit-packages
|
dbus-glib
|
||||||
depends=(gtk3 libxt mime-types dbus-glib nss ttf-font libpulse ffmpeg xdg-desktop-portal)
|
ffmpeg
|
||||||
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
|
gtk3
|
||||||
autoconf2.13 rust clang llvm jack nodejs cbindgen nasm mold gawk
|
libevent
|
||||||
python-setuptools python-zstandard git binutils dump_syms lld libxss
|
libjpeg
|
||||||
'wasi-compiler-rt>15' 'wasi-libc>=1:0+314+a1c7c2c' 'wasi-libc++>15' 'wasi-libc++abi>15' pciutils) # pciutils: only to avoid some PGO warning
|
libpulse
|
||||||
optdepends=('firejail-git: Sandboxing the browser using the included profiles'
|
libvpx
|
||||||
'profile-sync-daemon: Load the browser profile into RAM'
|
libwebp
|
||||||
'whoogle: Searching the web using a locally running Whoogle instance'
|
libxss
|
||||||
'searx: Searching the web using a locally running searX instance'
|
libxt
|
||||||
'networkmanager: Location detection via available WiFi networks'
|
mime-types
|
||||||
'libnotify: Notification integration'
|
nss
|
||||||
'pulseaudio: Audio support'
|
pipewire
|
||||||
'speech-dispatcher: Text-to-Speech'
|
ttf-font
|
||||||
'hunspell-en_US: Spell checking, American English'
|
zlib)
|
||||||
'libappindicator-gtk3: Global menu support for GTK apps'
|
makedepends=(cbindgen
|
||||||
'appmenu-gtk-module-git: Appmenu for GTK only'
|
clang
|
||||||
'plasma5-applets-window-appmenu: Appmenu for Plasma only')
|
diffutils
|
||||||
options=(!emptydirs !makeflags !strip !lto !debug)
|
dump_syms
|
||||||
install=$pkgname.install
|
imagemagick
|
||||||
source=(https://archive.mozilla.org/pub/firefox/releases/"$pkgver"/source/firefox-"$pkgver".source.tar.xz{,.asc}
|
imake
|
||||||
"$pkgname.desktop"
|
inetutils
|
||||||
"git+https://gitlab.com/dr460nf1r3/common.git"
|
jack
|
||||||
"git+https://gitlab.com/dr460nf1r3/settings.git"
|
lld
|
||||||
"librewolf-source::git+https://codeberg.org/librewolf/source.git"
|
llvm
|
||||||
"librewolf-settings::git+https://codeberg.org/librewolf/settings.git"
|
mesa
|
||||||
"cachyos-source::git+https://github.com/CachyOS/CachyOS-Browser-Common.git")
|
nasm
|
||||||
sha256sums=('f63e44194548f246e1396508800739a24c0517e65e920002a6f67ee099be39dd'
|
nodejs
|
||||||
'SKIP'
|
python
|
||||||
'53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560'
|
rust
|
||||||
|
unzip
|
||||||
|
wasi-compiler-rt
|
||||||
|
wasi-libc
|
||||||
|
wasi-libc++
|
||||||
|
wasi-libc++abi
|
||||||
|
xorg-server-xvfb
|
||||||
|
yasm
|
||||||
|
zip)
|
||||||
|
optdepends=('hunspell-dictionary: Spell checking'
|
||||||
|
'libnotify: Notification integration'
|
||||||
|
'networkmanager: Location detection via available WiFi networks'
|
||||||
|
'profile-sync-daemon: Load the browser profile into RAM'
|
||||||
|
'pulseaudio: Audio support'
|
||||||
|
'searx: Searching the web using a locally running searX instance'
|
||||||
|
'speech-dispatcher: Text-to-Speech'
|
||||||
|
'whoogle: Searching the web using a locally running Whoogle instance'
|
||||||
|
'xdg-desktop-portal: Screensharing with Wayland')
|
||||||
|
replaces=(firedragon-next)
|
||||||
|
options=(!debug
|
||||||
|
!emptydirs
|
||||||
|
!lto
|
||||||
|
!makeflags
|
||||||
|
!strip)
|
||||||
|
backup=("usr/lib/${pkgname}/${pkgname}.cfg"
|
||||||
|
"usr/lib/${pkgname}/distribution/policies.json")
|
||||||
|
source=(https://github.com/Floorp-Projects/Floorp/archive/refs/tags/v"${pkgver}".tar.gz
|
||||||
|
"floorp-core::git+https://github.com/Floorp-Projects/Floorp-core#commit=$_floorp_core_commit"
|
||||||
|
"floorp-l10n-central::git+https://github.com/Floorp-Projects/Unified-l10n-central#commit=$_floorp_l10n_commit"
|
||||||
|
"common::git+https://gitlab.com/garuda-linux/firedragon/common.git"
|
||||||
|
"settings::git+https://gitlab.com/garuda-linux/firedragon/settings.git"
|
||||||
|
"${pkgname}.desktop")
|
||||||
|
sha256sums=('11a7b2bfc2582220e0e0f0be90b9575249f52856fe21b55cbce9b72c516d654e'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP')
|
'53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560')
|
||||||
# sha256sums_aarch64=()
|
install="${pkgname}.install"
|
||||||
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
|
|
||||||
|
|
||||||
# change this to false if you do not want to run a PGO build for aarch64 or x86_64
|
|
||||||
_build_profiled_aarch64=true
|
|
||||||
_build_profiled_x86_64=true
|
|
||||||
|
|
||||||
# Fix some potential Python and a Rust error
|
|
||||||
if [ "${CC}" != "gcc" ] || [ "${CXX}" != "g++" ]; then
|
|
||||||
export CC=gcc
|
|
||||||
export CXX=g++
|
|
||||||
export LD=ld
|
|
||||||
export AS=""
|
|
||||||
export NM=""
|
|
||||||
export AR=""
|
|
||||||
export RANLIB=""
|
|
||||||
export OBJCOPY=""
|
|
||||||
export LDFLAGS="${LDFLAGS/-static/}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
mkdir -p mozbuild
|
# Floorp's shenanigan to make the build work without cloning the whole
|
||||||
cd firefox-"$pkgver"
|
# git source (puts submodules' content in place)
|
||||||
|
mv -f "${srcdir}"/floorp-core/* ./Floorp-"${pkgver}"/floorp
|
||||||
|
mv -f "${srcdir}"/floorp-l10n-central/* ./Floorp-"${pkgver}"/floorp/browser/locales/l10n-central
|
||||||
|
|
||||||
local _patches_dir
|
rm -rf "${srcdir}/mozbuild"
|
||||||
_patches_dir="${srcdir}/common/patches"
|
mkdir "${srcdir}/mozbuild"
|
||||||
|
|
||||||
local _librewolf_patches_dir
|
cd Floorp-"${pkgver}" || exit
|
||||||
_librewolf_patches_dir="${srcdir}/librewolf-source/patches"
|
cat >../mozconfig <<END
|
||||||
|
ac_add_options --with-app-basename=${_pkgname}
|
||||||
local _cachyos_patches_dir
|
ac_add_options --with-app-name=${pkgname}
|
||||||
_cachyos_patches_dir="${srcdir}/cachyos-source/patches"
|
ac_add_options --with-branding=browser/branding/firedragon
|
||||||
|
ac_add_options --with-l10n-base=${PWD@Q}/floorp/browser/locales/l10n-central
|
||||||
cat >../mozconfig <<END
|
|
||||||
ac_add_options --enable-application=browser
|
ac_add_options --enable-application=browser
|
||||||
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
|
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
|
||||||
|
|
||||||
# This supposedly speeds up compilation (We test through dogfooding anyway)
|
# Build options
|
||||||
ac_add_options --disable-debug
|
|
||||||
ac_add_options --disable-tests
|
|
||||||
|
|
||||||
# TODO: use source/assets/moczonfig in the future
|
|
||||||
# NOTE: let us use it for one last build, otherwise, there might be some conflicts
|
|
||||||
mk_add_options MOZ_CRASHREPORTER=0
|
|
||||||
mk_add_options MOZ_DATA_REPORTING=0
|
|
||||||
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
|
|
||||||
mk_add_options MOZ_TELEMETRY_REPORTING=0
|
|
||||||
|
|
||||||
ac_add_options --disable-bootstrap
|
ac_add_options --disable-bootstrap
|
||||||
|
ac_add_options --disable-elf-hack
|
||||||
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
|
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
|
||||||
ac_add_options --enable-hardening
|
ac_add_options --enable-hardening
|
||||||
ac_add_options --enable-linker=lld
|
ac_add_options --enable-linker=lld
|
||||||
|
ac_add_options --enable-lto=cross,full
|
||||||
|
ac_add_options --enable-optimize="-O3"
|
||||||
ac_add_options --enable-release
|
ac_add_options --enable-release
|
||||||
ac_add_options --enable-rust-simd
|
ac_add_options --enable-rust-simd
|
||||||
|
ac_add_options --enable-wasm-simd
|
||||||
ac_add_options --prefix=/usr
|
ac_add_options --prefix=/usr
|
||||||
|
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
|
||||||
export AR=llvm-ar
|
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||||
export CC='clang'
|
export RUSTC_OPT_LEVEL=2
|
||||||
export CXX='clang++'
|
|
||||||
export NM=llvm-nm
|
|
||||||
export RANLIB=llvm-ranlib
|
|
||||||
|
|
||||||
# Branding
|
# Branding
|
||||||
ac_add_options --allow-addon-sideload
|
ac_add_options --allow-addon-sideload
|
||||||
|
ac_add_options --enable-unverified-updates
|
||||||
ac_add_options --enable-update-channel=release
|
ac_add_options --enable-update-channel=release
|
||||||
ac_add_options --with-app-name=${pkgname}
|
|
||||||
ac_add_options --with-branding=browser/branding/${pkgname}
|
|
||||||
ac_add_options --with-distribution-id=org.garudalinux
|
ac_add_options --with-distribution-id=org.garudalinux
|
||||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
export MOZ_REQUIRE_SIGNING=1
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export MOZ_APP_REMOTINGNAME=${pkgname}
|
||||||
|
export MOZ_CRASHREPORTER=
|
||||||
|
export MOZ_DATA_REPORTING=
|
||||||
|
export MOZ_REQUIRE_SIGNING=
|
||||||
|
export MOZ_SERVICES_HEALTHREPORT=
|
||||||
|
export MOZ_TELEMETRY_REPORTING=
|
||||||
|
|
||||||
# System libraries
|
# 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-nspr
|
||||||
ac_add_options --with-system-nss
|
ac_add_options --with-system-nss
|
||||||
|
ac_add_options --with-system-webp
|
||||||
|
ac_add_options --with-system-zlib
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
ac_add_options --enable-jxl
|
ac_add_options --disable-crashreporter # (Minimize telemetry)
|
||||||
ac_add_options --enable-alsa
|
ac_add_options --disable-debug
|
||||||
ac_add_options --enable-jack
|
ac_add_options --disable-debug-js-modules
|
||||||
ac_add_options --disable-crashreporter
|
ac_add_options --disable-debug-symbols
|
||||||
ac_add_options --disable-updater
|
|
||||||
ac_add_options --disable-default-browser-agent
|
ac_add_options --disable-default-browser-agent
|
||||||
|
ac_add_options --disable-gpsd
|
||||||
|
ac_add_options --disable-necko-wifi
|
||||||
|
ac_add_options --disable-parental-controls # (Disable local/OS MTIM)
|
||||||
|
ac_add_options --disable-rust-tests
|
||||||
|
ac_add_options --disable-synth-speechd
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
# ac_add_options --disable-update-agent # (Might have to wait for a more recent version of Firefox. The setting is not availabe on v115)
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --disable-warnings-as-errors
|
||||||
|
ac_add_options --disable-webspeech
|
||||||
|
ac_add_options --disable-webspeechtestbackend
|
||||||
|
ac_add_options --enable-alsa
|
||||||
|
ac_add_options --enable-bundled-fonts # (CSS system fonts are normalized, to hide any customization at the OS level, or the defaults that different locales might have)
|
||||||
|
ac_add_options --enable-jack
|
||||||
|
ac_add_options --enable-jxl
|
||||||
|
ac_add_options --enable-proxy-bypass-protection
|
||||||
|
ac_add_options --enable-strip
|
||||||
|
|
||||||
# WASI
|
# Other
|
||||||
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
|
export AR=llvm-ar
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export NM=llvm-nm
|
||||||
|
export RANLIB=llvm-ranlib
|
||||||
END
|
END
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
local _patches_dir
|
||||||
cat >>../mozconfig <<END
|
_patches_dir="${srcdir}/common/patches"
|
||||||
# taken from manjaro build:
|
|
||||||
ac_add_options --enable-optimize="-g0 -O2"
|
|
||||||
END
|
|
||||||
|
|
||||||
export MOZ_DEBUG_FLAGS=" "
|
local _floorp_patches_dir
|
||||||
export CFLAGS+=" -g0"
|
_floorp_patches_dir="${srcdir}/common/patches/floorp/"
|
||||||
export CXXFLAGS+=" -g0"
|
|
||||||
export RUSTFLAGS="-Cdebuginfo=0"
|
|
||||||
|
|
||||||
# we should have more than enough RAM on the CI spot instances.
|
_patch() {
|
||||||
# ...or maybe not?
|
printf 'Patching %s ...\n' "$1"
|
||||||
export LDFLAGS+=" -Wl,--no-keep-memory"
|
patch -Np1 -i "$1"
|
||||||
# patch -Np1 -i "${_librewolf_patches_dir}"/arm.patch # not required anymore?
|
}
|
||||||
# patch -Np1 -i ../${pkgver}-${pkgrel}_build-arm-libopus.patch
|
|
||||||
|
|
||||||
else
|
# Remove some pre-installed addons that might be questionable
|
||||||
|
_patch "${_floorp_patches_dir}"/remove_addons.patch
|
||||||
|
|
||||||
cat >>../mozconfig <<END
|
# Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
||||||
# probably not needed, enabled by default?
|
_patch "${_floorp_patches_dir}"/sed-patches/stop-undesired-requests.patch
|
||||||
ac_add_options --enable-optimize
|
|
||||||
|
|
||||||
# Arch upstream has it in their PKGBUILD, ALARM does not for aarch64:
|
# Assorted patches
|
||||||
ac_add_options --disable-elf-hack
|
_patch "${_floorp_patches_dir}"/urlbarprovider-interventions.patch
|
||||||
|
|
||||||
# might help with failing x86_64 builds?
|
# Allow uBlockOrigin to run in private mode by default, without user intervention.
|
||||||
export LDFLAGS+=" -Wl,--no-keep-memory"
|
_patch "${_floorp_patches_dir}"/allow-ubo-private-mode.patch
|
||||||
END
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Upstream patches from gentoo/CachyOS
|
# Add custom uBO assets (on first launch only)
|
||||||
# Harfbuzz builder fixes (POSSIBLE FUTURE USE)
|
_patch "${_floorp_patches_dir}"/custom-ubo-assets-bootstrap-location.patch
|
||||||
# patch -Np1 -i "${_cachyos_patches_dir}"/gentoo/0003-bmo-847568-Support-system-harfbuzz.patch
|
|
||||||
|
|
||||||
# Remove some pre-installed addons that might be questionable
|
# Allows hiding the password manager (from the lw pref pane) / via a pref
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/remove_addons.patch
|
_patch "${_floorp_patches_dir}"/hide-passwordmgr.patch
|
||||||
|
|
||||||
# OpenSUSE KDE patches --> These seem to be DEPRECATED as of 2023-09-29
|
# Add Firedragon Preferences Pane
|
||||||
# patch -Np1 -i "${_patches_dir}"/kde-upstream/firefox-kde.patch
|
_patch "${_patches_dir}"/pref-pane/pref-pane-small.patch
|
||||||
# patch -Np1 -i "${_patches_dir}"/kde-upstream/mozilla-kde.patch
|
cp "${_patches_dir}/pref-pane/category-firedragon.svg" browser/themes/shared/preferences/category-firedragon.svg
|
||||||
|
cp "${_patches_dir}/pref-pane/firedragon.css" browser/themes/shared/preferences/firedragon.css
|
||||||
|
cp "${_patches_dir}/pref-pane/firedragon.inc.xhtml" browser/components/preferences/firedragon.inc.xhtml
|
||||||
|
cp "${_patches_dir}/pref-pane/firedragon.js" browser/components/preferences/firedragon.js
|
||||||
|
cat < "${_patches_dir}/pref-pane/preferences.ftl" >> browser/locales/en-US/browser/preferences/preferences.ftl
|
||||||
|
|
||||||
# Disabling Pocket
|
# Update privacy preferences -- DISABLED to test UI changes and allow user to easily change the setting
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/disable-pocket.patch
|
# _patch "${_patches_dir}"/custom/privacy-preferences.patch
|
||||||
|
|
||||||
# Allow SearchEngines option in non-ESR builds
|
rm -f "${srcdir}"/common/source_files/mozconfig
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/allow-searchengines-non-esr.patch
|
cp -r "${srcdir}"/common/source_files/* ./
|
||||||
|
|
||||||
# Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/stop-undesired-requests.patch
|
|
||||||
|
|
||||||
# Assorted patches
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/urlbarprovider-interventions.patch
|
|
||||||
|
|
||||||
# Allow uBlockOrigin to run in private mode by default, without user intervention.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/allow-ubo-private-mode.patch
|
|
||||||
|
|
||||||
# Add custom uBO assets (on first launch only)
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/custom-ubo-assets-bootstrap-location.patch
|
|
||||||
|
|
||||||
# UI patches
|
|
||||||
# Remove references to firefox from the settings UI, change text in some of the links,
|
|
||||||
# explain that we force en-US and suggest enabling history near the session restore checkbox.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/pref-naming.patch
|
|
||||||
|
|
||||||
# Don't nag to set default browser
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/hide-default-browser.patch
|
|
||||||
|
|
||||||
# Remove firefox references in the urlbar, when suggesting opened tabs.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-branding-urlbar.patch
|
|
||||||
|
|
||||||
# Remove cfr UI elements, as they are disabled and locked already.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-cfrprefs.patch
|
|
||||||
|
|
||||||
# Do not display your browser is being managed by your organization in the settings.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-organization-policy-banner.patch
|
|
||||||
|
|
||||||
# Hide "snippets" section from the home page settings, as it was already locked.
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-snippets-from-home.patch
|
|
||||||
|
|
||||||
# Update handler links
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/handlers.patch
|
|
||||||
|
|
||||||
# Fix telemetry removal, see https://gitlab.com/librewolf-community/browser/linux/-/merge_requests/17, for example
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/disable-data-reporting-at-compile-time.patch
|
|
||||||
|
|
||||||
# Hide Firefox view --> Broken as of 2023-10-30
|
|
||||||
# patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/firefox-view.patch
|
|
||||||
|
|
||||||
# Allows hiding the password manager (from the lw pref pane) / via a pref
|
|
||||||
patch -Np1 -i "${_librewolf_patches_dir}"/hide-passwordmgr.patch
|
|
||||||
|
|
||||||
# Pref pane - custom FireDragon svg
|
|
||||||
patch -Np1 -i "${_patches_dir}"/custom/librewolf-pref-pane.patch
|
|
||||||
patch -Np1 -i "${_patches_dir}"/custom/add_firedragon_svg.patch
|
|
||||||
|
|
||||||
# Update privacy preferences
|
|
||||||
patch -Np1 -i "${_patches_dir}"/custom/privacy-preferences.patch
|
|
||||||
|
|
||||||
rm -f "${srcdir}"/common/source_files/mozconfig
|
|
||||||
cp -r "${srcdir}"/common/source_files/* ./
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd firefox-"$pkgver"
|
cd Floorp-"${pkgver}" || exit
|
||||||
|
|
||||||
export MOZ_NOSPAM=1
|
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
|
||||||
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
|
export MOZBUILD_STATE_PATH="${srcdir}/mozbuild"
|
||||||
# export MOZ_ENABLE_FULL_SYMBOLS=1
|
export MOZ_ENABLE_FULL_SYMBOLS=1
|
||||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
|
export MOZ_NOSPAM=1
|
||||||
export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach # let us hope this is a working _new_ workaround for the pip env issues?
|
export MOZ_PROFILER_STARTUP=1 # Starts the profiler is started as early as possible during startup.
|
||||||
|
|
||||||
# LTO needs more open files
|
# Malloc_usable_size is used in various parts of the codebase
|
||||||
ulimit -n 4096
|
CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
|
||||||
|
CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
|
||||||
|
|
||||||
# Do 3-tier PGO
|
# LTO needs more open files
|
||||||
echo "Building instrumented browser..."
|
ulimit -n 4096
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
|
||||||
|
|
||||||
|
# Do 3-tier PGO
|
||||||
|
echo "Building instrumented browser..."
|
||||||
cat >.mozconfig ../mozconfig - <<END
|
cat >.mozconfig ../mozconfig - <<END
|
||||||
ac_add_options --enable-profile-generate
|
ac_add_options --enable-profile-generate=cross
|
||||||
END
|
END
|
||||||
|
./mach build
|
||||||
|
|
||||||
else
|
echo "Profiling instrumented browser..."
|
||||||
|
./mach package
|
||||||
|
LLVM_PROFDATA=llvm-profdata \
|
||||||
|
JARLOG_FILE="${PWD}/jarlog" \
|
||||||
|
xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
|
||||||
|
./mach python build/pgo/profileserver.py
|
||||||
|
|
||||||
cat >.mozconfig ../mozconfig - <<END
|
echo "Removing instrumented browser..."
|
||||||
ac_add_options --enable-profile-generate
|
./mach clobber
|
||||||
END
|
|
||||||
|
|
||||||
fi
|
echo "Building optimized browser..."
|
||||||
|
cat >.mozconfig ../mozconfig
|
||||||
|
|
||||||
./mach build
|
if [[ -s merged.profdata ]]; then
|
||||||
|
stat -c "Profile data found (%s bytes)" merged.profdata
|
||||||
|
echo "ac_add_options --enable-profile-use=cross" >>.mozconfig
|
||||||
|
echo "ac_add_options --with-pgo-profile-path='${PWD@Q}/merged.profdata'" >>.mozconfig
|
||||||
|
else
|
||||||
|
echo "Profile data not found."
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Profiling instrumented browser..."
|
if [[ -s jarlog ]]; then
|
||||||
|
stat -c "Jar log found (%s bytes)" jarlog
|
||||||
|
echo "ac_add_options --with-pgo-jarlog='${PWD@Q}/jarlog'" >>.mozconfig
|
||||||
|
else
|
||||||
|
echo "Jar log not found."
|
||||||
|
fi
|
||||||
|
|
||||||
./mach package
|
./mach build
|
||||||
|
|
||||||
LLVM_PROFDATA=llvm-profdata \
|
echo "Building symbol archive..."
|
||||||
JARLOG_FILE="$PWD/jarlog" \
|
./mach buildsymbols
|
||||||
xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
|
|
||||||
./mach python build/pgo/profileserver.py
|
|
||||||
|
|
||||||
stat -c "Profile data found (%s bytes)" merged.profdata
|
|
||||||
test -s merged.profdata
|
|
||||||
|
|
||||||
stat -c "Jar log found (%s bytes)" jarlog
|
|
||||||
test -s jarlog
|
|
||||||
|
|
||||||
echo "Removing instrumented browser..."
|
|
||||||
./mach clobber
|
|
||||||
|
|
||||||
echo "Building optimized browser..."
|
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
|
||||||
|
|
||||||
cat >.mozconfig ../mozconfig - <<END
|
|
||||||
ac_add_options --enable-lto
|
|
||||||
ac_add_options --enable-profile-use
|
|
||||||
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
|
|
||||||
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
|
|
||||||
END
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
cat >.mozconfig ../mozconfig - <<END
|
|
||||||
ac_add_options --enable-lto
|
|
||||||
ac_add_options --enable-profile-use
|
|
||||||
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
|
|
||||||
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
|
|
||||||
END
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# cat >>.mozconfig <<END
|
|
||||||
# ac_add_options --enable-linker=lld
|
|
||||||
# ac_add_options --disable-bootstrap
|
|
||||||
# END
|
|
||||||
|
|
||||||
./mach build
|
|
||||||
|
|
||||||
echo "Building symbol archive..."
|
|
||||||
./mach buildsymbols
|
|
||||||
}
|
}
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
cd firefox-"$pkgver"
|
cd Floorp-"${pkgver}" || exit
|
||||||
DESTDIR="$pkgdir" ./mach install
|
|
||||||
|
|
||||||
rm "$pkgdir"/usr/lib/${pkgname}/pingsender
|
DESTDIR="${pkgdir}" ./mach install
|
||||||
|
|
||||||
install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname"
|
rm "${pkgdir}/usr/lib/${pkgname}/pingsender"
|
||||||
|
|
||||||
local vendorjs
|
local vendorjs="${pkgdir}/usr/lib/${pkgname}/browser/defaults/preferences/vendor.js"
|
||||||
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", "");
|
||||||
|
|
||||||
install -Dvm644 /dev/stdin "$vendorjs" <<END
|
|
||||||
// Use system-provided dictionaries
|
// Use system-provided dictionaries
|
||||||
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
|
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
|
||||||
|
|
||||||
|
// Disable default browser checking.
|
||||||
|
pref("browser.shell.checkDefaultBrowser", false);
|
||||||
|
|
||||||
// Don't disable extensions in the application directory
|
// Don't disable extensions in the application directory
|
||||||
// done in firedragon.cfg
|
pref("extensions.autoDisableScopes", 11);
|
||||||
// pref("extensions.autoDisableScopes", 11);
|
|
||||||
|
// Enable GNOME Shell search provider
|
||||||
|
pref("browser.gnome-search-provider.enabled", true);
|
||||||
END
|
END
|
||||||
|
|
||||||
# cd ${srcdir}/settings
|
local distini="${pkgdir}/usr/lib/${pkgname}/distribution/distribution.ini"
|
||||||
# git checkout ${_settings_commit}
|
install -Dvm644 /dev/stdin "${distini}" <<END
|
||||||
cd ${srcdir}/firefox-"$pkgver"
|
|
||||||
cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/
|
|
||||||
|
|
||||||
local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
|
|
||||||
install -Dvm644 /dev/stdin "$distini" <<END
|
|
||||||
|
|
||||||
[Global]
|
[Global]
|
||||||
id=garudalinux
|
id=${pkgname}
|
||||||
version=1.0
|
version=${pkgver}-${pkgrel}
|
||||||
about=$_pkgname for Garuda Linux
|
about=${pkgdesc}
|
||||||
|
|
||||||
[Preferences]
|
[Preferences]
|
||||||
app.distributor=garudalinux
|
app.distributor=garudalinux
|
||||||
app.distributor.channel=$pkgname
|
app.distributor.channel=${pkgname}
|
||||||
app.partner.garudalinux=garudalinux
|
app.partner.garudalinux=garudalinux
|
||||||
END
|
END
|
||||||
|
|
||||||
for i in 16 32 48 64 128; do
|
# Use system certificates
|
||||||
install -Dvm644 browser/branding/${pkgname}/default$i.png \
|
local nssckbi="${pkgdir}/usr/lib/${pkgname}/libnssckbi.so"
|
||||||
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
|
if [[ -e "${nssckbi}" ]]; then
|
||||||
done
|
ln -srfv "${pkgdir}/usr/lib/libnssckbi.so" "${nssckbi}"
|
||||||
install -Dvm644 browser/branding/${pkgname}/content/about-logo.png \
|
fi
|
||||||
"$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"
|
|
||||||
|
|
||||||
# Arch upstream provides a separate svg for this. we don't have that, so let's re-use 16.png
|
# Make native messaging work
|
||||||
install -Dvm644 browser/branding/${pkgname}/default16.png \
|
ln -s "/usr/lib/mozilla/native-messaging-hosts" "${pkgdir}/usr/lib/${pkgname}/native-messaging-hosts"
|
||||||
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"
|
|
||||||
|
|
||||||
install -Dvm644 ../$pkgname.desktop \
|
# GNOME search provider
|
||||||
"$pkgdir/usr/share/applications/$pkgname.desktop"
|
local sprovider="$pkgdir/usr/share/gnome-shell/search-providers/$pkgname.search-provider.ini"
|
||||||
|
install -Dvm644 /dev/stdin "$sprovider" <<END
|
||||||
# Install a wrapper to avoid confusion about binary path
|
[Shell Search Provider]
|
||||||
install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
|
DesktopId=$pkgname.desktop
|
||||||
#!/bin/sh
|
BusName=org.mozilla.${pkgname//-/}.SearchProvider
|
||||||
exec /usr/lib/$pkgname/$pkgname "\$@"
|
ObjectPath=/org/mozilla/${pkgname//-/}/SearchProvider
|
||||||
|
Version=2
|
||||||
END
|
END
|
||||||
|
|
||||||
# Replace duplicate binary with wrapper
|
# Application icons
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
|
for i in 16 32 48 64 128; do
|
||||||
ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/$pkgname-bin"
|
install -Dvm644 browser/branding/firedragon/default$i.png \
|
||||||
|
"${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps/${pkgname}.png"
|
||||||
|
done
|
||||||
|
install -Dvm644 browser/branding/firedragon/content/about-logo.png \
|
||||||
|
"${pkgdir}/usr/share/icons/hicolor/192x192/apps/${pkgname}.png"
|
||||||
|
|
||||||
# Use system certificates
|
# Replace duplicate binary with wrapper
|
||||||
local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
|
||||||
if [[ -e $nssckbi ]]; then
|
ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/${pkgname%-*}-bin"
|
||||||
ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make native messaging work
|
# All the needed configuration files
|
||||||
ln -s "/usr/lib/mozilla/native-messaging-hosts" "$pkgdir/usr/lib/firedragon/native-messaging-hosts"
|
install -Dvm644 "../${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
|
||||||
|
install -Dvm644 "${srcdir}/settings/firedragon.cfg" "${pkgdir}/usr/lib/${pkgname}/firedragon.cfg"
|
||||||
# Delete unneeded things from settings repo
|
install -Dvm644 "${srcdir}/settings/firedragon.psd" "${pkgdir}/usr/share/psd/browsers/firedragon"
|
||||||
rm "$pkgdir/usr/lib/firedragon/LICENSE.txt"
|
install -Dvm644 "${srcdir}/settings/defaults/pref/local-settings.js" "${pkgdir}/usr/lib/${pkgname}/defaults/pref/local-settings.js"
|
||||||
rm "$pkgdir/usr/lib/firedragon/about.png"
|
install -Dvm644 "${srcdir}/settings/distribution/policies.json" "${pkgdir}/usr/lib/${pkgname}/distribution/policies.json"
|
||||||
rm "$pkgdir/usr/lib/firedragon/firedragon.psd"
|
|
||||||
rm "$pkgdir/usr/lib/firedragon/home.png"
|
|
||||||
rm "$pkgdir/usr/lib/firedragon/package.json"
|
|
||||||
rm "$pkgdir/usr/lib/firedragon/tabliss.json"
|
|
||||||
rm "$pkgdir/usr/lib/firedragon/yarn.lock"
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,12 @@
|
|||||||
post_install() {
|
RED='\033[0;31m'
|
||||||
echo "To use profile-sync-daemon add firedragon to ~/.config/psd/psd.conf"
|
NC='\033[0m'
|
||||||
echo "If you prefer strict hardened settings execute 'mkdir ~/.firedragon && cp /usr/lib/firedragon/firedragon.overrides.cfg ~/.firedragon/'"
|
|
||||||
}
|
post_upgrade() {
|
||||||
|
echo -e "⚠️ This update contains a rebase to the Floorp browser's source! ⚠️
|
||||||
|
This means we no longer use Librewolf as base, though settings and
|
||||||
|
privacy aware feature set were kept as close to our previous setup
|
||||||
|
as possible.
|
||||||
|
${RED}To prevent potential issues, we strongly recommend to create a
|
||||||
|
fresh browser profile. This can be done by running \"firedragon -P\"
|
||||||
|
in the terminal.${NC}"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user