From 62ad47ec2690cc1a420aea079f6a56d9be5e429b Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 19 Oct 2026 00:07:32 +0200 Subject: [PATCH 1/2] Copy GAP into the runtime env without -p The checkout of GAP is made by Windows git, and Cygwin fails to copy the ACLs of its directories ("preserving permissions ... Permission denied"), which aborts the build. The installer does not store permissions, so there is nothing to preserve. Assisted-by: Generative AI --- release_gap.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release_gap.sh b/release_gap.sh index b7ee9ad..7050672 100755 --- a/release_gap.sh +++ b/release_gap.sh @@ -92,7 +92,9 @@ echo "::endgroup::" # gap-prep-runtime echo "::group::gap-prep-runtime" mkdir -p $(dirname ${GAP_ROOT_RUNTIME}) -cp -rp ${GAP_ROOT_BUILD} $(dirname ${GAP_ROOT_RUNTIME}) +# Not -p: Cygwin cannot copy the ACLs of directories checked out by +# Windows git, and the installer does not keep them anyway +cp -r ${GAP_ROOT_BUILD} $(dirname ${GAP_ROOT_RUNTIME}) # Prepare / compactify runtime environment tools/gap-prep-runtime "${GAP_ROOT_RUNTIME}" "${GAP_ROOT}" echo "::endgroup::" From a93997dfdd90b670c123be8aa838be411373fba4 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 19 Oct 2026 00:07:32 +0200 Subject: [PATCH 2/2] Upload the installer from where ISCC writes it gap.iss defined OutputDir but never used it, so ISCC wrote to gap-windows/Output while the workflow uploaded Output/* from the workspace root and silently found nothing. Write to dist instead, which release_gap.sh creates, and fail the upload if it is empty. Assisted-by: Generative AI --- .github/workflows/build_cygwin_gap_release.yml | 3 ++- gap.iss | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_cygwin_gap_release.yml b/.github/workflows/build_cygwin_gap_release.yml index 6a166f3..e31bc6e 100644 --- a/.github/workflows/build_cygwin_gap_release.yml +++ b/.github/workflows/build_cygwin_gap_release.yml @@ -53,4 +53,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: GAP Windows installer - ${{ matrix.arch }} - path: Output/* + path: gap-windows/dist/* + if-no-files-found: error diff --git a/gap.iss b/gap.iss index 1265661..8917ae9 100755 --- a/gap.iss +++ b/gap.iss @@ -55,6 +55,7 @@ DisableProgramGroupPage=yes ; Uncomment the following line to run in non administrative install mode (install for current user only.) ;PrivilegesRequired=lowest PrivilegesRequiredOverridesAllowed=dialog +OutputDir={#OutputDir} OutputBaseFilename=gap-{#MyAppVersion}-{#GapArch} Compression=lzma2 LZMANumBlockThreads=6