diff --git a/fedora-iot.conf b/fedora-iot.conf index 0f7b044..a3a3c10 100644 --- a/fedora-iot.conf +++ b/fedora-iot.conf @@ -1,26 +1,25 @@ # PRODUCT INFO release_name = 'Fedora-IoT' release_short = 'Fedora-IoT' -release_version = '38' +release_version = '46' # Let's not build install media during this run. For the image builds -# and OSTree installer we'll use inputs from other f38 runs. +# and OSTree installer we'll use inputs from other f45 runs. skip_phases = ["buildinstall", "createrepo", "extra_files"] -ostree_installer_overwrite = True # GENERAL SETTINGS comps_file = { 'scm': 'git', - 'repo': 'https://pagure.io/fedora-comps.git', + 'repo': 'https://forge.fedoraproject.org/releng/fedora-comps.git', 'branch': 'main', - 'file': 'comps-f38.xml', - 'command': 'make comps-f38.xml' + 'file': 'comps-f46.xml', + 'command': 'make comps-f46.xml' } variants_file='variants-fedora.xml' -sigkeys = ['eb10b464'] +sigkeys = ['91211FCE'] # limit tree architectures # if undefined, all architectures from variants.xml will be included -tree_arches = ['aarch64', 'x86_64'] +tree_arches = ['aarch64', 'x86_64', "ppc64le", "s390x"] # limit tree variants # if undefined, all variants from variants.xml will be included tree_variants = ['IoT'] @@ -28,7 +27,7 @@ hashed_directories = True # RUNROOT settings runroot_channel = 'compose' -runroot_tag = 'f38-build' +runroot_tag = 'f46-build' # PKGSET pkgset_source = 'koji' # koji, repos @@ -38,7 +37,7 @@ pkgset_source = 'koji' # koji, repos # pkgset_repos = {} # PKGSET - KOJI -pkgset_koji_tag = 'f38-iot' +pkgset_koji_tag = 'f46-iot' pkgset_koji_inherit = False filter_system_release_packages = False @@ -167,7 +166,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://pagure.io/pungi-fedora/pull-request/525 +# https://forge.fedoraproject.org/releng/pungi-fedora/pulls/525 volume_id_substitutions = { 'Beta': 'B', 'Rawhide': 'rawh', @@ -184,7 +183,7 @@ volume_id_substitutions = { 'IoT': 'iot', 'Jam_KDE': 'Jam', 'MATE_Compiz': 'MATE', - # Note https://pagure.io/pungi-fedora/issue/533 + # Note https://forge.fedoraproject.org/releng/pungi-fedora/issues/533 'Python-Classroom': 'Clss', 'Python_Classroom': 'Clss', 'Robotics': 'Robo', @@ -203,128 +202,105 @@ translate_paths = [ ('/mnt/koji/compose/', 'https://kojipkgs.fedoraproject.org/compose/'), ] -# These will be inherited by live_media, live_images and image_build -global_ksurl = 'git+https://pagure.io/fedora-kickstarts.git?#origin/f38' +# These may be inherited by various phases for creating Koji tasks global_release = '!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN' -global_version = '38' -# live_images ignores this in favor of live_target -global_target = 'f38' +global_version = '46' +global_target = 'f46' -osbuild = { +imagebuilder_target = 'f46-image-builder' +imagebuilder = { "^IoT$": [ { - "name": "%s" % release_name, - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "distro": "fedora-38", - "image_types": ["iot-raw-image"], - "target": "f%s-candidate" % release_version, + "name": "%s-raw" % release_name, + "types": ["iot-raw-xz"], "arches": ["x86_64", "aarch64"], - "repo": ["https://kojipkgs.fedoraproject.org/compose/38/Fedora-38-20230413.1/compose/Everything/$arch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$arch/os/"], - "ostree_url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ostree_ref": "fedora/stable/$arch/iot", + "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, - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "distro": "fedora-38", - "image_types": ["iot-installer"], - "target": "f%s-candidate" % release_version, + "types": ["iot-installer"], "arches": ["x86_64", "aarch64"], - "repo": ["https://kojipkgs.fedoraproject.org/compose/38/Fedora-38-20230413.1/compose/Everything/$arch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$arch/os/"], - "ostree_url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ostree_ref": "fedora/stable/$arch/iot", + "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$", { - "aarch64": { +ostree = { + "^IoT$": { "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", "force_new_commit": True, - "treefile": "fedora-iot.json", - "config_url": "https://pagure.io/fedora-iot/ostree.git", - "config_branch": "f38", + "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/38/Fedora-38-20230413.1/compose/Everything/$basearch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$basearch/os/" + "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/stable/${basearch}/iot", - "update_summary": True, - }, - "x86_64": { - "version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN", - "force_new_commit": True, - "treefile": "fedora-iot.json", - "config_url": "https://pagure.io/fedora-iot/ostree.git", - "config_branch": "f38", - "repo": [ - "IoT", - "https://kojipkgs.fedoraproject.org/compose/38/Fedora-38-20230413.1/compose/Everything/$basearch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$basearch/os/" - ] - "tag_ref": False, - "ostree_repo": "/mnt/koji/compose/iot/repo/", - "ostree_ref": "fedora/stable/${basearch}/iot", + "ostree_ref": "fedora/rawhide/${basearch}/iot", + "runroot_packages": ["selinux-policy-targeted"], + "arches": ["x86_64", "aarch64"], "update_summary": True, } - }) -] +} -ostree_installer = [ - ("^IoT$", { - "aarch64": { - "repo": [ - "IoT", - "https://kojipkgs.fedoraproject.org/compose/38/Fedora-38-20230413.1/compose/Everything/$arch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$arch/os/" - ], - "release": None, - "rootfs_size": "4", - "add_template": ["ostree-based-installer/lorax-configure-repo.tmpl", - "ostree-based-installer/lorax-embed-repo.tmpl"], - "add_template_var": [ - "ostree_install_repo=https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ostree_update_repo=https://ostree.fedoraproject.org/iot/", - "ostree_osname=fedora-iot", - "ostree_oskey=fedora-38-primary", - "ostree_contenturl=mirrorlist=https://ostree.fedoraproject.org/iot/mirrorlist", - "ostree_install_ref=fedora/stable/aarch64/iot", - "ostree_update_ref=fedora/stable/aarch64/iot", - ], - 'template_repo': 'https://pagure.io/fedora-lorax-templates.git', - 'template_branch': 'f38', +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", }, - "x86_64": { - "repo": [ - "IoT", - "https://kojipkgs.fedoraproject.org/compose/38/Fedora-38-20230413.1/compose/Everything/$arch/os/", - "https://kojipkgs.fedoraproject.org/compose/updates/f38-updates/compose/Everything/$arch/os/" - ], - "release": None, - "rootfs_size": "4", - "add_template": ["ostree-based-installer/lorax-configure-repo.tmpl", - "ostree-based-installer/lorax-embed-repo.tmpl"], - "add_template_var": [ - "ostree_install_repo=https://kojipkgs.fedoraproject.org/compose/iot/repo/", - "ostree_update_repo=https://ostree.fedoraproject.org/iot/", - "ostree_osname=fedora-iot", - "ostree_oskey=fedora-38-primary", - "ostree_contenturl=mirrorlist=https://ostree.fedoraproject.org/iot/mirrorlist", - "ostree_install_ref=fedora/stable/x86_64/iot", - "ostree_update_ref=fedora/stable/x86_64/iot", - ], - 'template_repo': 'https://pagure.io/fedora-lorax-templates.git', - 'template_branch': 'f38', - } - }) -] + { + "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", + }, + ] +} koji_profile = 'compose_koji' diff --git a/nightly.sh b/nightly.sh index b155fd7..fa8dfcb 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="38" -RELEASE_TITLE="38" -COMPSFILE="comps-f38.xml" +RELEASE="46" +RELEASE_TITLE="46" +COMPSFILE="comps-f46.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://pagure.io/releng.git + git clone https://forge.fedoraproject.org/releng/tooling.git releng fi # Set up our fedmsg function, using the releng repo definition #FEDMSG_MODNAME="compose" #FEDMSG_CERTPREFIX="releng" -. ./releng/scripts/fedmsg-functions.sh +. ./releng/infrastructure/messaging/fedora_messaging.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://pagure.io/fedora-comps.git && { +#git clone https://forge.fedoraproject.org/releng/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/scripts/build_composeinfo "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID" +./releng/builds/compose/build_composeinfo.py "$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 new file mode 100755 index 0000000..ebab8ee --- /dev/null +++ b/sync-bootc-base-containers.sh @@ -0,0 +1,193 @@ +#!/bin/bash + +set -x + +# +# Sync latest docker image +# +# Docs in the f_help function +f_ctrl_c() { + printf "\n*** Exiting ***\n" + exit $? +} +# trap int (ctrl-c) +trap f_ctrl_c SIGINT +f_help() { + cat < /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" + copy_image ${format}:${filename} ${registry_name}:${release}-${arch} + done + + popd &> /dev/null + + generate_manifest_list ${registry_name} ${release} + printf "Removing temporary directory\n" + rm -rf $work_dir +} + +# +# Version should not be higher than rawhide +# Either there is a mistake or script is out of date +# +if [[ ${1} -gt "$current_rawhide" ]]; then + printf "ERROR: VERSION HIGHER THAN RAWHIDE" + exit 1 +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 diff --git a/sync-release.sh b/sync-release.sh index 6fd5ea1..5badf8c 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="38" -RELEASE_TITLE="38" -COMPSFILE="comps-f38.xml" +RELEASE="46" +RELEASE_TITLE="46" +COMPSFILE="comps-f46.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/38/" +RSYNCTARGET="/pub/alt/iot/46/" 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 ddf149c..c0925c7 100755 --- a/twoweek-nightly.sh +++ b/twoweek-nightly.sh @@ -11,14 +11,14 @@ DEST=$(pwd) DATE=$(date "+%Y%m%d") # the Pungi 'shortname', which we will include in fedmsgs for disambiguation SHORT="Fedora-IoT" -RELEASE="38" -RELEASE_TITLE="38" -COMPSFILE="comps-f38.xml" +RELEASE="46" +RELEASE_TITLE="46" +COMPSFILE="comps-f46.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/branched/" +RSYNCTARGET="/pub/alt/iot/rawhide/" 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://pagure.io/releng.git + git clone https://forge.fedoraproject.org/releng/tooling.git releng 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/scripts/fedmsg-functions.sh +. ./releng/infrastructure/messaging/fedora_messaging.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" @@ -49,13 +49,10 @@ if [ "$?" != "0" ]; then fi ostree summary --update --repo=/mnt/koji/compose/iot/repo/ -# Exit now we're post release -exit 1 - NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID) SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g') -./releng/scripts/build_composeinfo "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID" +./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 @@ -70,10 +67,8 @@ 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/scripts/build_composeinfo "$RSYNCTARGET/" --name $NEWCOMPOSE_ID + $RSYNCPREFIX ./releng/builds/compose/build_composeinfo.py "$RSYNCTARGET/" --name $NEWCOMPOSE_ID done -# Tell interested persons that the rsync is done. -send_fedmsg "${fedmsg_json_done}" ${RELEASE} rsync.complete # Tell everyone by fedmsg about the compose send_fedmsg "${fedmsg_json_done}" ${RELEASE} complete SUBJECT='Fedora '$RELEASE' compose report: '$SHORTCOMPOSE_ID' changes' diff --git a/variants-fedora.xml b/variants-fedora.xml index fc87bb1..01f5f57 100644 --- a/variants-fedora.xml +++ b/variants-fedora.xml @@ -4,7 +4,9 @@ aarch64 - x86_64 + x86_64 + ppc64le + s390x