From f3f2794ee8880a1d644607fe2103abeeef40e350 Mon Sep 17 00:00:00 2001 From: Louis Abel Date: Wed, 1 May 2024 16:17:43 -0700 Subject: [PATCH] drop container-build in root --- container-build.sh | 99 +++++++++++++++++++++++++++++++++++++++++++++ vagrant/vagrant.xml | 23 +++++++++++ 2 files changed, 122 insertions(+) create mode 100755 container-build.sh diff --git a/container-build.sh b/container-build.sh new file mode 100755 index 0000000..4730cea --- /dev/null +++ b/container-build.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# helps build a quick container image. that way a user doesn't have to use emapandas +# nor some other method. mock is probably not necessary, but it's up to you. +# label@resf.org + +set -o errexit +set -o pipefail + +SCRNAME="$(basename "$0")" +SCRDIR="$(dirname "${BASH_SOURCE[0]}")" + +export __usage +__usage=" +usage: $SCRNAME [OPTIONS] + +Options: + -o, --output-dir DIR + -c, --container NAME + -p, --peridot ID # optional. will use peridot repos. + -d, --debug # optional + +" + +OPTS=$(getopt -a -n container-build -o c:,o:,p:,d,h \ + -l container:,output-dir:,peridot:,debug,help -- "$@") + +function is_in_path() { + builtin type -P "${1}" +} + +function usage() { + echo "$__usage" +} + +eval set -- "$OPTS" +while :; do + case "$1" in + -c | --container) CONTAINER="$2" ; shift 2 ;; + -o | --output-dir) OUTPUTDIR="$2" ; shift 2 ;; + -p | --peridot) PERIDOTID="$2" ; shift 2 ;; + -d | --debug) DEBUG="--debug" ; shift ;; + -h | --help) usage ;; + --) shift ; break ;; + esac +done + +if [ -z "$CONTAINER" ] || [ -z "$OUTPUTDIR" ]; then + echo "Options are not set properly." + usage + exit 12 +fi + +if [ -e "/sys/fs/selinux/enforce" ]; then + enforce_check="$(cat /sys/fs/selinux/enforce)" + if [ "$enforce_check" -eq "1" ]; then + echo "Running with selinux enforcing is not recommended." + exit 22 + fi +fi + +is_in_path kiwi-ng &> /dev/null +ret_val=$? + +if [ "$ret_val" -ne "0" ]; then + echo "kiwi-ng not found. kiwi packages are likely not installed on this system." + exit 32 +fi + +function switch_repo_to_peridot() { + ID="$1" + # https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/ + pushd repositories || { echo "not found"; exit 1; } + sed -i "s;ZZ_INTERNAL_BaseOS_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/BaseOS/\$basearch;g" core-peridot.xml + sed -i "s;ZZ_INTERNAL_AppStream_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/AppStream/\$basearch;g" core-peridot.xml + sed -i "s;ZZ_INTERNAL_CRB_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/CRB/\$basearch;g" core-peridot.xml + sed -i "s;ZZ_INTERNAL_extras_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/extras/\$basearch;g" core-peridot.xml + rm core.xml + ln -sf core-peridot.xml core.xml + popd +} + +function main() { + #/bin/rm config.xml + #if [ ! -f "configs/rocky-live-${LIVE,,}.xml" ]; then + # echo "${LIVE} was not found. Is it supported?" + # exit 42 + #fi + #ln -sf "configs/rocky-live-${LIVE,,}.xml" config.xml + ln -sf "configs/rocky.xml" config.xml + + if [ -n "$PERIDOTID" ]; then + switch_repo_to_peridot "${PERIDOTID}" + fi + + # shellcheck disable=SC2086 + kiwi-ng $DEBUG --type="oci" --profile="Container-$CONTAINER" --color-output system build --description="$SCRDIR" --target-dir "$OUTPUTDIR" +} + +main diff --git a/vagrant/vagrant.xml b/vagrant/vagrant.xml index c59c92e..99890a6 100644 --- a/vagrant/vagrant.xml +++ b/vagrant/vagrant.xml @@ -14,6 +14,9 @@ + + + @@ -72,6 +75,24 @@ + + + + + false + + + 10 + + + + @@ -90,9 +111,11 @@ +