split-repo: Remove everything from lib branch
In order to create multiple Jenkins build pipelines for this repository, I'm splitting it up with branches. There will be a branch for each image: * base/main: The base image * cross/main: The image with a cross-compiler toolchain * build/main: The final build image Note _/main_ in each name. The intent here is to be able to have different "sub-branches" for each image, so e.g. there might be a _base/dev_. In addition to the branches for each image, there will be branches for the shared library code as well, named like _lib/main_. The image branches will checkout this branch using `git worktree`.lib/main
parent
c3418b96e7
commit
67803bada5
|
@ -1,70 +0,0 @@
|
||||||
pipeline {
|
|
||||||
agent {
|
|
||||||
kubernetes {
|
|
||||||
yamlFile 'ci/podTemplate.yaml'
|
|
||||||
yamlMergeStrategy merge()
|
|
||||||
defaultContainer 'buildah'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stages {
|
|
||||||
stage('Gentoo Stage 3') {
|
|
||||||
steps {
|
|
||||||
sh 'sh -e image-build/gentoo-stage3.sh'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Base') {
|
|
||||||
steps {
|
|
||||||
sh 'sh -e image-build/base.sh'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Cross') {
|
|
||||||
steps {
|
|
||||||
sh 'sh -e image-build/cross.sh'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Build') {
|
|
||||||
steps {
|
|
||||||
sh 'sh -e image-build/build.sh'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Push') {
|
|
||||||
steps {
|
|
||||||
withEnv([
|
|
||||||
"REGISTRY_AUTH_FILE=${env.WORKSPACE_TMP}/auth.json"
|
|
||||||
]) {
|
|
||||||
withCredentials([usernamePassword(
|
|
||||||
credentialsId: 'jenkins-packages',
|
|
||||||
usernameVariable: 'BUILDAH_USERNAME',
|
|
||||||
passwordVariable: 'BUILDAH_PASSWORD',
|
|
||||||
)]) {
|
|
||||||
sh """
|
|
||||||
buildah login \
|
|
||||||
--username \${BUILDAH_USERNAME} \
|
|
||||||
--password \${BUILDAH_PASSWORD} \
|
|
||||||
git.pyrocufflink.net
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
sh 'buildah push aimee-os.org/build/base git.pyrocufflink.net/aimeeos/build/base'
|
|
||||||
sh 'buildah push aimee-os.org/build/cross-aarch64-unknown-linux-gnu git.pyrocufflink.net/aimeeos/build/cross-aarch64-unknown-linux-gnu'
|
|
||||||
sh 'buildah push aimee-os.org/build/build-aarch64-unknown-linux-gnu git.pyrocufflink.net/aimeeos/build/build-aarch64-unknown-linux-gnu'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
post {
|
|
||||||
failure {
|
|
||||||
sh 'unshare -Ur --map-auto chown root:root -R tmp log'
|
|
||||||
dir('tmp/portage') {
|
|
||||||
archiveArtifacts '*/*/temp/*.log'
|
|
||||||
}
|
|
||||||
archiveArtifacts 'log/**/*'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: buildah
|
|
||||||
image: quay.io/containers/buildah:v1
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- |
|
|
||||||
trap 'kill $!; exit' TERM
|
|
||||||
rm -f ~/.config/containers/storage.conf
|
|
||||||
sleep infinity &
|
|
||||||
wait
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 1000
|
|
||||||
runAsGroup: 1000
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
github.com/fuse: 1
|
|
||||||
cpu: 6
|
|
||||||
memory: 8G
|
|
||||||
requests:
|
|
||||||
cpu: 6
|
|
||||||
memory: 8G
|
|
||||||
tolerations:
|
|
||||||
- key: du5t1n.me/jenkins
|
|
|
@ -1,39 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
SELF=$(readlink -f "$0")
|
|
||||||
SRCDIR=${SELF%/*/*}
|
|
||||||
. "${SRCDIR}"/lib/common.sh
|
|
||||||
|
|
||||||
base=aimee-os.org/gentoo/stage3-amd64-nomultilib-openrc:latest
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
-b|--base)
|
|
||||||
shift
|
|
||||||
base="$1"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf 'Unknown argument: %s\n' "$1" >&2
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
builddir=$(export TMPDIR=${TMPDIR:-${PWD}} && mktemp -d gentoo.XXXXXX)
|
|
||||||
builddir=$(readlink -f "${builddir}")
|
|
||||||
|
|
||||||
work=$(buildah from -v "${builddir}":/mnt/gentoo:rw,Z "${base}")
|
|
||||||
buildah add "${work}" portage /etc/portage/
|
|
||||||
buildah_run_script "${work}" "${SRCDIR}"/lib/sync.sh
|
|
||||||
buildah_run_script "${work}" "${SRCDIR}"/lib/bootstrap.sh
|
|
||||||
|
|
||||||
cid=$(buildah from scratch)
|
|
||||||
buildah copy "${cid}" "${builddir}" /
|
|
||||||
buildah_run_script "${cid}" "${SRCDIR}"/lib/profile.sh
|
|
||||||
buildah config --cmd /bin/bash "${cid}"
|
|
||||||
buildah commit --rm --squash "${cid}" aimee-os.org/build/base
|
|
||||||
|
|
||||||
buildah run "${work}" find /mnt/gentoo -mindepth 1 -delete
|
|
||||||
buildah rm "${work}"
|
|
||||||
rmdir "${builddir}"
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
SELF=$(readlink -f "$0")
|
|
||||||
SRCDIR=${SELF%/*/*}
|
|
||||||
. "${SRCDIR}"/lib/common.sh
|
|
||||||
|
|
||||||
target=aarch64-unknown-linux-gnu
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
-t|--target)
|
|
||||||
shift
|
|
||||||
target="$1"
|
|
||||||
;;
|
|
||||||
-b|--base)
|
|
||||||
shift
|
|
||||||
base="$1"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf 'Unknown argument: %s\n' "$1" >&2
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "${base-}" ]; then
|
|
||||||
base=aimee-os.org/build/cross-"${target}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cid=$(buildah from "${base}")
|
|
||||||
buildah add "${cid}" portage /etc/portage
|
|
||||||
buildah_run_script "${cid}" "${SRCDIR}"/lib/sync.sh
|
|
||||||
buildah_run_script "${cid}" "${SRCDIR}"/lib/tools.sh
|
|
||||||
buildah commit --rm --squash "${cid}" "aimee-os.org/build/build-${target}"
|
|
|
@ -1,32 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
SELF=$(readlink -f "$0")
|
|
||||||
SRCDIR=${SELF%/*/*}
|
|
||||||
. "${SRCDIR}"/lib/common.sh
|
|
||||||
|
|
||||||
target=aarch64-unknown-linux-gnu
|
|
||||||
base=aimee-os.org/build/base
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
-t|--target)
|
|
||||||
shift
|
|
||||||
target="$1"
|
|
||||||
;;
|
|
||||||
-b|--base)
|
|
||||||
shift
|
|
||||||
base="$1"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf 'Unknown argument: %s\n' "$1" >&2
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cid=$(buildah from "${base}")
|
|
||||||
buildah_run_script "${cid}" "${SRCDIR}"/lib/sync.sh
|
|
||||||
buildah_run_script "${cid}" "${SRCDIR}"/lib/crossdev.sh "${target}"
|
|
||||||
buildah commit --rm "${cid}" aimee-os.org/build/cross-"${target}"
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
SELF=$(readlink -f "$0")
|
|
||||||
SRCDIR=${SELF%/*/*}
|
|
||||||
|
|
||||||
tarball=$1
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ -z "${tarball}" ]; then
|
|
||||||
tarball=$(sh "${SRCDIR}"/tools/fetch-stage3.sh "$@")
|
|
||||||
fi
|
|
||||||
stage3=${tarball%.tar.*}
|
|
||||||
version=${stage3##*-}
|
|
||||||
stage3=${stage3%-*}
|
|
||||||
|
|
||||||
cid=$(buildah from scratch)
|
|
||||||
buildah add "${cid}" "${tarball}"
|
|
||||||
buildah config --cmd /bin/bash "${cid}"
|
|
||||||
buildah commit --rm --squash "${cid}" "aimee-os.org/gentoo/${stage3}:${version}"
|
|
||||||
buildah tag "aimee-os.org/gentoo/${stage3}:${version}" \
|
|
||||||
"aimee-os.org/gentoo/${stage3}:latest"
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
mkdir -p /mnt/gentoo
|
|
||||||
|
|
||||||
USE=build \
|
|
||||||
emerge -kvnuUDj --rebuilt-binaries=y --root=/mnt/gentoo sys-apps/baselayout
|
|
||||||
|
|
||||||
# Portage itself only requires Python and Bash. Actually building
|
|
||||||
# packages requires a lot more. These dependencies are implicit because
|
|
||||||
# they are listed in @system. We do not want everything from @system,
|
|
||||||
# though, so we have to explicitly install several packages.
|
|
||||||
#
|
|
||||||
# At some point, we may end up with an Aimee OS profile for Portage.
|
|
||||||
# If/when that happens, we can override @system to remove the stuff we
|
|
||||||
# don't want, like virtual/service-manager and virtual/openssh.
|
|
||||||
xargs emerge -kvnuUDj --rebuilt-binaries=y --root=/mnt/gentoo <<EOF
|
|
||||||
app-arch/gzip
|
|
||||||
dev-build/make
|
|
||||||
net-misc/wget
|
|
||||||
sys-apps/diffutils
|
|
||||||
sys-apps/gawk
|
|
||||||
sys-apps/grep
|
|
||||||
sys-apps/portage
|
|
||||||
sys-devel/binutils
|
|
||||||
sys-devel/gcc
|
|
||||||
sys-devel/patch
|
|
||||||
EOF
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
target=$1
|
|
||||||
|
|
||||||
mkdir -p /var/db/repos/crossdev/profiles /var/db/repos/crossdev/metadata
|
|
||||||
echo crossdev > /var/db/repos/crossdev/profiles/repo_name
|
|
||||||
echo 'masters = gentoo' > /var/db/repos/crossdev/metadata/layout.conf
|
|
||||||
chown -R portage:portage /var/db/repos/crossdev
|
|
||||||
mkdir -p /etc/portage/repos.conf
|
|
||||||
cat > /etc/portage/repos.conf/crossdev.conf <<EOF
|
|
||||||
[crossdev]
|
|
||||||
location = /var/db/repos/crossdev
|
|
||||||
priority = 10
|
|
||||||
masters = gentoo
|
|
||||||
auto-sync = no
|
|
||||||
EOF
|
|
||||||
|
|
||||||
emerge -kvnj --rebuilt-binaries=y sys-devel/crossdev
|
|
||||||
|
|
||||||
crossdev --stable -t "$1"
|
|
||||||
|
|
||||||
ln -s /var/db/repos/gentoo/sys-devel/rust-std /var/db/repos/crossdev/cross-${target}/
|
|
||||||
|
|
||||||
mkdir -p
|
|
||||||
/etc/portage/env/dev-lang \
|
|
||||||
/etc/portage/package.accept_keywords \
|
|
||||||
/etc/portage/package.use \
|
|
||||||
&& :
|
|
||||||
printf 'cross-%s/rust-std **\n' "${target}" \
|
|
||||||
> /etc/portage/package.accept-keywords/rust-cross
|
|
||||||
echo 'dev-lang/rust rust-src' \
|
|
||||||
> /etc/portage/package.use/rust-src
|
|
||||||
case ${target%%-*} in
|
|
||||||
aarch64)
|
|
||||||
llvm_target=AArch64
|
|
||||||
;;
|
|
||||||
arm*)
|
|
||||||
llvm_target=ARM
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf 'Unknown LLVM target: %s' "${target%%-*}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
printf '( %s:%s:%s )\n' \
|
|
||||||
"${llvm_target}" \
|
|
||||||
"${target}" \
|
|
||||||
"${target}" \
|
|
||||||
>> /etc/portage/env/dev-lang/rust
|
|
||||||
emerge -vbknuUj cross-${target}/rust-std
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
arch=$(uname -m)
|
|
||||||
case ${arch} in
|
|
||||||
x86_64) arch=amd64 ;;
|
|
||||||
aarch64) arch=arm64 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
mkdir -p /etc/portage
|
|
||||||
|
|
||||||
eselect profile set default/linux/"${arch}"/23.0/no-multilib
|
|
20
lib/tools.sh
20
lib/tools.sh
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
xargs -r emerge -vnuUj --rebuilt-binaries=y <<EOF
|
|
||||||
sys-apps/shadow
|
|
||||||
EOF
|
|
||||||
|
|
||||||
xargs -r emerge -vnuUj --rebuilt-binaries=y <<EOF
|
|
||||||
app-emulation/qemu
|
|
||||||
sec-policy/selinux-base
|
|
||||||
sys-apps/policycoreutils
|
|
||||||
sys-apps/kmod
|
|
||||||
sys-apps/systemd
|
|
||||||
sys-boot/grub
|
|
||||||
sys-fs/btrfs-progs
|
|
||||||
sys-fs/dosfstools
|
|
||||||
sys-fs/genimage
|
|
||||||
sys-fs/mtools
|
|
||||||
sys-fs/squashfs-tools
|
|
||||||
tini
|
|
||||||
EOF
|
|
|
@ -1 +0,0 @@
|
||||||
FEATURES=-buildpkg
|
|
|
@ -1 +0,0 @@
|
||||||
ACCEPT_KEYWORDS="${ARCH}"
|
|
|
@ -1,2 +0,0 @@
|
||||||
FEATURES="${FEATURES} binpkg-multi-instance buildpkg"
|
|
||||||
EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --usepkg --binpkg-respect-use=y"
|
|
|
@ -1 +0,0 @@
|
||||||
USE="${USE} -nls"
|
|
|
@ -1,2 +0,0 @@
|
||||||
EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --quiet-build=y --quiet-fail=y"
|
|
||||||
FEATURES="${FEATURES} -news"
|
|
|
@ -1 +0,0 @@
|
||||||
sys-fs/genimage ~amd64
|
|
|
@ -1 +0,0 @@
|
||||||
sys-kernel/raspberrypi-sources **
|
|
|
@ -1,6 +0,0 @@
|
||||||
# vim: set ft=gentoo-package-use :
|
|
||||||
|
|
||||||
# Dustin C. Hatch <dustin@hatch.name> (09 Feb 2023)
|
|
||||||
# Do not build binary packages for kernel sources
|
|
||||||
sys-kernel/gentoo-sources nobuildpkg
|
|
||||||
sys-kernel/raspberrypi-sources nobuildpkg
|
|
|
@ -1 +0,0 @@
|
||||||
sys-fs/btrfs-progs -man
|
|
|
@ -1 +0,0 @@
|
||||||
dev-vcs/git -perl
|
|
|
@ -1 +0,0 @@
|
||||||
sys-boot/grub -* GRUB_PLATFORMS: -*
|
|
|
@ -1,2 +0,0 @@
|
||||||
sys-kernel/gentoo-sources symlink
|
|
||||||
sys-kernel/raspberrypi-sources symlink
|
|
|
@ -1,5 +0,0 @@
|
||||||
# vim: set ft=gentoo-package-use :
|
|
||||||
|
|
||||||
# Dustin C. Hatch <dustin@hatch.name> (11 Dec 2024)
|
|
||||||
# Build a minimal QEMU for chrooting into the target environment
|
|
||||||
app-emulation/qemu -* QEMU_USER_TARGETS: aarch64 PYTHON_TARGETS: python3_12
|
|
|
@ -1,2 +0,0 @@
|
||||||
sys-libs/libselinux python
|
|
||||||
sys-process/audit python
|
|
|
@ -1 +0,0 @@
|
||||||
sys-fs/squashfs-tools zstd
|
|
|
@ -1,6 +0,0 @@
|
||||||
sys-apps/dbus systemd
|
|
||||||
sys-apps/systemd -* PYTHON_SINGLE_TARGET: python3_12
|
|
||||||
sec-policy/selinux-base systemd
|
|
||||||
sec-policy/selinux-base-policy systemd
|
|
||||||
virtual/tmpfiles systemd
|
|
||||||
virtual/udev systemd
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
: "${GENTOO_MIRROR:=http://mirror.leaseweb.com/gentoo}"
|
|
||||||
URLPATH=releases/amd64/autobuilds
|
|
||||||
GENTOO_KEY=13EBBDBEDE7A12775DFDB1BABB572E0E2D182910
|
|
||||||
GENTOO_KEYSERVER=hkps://keys.gentoo.org
|
|
||||||
|
|
||||||
stage3="${1:-amd64-nomultilib-openrc}"
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
gpg --keyserver ${GENTOO_KEYSERVER} --recv-keys ${GENTOO_KEY}
|
|
||||||
curl -fLO "${GENTOO_MIRROR}/${URLPATH}/latest-stage3-${stage3}.txt"
|
|
||||||
gpg --verify "latest-stage3-${stage3}.txt"
|
|
||||||
|
|
||||||
tarball=$(gpg --decrypt "latest-stage3-${stage3}.txt" | awk '$1!="#"{print $1}')
|
|
||||||
if [ ! -f "${tarball##*/}" ]; then
|
|
||||||
curl -fLO "${GENTOO_MIRROR}/${URLPATH}/${tarball}"
|
|
||||||
fi
|
|
||||||
if [ ! -f "${tarball##*/}.asc" ]; then
|
|
||||||
curl -fLO "${GENTOO_MIRROR}/${URLPATH}/${tarball}.asc"
|
|
||||||
fi
|
|
||||||
gpg --verify "${tarball##*/}.asc"
|
|
||||||
echo "${tarball##*/}"
|
|
Reference in New Issue