fix: fall back to VERSION_CODENAME when VERSION_ID is not available (#774)

Debian unstable and testing don't have VERSION_ID in /etc/os-release.
This change falls back to VERSION_CODENAME when VERSION_ID is missing,
producing cache keys like 'debian-sid' for unstable.

Fixes #773
This commit is contained in:
eifinger-bot 2026-02-27 19:13:59 +01:00 committed by GitHub
parent 0098a7571c
commit b12532f27f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 33 additions and 0 deletions

View file

@ -418,6 +418,20 @@ jobs:
PY PY
shell: bash shell: bash
test-debian-unstable:
runs-on: ubuntu-latest
container: debian:unstable
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install latest version
uses: ./
with:
enable-cache: true
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-musl: test-musl:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: alpine container: alpine
@ -1031,6 +1045,7 @@ jobs:
- test-python-version - test-python-version
- test-activate-environment - test-activate-environment
- test-activate-environment-custom-path - test-activate-environment-custom-path
- test-debian-unstable
- test-musl - test-musl
- test-cache-key-os-version - test-cache-key-os-version
- test-cache-local - test-cache-local

6
dist/save-cache/index.js generated vendored
View file

@ -91381,9 +91381,15 @@ function getLinuxOSNameVersion() {
const content = node_fs_1.default.readFileSync(file, "utf8"); const content = node_fs_1.default.readFileSync(file, "utf8");
const id = parseOsReleaseValue(content, "ID"); const id = parseOsReleaseValue(content, "ID");
const versionId = parseOsReleaseValue(content, "VERSION_ID"); const versionId = parseOsReleaseValue(content, "VERSION_ID");
// Fallback for rolling releases (debian:unstable/testing, arch, etc.)
// that don't have VERSION_ID but have VERSION_CODENAME
const versionCodename = parseOsReleaseValue(content, "VERSION_CODENAME");
if (id && versionId) { if (id && versionId) {
return `${id}-${versionId}`; return `${id}-${versionId}`;
} }
if (id && versionCodename) {
return `${id}-${versionCodename}`;
}
} }
catch { catch {
// Try next file // Try next file

6
dist/setup/index.js generated vendored
View file

@ -97253,9 +97253,15 @@ function getLinuxOSNameVersion() {
const content = node_fs_1.default.readFileSync(file, "utf8"); const content = node_fs_1.default.readFileSync(file, "utf8");
const id = parseOsReleaseValue(content, "ID"); const id = parseOsReleaseValue(content, "ID");
const versionId = parseOsReleaseValue(content, "VERSION_ID"); const versionId = parseOsReleaseValue(content, "VERSION_ID");
// Fallback for rolling releases (debian:unstable/testing, arch, etc.)
// that don't have VERSION_ID but have VERSION_CODENAME
const versionCodename = parseOsReleaseValue(content, "VERSION_CODENAME");
if (id && versionId) { if (id && versionId) {
return `${id}-${versionId}`; return `${id}-${versionId}`;
} }
if (id && versionCodename) {
return `${id}-${versionCodename}`;
}
} }
catch { catch {
// Try next file // Try next file

View file

@ -106,10 +106,16 @@ function getLinuxOSNameVersion(): string {
const content = fs.readFileSync(file, "utf8"); const content = fs.readFileSync(file, "utf8");
const id = parseOsReleaseValue(content, "ID"); const id = parseOsReleaseValue(content, "ID");
const versionId = parseOsReleaseValue(content, "VERSION_ID"); const versionId = parseOsReleaseValue(content, "VERSION_ID");
// Fallback for rolling releases (debian:unstable/testing, arch, etc.)
// that don't have VERSION_ID but have VERSION_CODENAME
const versionCodename = parseOsReleaseValue(content, "VERSION_CODENAME");
if (id && versionId) { if (id && versionId) {
return `${id}-${versionId}`; return `${id}-${versionId}`;
} }
if (id && versionCodename) {
return `${id}-${versionCodename}`;
}
} catch { } catch {
// Try next file // Try next file
} }