44package targetos
55
66import (
7+ "errors"
78 "fmt"
9+ "io/fs"
810 "path/filepath"
911 "strings"
1012
@@ -26,6 +28,9 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
2628 // Try /etc/os-release first, then fall back to /usr/lib/os-release.
2729 fields , err := envfile .ParseEnvFile (filepath .Join (rootfs , "etc/os-release" ))
2830 if err != nil {
31+ if ! errors .Is (err , fs .ErrNotExist ) {
32+ return "" , fmt .Errorf ("failed to read /etc/os-release:\n %w" , err )
33+ }
2934 fields , err = envfile .ParseEnvFile (filepath .Join (rootfs , "usr/lib/os-release" ))
3035 if err != nil {
3136 return "" , fmt .Errorf ("failed to read os-release (tried /etc/os-release and /usr/lib/os-release):\n %w" , err )
@@ -42,7 +47,7 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
4247 return TargetOsAzureLinux2 , nil
4348
4449 default :
45- return "" , fmt .Errorf ("unknown VERSION_ID (%s) for CBL-Mariner in /etc/ os-release" , versionId )
50+ return "" , fmt .Errorf ("unknown VERSION_ID (%s) for CBL-Mariner in os-release" , versionId )
4651 }
4752
4853 case "azurelinux" :
@@ -53,7 +58,7 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
5358 // ACL uses VERSION_ID like "3.0.YYYYMMDD" (e.g. "3.0.20260421").
5459 // Accept any version that starts with "3.0".
5560 if ! strings .HasPrefix (versionId , "3.0" ) {
56- return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Azure Container Linux in /etc/ os-release" , versionId )
61+ return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Azure Container Linux in os-release" , versionId )
5762 }
5863 return TargetOsAcl , nil
5964
@@ -64,11 +69,11 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
6469 return TargetOsAzureLinux3 , nil
6570
6671 default :
67- return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Azure Linux in /etc/ os-release" , versionId )
72+ return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Azure Linux in os-release" , versionId )
6873 }
6974
7075 default :
71- return "" , fmt .Errorf ("unknown VARIANT_ID (%s) for Azure Linux in /etc/ os-release" , variantId )
76+ return "" , fmt .Errorf ("unknown VARIANT_ID (%s) for Azure Linux in os-release" , variantId )
7277 }
7378
7479 case "fedora" :
@@ -77,7 +82,7 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
7782 return TargetOsFedora42 , nil
7883
7984 default :
80- return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Fedora in /etc/ os-release" , versionId )
85+ return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Fedora in os-release" , versionId )
8186 }
8287
8388 case "ubuntu" :
@@ -89,10 +94,10 @@ func GetInstalledTargetOs(rootfs string) (TargetOs, error) {
8994 return TargetOsUbuntu2404 , nil
9095
9196 default :
92- return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Ubuntu in /etc/ os-release" , versionId )
97+ return "" , fmt .Errorf ("unknown VERSION_ID (%s) for Ubuntu in os-release" , versionId )
9398 }
9499
95100 default :
96- return "" , fmt .Errorf ("unknown ID (%s) in /etc/ os-release" , distroId )
101+ return "" , fmt .Errorf ("unknown ID (%s) in os-release" , distroId )
97102 }
98103}
0 commit comments