The kernel console fbcon has been replaced with the userspace console kmscon in Fedora 45. See: https://github.com/fedora-iot/iot-distro/issues/137 Signed-off-by: Kenneth Giusti <kgiusti@redhat.com>
156 lines
4.5 KiB
Makefile
156 lines
4.5 KiB
Makefile
# This is a justfile. See https://github.com/casey/just
|
|
# This is only used for local development. The builds made on the Fedora
|
|
# infrastructure are run via Pungi in a Koji runroot.
|
|
|
|
# Set a default for some recipes
|
|
default_variant := "fedora-iot"
|
|
default_arch := "default"
|
|
# Current default in Pungi
|
|
force_nocache := "true"
|
|
|
|
# Just doesn't have a native dict type, but quoted bash dictionary works fine
|
|
pretty_names := '(
|
|
[fedora-iot]="IoT"
|
|
)'
|
|
|
|
# Default is to only validate the manifests
|
|
all: validate
|
|
|
|
# Basic validation to make sure the manifests are not completely broken
|
|
validate:
|
|
./ci/validate
|
|
|
|
# Output the processed manifest for a given variant (defaults to Silverblue)
|
|
manifest variant=default_variant:
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
rpm-ostree compose tree --print-only --repo=repo {{variant}}.yaml
|
|
|
|
# Perform dependency resolution for a given variant (defaults to Silverblue)
|
|
compose-dry-run variant=default_variant:
|
|
#!/bin/bash
|
|
set -euxo pipefail
|
|
|
|
mkdir -p repo cache logs
|
|
if [[ ! -f "repo/config" ]]; then
|
|
pushd repo > /dev/null || exit 1
|
|
ostree init --repo . --mode=bare-user
|
|
popd > /dev/null || exit 1
|
|
fi
|
|
|
|
rpm-ostree compose tree --unified-core --repo=repo --dry-run {{variant}}.yaml
|
|
|
|
# Alias/shortcut for compose-image command
|
|
compose variant=default_variant: (compose-image variant)
|
|
|
|
# Compose a variant using the legacy non container path (defaults to Silverblue)
|
|
compose-legacy variant=default_variant:
|
|
#!/bin/bash
|
|
set -euxo pipefail
|
|
|
|
declare -A pretty_names={{pretty_names}}
|
|
variant={{variant}}
|
|
variant_pretty=${pretty_names[$variant]-}
|
|
if [[ -z $variant_pretty ]]; then
|
|
echo "Unknown variant"
|
|
exit 1
|
|
fi
|
|
|
|
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
|
|
|
|
mkdir -p repo cache logs
|
|
if [[ ! -f "repo/config" ]]; then
|
|
pushd repo > /dev/null || exit 1
|
|
ostree init --repo . --mode=bare-user
|
|
popd > /dev/null || exit 1
|
|
fi
|
|
# Set option to reduce fsync for transient builds
|
|
ostree --repo=repo config set 'core.fsync' 'false'
|
|
|
|
buildid="$(date '+%Y%m%d.0')"
|
|
timestamp="$(date --iso-8601=sec)"
|
|
echo "${buildid}" > .buildid
|
|
|
|
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
|
|
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
|
|
|
|
ARGS="--repo=repo --cachedir=cache"
|
|
ARGS+=" --unified-core"
|
|
if [[ {{force_nocache}} == "true" ]]; then
|
|
ARGS+=" --force-nocache"
|
|
fi
|
|
CMD="rpm-ostree"
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
CMD="sudo rpm-ostree"
|
|
fi
|
|
|
|
${CMD} compose tree ${ARGS} \
|
|
--add-metadata-string="version=${variant_pretty} ${version}.${buildid}" \
|
|
"${variant}.yaml" \
|
|
|& tee "logs/${variant}_${version}_${buildid}.${timestamp}.log"
|
|
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
sudo chown --recursive "$(id --user --name):$(id --group --name)" repo cache
|
|
fi
|
|
|
|
ostree summary --repo=repo --update
|
|
|
|
# Compose an Ostree Native Container OCI image
|
|
compose-image variant=default_variant:
|
|
#!/bin/bash
|
|
set -euxo pipefail
|
|
|
|
declare -A pretty_names={{pretty_names}}
|
|
variant={{variant}}
|
|
variant_pretty=${pretty_names[$variant]-}
|
|
if [[ -z $variant_pretty ]]; then
|
|
echo "Unknown variant"
|
|
exit 1
|
|
fi
|
|
|
|
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
|
|
|
|
mkdir -p repo cache
|
|
if [[ ! -f "repo/config" ]]; then
|
|
pushd repo > /dev/null || exit 1
|
|
ostree init --repo . --mode=bare-user
|
|
popd > /dev/null || exit 1
|
|
fi
|
|
# Set option to reduce fsync for transient builds
|
|
ostree --repo=repo config set 'core.fsync' 'false'
|
|
|
|
buildid="$(date '+%Y%m%d.0')"
|
|
timestamp="$(date --iso-8601=sec)"
|
|
echo "${buildid}" > .buildid
|
|
|
|
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
|
|
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
|
|
|
|
ARGS="--cachedir=cache --initialize"
|
|
if [[ {{force_nocache}} == "true" ]]; then
|
|
ARGS+=" --force-nocache"
|
|
fi
|
|
# To debug with gdb, use: gdb --args ...
|
|
CMD="rpm-ostree"
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
CMD="sudo rpm-ostree"
|
|
fi
|
|
|
|
${CMD} compose image ${ARGS} \
|
|
--label="quay.expires-after=4w" \
|
|
"${variant}.yaml" \
|
|
"${variant}.ociarchive"
|
|
|
|
# Clean up everything
|
|
clean-all:
|
|
just clean-repo
|
|
just clean-cache
|
|
|
|
# Only clean the ostree repo
|
|
clean-repo:
|
|
rm -rf ./repo
|
|
|
|
# Only clean the package and repo caches
|
|
clean-cache:
|
|
rm -rf ./cache
|