Compare commits
No commits in common. "master" and "dev/new" have entirely different histories.
|
@ -1 +1,2 @@
|
||||||
/_build
|
/_build
|
||||||
|
/airplaypi_defconfig
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
[submodule "aimee-os"]
|
|
||||||
path = aimee-os
|
|
||||||
url = https://git.pyrocufflink.net/aimeeos/aimee-os
|
|
||||||
[submodule "buildroot"]
|
|
||||||
path = buildroot
|
|
||||||
url = https://gitlab.com/buildroot.org/buildroot.git
|
|
||||||
branch = 2025.05.x
|
|
22
Makefile
22
Makefile
|
@ -1,22 +0,0 @@
|
||||||
O ?= $(PWD)/_build
|
|
||||||
DEFCONFIG ?= aimeeos_rpi3_defconfig
|
|
||||||
|
|
||||||
AIMEEOS_SRC ?= $(PWD)/aimee-os
|
|
||||||
BUILDROOT_SRC ?= $(PWD)/buildroot
|
|
||||||
|
|
||||||
.PHONY: config
|
|
||||||
config: $(O)/.config
|
|
||||||
|
|
||||||
$(O)/.config:
|
|
||||||
$(MAKE) \
|
|
||||||
-C $(BUILDROOT_SRC) \
|
|
||||||
BR2_EXTERNAL=$(AIMEEOS_SRC) \
|
|
||||||
O=$(O) \
|
|
||||||
$(DEFCONFIG)
|
|
||||||
|
|
||||||
.PHONY: update-config
|
|
||||||
update-config:
|
|
||||||
$(MAKE) -C $(O) $(DEFCONFIG)
|
|
||||||
|
|
||||||
%:
|
|
||||||
$(MAKE) -C $(O) $@
|
|
1
aimee-os
1
aimee-os
|
@ -1 +0,0 @@
|
||||||
Subproject commit 9dae022788fa4040bbe7c5b38a3278d64e2d5458
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a53=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_CXX=y
|
||||||
|
BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
|
||||||
|
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
|
||||||
|
BR2_TARGET_GENERIC_HOSTNAME="airplaypi"
|
||||||
|
BR2_INIT_SYSTEMD=y
|
||||||
|
BR2_ROOTFS_OVERLAY="$(WORKSPACE)/rootfs-overlay"
|
||||||
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/post-image.sh"
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
|
||||||
|
BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
|
||||||
|
BR2_LINUX_KERNEL_ZSTD=y
|
||||||
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||||
|
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3"
|
||||||
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
|
# BR2_PACKAGE_BUSYBOX is not set
|
||||||
|
BR2_PACKAGE_XZ=y
|
||||||
|
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y
|
||||||
|
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y
|
||||||
|
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y
|
||||||
|
BR2_PACKAGE_READLINE=y
|
||||||
|
BR2_PACKAGE_RPI_FIRMWARE=y
|
||||||
|
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
|
||||||
|
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
|
||||||
|
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/config.txt"
|
||||||
|
BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/cmdline.txt"
|
||||||
|
BR2_PACKAGE_AVAHI=y
|
||||||
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
|
BR2_PACKAGE_IPROUTE2=y
|
||||||
|
BR2_PACKAGE_IWD=y
|
||||||
|
BR2_PACKAGE_OPENSSH=y
|
||||||
|
# BR2_PACKAGE_OPENSSH_CLIENT is not set
|
||||||
|
BR2_PACKAGE_SHAIRPORT_SYNC=y
|
||||||
|
BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION=y
|
||||||
|
BR2_PACKAGE_SHAIRPORT_SYNC_DBUS=y
|
||||||
|
BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b"
|
||||||
|
BR2_PACKAGE_HOST_KMOD_XZ=y
|
||||||
|
AIMEEOS=y
|
||||||
|
AIMEEOS_RPI=y
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 00fa6003038b4c4483f52dded1f8b9cf2fa57e5a
|
|
|
@ -1,6 +1,7 @@
|
||||||
pipeline {
|
pipeline {
|
||||||
parameters {
|
parameters {
|
||||||
booleanParam 'CLEAN_BUILD'
|
booleanParam 'CLEAN_BUILD'
|
||||||
|
string 'CUSTOM_TARGET'
|
||||||
}
|
}
|
||||||
|
|
||||||
options {
|
options {
|
||||||
|
@ -10,7 +11,6 @@ pipeline {
|
||||||
agent {
|
agent {
|
||||||
kubernetes {
|
kubernetes {
|
||||||
yamlFile 'ci/podTemplate.yaml'
|
yamlFile 'ci/podTemplate.yaml'
|
||||||
yamlMergeStrategy merge()
|
|
||||||
workspaceVolume persistentVolumeClaimWorkspaceVolume(
|
workspaceVolume persistentVolumeClaimWorkspaceVolume(
|
||||||
claimName: 'buildroot-airplaypi'
|
claimName: 'buildroot-airplaypi'
|
||||||
)
|
)
|
||||||
|
@ -36,16 +36,62 @@ pipeline {
|
||||||
|
|
||||||
stage('Prepare') {
|
stage('Prepare') {
|
||||||
steps {
|
steps {
|
||||||
container('jnlp') {
|
checkout(
|
||||||
sh 'git submodule update --remote aimee-os'
|
poll: false,
|
||||||
}
|
scm: scmGit(
|
||||||
|
branches: [[name: 'refs/tags/2025.05.1']],
|
||||||
|
browser: gitLab('https://gitlab.com/buildroot.org/buildroot/'),
|
||||||
|
extensions: [
|
||||||
|
[
|
||||||
|
$class: 'RelativeTargetDirectory',
|
||||||
|
relativeTargetDir: 'buildroot',
|
||||||
|
],
|
||||||
|
cloneOption(
|
||||||
|
shallow: true,
|
||||||
|
depth: 1,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
userRemoteConfigs: [[
|
||||||
|
url: 'https://gitlab.com/buildroot.org/buildroot.git',
|
||||||
|
]],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
checkout(
|
||||||
|
poll: false,
|
||||||
|
scm: scmGit(
|
||||||
|
branches: [[name: 'refs/heads/master']],
|
||||||
|
browser: [
|
||||||
|
$class: 'GiteaBrowser',
|
||||||
|
repoUrl: 'https://git.pyrocufflink.net/AimeeOS/aimee-os'
|
||||||
|
],
|
||||||
|
extensions: [
|
||||||
|
[
|
||||||
|
$class: 'RelativeTargetDirectory',
|
||||||
|
relativeTargetDir: 'aimee-os',
|
||||||
|
],
|
||||||
|
cloneOption(
|
||||||
|
noTags: false,
|
||||||
|
shallow: true,
|
||||||
|
depth: 1,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
userRemoteConfigs: [[
|
||||||
|
url: 'https://git.pyrocufflink.net/AimeeOS/aimee-os.git',
|
||||||
|
]],
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps {
|
steps {
|
||||||
sh 'make config && make update-config'
|
sh '. ci/defconfig.sh'
|
||||||
sh 'make all'
|
script {
|
||||||
|
if (params.CUSTOM_TARGET) {
|
||||||
|
sh "make -C _build '${CUSTOM_TARGET}'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sh 'make -C _build'
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
success {
|
success {
|
||||||
|
@ -59,6 +105,7 @@ pipeline {
|
||||||
'firmware.img.zst',
|
'firmware.img.zst',
|
||||||
'rootfs.squashfs',
|
'rootfs.squashfs',
|
||||||
'sdcard.img.zst',
|
'sdcard.img.zst',
|
||||||
|
'update.tar.zstd',
|
||||||
].join(','))
|
].join(','))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
{
|
||||||
|
cat airplaypi_defconfig.in
|
||||||
|
grep BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION buildroot/configs/raspberrypi3_defconfig
|
||||||
|
} > airplaypi_defconfig
|
||||||
|
make \
|
||||||
|
-C buildroot \
|
||||||
|
O="${PWD}"/_build \
|
||||||
|
BR2_EXTERNAL="${PWD}/aimee-os" \
|
||||||
|
defconfig \
|
||||||
|
BR2_DEFCONFIG="${PWD}"/airplaypi_defconfig
|
|
@ -1,4 +1,15 @@
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
io.kubernetes.cri-o.TrySkipVolumeSELinuxLabel: 'true'
|
||||||
spec:
|
spec:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
preference:
|
||||||
|
matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/jenkins
|
||||||
|
operator: Exists
|
||||||
containers:
|
containers:
|
||||||
- name: build
|
- name: build
|
||||||
image: git.pyrocufflink.net/containerimages/buildroot
|
image: git.pyrocufflink.net/containerimages/buildroot
|
||||||
|
@ -11,8 +22,17 @@ spec:
|
||||||
- mountPath: /etc/ssh/ssh_known_hosts
|
- mountPath: /etc/ssh/ssh_known_hosts
|
||||||
name: ssh-known-hosts
|
name: ssh-known-hosts
|
||||||
subPath: ssh_known_hosts
|
subPath: ssh_known_hosts
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/arch: amd64
|
||||||
securityContext:
|
securityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 1000
|
||||||
fsGroupChangePolicy: OnRootMismatch
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
seLinuxOptions:
|
||||||
|
level: s0:c596,c675
|
||||||
|
tolerations:
|
||||||
|
- key: du5t1n.me/jenkins
|
||||||
volumes:
|
volumes:
|
||||||
- name: ssh-known-hosts
|
- name: ssh-known-hosts
|
||||||
configMap:
|
configMap:
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[General]
|
||||||
|
EnableNetworkConfiguration=false
|
||||||
|
[Network]
|
||||||
|
NameResolvingService=systemd
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Resolve]
|
||||||
|
MulticastDNS=no
|
|
@ -0,0 +1,2 @@
|
||||||
|
enable root-shell@.service ttyAMA0
|
||||||
|
enable shairport-sync.service
|
|
@ -0,0 +1,26 @@
|
||||||
|
[Unit]
|
||||||
|
Description=root shell on %I
|
||||||
|
After=sshd.service
|
||||||
|
Conflicts=shutdown.target
|
||||||
|
Conflicts=getty@%i.service serial-getty@%i.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=idle
|
||||||
|
Environment=TERM=linux
|
||||||
|
ExecStart=/bin/sh
|
||||||
|
Restart=always
|
||||||
|
RestartSec=0
|
||||||
|
StandardInput=tty
|
||||||
|
TTYPath=/dev/%I
|
||||||
|
TTYReset=yes
|
||||||
|
TTYVHangup=yes
|
||||||
|
KillMode=process
|
||||||
|
IgnoreSIGPIPE=no
|
||||||
|
KillSignal=SIGHUP
|
||||||
|
|
||||||
|
# Unset locale for the console getty since the console has problems
|
||||||
|
# displaying some internationalized messages.
|
||||||
|
UnsetEnvironment=LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,20 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Shairport Sync - AirPlay Audio Receiver
|
||||||
|
Documentation=man:shairport-sync(7)
|
||||||
|
Documentation=file:///usr/share/doc/shairport-sync/README.md.gz
|
||||||
|
Documentation=https://github.com/mikebrady/shairport-sync
|
||||||
|
After=sound.target
|
||||||
|
Requires=avahi-daemon.socket
|
||||||
|
After=avahi-daemon.socket
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network.target network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Restart=on-failure
|
||||||
|
ExecStart=/usr/bin/shairport-sync
|
||||||
|
User=shairport-sync
|
||||||
|
Group=shairport-sync
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,2 @@
|
||||||
|
u shairport-sync - "Shairport Sync"
|
||||||
|
m shairport-sync audio
|
Loading…
Reference in New Issue