-
Notifications
You must be signed in to change notification settings - Fork 603
Description
When trying to install perl version 5.32.0 on macOS Big Sur I get a failed test:
perlbrew install perl-5.32.0
[...]
./ext/B/t/sv_stash.t .............................................. ok
../ext/B/t/terse.t ................................................. ok
../ext/B/t/walkoptree.t ............................................ ok
../ext/B/t/xref.t .................................................. ok
../ext/Devel-Peek/t/Peek.t ......................................... ok
# Failed test 20 - array should contain one result or more: libc => () at t/DynaLoader.t line 127
# got "0"
# expected >= "1"
../ext/DynaLoader/t/DynaLoader.t ...................................
Failed 1/44 subtests
(less 6 skipped subtests: 37 okay)
../ext/Errno/t/Errno.t ............................................. ok
../ext/Fcntl/t/autoload.t .......................................... ok
The issue was first reported here. The issue seems to be that Dynaloader::dl_findfile("c") cannot find the path to libc, see https://github.com/Perl/perl5/blob/blead/ext/DynaLoader/t/DynaLoader.t#L114. This is because the file does not exist, see https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11_0_1-release-notes :
New in macOS Big Sur 11.0.1, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to dlopen() the path, which will correctly check for the library in the cache.