diff --git a/fedora-iot.conf b/fedora-bootc.conf similarity index 55% rename from fedora-iot.conf rename to fedora-bootc.conf index a3a3c10..743699f 100644 --- a/fedora-iot.conf +++ b/fedora-bootc.conf @@ -1,33 +1,33 @@ # PRODUCT INFO release_name = 'Fedora-IoT' release_short = 'Fedora-IoT' -release_version = '46' +release_version = '40' # Let's not build install media during this run. For the image builds -# and OSTree installer we'll use inputs from other f45 runs. +# and OSTree installer we'll use inputs from other f40 runs. skip_phases = ["buildinstall", "createrepo", "extra_files"] # GENERAL SETTINGS comps_file = { 'scm': 'git', - 'repo': 'https://forge.fedoraproject.org/releng/fedora-comps.git', + 'repo': 'https://pagure.io/fedora-comps.git', 'branch': 'main', - 'file': 'comps-f46.xml', - 'command': 'make comps-f46.xml' + 'file': 'comps-f40.xml', + 'command': 'make comps-f40.xml' } variants_file='variants-fedora.xml' -sigkeys = ['91211FCE'] +sigkeys = ['a15B79cc'] # limit tree architectures # if undefined, all architectures from variants.xml will be included -tree_arches = ['aarch64', 'x86_64', "ppc64le", "s390x"] +tree_arches = ['aarch64', 'x86_64'] # limit tree variants # if undefined, all variants from variants.xml will be included -tree_variants = ['IoT'] +tree_variants = ['bootc'] hashed_directories = True # RUNROOT settings runroot_channel = 'compose' -runroot_tag = 'f46-build' +runroot_tag = 'f40-build' # PKGSET pkgset_source = 'koji' # koji, repos @@ -37,7 +37,7 @@ pkgset_source = 'koji' # koji, repos # pkgset_repos = {} # PKGSET - KOJI -pkgset_koji_tag = 'f46-iot' +pkgset_koji_tag = 'f40-iot' pkgset_koji_inherit = False filter_system_release_packages = False @@ -87,13 +87,6 @@ lorax_options = [ }) ] -additional_packages = [ - ('^IoT$$', { - '*': [ - '*', - ], - }), -] multilib = [ ('^Everything$', { 'x86_64': ['devel', 'runtime'], @@ -166,7 +159,7 @@ image_volid_layered_product_formats = [] # allow Pungi to tell it what volume ID to use. Note: # https://fedoraproject.org/wiki/User:Adamwill/Draft_fedora_image_naming_policy # '-Workstation-' is a temporary workaround. See -# https://forge.fedoraproject.org/releng/pungi-fedora/pulls/525 +# https://pagure.io/pungi-fedora/pull-request/525 volume_id_substitutions = { 'Beta': 'B', 'Rawhide': 'rawh', @@ -183,7 +176,7 @@ volume_id_substitutions = { 'IoT': 'iot', 'Jam_KDE': 'Jam', 'MATE_Compiz': 'MATE', - # Note https://forge.fedoraproject.org/releng/pungi-fedora/issues/533 + # Note https://pagure.io/pungi-fedora/issue/533 'Python-Classroom': 'Clss', 'Python_Classroom': 'Clss', 'Robotics': 'Robo', @@ -202,105 +195,26 @@ translate_paths = [ ('/mnt/koji/compose/', 'https://kojipkgs.fedoraproject.org/compose/'), ] -# These may be inherited by various phases for creating Koji tasks +# These will be inherited by live_media, live_images and image_build +global_ksurl = 'git+https://pagure.io/fedora-kickstarts.git?#origin/f40' global_release = '!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN' -global_version = '46' -global_target = 'f46' - -imagebuilder_target = 'f46-image-builder' -imagebuilder = { - "^IoT$": [ - { - "name": "%s-raw" % release_name, - "types": ["iot-raw-xz"], - "arches": ["x86_64", "aarch64"], - "repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"], - "ostree": { - "url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ref": "fedora/rawhide/$arch/iot", - }, - "subvariant": "IoT", - "failable": ["*"], - }, - { - "name": "%s-ostree" % release_name, - "types": ["iot-installer"], - "arches": ["x86_64", "aarch64"], - "repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"], - "ostree": { - "url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ref": "fedora/rawhide/$arch/iot", - }, - "subvariant": "IoT", - "manifest_type": "dvd-ostree", - "failable": ["*"], - }, - { - "name": "%s-provisioner" % release_name, - "types": ["iot-simplified-installer"], - "arches": ["x86_64", "aarch64"], - "repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"], - "ostree": { - "url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ref": "fedora/rawhide/$arch/iot", - }, - "blueprint": { - "customizations": { - "installation_device": "/dev/vda1", - }, - }, - "subvariant": "IoT_Simplified_Provisioner", - "failable": ["*"], - "manifest_type": "dvd-ostree", - }, - ], -} - -ostree = { - "^IoT$": { - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "force_new_commit": True, - "unified_core": True, - "treefile": "fedora-iot.yaml", - "config_url": "https://forge.fedoraproject.org/iot/ostree.git", - "config_branch": "main", - "repo": [ - "IoT", - "https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/" - ] - "tag_ref": False, - "ostree_repo": "/mnt/koji/compose/iot/repo/", - "ostree_ref": "fedora/rawhide/${basearch}/iot", - "runroot_packages": ["selinux-policy-targeted"], - "arches": ["x86_64", "aarch64"], - "update_summary": True, - } -} +global_version = '40' +# live_images ignores this in favor of live_target +global_target = 'f40' ostree_container = { - "^IoT$": [ - { - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "config_url": "https://forge.fedoraproject.org/iot/base-images.git", - "config_branch": "main", - "treefile": "fedora-rawhide.yaml", - "repo": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/"], - "arches": ["x86_64", "aarch64", "ppc64le", "s390x"], - "failable": ['*'], - "subvariant": "base", - "name": "Fedora-base-bootc", - }, - { - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "config_url": "https://forge.fedoraproject.org/iot/fedora-iot-bootc.git", - "config_branch": "main", - "treefile": "fedora-iot-rawhide.yaml", - "repo": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/"], - "arches": ["x86_64", "aarch64"], - "failable": ['*'], - "name": "Fedora-IoT-bootc", - }, - ] + "^bootc$": { + "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", + "config_url": "https://pagure.io/fedora-iot/base-images", + "config_branch": "f41-stable", + "treefile": "fedora-40.yaml", + "repo": ["https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose/Everything/$basearch/os/", + "https://kojipkgs.fedoraproject.org/compose/updates/f40-updates/compose/Everything/$basearch/os/"], + "arches": ["x86_64", "aarch64"], + "failable": ['*'], + "subvariant": "base", + "name": "Fedora-base-bootc", + }, } koji_profile = 'compose_koji' diff --git a/nightly.sh b/nightly.sh index fa8dfcb..cf44a8f 100755 --- a/nightly.sh +++ b/nightly.sh @@ -9,9 +9,9 @@ SKIP_PHASES="--skip-phase=productimg" DEST=$(pwd) DATE=$(date "+%Y%m%d") SHORT="Fedora-IoT" -RELEASE="46" -RELEASE_TITLE="46" -COMPSFILE="comps-f46.xml" +RELEASE="40" +RELEASE_TITLE="40" +COMPSFILE="comps-f40.xml" TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX` TOMAIL="iot@lists.fedoraproject.org" FROM="Fedora IoT Report " @@ -30,20 +30,20 @@ if [ -d releng ]; then git pull --rebase popd else - git clone https://forge.fedoraproject.org/releng/tooling.git releng + git clone https://pagure.io/releng.git fi # Set up our fedmsg function, using the releng repo definition #FEDMSG_MODNAME="compose" #FEDMSG_CERTPREFIX="releng" -. ./releng/infrastructure/messaging/fedora_messaging.sh +. ./releng/scripts/fedmsg-functions.sh # Announce that we are starting, even though we don't know the compose_id yet.. #fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "short": "%s"}' "$RELEASE" "$ARCH" "$SHORT") #send_fedmsg "${fedmsg_json_start}" ${RELEASE} start #pushd $TMPDIR -#git clone https://forge.fedoraproject.org/releng/fedora-comps.git && { +#git clone https://pagure.io/fedora-comps.git && { # pushd fedora-comps # make "${COMPSFILE}" # cp "${COMPSFILE}" $DEST/ @@ -67,7 +67,7 @@ fi NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g') -./releng/builds/compose/build_composeinfo.py "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID" +./releng/scripts/build_composeinfo "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID" # Set this to use later for a few items include depcheck DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID diff --git a/sync-bootc-base-containers.sh b/sync-bootc-base-containers.sh index ebab8ee..5417d10 100755 --- a/sync-bootc-base-containers.sh +++ b/sync-bootc-base-containers.sh @@ -33,23 +33,23 @@ EXAMPLE EOF } +ARCHES=("aarch64" "x86_64") + arch_to_goarch() { local a=$1; shift # See https://github.com/coreos/stream-metadata-go/blob/c5fe1b98ac1b1e6ab62a606b7580dc1f30703f83/arch/arch.go#L14 case "$a" in aarch64) echo arm64 ;; x86_64) echo amd64 ;; - ppc64le) echo ppc64le ;; - s390x) echo s390x ;; *) echo $a ;; esac } # This is the release of Fedora that is currently stable, it will define if we # need to move the fedora:latest tag -current_stable="44" +current_stable="41" # Define what is rawhide so we know to push that tag -current_rawhide="46" +current_rawhide="42" # Sanity checking if ! [[ "${1}" =~ ^-?[0-9]+$ ]]; then @@ -67,7 +67,7 @@ if [[ "${3}" == "-s" ]]; then stage="true" fi -BASENAMES=("Fedora-IoT-bootc" "Fedora-IoT-bootc-base") +basename="Fedora-IoT-bootc" format="oci-archive" vers=${1} compose=${2} @@ -79,6 +79,7 @@ compdate=`echo ${compose} | cut -c 4-` # Can't currently query koji for runroot tasks as they're not tagged # # base_build_nvr=$(koji -q latest-build --type=image f${1}-updates-candidate ${basename} | awk '{print $1}') +base_build_nvr=${basename}-${vers}-${compdate} if [[ ${1} -eq "$current_stable" ]]; then tagname="latest" @@ -86,7 +87,6 @@ fi if [[ ${1} -eq "$current_rawhide" ]]; then tagname="rawhide" fi - if [[ -z "$stage" ]]; then registries=("registry.fedoraproject.org" "candidate-registry.fedoraproject.org" "quay.io/fedora") else @@ -134,26 +134,25 @@ find_and_copy_images() { local registry_name=$2 local release=$3 local name - if [[ ${registry_name} = "fedora-bootc" ]] || [[ ${registry_name} = "fedora-iot" ]]; then + if [[ ${registry_name} = "fedora-bootc" ]]; then name=${basename} else printf "Unexpected image type! If we added a new one, it needs mapping here" exit 1 fi - # Check that all architectures completed in the build else exit - for arch in "${ARCHES[@]}"; do - if [ ! -f "/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/${compose_type}/${arch}/images/${basename}-${release}.${compdate}.ociarchive" ]; then - echo "One of the expected images are missing, exiting." - exit 1 - fi - done + # Check both architectures completed in the build else exit + if [ ! -f "/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/bootc/x86_64/images/${basename}-${release}.${compdate}.ociarchive" ] && \ + [ ! -f "/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/bootc/aarch64/images/${basename}-${release}.${compdate}.ociarchive" ]; then + echo "One of the expected images are missing, exiting." + exit 1 + fi work_dir=$(mktemp -d) pushd ${work_dir} &> /dev/null # Import the image for arch in "${ARCHES[@]}"; do local filename - filename="/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/${compose_type}/${arch}/images/${basename}-${release}.${compdate}.ociarchive" + filename="/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/bootc/${arch}/images/${basename}-${release}.${compdate}.ociarchive" copy_image ${format}:${filename} ${registry_name}:${release}-${arch} done @@ -175,19 +174,7 @@ fi printf "Syncing compose contailers: ${vers} : ${compose}\n" -# For fedora-bootc and fedora-iot -for basename in "${BASENAMES[@]}"; do - if [[ ${basename} = "Fedora-IoT-bootc" ]]; then - registry_name="fedora-bootc" - compose_type="bootc" - ARCHES=("aarch64" "x86_64" "ppc64le" "s390x") - elif [[ ${basename} = "Fedora-IoT-bootc-base" ]]; then - registry_name="fedora-iot" - compose_type="bootc-base" - ARCHES=("aarch64" "x86_64") - fi - base_build_nvr=${basename}-${vers}-${compdate} - if [[ -n ${base_build_nvr} ]]; then - find_and_copy_images ${base_build_nvr} ${registry_name} ${vers} ${compose} - fi -done +# For fedora-bootc +if [[ -n ${base_build_nvr} ]]; then + find_and_copy_images ${base_build_nvr} fedora-bootc ${vers} ${compose} +fi diff --git a/sync-release.sh b/sync-release.sh index 5badf8c..a14c16d 100755 --- a/sync-release.sh +++ b/sync-release.sh @@ -12,14 +12,14 @@ DEST=$(pwd) DATE=$(date "+%Y%m%d") # the Pungi 'shortname', which we will include in fedmsgs for disambiguation SHORT="Fedora-IoT" -RELEASE="46" -RELEASE_TITLE="46" -COMPSFILE="comps-f46.xml" +RELEASE="40" +RELEASE_TITLE="40" +COMPSFILE="comps-f40.xml" TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX` TOMAIL="iot@lists.fedoraproject.org" FROM="Fedora IoT Report " RSYNCPREFIX="sudo -u ftpsync" -RSYNCTARGET="/pub/alt/iot/46/" +RSYNCTARGET="/pub/alt/iot/40/" OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) diff --git a/twoweek-nightly.sh b/twoweek-nightly.sh index c0925c7..63e3784 100755 --- a/twoweek-nightly.sh +++ b/twoweek-nightly.sh @@ -4,21 +4,21 @@ LABEL=$1 # Remove the label from arguments. It gets special treatment. Other arguments # to the script are passed to pungi-koji directly. shift -CONFIG="fedora-iot.conf" +CONFIG="fedora-bootc.conf" TARGET_DIR="/mnt/koji/compose/iot" NIGHTLY="" DEST=$(pwd) DATE=$(date "+%Y%m%d") # the Pungi 'shortname', which we will include in fedmsgs for disambiguation SHORT="Fedora-IoT" -RELEASE="46" -RELEASE_TITLE="46" -COMPSFILE="comps-f46.xml" +RELEASE="40" +RELEASE_TITLE="40" +COMPSFILE="comps-f40.xml" TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX` TOMAIL="iot@lists.fedoraproject.org" FROM="Fedora IoT Report " RSYNCPREFIX="sudo -u ftpsync" -RSYNCTARGET="/pub/alt/iot/rawhide/" +RSYNCTARGET="/pub/alt/iot/branched/" OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) # assume a releng dir is a git checkout of the releng repo @@ -28,13 +28,13 @@ if [ -d releng ]; then git pull --rebase popd else - git clone https://forge.fedoraproject.org/releng/tooling.git releng + git clone https://pagure.io/releng.git fi # Set up our fedmsg function, using the releng repo definition fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "short": "%s"}' "$RELEASE" "$ARCH" "$SHORT") FEDMSG_MODNAME="compose" FEDMSG_CERTPREFIX="releng" -. ./releng/infrastructure/messaging/fedora_messaging.sh +. ./releng/scripts/fedmsg-functions.sh # Announce that we are starting... send_fedmsg "${fedmsg_json_start}" ${RELEASE} start CMD="pungi-koji --notification-script=/usr/bin/pungi-fedmsg-notification --notification-script=pungi-wait-for-signed-ostree-handler --config=$CONFIG --old-composes=$TARGET_DIR $OLD_COMPOSES_DIR $NIGHTLY --label=$LABEL" @@ -47,34 +47,6 @@ time $CMD "$@" if [ "$?" != "0" ]; then exit 1 fi -ostree summary --update --repo=/mnt/koji/compose/iot/repo/ -NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) -SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g') - -./releng/builds/compose/build_composeinfo.py "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID" - -DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID -# Public URL the synced compose will wind up at, we put it in fedmsgs -LOCATION="https://dl.fedoraproject.org$RSYNCTARGET" -# Update fedmsg template -fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "short": "%s", "compose_id": "%s", "location": "%s"}' "$RELEASE" "$ARCH" "$SHORT" "$NEWCOMPOSE_ID", "$LOCATION") -fedmsg_json_done=$(printf '{"log": "done", "branch": "%s", "arch": "%s", "short": "%s", "compose_id": "%s", "location": "%s"}' "$RELEASE" "$ARCH" "$SHORT" "$NEWCOMPOSE_ID" "$LOCATION") - -$RSYNCPREFIX mkdir -p $DESTDIR -# Tell interested persons that the rsync is starting (zomg!) -send_fedmsg "${fedmsg_json_start}" ${RELEASE} rsync.start -for dir in IoT metadata ; - do - $RSYNCPREFIX rsync -avhH --delete-after $DESTDIR/compose/$dir/ "$RSYNCTARGET/$dir/" ; - $RSYNCPREFIX ./releng/builds/compose/build_composeinfo.py "$RSYNCTARGET/" --name $NEWCOMPOSE_ID - done -# Tell everyone by fedmsg about the compose -send_fedmsg "${fedmsg_json_done}" ${RELEASE} complete -SUBJECT='Fedora '$RELEASE' compose report: '$SHORTCOMPOSE_ID' changes' -#for tomail in $TOMAIL ; do -# cat $DESTDIR/logs/*verbose $DESTDIR/logs/depcheck | \ -# mutt -e "set from=\"$FROM\"" -e 'set envelope_from=yes' -s "$SUBJECT" $tomail -#done - -find $TARGET_DIR -xdev -depth -maxdepth 2 -mtime +14 -name Fedora-IoT-${RELEASE}\* -exec rm -rf {} \; +# Push containers +#./sync-bootc-base-containers.sh ${RELEASE} ${LABEL} diff --git a/variants-fedora.xml b/variants-fedora.xml index 01f5f57..058a67d 100644 --- a/variants-fedora.xml +++ b/variants-fedora.xml @@ -4,9 +4,13 @@ aarch64 - x86_64 - ppc64le - s390x + x86_64 + + + + + aarch64 + x86_64