Hi Michael,
I cannot apply the patch. Git does not like it and applying with patch gives the
following error:
patching file source-builder/sb/linux.py
patch: malformed patch at line 25: @@ -56,36 +57,11 @@ def load():
Are you able to get git to send the patch. If not could please attach the output
of `git format-patch -1`?
Thanks
Chris
On 11/11/2023 1:41 pm, Michael South wrote:
>
> If available, use "distro" package (introduced Python 3.6, back-ported
> to 2.6)
> to recognize Linux distributions and versions.
>
> Updates #4966
> ---
> source-builder/sb/linux.py | 89 +-
> 1 file changed, 59 insertions(+), 30 deletions(-)
>
> diff --git a/source-builder/sb/linux.py b/source-builder/sb/linux.py
> index d71ac39..45f88b0 100644
> --- a/source-builder/sb/linux.py
> +++ b/source-builder/sb/linux.py
> @@ -28,6 +28,7 @@ import pprint
> import os
> from . import path
> +from . import log
> def load():
> uname = os.uname()
> @@ -56,36 +57,11 @@ def load():
> }
> # platform.dist() was removed in Python 3.8
> -if hasattr(platform, 'dist'):
> -# Works for LSB distros
> -try:
> -distro = platform.dist()[0]
> -distro_ver = float(platform.dist()[1])
> -except ValueError:
> - # Non LSB distro found, use failover"
> - pass
> -else:
> - distro = ''
> -
> -# Non LSB - fail over to issue
> -if distro == '':
> -try:
> -issue = open('/etc/issue').read()
> -distro = issue.split(' ')[0]
> -distro_ver = float(issue.split(' ')[2])
> -except:
> -pass
> -
> -distro = distro.lower()
> -
> -# Manage distro aliases
> -if distro in ['centos']:
> -distro = 'redhat'
> -elif distro in ['fedora']:
> -if distro_ver < 17:
> -distro = 'redhat'
> -elif distro in ['ubuntu', 'mx', 'linuxmint']:
> -distro = 'debian'
> +# The distro module (introduced in Python 3.6, back-ported to 2.6)
> +# is preferred.
> +distro = ''
> +distro_like = ''
> +distro_ver = 0
> variations = {
> 'debian' : { '__bzip2':('exe', 'required',
> '/bin/bzip2'),
> @@ -114,10 +90,63 @@ def load():
> '__sed': ('exe', 'required',
> '/bin/sed') },
> }
> +try:
> +import distro as distro_mod
> +distro = distro_mod.id()
> +distro_like = distro_mod.like()
> +try:
> +distro_ver = float(distro_mod.version())
> +except ValueError:
> +pass
> +except:
> +pass
> +
> +if distro == '' and hasattr(platform, 'dist'):
> +distro = platform.dist()[0]
> +try:
> +distro_ver = float(platform.dist()[1])
> +except ValueError:
> +pass
> +
> +# Non LSB - last resort, try issue
> +if distro == '':
> +try:
> +with open('/etc/issue') as f:
> +issue = f.read().split(' ')
> +distro = issue[0]
> +distro_ver = float(issue[2])
> +except:
> +pass
> +
> +if distro:
> +distro = distro.lower()
> +if distro_like:
> +distro_like = distro_like.lower().split(' ')[0]
> +
> +# Some additional distro aliases
> +if distro in ['centos']:
> +distro_like = 'redhat'
> +elif distro in ['fedora']:
> +if distro_ver < 17:
> +distro_like = 'redhat'
> +elif distro in ['ubuntu', 'mx', 'linuxmint']:
> +distro_like = 'debian'
> +
> +if not (distro in variations) and (distro_like in variations):
> +distro = distro_like
> +# Versions don't carry over to likes; e.g. linuxmint 21.6 !=
> debian 21.6.
> +distro_ver = 0
> +
> if distro in variations:
> for v in variations[distro]:
> if path.exists(variations[distro][v][2]):
> defines[v] = variations[distro][v]
> +else:
> +log.warning('Unrecognized OS distro; assuming defaults for
> grep, sed, etc.')
> +try:
> +distro_mod
> +except:
> +log.warning("The 'distro' package may fix this problem; try
> 'pip install distro'.")
> defines['_build']= defines['_host']
> defines['_build_vendor'] = defines['_host_vendor']
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel