WIP: kiosk #3

Draft
dustin wants to merge 15 commits from kiosk into main
There is no content yet.
dustin added 9 commits 2024-12-31 17:27:08 +00:00
b908733257 Install Firefox
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
faccf8200f Build Firefox w/ gcc
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.
c93bceeb56 Install Firefox from Gentoo binpkg
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.
dustin/photoframe2/pipeline/pr-main This commit looks good Details
11a83a9dab
ci: archive build logs on failure
dustin/photoframe2/pipeline/pr-main This commit looks good Details
745dfa78e8
portage: Install-mask systemd-ssh-generator
This is pointless.
dustin added 1 commit 2024-12-31 18:44:27 +00:00
dustin/photoframe2/pipeline/pr-main This commit looks good Details
04284f672e
fixup! wip: vc4 gpu support
dustin added 3 commits 2024-12-31 19:43:50 +00:00
06838ab0a4 ci: Prevent concurrent builds
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.
dustin/photoframe2/pipeline/pr-main This commit looks good Details
3520dc0148
fixup! fixup! wip: vc4 gpu support
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.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b kiosk main
git pull origin kiosk

Step 2:

Merge the changes and update on Gitea.
git checkout main
git merge --no-ff kiosk
git push origin main
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: dustin/photoframe2#3
There is no content yet.