├── .aspell.local.pws ├── .whitesource ├── xt ├── 00_pod.t ├── 01_pod.t ├── 50_manifest.t ├── 02_pod.t └── 10_check-core.t ├── .gitignore ├── examples └── show-v.pl ├── MANIFEST.SKIP ├── cpanfile ├── .releaserc ├── inc-test-count ├── .travis.yml ├── MANIFEST ├── README ├── CONTRIBUTING.md ├── Makefile.PL ├── sandbox └── genMETA.pl ├── t ├── 22_plv510.t ├── 10_base.t ├── 20_plv56.t ├── 23_plv512.t ├── 24_plv514.t ├── 25_plv516.t ├── 21_plv58.t ├── 26_plv5182.t ├── 26_plv518.t ├── 28_plv52201w.t ├── 27_plv5200.t ├── 27_plv5202.t ├── 28_plv5220.t ├── 40_plv5358dnqm.t ├── 29_plv5235w.t ├── 30_plv5240.t ├── 34_plv5280.t ├── 41_plv5360dnqm.t ├── 39_plv5340tqm.t ├── 32_plv5261rc1.t ├── 33_plv52711r.t ├── 36_plv5300.t ├── 38_plv5320tld.t ├── 31_plv52511.t ├── 37_plv53111qm.t ├── 42_plv5373tld.t ├── 45_plv5400tqm.t ├── 35_plv52910g.t ├── 44_plv5380tqm.t └── 43_plv53710rcs.t ├── SECURITY.md ├── Policy.sh ├── doc ├── Config-Perl-V.md ├── Config-Perl-V.man └── make-doc.pl └── Changelog /.aspell.local.pws: -------------------------------------------------------------------------------- 1 | personal_ws-1.1 en 5 2 | CPANTESTERS 3 | myconfig 4 | openbsd 5 | OpenBSD 6 | osname 7 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "failure" 7 | } 8 | } -------------------------------------------------------------------------------- /xt/00_pod.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use Test::More; 4 | 5 | eval "use Test::Pod 1.00"; 6 | plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; 7 | all_pod_files_ok (); 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | blib 2 | cover_db 3 | Makefile 4 | META.json 5 | META.yml 6 | MYMETA.json 7 | MYMETA.yml 8 | pm_to_blib 9 | Tk 10 | *.tar 11 | *.tar.gz 12 | *.tgz 13 | *.tmp 14 | *.old 15 | -------------------------------------------------------------------------------- /xt/01_pod.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use Test::More; 4 | 5 | eval "use Test::Pod::Coverage tests => 1"; 6 | plan skip_all => "Test::Pod::Coverage required for testing POD Coverage" if $@; 7 | pod_coverage_ok ("Config::Perl::V", "Config::Perl::V is covered"); 8 | -------------------------------------------------------------------------------- /xt/50_manifest.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use Test::More; 6 | 7 | eval "use Test::DistManifest"; 8 | plan skip_all => "Test::DistManifest required for testing MANIFEST" if $@; 9 | manifest_ok (); 10 | done_testing; 11 | -------------------------------------------------------------------------------- /examples/show-v.pl: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use Data::Peek; 7 | use Config::Perl::V; 8 | 9 | my $conf = Config::Perl::V::myconfig [ @ARGV ]; 10 | DDumper $conf; 11 | 12 | DDumper Config::Perl::V::summary $conf; 13 | -------------------------------------------------------------------------------- /MANIFEST.SKIP: -------------------------------------------------------------------------------- 1 | \.git 2 | blib/ 3 | cover_db/ 4 | Makefile$ 5 | MANIFEST.SKIP 6 | META.json 7 | META.yml 8 | MYMETA.json 9 | MYMETA.yml 10 | pm_to_blib 11 | Policy.sh 12 | inc-test-count 13 | sandbox/ 14 | .releaserc 15 | \.aspell\.local\.pws 16 | \.tar$ 17 | \.tar.gz$ 18 | \.tgz$ 19 | \.tmp$ 20 | \.travis.yml 21 | \.whitesource 22 | doc/ 23 | xt/ 24 | -------------------------------------------------------------------------------- /cpanfile: -------------------------------------------------------------------------------- 1 | requires "Config"; 2 | 3 | on "configure" => sub { 4 | requires "ExtUtils::MakeMaker"; 5 | 6 | recommends "ExtUtils::MakeMaker" => "7.22"; 7 | 8 | suggests "ExtUtils::MakeMaker" => "7.72"; 9 | }; 10 | 11 | on "test" => sub { 12 | requires "Test::More"; 13 | requires "Test::NoWarnings"; 14 | }; 15 | -------------------------------------------------------------------------------- /xt/02_pod.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use Test::More; 4 | 5 | eval "use Test::Pod::Links"; 6 | plan skip_all => "Test::Pod::Links required for testing POD Links" if $@; 7 | eval { 8 | no warnings "redefine"; 9 | no warnings "once"; 10 | *Test::XTFiles::all_files = sub { sort glob "*.pm"; }; 11 | }; 12 | Test::Pod::Links->new->all_pod_files_ok; 13 | -------------------------------------------------------------------------------- /.releaserc: -------------------------------------------------------------------------------- 1 | cpan_user HMBRAND 2 | automated_testing 1 3 | skip_kwalitee 1 4 | skip_manifest 1 5 | skip_prereqs 1 6 | skip_dist 1 7 | allow_glob_in_perls 1 8 | perls /pro/bin/perl:/usr/bin/perl\ 9 | :/media/Tux/perls/bin/perl5.6.2\ 10 | :/media/Tux/perls/bin/perl5.8.*\ 11 | :/media/Tux/perls/bin/perl5.[1234][02468]*\ 12 | :/media/Tux/perls/bin/perl5.41*\ 13 | :/media/Tux/perls/bin/tperl5.6.2\ 14 | :/media/Tux/perls/bin/tperl5.8.*\ 15 | :/media/Tux/perls/bin/tperl5.[1234][02468]*\ 16 | :/media/Tux/perls/bin/tperl5.41* 17 | -------------------------------------------------------------------------------- /inc-test-count: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | # Increment the test count if CORE aded a global configuration variable 4 | # that might influence binary compatability 5 | 6 | use 5.018002; 7 | use warnings; 8 | 9 | my $n = 0 + shift // 1; 10 | 11 | foreach my $tf (sort glob "t/[2-9]*.t") { 12 | open my $fh, "<", $tf or die "$tf: $!\n"; 13 | local $/; 14 | my $t = <$fh>; 15 | close $fh; 16 | $t =~ s/\$tests = \K(\d+)/$1 + $n/e or next; 17 | open $fh, ">", $tf or die "$tf: $!\n"; 18 | print $fh $t; 19 | close $fh; 20 | } 21 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: perl 2 | os: 3 | - linux 4 | dist: trusty 5 | perl: 6 | - "5.30" 7 | - "5.28" 8 | - "5.26" 9 | - "5.26-shrplib" 10 | - "5.24" 11 | - "5.22" 12 | - "5.20" 13 | - "5.18" 14 | - "5.16" 15 | - "5.14" 16 | - "5.12" 17 | - "5.10" 18 | - "5.8" 19 | env: 20 | global: 21 | - AUTOMATED_TESTING=1 22 | install: 23 | - cpanm --quiet --installdeps --with-all-features --notest . || true 24 | notifications: 25 | irc: 26 | channels: 27 | - "irc.perl.org#csv" 28 | on_success: always 29 | on_failure: always 30 | -------------------------------------------------------------------------------- /MANIFEST: -------------------------------------------------------------------------------- 1 | MANIFEST 2 | Changelog 3 | Makefile.PL 4 | README 5 | CONTRIBUTING.md 6 | SECURITY.md 7 | V.pm 8 | cpanfile 9 | t/10_base.t 10 | t/20_plv56.t 11 | t/21_plv58.t 12 | t/22_plv510.t 13 | t/23_plv512.t 14 | t/24_plv514.t 15 | t/25_plv516.t 16 | t/25_plv5162.t 17 | t/26_plv518.t 18 | t/26_plv5182.t 19 | t/27_plv5200.t 20 | t/27_plv5202.t 21 | t/28_plv5220.t 22 | t/28_plv52201w.t 23 | t/29_plv5235w.t 24 | t/30_plv5240.t 25 | t/31_plv52511.t 26 | t/32_plv5261rc1.t 27 | t/33_plv52711r.t 28 | t/34_plv5280.t 29 | t/35_plv52910g.t 30 | t/36_plv5300.t 31 | t/37_plv53111qm.t 32 | t/38_plv5320tld.t 33 | t/39_plv5340tqm.t 34 | t/40_plv5358dnqm.t 35 | t/41_plv5360dnqm.t 36 | t/42_plv5373tld.t 37 | t/43_plv53710rcs.t 38 | t/44_plv5380tqm.t 39 | t/45_plv5400tqm.t 40 | t/46_plv5411tqmrcs.t 41 | examples/show-v.pl 42 | -------------------------------------------------------------------------------- /xt/10_check-core.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use Test::More; 6 | use Cwd; 7 | 8 | my $here = getcwd; 9 | 10 | chdir "/pro/3gl/CPAN/perl-git" or plan skip_all => "This is not the developer environment"; 11 | qx{git pull --all}; 12 | 13 | my @pc; 14 | if (open my $fh, "<", "perl.c") { 15 | while (<$fh>) { 16 | (/^S_Internals_V/ .. /^}/) or next; 17 | m/^\s+"\s*(\S.*)"/ and push @pc, $1; 18 | } 19 | } 20 | 21 | my @ph; 22 | if (open my $fh, "<", "perl.h") { 23 | while (<$fh>) { 24 | (/^\w.*PL_bincompat/../^\w}/) or next; 25 | m/^\s*$/ and last; 26 | m/^\s+"\s*(\S.*)"/ and push @ph, $1; 27 | } 28 | } 29 | 30 | chdir $here; 31 | open my $fh, "V.pm" or die "Cannot open V.pm: $!\n"; 32 | my (%C, %H, $v); 33 | while (<$fh>) { 34 | if (m/ qw\($/) { 35 | $v = \%C; 36 | next; 37 | } 38 | $v or next; 39 | m/^\s+\);$/ and last; 40 | if (%C && m/^\s*$/) { 41 | $v = \%H; 42 | next; 43 | } 44 | m/^\s+(\S+)/ and $v->{$1}++; 45 | } 46 | 47 | ok ($C{$_}, "perl.c - $_") for @pc; 48 | ok ($H{$_}, "perl.h - $_") for @ph; 49 | 50 | done_testing; 51 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Config::Perl::V 2 | 3 | A module that will return you the output of 'perl -V' in a structure. 4 | 5 | DESCRIPTION 6 | 7 | The command 'perl -V' will return you an excerpt from the %Config hash 8 | combined with the output of 'perl -V' that is not stored inside %Config, 9 | but only available to the perl binary itself. 10 | 11 | PREREQUISITES 12 | 13 | A working perl 14 | 15 | BUILDING AND INSTALLATION 16 | 17 | As most perl modules 18 | 19 | $ perl Makefile.PL 20 | $ make test 21 | $ make install UNINST=1 22 | 23 | SOURCE CODE 24 | 25 | Recent changes can be (re)viewed in the public GIT repository at 26 | http://repo.or.cz/w/Config-Perl-V 27 | Feel free to clone your own copy: 28 | 29 | $ git clone https://github.com/Tux/Config-Perl-V Config-Perl-V 30 | 31 | or get it as a tgz: 32 | 33 | $ wget --output-document=Config-Perl-V.tgz \ 34 | https://github.com/Tux/Config-Perl-V/archive/master.tar.gz 35 | 36 | CHANGES 37 | 38 | See Changelog 39 | 40 | COPYRIGHT AND LICENSE 41 | Copyright (C) 2009-2025 H.Merijn Brand 42 | 43 | This library is free software; you can redistribute it and/or modify 44 | it under the same terms as Perl itself. 45 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # General 2 | 3 | I am always open to improvements and suggestions. 4 | Use [issues](https://github.com/Tux/Config-Perl-V/issues) 5 | 6 | Note that as this module is a Perl5 CORE module (dual-life), more strict 7 | rules than normal might apply. 8 | 9 | # Style 10 | 11 | I will never accept pull request that do not strictly conform to my 12 | style, however you might hate it. You can read the reasoning behind 13 | my [preferences](http://tux.nl/style.html). 14 | 15 | I really do not care about mixed spaces and tabs in (leading) whitespace 16 | 17 | Perl::Tidy will help getting the code in shape, but as all software, it 18 | is not perfect. You can find my preferences for these in 19 | [.perltidy](https://github.com/Tux/Release-Checklist/blob/master/.perltidyrc) and 20 | [.perlcritic](https://github.com/Tux/Release-Checklist/blob/master/.perlcriticrc). 21 | 22 | # Mail 23 | 24 | Please, please, please, do *NOT* use HTML mail. 25 | [Plain text](https://useplaintext.email) 26 | [without](http://www.goldmark.org/jeff/stupid-disclaimers/) 27 | [disclaimers](https://www.economist.com/business/2011/04/07/spare-us-the-e-mail-yada-yada) 28 | will do fine! 29 | 30 | # Requirements 31 | 32 | The minimum version required to use this module is stated in 33 | [Makefile.PL](./Makefile.PL) 34 | -------------------------------------------------------------------------------- /Makefile.PL: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | # Copyright PROCURA B.V. (c) 2009-2025 H.Merijn Brand 4 | 5 | use strict; 6 | 7 | use ExtUtils::MakeMaker; 8 | my $eummv = $ExtUtils::MakeMaker::VERSION; 9 | 10 | my %wm = ( 11 | NAME => "Config::Perl::V", 12 | DISTNAME => "Config-Perl-V", 13 | AUTHOR => "H.Merijn Brand ", 14 | VERSION_FROM => "V.pm", 15 | ABSTRACT_FROM => "V.pm", 16 | 17 | PREREQ_PM => { "Config" => 0, }, 18 | macro => { TARFLAGS => "--format=ustar -c -v -f", }, 19 | ); 20 | $eummv >= 6.31 and $wm{LICENSE} = "perl"; 21 | my $section = $eummv >= 6.64 ? "TEST_REQUIRES" : "PREREQ_PM"; 22 | $wm{$section}{$_} = 0 for qw( Test::More Test::NoWarnings ); 23 | 24 | -d "xt" and $wm{test}{TESTS} = "t/*.t xt/*.t"; 25 | 26 | my $rv = WriteMakefile (%wm); 27 | 28 | 1; 29 | 30 | package MY; 31 | 32 | sub postamble { 33 | join "\n" => 34 | 'cover test_cover:', 35 | ' ccache -C', 36 | ' cover -test', 37 | '', 38 | 'spellcheck:', 39 | ' pod-spell-check --aspell --ispell', 40 | '', 41 | 'checkmeta: spellcheck', 42 | ' perl sandbox/genMETA.pl -c', 43 | '', 44 | 'fixmeta: distmeta', 45 | ' perl sandbox/genMETA.pl', 46 | ' ls -l */META.yml', 47 | '', 48 | 'tgzdist: doc checkmeta fixmeta $(DISTVNAME).tar.gz distcheck', 49 | ' -@mv -f $(DISTVNAME).tar.gz $(DISTVNAME).tgz', 50 | ' -@cpants_lint.pl $(DISTVNAME).tgz', 51 | ' -@rm -f Debian_CPANTS.txt', 52 | '', 53 | 'doc docs: doc/Config-Perl-V.md doc/Config-Perl-V.html doc/Config-Perl-V.man', 54 | 'doc/Config-Perl-V.md: V.pm', 55 | ' perl doc/make-doc.pl', 56 | ''; 57 | } # postamble 58 | 59 | 1; 60 | -------------------------------------------------------------------------------- /sandbox/genMETA.pl: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use Getopt::Long qw(:config bundling nopermute); 7 | GetOptions ( 8 | "c|check" => \ my $check, 9 | "u|update!" => \ my $update, 10 | "v|verbose:1" => \(my $opt_v = 0), 11 | ) or die "usage: $0 [--check]\n"; 12 | 13 | use lib "sandbox"; 14 | use genMETA; 15 | my $meta = genMETA->new ( 16 | from => "V.pm", 17 | verbose => $opt_v, 18 | ); 19 | 20 | $meta->from_data (); 21 | $meta->security_md ($update); 22 | $meta->gen_cpanfile (); 23 | 24 | if ($check) { 25 | $meta->check_encoding (); 26 | $meta->check_required (); 27 | $meta->check_minimum (); 28 | $meta->done_testing (); 29 | } 30 | elsif ($opt_v) { 31 | $meta->print_yaml (); 32 | } 33 | else { 34 | $meta->fix_meta (); 35 | } 36 | 37 | __END__ 38 | --- #YAML:1.0 39 | name: Config-Perl-V 40 | version: VERSION 41 | abstract: Structured data retrieval of perl -V output 42 | license: perl 43 | author: 44 | - H.Merijn Brand 45 | generated_by: Author 46 | distribution_type: module 47 | provides: 48 | Config::Perl::V: 49 | file: V.pm 50 | version: VERSION 51 | requires: 52 | perl: 5.006 53 | Config: 0 54 | configure_requires: 55 | ExtUtils::MakeMaker: 0 56 | configure_recommends: 57 | ExtUtils::MakeMaker: 7.22 58 | configure_suggests: 59 | ExtUtils::MakeMaker: 7.72 60 | build_requires: 61 | perl: 5.006 62 | test_requires: 63 | Test::More: 0 64 | Test::NoWarnings: 0 65 | resources: 66 | license: http://dev.perl.org/licenses/ 67 | repository: https://github.com/Tux/Config-Perl-V 68 | bugtracker: https://github.com/Tux/Config-Perl-V/issues 69 | meta-spec: 70 | version: 1.4 71 | url: http://module-build.sourceforge.net/META-spec-v1.4.html 72 | -------------------------------------------------------------------------------- /t/22_plv510.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 107; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, 0, "No build time known"); 25 | is ($conf->{config}{version}, "5.10.0", "reconstructed \%Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort keys %$opt) { 29 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 30 | } 31 | 32 | eval { require Digest::MD5; }; 33 | my $md5 = $@ ? "0" x 32 : "ce0a7871dfddbbed0a6c685c0f52dbf9"; 34 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 35 | 36 | SKIP: { 37 | ord "A" == 65 or skip "ASCII-centric test", 1; 38 | is ($sig, $md5, "MD5"); 39 | } 40 | 41 | __END__ 42 | Summary of my perl5 (revision 5 version 10 subversion 0) configuration: 43 | Platform: 44 | osname=linux, osvers=2.6.22.13-0.3-default, archname=i686-linux-64int 45 | uname='linux nb09 2.6.22.13-0.3-default #1 smp 20071119 15:02:58 utc i686 i686 i386 gnulinux ' 46 | config_args='-Duse64bitint -des' 47 | hint=recommended, useposix=true, d_sigaction=define 48 | useithreads=undef, usemultiplicity=undef 49 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 50 | use64bitint=define, use64bitall=undef, uselongdouble=undef 51 | usemymalloc=n, bincompat5005=undef 52 | Compiler: 53 | cc='cc', ccflags ='-fno-strict-aliasing -pipe -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 54 | optimize='-O2 -g', 55 | cppflags='-fno-strict-aliasing -pipe -I/pro/local/include' 56 | ccversion='', gccversion='4.2.1 (SUSE Linux)', gccosandvers='' 57 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 58 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 59 | ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 60 | alignbytes=4, prototype=define 61 | Linker and Libraries: 62 | ld='cc', ldflags ='-L/pro/local/lib' 63 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 64 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc 65 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc 66 | libc=/lib/libc-2.6.1.so, so=so, useshrplib=false, libperl=libperl.a 67 | gnulibc_version='2.6.1' 68 | Dynamic Linking: 69 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 70 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib' 71 | -------------------------------------------------------------------------------- /t/10_base.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 42; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | 17 | use_ok ("Config::Perl::V"); 18 | } 19 | 20 | ok (my $conf = Config::Perl::V::myconfig, "Read config"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | is (lc $conf->{build}{osname}, lc $conf->{config}{osname}, "osname"); 23 | 24 | # Test summary 25 | ok (my $info1 = Config::Perl::V::summary ($conf), "Get a summary for \$conf"); 26 | ok (my $info2 = Config::Perl::V::summary, "Get a summary for \$^X"); 27 | is_deeply ($info1, $info2, "Info should match"); 28 | 29 | ok (my $sig = Config::Perl::V::signature, "Get signature"); 30 | like ($sig, qr{^[0-9a-f]{32}$}, "Valid md5"); 31 | 32 | my $no_md5 = "0" x 32; 33 | ok (my $bad = Config::Perl::V::signature ({ cfg => 0 }), "Signature on invalid data"); 34 | is ($bad, $no_md5, "Invalid md5"); 35 | ok ( $bad = Config::Perl::V::signature ({ config => {} }), "Signature on incomplete data"); 36 | is ($bad, $no_md5, "Invalid md5"); 37 | ok ( $bad = Config::Perl::V::signature ({ config => 0, build => {} }), "Signature on invalid data"); 38 | is ($bad, $no_md5, "Invalid md5"); 39 | ok ( $bad = Config::Perl::V::signature ({ config => {}, build => 0 }), "Signature on invalid data"); 40 | is ($bad, $no_md5, "Invalid md5"); 41 | 42 | SKIP: { 43 | # Test that the code that shells out to perl -V and parses the output 44 | # gives the same results as the code that calls Config::* routines directly. 45 | defined &Config::compile_date or 46 | skip "This perl doesn't provide perl -V in the Config module", 2; 47 | eval q{no warnings "redefine"; sub Config::compile_date { return undef }}; 48 | is (Config::compile_date (), undef, "Successfully overriden compile_date"); 49 | is_deeply (Config::Perl::V::myconfig, $conf, 50 | "perl -V parsing code produces same result as the Config module"); 51 | } 52 | 53 | $ENV{CPV_TEST_ENV} = 42; 54 | ok ($conf = Config::Perl::V::myconfig ({ env => qr{^CPV_TEST_ENV$} }), "Read config plus ENV"); 55 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc environment ); 56 | ok (my $eh = $conf->{environment}, "Get ENV from conf"); 57 | is ($eh->{CPV_TEST_ENV}, 42, "Valid entry"); 58 | 59 | ok ($conf = Config::Perl::V::myconfig ([ env => qr{^CPV_TEST_ENV$} ]), "Read config plus ENV"); 60 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc environment ); 61 | ok ($eh = $conf->{environment}, "Get ENV from conf"); 62 | is ($eh->{CPV_TEST_ENV}, 42, "Valid entry"); 63 | 64 | ok ($conf = Config::Perl::V::myconfig ( env => qr{^CPV_TEST_ENV$} ), "Read config invalid arguments"); 65 | is ($conf->{environment}{CPV_TEST_ENV}, undef, "No entry"); 66 | 67 | delete $INC{"Digest/MD5.pm"}; 68 | delete $INC{"Digest/base.pm"}; 69 | $INC{"Digest/MD5"} = "./flooble/blurgh/Digest/MD5.pm"; 70 | local @INC = ("xyzzy$$"); # Should be unable to find Digest::MD5 71 | ok ($sig = Config::Perl::V::signature, "Get signature (No Digest::MD5)"); 72 | is ($sig, $no_md5, "Valid md5"); 73 | -------------------------------------------------------------------------------- /t/20_plv56.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 108; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Mar 23 2010 17:34:56", "Build time"); 25 | is ($conf->{config}{"package"}, "perl5", "reconstructed \%Config{package}"); 26 | is ($conf->{config}{version}, "5.6.2", "reconstructed \%Config{version}"); 27 | 28 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 29 | foreach my $o (sort qw( 30 | DEBUGGING USE_64_BIT_INT USE_LARGE_FILES 31 | )) { 32 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 33 | delete $opt->{$o}; 34 | } 35 | foreach my $o (sort keys %$opt) { 36 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 37 | } 38 | 39 | eval { require Digest::MD5; }; 40 | my $md5 = $@ ? "0" x 32 : "9dc187182be100c1713f210a8c6d9f45"; 41 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 42 | 43 | SKIP: { 44 | ord "A" == 65 or skip "ASCII-centric test", 1; 45 | is ($sig, $md5, "MD5"); 46 | } 47 | 48 | __END__ 49 | Summary of my perl5 (revision 5.0 version 6 subversion 2) configuration: 50 | Platform: 51 | osname=linux, osvers=2.6.31.12-0.2-default, archname=i686-linux-64int-perlio 52 | uname='linux nb09 2.6.31.12-0.2-default #1 smp 2010-03-16 21:25:39 +0100 i686 i686 i386 gnulinux ' 53 | config_args='-Dusedevel -Duse64bitint -Duseperlio -des -Dusedevel -Uinstallusrbinperl -Dprefix=/media/Tux/perls' 54 | hint=recommended, useposix=true, d_sigaction=define 55 | usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef 56 | useperlio=define d_sfio=undef uselargefiles=define usesocks=undef 57 | use64bitint=define use64bitall=undef uselongdouble=undef 58 | Compiler: 59 | cc='cc', ccflags ='-DDEBUGGING -fno-strict-aliasing -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 60 | optimize='-O2', 61 | cppflags='-DDEBUGGING -fno-strict-aliasing -I/pro/local/include' 62 | ccversion='', gccversion='4.4.1 [gcc-4_4-branch revision 150839]', gccosandvers='' 63 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 64 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 65 | ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 66 | alignbytes=4, usemymalloc=n, prototype=define 67 | Linker and Libraries: 68 | ld='cc', ldflags ='-L/pro/local/lib' 69 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 70 | libs=-lnsl -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil 71 | perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil 72 | libc=/lib/libc-2.10.1.so, so=so, useshrplib=false, libperl=libperl.a 73 | Dynamic Linking: 74 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' 75 | cccdlflags='-fpic', lddlflags='-shared -L/pro/local/lib' 76 | 77 | 78 | Characteristics of this binary (from libperl): 79 | Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES 80 | Built under linux 81 | Compiled at Mar 23 2010 17:34:56 82 | @INC: 83 | /media/Tux/perls/lib/5.6.2/i686-linux-64int-perlio 84 | /media/Tux/perls/lib/5.6.2 85 | /media/Tux/perls/lib/site_perl/5.6.2/i686-linux-64int-perlio 86 | /media/Tux/perls/lib/site_perl/5.6.2 87 | /media/Tux/perls/lib/site_perl 88 | . 89 | -------------------------------------------------------------------------------- /t/23_plv512.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 109; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Dec 20 2010 12:46:00", "Build time"); 25 | is ($conf->{config}{version}, "5.12.2", "reconstructed \%Config{version}"); 26 | is ($conf->{config}{gccversion}, "", "not built with gcc"); 27 | is ($conf->{config}{ccversion}, "B3910B", "built with HP C-ANSI-C"); 28 | 29 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 30 | foreach my $o (sort qw( 31 | PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL 32 | USE_64_BIT_INT USE_LARGE_FILES USE_LONG_DOUBLE 33 | USE_PERLIO USE_PERL_ATOF 34 | )) { 35 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 36 | delete $opt->{$o}; 37 | } 38 | foreach my $o (sort keys %$opt) { 39 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 40 | } 41 | 42 | eval { require Digest::MD5; }; 43 | my $md5 = $@ ? "0" x 32 : "a2c38153cc47d340bc140d0bfe294afb"; 44 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 45 | 46 | SKIP: { 47 | ord "A" == 65 or skip "ASCII-centric test", 1; 48 | is ($sig, $md5, "MD5"); 49 | } 50 | 51 | __END__ 52 | Summary of my perl5 (revision 5 version 12 subversion 2) configuration: 53 | 54 | Platform: 55 | osname=hpux, osvers=11.31, archname=IA64.ARCHREV_0-LP64-ld 56 | uname='hp-ux x2 b.11.31 u ia64 2977233888 unlimited-user license ' 57 | config_args='-Duse64bitall -Duselongdouble -des' 58 | hint=recommended, useposix=true, d_sigaction=define 59 | useithreads=undef, usemultiplicity=undef 60 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 61 | use64bitint=define, use64bitall=define, uselongdouble=define 62 | usemymalloc=n, bincompat5005=undef 63 | Compiler: 64 | cc='cc', ccflags =' -Ae -DPERL_DONT_CREATE_GVSV +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ', 65 | optimize='+O2 +Onolimit', 66 | cppflags='-Aa -D__STDC_EXT__ -DPERL_DONT_CREATE_GVSV +Z -z -D_HPUX_SOURCE -Ae -DPERL_DONT_CREATE_GVSV +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/pro/local/include' 67 | ccversion='B3910B', gccversion='', gccosandvers='' 68 | intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321 69 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 70 | ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8 71 | alignbytes=16, prototype=define 72 | Linker and Libraries: 73 | ld='/usr/bin/ld', ldflags ='-L/pro/local/lib +DD64 -L/usr/lib/hpux64' 74 | libpth=/pro/local/lib /usr/lib/hpux64 /lib /usr/lib /usr/ccs/lib /usr/local/lib 75 | libs=-lcl -lpthread -lnsl -lnm -ldb -ldl -ldld -lm -lsec -lc 76 | perllibs=-lcl -lpthread -lnsl -lnm -ldl -ldld -lm -lsec -lc 77 | libc=/usr/lib/hpux64/libc.so, so=so, useshrplib=false, libperl=libperl.a 78 | gnulibc_version='' 79 | Dynamic Linking: 80 | dlsrc=dl_hpux.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-B,deferred ' 81 | cccdlflags='+Z', lddlflags='-b +vnocompatwarnings -L/pro/local/lib -L/usr/lib/hpux64' 82 | 83 | 84 | Characteristics of this binary (from libperl): 85 | Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL 86 | USE_64_BIT_INT USE_LARGE_FILES USE_LONG_DOUBLE 87 | USE_PERLIO USE_PERL_ATOF 88 | Built under hpux 89 | Compiled at Dec 20 2010 12:46:00 90 | @INC: 91 | /pro/lib/perl5/site_perl/5.12.2/IA64.ARCHREV_0-LP64-ld 92 | /pro/lib/perl5/site_perl/5.12.2 93 | /pro/lib/perl5/5.12.2/IA64.ARCHREV_0-LP64-ld 94 | /pro/lib/perl5/5.12.2 95 | . 96 | -------------------------------------------------------------------------------- /t/24_plv514.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 109; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "May 11 2012 16:36:53", "Build time"); 25 | is ($conf->{config}{version}, "5.14.2", "reconstructed \%Config{version}"); 26 | is ($conf->{config}{gccversion}, "", "not built with gcc"); 27 | is ($conf->{config}{ccversion}, "11.1.0.8", "xlc version"); 28 | 29 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 30 | foreach my $o (sort qw( 31 | DEBUGGING PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP 32 | PERL_PRESERVE_IVUV PERL_USE_DEVEL USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO 34 | USE_PERL_ATOF 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "778815a670c0c454738aedf0c88930ba"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | __END__ 53 | Summary of my perl5 (revision 5 version 14 subversion 2) configuration: 54 | 55 | Platform: 56 | osname=aix, osvers=5.3.0.0, archname=aix-64all 57 | uname='aix i3 3 5 0004898ad300 ' 58 | config_args='-Dusedevel -Duse64bitall -Uversiononly -Dinc_version_list=none -des' 59 | hint=recommended, useposix=true, d_sigaction=define 60 | useithreads=undef, usemultiplicity=undef 61 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 62 | use64bitint=define, use64bitall=define, uselongdouble=undef 63 | usemymalloc=n, bincompat5005=undef 64 | Compiler: 65 | cc='xlc -q64', ccflags ='-q64 -DDEBUGGING -qlanglvl=extended -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -qlanglvl=extended -I/pro/local/include -q64 -DUSE_64_BIT_ALL -q64', 66 | optimize='-O', 67 | cppflags='-DDEBUGGING -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -I/pro/local/include' 68 | ccversion='11.1.0.8', gccversion='', gccosandvers='' 69 | intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321 70 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 71 | ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 72 | alignbytes=8, prototype=define 73 | Linker and Libraries: 74 | ld='ld', ldflags ='-L/usr/local/ppc64/lib64 -b64 -q64 -L/pro/local/lib -brtl -bdynamic -b64' 75 | libpth=/usr/local/ppc64/lib64 /lib /usr/lib /usr/ccs/lib /usr/local/lib /usr/lib64 76 | libs=-lbind -lnsl -ldbm -ldb -ldl -lld -lm -lcrypt -lc 77 | perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lc 78 | libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a 79 | gnulibc_version='' 80 | Dynamic Linking: 81 | dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -bE:/pro/lib/perl5/5.14.2/aix-64all/CORE/perl.exp' 82 | cccdlflags=' ', lddlflags='-b64 -bhalt:4 -G -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lc -lm -L/usr/local/ppc64/lib64 -L/pro/local/lib' 83 | 84 | 85 | Characteristics of this binary (from libperl): 86 | Compile-time options: DEBUGGING PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP 87 | PERL_PRESERVE_IVUV PERL_USE_DEVEL USE_64_BIT_ALL 88 | USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO 89 | USE_PERL_ATOF 90 | Built under aix 91 | Compiled at May 11 2012 16:36:53 92 | @INC: 93 | /pro/lib/perl5/site_perl/5.14.2/aix-64all 94 | /pro/lib/perl5/site_perl/5.14.2 95 | /pro/lib/perl5/5.14.2/aix-64all 96 | /pro/lib/perl5/5.14.2 97 | . 98 | -------------------------------------------------------------------------------- /t/25_plv516.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 108; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Mar 12 2013 08:36:17", "Build time"); 25 | is ($conf->{config}{version}, "5.16.3", "reconstructed \%Config{version}"); 26 | is ($conf->{config}{ccversion}, "", "Using gcc. non-gcc version should not be defined"); 27 | 28 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 29 | foreach my $o (sort qw( 30 | HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 31 | PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_INT 32 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 33 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO 34 | USE_PERL_ATOF 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "7b00cf3b306d96fa802892e6ad4b070f"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | __END__ 53 | Summary of my perl5 (revision 5 version 16 subversion 3) configuration: 54 | 55 | Platform: 56 | osname=linux, osvers=3.4.33-2.24-desktop, archname=i686-linux-64int 57 | uname='linux lx09 3.4.33-2.24-desktop #1 smp preempt tue feb 26 03:34:33 utc 2013 (5f00a32) i686 i686 i386 gnulinux ' 58 | config_args='-Duse64bitint -Duselongdouble -des' 59 | hint=previous, useposix=true, d_sigaction=define 60 | useithreads=undef, usemultiplicity=undef 61 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 62 | use64bitint=define, use64bitall=undef, uselongdouble=undef 63 | usemymalloc=n, bincompat5005=undef 64 | Compiler: 65 | cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 66 | optimize='-O2', 67 | cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' 68 | ccversion='', gccversion='4.7.1 20120723 [gcc-4_7-branch revision 189773]', gccosandvers='' 69 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 70 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 71 | ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 72 | alignbytes=4, prototype=define 73 | Linker and Libraries: 74 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 75 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 76 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 77 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc 78 | libc=/lib/libc-2.15.so, so=so, useshrplib=false, libperl=libperl.a 79 | gnulibc_version='2.15' 80 | Dynamic Linking: 81 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 82 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 83 | 84 | 85 | Characteristics of this binary (from libperl): 86 | Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 87 | PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_INT 88 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 89 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO 90 | USE_PERL_ATOF 91 | Built under linux 92 | Compiled at Mar 12 2013 08:36:17 93 | @INC: 94 | /pro/lib/perl5/site_perl/5.16.3/i686-linux-64int 95 | /pro/lib/perl5/site_perl/5.16.3 96 | /pro/lib/perl5/5.16.3/i686-linux-64int 97 | /pro/lib/perl5/5.16.3 98 | . 99 | -------------------------------------------------------------------------------- /t/21_plv58.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 108; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Oct 21 2010 14:50:53", "Build time"); 25 | is ($conf->{config}{version}, "5.8.9", "reconstructed \%Config{version}"); 26 | is ($conf->{config}{usethreads}, "define", "This was a threaded perl"); 27 | 28 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 29 | foreach my $o (sort qw( 30 | DEBUGGING MULTIPLICITY PERL_IMPLICIT_CONTEXT 31 | PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_64_BIT_INT 32 | USE_FAST_STDIO USE_ITHREADS USE_LARGE_FILES 33 | USE_LONG_DOUBLE USE_PERLIO USE_REENTRANT_API 34 | )) { 35 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 36 | delete $opt->{$o}; 37 | } 38 | foreach my $o (sort keys %$opt) { 39 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 40 | } 41 | 42 | eval { require Digest::MD5; }; 43 | my $md5 = $@ ? "0" x 32 : "df48dce1adaaf63855d8acd455c51818"; 44 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 45 | 46 | SKIP: { 47 | ord "A" == 65 or skip "ASCII-centric test", 1; 48 | is ($sig, $md5, "MD5"); 49 | } 50 | 51 | __END__ 52 | Summary of my perl5 (revision 5 version 8 subversion 9) configuration: 53 | Platform: 54 | osname=linux, osvers=2.6.34.7-0.4-desktop, archname=i686-linux-thread-multi-64int-ld 55 | uname='linux tux09.procura.nl 2.6.34.7-0.4-desktop #1 smp preempt 2010-10-07 19:07:51 +0200 i686 i686 i386 gnulinux ' 56 | config_args='-Dusedevel -Dusethreads -Duseithreads -Duse64bitint -Duselongdouble -Duseperlio -des -Dusedevel -Uinstallusrbinperl -Dprefix=/media/Tux/perls-t' 57 | hint=recommended, useposix=true, d_sigaction=define 58 | usethreads=define use5005threads=undef useithreads=define usemultiplicity=define 59 | useperlio=define d_sfio=undef uselargefiles=define usesocks=undef 60 | use64bitint=define use64bitall=undef uselongdouble=define 61 | usemymalloc=n, bincompat5005=undef 62 | Compiler: 63 | cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 64 | optimize='-O2', 65 | cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -I/pro/local/include' 66 | ccversion='', gccversion='4.5.0 20100604 [gcc-4_5-branch revision 160292]', gccosandvers='' 67 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 68 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 69 | ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 70 | alignbytes=4, prototype=define 71 | Linker and Libraries: 72 | ld='cc', ldflags ='-L/pro/local/lib' 73 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 74 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc 75 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc 76 | libc=/lib/libc-2.11.2.so, so=so, useshrplib=false, libperl=libperl.a 77 | gnulibc_version='2.11.2' 78 | Dynamic Linking: 79 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 80 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib' 81 | 82 | 83 | Characteristics of this binary (from libperl): 84 | Compile-time options: DEBUGGING MULTIPLICITY PERL_IMPLICIT_CONTEXT 85 | PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_64_BIT_INT 86 | USE_FAST_STDIO USE_ITHREADS USE_LARGE_FILES 87 | USE_LONG_DOUBLE USE_PERLIO USE_REENTRANT_API 88 | Built under linux 89 | Compiled at Oct 21 2010 14:50:53 90 | @INC: 91 | /media/Tux/perls-t/lib/5.8.9/i686-linux-thread-multi-64int-ld 92 | /media/Tux/perls-t/lib/5.8.9 93 | /media/Tux/perls-t/lib/site_perl/5.8.9/i686-linux-thread-multi-64int-ld 94 | /media/Tux/perls-t/lib/site_perl/5.8.9 95 | . 96 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy for the Config::Perl::V distribution. 2 | 3 | Report issues via email at: H.Merijn Brand . 4 | 5 | 6 | This is the Security Policy for Config::Perl::V. 7 | 8 | The latest version of the Security Policy can be found in the 9 | [git repository for Config::Perl::V](https://github.com/Tux/Config-Perl-V). 10 | 11 | This text is based on the CPAN Security Group's Guidelines for Adding 12 | a Security Policy to Perl Distributions (version 1.0.0) 13 | https://security.metacpan.org/docs/guides/security-policy-for-authors.html 14 | 15 | # How to Report a Security Vulnerability 16 | 17 | Security vulnerabilities can be reported by e-mail to the current 18 | project maintainers at H.Merijn Brand . 19 | 20 | Please include as many details as possible, including code samples 21 | or test cases, so that we can reproduce the issue. Check that your 22 | report does not expose any sensitive data, such as passwords, 23 | tokens, or personal information. 24 | 25 | If you would like any help with triaging the issue, or if the issue 26 | is being actively exploited, please copy the report to the CPAN 27 | Security Group (CPANSec) at . 28 | 29 | Please *do not* use the public issue reporting system on RT or 30 | GitHub issues for reporting security vulnerabilities. 31 | 32 | Please do not disclose the security vulnerability in public forums 33 | until past any proposed date for public disclosure, or it has been 34 | made public by the maintainers or CPANSec. That includes patches or 35 | pull requests. 36 | 37 | For more information, see 38 | [Report a Security Issue](https://security.metacpan.org/docs/report.html) 39 | on the CPANSec website. 40 | 41 | ## Response to Reports 42 | 43 | The maintainer(s) aim to acknowledge your security report as soon as 44 | possible. However, this project is maintained by a single person in 45 | their spare time, and they cannot guarantee a rapid response. If you 46 | have not received a response from them within 10 days, then 47 | please send a reminder to them and copy the report to CPANSec at 48 | . 49 | 50 | Please note that the initial response to your report will be an 51 | acknowledgement, with a possible query for more information. It 52 | will not necessarily include any fixes for the issue. 53 | 54 | The project maintainer(s) may forward this issue to the security 55 | contacts for other projects where we believe it is relevant. This 56 | may include embedded libraries, system libraries, prerequisite 57 | modules or downstream software that uses this software. 58 | 59 | They may also forward this issue to CPANSec. 60 | 61 | # Which Software This Policy Applies To 62 | 63 | Any security vulnerabilities in Config::Perl::V are covered by this policy. 64 | 65 | Security vulnerabilities are considered anything that allows users 66 | to execute unauthorised code, access unauthorised resources, or to 67 | have an adverse impact on accessibility or performance of a system. 68 | 69 | Security vulnerabilities in upstream software (embedded libraries, 70 | prerequisite modules or system libraries, or in Perl), are not 71 | covered by this policy unless they affect Config::Perl::V, or Config::Perl::V can 72 | be used to exploit vulnerabilities in them. 73 | 74 | Security vulnerabilities in downstream software (any software that 75 | uses Config::Perl::V, or plugins to it that are not included with the 76 | Config::Perl::V distribution) are not covered by this policy. 77 | 78 | ## Supported Versions of Config::Perl::V 79 | 80 | The maintainer(s) will only commit to releasing security fixes for 81 | the latest version of Config::Perl::V. 82 | 83 | Note that the Config::Perl::V project only supports major versions of Perl 84 | released in the past 5 years, even though Config::Perl::V will run on 85 | older versions of Perl. If a security fix requires us to increase 86 | the minimum version of Perl that is supported, then we may do so. 87 | 88 | # Installation and Usage Issues 89 | 90 | The distribution metadata specifies minimum versions of 91 | prerequisites that are required for Config::Perl::V to work. However, some 92 | of these prerequisites may have security vulnerabilities, and you 93 | should ensure that you are using up-to-date versions of these 94 | prerequisites. 95 | 96 | Where security vulnerabilities are known, the metadata may indicate 97 | newer versions as recommended. 98 | 99 | ## Usage 100 | 101 | Please see the software documentation for further information. 102 | -------------------------------------------------------------------------------- /Policy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | 3 | # put this file in the perl source tree and run 'Configure -ds' 4 | 5 | man1dir=/pro/local/man/man1 6 | man3dir=/pro/local/man/man3 7 | 8 | case "$versiononly" in 9 | '') versiononly=$undef ;; 10 | esac 11 | case "$cc" in 12 | clang*) ;; 13 | '') cc="ccache cc" ;; 14 | *) cc="ccache $cc" ;; 15 | esac 16 | case "$cc" in 17 | *g++*|*gcc*) case "$cc" in 18 | *64*) prefix=/opt/perl64 ;; 19 | *) prefix=/opt/perl ;; 20 | esac 21 | man1dir=$prefix"/man/man1" 22 | man3dir=$prefix"/man/man3" 23 | perladmin='root@localhost' 24 | cf_email='root@localhost' 25 | versiononly=$undef 26 | ;; 27 | *) prefix=/pro 28 | cc=cc 29 | if [ -x /pro/bin/perl ]; then 30 | if [ `/pro/bin/perl -e '$v="5";while(<>){m/#define\s+PERL_(?:SUB)?VERSION\s+(\d+)/ and$v.=".$1"}$v=~s/\.(.)\./.00\1/;print STDERR "$v <=> $]\n";$]<$v?1:0' $src/patchlevel.h` ]; then 31 | versiononly=$define 32 | installusrbinperl='undef' 33 | fi 34 | fi 35 | perladmin='h.m.brand@procura.nl' 36 | cf_email='h.m.brand@procura.nl' 37 | ;; 38 | esac 39 | perladmin='hmbrand@cpan.org' 40 | cf_email='hmbrand@cpan.org' 41 | 42 | [ "X$OSTYPE" = "X" ] && OSTYPE="$osname" 43 | echo "===== PROCURA Policy for $OSTYPE/$cc ========================">&2 44 | 45 | ccflags='-fPIC ' 46 | #ccflags='' 47 | #ccflags='' 48 | #ccflags='--coverage -fprofile-arcs -ftest-coverage' 49 | 50 | extras='none' 51 | inc_version_list='none' 52 | 53 | libsdirs=' /lib /pro/local/lib' 54 | libdirs=' /lib /pro/local/lib' 55 | ldflags='-L/pro/local/lib' 56 | #ldflags='-L/pro/local/lib --coverage -lgcov -fprofile-arcs' 57 | 58 | locincpth='/pro/local/include' 59 | loclibpth='/pro/local/lib' 60 | 61 | #awk='gawk' 62 | #_awk='/pro/local/bin/gawk' 63 | #full_awk='/pro/local/bin/gawk' 64 | csh='tcsh' 65 | #_csh='/pro/bin/tcsh' 66 | #full_csh='/pro/bin/tcsh' 67 | 68 | case "$cc" in 69 | clang*) 70 | ccflags="$ccflags -fsanitize=address" 71 | ldflags="$ccflags -fsanitize=address" 72 | lddlflags="$ccflags -shared -fsanitize=address" 73 | ;; 74 | esac 75 | 76 | case "$OSTYPE" in 77 | aix) 78 | case "$cc" in 79 | *gcc*) if [ `uname -r` = 2 ]; then 80 | : AIX 4.2 does not support these options 81 | else 82 | if [ "X$use64bitall" = "X" ]; then 83 | ccflags="-maix32 $ccflags" 84 | else 85 | ccflags="-maix64 $ccflags" 86 | fi 87 | fi 88 | ;; 89 | *) if [ "$useithreads" = "define" ]; then 90 | cc=xlc_r 91 | else 92 | cc=xlc 93 | fi 94 | #optimize='-O2' 95 | ;; 96 | esac 97 | ;; 98 | 99 | hpux) 100 | case "$cc" in 101 | *gcc*) if [ "X$use64bitint" = "X" -a "X$use64bitall" = "X" ]; then 102 | true 103 | else 104 | cc=gcc64 105 | ldflags='' 106 | fi 107 | case `uname -r` in 108 | B.10.20) ccflags="-mpa-risc-1-1 $ccflags" ;; 109 | *) ccflags="-mpa-risc-2-0 $ccflags" ;; 110 | esac 111 | echo " Using" `which $cc` >&4 112 | echo 'int main(){long l;printf("%d\\n",sizeof(l));}'>try.c 113 | $cc -o try $ccflags $ldflags try.c 114 | if [ "`try`" = "8" ]; then 115 | echo "Your C compiler ($cc) is 64 bit native!" >&4 116 | PATH=/usr/local/pa20_64/bin:$PATH 117 | locincpth=' /usr/local/pa20_64/include' 118 | libsdirs=' /usr/local/pa20_64/lib /usr/lib/pa20_64' 119 | libdirs=' /usr/local/pa20_64/lib /usr/lib/pa20_64' 120 | loclibpth='/usr/local/pa20_64/lib' 121 | ldflags='' 122 | fi 123 | rm -f try try.c 124 | ;; 125 | *) case `uname -r` in 126 | B.10.20) ccflags="$ccflags +DAportable" ;; 127 | esac 128 | # -fast = +O3 +Onolooptransform +Olibcalls +FPD +Oentrysched +Ofastaccess' 129 | # optimize='+O2 +Onolooptransform +Olibcalls +FPD +Onolimit' 130 | 131 | # For Oracle, will fail without perlio in threads 132 | # 5.8.0 and up have useperlio in default 133 | ;; 134 | esac 135 | # For Oracle 136 | libswanted="cl pthread $libswanted" 137 | ;; 138 | 139 | osf1) 140 | ccflags="$ccflags -std -D_INTRINSICS -D_INLINE_INTRINSICS" 141 | optimize='-O2' 142 | useshrplib='false' 143 | ;; 144 | 145 | linux) 146 | awk='awk' 147 | _awk='/usr/bin/awk' 148 | full_awk='/usr/bin/awk' 149 | csh='tcsh' 150 | _csh='/usr/bin/tcsh' 151 | full_csh='/usr/bin/tcsh' 152 | ;; 153 | 154 | cygwin) 155 | optimize=' ' 156 | ccflags='-O' 157 | 158 | awk='awk' 159 | _awk='/usr/bin/awk' 160 | full_awk='/usr/bin/awk' 161 | csh='tcsh' 162 | _csh='/usr/bin/tcsh' 163 | full_csh='/usr/bin/tcsh' 164 | ;; 165 | 166 | esac 167 | -------------------------------------------------------------------------------- /t/26_plv5182.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 127; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jan 9 2014 09:22:04", "Build time"); 25 | is ($conf->{config}{version}, "5.18.2", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 30 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP 31 | PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_INT 32 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 33 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 34 | USE_PERLIO USE_PERL_ATOF 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "874325856acfea3dab7e7c944660f398"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 53 | 54 | my %check = ( 55 | alignbytes => 4, 56 | api_version => 18, 57 | bincompat5005 => "undef", 58 | byteorder => 12345678, 59 | cc => "cc", 60 | cccdlflags => "-fPIC", 61 | ccdlflags => "-Wl,-E", 62 | config_args => "-Duse64bitint -Duselongdouble -des", 63 | gccversion => "4.8.1 20130909 [gcc-4_8-branch revision 202388]", 64 | gnulibc_version => "2.18", 65 | ivsize => 8, 66 | ivtype => "long long", 67 | ld => "cc", 68 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector", 69 | ldflags => "-L/pro/local/lib -fstack-protector", 70 | libc => "/lib/libc-2.18.so", 71 | lseektype => "off_t", 72 | osvers => "3.11.6-4-desktop", 73 | use64bitint => "define", 74 | ); 75 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 76 | 77 | __END__ 78 | Summary of my perl5 (revision 5 version 18 subversion 2) configuration: 79 | 80 | Platform: 81 | osname=linux, osvers=3.11.6-4-desktop, archname=i686-linux-64int-ld 82 | uname='linux lx09 3.11.6-4-desktop #1 smp preempt wed oct 30 18:04:56 utc 2013 (e6d4a27) i686 i686 i386 gnulinux ' 83 | config_args='-Duse64bitint -Duselongdouble -des' 84 | hint=recommended, useposix=true, d_sigaction=define 85 | useithreads=undef, usemultiplicity=undef 86 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 87 | use64bitint=define, use64bitall=undef, uselongdouble=define 88 | usemymalloc=n, bincompat5005=undef 89 | Compiler: 90 | cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 91 | optimize='-O2', 92 | cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include' 93 | ccversion='', gccversion='4.8.1 20130909 [gcc-4_8-branch revision 202388]', gccosandvers='' 94 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 95 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 96 | ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 97 | alignbytes=4, prototype=define 98 | Linker and Libraries: 99 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 100 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 101 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 102 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc 103 | libc=/lib/libc-2.18.so, so=so, useshrplib=false, libperl=libperl.a 104 | gnulibc_version='2.18' 105 | Dynamic Linking: 106 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 107 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 108 | 109 | 110 | Characteristics of this binary (from libperl): 111 | Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 112 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP 113 | PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_INT 114 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 115 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 116 | USE_PERLIO USE_PERL_ATOF 117 | Built under linux 118 | Compiled at Jan 9 2014 09:22:04 119 | @INC: 120 | /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld 121 | /pro/lib/perl5/site_perl/5.18.2 122 | /pro/lib/perl5/5.18.2/i686-linux-64int-ld 123 | /pro/lib/perl5/5.18.2 124 | . 125 | -------------------------------------------------------------------------------- /t/26_plv518.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 127; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "May 18 2013 17:34:20", "Build time"); 25 | is ($conf->{config}{version}, "5.18.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 30 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP 31 | PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_INT 32 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 33 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 34 | USE_PERLIO USE_PERL_ATOF 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "8f46b07a7775e6a92347d4cd564b8f03"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 53 | 54 | my %check = ( 55 | alignbytes => 4, 56 | api_version => 18, 57 | bincompat5005 => "undef", 58 | byteorder => 12345678, 59 | cc => "cc", 60 | cccdlflags => "-fPIC", 61 | ccdlflags => "-Wl,-E", 62 | config_args => "-Duse64bitint -Duselongdouble -des", 63 | gccversion => "4.7.2 20130108 [gcc-4_7-branch revision 195012]", 64 | gnulibc_version => "2.17", 65 | ivsize => 8, 66 | ivtype => "long long", 67 | ld => "cc", 68 | lddlflags => "-shared -O3 -L/pro/local/lib -fstack-protector", 69 | ldflags => "-L/pro/local/lib -fstack-protector", 70 | libc => "/lib/libc-2.17.so", 71 | lseektype => "off_t", 72 | osvers => "3.7.10-1.4-desktop", 73 | use64bitint => "define", 74 | ); 75 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 76 | 77 | __END__ 78 | Summary of my perl5 (revision 5 version 18 subversion 0) configuration: 79 | 80 | Platform: 81 | osname=linux, osvers=3.7.10-1.4-desktop, archname=i686-linux-64int-ld 82 | uname='linux test 3.7.10-1.4-desktop #1 smp preempt fri apr 19 12:06:34 utc 2013 (8ef74f8) i686 i686 i386 gnulinux ' 83 | config_args='-Duse64bitint -Duselongdouble -des' 84 | hint=recommended, useposix=true, d_sigaction=define 85 | useithreads=undef, usemultiplicity=undef 86 | useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 87 | use64bitint=define, use64bitall=undef, uselongdouble=define 88 | usemymalloc=n, bincompat5005=undef 89 | Compiler: 90 | cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 91 | optimize='-O3', 92 | cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include' 93 | ccversion='', gccversion='4.7.2 20130108 [gcc-4_7-branch revision 195012]', gccosandvers='' 94 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 95 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 96 | ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 97 | alignbytes=4, prototype=define 98 | Linker and Libraries: 99 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 100 | libpth=/pro/local/lib /lib /usr/lib /usr/local/lib 101 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 102 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc 103 | libc=/lib/libc-2.17.so, so=so, useshrplib=false, libperl=libperl.a 104 | gnulibc_version='2.17' 105 | Dynamic Linking: 106 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 107 | cccdlflags='-fPIC', lddlflags='-shared -O3 -L/pro/local/lib -fstack-protector' 108 | 109 | 110 | Characteristics of this binary (from libperl): 111 | Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV 112 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP 113 | PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_INT 114 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 115 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 116 | USE_PERLIO USE_PERL_ATOF 117 | Built under linux 118 | Compiled at May 18 2013 17:34:20 119 | @INC: 120 | /pro/lib/perl5/site_perl/5.18.0/i686-linux-64int-ld 121 | /pro/lib/perl5/site_perl/5.18.0 122 | /pro/lib/perl5/5.18.0/i686-linux-64int-ld 123 | /pro/lib/perl5/5.18.0 124 | . 125 | -------------------------------------------------------------------------------- /t/28_plv52201w.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 128; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 2 2015 00:03:35", "Build time"); 25 | is ($conf->{config}{version}, "5.22.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY PERLIO_LAYERS 30 | PERL_DONT_CREATE_GVSV 31 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 32 | PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP 33 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 34 | USE_64_BIT_INT USE_ITHREADS 35 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 36 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 37 | USE_PERLIO USE_PERL_ATOF 38 | )) { 39 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 40 | delete $opt->{$o}; 41 | } 42 | foreach my $o (sort keys %$opt) { 43 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 44 | } 45 | 46 | eval { require Digest::MD5; }; 47 | my $md5 = $@ ? "0" x 32 : "dfb32b8299b66e8bdb2712934f700d94"; 48 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 49 | 50 | SKIP: { 51 | ord "A" == 65 or skip "ASCII-centric test", 1; 52 | is ($sig, $md5, "MD5"); 53 | } 54 | 55 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 56 | 57 | my %check = ( 58 | alignbytes => 8, 59 | api_version => 22, 60 | bincompat5005 => "undef", 61 | byteorder => 12345678, 62 | cc => "gcc", 63 | cccdlflags => "", 64 | ccdlflags => "", 65 | config_args => "undef", 66 | gccversion => "4.9.2", 67 | gnulibc_version => "", 68 | ivsize => 8, 69 | ivtype => "long long", 70 | ld => "g++", 71 | lddlflags => q{-mdll -s -L"D:\Strawberry\perl\lib\CORE" -L"D:\Strawberry\c\lib"}, 72 | ldflags => q{-s -L"D:\Strawberry\perl\lib\CORE" -L"D:\Strawberry\c\lib"}, 73 | libc => "", 74 | lseektype => "long long", 75 | osvers => "6.3", 76 | use64bitall => "undef", 77 | use64bitint => "define", 78 | ); 79 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 22 subversion 0) configuration: 83 | 84 | Platform: 85 | osname=MSWin32, osvers=6.3, archname=MSWin32-x64-multi-thread 86 | uname='Win32 strawberry-perl 5.22.0.1 #1 Mon Jun 1 23:58:39 2015 x64' 87 | config_args='undef' 88 | hint=recommended, useposix=true, d_sigaction=undef 89 | useithreads=define, usemultiplicity=define 90 | use64bitint=define, use64bitall=undef, uselongdouble=undef 91 | usemymalloc=n, bincompat5005=undef 92 | Compiler: 93 | cc='gcc', ccflags =' -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv -fno-strict-aliasing -mms-bitfields', 94 | optimize='-s -O2', 95 | cppflags='-DWIN32' 96 | ccversion='', gccversion='4.9.2', gccosandvers='' 97 | intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3 98 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8, longdblkind=3 99 | ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='long long', lseeksize=8 100 | alignbytes=8, prototype=define 101 | Linker and Libraries: 102 | ld='g++', ldflags ='-s -L"D:\Strawberry\perl\lib\CORE" -L"D:\Strawberry\c\lib"' 103 | libpth=D:\Strawberry\c\lib D:\Strawberry\c\x86_64-w64-mingw32\lib D:\Strawberry\c\lib\gcc\x86_64-w64-mingw32\4.9.2 104 | libs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 105 | -lcomctl32 106 | perllibs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbc 107 | cp32 -lcomctl32 108 | libc=, so=dll, useshrplib=true, libperl=libperl522.a 109 | gnulibc_version='' 110 | Dynamic Linking: 111 | dlsrc=dl_win32.xs, dlext=xs.dll, d_dlsymun=undef, ccdlflags=' ' 112 | cccdlflags=' ', lddlflags='-mdll -s -L"D:\Strawberry\perl\lib\CORE" -L"D:\Strawberry\c\lib"' 113 | 114 | 115 | Characteristics of this binary (from libperl): 116 | Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY 117 | PERLIO_LAYERS PERL_DONT_CREATE_GVSV 118 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 119 | PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS 120 | PERL_MALLOC_WRAP PERL_NEW_COPY_ON_WRITE 121 | PERL_PRESERVE_IVUV USE_64_BIT_INT USE_ITHREADS 122 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 123 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 124 | USE_PERLIO USE_PERL_ATOF 125 | Built under MSWin32 126 | Compiled at Jun 2 2015 00:03:35 127 | @INC: 128 | D:/Strawberry/perl/site/lib 129 | D:/Strawberry/perl/vendor/lib 130 | D:/Strawberry/perl/lib 131 | . 132 | -------------------------------------------------------------------------------- /doc/Config-Perl-V.md: -------------------------------------------------------------------------------- 1 | # NAME 2 | 3 | Config::Perl::V - Structured data retrieval of perl -V output 4 | 5 | # SYNOPSIS 6 | 7 | use Config::Perl::V; 8 | 9 | my $local_config = Config::Perl::V::myconfig (); 10 | print $local_config->{config}{osname}; 11 | 12 | # DESCRIPTION 13 | 14 | ## $conf = myconfig () 15 | 16 | This function will collect the data described in ["The hash structure"](#the-hash-structure) below, 17 | and return that as a hash reference. It optionally accepts an option to 18 | include more entries from %ENV. See ["environment"](#environment) below. 19 | 20 | Note that this will not work on uninstalled perls when called with 21 | `-I/path/to/uninstalled/perl/lib`, but it works when that path is in 22 | `$PERL5LIB` or in `$PERL5OPT`, as paths passed using `-I` are not 23 | known when the `-V` information is collected. 24 | 25 | ## $conf = plv2hash ($text \[, ...\]) 26 | 27 | Convert a sole 'perl -V' text block, or list of lines, to a complete 28 | myconfig hash. All unknown entries are defaulted. 29 | 30 | ## $info = summary (\[$conf\]) 31 | 32 | Return an arbitrary selection of the information. If no `$conf` is 33 | given, `myconfig ()` is used instead. 34 | 35 | ## $md5 = signature (\[$conf\]) 36 | 37 | Return the MD5 of the info returned by `summary ()` without the 38 | `config_args` entry. 39 | 40 | If `Digest::MD5` is not available, it return a string with only `0`'s. 41 | 42 | ## The hash structure 43 | 44 | The returned hash consists of 4 parts: 45 | 46 | - build 47 | 48 | This information is extracted from the second block that is emitted by 49 | `perl -V`, and usually looks something like 50 | 51 | Characteristics of this binary (from libperl): 52 | Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES 53 | Locally applied patches: 54 | defined-or 55 | MAINT24637 56 | Built under linux 57 | Compiled at Jun 13 2005 10:44:20 58 | @INC: 59 | /usr/lib/perl5/5.8.7/i686-linux-64int 60 | /usr/lib/perl5/5.8.7 61 | /usr/lib/perl5/site_perl/5.8.7/i686-linux-64int 62 | /usr/lib/perl5/site_perl/5.8.7 63 | /usr/lib/perl5/site_perl 64 | . 65 | 66 | or 67 | 68 | Characteristics of this binary (from libperl): 69 | Compile-time options: DEBUGGING MULTIPLICITY 70 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT 71 | PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL 72 | PERL_USE_SAFE_PUTENV USE_ITHREADS 73 | USE_LARGE_FILES USE_PERLIO 74 | USE_REENTRANT_API 75 | Built under linux 76 | Compiled at Jan 28 2009 15:26:59 77 | 78 | This information is not available anywhere else, including `%Config`, 79 | but it is the information that is only known to the perl binary. 80 | 81 | The extracted information is stored in 5 entries in the `build` hash: 82 | 83 | - osname 84 | 85 | This is most likely the same as `$Config{osname}`, and was the name 86 | known when perl was built. It might be different if perl was cross-compiled. 87 | 88 | The default for this field, if it cannot be extracted, is to copy 89 | `$Config{osname}`. The two may be differing in casing (OpenBSD vs openbsd). 90 | 91 | - stamp 92 | 93 | This is the time string for which the perl binary was compiled. The default 94 | value is 0. 95 | 96 | - options 97 | 98 | This is a hash with all the known defines as keys. The value is either 0, 99 | which means unknown or unset, or 1, which means defined. 100 | 101 | - derived 102 | 103 | As some variables are reported by a different name in the output of `perl -V` 104 | than their actual name in `%Config`, I decided to leave the `config` entry 105 | as close to reality as possible, and put in the entries that might have been 106 | guessed by the printed output in a separate block. 107 | 108 | - patches 109 | 110 | This is a list of optionally locally applied patches. Default is an empty list. 111 | 112 | - environment 113 | 114 | By default this hash is only filled with the environment variables 115 | out of %ENV that start with `PERL`, but you can pass the `env` option 116 | to myconfig to get more 117 | 118 | my $conf = Config::Perl::V::myconfig ({ env => qr/^ORACLE/ }); 119 | my $conf = Config::Perl::V::myconfig ([ env => qr/^ORACLE/ ]); 120 | 121 | - config 122 | 123 | This hash is filled with the variables that `perl -V` fills its report 124 | with, and it has the same variables that `Config::myconfig` returns 125 | from `%Config`. 126 | 127 | - inc 128 | 129 | This is the list of default @INC. 130 | 131 | # REASONING 132 | 133 | This module was written to be able to return the configuration for the 134 | currently used perl as deeply as needed for the CPANTESTERS framework. 135 | Up until now they used the output of myconfig as a single text blob, 136 | and so it was missing the vital binary characteristics of the running 137 | perl and the optional applied patches. 138 | 139 | # BUGS 140 | 141 | Please feedback what is wrong 142 | 143 | # TODO 144 | 145 | * Implement retrieval functions/methods 146 | * Documentation 147 | * Error checking 148 | * Tests 149 | 150 | # AUTHOR 151 | 152 | H.Merijn Brand 153 | 154 | # COPYRIGHT AND LICENSE 155 | 156 | Copyright (C) 2009-2025 H.Merijn Brand 157 | 158 | This library is free software; you can redistribute it and/or modify 159 | it under the same terms as Perl itself. 160 | -------------------------------------------------------------------------------- /t/27_plv5200.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 127; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 30 2014 15:37:09", "Build time"); 25 | is ($conf->{config}{version}, "5.20.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS 30 | PERL_DONT_CREATE_GVSV 31 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 32 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 33 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 34 | PERL_USE_DEVEL USE_64_BIT_INT USE_ITHREADS 35 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 36 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 37 | USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 38 | )) { 39 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 40 | delete $opt->{$o}; 41 | } 42 | foreach my $o (sort keys %$opt) { 43 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 44 | } 45 | 46 | eval { require Digest::MD5; }; 47 | my $md5 = $@ ? "0" x 32 : "3e7b4513cd80c6ef00fcd77e5e16f8b4"; 48 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 49 | 50 | SKIP: { 51 | ord "A" == 65 or skip "ASCII-centric test", 1; 52 | is ($sig, $md5, "MD5"); 53 | } 54 | 55 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 56 | 57 | my %check = ( 58 | alignbytes => 4, 59 | api_version => 20, 60 | bincompat5005 => "undef", 61 | byteorder => 12345678, 62 | cc => "cc", 63 | cccdlflags => "-fPIC", 64 | ccdlflags => "-Wl,-E", 65 | config_args => "-Dusedevel -Uversiononly -Dinc_version_list=none -Duse64bitint -Dusethreads -Duseithreads -Duselongdouble -des", 66 | gccversion => "4.8.1 20130909 [gcc-4_8-branch revision 202388]", 67 | gnulibc_version => "2.18", 68 | ivsize => 8, 69 | ivtype => "long long", 70 | ld => "cc", 71 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector", 72 | ldflags => "-L/pro/local/lib -fstack-protector", 73 | libc => "libc-2.18.so", 74 | lseektype => "off_t", 75 | osvers => "3.11.10-17-desktop", 76 | use64bitint => "define", 77 | ); 78 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 79 | 80 | __END__ 81 | Summary of my perl5 (revision 5 version 20 subversion 0) configuration: 82 | 83 | Platform: 84 | osname=linux, osvers=3.11.10-17-desktop, archname=i686-linux-thread-multi-64int-ld 85 | uname='linux lx09 3.11.10-17-desktop #1 smp preempt mon jun 16 15:28:13 utc 2014 (fba7c1f) i686 i686 i386 gnulinux ' 86 | config_args='-Dusedevel -Uversiononly -Dinc_version_list=none -Duse64bitint -Dusethreads -Duseithreads -Duselongdouble -des' 87 | hint=recommended, useposix=true, d_sigaction=define 88 | useithreads=define, usemultiplicity=define 89 | use64bitint=define, use64bitall=undef, uselongdouble=define 90 | usemymalloc=n, bincompat5005=undef 91 | Compiler: 92 | cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 93 | optimize='-O2', 94 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include' 95 | ccversion='', gccversion='4.8.1 20130909 [gcc-4_8-branch revision 202388]', gccosandvers='' 96 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 97 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 98 | ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 99 | alignbytes=4, prototype=define 100 | Linker and Libraries: 101 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 102 | libpth=/usr/local/lib /usr/lib/gcc/i586-suse-linux/4.8/include-fixed /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/lib /usr/lib /pro/local/lib /lib 103 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat 104 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc 105 | libc=libc-2.18.so, so=so, useshrplib=false, libperl=libperl.a 106 | gnulibc_version='2.18' 107 | Dynamic Linking: 108 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 109 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 110 | 111 | 112 | Characteristics of this binary (from libperl): 113 | Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS 114 | PERL_DONT_CREATE_GVSV 115 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 116 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 117 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 118 | PERL_USE_DEVEL USE_64_BIT_INT USE_ITHREADS 119 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 120 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 121 | USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 122 | Built under linux 123 | Compiled at Jun 30 2014 15:37:09 124 | @INC: 125 | /pro/lib/perl5/site_perl/5.20.0/i686-linux-thread-multi-64int-ld 126 | /pro/lib/perl5/site_perl/5.20.0 127 | /pro/lib/perl5/5.20.0/i686-linux-thread-multi-64int-ld 128 | /pro/lib/perl5/5.20.0 129 | . 130 | -------------------------------------------------------------------------------- /t/27_plv5202.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 128; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Apr 19 2015 12:35:54", "Build time"); 25 | is ($conf->{config}{version}, "5.20.2", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS 30 | PERL_DONT_CREATE_GVSV 31 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 32 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 33 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 34 | PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 35 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 36 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LONG_DOUBLE 37 | USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 38 | )) { 39 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 40 | delete $opt->{$o}; 41 | } 42 | foreach my $o (sort keys %$opt) { 43 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 44 | } 45 | 46 | eval { require Digest::MD5; }; 47 | my $md5 = $@ ? "0" x 32 : "9f954ebc2be7b1d7e151ab28dbdf7062"; 48 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 49 | 50 | SKIP: { 51 | ord "A" == 65 or skip "ASCII-centric test", 1; 52 | is ($sig, $md5, "MD5"); 53 | } 54 | 55 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 56 | 57 | my %check = ( 58 | alignbytes => 16, 59 | api_version => 20, 60 | bincompat5005 => "undef", 61 | byteorder => 12345678, 62 | cc => "cc", 63 | cccdlflags => "-fPIC", 64 | ccdlflags => "-Wl,-E", 65 | config_args => "-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -des", 66 | gccversion => "4.8.3 20140627 [gcc-4_8-branch revision 212064]", 67 | gnulibc_version => "2.19", 68 | ivsize => 8, 69 | ivtype => "long", 70 | ld => "cc", 71 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector", 72 | ldflags => "-L/pro/local/lib -fstack-protector", 73 | libc => "libc-2.19.so", 74 | lseektype => "off_t", 75 | osvers => "3.16.7-13-desktop", 76 | use64bitall => "define", 77 | use64bitint => "define", 78 | ); 79 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 20 subversion 2) configuration: 83 | 84 | Platform: 85 | osname=linux, osvers=3.16.7-13-desktop, archname=x86_64-linux-thread-multi-ld 86 | uname='linux lx09 3.16.7-13-desktop #1 smp preempt wed mar 18 17:31:15 utc 2015 (ba2afab) x86_64 x86_64 x86_64 gnulinux ' 87 | config_args='-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -des' 88 | hint=recommended, useposix=true, d_sigaction=define 89 | useithreads=define, usemultiplicity=define 90 | use64bitint=define, use64bitall=define, uselongdouble=define 91 | usemymalloc=n, bincompat5005=undef 92 | Compiler: 93 | cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', 94 | optimize='-O2', 95 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include' 96 | ccversion='', gccversion='4.8.3 20140627 [gcc-4_8-branch revision 212064]', gccosandvers='' 97 | intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 98 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 99 | ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8 100 | alignbytes=16, prototype=define 101 | Linker and Libraries: 102 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 103 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 104 | libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat 105 | perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc 106 | libc=libc-2.19.so, so=so, useshrplib=false, libperl=libperl.a 107 | gnulibc_version='2.19' 108 | Dynamic Linking: 109 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 110 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 111 | 112 | 113 | Characteristics of this binary (from libperl): 114 | Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS 115 | PERL_DONT_CREATE_GVSV 116 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 117 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 118 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 119 | PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT 120 | USE_ITHREADS USE_LARGE_FILES USE_LOCALE 121 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE 122 | USE_LOCALE_NUMERIC USE_LONG_DOUBLE USE_PERLIO 123 | USE_PERL_ATOF USE_REENTRANT_API 124 | Built under linux 125 | Compiled at Apr 19 2015 12:35:54 126 | @INC: 127 | /pro/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi-ld 128 | /pro/lib/perl5/site_perl/5.20.2 129 | /pro/lib/perl5/5.20.2/x86_64-linux-thread-multi-ld 130 | /pro/lib/perl5/5.20.2 131 | . 132 | -------------------------------------------------------------------------------- /t/28_plv5220.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 128; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 4 2015 17:51:24", "Build time"); 25 | is ($conf->{config}{version}, "5.22.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS 30 | PERL_DONT_CREATE_GVSV 31 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 32 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 33 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 34 | USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 35 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 36 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 37 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 38 | )) { 39 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 40 | delete $opt->{$o}; 41 | } 42 | foreach my $o (sort keys %$opt) { 43 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 44 | } 45 | 46 | eval { require Digest::MD5; }; 47 | my $md5 = $@ ? "0" x 32 : "ddcc2d51e43bf18f5234ba66529068ef"; 48 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 49 | 50 | SKIP: { 51 | ord "A" == 65 or skip "ASCII-centric test", 1; 52 | is ($sig, $md5, "MD5"); 53 | } 54 | 55 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 56 | 57 | my %check = ( 58 | alignbytes => 16, 59 | api_version => 22, 60 | bincompat5005 => "undef", 61 | byteorder => 12345678, 62 | cc => "cc", 63 | cccdlflags => "-fPIC", 64 | ccdlflags => "-Wl,-E", 65 | config_args => "-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -des", 66 | gccversion => "4.8.3 20140627 [gcc-4_8-branch revision 212064]", 67 | gnulibc_version => "2.19", 68 | ivsize => 8, 69 | ivtype => "long", 70 | ld => "cc", 71 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector", 72 | ldflags => "-L/pro/local/lib -fstack-protector", 73 | libc => "libc-2.19.so", 74 | lseektype => "off_t", 75 | osvers => "3.16.7-21-desktop", 76 | use64bitall => "define", 77 | use64bitint => "define", 78 | ); 79 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 22 subversion 0) configuration: 83 | 84 | Platform: 85 | osname=linux, osvers=3.16.7-21-desktop, archname=x86_64-linux-thread-multi-ld 86 | uname='linux lx09 3.16.7-21-desktop #1 smp preempt tue apr 14 07:11:37 utc 2015 (93c1539) x86_64 x86_64 x86_64 gnulinux ' 87 | config_args='-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -des' 88 | hint=recommended, useposix=true, d_sigaction=define 89 | useithreads=define, usemultiplicity=define 90 | use64bitint=define, use64bitall=define, uselongdouble=define 91 | usemymalloc=n, bincompat5005=undef 92 | Compiler: 93 | cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2', 94 | optimize='-O2', 95 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include' 96 | ccversion='', gccversion='4.8.3 20140627 [gcc-4_8-branch revision 212064]', gccosandvers='' 97 | intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3 98 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3 99 | ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8 100 | alignbytes=16, prototype=define 101 | Linker and Libraries: 102 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector' 103 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 104 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 105 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 106 | libc=libc-2.19.so, so=so, useshrplib=false, libperl=libperl.a 107 | gnulibc_version='2.19' 108 | Dynamic Linking: 109 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 110 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 111 | 112 | 113 | Characteristics of this binary (from libperl): 114 | Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS 115 | PERL_DONT_CREATE_GVSV 116 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 117 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 118 | PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV 119 | USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 120 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 121 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 122 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF 123 | USE_REENTRANT_API 124 | Built under linux 125 | Compiled at Jun 4 2015 17:51:24 126 | @INC: 127 | /pro/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi-ld 128 | /pro/lib/perl5/site_perl/5.22.0 129 | /pro/lib/perl5/5.22.0/x86_64-linux-thread-multi-ld 130 | /pro/lib/perl5/5.22.0 131 | . 132 | -------------------------------------------------------------------------------- /Changelog: -------------------------------------------------------------------------------- 1 | 0.39 - 19 Mar 2025, H.Merijn Brand 2 | * 3 | 4 | 0.38 - 13 Jan 2025, H.Merijn Brand 5 | * doc should not be part of test 6 | * our instead of use vars (PR#4) 7 | 8 | 0.37 - 13 Jan 2025, H.Merijn Brand 9 | * Update version requirements based on CVE's 10 | * Add HAS_LONG_DOUBLE and HAS_STRTOLD (5.37.11) 11 | * Add 5.38.0 test 12 | * Update doc for groff-1.24 13 | * It's 2024 14 | * Add 5.40.0 test 15 | * Add 5.41.1 test with RC_STACK 16 | * It's 2025 17 | * Add SECURITY.md 18 | 19 | 0.36 - 01 Mar 2023, H.Merijn Brand 20 | * Add PERL_RC_STACK config for 5.37.10 21 | * Fix parsing attributes with single quotes in their value 22 | 23 | 0.35 - 06 Jan 2023, H.Merijn Brand 24 | * It's 2023 25 | 26 | 0.34 - 23 Aug 2022, H.Merijn Brand 27 | * It's 2021 28 | * Add generated static docs for github 29 | * It's 2022 30 | * Added 5.35.8 31 | * Add PERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES 32 | * Add NO_PERL_INTERNAL_RAND_SEED 33 | * Add NO_PERL_RAND_SEED 34 | * Add NO_HASH_SEED 35 | * Add PERL_HASH_NO_SBOX32 36 | * Add PERL_HASH_USE_SBOX32 37 | * Added 5.36.0 38 | * Added 5.37.3 39 | 40 | 0.33 - 18 Dec 2020, H.Merijn Brand 41 | * Release for sync with core (no changes but the version number) 42 | 43 | 0.32 - 17 Dec 2020, H.Merijn Brand 44 | * It's 2019 45 | * Add test for 5.29.10 built with g++ 46 | * Add test for 5.30.0-RC1 47 | * Provide cpanfile 48 | * Add test for 5.31.11 with Quadmath built with gcc-10 49 | * It's 2020 50 | * Add test for 5.32.0 51 | 52 | 0.31 - 15 Dec 2018, H.Merijn Brand 53 | * Fix pod links (PR#2) 54 | * Add USE_THREAD_SAFE_LOCALE 55 | 56 | 0.30 - 04 Jul 2018, H.Merijn Brand 57 | * It's 2018 58 | * Add test for 5.27.11 (r is for rsync checkout) 59 | * Add test for 5.28.0 60 | 61 | 0.29 - 12 Oct 2017, H.Merijn Brand 62 | * It's 2017 63 | * Add test for 5.26.1-RC1 64 | * Fix signature with argument 65 | * Ignore ccache and compiler path in signature 66 | 67 | 0.28 - 27 Feb 2017, H.Merijn Brand 68 | * Add default_inc_excludes_dot 69 | 70 | 0.27 - 11 Aug 2016, H.Merijn Brand 71 | * Sync with 5.25.3 - add PERL_OP_PARENT 72 | 73 | 0.26 - 10 May 2016, H.Merijn Brand 74 | * Some flags are special and can have embedded quotation 75 | * Add windos 5.23.5/cl config 76 | * It's 2016 77 | * Sync up with 5.24.0 - add SILENT_NO_TAINT_SUPPORT 78 | 79 | 0.25 - 18 Nov 2015, H.Merijn Brand 80 | * Travis will work on a git checkout *with* xt 81 | * Add PERL_COPY_ON_WRITE (renamed from PERL_NEW_COPY_ON_WRITE) 82 | * Add tests for 5.20.2 and 5.22.0 83 | * Add CONTRIBUTING.md 84 | * Add USE_NO_REGISTRY (WIN32_NO_REGISTRY) for 5.23.x 85 | * Add Strawberry 5.22.0.1 configuration test 86 | 87 | 0.24 - 16 Apr 2015, H.Merijn Brand 88 | * Typo in README 89 | * Add USE_QUADMATH 90 | * Auto-check against core 91 | 92 | 0.23 - 11 Feb 2015, H.Merijn Brand 93 | * Update copyright to 2015 94 | * Add summary tests 95 | * Remove perl recommendation from META as it breaks cpan clients 96 | * Move repo to github 97 | 98 | 0.22 - 02 Aug 2014, H.Merijn Brand 99 | * Fixed parsing locally applied patches (passed only first line) 100 | * Fixed parsing compile-time options (passed only first line) 101 | * Some settings run unquoted to end-of-line 102 | * Not all key-value pairs were separated by ',' in older perl 103 | * Small typo in test comment 104 | 105 | 0.21 - 01 Aug 2014, H.Merijn Brand 106 | * Add tests for each major distribution since 5.6.2 107 | * Better detect build times 108 | * Sync with 5.20.1 109 | 110 | 0.20 - 19 Feb 2014, H.Merijn Brand 111 | * Update copyright to 2014 112 | * Typo fix in comment (RT#92469) 113 | * Sync up with blead 114 | 115 | 0.19 - 30 Jul 2013, H.Merijn Brand 116 | * TEST_REQUIRES was added in 6.63_03 (RT#85811) 117 | * Removed duplicate entry (no visible change) 118 | 119 | 0.18 - 24 May 2013, H.Merijn Brand 120 | * Fixed typo in META (Chorny) 121 | * Support for using uninstalled Test::NoWarnings (RT#82386) 122 | * Sync up with perl-5.18.0 (and 5.19.0) 123 | 124 | 0.17 - 10 Feb 2013, H.Merijn Brand 125 | * Deal with spaces in patch descriptions 126 | 127 | 0.16 - 25 Jan 2013, H.Merijn Brand 128 | * Do not shell out on 5.14.0 and up if perl provides internals (Nicholas) 129 | * Update copyright to 2013 130 | * Update list of known symbols to 5.17.8 131 | * Prevent tar paxheaders (http://www.perlmonks.org/?node_id=1004571) 132 | 133 | 0.15 - 07 Jun 2012, H.Merijn Brand 134 | * Update copyright to 2012 135 | * Prepare for CORE inclusion (BinGOs) 136 | 137 | 0.14 - 07 Sep 2011, H.Merijn Brand 138 | * Upped copyright to 2011 139 | * NAME / DISTNAME in Makefile.PL 140 | 141 | 0.13 - 07 Sep 2011, H.Merijn Brand 142 | * Some spelling fixes 143 | * More cross-checks for META data 144 | 145 | 0.12 - 16 Mar 2010, H.Merijn Brand 146 | * YAML dropped to spec 1.0 (RT#55614) 147 | 148 | 0.11 - 15 Mar 2010, H.Merijn Brand 149 | * Upped copyright to 2010 150 | * osname in {build} can be different from {config} (OpenBSD vs openbsd) 151 | * Add USE_ATTRIBUTES_FOR_PERLIO to the list of -V's compile-time options. 152 | * Add USE_PERL_ATOF to the list of -V's compile-time options. 153 | 154 | 0.10 - 24 Sep 2009, H.Merijn Brand 155 | * Add PERL_DISABLE_PMC to the list of -V's compile-time options. 156 | * Add PERL_IS_MINIPERL to the list of -V's compile-time options. 157 | * pod fix (Jim Cromie) 158 | 159 | 0.05 - 01 Jul 2009, H.Merijn Brand 160 | * 0.04 was shipped with 0.05 as $VERSION. Sorry 161 | 162 | 0.04 - 01 Jul 2009, H.Merijn Brand 163 | * Default for summary is myconfig 164 | * Added signature () 165 | * Added @EXPORT_OK and EXPORT_TAGS 166 | 167 | 0.03 - 05 Apr 2009, H.Merijn Brand 168 | * Reconstruct version from perl-v output (dagolden) 169 | 170 | 0.02 - 30 Mar 2009, H.Merijn Brand 171 | * Added plv2hash () 172 | * Documentation 173 | * Added all (new) version related config entries, including git 174 | * Added a derived section 175 | * Added summary () 176 | 177 | 0.01 - 29 Mar 2009, H.Merijn Brand 178 | * Initial release 179 | -------------------------------------------------------------------------------- /doc/Config-Perl-V.man: -------------------------------------------------------------------------------- 1 | V(3) User Contributed Perl Documentation V(3) 2 | 3 | NAME 4 | Config::Perl::V - Structured data retrieval of perl -V output 5 | 6 | SYNOPSIS 7 | use Config::Perl::V; 8 | 9 | my $local_config = Config::Perl::V::myconfig (); 10 | print $local_config->{config}{osname}; 11 | 12 | DESCRIPTION 13 | $conf = myconfig () 14 | This function will collect the data described in "The hash structure" 15 | below, and return that as a hash reference. It optionally accepts an 16 | option to include more entries from %ENV. See "environment" below. 17 | 18 | Note that this will not work on uninstalled perls when called with 19 | "-I/path/to/uninstalled/perl/lib", but it works when that path is in 20 | $PERL5LIB or in $PERL5OPT, as paths passed using "-I" are not known 21 | when the "-V" information is collected. 22 | 23 | $conf = plv2hash ($text [, ...]) 24 | Convert a sole 'perl -V' text block, or list of lines, to a complete 25 | myconfig hash. All unknown entries are defaulted. 26 | 27 | $info = summary ([$conf]) 28 | Return an arbitrary selection of the information. If no $conf is given, 29 | "myconfig ()" is used instead. 30 | 31 | $md5 = signature ([$conf]) 32 | Return the MD5 of the info returned by "summary ()" without the 33 | "config_args" entry. 34 | 35 | If "Digest::MD5" is not available, it return a string with only 0's. 36 | 37 | The hash structure 38 | The returned hash consists of 4 parts: 39 | 40 | build 41 | This information is extracted from the second block that is emitted 42 | by "perl -V", and usually looks something like 43 | 44 | Characteristics of this binary (from libperl): 45 | Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES 46 | Locally applied patches: 47 | defined-or 48 | MAINT24637 49 | Built under linux 50 | Compiled at Jun 13 2005 10:44:20 51 | @INC: 52 | /usr/lib/perl5/5.8.7/i686-linux-64int 53 | /usr/lib/perl5/5.8.7 54 | /usr/lib/perl5/site_perl/5.8.7/i686-linux-64int 55 | /usr/lib/perl5/site_perl/5.8.7 56 | /usr/lib/perl5/site_perl 57 | . 58 | 59 | or 60 | 61 | Characteristics of this binary (from libperl): 62 | Compile-time options: DEBUGGING MULTIPLICITY 63 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT 64 | PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL 65 | PERL_USE_SAFE_PUTENV USE_ITHREADS 66 | USE_LARGE_FILES USE_PERLIO 67 | USE_REENTRANT_API 68 | Built under linux 69 | Compiled at Jan 28 2009 15:26:59 70 | 71 | This information is not available anywhere else, including %Config, 72 | but it is the information that is only known to the perl binary. 73 | 74 | The extracted information is stored in 5 entries in the "build" 75 | hash: 76 | 77 | osname 78 | This is most likely the same as $Config{osname}, and was the 79 | name known when perl was built. It might be different if perl 80 | was cross-compiled. 81 | 82 | The default for this field, if it cannot be extracted, is to 83 | copy $Config{osname}. The two may be differing in casing 84 | (OpenBSD vs openbsd). 85 | 86 | stamp 87 | This is the time string for which the perl binary was compiled. 88 | The default value is 0. 89 | 90 | options 91 | This is a hash with all the known defines as keys. The value is 92 | either 0, which means unknown or unset, or 1, which means 93 | defined. 94 | 95 | derived 96 | As some variables are reported by a different name in the 97 | output of "perl -V" than their actual name in %Config, I 98 | decided to leave the "config" entry as close to reality as 99 | possible, and put in the entries that might have been guessed 100 | by the printed output in a separate block. 101 | 102 | patches 103 | This is a list of optionally locally applied patches. Default 104 | is an empty list. 105 | 106 | environment 107 | By default this hash is only filled with the environment variables 108 | out of %ENV that start with "PERL", but you can pass the "env" 109 | option to myconfig to get more 110 | 111 | my $conf = Config::Perl::V::myconfig ({ env => qr/^ORACLE/ }); 112 | my $conf = Config::Perl::V::myconfig ([ env => qr/^ORACLE/ ]); 113 | 114 | config 115 | This hash is filled with the variables that "perl -V" fills its 116 | report with, and it has the same variables that "Config::myconfig" 117 | returns from %Config. 118 | 119 | inc This is the list of default @INC. 120 | 121 | REASONING 122 | This module was written to be able to return the configuration for the 123 | currently used perl as deeply as needed for the CPANTESTERS framework. 124 | Up until now they used the output of myconfig as a single text blob, 125 | and so it was missing the vital binary characteristics of the running 126 | perl and the optional applied patches. 127 | 128 | BUGS 129 | Please feedback what is wrong 130 | 131 | TODO 132 | * Implement retrieval functions/methods 133 | * Documentation 134 | * Error checking 135 | * Tests 136 | 137 | AUTHOR 138 | H.Merijn Brand 139 | 140 | COPYRIGHT AND LICENSE 141 | Copyright (C) 2009-2025 H.Merijn Brand 142 | 143 | This library is free software; you can redistribute it and/or modify it 144 | under the same terms as Perl itself. 145 | 146 | perl v5.40.1 2025-03-19 V(3) 147 | -------------------------------------------------------------------------------- /t/40_plv5358dnqm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jan 1 2022 11:18:27", "Build time"); 25 | is ($conf->{config}{version}, "5.35.8", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES PERLIO_LAYERS PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV 30 | PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_DEVEL 31 | USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE 32 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC 33 | USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF USE_QUADMATH 34 | )) { 35 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 36 | delete $opt->{$o}; 37 | } 38 | foreach my $o (sort keys %$opt) { 39 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 40 | } 41 | 42 | eval { require Digest::MD5; }; 43 | my $md5 = $@ ? "0" x 32 : "3a52d65d54ee1032f878b51fb20c8efd"; 44 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 45 | is ($sig, $md5, "MD5"); 46 | 47 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 48 | 49 | my %check = ( 50 | alignbytes => 16, 51 | api_version => 35, 52 | bincompat5005 => undef, 53 | byteorder => 12345678, 54 | cc => "cc", 55 | cccdlflags => "-fPIC", 56 | ccdlflags => "-Wl,-E", 57 | config_args => "-Dusedevel -Duse64bitall -Dusequadmath -Uuseperlio -des", 58 | gccversion => "11.2.1 20211124 [revision 7510c23c1ec53aa4a62705f0384079661342ff7b]", 59 | gnulibc_version => "2.34", 60 | ivsize => 8, 61 | ivtype => "long", 62 | ld => "cc", 63 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 64 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 65 | libc => "/lib/../lib64/libc.so.6", 66 | lseektype => "off_t", 67 | osvers => "5.15.8-1-default", 68 | use64bitall => "define", 69 | use64bitint => "define", 70 | usemymalloc => "n", 71 | default_inc_excludes_dot 72 | => "define", 73 | ); 74 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 75 | 76 | ok (my $info = summary ($conf), "A summary"); 77 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 78 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 79 | 80 | __END__ 81 | Summary of my perl5 (revision 5 version 35 subversion 8) configuration: 82 | Snapshot of: 0ccfd062e2cfd32efe146d4c16faf3cae9e3cc84 83 | Platform: 84 | osname=linux 85 | osvers=5.15.8-1-default 86 | archname=x86_64-linux-quadmath 87 | uname='linux lx09 5.15.8-1-default #1 smp wed dec 15 08:12:54 utc 2021 (0530e5c) x86_64 x86_64 x86_64 gnulinux ' 88 | config_args='-Dusedevel -Duse64bitall -Dusequadmath -Uuseperlio -des' 89 | hint=recommended 90 | useposix=true 91 | d_sigaction=define 92 | useithreads=undef 93 | usemultiplicity=undef 94 | use64bitint=define 95 | use64bitall=define 96 | uselongdouble=undef 97 | usemymalloc=n 98 | default_inc_excludes_dot=define 99 | Compiler: 100 | cc='cc' 101 | ccflags ='-pie -fPIE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 102 | optimize='-O2' 103 | cppflags='-pie -fPIE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 104 | ccversion='' 105 | gccversion='11.2.1 20211124 [revision 7510c23c1ec53aa4a62705f0384079661342ff7b]' 106 | gccosandvers='' 107 | intsize=4 108 | longsize=8 109 | ptrsize=8 110 | doublesize=8 111 | byteorder=12345678 112 | doublekind=3 113 | d_longlong=define 114 | longlongsize=8 115 | d_longdbl=define 116 | longdblsize=16 117 | longdblkind=3 118 | ivtype='long' 119 | ivsize=8 120 | nvtype='__float128' 121 | nvsize=16 122 | Off_t='off_t' 123 | lseeksize=8 124 | alignbytes=16 125 | prototype=define 126 | Linker and Libraries: 127 | ld='cc' 128 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 129 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 130 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 131 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lquadmath 132 | libc=/lib/../lib64/libc.so.6 133 | so=so 134 | useshrplib=false 135 | libperl=libperl.a 136 | gnulibc_version='2.34' 137 | Dynamic Linking: 138 | dlsrc=dl_dlopen.xs 139 | dlext=so 140 | d_dlsymun=undef 141 | ccdlflags='-Wl,-E' 142 | cccdlflags='-fPIC' 143 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 144 | 145 | 146 | Characteristics of this binary (from libperl): 147 | Compile-time options: 148 | HAS_TIMES 149 | PERLIO_LAYERS 150 | PERL_COPY_ON_WRITE 151 | PERL_DONT_CREATE_GVSV 152 | PERL_MALLOC_WRAP 153 | PERL_OP_PARENT 154 | PERL_PRESERVE_IVUV 155 | PERL_USE_DEVEL 156 | USE_64_BIT_ALL 157 | USE_64_BIT_INT 158 | USE_LARGE_FILES 159 | USE_LOCALE 160 | USE_LOCALE_COLLATE 161 | USE_LOCALE_CTYPE 162 | USE_LOCALE_NUMERIC 163 | USE_LOCALE_TIME 164 | USE_PERLIO 165 | USE_PERL_ATOF 166 | USE_QUADMATH 167 | Built under linux 168 | Compiled at Jan 1 2022 11:18:27 169 | %ENV: 170 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 171 | @INC: 172 | lib 173 | /pro/lib/perl5/site_perl/5.35.8/x86_64-linux-quadmath 174 | /pro/lib/perl5/site_perl/5.35.8 175 | /pro/lib/perl5/5.35.8/x86_64-linux-quadmath 176 | /pro/lib/perl5/5.35.8 177 | -------------------------------------------------------------------------------- /t/29_plv5235w.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 128; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V; 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Nov 19 2015 00:18:50", "Build time"); 25 | is ($conf->{config}{version}, "5.23.5", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY PERLIO_LAYERS 30 | PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV 31 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 32 | PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP 33 | PERL_PRESERVE_IVUV 34 | USE_ITHREADS 35 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 36 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 37 | USE_PERLIO USE_PERL_ATOF 38 | )) { 39 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 40 | delete $opt->{$o}; 41 | } 42 | foreach my $o (sort keys %$opt) { 43 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 44 | } 45 | 46 | eval { require Digest::MD5; }; 47 | my $md5 = $@ ? "0" x 32 : "bccd5d78dfebd48b89faf7f1fe711733"; 48 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 49 | 50 | SKIP: { 51 | ord "A" == 65 or skip "ASCII-centric test", 1; 52 | is ($sig, $md5, "MD5"); 53 | } 54 | 55 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 56 | 57 | my %check = ( 58 | alignbytes => 8, 59 | api_version => 23, 60 | bincompat5005 => "undef", 61 | byteorder => 1234, 62 | cc => "cl", 63 | cccdlflags => "", 64 | ccdlflags => "", 65 | config_args => "undef", 66 | gccversion => "", 67 | gnulibc_version => "", 68 | ivsize => 4, 69 | ivtype => "long", 70 | ld => "link", 71 | lddlflags => q{-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"}, 72 | ldflags => q{-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"}, 73 | libc => "msvcrt.lib", 74 | lseektype => "__int64", 75 | osvers => "6.1", 76 | use64bitall => "undef", 77 | use64bitint => "undef", 78 | ); 79 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 23 subversion 5) configuration: 83 | 84 | Platform: 85 | osname=MSWin32, osvers=6.1, archname=MSWin32-x86-multi-thread 86 | uname='' 87 | config_args='undef' 88 | hint=recommended, useposix=true, d_sigaction=undef 89 | useithreads=define, usemultiplicity=define 90 | use64bitint=undef, use64bitall=undef, uselongdouble=undef 91 | usemymalloc=n, bincompat5005=undef 92 | Compiler: 93 | cc='cl', ccflags ='-nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS', 94 | optimize='-O1 -MD -Zi -DNDEBUG -GL', 95 | cppflags='-DWIN32' 96 | ccversion='18.00.31101', gccversion='', gccosandvers='' 97 | intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234, doublekind=3 98 | d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8, longdblkind=0 99 | ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8 100 | alignbytes=8, prototype=define 101 | Linker and Libraries: 102 | ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"' 103 | libpth=\lib 104 | libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib 105 | perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib 106 | libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl523.lib 107 | gnulibc_version='' 108 | Dynamic Linking: 109 | dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' 110 | cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"' 111 | 112 | 113 | Characteristics of this binary (from libperl): 114 | Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY 115 | PERLIO_LAYERS PERL_COPY_ON_WRITE 116 | PERL_DONT_CREATE_GVSV 117 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 118 | PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS 119 | PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_ITHREADS 120 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 121 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 122 | USE_PERLIO USE_PERL_ATOF 123 | Built under MSWin32 124 | Compiled at Nov 19 2015 00:18:50 125 | @INC: 126 | C:/p523/src/lib 127 | . 128 | -------------------------------------------------------------------------------- /t/30_plv5240.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "May 10 2016 15:39:18", "Build time"); 25 | is ($conf->{config}{version}, "5.24.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 31 | PERL_TRACK_MEMPOOL PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 32 | PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 33 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 34 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "3dffae79f6d2c74073f0d64646709101"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 24, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E", 63 | config_args => "-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -des", 64 | gccversion => "5.3.1 20160412 [gcc-5-branch revision 234894]", 65 | gnulibc_version => "2.23", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.23.so", 72 | lseektype => "off_t", 73 | osvers => "4.5.2-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "undef", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "undef", "This build has . in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 24 subversion 0) configuration: 88 | 89 | Platform: 90 | osname=linux, osvers=4.5.2-1-default, archname=x86_64-linux-thread-multi-ld 91 | uname='linux lx09 4.5.2-1-default #1 smp preempt thu apr 21 09:07:52 utc 2016 (0454a6e) x86_64 x86_64 x86_64 gnulinux ' 92 | config_args='-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -des' 93 | hint=recommended, useposix=true, d_sigaction=define 94 | useithreads=define, usemultiplicity=define 95 | use64bitint=define, use64bitall=define, uselongdouble=define 96 | usemymalloc=n, bincompat5005=undef 97 | Compiler: 98 | cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2', 99 | optimize='-O2', 100 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 101 | ccversion='', gccversion='5.3.1 20160412 [gcc-5-branch revision 234894]', gccosandvers='' 102 | intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3 103 | d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3 104 | ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8 105 | alignbytes=16, prototype=define 106 | Linker and Libraries: 107 | ld='cc', ldflags ='-L/pro/local/lib -fstack-protector-strong' 108 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/5/include-fixed /usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 109 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 110 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 111 | libc=libc-2.23.so, so=so, useshrplib=false, libperl=libperl.a 112 | gnulibc_version='2.23' 113 | Dynamic Linking: 114 | dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' 115 | cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 116 | 117 | 118 | Characteristics of this binary (from libperl): 119 | Compile-time options: DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS 120 | PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV 121 | PERL_HASH_FUNC_ONE_AT_A_TIME_HARD 122 | PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 123 | PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL USE_64_BIT_ALL 124 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES 125 | USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE 126 | USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_LONG_DOUBLE 127 | USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 128 | Built under linux 129 | Compiled at May 10 2016 15:39:18 130 | @INC: 131 | lib 132 | /pro/lib/perl5/site_perl/5.24.0/x86_64-linux-thread-multi-ld 133 | /pro/lib/perl5/site_perl/5.24.0 134 | /pro/lib/perl5/5.24.0/x86_64-linux-thread-multi-ld 135 | /pro/lib/perl5/5.24.0 136 | . 137 | -------------------------------------------------------------------------------- /t/34_plv5280.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 26 2018 12:17:32", "Build time"); 25 | is ($conf->{config}{version}, "5.28.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 31 | PERL_OP_PARENT PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT 32 | USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 33 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 34 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "4add7fd04b60c2048a46ff47087e6952"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | is_deeply ($conf->{build}{patches}, [], "No local patches"); 53 | 54 | my %check = ( 55 | alignbytes => 16, 56 | api_version => 28, 57 | bincompat5005 => "undef", 58 | byteorder => 12345678, 59 | cc => "cc", 60 | cccdlflags => "-fPIC", 61 | ccdlflags => "-Wl,-E", 62 | config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -des", 63 | gccversion => "8.1.1 20180523 [gcc-8-branch revision 260570]", 64 | gnulibc_version => "2.27", 65 | ivsize => 8, 66 | ivtype => "long", 67 | ld => "cc", 68 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 69 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 70 | libc => "libc-2.27.so", 71 | lseektype => "off_t", 72 | osvers => "4.17.2-1-default", 73 | use64bitall => "define", 74 | use64bitint => "define", 75 | usemymalloc => "n", 76 | default_inc_excludes_dot 77 | => "define", 78 | ); 79 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 80 | 81 | ok (my $info = summary ($conf), "A summary"); 82 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 83 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 84 | 85 | __END__ 86 | Summary of my perl5 (revision 5 version 28 subversion 0) configuration: 87 | 88 | Platform: 89 | osname=linux 90 | osvers=4.17.2-1-default 91 | archname=x86_64-linux-thread-multi-ld 92 | uname='linux lx09 4.17.2-1-default #1 smp preempt sat jun 16 10:58:03 utc 2018 (ddde22d) x86_64 x86_64 x86_64 gnulinux ' 93 | config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -des' 94 | hint=recommended 95 | useposix=true 96 | d_sigaction=define 97 | useithreads=define 98 | usemultiplicity=define 99 | use64bitint=define 100 | use64bitall=define 101 | uselongdouble=define 102 | usemymalloc=n 103 | default_inc_excludes_dot=define 104 | bincompat5005=undef 105 | Compiler: 106 | cc='cc' 107 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' 108 | optimize='-O2' 109 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 110 | ccversion='' 111 | gccversion='8.1.1 20180523 [gcc-8-branch revision 260570]' 112 | gccosandvers='' 113 | intsize=4 114 | longsize=8 115 | ptrsize=8 116 | doublesize=8 117 | byteorder=12345678 118 | doublekind=3 119 | d_longlong=define 120 | longlongsize=8 121 | d_longdbl=define 122 | longdblsize=16 123 | longdblkind=3 124 | ivtype='long' 125 | ivsize=8 126 | nvtype='long double' 127 | nvsize=16 128 | Off_t='off_t' 129 | lseeksize=8 130 | alignbytes=16 131 | prototype=define 132 | Linker and Libraries: 133 | ld='cc' 134 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 135 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 136 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 137 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 138 | libc=libc-2.27.so 139 | so=so 140 | useshrplib=false 141 | libperl=libperl.a 142 | gnulibc_version='2.27' 143 | Dynamic Linking: 144 | dlsrc=dl_dlopen.xs 145 | dlext=so 146 | d_dlsymun=undef 147 | ccdlflags='-Wl,-E' 148 | cccdlflags='-fPIC' 149 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 150 | 151 | 152 | Characteristics of this binary (from libperl): 153 | Compile-time options: 154 | HAS_TIMES 155 | MULTIPLICITY 156 | PERLIO_LAYERS 157 | PERL_COPY_ON_WRITE 158 | PERL_DONT_CREATE_GVSV 159 | PERL_IMPLICIT_CONTEXT 160 | PERL_MALLOC_WRAP 161 | PERL_OP_PARENT 162 | PERL_PRESERVE_IVUV 163 | USE_64_BIT_ALL 164 | USE_64_BIT_INT 165 | USE_ITHREADS 166 | USE_LARGE_FILES 167 | USE_LOCALE 168 | USE_LOCALE_COLLATE 169 | USE_LOCALE_CTYPE 170 | USE_LOCALE_NUMERIC 171 | USE_LOCALE_TIME 172 | USE_LONG_DOUBLE 173 | USE_PERLIO 174 | USE_PERL_ATOF 175 | USE_REENTRANT_API 176 | Built under linux 177 | Compiled at Jun 26 2018 12:17:32 178 | @INC: 179 | /pro/lib/perl5/site_perl/5.28.0/x86_64-linux-thread-multi-ld 180 | /pro/lib/perl5/site_perl/5.28.0 181 | /pro/lib/perl5/5.28.0/x86_64-linux-thread-multi-ld 182 | /pro/lib/perl5/5.28.0 183 | -------------------------------------------------------------------------------- /t/41_plv5360dnqm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 10 2022 14:46:57", "Build time"); 25 | is ($conf->{config}{version}, "5.36.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP PERL_OP_PARENT 31 | PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 32 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE 33 | USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF 34 | USE_QUADMATH USE_REENTRANT_API USE_THREAD_SAFE_LOCALE 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "e8348134908b3d371c277aff6da654b8"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | is ($sig, $md5, "MD5"); 47 | 48 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 49 | 50 | my %check = ( 51 | alignbytes => 16, 52 | api_version => 36, 53 | bincompat5005 => undef, 54 | byteorder => 12345678, 55 | cc => "cc", 56 | cccdlflags => "-fPIC", 57 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.36.0/x86_64-linux-thread-multi-quadmath/CORE", 58 | config_args => "-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des", 59 | gccversion => "12.1.0", 60 | gnulibc_version => "2.35", 61 | ivsize => 8, 62 | ivtype => "long", 63 | ld => "cc", 64 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 65 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 66 | libc => "/lib/../lib64/libc.so.6", 67 | lseektype => "off_t", 68 | osvers => "5.18.1-1-default", 69 | use64bitall => "define", 70 | use64bitint => "define", 71 | usemymalloc => "n", 72 | default_inc_excludes_dot 73 | => "define", 74 | ); 75 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 76 | 77 | ok (my $info = summary ($conf), "A summary"); 78 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 79 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 36 subversion 0) configuration: 83 | 84 | Platform: 85 | osname=linux 86 | osvers=5.18.1-1-default 87 | archname=x86_64-linux-thread-multi-quadmath 88 | uname='linux lx09 5.18.1-1-default #1 smp preempt_dynamic mon may 30 07:49:01 utc 2022 (d00e88d) x86_64 x86_64 x86_64 gnulinux ' 89 | config_args='-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des' 90 | hint=recommended 91 | useposix=true 92 | d_sigaction=define 93 | useithreads=define 94 | usemultiplicity=define 95 | use64bitint=define 96 | use64bitall=define 97 | uselongdouble=undef 98 | usemymalloc=n 99 | default_inc_excludes_dot=define 100 | Compiler: 101 | cc='cc' 102 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 103 | optimize='-O2' 104 | cppflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 105 | ccversion='' 106 | gccversion='12.1.0' 107 | gccosandvers='' 108 | intsize=4 109 | longsize=8 110 | ptrsize=8 111 | doublesize=8 112 | byteorder=12345678 113 | doublekind=3 114 | d_longlong=define 115 | longlongsize=8 116 | d_longdbl=define 117 | longdblsize=16 118 | longdblkind=3 119 | ivtype='long' 120 | ivsize=8 121 | nvtype='__float128' 122 | nvsize=16 123 | Off_t='off_t' 124 | lseeksize=8 125 | alignbytes=16 126 | prototype=define 127 | Linker and Libraries: 128 | ld='cc' 129 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 130 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 131 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 132 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lquadmath 133 | libc=/lib/../lib64/libc.so.6 134 | so=so 135 | useshrplib=true 136 | libperl=libperl.so 137 | gnulibc_version='2.35' 138 | Dynamic Linking: 139 | dlsrc=dl_dlopen.xs 140 | dlext=so 141 | d_dlsymun=undef 142 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.36.0/x86_64-linux-thread-multi-quadmath/CORE' 143 | cccdlflags='-fPIC' 144 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 145 | 146 | 147 | Characteristics of this binary (from libperl): 148 | Compile-time options: 149 | HAS_TIMES 150 | MULTIPLICITY 151 | PERLIO_LAYERS 152 | PERL_COPY_ON_WRITE 153 | PERL_DONT_CREATE_GVSV 154 | PERL_MALLOC_WRAP 155 | PERL_OP_PARENT 156 | PERL_PRESERVE_IVUV 157 | USE_64_BIT_ALL 158 | USE_64_BIT_INT 159 | USE_ITHREADS 160 | USE_LARGE_FILES 161 | USE_LOCALE 162 | USE_LOCALE_COLLATE 163 | USE_LOCALE_CTYPE 164 | USE_LOCALE_NUMERIC 165 | USE_LOCALE_TIME 166 | USE_PERLIO 167 | USE_PERL_ATOF 168 | USE_QUADMATH 169 | USE_REENTRANT_API 170 | USE_THREAD_SAFE_LOCALE 171 | Built under linux 172 | Compiled at Jun 10 2022 14:46:57 173 | %ENV: 174 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 175 | @INC: 176 | /pro/lib/perl5/site_perl/5.36.0/x86_64-linux-thread-multi-quadmath 177 | /pro/lib/perl5/site_perl/5.36.0 178 | /pro/lib/perl5/5.36.0/x86_64-linux-thread-multi-quadmath 179 | /pro/lib/perl5/5.36.0 180 | -------------------------------------------------------------------------------- /t/39_plv5340tqm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 19 2021 15:51:32", "Build time"); 25 | is ($conf->{config}{version}, "5.34.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 31 | PERL_OP_PARENT PERL_PRESERVE_IVUV USE_THREAD_SAFE_LOCALE 32 | USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES 33 | USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC 34 | USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API USE_QUADMATH 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "12cfb15586bf005d29ff4c7ce770aefe"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | is ($sig, $md5, "MD5"); 47 | 48 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 49 | 50 | my %check = ( 51 | alignbytes => 16, 52 | api_version => 34, 53 | bincompat5005 => undef, 54 | byteorder => 12345678, 55 | cc => "cc", 56 | cccdlflags => "-fPIC", 57 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.34.0/x86_64-linux-thread-multi-quadmath/CORE", 58 | config_args => "-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des", 59 | gccversion => "7.5.0", 60 | gnulibc_version => "2.26", 61 | ivsize => 8, 62 | ivtype => "long", 63 | ld => "cc", 64 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 65 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 66 | libc => "libc-2.26.so", 67 | lseektype => "off_t", 68 | osvers => "5.3.18-lp152.78-preempt", 69 | use64bitall => "define", 70 | use64bitint => "define", 71 | usemymalloc => "n", 72 | default_inc_excludes_dot 73 | => "define", 74 | ); 75 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 76 | 77 | ok (my $info = summary ($conf), "A summary"); 78 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 79 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 80 | 81 | __END__ 82 | Summary of my perl5 (revision 5 version 34 subversion 0) configuration: 83 | 84 | Platform: 85 | osname=linux 86 | osvers=5.3.18-lp152.78-preempt 87 | archname=x86_64-linux-thread-multi-quadmath 88 | uname='linux pc09 5.3.18-lp152.78-preempt #1 smp preempt tue jun 1 14:53:21 utc 2021 (556d823) x86_64 x86_64 x86_64 gnulinux ' 89 | config_args='-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des' 90 | hint=recommended 91 | useposix=true 92 | d_sigaction=define 93 | useithreads=define 94 | usemultiplicity=define 95 | use64bitint=define 96 | use64bitall=define 97 | uselongdouble=undef 98 | usemymalloc=n 99 | default_inc_excludes_dot=define 100 | Compiler: 101 | cc='cc' 102 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 103 | optimize='-O2' 104 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 105 | ccversion='' 106 | gccversion='7.5.0' 107 | gccosandvers='' 108 | intsize=4 109 | longsize=8 110 | ptrsize=8 111 | doublesize=8 112 | byteorder=12345678 113 | doublekind=3 114 | d_longlong=define 115 | longlongsize=8 116 | d_longdbl=define 117 | longdblsize=16 118 | longdblkind=3 119 | ivtype='long' 120 | ivsize=8 121 | nvtype='__float128' 122 | nvsize=16 123 | Off_t='off_t' 124 | lseeksize=8 125 | alignbytes=16 126 | prototype=define 127 | Linker and Libraries: 128 | ld='cc' 129 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 130 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib64 /usr/lib64 /lib /usr/local/lib64 131 | libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 132 | perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc -lquadmath 133 | libc=libc-2.26.so 134 | so=so 135 | useshrplib=true 136 | libperl=libperl.so 137 | gnulibc_version='2.26' 138 | Dynamic Linking: 139 | dlsrc=dl_dlopen.xs 140 | dlext=so 141 | d_dlsymun=undef 142 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.34.0/x86_64-linux-thread-multi-quadmath/CORE' 143 | cccdlflags='-fPIC' 144 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 145 | 146 | 147 | Characteristics of this binary (from libperl): 148 | Compile-time options: 149 | HAS_TIMES 150 | MULTIPLICITY 151 | PERLIO_LAYERS 152 | PERL_COPY_ON_WRITE 153 | PERL_DONT_CREATE_GVSV 154 | PERL_IMPLICIT_CONTEXT 155 | PERL_MALLOC_WRAP 156 | PERL_OP_PARENT 157 | PERL_PRESERVE_IVUV 158 | USE_64_BIT_ALL 159 | USE_64_BIT_INT 160 | USE_ITHREADS 161 | USE_LARGE_FILES 162 | USE_LOCALE 163 | USE_LOCALE_COLLATE 164 | USE_LOCALE_CTYPE 165 | USE_LOCALE_NUMERIC 166 | USE_LOCALE_TIME 167 | USE_PERLIO 168 | USE_PERL_ATOF 169 | USE_QUADMATH 170 | USE_REENTRANT_API 171 | USE_THREAD_SAFE_LOCALE 172 | Built under linux 173 | Compiled at Jun 19 2021 15:51:32 174 | %ENV: 175 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 176 | @INC: 177 | lib 178 | /pro/lib/perl5/site_perl/5.34.0/x86_64-linux-thread-multi-quadmath 179 | /pro/lib/perl5/site_perl/5.34.0 180 | /pro/lib/perl5/5.34.0/x86_64-linux-thread-multi-quadmath 181 | /pro/lib/perl5/5.34.0 182 | -------------------------------------------------------------------------------- /t/32_plv5261rc1.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Sep 19 2017 11:20:22", "Build time"); 25 | is ($conf->{config}{version}, "5.26.1", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_OP_PARENT 31 | PERL_TRACK_MEMPOOL PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 32 | PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 33 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 34 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "dd710670fec7d2e260414648dcc94e89"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [ "RC1" ], "No local patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 26, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "ccache cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E", 63 | config_args => "-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -Uversiononly -Dinc_version_list=none -des", 64 | gccversion => "4.8.3 20140627 [gcc-4_8-branch revision 212064]", 65 | gnulibc_version => "2.19", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "ccache cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector", 70 | ldflags => "-L/pro/local/lib -fstack-protector", 71 | libc => "libc-2.19.so", 72 | lseektype => "off_t", 73 | osvers => "3.16.7-32-desktop", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build has . in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 26 subversion 1) configuration: 88 | 89 | Platform: 90 | osname=linux 91 | osvers=3.16.7-32-desktop 92 | archname=x86_64-linux-thread-multi-ld 93 | uname='linux sv02 3.16.7-32-desktop #1 smp preempt wed jan 20 14:05:33 utc 2016 (d4df98a) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-Duse64bitall -Duselongdouble -Dusethreads -Duseithreads -Uversiononly -Dinc_version_list=none -des' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=define 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='ccache cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector' 111 | ccversion='' 112 | gccversion='4.8.3 20140627 [gcc-4_8-branch revision 212064]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='ccache cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector' 136 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -ldb -ldl -lm -lcrypt -lutil -lc 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=libc-2.19.so 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.19' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_IMPLICIT_CONTEXT 162 | PERL_MALLOC_WRAP 163 | PERL_OP_PARENT 164 | PERL_PRESERVE_IVUV 165 | PERL_TRACK_MEMPOOL 166 | USE_64_BIT_ALL 167 | USE_64_BIT_INT 168 | USE_ITHREADS 169 | USE_LARGE_FILES 170 | USE_LOCALE 171 | USE_LOCALE_COLLATE 172 | USE_LOCALE_CTYPE 173 | USE_LOCALE_NUMERIC 174 | USE_LOCALE_TIME 175 | USE_LONG_DOUBLE 176 | USE_PERLIO 177 | USE_PERL_ATOF 178 | USE_REENTRANT_API 179 | Locally applied patches: 180 | RC1 181 | Built under linux 182 | Compiled at Sep 19 2017 11:20:22 183 | @INC: 184 | /pro/lib/perl5/site_perl/5.26.1/x86_64-linux-thread-multi-ld 185 | /pro/lib/perl5/site_perl/5.26.1 186 | /pro/lib/perl5/5.26.1/x86_64-linux-thread-multi-ld 187 | /pro/lib/perl5/5.26.1 188 | -------------------------------------------------------------------------------- /t/33_plv52711r.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Apr 12 2018 13:37:01", "Build time"); 25 | is ($conf->{config}{version}, "5.27.11", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_TRACK_MEMPOOL PERL_IMPLICIT_CONTEXT 31 | PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_DEVEL 32 | USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 34 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "bd9cf7a142ddbb434adea5b08eaefdc8"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [], "Local patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 27, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E", 63 | config_args => "-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -des", 64 | gccversion => "7.3.1 20180307 [gcc-7-branch revision 258314]", 65 | gnulibc_version => "2.27", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.27.so", 72 | lseektype => "off_t", 73 | osvers => "4.16.0-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build does not have . in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 27 subversion 11) configuration: 88 | Snapshot of: 5f6af817add6d2df3603e0e94b6eb27ba5fb3970 89 | Platform: 90 | osname=linux 91 | osvers=4.16.0-1-default 92 | archname=x86_64-linux-thread-multi-ld 93 | uname='linux lx09 4.16.0-1-default #1 smp preempt wed apr 4 13:35:56 utc 2018 (e16f96d) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -des' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=define 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='7.3.1 20180307 [gcc-7-branch revision 258314]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=libc-2.27.so 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.27' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_IMPLICIT_CONTEXT 162 | PERL_MALLOC_WRAP 163 | PERL_OP_PARENT 164 | PERL_PRESERVE_IVUV 165 | PERL_TRACK_MEMPOOL 166 | PERL_USE_DEVEL 167 | USE_64_BIT_ALL 168 | USE_64_BIT_INT 169 | USE_ITHREADS 170 | USE_LARGE_FILES 171 | USE_LOCALE 172 | USE_LOCALE_COLLATE 173 | USE_LOCALE_CTYPE 174 | USE_LOCALE_NUMERIC 175 | USE_LOCALE_TIME 176 | USE_LONG_DOUBLE 177 | USE_PERLIO 178 | USE_PERL_ATOF 179 | USE_REENTRANT_API 180 | Built under linux 181 | Compiled at Apr 12 2018 13:37:01 182 | @INC: 183 | lib 184 | /pro/lib/perl5/site_perl/5.27.11/x86_64-linux-thread-multi-ld 185 | /pro/lib/perl5/site_perl/5.27.11 186 | /pro/lib/perl5/5.27.11/x86_64-linux-thread-multi-ld 187 | /pro/lib/perl5/5.27.11 188 | -------------------------------------------------------------------------------- /t/36_plv5300.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "May 23 2019 14:05:36", "Build time"); 25 | is ($conf->{config}{version}, "5.30.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 31 | PERL_OP_PARENT PERL_PRESERVE_IVUV USE_THREAD_SAFE_LOCALE 32 | USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES 33 | USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC 34 | USE_LOCALE_TIME USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF 35 | USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "b1138522685da4fff74f7b1118128d02"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 30, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld/CORE", 63 | config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des", 64 | gccversion => "8.3.1 20190226 [gcc-8-branch revision 269204]", 65 | gnulibc_version => "2.29", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.29.so", 72 | lseektype => "off_t", 73 | osvers => "5.1.3-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 30 subversion 0) configuration: 88 | 89 | Platform: 90 | osname=linux 91 | osvers=5.1.3-1-default 92 | archname=x86_64-linux-thread-multi-ld 93 | uname='linux lx09 5.1.3-1-default #1 smp fri may 17 04:54:29 utc 2019 (07d2e25) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=define 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='8.3.1 20190226 [gcc-8-branch revision 269204]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=libc-2.29.so 140 | so=so 141 | useshrplib=true 142 | libperl=libperl.so 143 | gnulibc_version='2.29' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld/CORE' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | HAS_TIMES 156 | MULTIPLICITY 157 | PERLIO_LAYERS 158 | PERL_COPY_ON_WRITE 159 | PERL_DONT_CREATE_GVSV 160 | PERL_IMPLICIT_CONTEXT 161 | PERL_MALLOC_WRAP 162 | PERL_OP_PARENT 163 | PERL_PRESERVE_IVUV 164 | USE_64_BIT_ALL 165 | USE_64_BIT_INT 166 | USE_ITHREADS 167 | USE_LARGE_FILES 168 | USE_LOCALE 169 | USE_LOCALE_COLLATE 170 | USE_LOCALE_CTYPE 171 | USE_LOCALE_NUMERIC 172 | USE_LOCALE_TIME 173 | USE_LONG_DOUBLE 174 | USE_PERLIO 175 | USE_PERL_ATOF 176 | USE_REENTRANT_API 177 | USE_THREAD_SAFE_LOCALE 178 | Built under linux 179 | Compiled at May 23 2019 14:05:36 180 | %ENV: 181 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 182 | @INC: 183 | /pro/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi-ld 184 | /pro/lib/perl5/site_perl/5.30.0 185 | /pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld 186 | /pro/lib/perl5/5.30.0 187 | -------------------------------------------------------------------------------- /doc/make-doc.pl: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use 5.038002; 4 | use warnings; 5 | 6 | our $VERSION = "0.04 - 20250113"; 7 | our $CMD = $0 =~ s{.*/}{}r; 8 | 9 | sub usage { 10 | my $err = shift and select STDERR; 11 | say "usage: $CMD [-v[#]]"; 12 | exit $err; 13 | } # usage 14 | 15 | use Cwd; 16 | use Pod::Text; 17 | use File::Find; 18 | use List::Util qw( first ); 19 | use Encode qw( encode decode ); 20 | use Getopt::Long qw(:config bundling); 21 | GetOptions ( 22 | "help|?" => sub { usage (0); }, 23 | "V|version" => sub { say "$CMD [$VERSION]"; exit 0; }, 24 | 25 | "v|verbose:1" => \(my $opt_v = 0), 26 | ) or usage (1); 27 | 28 | -d "doc" or mkdir "doc", 0775; 29 | 30 | my @pm; # Do *NOT* scan t/ 31 | -d "lib" and find (sub { m/\.pm$/ and push @pm => $File::Find::name }, "lib"); 32 | @pm or @pm = sort glob "*.pm"; 33 | if (@pm == 0 and open my $fh, "<", "Makefile.PL") { 34 | my @mpl = <$fh>; 35 | close $fh; 36 | if (my @vf = grep m/\bVERSION_FROM\s*=>\s*(.*)/) { 37 | push @pm => $vf[0] =~ s/["']//gr; 38 | last; 39 | } 40 | if (my @ef = grep m/\bEXE_FILES\s*=>\s*\[(.*)\]/) { 41 | push @pm => eval qq{($1)}; 42 | last; 43 | } 44 | } 45 | 46 | push @pm => @ARGV; 47 | @pm = sort grep { ! -l $_ } @pm; 48 | @pm or die "No documentation source files found\n"; 49 | 50 | if ($opt_v) { 51 | say "Using these sources for static documentation:"; 52 | say " $_" for @pm; 53 | } 54 | 55 | sub dext { 56 | my ($pm, $ext) = @_; 57 | my $fn = $pm =~ s{^lib/}{}r 58 | =~ s{^(?:App|scripts|examples)/}{}r 59 | =~ s{/}{-}gr 60 | =~ s{(?:\.pm)?$}{.$ext}r # examples, scripts 61 | =~ s{^(?=CSV_XS\.)}{Text-}r 62 | =~ s{^(?=Peek\.)} {Data-}r 63 | =~ s{^(?=Read\.)} {Spreadsheet-}r 64 | =~ s{^(SpeedTest)} {\L$1}ri 65 | =~ s{^}{doc/}r; 66 | getcwd =~ m/Config-Perl/ and 67 | $fn =~ s{doc/\K}{Config-Perl-}; 68 | $fn; 69 | } # dext 70 | 71 | my %enc; 72 | my %pod; 73 | { # Check if file had pod at all 74 | foreach my $pm (@pm) { 75 | open my $fh, ">", \$pod{$pm}; 76 | Pod::Text->new->parse_from_file ($pm, $fh); 77 | close $fh; 78 | } 79 | } 80 | 81 | eval { require Pod::Checker; }; 82 | if ($@) { 83 | warn "Cannot convert pod to markdown: $@\n"; 84 | } 85 | else { 86 | my $fail = 0; 87 | my %ignore_empty = ( 88 | "lib/DBI/ProfileData.pm" => 7, 89 | "Peek.pm" => 4, 90 | "Read.pm" => 5, 91 | ); 92 | foreach my $pm (@pm) { 93 | open my $eh, ">", \my $err; 94 | my $pc = Pod::Checker->new (); 95 | my $ok = $pc->parse_from_file ($pm, $eh); 96 | close $eh; 97 | $enc{$pm} = $pc->{encoding}; 98 | $err && $err =~ m/\S/ or next; 99 | # Ignore warnings here on empty previous paragraphs as it 100 | # uses =head2 for all possible invocation alternatives 101 | if (my $ni = $ignore_empty{$pm}) { 102 | my $pat = qr{ WARNING: empty section }; 103 | my @err = split m/\n+/ => $err; 104 | my @wrn = grep m/$pat/ => @err; 105 | @wrn == $ni and $err = join "\n" => grep !m/$pat/ => @err; 106 | $err =~ m/\S/ or next; 107 | } 108 | say $pm; 109 | say $err; 110 | $err =~ m/ ERROR:/ and $fail++; 111 | } 112 | $fail and die "POD has errors. Fix them first!\n"; 113 | } 114 | 115 | eval { require Pod::Markdown; }; 116 | if ($@) { 117 | warn "Cannot convert pod to markdown: $@\n"; 118 | } 119 | else { 120 | foreach my $pm (@pm) { 121 | my $md = dext ($pm, "md"); 122 | my $enc = $enc{$pm} ? "encoding($enc{$pm})" : "bytes"; 123 | printf STDERR "%-43s <- %s (%s)\n", $md, $pm, $enc if $opt_v; 124 | open my $ph, "<:$enc", $pm; 125 | my $p = Pod::Markdown->new (); 126 | $p->output_string (\my $m); 127 | $p->parse_file ($ph); 128 | close $ph; 129 | 130 | $m && $m =~ m/\S/ or next; 131 | if (open my $old, "<:encoding(utf-8)", $md) { 132 | local $/; 133 | $m eq scalar <$old> and next; 134 | } 135 | $opt_v and say "Writing $md (", length $m, ")"; 136 | open my $oh, ">:encoding(utf-8)", $md or die "$md: $!\n"; 137 | print $oh $m; 138 | close $oh; 139 | } 140 | } 141 | 142 | eval { require Pod::Html; }; 143 | if ($@) { 144 | warn "Cannot convert pod to HTML: $@\n"; 145 | } 146 | else { 147 | foreach my $pm (@pm) { 148 | $pod{$pm} or next; # Skip HTML for files without pod 149 | my $html = dext ($pm, "html"); 150 | printf STDERR "%-43s <- %s (%s)\n", $html, $pm, $enc{$pm} // "-" if $opt_v; 151 | my $tf = "x_$$.html"; 152 | unlink $tf if -e $tf; 153 | Pod::Html::pod2html ("--infile=$pm", "--outfile=$tf", "--quiet"); 154 | my $h = do { local (@ARGV, $/) = ($tf); <> } =~ s/[\r\n\s]+\z/\n/r; 155 | unlink $tf if -e $tf; 156 | $h && $h =~ m/\S/ or next; 157 | if (open my $old, "<:encoding(utf-8)", $html) { 158 | local $/; 159 | $h eq scalar <$old> and next; 160 | } 161 | $opt_v and say "Writing $html (", length $h, ")"; 162 | open my $oh, ">:encoding(utf-8)", $html or die "$html: $!\n"; 163 | print $oh $h; 164 | close $oh; 165 | } 166 | unlink "pod2htmd.tmp"; 167 | } 168 | 169 | eval { require Pod::Man; }; 170 | if ($@) { 171 | warn "Cannot convert pod to man: $@\n"; 172 | } 173 | else { 174 | my $nrf = first { -x } 175 | map { "$_/nroff" } 176 | grep { length and -d } 177 | split m/:+/ => $ENV{PATH}; 178 | $opt_v and say $nrf; 179 | foreach my $pm (@pm) { 180 | my $man = dext ($pm, "3"); 181 | printf STDERR "%-43s <- %s\n", $man, $pm if $opt_v; 182 | open my $fh, ">", \my $p; 183 | Pod::Man->new (section => 3)->parse_from_file ($pm, $fh); 184 | close $fh; 185 | $p && $p =~ m/\S/ or next; 186 | $p = decode ("utf-8", $p); 187 | if (open my $old, "<:encoding(utf-8)", $man) { 188 | local $/; 189 | $p eq scalar <$old> and next; 190 | } 191 | $opt_v and say "Writing $man (", length $p, ")"; 192 | open my $oh, ">:encoding(utf-8)", $man or die "$man: $!\n"; 193 | print $oh $p; 194 | close $oh; 195 | $nrf or next; 196 | if (open my $fh, "-|", $nrf, "-mandoc", "-T", "utf8", $man) { 197 | local $/; 198 | $p = <$fh>; 199 | close $fh; 200 | $p = decode ("utf-8", $p 201 | =~ s{(?:\x{02dc}|\xcb\x9c )}{~}grx # ~ 202 | =~ s{(?:\x{02c6}|\xcb\x86 )}{^}grx # ^ 203 | =~ s{(?:\x{2018}|\xe2\x80\x98 204 | |\x{2019}|\xe2\x80\x99 )}{'}grx # ' 205 | =~ s{(?:\x{201c}|\xe2\x80\x9c 206 | |\x{201d}|\xe2\x80\x9d )}{"}grx # " 207 | =~ s{(?:\x{2212}|\xe2\x88\x92 208 | |\x{2010}|\xe2\x80\x90 )}{-}grx # - 209 | =~ s{(?:\x{2022}|\xe2\x80\xa2 )}{*}grx # BULLET 210 | =~ s{(?:\e\[|\x9b)[0-9;]*m} {}grx); # colors 211 | } 212 | 213 | my $mfn = $man =~ s/3$/man/r; 214 | if (open my $mh, "<:encoding(utf-8)", $mfn) { 215 | local $/; 216 | $p eq <$mh> and next; 217 | } 218 | $opt_v and say "Writing $mfn (", length $p, ")"; 219 | open $oh, ">:encoding(utf-8)", $mfn or die "$mfn: $!\n"; 220 | # nroff / troff / grotty cause double-encoding 221 | print $oh encode ("iso-8859-1", decode ("utf-8", $p)); 222 | close $oh; 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /t/38_plv5320tld.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 21 2020 10:17:00", "Build time"); 25 | is ($conf->{config}{version}, "5.32.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 31 | PERL_OP_PARENT PERL_PRESERVE_IVUV USE_THREAD_SAFE_LOCALE 32 | USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES 33 | USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC 34 | USE_LOCALE_TIME USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF 35 | USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "901df8463a7bda6075bd75539214e75e"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 32, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld/CORE", 63 | config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des", 64 | gccversion => "10.1.1 20200507 [revision dd38686d9c810cecbaa80bb82ed91caaa58ad635]", 65 | gnulibc_version => "2.31", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.31.so", 72 | lseektype => "off_t", 73 | osvers => "5.7.1-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 32 subversion 0) configuration: 88 | 89 | Platform: 90 | osname=linux 91 | osvers=5.7.1-1-default 92 | archname=x86_64-linux-thread-multi-ld 93 | uname='linux lx09 5.7.1-1-default #1 smp wed jun 10 11:53:46 utc 2020 (6a549f6) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=define 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='10.1.1 20200507 [revision dd38686d9c810cecbaa80bb82ed91caaa58ad635]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=libc-2.31.so 140 | so=so 141 | useshrplib=true 142 | libperl=libperl.so 143 | gnulibc_version='2.31' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld/CORE' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | HAS_TIMES 156 | MULTIPLICITY 157 | PERLIO_LAYERS 158 | PERL_COPY_ON_WRITE 159 | PERL_DONT_CREATE_GVSV 160 | PERL_IMPLICIT_CONTEXT 161 | PERL_MALLOC_WRAP 162 | PERL_OP_PARENT 163 | PERL_PRESERVE_IVUV 164 | USE_64_BIT_ALL 165 | USE_64_BIT_INT 166 | USE_ITHREADS 167 | USE_LARGE_FILES 168 | USE_LOCALE 169 | USE_LOCALE_COLLATE 170 | USE_LOCALE_CTYPE 171 | USE_LOCALE_NUMERIC 172 | USE_LOCALE_TIME 173 | USE_LONG_DOUBLE 174 | USE_PERLIO 175 | USE_PERL_ATOF 176 | USE_REENTRANT_API 177 | USE_THREAD_SAFE_LOCALE 178 | Built under linux 179 | Compiled at Jun 21 2020 10:17:00 180 | %ENV: 181 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 182 | @INC: 183 | /pro/lib/perl5/site_perl/5.32.0/x86_64-linux-thread-multi-ld 184 | /pro/lib/perl5/site_perl/5.32.0 185 | /pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld 186 | /pro/lib/perl5/5.32.0 187 | -------------------------------------------------------------------------------- /t/31_plv52511.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Feb 27 2017 15:02:41", "Build time"); 25 | is ($conf->{config}{version}, "5.25.11", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_TRACK_MEMPOOL PERL_IMPLICIT_CONTEXT 31 | PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_DEVEL 32 | USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 34 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "f0e463400e40ca35b67cec3834b5b9b7"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, 54 | [ "SMOKEaa9ac6cf00899a6f55881d4ca6c1214215dc83ee" ], "Local patches"); 55 | 56 | my %check = ( 57 | alignbytes => 16, 58 | api_version => 25, 59 | bincompat5005 => "undef", 60 | byteorder => 12345678, 61 | cc => "cc", 62 | cccdlflags => "-fPIC", 63 | ccdlflags => "-Wl,-E", 64 | config_args => "-des -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING", 65 | gccversion => "6.3.1 20170202 [gcc-6-branch revision 245119]", 66 | gnulibc_version => "2.24", 67 | ivsize => 8, 68 | ivtype => "long", 69 | ld => "cc", 70 | lddlflags => "-shared -O2 -g -L/pro/local/lib -fstack-protector-strong", 71 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 72 | libc => "libc-2.24.so", 73 | lseektype => "off_t", 74 | osvers => "4.10.0-1-default", 75 | use64bitall => "define", 76 | use64bitint => "define", 77 | usemymalloc => "n", 78 | default_inc_excludes_dot 79 | => "undef", 80 | ); 81 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 82 | 83 | ok (my $info = summary ($conf), "A summary"); 84 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 85 | is ($info->{default_inc_excludes_dot}, "undef", "This build has . in INC"); 86 | 87 | __END__ 88 | Summary of my perl5 (revision 5 version 25 subversion 11) configuration: 89 | Snapshot of: aa9ac6cf00899a6f55881d4ca6c1214215dc83ee 90 | Platform: 91 | osname=linux 92 | osvers=4.10.0-1-default 93 | archname=x86_64-linux-thread-multi-ld 94 | uname='linux lx09 4.10.0-1-default #1 smp preempt mon feb 20 16:47:26 utc 2017 (81ace5a) x86_64 x86_64 x86_64 gnulinux ' 95 | config_args='-des -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING' 96 | hint=recommended 97 | useposix=true 98 | d_sigaction=define 99 | useithreads=define 100 | usemultiplicity=define 101 | use64bitint=define 102 | use64bitall=define 103 | uselongdouble=define 104 | usemymalloc=n 105 | default_inc_excludes_dot=undef 106 | bincompat5005=undef 107 | Compiler: 108 | cc='cc' 109 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' 110 | optimize='-O2 -g' 111 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 112 | ccversion='' 113 | gccversion='6.3.1 20170202 [gcc-6-branch revision 245119]' 114 | gccosandvers='' 115 | intsize=4 116 | longsize=8 117 | ptrsize=8 118 | doublesize=8 119 | byteorder=12345678 120 | doublekind=3 121 | d_longlong=define 122 | longlongsize=8 123 | d_longdbl=define 124 | longdblsize=16 125 | longdblkind=3 126 | ivtype='long' 127 | ivsize=8 128 | nvtype='long double' 129 | nvsize=16 130 | Off_t='off_t' 131 | lseeksize=8 132 | alignbytes=16 133 | prototype=define 134 | Linker and Libraries: 135 | ld='cc' 136 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 137 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/6/include-fixed /usr/lib64/gcc/x86_64-suse-linux/6/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 138 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 139 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 140 | libc=libc-2.24.so 141 | so=so 142 | useshrplib=false 143 | libperl=libperl.a 144 | gnulibc_version='2.24' 145 | Dynamic Linking: 146 | dlsrc=dl_dlopen.xs 147 | dlext=so 148 | d_dlsymun=undef 149 | ccdlflags='-Wl,-E' 150 | cccdlflags='-fPIC' 151 | lddlflags='-shared -O2 -g -L/pro/local/lib -fstack-protector-strong' 152 | 153 | 154 | Characteristics of this binary (from libperl): 155 | Compile-time options: 156 | DEBUGGING 157 | HAS_TIMES 158 | MULTIPLICITY 159 | PERLIO_LAYERS 160 | PERL_COPY_ON_WRITE 161 | PERL_DONT_CREATE_GVSV 162 | PERL_IMPLICIT_CONTEXT 163 | PERL_MALLOC_WRAP 164 | PERL_OP_PARENT 165 | PERL_PRESERVE_IVUV 166 | PERL_TRACK_MEMPOOL 167 | PERL_USE_DEVEL 168 | USE_64_BIT_ALL 169 | USE_64_BIT_INT 170 | USE_ITHREADS 171 | USE_LARGE_FILES 172 | USE_LOCALE 173 | USE_LOCALE_COLLATE 174 | USE_LOCALE_CTYPE 175 | USE_LOCALE_NUMERIC 176 | USE_LOCALE_TIME 177 | USE_LONG_DOUBLE 178 | USE_PERLIO 179 | USE_PERL_ATOF 180 | USE_REENTRANT_API 181 | Locally applied patches: 182 | SMOKEaa9ac6cf00899a6f55881d4ca6c1214215dc83ee 183 | Built under linux 184 | Compiled at Feb 27 2017 15:02:41 185 | @INC: 186 | lib 187 | /pro/lib/perl5/site_perl/5.25.11/x86_64-linux-thread-multi-ld 188 | /pro/lib/perl5/site_perl/5.25.11 189 | /pro/lib/perl5/5.25.11/x86_64-linux-thread-multi-ld 190 | /pro/lib/perl5/5.25.11 191 | . 192 | -------------------------------------------------------------------------------- /t/37_plv53111qm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Apr 9 2020 17:12:07", "Build time"); 25 | is ($conf->{config}{version}, "5.31.11", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERLIO_LAYERS 31 | PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL 32 | PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS 33 | USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE 34 | USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERL_ATOF USE_PERLIO 35 | USE_QUADMATH USE_REENTRANT_API USE_THREAD_SAFE_LOCALE 36 | )) { 37 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 38 | delete $opt->{$o}; 39 | } 40 | foreach my $o (sort keys %$opt) { 41 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 42 | } 43 | 44 | eval { require Digest::MD5; }; 45 | my $md5 = $@ ? "0" x 32 : "146e648c6239f623b8a8242fc8b5759f"; 46 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 47 | 48 | SKIP: { 49 | ord "A" == 65 or skip "ASCII-centric test", 1; 50 | is ($sig, $md5, "MD5"); 51 | } 52 | 53 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 31, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "cc", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E", 63 | config_args => "-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -des", 64 | gccversion => "10.0.1 20200302 (experimental) [revision 778a77357cad11e8dd4c810544330af0fbe843b1]", 65 | gnulibc_version => "2.31", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "cc", 69 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.31.so", 72 | lseektype => "off_t", 73 | osvers => "5.6.2-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 31 subversion 11) configuration: 88 | Snapshot of: +0300 89 | Platform: 90 | osname=linux 91 | osvers=5.6.2-1-default 92 | archname=x86_64-linux-thread-multi-quadmath 93 | uname='linux lx09 5.6.2-1-default #1 smp thu apr 2 06:31:32 utc 2020 (c8170d6) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -des' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=undef 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='10.0.1 20200302 (experimental) [revision 778a77357cad11e8dd4c810544330af0fbe843b1]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='__float128' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lquadmath 139 | libc=libc-2.31.so 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.31' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_IMPLICIT_CONTEXT 162 | PERL_MALLOC_WRAP 163 | PERL_OP_PARENT 164 | PERL_PRESERVE_IVUV 165 | PERL_TRACK_MEMPOOL 166 | PERL_USE_DEVEL 167 | USE_64_BIT_ALL 168 | USE_64_BIT_INT 169 | USE_ITHREADS 170 | USE_LARGE_FILES 171 | USE_LOCALE 172 | USE_LOCALE_COLLATE 173 | USE_LOCALE_CTYPE 174 | USE_LOCALE_NUMERIC 175 | USE_LOCALE_TIME 176 | USE_PERLIO 177 | USE_PERL_ATOF 178 | USE_QUADMATH 179 | USE_REENTRANT_API 180 | USE_THREAD_SAFE_LOCALE 181 | Built under linux 182 | Compiled at Apr 9 2020 17:12:07 183 | %ENV: 184 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 185 | @INC: 186 | lib 187 | /pro/lib/perl5/site_perl/5.31.11/x86_64-linux-thread-multi-quadmath 188 | /pro/lib/perl5/site_perl/5.31.11 189 | /pro/lib/perl5/5.31.11/x86_64-linux-thread-multi-quadmath 190 | /pro/lib/perl5/5.31.11 191 | -------------------------------------------------------------------------------- /t/42_plv5373tld.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 137; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Aug 21 2022 08:56:37", "Build time"); 25 | is ($conf->{config}{version}, "5.37.3", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE 30 | PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_SIPHASH13 PERL_HASH_USE_SBOX32 31 | PERLIO_LAYERS PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV 32 | PERL_TRACK_MEMPOOL PERL_USE_DEVEL PERL_USE_SAFE_PUTENV USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE 34 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERL_ATOF USE_PERLIO USE_REENTRANT_API 36 | USE_THREAD_SAFE_LOCALE 37 | )) { 38 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 39 | delete $opt->{$o}; 40 | } 41 | foreach my $o (sort keys %$opt) { 42 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 43 | } 44 | 45 | eval { require Digest::MD5; }; 46 | my $md5 = $@ ? "0" x 32 : "ff4175ca52fccf9c03c33d34af942b0d"; 47 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 48 | 49 | SKIP: { 50 | ord "A" == 65 or skip "ASCII-centric test", 1; 51 | is ($sig, $md5, "MD5"); 52 | } 53 | 54 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 55 | 56 | my %check = ( 57 | alignbytes => 16, 58 | api_version => 37, 59 | bincompat5005 => undef, # GONE, chainsawed 60 | byteorder => 12345678, 61 | cc => "cc", 62 | cccdlflags => "-fPIC", 63 | ccdlflags => "-Wl,-E", 64 | config_args => "-Dusedevel -Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -desr -Dusedevel -Uinstallusrbinperl -Dprefix=/media/Tux/perls-t", 65 | gccversion => "12.1.1 20220812 [revision 6b7d570a5001bb79e34c0d1626a8c7f55386dac7]", 66 | gnulibc_version => "2.35", 67 | ivsize => 8, 68 | ivtype => "long", 69 | ld => "cc", 70 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 71 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 72 | libc => "/lib/../lib64/libc.so.6", 73 | lseektype => "off_t", 74 | osvers => "5.19.1-1-default", 75 | use64bitall => "define", 76 | use64bitint => "define", 77 | usemymalloc => "n", 78 | default_inc_excludes_dot 79 | => "define", 80 | ); 81 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 82 | 83 | ok (my $info = summary ($conf), "A summary"); 84 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 85 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 86 | 87 | __END__ 88 | Summary of my perl5 (revision 5 version 37 subversion 3) configuration: 89 | 90 | Platform: 91 | osname=linux 92 | osvers=5.19.1-1-default 93 | archname=x86_64-linux-thread-multi-ld 94 | uname='linux lx09 5.19.1-1-default #1 smp preempt_dynamic thu aug 11 11:32:52 utc 2022 (a5bf6c0) x86_64 x86_64 x86_64 gnulinux ' 95 | config_args='-Dusedevel -Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -desr -Dusedevel -Uinstallusrbinperl -Dprefix=/media/Tux/perls-t' 96 | hint=recommended 97 | useposix=true 98 | d_sigaction=define 99 | useithreads=define 100 | usemultiplicity=define 101 | use64bitint=define 102 | use64bitall=define 103 | uselongdouble=define 104 | usemymalloc=n 105 | default_inc_excludes_dot=define 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='12.1.1 20220812 [revision 6b7d570a5001bb79e34c0d1626a8c7f55386dac7]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=/lib/../lib64/libc.so.6 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.35' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_HASH_FUNC_SIPHASH13 162 | PERL_HASH_USE_SBOX32 163 | PERL_MALLOC_WRAP 164 | PERL_OP_PARENT 165 | PERL_PRESERVE_IVUV 166 | PERL_TRACK_MEMPOOL 167 | PERL_USE_DEVEL 168 | PERL_USE_SAFE_PUTENV 169 | USE_64_BIT_ALL 170 | USE_64_BIT_INT 171 | USE_ITHREADS 172 | USE_LARGE_FILES 173 | USE_LOCALE 174 | USE_LOCALE_COLLATE 175 | USE_LOCALE_CTYPE 176 | USE_LOCALE_NUMERIC 177 | USE_LOCALE_TIME 178 | USE_LONG_DOUBLE 179 | USE_PERLIO 180 | USE_PERL_ATOF 181 | USE_REENTRANT_API 182 | USE_THREAD_SAFE_LOCALE 183 | Built under linux 184 | Compiled at Aug 21 2022 08:56:37 185 | %ENV: 186 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 187 | @INC: 188 | /media/Tux/perls-t/lib/site_perl/5.37.3/x86_64-linux-thread-multi-ld 189 | /media/Tux/perls-t/lib/site_perl/5.37.3 190 | /media/Tux/perls-t/lib/5.37.3/x86_64-linux-thread-multi-ld 191 | /media/Tux/perls-t/lib/5.37.3 192 | -------------------------------------------------------------------------------- /t/45_plv5400tqm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 137; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jun 10 2024 10:14:20", "Build time"); 25 | is ($conf->{config}{version}, "5.40.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_LONG_DOUBLE HAS_STRTOLD HAS_TIMES MULTIPLICITY 30 | PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_SIPHASH13 31 | PERL_HASH_USE_SBOX32 PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV 32 | PERL_TRACK_MEMPOOL PERL_USE_SAFE_PUTENV PERLIO_LAYERS USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE 34 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_PERL_ATOF USE_PERLIO USE_QUADMATH USE_REENTRANT_API 36 | USE_THREAD_SAFE_LOCALE 37 | )) { 38 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 39 | delete $opt->{$o}; 40 | } 41 | foreach my $o (sort keys %$opt) { 42 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 43 | } 44 | 45 | eval { require Digest::MD5; }; 46 | my $md5 = $@ ? "0" x 32 : "83aed22122624285f6c4faaab38547ef"; 47 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 48 | 49 | SKIP: { 50 | ord "A" == 65 or skip "ASCII-centric test", 1; 51 | is ($sig, $md5, "MD5"); 52 | } 53 | 54 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 55 | 56 | my %check = ( 57 | alignbytes => 16, 58 | api_version => 40, 59 | bincompat5005 => undef, # GONE, chainsawed 60 | byteorder => 12345678, 61 | cc => "cc", 62 | cccdlflags => "-fPIC", 63 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.40.0/x86_64-linux-thread-multi-quadmath/CORE", 64 | config_args => "-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des", 65 | gccversion => "13.3.0", 66 | gnulibc_version => "2.39", 67 | ivsize => 8, 68 | ivtype => "long", 69 | ld => "cc", 70 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 71 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 72 | libc => "/lib/../lib64/libc.so.6", 73 | lseektype => "off_t", 74 | osvers => "6.9.3-1-default", 75 | use64bitall => "define", 76 | use64bitint => "define", 77 | usemymalloc => "n", 78 | default_inc_excludes_dot 79 | => "define", 80 | ); 81 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 82 | 83 | ok (my $info = summary ($conf), "A summary"); 84 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 85 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 86 | 87 | __END__ 88 | Summary of my perl5 (revision 5 version 40 subversion 0) configuration: 89 | 90 | Platform: 91 | osname=linux 92 | osvers=6.9.3-1-default 93 | archname=x86_64-linux-thread-multi-quadmath 94 | uname='linux lx09 6.9.3-1-default #1 smp preempt_dynamic thu may 30 08:29:01 utc 2024 (279162a) x86_64 x86_64 x86_64 gnulinux ' 95 | config_args='-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des' 96 | hint=recommended 97 | useposix=true 98 | d_sigaction=define 99 | useithreads=define 100 | usemultiplicity=define 101 | use64bitint=define 102 | use64bitall=define 103 | uselongdouble=undef 104 | usemymalloc=n 105 | default_inc_excludes_dot=define 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='13.3.0' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='__float128' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /pro/local/lib /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 138 | perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc -lquadmath 139 | libc=/lib/../lib64/libc.so.6 140 | so=so 141 | useshrplib=true 142 | libperl=libperl.so 143 | gnulibc_version='2.39' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.40.0/x86_64-linux-thread-multi-quadmath/CORE' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_LONG_DOUBLE 157 | HAS_STRTOLD 158 | HAS_TIMES 159 | MULTIPLICITY 160 | PERLIO_LAYERS 161 | PERL_COPY_ON_WRITE 162 | PERL_DONT_CREATE_GVSV 163 | PERL_HASH_FUNC_SIPHASH13 164 | PERL_HASH_USE_SBOX32 165 | PERL_MALLOC_WRAP 166 | PERL_OP_PARENT 167 | PERL_PRESERVE_IVUV 168 | PERL_TRACK_MEMPOOL 169 | PERL_USE_SAFE_PUTENV 170 | USE_64_BIT_ALL 171 | USE_64_BIT_INT 172 | USE_ITHREADS 173 | USE_LARGE_FILES 174 | USE_LOCALE 175 | USE_LOCALE_COLLATE 176 | USE_LOCALE_CTYPE 177 | USE_LOCALE_NUMERIC 178 | USE_LOCALE_TIME 179 | USE_PERLIO 180 | USE_PERL_ATOF 181 | USE_QUADMATH 182 | USE_REENTRANT_API 183 | USE_THREAD_SAFE_LOCALE 184 | Built under linux 185 | Compiled at Jun 10 2024 10:14:20 186 | %ENV: 187 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 188 | @INC: 189 | /pro/lib/perl5/site_perl/5.40.0/x86_64-linux-thread-multi-quadmath 190 | /pro/lib/perl5/site_perl/5.40.0 191 | /pro/lib/perl5/5.40.0/x86_64-linux-thread-multi-quadmath 192 | /pro/lib/perl5/5.40.0 193 | -------------------------------------------------------------------------------- /t/35_plv52910g.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 136; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Apr 13 2019 00:06:38", "Build time"); 25 | is ($conf->{config}{version}, "5.29.10", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV 30 | PERL_IMPLICIT_CONTEXT PERLIO_LAYERS PERL_MALLOC_WRAP PERL_OP_PARENT 31 | PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL PERL_USE_DEVEL USE_64_BIT_ALL 32 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE 33 | USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_LONG_DOUBLE 34 | USE_PERL_ATOF USE_PERLIO USE_REENTRANT_API USE_THREAD_SAFE_LOCALE 35 | )) { 36 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 37 | delete $opt->{$o}; 38 | } 39 | foreach my $o (sort keys %$opt) { 40 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 41 | } 42 | 43 | eval { require Digest::MD5; }; 44 | my $md5 = $@ ? "0" x 32 : "8404b533829bd9752df7f662a710f993"; 45 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 46 | 47 | SKIP: { 48 | ord "A" == 65 or skip "ASCII-centric test", 1; 49 | is ($sig, $md5, "MD5"); 50 | } 51 | 52 | is_deeply ($conf->{build}{patches}, [ 53 | "SMOKEdfba4714a9dc4c35123b4df0a5e1721ccb081d97" ], "No local patches"); 54 | 55 | my %check = ( 56 | alignbytes => 16, 57 | api_version => 29, 58 | bincompat5005 => "undef", 59 | byteorder => 12345678, 60 | cc => "g++", 61 | cccdlflags => "-fPIC", 62 | ccdlflags => "-Wl,-E", 63 | config_args => "-des -Dcc=g++ -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING", 64 | gccversion => "8.3.1 20190226 [gcc-8-branch revision 269204]", 65 | gnulibc_version => "2.29", 66 | ivsize => 8, 67 | ivtype => "long", 68 | ld => "g++", 69 | lddlflags => "-shared -O2 -g -L/pro/local/lib -fstack-protector-strong", 70 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 71 | libc => "libc-2.29.so", 72 | lseektype => "off_t", 73 | osvers => "5.0.7-1-default", 74 | use64bitall => "define", 75 | use64bitint => "define", 76 | usemymalloc => "n", 77 | default_inc_excludes_dot 78 | => "define", 79 | ); 80 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 81 | 82 | ok (my $info = summary ($conf), "A summary"); 83 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 84 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 85 | 86 | __END__ 87 | Summary of my perl5 (revision 5 version 29 subversion 10) configuration: 88 | Snapshot of: dfba4714a9dc4c35123b4df0a5e1721ccb081d97 89 | Platform: 90 | osname=linux 91 | osvers=5.0.7-1-default 92 | archname=x86_64-linux-thread-multi-ld 93 | uname='linux lx09 5.0.7-1-default #1 smp sat apr 6 14:47:49 utc 2019 (8f18342) x86_64 x86_64 x86_64 gnulinux ' 94 | config_args='-des -Dcc=g++ -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING' 95 | hint=recommended 96 | useposix=true 97 | d_sigaction=define 98 | useithreads=define 99 | usemultiplicity=define 100 | use64bitint=define 101 | use64bitall=define 102 | uselongdouble=define 103 | usemymalloc=n 104 | default_inc_excludes_dot=define 105 | bincompat5005=undef 106 | Compiler: 107 | cc='g++' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2 -g' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='8.3.1 20190226 [gcc-8-branch revision 269204]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='g++' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/include/c++/8 /usr/include/c++/8/x86_64-suse-linux /usr/include/c++/8/backward /usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 139 | libc=libc-2.29.so 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.29' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -g -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_IMPLICIT_CONTEXT 162 | PERL_MALLOC_WRAP 163 | PERL_OP_PARENT 164 | PERL_PRESERVE_IVUV 165 | PERL_TRACK_MEMPOOL 166 | PERL_USE_DEVEL 167 | USE_64_BIT_ALL 168 | USE_64_BIT_INT 169 | USE_ITHREADS 170 | USE_LARGE_FILES 171 | USE_LOCALE 172 | USE_LOCALE_COLLATE 173 | USE_LOCALE_CTYPE 174 | USE_LOCALE_NUMERIC 175 | USE_LOCALE_TIME 176 | USE_LONG_DOUBLE 177 | USE_PERLIO 178 | USE_PERL_ATOF 179 | USE_REENTRANT_API 180 | USE_THREAD_SAFE_LOCALE 181 | Locally applied patches: 182 | SMOKEdfba4714a9dc4c35123b4df0a5e1721ccb081d97 183 | Built under linux 184 | Compiled at Apr 13 2019 00:06:38 185 | %ENV: 186 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 187 | @INC: 188 | lib 189 | /opt/perl/lib/site_perl/5.29.10/x86_64-linux-thread-multi-ld 190 | /opt/perl/lib/site_perl/5.29.10 191 | /opt/perl/lib/5.29.10/x86_64-linux-thread-multi-ld 192 | /opt/perl/lib/5.29.10 193 | -------------------------------------------------------------------------------- /t/44_plv5380tqm.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 137; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Jul 3 2023 10:00:01", "Build time"); 25 | is ($conf->{config}{version}, "5.38.0", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_LONG_DOUBLE HAS_STRTOLD HAS_TIMES MULTIPLICITY 30 | PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_SIPHASH13 31 | PERL_HASH_USE_SBOX32 PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV 32 | PERL_TRACK_MEMPOOL PERL_USE_SAFE_PUTENV PERLIO_LAYERS USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE 34 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_PERL_ATOF USE_PERLIO USE_QUADMATH USE_REENTRANT_API 36 | USE_THREAD_SAFE_LOCALE 37 | )) { 38 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 39 | delete $opt->{$o}; 40 | } 41 | foreach my $o (sort keys %$opt) { 42 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 43 | } 44 | 45 | eval { require Digest::MD5; }; 46 | my $md5 = $@ ? "0" x 32 : "63ce15c92a743ca531815e549f7ac06c"; 47 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 48 | 49 | SKIP: { 50 | ord "A" == 65 or skip "ASCII-centric test", 1; 51 | is ($sig, $md5, "MD5"); 52 | } 53 | 54 | is_deeply ($conf->{build}{patches}, [ ], "No patches"); 55 | 56 | my %check = ( 57 | alignbytes => 16, 58 | api_version => 38, 59 | bincompat5005 => undef, # GONE, chainsawed 60 | byteorder => 12345678, 61 | cc => "cc", 62 | cccdlflags => "-fPIC", 63 | ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.38.0/x86_64-linux-thread-multi-quadmath/CORE", 64 | config_args => "-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des", 65 | gccversion => "13.1.1 20230522 [revision dd36656ada05731c069ecd5b1878380294fb1f3e]", 66 | gnulibc_version => "2.37", 67 | ivsize => 8, 68 | ivtype => "long", 69 | ld => "cc", 70 | lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", 71 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 72 | libc => "/lib/../lib64/libc.so.6", 73 | lseektype => "off_t", 74 | osvers => "6.3.9-1-default", 75 | use64bitall => "define", 76 | use64bitint => "define", 77 | usemymalloc => "n", 78 | default_inc_excludes_dot 79 | => "define", 80 | ); 81 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 82 | 83 | ok (my $info = summary ($conf), "A summary"); 84 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 85 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 86 | 87 | __END__ 88 | Summary of my perl5 (revision 5 version 38 subversion 0) configuration: 89 | 90 | Platform: 91 | osname=linux 92 | osvers=6.3.9-1-default 93 | archname=x86_64-linux-thread-multi-quadmath 94 | uname='linux lx09 6.3.9-1-default #1 smp preempt_dynamic thu jun 22 03:53:43 utc 2023 (0df701d) x86_64 x86_64 x86_64 gnulinux ' 95 | config_args='-Uversiononly -Dinc_version_list=none -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -Duseshrplib -des' 96 | hint=recommended 97 | useposix=true 98 | d_sigaction=define 99 | useithreads=define 100 | usemultiplicity=define 101 | use64bitint=define 102 | use64bitall=define 103 | uselongdouble=undef 104 | usemymalloc=n 105 | default_inc_excludes_dot=define 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O2' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='13.1.1 20230522 [revision dd36656ada05731c069ecd5b1878380294fb1f3e]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='__float128' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath 138 | perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc -lquadmath 139 | libc=/lib/../lib64/libc.so.6 140 | so=so 141 | useshrplib=true 142 | libperl=libperl.so 143 | gnulibc_version='2.37' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.38.0/x86_64-linux-thread-multi-quadmath/CORE' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_LONG_DOUBLE 157 | HAS_STRTOLD 158 | HAS_TIMES 159 | MULTIPLICITY 160 | PERLIO_LAYERS 161 | PERL_COPY_ON_WRITE 162 | PERL_DONT_CREATE_GVSV 163 | PERL_HASH_FUNC_SIPHASH13 164 | PERL_HASH_USE_SBOX32 165 | PERL_MALLOC_WRAP 166 | PERL_OP_PARENT 167 | PERL_PRESERVE_IVUV 168 | PERL_TRACK_MEMPOOL 169 | PERL_USE_SAFE_PUTENV 170 | USE_64_BIT_ALL 171 | USE_64_BIT_INT 172 | USE_ITHREADS 173 | USE_LARGE_FILES 174 | USE_LOCALE 175 | USE_LOCALE_COLLATE 176 | USE_LOCALE_CTYPE 177 | USE_LOCALE_NUMERIC 178 | USE_LOCALE_TIME 179 | USE_PERLIO 180 | USE_PERL_ATOF 181 | USE_QUADMATH 182 | USE_REENTRANT_API 183 | USE_THREAD_SAFE_LOCALE 184 | Built under linux 185 | Compiled at Jul 3 2023 10:00:01 186 | %ENV: 187 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 188 | @INC: 189 | /pro/lib/perl5/site_perl/5.38.0/x86_64-linux-thread-multi-quadmath 190 | /pro/lib/perl5/site_perl/5.38.0 191 | /pro/lib/perl5/5.38.0/x86_64-linux-thread-multi-quadmath 192 | /pro/lib/perl5/5.38.0 193 | -------------------------------------------------------------------------------- /t/43_plv53710rcs.t: -------------------------------------------------------------------------------- 1 | #!/pro/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | BEGIN { 7 | use Test::More; 8 | my $tests = 137; 9 | unless ($ENV{PERL_CORE}) { 10 | require Test::NoWarnings; 11 | Test::NoWarnings->import (); 12 | $tests++; 13 | } 14 | 15 | plan tests => $tests; 16 | } 17 | 18 | use Config::Perl::V qw( summary ); 19 | 20 | ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); 21 | ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); 22 | 23 | is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); 24 | is ($conf->{build}{stamp}, "Feb 28 2023 18:30:03", "Build time"); 25 | is ($conf->{config}{version}, "5.37.10", "reconstructed \$Config{version}"); 26 | 27 | my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; 28 | foreach my $o (sort qw( 29 | DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE PERL_RC_STACK 30 | PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_SIPHASH13 PERL_HASH_USE_SBOX32 31 | PERLIO_LAYERS PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV 32 | PERL_TRACK_MEMPOOL PERL_USE_DEVEL PERL_USE_SAFE_PUTENV USE_64_BIT_ALL 33 | USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE 34 | USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME 35 | USE_LONG_DOUBLE USE_PERL_ATOF USE_PERLIO USE_REENTRANT_API 36 | USE_THREAD_SAFE_LOCALE 37 | )) { 38 | is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); 39 | delete $opt->{$o}; 40 | } 41 | foreach my $o (sort keys %$opt) { 42 | is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); 43 | } 44 | 45 | eval { require Digest::MD5; }; 46 | my $md5 = $@ ? "0" x 32 : "964776ac5595a8a584dfba7ee063e4b9"; 47 | ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); 48 | 49 | SKIP: { 50 | ord "A" == 65 or skip "ASCII-centric test", 1; 51 | is ($sig, $md5, "MD5"); 52 | } 53 | 54 | is_deeply ($conf->{build}{patches}, [ "uncommitted-changes" ], "No patches"); 55 | 56 | my %check = ( 57 | alignbytes => 16, 58 | api_version => 37, 59 | bincompat5005 => undef, # GONE, chainsawed 60 | byteorder => 12345678, 61 | cc => "cc", 62 | cccdlflags => "-fPIC", 63 | ccdlflags => "-Wl,-E", 64 | config_args => "-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -Doptimize='-O0\\ -g' -Accflags=-DPERL_RC_STACK -des", 65 | gccversion => "12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27]", 66 | gnulibc_version => "2.37", 67 | ivsize => 8, 68 | ivtype => "long", 69 | ld => "cc", 70 | lddlflags => "-shared -O0 -g -L/pro/local/lib -fstack-protector-strong", 71 | ldflags => "-L/pro/local/lib -fstack-protector-strong", 72 | libc => "/lib/../lib64/libc.so.6", 73 | lseektype => "off_t", 74 | osvers => "6.1.12-1-default", 75 | use64bitall => "define", 76 | use64bitint => "define", 77 | usemymalloc => "n", 78 | default_inc_excludes_dot 79 | => "define", 80 | ); 81 | is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; 82 | 83 | ok (my $info = summary ($conf), "A summary"); 84 | ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); 85 | is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); 86 | 87 | __END__ 88 | Summary of my perl5 (revision 5 version 37 subversion 10) configuration: 89 | Derived from: f0cf813c73daf1ae652b454fc8bc4828aec1f049 90 | Platform: 91 | osname=linux 92 | osvers=6.1.12-1-default 93 | archname=x86_64-linux-thread-multi-ld 94 | uname='linux lx09 6.1.12-1-default #1 smp preempt_dynamic wed feb 15 05:31:41 utc 2023 (373f017) x86_64 x86_64 x86_64 gnulinux ' 95 | config_args='-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -Doptimize='-O0\ -g' -Accflags=-DPERL_RC_STACK -des' 96 | hint=recommended 97 | useposix=true 98 | d_sigaction=define 99 | useithreads=define 100 | usemultiplicity=define 101 | use64bitint=define 102 | use64bitall=define 103 | uselongdouble=define 104 | usemymalloc=n 105 | default_inc_excludes_dot=define 106 | Compiler: 107 | cc='cc' 108 | ccflags ='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -DPERL_RC_STACK -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' 109 | optimize='-O0 -g' 110 | cppflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -DPERL_RC_STACK -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' 111 | ccversion='' 112 | gccversion='12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27]' 113 | gccosandvers='' 114 | intsize=4 115 | longsize=8 116 | ptrsize=8 117 | doublesize=8 118 | byteorder=12345678 119 | doublekind=3 120 | d_longlong=define 121 | longlongsize=8 122 | d_longdbl=define 123 | longdblsize=16 124 | longdblkind=3 125 | ivtype='long' 126 | ivsize=8 127 | nvtype='long double' 128 | nvsize=16 129 | Off_t='off_t' 130 | lseeksize=8 131 | alignbytes=16 132 | prototype=define 133 | Linker and Libraries: 134 | ld='cc' 135 | ldflags ='-L/pro/local/lib -fstack-protector-strong' 136 | libpth=/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 137 | libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat 138 | perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc 139 | libc=/lib/../lib64/libc.so.6 140 | so=so 141 | useshrplib=false 142 | libperl=libperl.a 143 | gnulibc_version='2.37' 144 | Dynamic Linking: 145 | dlsrc=dl_dlopen.xs 146 | dlext=so 147 | d_dlsymun=undef 148 | ccdlflags='-Wl,-E' 149 | cccdlflags='-fPIC' 150 | lddlflags='-shared -O0 -g -L/pro/local/lib -fstack-protector-strong' 151 | 152 | 153 | Characteristics of this binary (from libperl): 154 | Compile-time options: 155 | DEBUGGING 156 | HAS_TIMES 157 | MULTIPLICITY 158 | PERLIO_LAYERS 159 | PERL_COPY_ON_WRITE 160 | PERL_DONT_CREATE_GVSV 161 | PERL_HASH_FUNC_SIPHASH13 162 | PERL_HASH_USE_SBOX32 163 | PERL_MALLOC_WRAP 164 | PERL_OP_PARENT 165 | PERL_PRESERVE_IVUV 166 | PERL_RC_STACK 167 | PERL_TRACK_MEMPOOL 168 | PERL_USE_DEVEL 169 | PERL_USE_SAFE_PUTENV 170 | USE_64_BIT_ALL 171 | USE_64_BIT_INT 172 | USE_ITHREADS 173 | USE_LARGE_FILES 174 | USE_LOCALE 175 | USE_LOCALE_COLLATE 176 | USE_LOCALE_CTYPE 177 | USE_LOCALE_NUMERIC 178 | USE_LOCALE_TIME 179 | USE_LONG_DOUBLE 180 | USE_PERLIO 181 | USE_PERL_ATOF 182 | USE_REENTRANT_API 183 | USE_THREAD_SAFE_LOCALE 184 | Locally applied patches: 185 | uncommitted-changes 186 | Built under linux 187 | Compiled at Feb 28 2023 18:30:03 188 | %ENV: 189 | PERL5LIB="/pro/3gl/CPAN/perl-git/lib" 190 | PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" 191 | PERL_ARCHLIB="/pro/3gl/CPAN/perl-git" 192 | PERL_CORE="1" 193 | PERL_INC="/pro/3gl/CPAN/perl-git" 194 | PERL_LIB="/pro/3gl/CPAN/perl-git/lib" 195 | PERL_SRC="/pro/3gl/CPAN/perl-git" 196 | @INC: 197 | /pro/3gl/CPAN/perl-git/lib 198 | /pro/3gl/CPAN/perl-git/lib 199 | /pro/lib/perl5/site_perl/5.37.10/x86_64-linux-thread-multi-ld 200 | /pro/lib/perl5/site_perl/5.37.10 201 | /pro/lib/perl5/5.37.10/x86_64-linux-thread-multi-ld 202 | /pro/lib/perl5/5.37.10 203 | --------------------------------------------------------------------------------