From a5aa32883c6b085d8c5a247aa10defc3a0818b85 Mon Sep 17 00:00:00 2001 From: "Darryl L. Miles" Date: Mon, 20 Jul 2026 16:46:47 +0100 Subject: [PATCH] Use trap-based Tcl metadata tmpdir cleanup in appimage workflows Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/appimage10.yml | 6 ++++-- .github/workflows/appimage7.yml | 6 ++++-- .github/workflows/appimage8.yml | 6 ++++-- .github/workflows/appimage9.yml | 6 ++++-- appimage/7/Dockerfile | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/appimage10.yml b/.github/workflows/appimage10.yml index bc19542a..f2fc1f77 100644 --- a/.github/workflows/appimage10.yml +++ b/.github/workflows/appimage10.yml @@ -154,14 +154,16 @@ jobs: if [ "$source_method" = "github" ]; then tcl_tmpdir=$(mktemp -d) + cleanup_tcl_tmpdir() { rm -rf "$tcl_tmpdir"; } + trap cleanup_tcl_tmpdir EXIT if ! git -c advice.detachedHead=false clone --depth 1 --single-branch --branch "$tcl_ref" https://github.com/tcltk/tcl.git "$tcl_tmpdir"; then - rm -rf "$tcl_tmpdir" echo "Failed to clone Tcl ref $tcl_ref" >&2 exit 1 fi tcl_commit=$(git -C "$tcl_tmpdir" rev-parse HEAD) tcl_commit_date=$(git -C "$tcl_tmpdir" log -1 --format=%ci) - rm -rf "$tcl_tmpdir" + trap - EXIT + cleanup_tcl_tmpdir else tcl_commit="" tcl_commit_date="" diff --git a/.github/workflows/appimage7.yml b/.github/workflows/appimage7.yml index 2140680f..d2030fc0 100644 --- a/.github/workflows/appimage7.yml +++ b/.github/workflows/appimage7.yml @@ -154,14 +154,16 @@ jobs: if [ "$source_method" = "github" ]; then tcl_tmpdir=$(mktemp -d) + cleanup_tcl_tmpdir() { rm -rf "$tcl_tmpdir"; } + trap cleanup_tcl_tmpdir EXIT if ! git -c advice.detachedHead=false clone --depth 1 --single-branch --branch "$tcl_ref" https://github.com/tcltk/tcl.git "$tcl_tmpdir"; then - rm -rf "$tcl_tmpdir" echo "Failed to clone Tcl ref $tcl_ref" >&2 exit 1 fi tcl_commit=$(git -C "$tcl_tmpdir" rev-parse HEAD) tcl_commit_date=$(git -C "$tcl_tmpdir" log -1 --format=%ci) - rm -rf "$tcl_tmpdir" + trap - EXIT + cleanup_tcl_tmpdir else tcl_commit="" tcl_commit_date="" diff --git a/.github/workflows/appimage8.yml b/.github/workflows/appimage8.yml index 1f5ffec7..c7bd05cb 100644 --- a/.github/workflows/appimage8.yml +++ b/.github/workflows/appimage8.yml @@ -154,14 +154,16 @@ jobs: if [ "$source_method" = "github" ]; then tcl_tmpdir=$(mktemp -d) + cleanup_tcl_tmpdir() { rm -rf "$tcl_tmpdir"; } + trap cleanup_tcl_tmpdir EXIT if ! git -c advice.detachedHead=false clone --depth 1 --single-branch --branch "$tcl_ref" https://github.com/tcltk/tcl.git "$tcl_tmpdir"; then - rm -rf "$tcl_tmpdir" echo "Failed to clone Tcl ref $tcl_ref" >&2 exit 1 fi tcl_commit=$(git -C "$tcl_tmpdir" rev-parse HEAD) tcl_commit_date=$(git -C "$tcl_tmpdir" log -1 --format=%ci) - rm -rf "$tcl_tmpdir" + trap - EXIT + cleanup_tcl_tmpdir else tcl_commit="" tcl_commit_date="" diff --git a/.github/workflows/appimage9.yml b/.github/workflows/appimage9.yml index 571e671e..73ac5daa 100644 --- a/.github/workflows/appimage9.yml +++ b/.github/workflows/appimage9.yml @@ -154,14 +154,16 @@ jobs: if [ "$source_method" = "github" ]; then tcl_tmpdir=$(mktemp -d) + cleanup_tcl_tmpdir() { rm -rf "$tcl_tmpdir"; } + trap cleanup_tcl_tmpdir EXIT if ! git -c advice.detachedHead=false clone --depth 1 --single-branch --branch "$tcl_ref" https://github.com/tcltk/tcl.git "$tcl_tmpdir"; then - rm -rf "$tcl_tmpdir" echo "Failed to clone Tcl ref $tcl_ref" >&2 exit 1 fi tcl_commit=$(git -C "$tcl_tmpdir" rev-parse HEAD) tcl_commit_date=$(git -C "$tcl_tmpdir" log -1 --format=%ci) - rm -rf "$tcl_tmpdir" + trap - EXIT + cleanup_tcl_tmpdir else tcl_commit="" tcl_commit_date="" diff --git a/appimage/7/Dockerfile b/appimage/7/Dockerfile index 037230ac..1cafe973 100644 --- a/appimage/7/Dockerfile +++ b/appimage/7/Dockerfile @@ -22,7 +22,7 @@ ARG TCL_TARBALL_SHA256= ARG TK_TARBALL_SHA256= # Build Dependencies (and dump version to logging) -# git is required to support TCL_SOURCE=github overrides from workflow_dispatch. +# git is installed unconditionally so workflow_dispatch can switch TCL_SOURCE to github when needed. RUN yum install -y cairo-devel freeglut-devel gcc make git tcsh \ && echo "### rpm -qa:" \ && rpm -qa | sort \