Gentle ping. On 2026/10/16 03:30, Zhongteng Gui wrote: > On 2026/10/16 02:34, Andrea Pinski wrote: >> On Thu, Oct 15, 2026 at 6:09 AM Zhongteng Gui via Gcc <[email protected]> >> wrote: >>> >>> Hi, >>> >>> I am setting up GitHub Actions builds of GCC snapshots for MSYS2, >>> MinGW-w64, and Cygwin, using their existing package recipes. >>> >>> When testing GCC 17 snapshot 17-20261011, the MSYS2 builds failed while >>> extracting the source archive with bsdtar [1]: >>> >>> gcc-17.0.0+20261011/.github/PULL_REQUEST_TEMPLATE.md: >>> Can't create 'gcc-17.0.0+20261011/.github/PULL_REQUEST_TEMPLATE.md': >>> No such file or directory >>> >>> .github/PULL_REQUEST_TEMPLATE.md is a symlink to CONTRIBUTING.md. This >>> means that extracting it on Windows with either GNU tar or bsdtar is >>> likely broken, see [2]. >>> >>> Git blame shows that this change is GCC 17 only, so currently the mainline >>> MSYS2 and other Windows distributions are not interfered. >>> >>> Although this can be work arounded downstream by ignoring the error, it'd be >>> better if this could be solved upstream, by either of the following: >>> >>> 1. Add --dereference when creating archives (snapshots and releases) with >>> tar >>> >>> 2. Remove the symlink from git, by making .github/PULL_REQUEST_TEMPLATE.md a >>> copy of .github/CONTRIBUTING.md. >> >> Can you file this as a bug? Or maybe propose a patch for either way; >> both ways seem fine? I wonder if we could ignore these files while >> creating a snapshot too. That is to ignore the files under .github. >> For case 1, the script is maintainer-scripts/gcc_release (for both >> snapshots and releases). >> >> Thanks, >> Andrea >> >>> >>> [1]: >>> https://github.com/dragon-archer/gcc-for-windows/actions/runs/38725206073/job/116389828251 >>> [2]: https://www.msys2.org/docs/symlinks/#known-issues >>> > > Hi Andrea, > > Thanks for pointing me to maintainer-scripts/gcc_release. > > After several small tests, I chose not to add -h or --dereference, as > symlinks are filtered by `find`, so they aren't md5sum'ed. I'm not sure > whether it's safe to replacing them with normal files. > > Instead, the following patch allow excluding directories from both source > archives and checksums. I default it to .github and .forgejo, which may > be changed in the future. > > --- > > From 28f7edcbbbae4850d48491467195fe84f8864889 Mon Sep 17 00:00:00 2001 > From: Zhongteng Gui <[email protected]> > Date: Fri, 16 Oct 2026 03:13:11 +0800 > Subject: [PATCH] maintainer-scripts: Exclude .github and .forgejo from > archives and checksums > > They are unrelated to building. This also avoid including symlinks into > archives, which may break extracting on Windows (the only symlink now is > .github/PULL_REQUEST_TEMPLATE.md -> CONTRIBUTING.md). > > Also bump copyright year. > > maintainer-scripts/ChangeLog: > > * gcc_release: Allow excluding directories from archives and > checksums, default to exclude .github and .forgejo. > Bump copyright year. > > Signed-off-by: Zhongteng Gui <[email protected]> > --- > maintainer-scripts/gcc_release | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/maintainer-scripts/gcc_release b/maintainer-scripts/gcc_release > index c7af3fdcb31..5e80cb45677 100755 > --- a/maintainer-scripts/gcc_release > +++ b/maintainer-scripts/gcc_release > @@ -9,7 +9,7 @@ > # Contents: > # Script to create a GCC release. > # > -# Copyright (c) 2001-2020 Free Software Foundation. > +# Copyright (c) 2001-2026 Free Software Foundation. > # > # This file is part of GCC. > # > @@ -307,7 +307,11 @@ EOF > # md5sum -c MD5SUMS | grep -v \"OK$\" > #" > MD5SUMS > > - find . -type f | > + find_excludes="" > + for exclude in ${EXCLUDE_LIST}; do > + find_excludes="${find_excludes} -name ${exclude} -prune -o" > + done > + find . ${find_excludes} -type f -print | > sed -e 's:^\./::' -e '/MD5SUMS/d' | > sort | > xargs md5sum >>MD5SUMS > @@ -323,8 +327,13 @@ build_tarfile() { > TARFILE="$1.tar.xz" > shift > > + tar_excludes="" > + for exclude in ${EXCLUDE_LIST}; do > + tar_excludes="${tar_excludes} --exclude=${exclude}" > + done > + > # Build the tar file itself. > - (${TAR} cf - "$@" | ${XZ} > ${TARFILE}) || \ > + (${TAR} cf - ${tar_excludes} "$@" | ${XZ} > ${TARFILE}) || \ > error "Could not build tarfile" > FILE_LIST="${FILE_LIST} ${TARFILE}" > } > @@ -624,6 +633,9 @@ MODE_UPLOAD=0 > # List of archive files generated; used to create .gz files from .xz. > FILE_LIST="" > > +# Folders to exclude from archive > +EXCLUDE_LIST="${EXCLUDE_LIST-.github .forgejo}" > + > # Programs we use. > > BZIP2="${BZIP2:-bzip2}"
