Compare commits
No commits in common. "master" and "dev/new" have entirely different histories.
|
@ -1 +1,2 @@
|
|||
/_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 {
|
||||
parameters {
|
||||
booleanParam 'CLEAN_BUILD'
|
||||
string 'CUSTOM_TARGET'
|
||||
}
|
||||
|
||||
options {
|
||||
|
@ -10,7 +11,6 @@ pipeline {
|
|||
agent {
|
||||
kubernetes {
|
||||
yamlFile 'ci/podTemplate.yaml'
|
||||
yamlMergeStrategy merge()
|
||||
workspaceVolume persistentVolumeClaimWorkspaceVolume(
|
||||
claimName: 'buildroot-airplaypi'
|
||||
)
|
||||
|
@ -36,16 +36,62 @@ pipeline {
|
|||
|
||||
stage('Prepare') {
|
||||
steps {
|
||||
container('jnlp') {
|
||||
sh 'git submodule update --remote aimee-os'
|
||||
}
|
||||
checkout(
|
||||
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') {
|
||||
steps {
|
||||
sh 'make config && make update-config'
|
||||
sh 'make all'
|
||||
sh '. ci/defconfig.sh'
|
||||
script {
|
||||
if (params.CUSTOM_TARGET) {
|
||||
sh "make -C _build '${CUSTOM_TARGET}'"
|
||||
}
|
||||
}
|
||||
sh 'make -C _build'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
|
@ -59,6 +105,7 @@ pipeline {
|
|||
'firmware.img.zst',
|
||||
'rootfs.squashfs',
|
||||
'sdcard.img.zst',
|
||||
'update.tar.zstd',
|
||||
].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:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 100
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: node-role.kubernetes.io/jenkins
|
||||
operator: Exists
|
||||
containers:
|
||||
- name: build
|
||||
image: git.pyrocufflink.net/containerimages/buildroot
|
||||
|
@ -11,8 +22,17 @@ spec:
|
|||
- mountPath: /etc/ssh/ssh_known_hosts
|
||||
name: ssh-known-hosts
|
||||
subPath: ssh_known_hosts
|
||||
nodeSelector:
|
||||
kubernetes.io/arch: amd64
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: OnRootMismatch
|
||||
seLinuxOptions:
|
||||
level: s0:c596,c675
|
||||
tolerations:
|
||||
- key: du5t1n.me/jenkins
|
||||
volumes:
|
||||
- name: ssh-known-hosts
|
||||
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