@@ -2883,8 +2883,30 @@ def linux_get_lsb_release():
2883
2883
return (distributor , release )
2884
2884
return ('' , '' )
2885
2885
2886
+ def linux_get_os_release ():
2887
+ try :
2888
+ os_release_path = '/etc/os-release'
2889
+ os_release_file = open (os_release_path )
2890
+ except FileNotFoundError :
2891
+ return '' , ''
2892
+ os_id = ''
2893
+ os_release = ''
2894
+ for line in os_release_file :
2895
+ line = line .rstrip ()
2896
+ if not line or line .startswith ('#' ):
2897
+ continue
2898
+ if line .startswith ('ID=' ):
2899
+ os_id = line [len ('ID=' ):].strip ('\" ' )
2900
+ if line .startswith ('VERSION_ID=' ):
2901
+ os_release = line [len ('VERSION_ID=' ):].strip ('\" ' )
2902
+ return os_id , os_release
2903
+
2886
2904
if platform .system () == 'Linux' :
2887
- (distributor , release ) = linux_get_lsb_release ()
2905
+ # Retrieve the Linux distro and version from `/etc/os-release`.
2906
+ (distributor , release ) = linux_get_os_release ()
2907
+ if distributor == '' or release == '' :
2908
+ # If `/etc/os-release` does not provide full results, fallback to `lsb_release`.
2909
+ (distributor , release ) = linux_get_lsb_release ()
2888
2910
if distributor != '' and release != '' :
2889
2911
config .available_features .add ("LinuxDistribution=" + distributor + '-' + release )
2890
2912
lit_config .note ('Running tests on %s-%s' % (distributor , release ))
0 commit comments