Compare commits

..

13 Commits

Author SHA1 Message Date
3520dc0148 fixup! fixup! wip: vc4 gpu support
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
2024-12-31 13:11:34 -06: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.
2024-12-31 13:10:57 -06:00
9c8a2172af fixup! fixup! wip: vc4 gpu support 2024-12-31 12:57:04 -06:00
04284f672e fixup! wip: vc4 gpu support
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
2024-12-31 12:44:21 -06:00
745dfa78e8 portage: Install-mask systemd-ssh-generator
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
This is pointless.
2024-12-31 11:25:42 -06:00
08f6c0d404 wip: systemd bpf firewall 2024-12-31 11:25:38 -06:00
c5e9a9d1dc wip: vc4 gpu support 2024-12-31 11:25:24 -06:00
5006ed685c Update Aimee OS 2024-12-31 07:10:11 -06:00
5b598a8ace wip: Install Sway WM 2024-12-31 07:10:11 -06:00
11a83a9dab ci: archive build logs on failure
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
2024-12-31 07:10:11 -06:00
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.
2024-12-31 07:10:11 -06:00
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.
2024-12-31 06:56:13 -06: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
2024-12-31 06:43:45 -06:00
18 changed files with 40 additions and 211 deletions

View File

@@ -1,8 +1,12 @@
arm_64bit=1 arm_64bit=1
arm_boost=1
start_x=1 start_x=1
bootcode_delay=0
boot_delay=0
gpu_mem=32
kernel=u-boot.bin kernel=u-boot.bin
enable_uart=1 enable_uart=1
@@ -10,10 +14,5 @@ dtoverlay=miniuart-bt
dtparam i2c_arm=on dtparam i2c_arm=on
display_auto_detect=1
dtoverlay=vc4-kms-v3d dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-ili9881-7inch dtoverlay=vc4-kms-dsi-ili9881-7inch
max_framebuffers=2
disable_fw_kms_setup=1
disable_overscan=1
dtparam=audio=on

View File

@@ -7,12 +7,13 @@ O=$1
export PORTAGE_CONFIGROOT="$O"/portage export PORTAGE_CONFIGROOT="$O"/portage
if [ ! -f /mnt/gentoo/usr/lib64/firefox/firefox ]; then
${target}-emerge -vbknuUDj --onlydeps --with-bdeps=n www-client/firefox:esr ${target}-emerge -vbknuUDj --onlydeps --with-bdeps=n www-client/firefox:esr
PORTAGE_BINHOST=https://distfiles.gentoo.org/releases/arm64/binpackages/23.0/arm64 \ PORTAGE_BINHOST=https://distfiles.gentoo.org/releases/arm64/binpackages/23.0/arm64 \
${target}-emerge -vgKnj --root=/mnt/gentoo www-client/firefox:esr ${target}-emerge -vgKnj --root=/mnt/gentoo www-client/firefox:esr
fi
passwd -R /mnt/gentoo -d root passwd -R /mnt/gentoo -d root
systemctl --root=/mnt/gentoo set-default graphical.target groupadd -R /mnt/gentoo -r kiosk
useradd -R /mnt/gentoo -r -g kiosk kiosk
systemctl --root=/mnt/gentoo enable wpa_supplicant@wlan0

View File

@@ -1,6 +1,3 @@
gui-apps/swayidle
gui-wm/sway gui-wm/sway
media-gfx/feh
media-video/pipewire
net-misc/curl
net-wireless/wpa_supplicant net-wireless/wpa_supplicant
media-video/pipewire

View File

@@ -46,7 +46,6 @@ CONFIG_IPV6_SIT=m
CONFIG_IPV6_SIT_6RD=m CONFIG_IPV6_SIT_6RD=m
CONFIG_INPUT_TOUCHSCREEN=y CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GOODIX=m
CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m
CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m
@@ -54,45 +53,17 @@ CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m
CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2=m CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2=m
# CONFIG_MEDIA_CEC_SUPPORT is not set # CONFIG_MEDIA_CEC_SUPPORT is not set
# CONFIG_MEDIA_SUPPORT is not set # CONFIG_MEDIA_SUPPORT is not set
CONFIG_DRM=y
CONFIG_DRM=m
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
CONFIG_DRM_DISPLAY_HELPER=m
CONFIG_DRM_GEM_SHMEM_HELPER=m
CONFIG_DRM_SCHED=m
CONFIG_DRM_PANEL_SIMPLE=m CONFIG_DRM_PANEL_SIMPLE=m
CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y
CONFIG_DRM_DISPLAY_CONNECTOR=m
CONFIG_DRM_TOSHIBA_TC358762=m CONFIG_DRM_TOSHIBA_TC358762=m
CONFIG_DRM_SIMPLE_BRIDGE=m CONFIG_V3D=m
CONFIG_DRM_V3D=m
CONFIG_VC4=m CONFIG_VC4=m
CONFIG_DRM_VC4_HDMI_CEC=y CONFIG_DRM_SIMPLEDRM=y
CONFIG_DRM_RP1_DSI=m
CONFIG_DRM_RP1_DPI=m
CONFIG_DRM_RP1_VEC=m
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m
CONFIG_FB_BCM2708=y
CONFIG_FB_SIMPLE=y
CONFIG_FB_SSD1307=m
CONFIG_FB_RPISENSE=m
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_IOMEM_HELPERS=y
CONFIG_FB_BACKLIGHT=m
CONFIG_BACKLIGHT_CLASS_DEVICE=m CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_PWM=m
CONFIG_BACKLIGHT_RPI=m CONFIG_BACKLIGHT_RPI=m
CONFIG_BACKLIGHT_LM3630A=m
CONFIG_BACKLIGHT_GPIO=m
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_BCM_VC_SM_CMA=m
CONFIG_SOUND=y CONFIG_SOUND=m
CONFIG_SND=m CONFIG_SND=m
# CONFIG_SND_PCM_TIMER is not set # CONFIG_SND_PCM_TIMER is not set
# CONFIG_SND_SUPPORT_OLD_API is not set # CONFIG_SND_SUPPORT_OLD_API is not set
@@ -118,9 +89,7 @@ CONFIG_MEMCG=y
CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_BPF=y CONFIG_CGROUP_BPF=y
CONFIG_BLK_CGROUP=y CONFIG_BLK_CGROUP=y
CONFIG_USER_NS=y
CONFIG_I2C_HID_OF_GOODIX=m
CONFIG_USB_DWC2=m CONFIG_USB_DWC2=m
CONFIG_USB_DWC2_PCI=m CONFIG_USB_DWC2_PCI=m
CONFIG_USB_ACM=m CONFIG_USB_ACM=m

View File

@@ -1,57 +0,0 @@
{
"policies": {
"BlockAboutAddons": true,
"BlockAboutConfig": true,
"BlockAboutProfiles": true,
"CaptivePortal": false,
"DisableDeveloperTools": true,
"DisableFeedbackCommands": true,
"DisableFirefoxScreenshots": true,
"DisableFirefoxSutudies": true,
"DisableFormHistory": true,
"DisableMasterPasswordCreation": true,
"DisablePasswordReveal": true,
"DisablePocket": true,
"DisablePrivateBrowsing": true,
"DisableProfileImport": true,
"DisableProfileRefresh": true,
"DisableSecurityBypass": true,
"DisableSetDesktopBackground": true,
"DNSOverHTTPS": {
"Enabled": false,
"Locked": true
},
"DontCheckDefaultBrowser": true,
"Homepage": {
"URL": "https://homeassistant.pyrocufflink.blue/",
"Locked": true,
"StartPage": "homepage-locked"
},
"NewTabPage": false,
"NoDefaultBookmarks": true,
"OfferToSaveLogins": false,
"OverrideFirstRunPage": "",
"OverridePostUpdatePage": "",
"PasswordManagerEnabled": false,
"Preferences": {
"browser.sessionstore.resume_from_crash": {
"Value": false
},
"browser.startup.couldRestoreSession.count": {
"Value": -1
},
"datareporting.policy.dataSubmissionPolicyBypassNotification": {
"Value": true
},
"extensions.activeThemeID": {
"Value": "firefox-compact-dark@mozilla.org"
}
},
"WebsiteFilter": {
"Block": ["<all_urls>"],
"Exceptions": [
"https://*.pyrocufflink.blue/*"
]
}
}
}

View File

@@ -1,7 +0,0 @@
account required pam_localuser.so
session optional pam_loginuid.so
session required pam_env.so envfile=/etc/profile.env
session required pam_limits.so
session required pam_env.so
session required pam_systemd.so

View File

@@ -1,19 +0,0 @@
# vim: set ft=swayconfig :
output DSI-1 resolution 720x1280 transform 90
input * {
map_to_output DSI-1
}
exec /usr/lib64/firefox/firefox
exec /usr/bin/photoframe stream
exec swayidle -w \
timeout 120 'photoframe show' resume 'photoframe hide'
for_window [title="Mozilla Firefox"] fullscreen
for_window [class="photoframe"] fullscreen
assign [title="Mozilla Firefox"] 1
assign [class="photoframe"] 2

View File

@@ -5,7 +5,6 @@ Type=ether wlan
DHCP=yes DHCP=yes
[DHCPv4] [DHCPv4]
ClientIdentifier=mac
UseDomains=yes UseDomains=yes
[DHCPv6] [DHCPv6]

View File

@@ -1,4 +0,0 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAINZCN2cxMDwedJ1Ke23Z3CZRcOYjqW8fFqsooRus7RK0AAAABHNzaDo= dustin@rosalina.p
yrocufflink.blue
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIAB6xTCSNz+AcQCWcyVKs84tThXN4wpLgCo2Lc48L6EsAAAABHNzaDo= dustin@luma.pyroc
ufflink.blue

View File

@@ -1,46 +0,0 @@
#!/bin/sh
photoframe_hide() {
swaymsg 'workspace 1'
}
photoframe_show() {
# Run on a separate workspace so Firefox can stay fullscreen, too
swaymsg 'workspace 2'
if [ -f /tmp/photoframe.pid ]; then
# feh is already running
return 0
fi
if [ ! -f /tmp/photoframe-current ]; then
cp /usr/share/feh/images/feh.png /tmp/photoframe-current
fi
feh -FZ --draw-exif --class photoframe /tmp/photoframe-current &
# Wait for the feh window to actually appear ...
swaymsg -t subscribe '["window"]'
# Sometimes, Sway's `for_window ... fullscreen` doesn't work?
swaymsg fullscreen
echo $! > /tmp/photoframe.pid
}
photoframe_stream() {
while :; do
curl -NsS https://photos.pyrocufflink.blue/stream |
while read url; do
curl -fsL -o /tmp/photoframe-next "${url}" || continue
mv /tmp/photoframe-next /tmp/photoframe-current
done
sleep 30
done
}
case $1 in
show)
photoframe_show
;;
hide)
photoframe_hide
;;
stream)
photoframe_stream
;;
esac

View File

@@ -1,3 +0,0 @@
enable wpa_supplicant@.service wlan0
enable kiosk.service

View File

@@ -10,11 +10,12 @@ Wants=time-sync.target
After=time-sync.target After=time-sync.target
[Service] [Service]
StateDirectory=%N TemporaryFileSystem=/home
CacheDirectory=%N ExecStartPre=!/bin/install -o kiosk -g kiosk -d -m u=rwx,go= /home/kiosk
Environment=XDG_CACHE_HOME=%C/%N ExecStart=/usr/bin/sway
ExecStart=/usr/bin/sway -c /etc/sway/kiosk.conf
User=kiosk User=kiosk
Environment=WLR_RENDERER_ALLOW_SOFTWARE=1
Environment=WLR_LIBINPUT_NO_DEVICES=1
StandardInput=tty StandardInput=tty
StandardOutput=tty StandardOutput=tty
StandardError=journal StandardError=journal
@@ -22,10 +23,6 @@ TTYPath=/dev/tty1
TTYReset=yes TTYReset=yes
TTYVHangup=yes TTYVHangup=yes
TTYVTDisallocate=yes TTYVTDisallocate=yes
PAMName=kiosk PAMName=system-login
UtmpMode=user UtmpMode=user
UtmpIdentifier=tty1 UtmpIdentifier=tty1
[Install]
WantedBy=graphical.target
Alias=display-manager.service

View File

@@ -1,2 +0,0 @@
g kiosk -
u kiosk - "Kiosk User" /var/lib/kiosk /bin/sh

View File

@@ -1 +1,9 @@
INSTALL_MASK="${INSTALL_MASK} /usr/lib/systemd/systemd-nsresourced* /usr/lib/systemd/system/systemd-nsresourced.*" INSTALL_MASK="
${INSTALL_MASK}
/etc/ssh/ssh*_config.d/*systemd*
/usr/lib/systemd/ssh_config.d
/usr/lib/systemd/sshd_config.d
/usr/lib/systemd/system-generators/systemd-ssh-generator
/usr/lib/systemd/system/systemd-nsresourced.*
/usr/lib/systemd/systemd-nsresourced*
"

View File

@@ -1,5 +0,0 @@
gui-apps/swayidle -systemd
gui-libs/wlroots X
gui-wm/sway X
media-gfx/feh exif inotify
net-misc/curl -alt-svc -ftp -hsts -http3 -imap -pop3 -progress-meter -psl -quic -smtp -tftp -websockets -adns -http2 CURL_QUIC: -*

View File

@@ -2,6 +2,13 @@
. "${CONFIGDIR:=${PWD}}"/config . "${CONFIGDIR:=${PWD}}"/config
if [ ! -f /var/db/repos/gentoo/metadata/timestamp ]; then
emerge-webrsync
fi
if [ "$(find /var/db/repos/gentoo/metadata -newermt '-24 hours' | wc -l)" -eq 0 ]; then
emaint sync
fi
mkdir -p /etc/portage/package.use mkdir -p /etc/portage/package.use
mkdir -p /etc/portage/make.conf mkdir -p /etc/portage/make.conf
echo 'virtual/libudev systemd' >> /etc/portage/package.use/systemd echo 'virtual/libudev systemd' >> /etc/portage/package.use/systemd

View File

@@ -1,5 +0,0 @@
etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf
etc/ssh/sshd_config.d/20-systemd-userdb.conf
usr/lib/systemd/ssh_config.d
usr/lib/systemd/sshd_config.d
usr/lib/systemd/system-generators/systemd-ssh-generator