WIP: kiosk #3

Draft
dustin wants to merge 15 commits from kiosk into main
Owner
No description provided.
dustin added 9 commits 2024-12-31 17:27:08 +00:00
Attempting to cross-compile Firefox will be rather challenging.  It has
loads of dependencies, written in a variety of languages.  Some issues
are more interesting than others.  Notably, _dev-libs/nss_ needs to be
installed on the host in order to cross-compile itself, but its ebuild
does not specify this ([Bug 759127][0]).  Also the build system for
_gnome-base/librsvg_ is broken: [Gentoo Bug 835758][1], [GNOME
Issue #810][2].  Cross-compiling _dev-libs/gobject-introspection_ is
also broken ([Bug 759127][3], [850895][4]).

With all of these changes, we can get to the point where Portage starts
building Firefox, it will take hours and all of my machine's resources,
so I haven't tested if will actually build.  We shall see once Jenkins
tries it...

[0]: https://bugs.gentoo.org/759127
[1]: https://bugs.gentoo.org/835758
[2]: https://gitlab.gnome.org/GNOME/librsvg/-/issues/810
[3]: https://bugs.gentoo.org/850895
[4]: https://bugs.gentoo.org/751325
Building _www-client/firefox_ fails fairly early with an error about not
being able to find `aarch64-unknown-linux-gnu-clang-19` to use as `CC`.
I have not been able to determine what is supposed to provide this
program/symlink, nor much information at all about cross-compiling with
Clang, really.  We shall try building Firefox with GCC, since we know
that toolchain is complete.
Unfortunately, even building Firefox with GCC fails:

> 3:30.02 [gecko-profiler 0.1.0] /../lib/gcc/aarch64-unknown-linux-gnu/14/include/g++-v14/cstdlib:79:15: fatal error: 'stdlib.h' file not found
> 3:30.02 [gecko-profiler 0.1.0] thread 'main' panicked at tools/profiler/rust-api/build.rs:104:10:
> 3:30.02 [gecko-profiler 0.1.0] Unable to generate bindings: ClangDiagnostic("/../lib/gcc/aarch64-unknown-linux-gnu/14/include/g++-v14/cstdlib:79:15: fatal error: 'stdlib.h' file not found\n")

Clearly, something is misconfigured, because `stdlib.h` does indeed
exist.  I am not sure what, though, and I am getting tired of messing
with this.

Fortunately, the official Gentoo binary package project has a build of
_www-client/firefox_ for ARM64.  It has a rather different USE flag
configuration than what we did, though, so we have to pull in quite a
few more dependencies.

We can't just add _www-client/firefox_ to `install.packages` because
Aimee OS runs `emerge` with `--getbinpkgonly`, which implies
`--binpkg-changed-deps=y`.  This since we want to build everything
_except_ Firefox locally, the dependency graph is quite a bit different,
so Portage ignores the binary package and will try to build
_www-client/firefox_ from source.

To work around this limitation, we need to install Firefox manually in
the `customize.sh` script in two phases.  First, we install all of its
dependencies in the build root (`/usr/aarch64-…`), but not Firefox
itself, to get binpkgs for them.  Then, we install _www-client/firefox_
in the target root (`/mnt/gentoo`) with the `--getbinpkg` and
`--usepkgonly` flags.

Hopefully, one day I can figure out how to cross-compile Firefox (and it
doesn't take days to build once I do), and we can remove this hackery.
ci: archive build logs on failure
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
11a83a9dab
portage: Install-mask systemd-ssh-generator
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
745dfa78e8
This is pointless.
dustin added 1 commit 2024-12-31 18:44:27 +00:00
fixup! wip: vc4 gpu support
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
04284f672e
dustin added 3 commits 2024-12-31 19:43:50 +00:00
The `disableConcurrentBuilds` pipeline option tells Jenkins to force
subsequent builds _of the same job_ to wait in queue until the one
running has completed.  This is sufficient when there is only one
branch/project in development at a time.  In order to prevent multiple
projects from running simultaneously, we need to acquire a global lock;
all projects need to have this same option in order for it to be
effective.
fixup! fixup! wip: vc4 gpu support
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
3520dc0148
dustin force-pushed kiosk from 3520dc0148 to b2a7b2345c 2025-01-01 16:17:16 +00:00 Compare
dustin force-pushed kiosk from b2a7b2345c to 43e1df1a93 2025-01-02 19:16:10 +00:00 Compare
dustin force-pushed kiosk from 43e1df1a93 to 9ab95e37d2 2025-01-02 23:54:21 +00:00 Compare
dustin force-pushed kiosk from 9ab95e37d2 to ad37463416 2025-01-06 13:55:07 +00:00 Compare
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin kiosk:kiosk
git checkout kiosk
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dustin/photoframe2#3
No description provided.