diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d4f0284..f9d68ae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,6 +171,23 @@ jobs: New-Item -ItemType Directory -Force -Path $packageRoot, $distDir | Out-Null Copy-Item (Join-Path $publishDir "*") -Destination $packageRoot -Recurse + + # StripSymbols=true moves AOT debug info out of the binary into + # platform sidecars (macOS .dSYM, Linux .dbg, Windows .pdb). Those are + # not needed at runtime and bloat GitHub releases, npm platform + # packages, and PyPI wheels — remove them before archiving. + Get-ChildItem -Path $packageRoot -Directory -Filter '*.dSYM' -Recurse -Force -ErrorAction SilentlyContinue | + ForEach-Object { + Write-Host "Excluding debug artifact: $($_.FullName)" + Remove-Item -LiteralPath $_.FullName -Recurse -Force + } + Get-ChildItem -Path $packageRoot -File -Recurse -Force -ErrorAction SilentlyContinue | + Where-Object { $_.Extension -in '.pdb', '.dbg' } | + ForEach-Object { + Write-Host "Excluding debug artifact: $($_.FullName)" + Remove-Item -LiteralPath $_.FullName -Force + } + if ($archive -eq "tar.gz") { chmod +x (Join-Path $packageRoot $executable) tar -czf (Join-Path $distDir "hypa-$rid.tar.gz") -C "artifacts/package" "hypa-$rid" @@ -329,6 +346,11 @@ jobs: unzip -j "dist-artifacts/hypa-${RID}.zip" "hypa-${RID}/*" -d "${STAGE}/bin" fi + # Defense in depth: drop AOT debug sidecars if an older archive still + # contains them (macOS .dSYM bundles, Windows .pdb, Linux .dbg). + find "${STAGE}/bin" -depth -name '*.dSYM' -type d -exec rm -rf {} + + find "${STAGE}/bin" \( -name '*.pdb' -o -name '*.dbg' \) -type f -delete + jq \ --arg name "@hypabolic/hypa-${NPM}" \ --arg version "${VERSION}" \ diff --git a/python/scripts/build_wheel.py b/python/scripts/build_wheel.py index bc096ad..4d90d7f 100644 --- a/python/scripts/build_wheel.py +++ b/python/scripts/build_wheel.py @@ -70,7 +70,12 @@ def main(): parts = member.name.split("/", 1) if len(parts) < 2 or not parts[1]: continue - member.name = parts[1] + # Skip AOT debug sidecars (macOS .dSYM, Linux .dbg, Windows .pdb) + # so wheels stay runtime-only even if an archive still has them. + rel = parts[1] + if ".dSYM/" in rel or rel.endswith(".dSYM") or rel.endswith((".pdb", ".dbg")): + continue + member.name = rel tf.extract(member, bin_dir) # 4. Build a generic wheel diff --git a/src/Hypa.Cli/Hypa.Cli.csproj b/src/Hypa.Cli/Hypa.Cli.csproj index 1e585dc..1051a00 100644 --- a/src/Hypa.Cli/Hypa.Cli.csproj +++ b/src/Hypa.Cli/Hypa.Cli.csproj @@ -8,6 +8,8 @@ enable true true + true true true