It is successful to compile it with pkgctl build
(in Arch clean chroot) by using xvfb-run
instead of wlheadless-run
, but still with git
repo.
Updated PKGBUILD here: https://gist.github.com/JaHIY/81cdb2bc36510f777ef3e7a3782cac64
Git Clone URL: | https://aur.archlinux.org/floorp.git (read-only, click to copy) |
---|---|
Package Base: | floorp |
Description: | Firefox-based web browser focused on performance and customizability |
Upstream URL: | https://github.com/Floorp-Projects/Floorp |
Licenses: | MPL-2.0 |
Submitter: | nsk1010 |
Maintainer: | nsk1010 (xiota) |
Last Packager: | xiota |
Votes: | 22 |
Popularity: | 0.83 |
First Submitted: | 2022-06-30 09:53 (UTC) |
Last Updated: | 2025-03-05 21:54 (UTC) |
It is successful to compile it with pkgctl build
(in Arch clean chroot) by using xvfb-run
instead of wlheadless-run
, but still with git
repo.
Updated PKGBUILD here: https://gist.github.com/JaHIY/81cdb2bc36510f777ef3e7a3782cac64
@xiota
OK, I'll try to compile it again without sccache
.
And perhaps you are right. It is not the better way to use git
repo instead of tar.gz.
@jahiy sccache is not useful with PGO. The cache prevents optimization or has to be discarded for the recompilation stage. Your build probably "succeeded" by silently disabling PGO.
Shallow clones have to be redownloaded, so waste bandwidth on rebuild, relative to the tarball. Shallow clones have to be setup by the user in makepkg.conf
.
Your PKGBUILD also discards and redownloads submodules on rebuild, wasting more bandwidth.
@xiota
The bandwidth usage you mentioned cannot be ignored. Using git
repo requires downloading about 4GB of data, while downloading tar.gz only requires 700MB. However, using git
repo allows for the synchronization of submodules using git submodule
, which is very convenient. Perhaps we can use the git clone -b <tagname> --depth 1 <repository>
to obtain a shallow copy of the repo.
There's one more thing I almost forgot to mention. I also set --with-ccache=sccache
in mozconfig
, but I don't know whether it really speed up compilation.
@jahiy Thanks. I'll take a look. The problem with MOZ_PGO=1
is it previously didn't work in Arch clean chroot. This will probably take some time to solve.
The problem with using the git repo is it uses more bandwidth up front. With Floorp, you would probably make it up after [6] builds without clearing cache. For Firefox, probably over 15 builds would be required. I'll think about it more after I figure out the PGO issue.
I rewrote the PKGBUILD, mainly in build()
part. You can checkout it here.
https://gist.github.com/JaHIY/81cdb2bc36510f777ef3e7a3782cac64
The following page introduced how to compile firefox with PGO. It works for me. https://firefox-source-docs.mozilla.org/build/buildsystem/pgo.html
The PGO method in official firefox PKGBUILD doesn't work for me. https://gitlab.archlinux.org/archlinux/packaging/packages/firefox/-/blob/main/PKGBUILD?ref_type=heads
And I also use git
repo (tag) instead of tar.gz file.
@xiota After set export XDG_RUNTIME_DIR="$srcdir/xdg"
in prepare()
, I got another error:
(/build/floorp/src/Floorp-11.9.0/obj/dist/floorp/floorp:25014): Gdk-CRITICAL **: 17:11:03.314: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed
[Child 25016, Main Thread] WARNING: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed: 'glib warning', file /build/floorp/src/Floorp-11.9.0/toolkit/xre/nsSigHandlers.cpp:167
(/build/floorp/src/Floorp-11.9.0/obj/dist/floorp/floorp:25016): Gdk-CRITICAL **: 17:11:03.330: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed
console.error: ({})
JavaScript error: resource:///modules/sessionstore/TabState.sys.mjs, line 110: Error: Failed to load resource://floorp/modules/WorkspacesService.sys.mjs
JavaScript error: resource:///modules/sessionstore/TabState.sys.mjs, line 110: Error: Failed to load resource://floorp/modules/WorkspacesService.sys.mjs
JavaScript error: resource:///modules/sessionstore/TabState.sys.mjs, line 110: Error: Failed to load resource://floorp/modules/WorkspacesService.sys.mjs
JavaScript error: resource:///modules/sessionstore/SessionSaver.sys.mjs, line 55: Error: TelemetryStopwatch: key "FX_SESSION_RESTORE_COLLECT_DATA_MS" was already initialized
JavaScript error: resource:///modules/sessionstore/SessionSaver.sys.mjs, line 55: Error: TelemetryStopwatch: finishing nonexisting stopwatch. Histogram: "FX_SESSION_RESTORE_COLLECT_DATA_MS", key: ""
WARNING: At least one completion condition is taking too long to complete. Conditions: [{"name":"CrashMonitor: Writing notifications to file after receiving profile-before-change and awaiting all checkpoints written","state":{"profile-after-change":true,"final-ui-startup":true,"sessionstore-windows-restored":true,"quit-application-granted":true,"quit-application":true,"profile-change-net-teardown":true,"profile-change-teardown":true,"profile-before-change":true},"filename":"resource://gre/modules/CrashMonitor.sys.mjs","lineNumber":168,"stack":["resource://gre/modules/CrashMonitor.sys.mjs:init:168","resource://gre/modules/nsCrashMonitor.sys.mjs:observe:20"]}] Barrier: IOUtils: waiting for profileBeforeChange IO to complete
WARNING: At least one completion condition is taking too long to complete. Conditions: [{"name":"IOUtils Blocker (profile-before-change)","state":"(none)","filename":"/build/floorp/src/Floorp-11.9.0/dom/system/IOUtils.cpp","lineNumber":2232,"stack":"IOUtils::EventQueue::SetShutdownHooks"}] Barrier: profile-before-change
FATAL ERROR: AsyncShutdown timeout in IOUtils: waiting for profileBeforeChange IO to complete Conditions: [{"name":"CrashMonitor: Writing notifications to file after receiving profile-before-change and awaiting all checkpoints written","state":{"profile-after-change":true,"final-ui-startup":true,"sessionstore-windows-restored":true,"quit-application-granted":true,"quit-application":true,"profile-change-net-teardown":true,"profile-change-teardown":true,"profile-before-change":true},"filename":"resource://gre/modules/CrashMonitor.sys.mjs","lineNumber":168,"stack":["resource://gre/modules/CrashMonitor.sys.mjs:init:168","resource://gre/modules/nsCrashMonitor.sys.mjs:observe:20"]}] At least one completion condition failed to complete within a reasonable amount of time. Causing a crash to ensure that we do not leave the user with an unresponsive process draining resources.
WARNING: No crash reporter available
[Parent 24852, Main Thread] ###!!! ABORT: file resource://gre/modules/CrashMonitor.sys.mjs:168
Firefox exited with code -11 during profile initialization
Site not up-to-date reason: "/build/floorp/src/Floorp-11.9.0/obj/_virtualenvs/common" does not exist
[17:12:08.485] caught signal 15
[17:12:08.486] no-op renderer SHM seed: 192
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/jahiy-3/build
@Thr0TT1e @jahiy If not already set, XDG_RUNTIME_DIR
is set to $srcdir/xdg
in prepare()
. Let me know if there are any other problems.
I ran the command pkgctl build -I ~/.cache/yay/xwayland-run-git/xwayland-run-git-0.0.2.r3.gc5846be-1-x86_64.pkg.tar.zst
, but I got the error:
0:44.68 make[4]: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj/browser/locales'
0:44.68 make[4]: Entering directory '/build/floorp/src/Floorp-11.9.0/obj/browser/locales'
0:45.06 make[4]: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj/browser/locales'
0:45.06 make[3]: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj/browser/locales'
0:45.06 make[2]: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj/browser/installer'
0:45.07 make[1]: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj/browser/installer'
0:45.07 make: Leaving directory '/build/floorp/src/Floorp-11.9.0/obj'
Parallelism determined by memory: using 4 jobs for 4 cores based on 22.4 GiB RAM and estimated job size of 1.0 GiB
Date: 2024-02-13 CST
[15:43:02.567] weston 13.0.0
https://wayland.freedesktop.org
Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
Build: 13.0.0
[15:43:02.567] Command line: weston --no-config --backend headless --width=1920 --height=1080 --socket wayland-24788
[15:43:02.567] OS: Linux, 6.7.4-x64v3-xanmod1-1-edge, #1 SMP PREEMPT_DYNAMIC Sat, 10 Feb 2024 03:30:17 +0000, x86_64
[15:43:02.567] Flight recorder: enabled
[15:43:02.567] fatal: environment variable XDG_RUNTIME_DIR is not set.
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
Failed to connect to the compositor!
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/jahiy-1/build
Pinned Comments
xiota commented on 2024-06-13 08:25 (UTC) (edited on 2024-08-21 11:23 (UTC) by xiota)
Building this package takes a very long time. To avoid excessive rebuilds, updates will be delayed until the weekend following releases.
aur/floorp-bin
will be updated more quickly.This package cannot be updated on the basis of blog posts. Wait until an actual release is available before flagging: https://github.com/Floorp-Projects/Floorp/releases/
If you have problems building this package, read and follow instructions in the other pinned comment.
xiota commented on 2024-01-17 22:35 (UTC) (edited on 2024-08-03 15:04 (UTC) by xiota)
aur/floorp
now builds from source. Binary package available ataur/floorp-bin
.If you have problems building:
Some options are available by setting environment variables:
_build_pgo=false
: Don't use profile-guided optimization (PGO). (Builds faster, but runs slower.)_build_pgo_reuse=false
: Make new PGO profile._build_pgo_xvfb=true
: Profile with xvfb-run instead of wlheadless-run.To reduce rebuild times, this package attempts to save and reuse PGO profiles for patch-level releases. Profiles are regenerated for new major and minor releases. (major.minor.patch)