Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 43 additions & 28 deletions Justfile
Original file line number Diff line number Diff line change
@@ -1,59 +1,64 @@
export MELANGE_IMAGE := env("MELANGE_IMAGE", "cgr.dev/chainguard/melange:latest")
export SIGNING_KEY_PATH := env("SIGNING_KEY_PATH", "melange.rsa")
export MELANGE_RUNNER := env("MELANGE_RUNNER", "bubblewrap")
export PACKAGES_DIR := env("PACKAGES_DIR", "manifests")
export MELANGE_RUNNER := env("MELANGE_RUNNER", "docker")
export MANIFESTS_DIR := env("MANIFESTS_DIR", "./manifests")
export PACKAGES_DIR := env("PACKAGES_DIR", "./packages")
export KERNEL_DIR := env("KERNEL_DIR", "kernel")
export PIPELINE_DIR := env("PIPELINE_DIR", "./pipelines")
export QEMU_KERNEL_IMAGE := env("QEMU_KERNEL_IMAGE", "./kernel/boot/vmlinuz-virt")
export QEMU_KERNEL_MODULES := env("QEMU_KERNEL_IMAGE", "./kernel/lib/modules")
export MELANGE_OPTS := "
-i
--debug
--log-level=DEBUG
--arch host
--pipeline-dir ./pipelines
--repository-append https://packages.wolfi.dev/os
--keyring-append https://packages.wolfi.dev/os/wolfi-signing.rsa.pub"
export APKO_OPTS := "
--repository-append https://packages.wolfi.dev/os
--keyring-append https://packages.wolfi.dev/os/wolfi-signing.rsa.pub"

generate-signing-key:
podman run \
--rm -it -v "${PWD}:/work:Z" --privileged \
cgr.dev/chainguard/melange \
keygen
keygen *$ARGS:
podman run --rm -it -v "${PWD}:/work:Z" -w /work \
"${MELANGE_IMAGE}" \
keygen $ARGS

create-cache-dir:
mkdir -p ./.cache/apk-cache
mkdir -p ./.cache/melange
mkdir -p ./.cache/workspace

keygen *$ARGS:
podman run --rm -it -v "${PWD}:/work:Z" -w /work \
"${MELANGE_IMAGE}" \
keygen $ARGS

build $package="":
just create-cache-dir
melange build $MELANGE_OPTS "${PACKAGES_DIR}/${package}.yaml" \
--source-dir "./${PACKAGES_DIR}/${package}" \
--repository-append "./packages" \
--keyring-append "./${SIGNING_KEY_PATH}.pub" \
--signing-key "./${SIGNING_KEY_PATH}" \
--apk-cache-dir "./.cache/apk-cache" \
--cache-dir "./.cache/melange" \
--workspace-dir "./.cache/workspace" \
--runner "${MELANGE_RUNNER}"
melange build $MELANGE_OPTS "${MANIFESTS_DIR}/${package}.yaml" \
--repository-append "${PACKAGES_DIR}" \
--source-dir "${MANIFESTS_DIR}/${package}" \
--keyring-append "${SIGNING_KEY_PATH}.pub" \
--signing-key "${SIGNING_KEY_PATH}" \
--runner "${MELANGE_RUNNER}" \
--pipeline-dir "${PIPELINE_DIR}"
Comment on lines +33 to +39
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not too keen on merging this PR until QEMU works.
By removing the cache directory flags, we will run into out of storage issues so I'd prefer to leave this as draft until QEMU works reliably.


test $package="":
melange test $MELANGE_OPTS "${MANIFESTS_DIR}/${package}.yaml" \
--repository-append "${PACKAGES_DIR}" \
--source-dir "${MANIFESTS_DIR}/${package}" \
--keyring-append "${SIGNING_KEY_PATH}.pub" \
--runner "${MELANGE_RUNNER}" \
--pipeline-dirs "${PIPELINE_DIR}" \
--test-package-append wolfi-base

build-tree:
echo "This will build all packages required for Wolfi Bootc"
just build composefs
just build ostree
just build bootc
# just build composefs
# just build ostree
# just build bootc

just build composefs-rs
just build dracut
# just build composefs-rs
# just build dracut

just build py3-pefile
just build systemd
just build kernel
# just build kernel
just build kernel-initramfs
just build kernel-uki

Expand All @@ -77,9 +82,11 @@ build-apko $yaml="apko.yaml" $tag="wolfi-bootc:latest" $tar="wolfi-bootc.tar":
bootc *ARGS:
sudo podman run \
--rm --privileged --pid=host \
-w /data \
-it \
-v /sys/fs/selinux:/sys/fs/selinux \
-v /etc/containers:/etc/containers:Z \
-v /usr/share/factory/etc/containers:/usr/share/factory/etc/containers:Z \
-v /var/lib/containers:/var/lib/containers \
-v /dev:/dev \
-v .:/data:Z \
Expand All @@ -92,3 +99,11 @@ generate-bootable-image:
fallocate -l 20G bootable.img
fi
just bootc install to-disk --via-loopback /data/bootable.img --filesystem ext4

fetch-kernel:
#!/usr/bin/env bash
set -xeuo pipefail
mkdir -p "${KERNEL_DIR}"
KERNEL_PKG="$(curl -sL https://dl-cdn.alpinelinux.org/alpine/edge/main/$(arch)/APKINDEX.tar.gz | tar -Oxz APKINDEX | awk -F':' '$1 == "P" {printf "%s-", $2} $1 == "V" {printf "%s.apk\n", $2}' | grep "linux-lts" | grep -v -e "dev" -e "doc")"
curl -LSo "${KERNEL_DIR}/linux-virt.apk" "https://dl-cdn.alpinelinux.org/alpine/edge/main/$(arch)/$KERNEL_PKG"
tar -xf "${KERNEL_DIR}/linux-virt.apk" -C "${KERNEL_DIR}"