Opened 4 years ago
Closed 3 years ago
#62440 closed defect (fixed)
perl5: invalid SDK path hardcoded on macOS 11
Reported by: | chrstphrchvz (Christopher Chavez) | Owned by: | mojca (Mojca Miklavec) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | dsedivec, jmroot (Joshua Root) | |
Port: | perl5 |
Description
While trying to update p5-tk
I observed CI builds fail on macOS 11 Big Sur.
/usr/bin/clang -o perlrx -fno-common -DPERL_DARWIN -mmacosx-version-min=10.16 -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -I/opt/local/lib/perl5/5.26/darwin-thread-multi-2level/CORE config/perlrx.c -mmacosx-version-min=10.16 -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fstack-protector-strong -c clang: warning: -Wl,-headerpad_max_install_names: 'linker' input unused [-Wunused-command-line-argument] clang: warning: -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk: 'linker' input unused [-Wunused-command-line-argument] clang: warning: no such sysroot directory: '/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk' [-Wmissing-sysroot] clang: warning: argument unused during compilation: '-L/opt/local/lib' [-Wunused-command-line-argument] In file included from config/perlrx.c:2: /opt/local/lib/perl5/5.26/darwin-thread-multi-2level/CORE/perl.h:694:10: fatal error: 'sys/types.h' file not found #include <sys/types.h> ^~~~~~~~~~~~~ 1 error generated.
The p5-tk
port (and likely others) currently relies on the compiler and flags hardcoded in Perl itself (I am struggling to get p5-tk
to completely respect custom compiler/flags settings). The MacOSX11.0.sdk directory is reportedly no longer present on an up-to-date macOS 11 system, but it is hardcoded in the already-built packages of perl5.xx
ports e.g. in Config_heavy.pl. Ideally an unversioned SDK path can get hardcoded instead.
I'm not sure exactly which version of MacPorts base the packages were built with (either 2.6.3 or 2.6.4), and whether that has an effect here. I personally do not use macOS 11.
Change History (14)
comment:1 Changed 4 years ago by jmroot (Joshua Root)
comment:2 Changed 4 years ago by dsedivec
Cc: | dsedivec added |
---|
comment:3 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to chrstphrchvz:
I'm not sure exactly which version of MacPorts base the packages were built with (either 2.6.3 or 2.6.4), and whether that has an effect here.
They were built with MacPorts 2.6.4 since that is the first version that was compatible with macOS 11.
This issue probably plays into #62819 as well.
comment:4 Changed 3 years ago by chrstphrchvz (Christopher Chavez)
Reported again for p5.28-tk
: #62915
comment:5 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
This would be a good issue to fix before the bulk add of p5.34 ports, since not fixing it causes many build failures on macOS 11.
comment:6 Changed 3 years ago by mojca (Mojca Miklavec)
This has been a longstanding issue and I would be grateful for some basic hints about the best solution. Here's what the file /opt/local/lib/perl5/5.28/darwin-thread-multi-2level/Config.pm
currently contains for 5.28 on 11:
# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. # for a description of the variables, please have a look at the # Glossary file, as written in the Porting folder, or use the url: # http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/Glossary package Config; use strict; use warnings; our ( %Config, $VERSION ); $VERSION = "5.028003"; # Skip @Config::EXPORT because it only contains %Config, which we special # case below as it's not a function. @Config::EXPORT won't change in the # lifetime of Perl 5. my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1, config_re => 1, compile_date => 1, local_patches => 1, bincompat_options => 1, non_bincompat_options => 1, header_files => 1); @Config::EXPORT = qw(%Config); @Config::EXPORT_OK = keys %Export_Cache; # Need to stub all the functions to make code such as print Config::config_sh # keep working sub bincompat_options; sub compile_date; sub config_re; sub config_sh; sub config_vars; sub header_files; sub local_patches; sub myconfig; sub non_bincompat_options; # Define our own import method to avoid pulling in the full Exporter: sub import { shift; @_ = @Config::EXPORT unless @_; my @funcs = grep $_ ne '%Config', @_; my $export_Config = @funcs < @_ ? 1 : 0; no strict 'refs'; my $callpkg = caller(0); foreach my $func (@funcs) { die qq{"$func" is not exported by the Config module\n} unless $Export_Cache{$func}; *{$callpkg.'::'.$func} = \&{$func}; } *{"$callpkg\::Config"} = \%Config if $export_Config; return; } die "$0: Perl lib version (5.28.3) doesn't match executable '$^X' version ($])" unless $^V; $^V eq 5.28.3 or die sprintf "%s: Perl lib version (5.28.3) doesn't match executable '$^X' version (%vd)", $0, $^V; sub FETCH { my($self, $key) = @_; # check for cached value (which may be undef so we use exists not defined) return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); } sub TIEHASH { bless $_[1], $_[0]; } sub DESTROY { } sub AUTOLOAD { require 'Config_heavy.pl'; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } # tie returns the object, so the value returned to require will be true. tie %Config, 'Config', { archlibexp => '/opt/local/lib/perl5/5.28/darwin-thread-multi-2level', archname => 'darwin-thread-multi-2level', cc => '/usr/bin/clang', d_readlink => 'define', d_symlink => 'define', dlext => 'bundle', dlsrc => 'dl_dlopen.xs', dont_use_nlink => undef, exe_ext => '', inc_version_list => ' ', intsize => '4', ldlibpthname => 'DYLD_LIBRARY_PATH', libpth => '/opt/local/lib /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/lib /Library/Developer/CommandLineTools/usr/lib /usr/lib', osname => 'darwin', osvers => '20.1.0', path_sep => ':', privlibexp => '/opt/local/lib/perl5/5.28', scriptdir => '/opt/local/bin', sitearchexp => '/opt/local/lib/perl5/site_perl/5.28/darwin-thread-multi-2level', sitelibexp => '/opt/local/lib/perl5/site_perl/5.28', so => 'dylib', useithreads => 'define', usevendorprefix => 'define', version => '5.28.3', };
and here's Config_heavy.pl
:
# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; use warnings; our %Config; sub bincompat_options { return split ' ', (Internals::V())[0]; } sub non_bincompat_options { return split ' ', (Internals::V())[1]; } sub compile_date { return (Internals::V())[2] } sub local_patches { my (undef, undef, undef, @patches) = Internals::V(); return @patches; } sub _V { die "Perl lib was built for 'darwin' but is being run on '$^O'" unless "darwin" eq $^O; my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); my @opts = sort split ' ', "$bincompat $non_bincompat"; print Config::myconfig(); print "\nCharacteristics of this binary (from libperl): \n"; print " Compile-time options:\n"; print " $_\n" for @opts; if (@patches) { print " Locally applied patches:\n"; print " $_\n" foreach @patches; } print " Built under darwin\n"; print " $date\n" if defined $date; my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; if (@env) { print " \%ENV:\n"; print " $_\n" foreach @env; } print " \@INC:\n"; print " $_\n" foreach @INC; } sub header_files { return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h util.h); } ## ## This file was produced by running the Configure script. It holds all the ## definitions figured out by Configure. Should you modify one of these values, ## do not forget to propagate your changes by running "Configure -der". You may ## instead choose to run each of the .SH files by yourself, or "Configure -S". ## # ## Package name : perl5 ## Source directory : . ## Configuration time: Sat Nov 21 17:12:52 UTC 2020 ## Configured by : root ## Target system : darwin bigsura.local 20.1.0 darwin kernel version 20.1.0: sat oct 31 00:07:18 pdt 2020; root:xnu-7195.50.7~2release_arm64_t8020 arm64 # #: Configure command line arguments. # #: Variables propagated from previous config.sh file. our $summary = <<'!END!'; Summary of my $package (revision $revision $version_patchlevel_string) configuration: $git_commit_id_title $git_commit_id$git_ancestor_line Platform: osname=$osname osvers=$osvers archname=$archname uname='$myuname' config_args='$config_args' hint=$hint useposix=$useposix d_sigaction=$d_sigaction useithreads=$useithreads usemultiplicity=$usemultiplicity use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble usemymalloc=$usemymalloc default_inc_excludes_dot=$default_inc_excludes_dot bincompat5005=undef Compiler: cc='$cc' ccflags ='$ccflags' optimize='$optimize' cppflags='$cppflags' ccversion='$ccversion' gccversion='$gccversion' gccosandvers='$gccosandvers' intsize=$intsize longsize=$longsize ptrsize=$ptrsize doublesize=$doublesize byteorder=$byteorder doublekind=$doublekind d_longlong=$d_longlong longlongsize=$longlongsize d_longdbl=$d_longdbl longdblsize=$longdblsize longdblkind=$longdblkind ivtype='$ivtype' ivsize=$ivsize nvtype='$nvtype' nvsize=$nvsize Off_t='$lseektype' lseeksize=$lseeksize alignbytes=$alignbytes prototype=$prototype Linker and Libraries: ld='$ld' ldflags ='$ldflags' libpth=$libpth libs=$libs perllibs=$perllibs libc=$libc so=$so useshrplib=$useshrplib libperl=$libperl gnulibc_version='$gnulibc_version' Dynamic Linking: dlsrc=$dlsrc dlext=$dlext d_dlsymun=$d_dlsymun ccdlflags='$ccdlflags' cccdlflags='$cccdlflags' lddlflags='$lddlflags' !END! my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c; if ($1 eq 'git_ancestor_line') { if ($Config::Config{git_ancestor}) { $c= "\n Ancestor: $Config::Config{git_ancestor}"; } else { $c= ""; } } else { $c = $Config::Config{$1}; } defined($c) ? $c : 'undef' }ge; $summary_expanded; } local *_ = \my $a; $_ = <<'!END!'; Author='' CONFIG='true' Date='' Header='' Id='' LANG='C' LC_ALL='C' Locker='' Log='' PATCHLEVEL='28' PERL_API_REVISION='5' PERL_API_SUBVERSION='0' PERL_API_VERSION='28' PERL_CONFIG_SH='true' PERL_PATCHLEVEL='' PERL_REVISION='5' PERL_SUBVERSION='3' PERL_VERSION='28' RCSfile='' Revision='' SUBVERSION='3' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' afsroot='/afs' alignbytes='8' aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='28' api_versionstring='5.28.0' ar='ar' archlib='/opt/local/lib/perl5/5.28/darwin-thread-multi-2level' archlibexp='/opt/local/lib/perl5/5.28/darwin-thread-multi-2level' archname='darwin-thread-multi-2level' archname64='' archobjs='' asctime_r_proto='REENTRANT_PROTO_B_SB' awk='awk' baserev='5.0' bash='' bin='/opt/local/bin' bin_ELF='undef' binexp='/opt/local/bin' bison='bison' byacc='byacc' byteorder='ffff' c='\c' castflags='1' cat='cat' cc='/usr/bin/clang' cccdlflags=' ' ccdlflags=' ' ccflags='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.16 -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV' ccflags_uselargefiles='' ccname='gcc' ccsymbols='' ccversion='' cf_by='root' cf_email='root@bigsura.local' cf_time='Sat Nov 21 17:12:52 UTC 2020' charbits='8' charsize='1' chgrp='' chmod='chmod' chown='' clocktype='clock_t' comm='comm' compress='' config_arg0='Configure' config_arg1='-des' config_arg10='-Dman3ext=3pm' config_arg11='-Dinstallstyle=lib/perl5' config_arg12='-Dman1dir=/opt/local/share/man/man1p' config_arg13='-Dman3dir=/opt/local/share/man/man3p' config_arg14='-Dsitebin=/opt/local/libexec/perl5.28/sitebin' config_arg15='-Dsiteman1dir=/opt/local/share/perl5.28/siteman/man1' config_arg16='-Dsiteman3dir=/opt/local/share/perl5.28/siteman/man3' config_arg17='-Dvendorbin=/opt/local/libexec/perl5.28' config_arg18='-Dvendorman1dir=/opt/local/share/perl5.28/man/man1' config_arg19='-Dvendorman3dir=/opt/local/share/perl5.28/man/man3' config_arg2='-Dprefix=/opt/local' config_arg20='-Dpager=/usr/bin/less -sR' config_arg21='-Dperlpath=/opt/local/bin/perl5.28' config_arg22='-Dstartperl=#!/opt/local/bin/perl5.28' config_arg23='-Acppflags=-I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk' config_arg24='-Accflags=-pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk ' config_arg25='-Alddlflags=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk ' config_arg26='-Aldflags=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk ' config_arg3='-Dscriptdir=/opt/local/bin' config_arg4='-Dvendorprefix=/opt/local' config_arg5='-Dusemultiplicity=y' config_arg6='-Dusethreads' config_arg7='-Duseshrplib' config_arg8='-Dcc=/usr/bin/clang' config_arg9='-Dman1ext=1pm' config_argc='26' config_args='-des -Dprefix=/opt/local -Dscriptdir=/opt/local/bin -Dvendorprefix=/opt/local -Dusemultiplicity=y -Dusethreads -Duseshrplib -Dcc=/usr/bin/clang -Dman1ext=1pm -Dman3ext=3pm -Dinstallstyle=lib/perl5 -Dman1dir=/opt/local/share/man/man1p -Dman3dir=/opt/local/share/man/man3p -Dsitebin=/opt/local/libexec/perl5.28/sitebin -Dsiteman1dir=/opt/local/share/perl5.28/siteman/man1 -Dsiteman3dir=/opt/local/share/perl5.28/siteman/man3 -Dvendorbin=/opt/local/libexec/perl5.28 -Dvendorman1dir=/opt/local/share/perl5.28/man/man1 -Dvendorman3dir=/opt/local/share/perl5.28/man/man3 -Dpager=/usr/bin/less -sR -Dperlpath=/opt/local/bin/perl5.28 -Dstartperl=#!/opt/local/bin/perl5.28 -Acppflags=-I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -Accflags=-pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -Alddlflags=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -Aldflags=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk ' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' cppflags='-I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fno-common -DPERL_DARWIN -mmacosx-version-min=10.16 -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include' cpplast='-' cppminus='-' cpprun='/usr/bin/clang -I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -E' cppstdin='/usr/bin/clang -I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -E' cppsymbols='_FORTIFY_SOURCE=2 _LP64=1 __BYTE_ORDER__=1234 __GNUC_MINOR__=2 __GNUC__=4 __LITTLE_ENDIAN__=1 __LP64__=1 __MACH__=1 __PIC__=2 __STDC__=1 __aarch64__=1 __clang__=1 __pic__=2' crypt_r_proto='0' cryptlib='' csh='csh' ctermid_r_proto='REENTRANT_PROTO_B_B' ctime_r_proto='REENTRANT_PROTO_B_SB' d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' d_PRIXU64='define' d_PRId64='define' d_PRIeldbl='define' d_PRIfldbl='define' d_PRIgldbl='define' d_PRIi64='define' d_PRIo64='define' d_PRIu64='define' d_PRIx64='define' d_SCNfldbl='define' d__fwalk='undef' d_accept4='undef' d_access='define' d_accessx='undef' d_acosh='define' d_aintl='undef' d_alarm='define' d_archlib='define' d_asctime64='undef' d_asctime_r='define' d_asinh='define' d_atanh='define' d_atolf='undef' d_atoll='define' d_attribute_deprecated='define' d_attribute_format='define' d_attribute_malloc='define' d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' d_attribute_warn_unused_result='define' d_backtrace='define' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_builtin_add_overflow='define' d_builtin_choose_expr='define' d_builtin_expect='define' d_builtin_mul_overflow='define' d_builtin_sub_overflow='define' d_c99_variadic_macros='define' d_casti32='define' d_castneg='undef' d_cbrt='define' d_chown='define' d_chroot='define' d_chsize='undef' d_class='undef' d_clearenv='undef' d_closedir='define' d_cmsghdr_s='define' d_const='define' d_copysign='define' d_copysignl='define' d_cplusplus='undef' d_crypt='define' d_crypt_r='undef' d_csh='define' d_ctermid='define' d_ctermid_r='define' d_ctime64='undef' d_ctime_r='define' d_cuserid='undef' d_dbminitproto='undef' d_difftime='define' d_difftime64='undef' d_dir_dd_fd='undef' d_dirfd='define' d_dirnamlen='define' d_dladdr='define' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_double_has_inf='define' d_double_has_nan='define' d_double_has_negative_zero='define' d_double_has_subnormals='define' d_double_style_cray='undef' d_double_style_ibm='undef' d_double_style_ieee='define' d_double_style_vax='undef' d_drand48_r='undef' d_drand48proto='define' d_dup2='define' d_dup3='undef' d_duplocale='define' d_eaccess='undef' d_endgrent='define' d_endgrent_r='undef' d_endhent='define' d_endhostent_r='undef' d_endnent='define' d_endnetent_r='undef' d_endpent='define' d_endprotoent_r='undef' d_endpwent='define' d_endpwent_r='undef' d_endsent='define' d_endservent_r='undef' d_eofnblk='define' d_erf='define' d_erfc='define' d_eunice='undef' d_exp2='define' d_expm1='define' d_faststdio='undef' d_fchdir='define' d_fchmod='define' d_fchmodat='define' d_fchown='define' d_fcntl='define' d_fcntl_can_lock='define' d_fd_macros='define' d_fd_set='define' d_fdclose='undef' d_fdim='define' d_fds_bits='define' d_fegetround='define' d_fgetpos='define' d_finite='undef' d_finitel='undef' d_flexfnam='define' d_flock='define' d_flockproto='define' d_fma='define' d_fmax='define' d_fmin='define' d_fork='define' d_fp_class='undef' d_fp_classify='undef' d_fp_classl='undef' d_fpathconf='define' d_fpclass='undef' d_fpclassify='define' d_fpclassl='undef' d_fpgetround='undef' d_fpos64_t='undef' d_freelocale='define' d_frexpl='define' d_fs_data_s='undef' d_fseeko='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_fsync='define' d_ftello='define' d_ftime='undef' d_futimes='undef' d_gai_strerror='define' d_gdbm_ndbm_h_uses_prototypes='undef' d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' d_getespwnam='undef' d_getfsstat='define' d_getgrent='define' d_getgrent_r='undef' d_getgrgid_r='define' d_getgrnam_r='define' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='define' d_gethostbyaddr_r='undef' d_gethostbyname_r='undef' d_gethostent_r='undef' d_gethostprotos='define' d_getitimer='define' d_getlogin='define' d_getlogin_r='define' d_getmnt='undef' d_getmntent='undef' d_getnameinfo='define' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetbyaddr_r='undef' d_getnetbyname_r='undef' d_getnetent_r='undef' d_getnetprotos='define' d_getpagsz='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp='define' d_getpgrp2='undef' d_getppid='define' d_getprior='define' d_getprotobyname_r='undef' d_getprotobynumber_r='undef' d_getprotoent_r='undef' d_getprotoprotos='define' d_getprpwnam='undef' d_getpwent='define' d_getpwent_r='undef' d_getpwnam_r='define' d_getpwuid_r='define' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservbyname_r='undef' d_getservbyport_r='undef' d_getservent_r='undef' d_getservprotos='define' d_getspnam='undef' d_getspnam_r='undef' d_gettimeod='define' d_gmtime64='undef' d_gmtime_r='define' d_gnulibc='undef' d_grpasswd='define' d_hasmntopt='undef' d_htonl='define' d_hypot='define' d_ilogb='define' d_ilogbl='define' d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' d_int64_t='define' d_ip_mreq='define' d_ip_mreq_source='define' d_ipv6_mreq='define' d_ipv6_mreq_source='undef' d_isascii='define' d_isblank='define' d_isfinite='define' d_isfinitel='undef' d_isinf='define' d_isinfl='undef' d_isless='undef' d_isnan='define' d_isnanl='undef' d_isnormal='define' d_j0='define' d_j0l='undef' d_killpg='define' d_lc_monetary_2008='define' d_lchown='define' d_ldbl_dig='define' d_ldexpl='define' d_lgamma='define' d_lgamma_r='define' d_libm_lib_version='undef' d_libname_unique='undef' d_link='define' d_linkat='define' d_llrint='define' d_llrintl='define' d_llround='define' d_llroundl='define' d_localeconv_l='define' d_localtime64='undef' d_localtime_r='define' d_localtime_r_needs_tzset='undef' d_locconv='define' d_lockf='define' d_log1p='define' d_log2='define' d_logb='define' d_long_double_style_ieee='undef' d_long_double_style_ieee_doubledouble='undef' d_long_double_style_ieee_extended='undef' d_long_double_style_ieee_std='undef' d_long_double_style_vax='undef' d_longdbl='define' d_longlong='define' d_lrint='define' d_lrintl='define' d_lround='define' d_lroundl='define' d_lseekproto='define' d_lstat='define' d_madvise='define' d_malloc_good_size='define' d_malloc_size='define' d_mblen='define' d_mbrlen='define' d_mbrtowc='define' d_mbstowcs='define' d_mbtowc='define' d_memmem='define' d_memrchr='undef' d_mkdir='define' d_mkdtemp='define' d_mkfifo='define' d_mkostemp='undef' d_mkstemp='define' d_mkstemps='define' d_mktime='define' d_mktime64='undef' d_mmap='define' d_modfl='define' d_modflproto='define' d_mprotect='define' d_msg='define' d_msg_ctrunc='define' d_msg_dontroute='define' d_msg_oob='define' d_msg_peek='define' d_msg_proxy='undef' d_msgctl='define' d_msgget='define' d_msghdr_s='define' d_msgrcv='define' d_msgsnd='define' d_msync='define' d_munmap='define' d_mymalloc='undef' d_nan='define' d_nanosleep='define' d_ndbm='define' d_ndbm_h_uses_prototypes='define' d_nearbyint='define' d_newlocale='define' d_nextafter='define' d_nexttoward='define' d_nice='define' d_nl_langinfo='define' d_nv_preserves_uv='undef' d_nv_zero_is_allbits_zero='define' d_off64_t='undef' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_openat='define' d_pathconf='define' d_pause='define' d_perl_otherlibdirs='undef' d_phostname='undef' d_pipe='define' d_pipe2='undef' d_poll='undef' d_portable='define' d_prctl='undef' d_prctl_set_name='undef' d_printf_format_null='define' d_procselfexe='undef' d_pseudofork='undef' d_pthread_atfork='define' d_pthread_attr_setscope='define' d_pthread_yield='undef' d_ptrdiff_t='define' d_pwage='undef' d_pwchange='define' d_pwclass='define' d_pwcomment='undef' d_pwexpire='define' d_pwgecos='define' d_pwpasswd='define' d_pwquota='undef' d_qgcvt='undef' d_quad='define' d_querylocale='define' d_random_r='undef' d_re_comp='undef' d_readdir='define' d_readdir64_r='undef' d_readdir_r='define' d_readlink='define' d_readv='define' d_recvmsg='define' d_regcmp='undef' d_regcomp='define' d_remainder='define' d_remquo='define' d_rename='define' d_renameat='define' d_rewinddir='define' d_rint='define' d_rmdir='define' d_round='define' d_sbrkproto='define' d_scalbn='define' d_scalbnl='define' d_sched_yield='define' d_scm_rights='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' d_setgrps='define' d_sethent='define' d_sethostent_r='undef' d_setitimer='define' d_setlinebuf='define' d_setlocale='define' d_setlocale_r='undef' d_setnent='define' d_setnetent_r='undef' d_setpent='define' d_setpgid='define' d_setpgrp='define' d_setpgrp2='undef' d_setprior='define' d_setproctitle='undef' d_setprotoent_r='undef' d_setpwent='define' d_setpwent_r='undef' d_setregid='define' d_setresgid='undef' d_setresuid='undef' d_setreuid='define' d_setrgid='define' d_setruid='define' d_setsent='define' d_setservent_r='undef' d_setsid='define' d_setvbuf='define' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_siginfo_si_addr='define' d_siginfo_si_band='define' d_siginfo_si_errno='define' d_siginfo_si_fd='undef' d_siginfo_si_pid='define' d_siginfo_si_status='define' d_siginfo_si_uid='define' d_siginfo_si_value='define' d_signbit='define' d_sigprocmask='define' d_sigsetjmp='define' d_sin6_scope_id='define' d_sitearch='define' d_snprintf='define' d_sockaddr_in6='define' d_sockaddr_sa_len='define' d_sockatmark='define' d_sockatmarkproto='define' d_socket='define' d_socklen_t='define' d_sockpair='define' d_socks5_init='undef' d_sqrtl='define' d_srand48_r='undef' d_srandom_r='undef' d_sresgproto='undef' d_sresuproto='undef' d_stat='define' d_statblks='define' d_statfs_f_flags='define' d_statfs_s='define' d_static_inline='define' d_statvfs='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='undef' d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_ptr_lval_sets_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' d_strcoll='define' d_strerror_l='undef' d_strerror_r='define' d_strftime='define' d_strlcat='define' d_strlcpy='define' d_strnlen='define' d_strtod='define' d_strtod_l='define' d_strtol='define' d_strtold='define' d_strtold_l='define' d_strtoll='define' d_strtoq='define' d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_tgamma='define' d_thread_safe_nl_langinfo_l='undef' d_time='define' d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' d_tmpnam_r='undef' d_trunc='define' d_truncate='define' d_truncl='define' d_ttyname_r='define' d_tzname='define' d_u32align='define' d_ualarm='define' d_umask='define' d_uname='define' d_union_semun='define' d_unlinkat='define' d_unordered='undef' d_unsetenv='define' d_uselocale='define' d_usleep='define' d_usleepproto='define' d_ustat='undef' d_vendorarch='define' d_vendorbin='define' d_vendorlib='define' d_vendorscript='define' d_vfork='define' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_vsnprintf='define' d_wait4='define' d_waitpid='define' d_wcscmp='define' d_wcstombs='define' d_wcsxfrm='define' d_wctomb='define' d_writev='define' d_xenix='undef' date='date' db_hashtype='int' db_prefixtype='int' db_version_major='1' db_version_minor='0' db_version_patch='0' default_inc_excludes_dot='define' direntrytype='struct dirent' dlext='bundle' dlsrc='dl_dlopen.xs' doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' doublekind='3' doublemantbits='52' doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' doublesize='8' drand01='Perl_drand48()' drand48_r_proto='0' dtrace='' dtraceobject='' dtracexnolibs='' dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap arybase attributes mro re threads threads/shared' eagain='EAGAIN' ebcdic='undef' echo='echo' egrep='egrep' emacs='' endgrent_r_proto='0' endhostent_r_proto='0' endnetent_r_proto='0' endprotoent_r_proto='0' endpwent_r_proto='0' endservent_r_proto='0' eunicefix=':' exe_ext='' expr='expr' extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap arybase attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' fflushall='undef' find='' firstmakefile='GNUmakefile' flex='' fpossize='8' fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' full_csh='/bin/csh' full_sed='/usr/bin/sed' gccansipedantic='' gccosandvers='' gccversion='Apple LLVM 12.0.0 (clang-1200.0.32.27)' getgrent_r_proto='0' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' gethostbyaddr_r_proto='0' gethostbyname_r_proto='0' gethostent_r_proto='0' getlogin_r_proto='REENTRANT_PROTO_I_BW' getnetbyaddr_r_proto='0' getnetbyname_r_proto='0' getnetent_r_proto='0' getprotobyname_r_proto='0' getprotobynumber_r_proto='0' getprotoent_r_proto='0' getpwent_r_proto='0' getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR' getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR' getservbyname_r_proto='0' getservbyport_r_proto='0' getservent_r_proto='0' getspnam_r_proto='0' gidformat='"u"' gidsign='1' gidsize='4' gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib ' gmake='gmake' gmtime_r_proto='REENTRANT_PROTO_S_TS' gnulibc_version='' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' hostgenerate='' hostosname='' hostperl='' html1dir=' ' html1direxp='' html3dir=' ' html3direxp='' i16size='2' i16type='short' i32size='4' i32type='int' i64size='8' i64type='long' i8size='1' i8type='signed char' i_arpainet='define' i_bfd='undef' i_bsdioctl='' i_crypt='undef' i_db='define' i_dbm='undef' i_dirent='define' i_dlfcn='define' i_execinfo='define' i_fcntl='undef' i_fenv='define' i_fp='undef' i_fp_class='undef' i_gdbm='define' i_gdbm_ndbm='undef' i_gdbmndbm='undef' i_grp='define' i_ieeefp='undef' i_inttypes='define' i_langinfo='define' i_libutil='undef' i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='undef' i_mallocmalloc='define' i_mntent='undef' i_ndbm='define' i_netdb='define' i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='undef' i_prot='undef' i_pthread='define' i_pwd='define' i_quadmath='undef' i_rpcsvcdbm='undef' i_sgtty='undef' i_shadow='undef' i_socks='undef' i_stdbool='define' i_stdint='define' i_stdlib='define' i_string='define' i_sunmath='undef' i_sysaccess='undef' i_sysdir='define' i_sysfile='define' i_sysfilio='define' i_sysin='undef' i_sysioctl='define' i_syslog='define' i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' i_sysparam='define' i_syspoll='define' i_sysresrc='define' i_syssecrt='undef' i_sysselct='define' i_syssockio='define' i_sysstat='define' i_sysstatfs='undef' i_sysstatvfs='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysuio='define' i_sysun='define' i_sysutsname='define' i_sysvfs='undef' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_ustat='undef' i_utime='define' i_vfork='undef' i_wchar='define' i_xlocale='define' ignore_versioned_solibs='' inc_version_list=' ' inc_version_list_init='0' incpath='' incpth='/opt/local/include /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include /Library/Developer/CommandLineTools/usr/include' inews='' initialinstalllocation='/opt/local/bin' installarchlib='/opt/local/lib/perl5/5.28/darwin-thread-multi-2level' installbin='/opt/local/bin' installhtml1dir='' installhtml3dir='' installman1dir='/opt/local/share/man/man1p' installman3dir='/opt/local/share/man/man3p' installprefix='/opt/local' installprefixexp='/opt/local' installprivlib='/opt/local/lib/perl5/5.28' installscript='/opt/local/bin' installsitearch='/opt/local/lib/perl5/site_perl/5.28/darwin-thread-multi-2level' installsitebin='/opt/local/libexec/perl5.28/sitebin' installsitehtml1dir='' installsitehtml3dir='' installsitelib='/opt/local/lib/perl5/site_perl/5.28' installsiteman1dir='/opt/local/share/perl5.28/siteman/man1' installsiteman3dir='/opt/local/share/perl5.28/siteman/man3' installsitescript='/opt/local/libexec/perl5.28/sitebin' installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='/opt/local/lib/perl5/vendor_perl/5.28/darwin-thread-multi-2level' installvendorbin='/opt/local/libexec/perl5.28' installvendorhtml1dir='' installvendorhtml3dir='' installvendorlib='/opt/local/lib/perl5/vendor_perl/5.28' installvendorman1dir='/opt/local/share/perl5.28/man/man1' installvendorman3dir='/opt/local/share/perl5.28/man/man3' installvendorscript='/opt/local/libexec/perl5.28' intsize='4' issymlink='test -h' ivdformat='"ld"' ivsize='8' ivtype='long' known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Codes Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader arybase attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='/usr/bin/clang' ld_can_script='undef' lddlflags=' -mmacosx-version-min=10.16 -bundle -undefined dynamic_lookup -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fstack-protector-strong' ldflags=' -mmacosx-version-min=10.16 -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fstack-protector-strong' ldflags_uselargefiles='' ldlibpthname='DYLD_LIBRARY_PATH' less='less' lib_ext='.a' libc='' libperl='libperl.dylib' libpth='/opt/local/lib /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/lib /Library/Developer/CommandLineTools/usr/lib /usr/lib' libs='-lgdbm' libsdirs=' /opt/local/lib' libsfiles=' libgdbm.6.dylib' libsfound=' /opt/local/lib/libgdbm.6.dylib' libspath=' /opt/local/lib /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/lib /Library/Developer/CommandLineTools/usr/lib /usr/lib' libswanted='pthread socket inet nsl ndbm gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb bsd BSD' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' lns='/bin/ln -s' localtime_r_proto='REENTRANT_PROTO_S_TS' locincpth='/opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' longdblkind='0' longdblmantbits='52' longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' longdblsize='8' longlongsize='8' longsize='8' lp='' lpr='' ls='ls' lseeksize='8' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' malloc_cflags='ccflags="-DUSE_PERL_SBRK -DPERL_SBRK_VIA_MALLOC $ccflags"' mallocobj='' mallocsrc='' malloctype='void *' man1dir='/opt/local/share/man/man1p' man1direxp='/opt/local/share/man/man1p' man1ext='1pm' man3dir='/opt/local/share/man/man3p' man3direxp='/opt/local/share/man/man3p' man3ext='3pm' mips_type='' mistrustnm='' mkdir='mkdir' mmaptype='void *' modetype='mode_t' more='more' multiarch='define' mv='' myarchname='arm64-darwin' mydomain='.local' myhostname='bigsura' myuname='darwin bigsura.local 20.1.0 darwin kernel version 20.1.0: sat oct 31 00:07:18 pdt 2020; root:xnu-7195.50.7~2release_arm64_t8020 arm64 ' n='' need_va_copy='undef' netdb_hlen_type='size_t' netdb_host_type='char *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='' nm_so_opt='' nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' nv_preserves_uv_bits='53' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' nvmantbits='52' nvsize='8' nvtype='double' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O3' orderlib='false' osname='darwin' osvers='20.1.0' otherlibdirs=' ' package='perl5' pager='/usr/bin/less -sR' passcat='cat /etc/passwd' patchlevel='28' path_sep=':' perl='perl' perl5='/usr/bin/perl' perl_patchlevel='' perl_revision='5' perl_static_inline='static __inline__' perl_subversion='3' perl_version='28' perladmin='root@bigsura.local' perllibs='' perlpath='/opt/local/bin/perl5.28' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='' pmake='' pr='' prefix='/opt/local' prefixexp='/opt/local' privlib='/opt/local/lib/perl5/5.28' privlibexp='/opt/local/lib/perl5/5.28' procselfexe='' prototype='define' ptrsize='8' quadkind='2' quadtype='long' randbits='48' randfunc='Perl_drand48' random_r_proto='0' randseedtype='U32' ranlib='ranlib' rd_nodata='-1' readdir64_r_proto='0' readdir_r_proto='REENTRANT_PROTO_I_TSR' revision='5' rm='rm' rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' rmail='' run='' runnm='false' sGMTIME_max='67768036191676799' sGMTIME_min='-62167219200' sLOCALTIME_max='67768036191676799' sLOCALTIME_min='-62167219200' sPRIEUldbl='"E"' sPRIFUldbl='"F"' sPRIGUldbl='"G"' sPRIXU64='"lX"' sPRId64='"ld"' sPRIeldbl='"e"' sPRIfldbl='"f"' sPRIgldbl='"g"' sPRIi64='"li"' sPRIo64='"lo"' sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"f"' sched_yield='sched_yield()' scriptdir='/opt/local/bin' scriptdirexp='/opt/local/bin' sed='sed' seedfunc='Perl_drand48_init' selectminbits='32' selecttype='fd_set *' sendmail='' setgrent_r_proto='0' sethostent_r_proto='0' setlocale_r_proto='0' setnetent_r_proto='0' setprotoent_r_proto='0' setpwent_r_proto='0' setservent_r_proto='0' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='env LD_RUN_PATH=/opt/local/lib/perl5/5.28/darwin-thread-multi-2level/CORE' shsharp='true' sig_count='32' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 IOT ' sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "URG", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "IO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "IOT", 0' sig_num='0 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 6 ' sig_num_init='0, 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, 6, 0' sig_size='33' signal_t='void' sitearch='/opt/local/lib/perl5/site_perl/5.28/darwin-thread-multi-2level' sitearchexp='/opt/local/lib/perl5/site_perl/5.28/darwin-thread-multi-2level' sitebin='/opt/local/libexec/perl5.28/sitebin' sitebinexp='/opt/local/libexec/perl5.28/sitebin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' sitelib='/opt/local/lib/perl5/site_perl/5.28' sitelib_stem='/opt/local/lib/perl5/site_perl/5.28' sitelibexp='/opt/local/lib/perl5/site_perl/5.28' siteman1dir='/opt/local/share/perl5.28/siteman/man1' siteman1direxp='/opt/local/share/perl5.28/siteman/man1' siteman3dir='/opt/local/share/perl5.28/siteman/man3' siteman3direxp='/opt/local/share/perl5.28/siteman/man3' siteprefix='/opt/local' siteprefixexp='/opt/local' sitescript='/opt/local/libexec/perl5.28/sitebin' sitescriptexp='/opt/local/libexec/perl5.28/sitebin' sizesize='8' sizetype='size_t' sleep='' smail='' so='dylib' sockethdr='' socketlib='' socksizetype='socklen_t' sort='sort' spackage='Perl5' spitshell='cat' srand48_r_proto='0' srandom_r_proto='0' src='.' ssizetype='ssize_t' st_ino_sign='1' st_ino_size='8' startperl='#!/opt/local/bin/perl5.28' startsh='#!/bin/sh' static_ext=' ' stdchar='char' stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)' stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)' stdio_cnt='((fp)->_r)' stdio_filbuf='' stdio_ptr='((fp)->_p)' stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_I_IBW' submit='' subversion='3' sysman='/usr/share/man/man1' sysroot='' tail='' tar='' targetarch='' targetdir='' targetenv='' targethost='' targetmkdir='' targetport='' targetsh='/bin/sh' tbl='' tee='' test='test' timeincl='/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/sys/time.h ' timetype='time_t' tmpnam_r_proto='0' to=':' touch='touch' tr='tr' trnl='\n' troff='' ttyname_r_proto='REENTRANT_PROTO_I_IBW' u16size='2' u16type='unsigned short' u32size='4' u32type='unsigned int' u64size='8' u64type='unsigned long' u8size='1' u8type='unsigned char' uidformat='"u"' uidsign='1' uidsize='4' uidtype='uid_t' uname='uname' uniq='uniq' uquadtype='unsigned long' use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' usedevel='undef' usedl='define' usedtrace='undef' usefaststdio='undef' useithreads='define' usekernprocpathname='undef' uselanginfo='true' uselargefiles='define' uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='define' usemymalloc='n' usenm='false' usensgetexecutablepath='define' useopcode='true' useperlio='define' useposix='true' usequadmath='undef' usereentrant='define' userelocatableinc='undef' useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='define' usevendorprefix='define' useversionedarchname='undef' usevfork='true' usrinc='/usr/include' uuname='' uvXUformat='"lX"' uvoformat='"lo"' uvsize='8' uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vendorarch='/opt/local/lib/perl5/vendor_perl/5.28/darwin-thread-multi-2level' vendorarchexp='/opt/local/lib/perl5/vendor_perl/5.28/darwin-thread-multi-2level' vendorbin='/opt/local/libexec/perl5.28' vendorbinexp='/opt/local/libexec/perl5.28' vendorhtml1dir=' ' vendorhtml1direxp='' vendorhtml3dir=' ' vendorhtml3direxp='' vendorlib='/opt/local/lib/perl5/vendor_perl/5.28' vendorlib_stem='/opt/local/lib/perl5/vendor_perl/5.28' vendorlibexp='/opt/local/lib/perl5/vendor_perl/5.28' vendorman1dir='/opt/local/share/perl5.28/man/man1' vendorman1direxp='/opt/local/share/perl5.28/man/man1' vendorman3dir='/opt/local/share/perl5.28/man/man3' vendorman3direxp='/opt/local/share/perl5.28/man/man3' vendorprefix='/opt/local' vendorprefixexp='/opt/local' vendorscript='/opt/local/libexec/perl5.28' vendorscriptexp='/opt/local/libexec/perl5.28' version='5.28.3' version_patchlevel_string='version 28 subversion 3' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' yacc='yacc' yaccflags='' zcat='' zip='zip' !END! my $i = ord(8); foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); } our $byteorder = join('', unpack('aaaaaaaa', pack('L!', $i))); s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; my $config_sh_len = length $_; our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; ccflags_nolargefiles='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.16 -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV' ldflags_nolargefiles=' -mmacosx-version-min=10.16 -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fstack-protector-strong' libs_nolargefiles='-lgdbm' libswanted_nolargefiles='pthread socket inet nsl ndbm gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb bsd BSD' ccwarnflags=' -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings' ccstdflags=' -std=c89' EOVIRTUAL eval { # do not have hairy conniptions if this isnt available require 'Config_git.pl'; $Config_SH_expanded .= $Config::Git_Data; 1; } or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; # Search for it in the big string sub fetch_string { my($self, $key) = @_; return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; # So we can say "if $Config{'foo'}". $self->{$key} = $1 eq 'undef' ? undef : $1; } my $prevpos = 0; sub FIRSTKEY { $prevpos = 0; substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); } sub NEXTKEY { my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; my $len = index($Config_SH_expanded, "=", $pos) - $pos; $prevpos = $pos; $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; } sub EXISTS { return 1 if exists($_[0]->{$_[1]}); return(index($Config_SH_expanded, "\n$_[1]='") != -1 ); } sub STORE { die "\%Config::Config is read-only\n" } *DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space sub config_sh { substr $Config_SH_expanded, 1, $config_sh_len; } sub config_re { my $re = shift; return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH_expanded; } sub config_vars { # implements -V:cfgvar option (see perlrun -V:) foreach (@_) { # find optional leading, trailing colons; and query-spec my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, # map colon-flags to print decorations my $prfx = $notag ? '': "$qry="; # tag-prefix for print my $lnend = $lncont ? ' ' : ";\n"; # line ending for print # all config-vars are by definition \w only, any \W means regex if ($qry =~ /\W/) { my @matches = config_re($qry); print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; } else { my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; print "${prfx}'${v}'$lnend"; } } } # Called by the real AUTOLOAD sub launcher { undef &AUTOLOAD; goto \&$Config::AUTOLOAD; } 1;
comment:7 follow-up: 13 Changed 3 years ago by mojca (Mojca Miklavec)
I have a question for other mac gurus (I haven't been following version 11 too closely). Perl is currently built in the following way:
CC='/usr/bin/clang' CC_PRINT_OPTIONS='YES' CC_PRINT_OPTIONS_FILE='/path/to/perl5.32/work/.CC_PRINT_OPTIONS' CFLAGS='-pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch arm64' CPATH='/opt/local/include' CPPFLAGS='-I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk' CXX='/usr/bin/clang++' CXXFLAGS='-pipe -Os -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch arm64' DEVELOPER_DIR='/Library/Developer/CommandLineTools' F90FLAGS='-pipe -Os -m64' FCFLAGS='-pipe -Os -m64' FFLAGS='-pipe -Os -m64' INSTALL='/usr/bin/install -c' LC_ALL='C' LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch arm64' LIBRARY_PATH='/opt/local/lib' MACOSX_DEPLOYMENT_TARGET='11.0' OBJC='/usr/bin/clang' OBJCFLAGS='-pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch arm64' OBJCXX='/usr/bin/clang++' OBJCXXFLAGS='-pipe -Os -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch arm64' SDKROOT='/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk' Executing: cd "/path/to/perl5.32/work/perl-5.32.1" && sh Configure -des -Dprefix='/opt/local' -Dscriptdir='/opt/local/bin' -Dvendorprefix='/opt/local' -Dusemultiplicity=y -Dusethreads -Duseshrplib -Dcc="$CC" -Dman1ext=1pm -Dman3ext=3pm -Dinstallstyle='lib/perl5' -Dman1dir='/opt/local/share/man/man1p' -Dman3dir='/opt/local/share/man/man3p' -Dsitebin='/opt/local/libexec/perl5.32/sitebin' -Dsiteman1dir='/opt/local/share/perl5.32/siteman/man1' -Dsiteman3dir='/opt/local/share/perl5.32/siteman/man3' -Dvendorbin='/opt/local/libexec/perl5.32' -Dvendorman1dir='/opt/local/share/perl5.32/man/man1' -Dvendorman3dir='/opt/local/share/perl5.32/man/man3' -Dpager='/usr/bin/less -sR' -Dperlpath="/opt/local/bin/perl5.32" -Dstartperl="#!/opt/local/bin/perl5.32" -Acppflags="$CPPFLAGS" -Accflags="$CFLAGS" -Alddlflags="$LDFLAGS" -Aldflags="$LDFLAGS"
My questions are as follows:
- Is passing
/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
in fact needed in order build (any given) software correctly or is it there "just in case"? - I see that we are now passing
MacOSX11.sdk
to compiler flags (which is just a symlink toMacOSX11.x.sdk
), while this used to beMacOSX11.0.sdk
at the time when perl was built. Wouldn't thus this problem be fixed without any further changes if we simply revbumped perl?
I'm not saying that this doesn't need to be addressed at some point, I'm just trying to find some quick solution to overcome the painful problem on macOS 11.
I opened an upstream ticket:
comment:8 Changed 3 years ago by kencu (Ken)
Jeremy has indicated previously we should really not be passing as arguments or embedding any paths to an SDK into build scripts or files at all.
If we want to force a specific SDK, set SDKROOT.
https://github.com/macports/macports-base/pull/147
If you don't set SDKROOT, then xcrun will find an appropriate one for you when you run clang.
comment:9 follow-up: 10 Changed 3 years ago by mojca (Mojca Miklavec)
I just tested on macOS 11/arm64 and solely revbumping perl5.32
(meaning that MacOSX11.sdk
gets hardcoded into Config
files rather than MacOSX11.0.sdk
) leads to successful installation of p5.32-tk
, for example.
Ken, one part that I'm not sure about when reading your answer: are you (and Jeremy) saying that:
- we should never pass any SDK to
CFLAGS
,LDFLAGS
, ... (apparently the base does exactly that) - or that we should not bake those values into build scripts
I totally agree with the second item, but at this very moment it's a tiny bit non-trivial to fix this "in a correct way" unless we also remove SDKs from all the environmental variables, so that perl5.x
never even sees the path to SDK (and thus it also won't store it anywhere).
I believe we should look at this from two completely different angles and try to find:
- something that fixes the problem immediately
- something that fixes the problem correctly
At this moment I would like to solve the first one. We need to talk to upstream to address the second one.
comment:10 follow-up: 11 Changed 3 years ago by kencu (Ken)
Replying to mojca:
Ken, one part that I'm not sure about when reading your answer: are you (and Jeremy) saying that:
- we should never pass any SDK to
CFLAGS
,LDFLAGS
, ... (apparently the base does exactly that)
For anything to do with clang or Xcode, we are supposed to set SDKROOT and leave the isysroot stuff out of the flags.
It might be that there are considered to be too many fringe cases to allow this, like maybe nasm and such. I don't know if all those fringe compilers respect SDKROOT.
- or that we should not bake those values into build scripts
We can all see that we have undergone no end of significant troubles by baking an SDK path into various installed scripts, and later the SDK path changes.
But we have talked about this for literally years now, and it seems that we can't stop doing it. Or maybe the software can't stop doing it, and we can't find a way to stop the software from doing it, not sure which.
comment:11 Changed 3 years ago by mojca (Mojca Miklavec)
Replying to kencu:
For anything to do with clang or Xcode, I believe we are supposed to set SDKROOT and try to leave the isysroot stuff out of the flags.
Except that isysroot
was added by Jeremy in
8863962b perl5 pg: use correct sdkroot to fix #59131 and #59154?
It's possible that something either was or still is added by portconfigure.tcl
, at least on >= darwin19.
We do see troubles when baking an SDK path into various installed scripts, and later the SDK path changes.
Sure, we need to avoid this.
It seems to me that there is often no advantage to burning in these paths, and we might do best to leave them out.
I totally agree. I'm just saying that it's a tiny bit non-trivial to remove them all out from Config.pm
and Config_heavy.pl
without upstream helping at least a bit.
To me, by far the easiest solution seem to be removing them from environmental variables before building perl itself. I'm just not sure if I'm allowed to do that.
comment:12 Changed 3 years ago by mojca (Mojca Miklavec)
Cc: | jmroot added |
---|
comment:13 Changed 3 years ago by jmroot (Joshua Root)
Replying to mojca:
- Is passing
/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
in fact needed in order build (any given) software correctly or is it there "just in case"?
Not at present, but that will change as soon as Xcode starts defaulting to using MacOSX12.sdk
. And of course if a user wants to use any other non-default SDK, you need to tell the toolchain about it.
- I see that we are now passing
MacOSX11.sdk
to compiler flags (which is just a symlink toMacOSX11.x.sdk
), while this used to beMacOSX11.0.sdk
at the time when perl was built. Wouldn't thus this problem be fixed without any further changes if we simply revbumped perl?
The problem would be hidden in the common case, sure.
comment:14 Changed 3 years ago by jmroot (Joshua Root)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
This is almost another aspect of the same underlying issue as #50894 and #59786.
We shouldn't hardcode any SDK path in Config_heavy.pl, we should delete the -isysroot and -Wl,-syslibroot flags entirely. That way any SDK specified in the environment or CFLAGS will be used, and if none is specified, the toolchain falls back to using MacOSX.sdk anyway.