From d992f098c2190ecfbdc22b93af6029e49d793993 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 3 Sep 2023 23:03:38 +0200 Subject: [PATCH] fixup! Add tix-upgrade(8). --- tix/tix-fetch | 20 ++------- tix/tix-upgrade | 110 +++++++++++++++++++----------------------------- 2 files changed, 47 insertions(+), 83 deletions(-) diff --git a/tix/tix-fetch b/tix/tix-fetch index fc52187c..1f78ff63 100755 --- a/tix/tix-fetch +++ b/tix/tix-fetch @@ -35,14 +35,12 @@ output_release_file= # TODO: A better term for this? output_release_sig_file= # TODO: A better term for this? output_sha256sum= patch=false -port=false -porttix=false +package=false release=false sha256=false sha256sum=false source=false source_full=false -srctix=false sysroot="" toolchain=false url=false @@ -115,15 +113,12 @@ for argument do --output-sha256sum) previous_option=output_sha256sum ;; --output-upgrade-file=*) output_upgrade_file=$parameter ;; --output-upgrade-file) previous_option=output_upgrade_file ;; + --package) package=true ;; --patch) patch=true ;; - --port) port=true ;; - --porttix) porttix=true ;; - --release) release=true ;; --sha256) sha256=true ;; --sha256sum) sha256sum=true ;; --source-full) source_full=true ;; --source) source=true ;; - --srctix) srctix=true ;; --sysroot) previous_option=sysroot ;; --sysroot=*) sysroot=$parameter ;; --toolchain) toolchain=true ;; @@ -158,7 +153,7 @@ conf() { tix-vars -d "$2" - "$4" } -tmpdir=$(mktemp -dt tix-fetch-port.XXXXXX) +tmpdir=$(mktemp -dt tix-fetch.XXXXXX) trap 'rm -rf -- "$tmpdir"' EXIT HUP INT QUIT TERM upgrade_conf="${collection%/}/etc/upgrade.conf" @@ -428,8 +423,7 @@ fi # Fetch each of the specified signed files from the mirror. for REQUEST; do - # If --port then fetch the port by the requested name. - if $port; then + if $package; then REQUEST="$REQUEST.tix.tar.xz" REQUESTDIR="repository/$MACHINE-sortix/" elif $boot; then @@ -444,12 +438,6 @@ for REQUEST; do elif $normalize; then REQUEST="$REQUEST.normalize" REQUESTDIR="patches/" - elif $srctix; then - REQUEST="$REQUEST.srctix.tar.xz" - REQUESTDIR="srctix/" - elif $porttix; then - REQUEST="$REQUEST.porttix.tar.xz" - REQUESTDIR="porttix/" elif $toolchain; then REQUESTDIR="toolchain/" else diff --git a/tix/tix-upgrade b/tix/tix-upgrade index e7ce2509..0188f83b 100755 --- a/tix/tix-upgrade +++ b/tix/tix-upgrade @@ -24,7 +24,6 @@ clean=false collection=/ download_only=false fetch_options= -ports_only=false sysroot="" upgrade=--upgrade upgrade_ports=false @@ -107,6 +106,12 @@ if [ ! -e "$collection/tix/manifest/system" ]; then upgrade_system=false fi +case "$upgrade_system$upgrade_ports" in +truefalse) what_to_upgrade=--system;; +falsetrue) what_to_upgrade=--ports;; +*) what_to_upgrade=;; +esac + if [ -z "$cachedir" ]; then cachedir="${collection%/}/var/cache/tix" fi @@ -120,7 +125,6 @@ if $cancel; then sysmerge -t "$collection" --cancel exit fi - mkdir -p -- "$cachedir" mkdir -p -- "$cachedir/new" @@ -164,50 +168,42 @@ if [ -n "$UPGRADE_SIG_URL" ]; then fi fi -mkdir -p -- "$cachedir/boot" +# Decide what binary packages to upgrade. +installed_packages=$(LC_ALL=C ls -- "$collection/tix/tixinfo") +if $upgrade_system && $upgrade_ports; then + upgrade_packages="$installed_packages" +else + upgrade_packages= + for package in $installed_packages; do + is_system=$(tix-vars -d false "$collection/tix/tixinfo/$package" SYSTEM) + if ($upgrade_system && [ "$is_system" = true ]) || + ($upgrade_ports && [ "$is_system" = false ]); then + upgrade_packages="$upgrade_packages $package" + fi + done +fi + +# Fetch each binary package from the mirror. +# TODO: Handle new mandatory / recommended ports. +# TODO: Handle renamed ports. mkdir -p -- "$cachedir/repository" - -# TODO: DO NOT SUBMIT: Temporary -d system compatibility until builds roll. -SYSTEM_INITRDS=$(tix-vars -d system "$cachedir/release.sh" SYSTEM_INITRDS) - -# TODO: What about the system source code in /src? - -if $upgrade_system; then - # Fetch the base system initrds from the mirror. - for initrd in $SYSTEM_INITRDS; do +packages="" +for package in $(LC_ALL=C ls -- "$collection/tix/tixinfo"); do + # The package exists upstream if it has a hash. + sha256=$(tix-fetch $fetch_options \ + --collection="$collection" \ + --input-release-file="$cachedir/release.sh" \ + --input-sha256sum="$cachedir/sha256sum" \ + --sha256 --package -- $package) + if [ -n "$sha256" ]; then tix-fetch $fetch_options \ --collection="$collection" \ --input-release-file="$cachedir/release.sh" \ --input-sha256sum="$cachedir/sha256sum" \ - -c --initrd -O "$cachedir/boot" -- "$initrd" - done -fi - -if $upgrade_ports; then - # Fetch each port from the mirror. - # TODO: Handle new mandatory / recommended ports. - # TODO: Handle renamed ports. - mkdir -p "$cachedir/repository" - ports="" - for port in $(LC_ALL=C ls -- "$collection/tix/tixinfo"); do - # The port has a hash if if it exists upstream. - sha256=$(tix-fetch $fetch_options \ - --collection="$collection" \ - --input-release-file="$cachedir/release.sh" \ - --input-sha256sum="$cachedir/sha256sum" \ - --sha256 --port -- $port) - # If the port exists upstream, get the latest version and note its name down - # for the extraction step. - if [ -n "$sha256" ]; then - tix-fetch $fetch_options \ - --collection="$collection" \ - --input-release-file="$cachedir/release.sh" \ - --input-sha256sum="$cachedir/sha256sum" \ - -c --port -O "$cachedir/repository" -- $port - ports="$ports $port" - fi - done -fi + -c --package -O "$cachedir/repository" -- $package + packages="$packages $package" + fi +done # Stop if only downloading. if $download_only; then @@ -229,35 +225,15 @@ release_sig_url = $UPGRADE_SIG_URL EOF fi -# Extract the base system into the sysroot. -if $upgrade_system; then - for initrd in $SYSTEM_INITRDS; do - echo "Extracting $initrd.tar.xz..." - tar -C "$cachedir/sysroot" -xJf "$cachedir/boot/$initrd.tar.xz" - rm -f "$cachedir/boot/$initrd.tar.xz" - done -fi - -# Extract the ports into the sysroot. -full= -if $upgrade_ports; then - full=--full - for port in $ports; do - echo "Extracting $port.tix.tar.xz..." - tar -C "$cachedir/sysroot" -xJf "$cachedir/repository/$port.tix.tar.xz" - rm -f "$cachedir/repository/$port.tix.tar.xz" - done -fi - -case "$upgrade_system$upgrade_ports" in -truefalse) what_to_upgrade=--system;; -falsetrue) what_to_upgrade=--ports;; -*) what_to_upgrade=;; -esac +# Extract the binary packages into the sysroot. +for package in $packages; do + echo "Extracting $package.tix.tar.xz..." + tar -C "$cachedir/sysroot" -xJf "$cachedir/repository/$package.tix.tar.xz" + rm -f "$cachedir/repository/$package.tix.tar.xz" +done # Merge the new sysroot onto the installation. sysmerge -t "$collection" $what_to_upgrade $full $wait "$cachedir/sysroot" -rm -rf -- "$cachedir/boot" rm -rf -- "$cachedir/repository" rm -rf -- "$cachedir/sysroot"