Commit c60a57c
authored
Fix
## What's the problem this PR addresses?
Two problems:
1. #6170 broke `libc` detection on at least Alpine Linux and Chimera
Linux (and probably on all other `musl`-based distributions as well) by
looking for the generic string `libc` in `/usr/bin/ldd`. On both Chimera
and Alpine, `ldd --version` prints `musl libc` among the output.
2. `getLibc()` was doing unnecessary work on OSes other than Windows,
Mac, and Linux (I originally thought it would have been crashing, but
that's incorrect). ~~It strongly appears to me that `getLibc()` would
throw an error on any OS other than Windows, Mac, and Linux, as the
other OSes supported by node have their own libc implementations that
are neither `glibc` nor `musl`.~~
...
## How did you fix it?
1. The strings `GNU libc` and `GNU C Library` are searched for instead
of just `libc`.
* By default, `ldd` contains the text `GNU libc` in its `--version`
output, but that can be easily customized at build time using a build
configuration option (see
[here](https://github.com/bminor/glibc/blob/632d895f3e5d98162f77b9c3c1da4ec19968b671/elf/ldd.bash.in#L37)
and
[here](https://github.com/bminor/glibc/blob/632d895f3e5d98162f77b9c3c1da4ec19968b671/INSTALL#L273-L278)).
As a fallback, the text `GNU C Library` is found in the header of the
`ldd` script, and it will probably remain there as long as that file
remains a script (as opposed to a compiled binary).
2. I made `getLibc()` immediately return `null` on all non-Linux
platforms (not just Windows and macOS).
...
## Checklist
<!--- Don't worry if you miss something, chores are automatically
tested. -->
<!--- This checklist exists to help you remember doing the chores when
you submit a PR. -->
<!--- Put an `x` in all the boxes that apply. -->
- [x] I have read the [Contributing
Guide](https://yarnpkg.com/advanced/contributing).
<!-- See
https://yarnpkg.com/advanced/contributing#preparing-your-pr-to-be-released
for more details. -->
<!-- Check with `yarn version check` and fix with `yarn version check
-i` -->
- [x] I have set the packages that need to be released for my changes to
be effective.
<!-- The "Testing chores" workflow validates that your PR follows our
guidelines. -->
<!-- If it doesn't pass, click on it to see details as to what your PR
might be missing. -->
- [x] I will check that all automated PR checks pass before the PR gets
reviewed.libc detection on various platforms (#6840)1 parent dec0f9c commit c60a57c
File tree
2 files changed
+40
-4
lines changed- .yarn/versions
- packages/yarnpkg-core/sources
2 files changed
+40
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
42 | | - | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
0 commit comments