Skip to content

Commit

Permalink
Handle CalledProcessError when calling uname
Browse files Browse the repository at this point in the history
Usually, when `distro` is used in Windows, it returns nothing. Any call to `lsb_release`, `uname', etc, raises a `[[WinError 2] The system cannot find the file specified` error, which is properly handled.
However, in a particular environment where I've run it, I've found that the call to `uname` raises a `CalledProcessError`, because a Policy or a Security Control is injecting a non-zero return code:

```
t=2024-10-04T15:13:39+0200  Command '('uname', '-rs')' returned non-zero exit status 3221225794.
Traceback (most recent call last):
  File "C:\...\main.py", line 123, in __check_supported_platform
    distro_id = distro.id()
                ^^^^^^^^^^^
  File "C:\...\site-packages\distro\distro.py", line 284, in id
    return _distro.id()
           ^^^^^^^^^^^^
  File "C:\...\site-packages\distro\distro.py", line 855, in id
    distro_id = self.uname_attr("id")
                ^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\site-packages\distro\distro.py", line 1088, in uname_attr
    return self._uname_info.get(attribute, "")
           ^^^^^^^^^^^^^^^^
  File "C:\...\lib\functools.py", line 995, in __get__
    val = self.func(instance)
          ^^^^^^^^^^^^^^^^^^^
  File "C:\...\site-packages\distro\distro.py", line 1202, in _uname_info
    stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\lib\subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\lib\subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('uname', '-rs')' returned non-zero exit status 3221225794.
```

We do handle `CalledProcessError` in other calls, so I'm adding to
`uname` too.
  • Loading branch information
Manuel Muradas authored and HorlogeSkynet committed Oct 26, 2024
1 parent 7ce285c commit 3bd19e6
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/distro/distro.py
Original file line number Diff line number Diff line change
Expand Up @@ -1204,7 +1204,7 @@ def _uname_info(self) -> Dict[str, str]:
try:
cmd = ("uname", "-rs")
stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
except OSError:
except (OSError, subprocess.CalledProcessError):
return {}
content = self._to_str(stdout).splitlines()
return self._parse_uname_content(content)
Expand Down

0 comments on commit 3bd19e6

Please sign in to comment.