I am very much a perl newbie, I know very little about the system.
I am trying to install App/Lingua/BO/Wylie/Transliteration.pm which seems to be dependent on true.
I am getting an error on the install of true. This seems very surprising, so I am very open to something very fundamental and wrong with the perl installation. Running perl v5.30.2 on MacOS 11.3.1.
cpan error log:
force install true.pm
Running install for module 'true'
CHOCOLATE/true-v1.0.2.tar.gz
Has already been unwrapped into directory /Users/phil/.cpan/build/true-v1.0.2-0
CHOCOLATE/true-v1.0.2.tar.gz
Has already been prepared
Running make for C/CH/CHOCOLATE/true-v1.0.2.tar.gz
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- true.bs blib/arch/auto/true/true.bs 644
cc -c -I/Users/phil/perl5/lib/perl5/darwin-thread-multi-2level/B/Hooks/OP/Annotation/Install -I/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/B/Hooks/OP/Check/Install -g -pipe -fno-strict-aliasing -fstack-protector-strong -DPERL_USE_SAFE_PUTENV -O3 -Wall -W -DVERSION=\"v1.0.2\" -DXS_VERSION=\"v1.0.2\" -iwithsysroot "/System/Library/Perl/5.30/darwin-thread-multi-2level/CORE" true.c
true.xs:8:10: fatal error: 'hook_op_check.h' file not found
#include "hook_op_check.h"
^~~~~~~~~~~~~~~~~
1 error generated.
make: *** [true.o] Error 1
CHOCOLATE/true-v1.0.2.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
CHOCOLATE/true-v1.0.2.tar.gz : make NO
This looks like a bug in the system Perl installation that comes preinstalled on macOS. The module
B::Hooks::OP::Check
comes preinstalled in/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/B/Hooks/OP/
but the file/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/B/Hooks/OP/Check/Install/hook_op_check.h
is missing for some reason. As a consequence, it is not possible to install the moduletrue
which depends on that file being there.You can override the preinstalled version by running:
This will install the module into
/Library/Perl/5.30/darwin-thread-multi-2level/B/Hooks/OP
if you are usingsudo
withcpan
, or into~/perl5/lib/perl5/darwin-thread-multi-2level/B/Hooks/OP
if you are usinglocal::lib
withcpan
. This latter installation will be found before the preinstalled version due to the ordering of the perl@INC
include path, so it will override the preinstalled version of the module.This will enable you to install the module
true
, but after installing this the installation ofApp::Lingua::BO::Wylie::Transliteration
still fails:this is due to a recent change in
Devel::Declare
and a corresponding change in the parser in bleed described in these bug reports, report1 and report2.A workaround is to install a an earlier version of
perl
together with an earlier version ofDevel::Declare
. You can do this using perlbrew. For example: