From 85f314833b6f39b4707c5acdbbdcb0dbe76b5379 Mon Sep 17 00:00:00 2001 From: chylli-deriv Date: Tue, 19 Mar 2024 11:36:29 +0800 Subject: [PATCH 1/9] update README --- .github/dependabot.yaml | 6 ++++ .github/workflows/build_workflow.yml | 48 ++++++++++++++++++++++++++++ README.md | 23 +++++++------ rebuild.sh | 15 ++++++--- 4 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/build_workflow.yml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..8ac6b8c4 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml new file mode 100644 index 00000000..ec0dfea4 --- /dev/null +++ b/.github/workflows/build_workflow.yml @@ -0,0 +1,48 @@ +name: Build workflow +run-name: Build workflow +on: + push: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true +jobs: + build: + runs-on: ubuntu-latest # Maybe here is a blocker + container: + image: debian:bullseye + defaults: + run: + shell: bash -le {0} + env: + BRANCH: ${{ github.ref_name }} + steps: + - name: prepare + + run: | + apt-get update + apt-get -y dist-upgrade + apt-get -y install locales build-essential gettext libpq5 libpq-dev make gcc git openssh-client curl wget sudo lsb-release socat redis-server cmake + echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen + locale-gen + if [[ ! $BRANCH =~ perl-[0-9]+\.[0-9]+\.[0-9]+ ]]; then + echo "Error: Branch name must be perl-" + exit 1 + fi + VERSION=$(echo $BRANCH | sed -e 's/.*perl-\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/') + + echo "VERSION=$VERSION" | tee -a $GITHUB_ENV + git config --global user.email "cibot@deriv.com" + git config --global user.name "ci bot" + git config --global --add safe.directory $PWD # ignore ownership problem + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4 + - name: compile + run: | + bash ./rebuild.sh + - name: push + run: | + rm -rf lib bin man + mv /home/git/binary-com/perl/{bin,lib} . + git add lib bin + git commit -m "[ci skip] compile $VERSION" + git push origin HEAD:$BRANCH diff --git a/README.md b/README.md index 78656f4e..9d82ab01 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,19 @@ # perl -Custom compiled perl for Binary.com -# compiling steps +Custom compiled perl for Binary.com -Download source code from http://www.cpan.org/src/5.0/perl-5.26.2.tar.gz +## compiling steps -We defined `-Dusesitecustomize` and removed `-Dusethreads`. Most of other parameters are copied from `perl -V | grep config_args` -Run following command: -``` -./Configure -Dusesitecustomize -Dinc_version_list=none -Dprefix=/home/git/binary-com/perl -Dvendorprefix=/home/git/regentmarkets/cpan/local -Dvendorlib=/home/git/regentmarkets/cpan/local/lib/perl5 -Dvendorarch=/home/git/regentmarkets/cpan/local/lib/perl5/x86_64-linux -Duselargefiles -Dccflags="-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" -Dldflags=" -Wl,-z,relro" -Dlddlflags="-shared -Wl,-z,relro" -Dcccdlflags="-fPIC" -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Uuseithreads -Uusemultiplicity -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -des -make -make install +```bash +VERSION=5.26.1 ./rebuild.sh ``` + +## compiling it with CI + +1. enable CI test in your forked repo : + at https://github.com/username/perl/settings/actions set `Allow all actions and reusable workflows` + and `Read and write permissions`. Don't forget to click `save` at both section. +2. Or create a new branch directly on binary-com/perl repo +3. create a branch whose name include a perl version `perl-x.yy.zz`, e.g. `upgrade/perl.5.38.2` + +Then CI will download and compile perl and push it to your branch diff --git a/rebuild.sh b/rebuild.sh index b1dd9846..215f622d 100755 --- a/rebuild.sh +++ b/rebuild.sh @@ -1,10 +1,16 @@ #!/bin/bash set -e -wget http://www.cpan.org/src/5.0/perl-5.26.2.tar.gz -rm -rf perl-5.26.2 -tar xzvf perl-5.26.2.tar.gz -cd perl-5.26.2 +if [ -z "$VERSION" ]; then + echo "No VERSION environment variable set. Exiting..." + exit 1 +fi +echo "Building perl version $VERSION" +rm -rf bin lib man +wget http://www.cpan.org/src/5.0/perl-$VERSION.tar.gz +rm -rf perl-$VERSION +tar xzvf perl-$VERSION.tar.gz +cd perl-$VERSION # Apply patch for fixing Time::Local tests entering year 2020 (CPAN RT#124787) zcat ../patches/0001-Fix-Time-Local-tests.patch.gz | patch -p1 --verbose || exit 1 @@ -12,6 +18,7 @@ zcat ../patches/0001-Fix-Time-Local-tests.patch.gz | patch -p1 --verbose || exit # Apply patch for fixing gcc 10 problem https://github.com/openwrt/packages/pull/12178 patch -Np1 < ../patches/999-fix-build-failure-against-gcc-10.patch +#We defined `-Dusesitecustomize` and removed `-Dusethreads`. Most of other parameters are copied from `perl -V | grep config_args` ./Configure -Dusesitecustomize -Dinc_version_list=none -Dprefix=/home/git/binary-com/perl -Dsitelib=/home/git/regentmarkets/cpan-private/local/lib/perl5 -Dsitearch=/home/git/regentmarkets/cpan-private/local/lib/perl5/x86_64-linux -Dvendorprefix=/home/git/regentmarkets/cpan/local -Dvendorlib=/home/git/regentmarkets/cpan/local/lib/perl5 -Dvendorarch=/home/git/regentmarkets/cpan/local/lib/perl5/x86_64-linux -Duselargefiles -Dccflags="-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" -Dldflags=" -Wl,-z,relro" -Dlddlflags="-shared -Wl,-z,relro" -Dcccdlflags="-fPIC" -Duse64bitint -Dman1dir=none -Dman3dir=none -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Uuseithreads -Uusemultiplicity -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -des make && make test && make install From 085ce3fd8ede6d0dea743ed4f031d128e9655617 Mon Sep 17 00:00:00 2001 From: chylli-deriv Date: Tue, 19 Mar 2024 11:36:51 +0800 Subject: [PATCH 2/9] [ci skip] From fcda43ae9ffe4204016504f73da9e28329bd8379 Mon Sep 17 00:00:00 2001 From: chylli-deriv <52912308+chylli-deriv@users.noreply.github.com> Date: Tue, 19 Mar 2024 15:57:13 +0800 Subject: [PATCH 3/9] Update README.md [ci skip] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d82ab01..d7f69bcb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # perl -Custom compiled perl for Binary.com +Custom compiled perl for deriv.com ## compiling steps From 1410e88717e6bc1dcc2a5d1122fe117706e74d82 Mon Sep 17 00:00:00 2001 From: chylli-deriv <52912308+chylli-deriv@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:28:42 +0800 Subject: [PATCH 4/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d7f69bcb..b3299ffb 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Custom compiled perl for deriv.com ## compiling steps ```bash -VERSION=5.26.1 ./rebuild.sh +VERSION=5.26.2 ./rebuild.sh ``` ## compiling it with CI From d3e9e01ae2e1a01f954b598af851081f7e9c0bea Mon Sep 17 00:00:00 2001 From: chylli-deriv <52912308+chylli-deriv@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:45:27 +0800 Subject: [PATCH 5/9] Update .github/workflows/build_workflow.yml Co-authored-by: kathleen-deriv <122329285+lim-deriv@users.noreply.github.com> --- .github/workflows/build_workflow.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index ec0dfea4..c36bb98d 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -2,6 +2,8 @@ name: Build workflow run-name: Build workflow on: push: + branches: + - '!master' concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true From 3bdc3db12ce185592ec8bfbc2050002543335e01 Mon Sep 17 00:00:00 2001 From: chylli-deriv Date: Tue, 26 Mar 2024 16:57:10 +0800 Subject: [PATCH 6/9] Tue Mar 26 09:27:16 CST 2024 trigger tests [ci][skip dummy] From ed5c8a33231ddd0a24e2a44fe494572d47c5bb56 Mon Sep 17 00:00:00 2001 From: chylli-deriv Date: Tue, 26 Mar 2024 17:03:18 +0800 Subject: [PATCH 7/9] try no branch name --- .github/workflows/build_workflow.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index c36bb98d..ec0dfea4 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -2,8 +2,6 @@ name: Build workflow run-name: Build workflow on: push: - branches: - - '!master' concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true From b55ab7a6711f3d296daccf681ddd03b375a131cd Mon Sep 17 00:00:00 2001 From: chylli-deriv Date: Tue, 26 Mar 2024 17:05:13 +0800 Subject: [PATCH 8/9] use branches-ignore --- .github/workflows/build_workflow.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index ec0dfea4..5d15295b 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -2,6 +2,8 @@ name: Build workflow run-name: Build workflow on: push: + branches-ignore: + - 'master' concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true From f42f735209aae3b3809a40eada4f72ef318174bf Mon Sep 17 00:00:00 2001 From: ci bot Date: Tue, 26 Mar 2024 09:18:14 +0000 Subject: [PATCH 9/9] [ci skip] compile 5.26.2 --- bin/c2ph | 1368 - bin/cpanm | 1075 - bin/perl | Bin 26272 -> 26264 bytes bin/perl5.26.2 | Bin 26272 -> 26264 bytes bin/perlbug | 2 +- bin/perlthanks | 2 +- bin/pstruct | 1368 - lib/5.26.2/x86_64-linux/.packlist | 799 - lib/5.26.2/x86_64-linux/CORE/config.h | 12 +- lib/5.26.2/x86_64-linux/CORE/libperl.so | Bin 7940480 -> 7940456 bytes lib/5.26.2/x86_64-linux/Config.pm | 4 +- lib/5.26.2/x86_64-linux/Config_heavy.pl | 42 +- lib/5.26.2/x86_64-linux/DB_File.pm | 2354 -- lib/5.26.2/x86_64-linux/Errno.pm | 4 +- lib/5.26.2/x86_64-linux/GDBM_File.pm | 76 - lib/5.26.2/x86_64-linux/NDBM_File.pm | 116 - lib/5.26.2/x86_64-linux/ODBM_File.pm | 113 - lib/5.26.2/x86_64-linux/auto/B/B.so | Bin 357528 -> 357520 bytes .../auto/Compress/Raw/Bzip2/Bzip2.so | Bin 368408 -> 368392 bytes .../auto/Compress/Raw/Zlib/Zlib.so | Bin 515992 -> 515984 bytes lib/5.26.2/x86_64-linux/auto/Cwd/Cwd.so | Bin 72032 -> 72016 bytes .../x86_64-linux/auto/DB_File/DB_File.so | Bin 250136 -> 0 bytes .../x86_64-linux/auto/Data/Dumper/Dumper.so | Bin 159224 -> 159208 bytes .../x86_64-linux/auto/Devel/Peek/Peek.so | Bin 80832 -> 80824 bytes .../x86_64-linux/auto/Digest/MD5/MD5.so | Bin 80536 -> 80520 bytes .../x86_64-linux/auto/Digest/SHA/SHA.so | Bin 178456 -> 178440 bytes .../x86_64-linux/auto/Encode/Byte/Byte.so | Bin 473792 -> 473784 bytes lib/5.26.2/x86_64-linux/auto/Encode/CN/CN.so | Bin 2371632 -> 2371616 bytes .../x86_64-linux/auto/Encode/EBCDIC/EBCDIC.so | Bin 71160 -> 71152 bytes lib/5.26.2/x86_64-linux/auto/Encode/Encode.so | Bin 143376 -> 143368 bytes lib/5.26.2/x86_64-linux/auto/Encode/JP/JP.so | Bin 3014632 -> 3014624 bytes lib/5.26.2/x86_64-linux/auto/Encode/KR/KR.so | Bin 2722384 -> 2722368 bytes .../x86_64-linux/auto/Encode/Symbol/Symbol.so | Bin 91152 -> 91144 bytes lib/5.26.2/x86_64-linux/auto/Encode/TW/TW.so | Bin 2302080 -> 2302072 bytes .../auto/Encode/Unicode/Unicode.so | Bin 61608 -> 61600 bytes lib/5.26.2/x86_64-linux/auto/Fcntl/Fcntl.so | Bin 56960 -> 56944 bytes .../x86_64-linux/auto/File/DosGlob/DosGlob.so | Bin 37800 -> 37784 bytes .../x86_64-linux/auto/File/Glob/Glob.so | Bin 136424 -> 136408 bytes .../auto/Filter/Util/Call/Call.so | Bin 49544 -> 49536 bytes .../x86_64-linux/auto/GDBM_File/GDBM_File.so | Bin 110040 -> 0 bytes .../auto/Hash/Util/FieldHash/FieldHash.so | Bin 78880 -> 78872 bytes .../x86_64-linux/auto/Hash/Util/Util.so | Bin 73408 -> 73400 bytes .../auto/I18N/Langinfo/Langinfo.so | Bin 51368 -> 51360 bytes lib/5.26.2/x86_64-linux/auto/IO/IO.so | Bin 86984 -> 86976 bytes lib/5.26.2/x86_64-linux/auto/IPC/SysV/SysV.so | Bin 97168 -> 97160 bytes .../x86_64-linux/auto/List/Util/Util.so | Bin 254344 -> 254336 bytes .../x86_64-linux/auto/MIME/Base64/Base64.so | Bin 61416 -> 61400 bytes .../auto/Math/BigInt/FastCalc/FastCalc.so | Bin 63360 -> 63352 bytes .../x86_64-linux/auto/NDBM_File/NDBM_File.so | Bin 84600 -> 0 bytes .../x86_64-linux/auto/ODBM_File/ODBM_File.so | Bin 87120 -> 0 bytes lib/5.26.2/x86_64-linux/auto/Opcode/Opcode.so | Bin 91552 -> 91544 bytes lib/5.26.2/x86_64-linux/auto/POSIX/POSIX.so | Bin 405888 -> 405880 bytes .../auto/PerlIO/encoding/encoding.so | Bin 91184 -> 91168 bytes .../x86_64-linux/auto/PerlIO/mmap/mmap.so | Bin 44880 -> 44864 bytes .../x86_64-linux/auto/PerlIO/scalar/scalar.so | Bin 64664 -> 64656 bytes .../x86_64-linux/auto/PerlIO/via/via.so | Bin 84880 -> 84872 bytes .../x86_64-linux/auto/SDBM_File/SDBM_File.so | Bin 123616 -> 123608 bytes lib/5.26.2/x86_64-linux/auto/Socket/Socket.so | Bin 137296 -> 137288 bytes .../x86_64-linux/auto/Storable/Storable.so | Bin 350872 -> 350864 bytes .../auto/Sys/Hostname/Hostname.so | Bin 32672 -> 32664 bytes .../x86_64-linux/auto/Sys/Syslog/Syslog.so | Bin 66592 -> 66584 bytes .../Tie/Hash/NamedCapture/NamedCapture.so | Bin 49048 -> 49032 bytes .../x86_64-linux/auto/Time/HiRes/HiRes.so | Bin 115880 -> 115872 bytes .../x86_64-linux/auto/Time/Piece/Piece.so | Bin 79760 -> 79752 bytes .../auto/Unicode/Collate/Collate.so | Bin 1512560 -> 1512544 bytes .../auto/Unicode/Normalize/Normalize.so | Bin 731912 -> 731904 bytes .../x86_64-linux/auto/arybase/arybase.so | Bin 95528 -> 95512 bytes .../auto/attributes/attributes.so | Bin 48136 -> 48128 bytes lib/5.26.2/x86_64-linux/auto/mro/mro.so | Bin 87568 -> 87560 bytes lib/5.26.2/x86_64-linux/auto/re/re.so | Bin 1936504 -> 1936496 bytes .../auto/threads/shared/shared.so | Bin 28704 -> 28696 bytes .../x86_64-linux/auto/threads/threads.so | Bin 28688 -> 28680 bytes lib/5.26.2/x86_64-linux/perllocal.pod | 22 - lib/site_perl/5.26.2/App/cpanminus.pm | 292 - .../5.26.2/App/cpanminus/fatscript.pm | 25245 ---------------- .../.meta/App-cpanminus-1.7044/MYMETA.json | 190 - .../.meta/App-cpanminus-1.7044/install.json | 1 - .../x86_64-linux/auto/App/cpanminus/.packlist | 6 - 78 files changed, 33 insertions(+), 33058 deletions(-) delete mode 100755 bin/c2ph delete mode 100755 bin/cpanm delete mode 100755 bin/pstruct delete mode 100644 lib/5.26.2/x86_64-linux/DB_File.pm delete mode 100644 lib/5.26.2/x86_64-linux/GDBM_File.pm delete mode 100644 lib/5.26.2/x86_64-linux/NDBM_File.pm delete mode 100644 lib/5.26.2/x86_64-linux/ODBM_File.pm delete mode 100755 lib/5.26.2/x86_64-linux/auto/DB_File/DB_File.so delete mode 100755 lib/5.26.2/x86_64-linux/auto/GDBM_File/GDBM_File.so delete mode 100755 lib/5.26.2/x86_64-linux/auto/NDBM_File/NDBM_File.so delete mode 100755 lib/5.26.2/x86_64-linux/auto/ODBM_File/ODBM_File.so delete mode 100644 lib/5.26.2/x86_64-linux/perllocal.pod delete mode 100644 lib/site_perl/5.26.2/App/cpanminus.pm delete mode 100644 lib/site_perl/5.26.2/App/cpanminus/fatscript.pm delete mode 100644 lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/MYMETA.json delete mode 100644 lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/install.json delete mode 100644 lib/site_perl/5.26.2/x86_64-linux/auto/App/cpanminus/.packlist diff --git a/bin/c2ph b/bin/c2ph deleted file mode 100755 index 5402eec5..00000000 --- a/bin/c2ph +++ /dev/null @@ -1,1368 +0,0 @@ -#!/home/git/binary-com/perl/bin/perl - eval 'exec /home/git/binary-com/perl/bin/perl -S $0 ${1+"$@"}' - if $running_under_some_shell; -# -# -# c2ph (aka pstruct) -# Tom Christiansen, -# -# As pstruct, dump C structures as generated from 'cc -g -S' stabs. -# As c2ph, do this PLUS generate perl code for getting at the structures. -# -# See the usage message for more. If this isn't enough, read the code. -# - -=head1 NAME - -c2ph, pstruct - Dump C structures as generated from C stabs - -=head1 SYNOPSIS - - c2ph [-dpnP] [var=val] [files ...] - -=head2 OPTIONS - - Options: - - -w wide; short for: type_width=45 member_width=35 offset_width=8 - -x hex; short for: offset_fmt=x offset_width=08 size_fmt=x \ - size_width=04 - - -n do not generate perl code (default when invoked as pstruct) - -p generate perl code (default when invoked as c2ph) - -v generate perl code, with C decls as comments - - -i do NOT recompute sizes for intrinsic datatypes - -a dump information on intrinsics also - - -t trace execution - -d spew reams of debugging output - - -slist give comma-separated list a structures to dump - -=head1 DESCRIPTION - -The following is the old c2ph.doc documentation by Tom Christiansen - -Date: 25 Jul 91 08:10:21 GMT - -Once upon a time, I wrote a program called pstruct. It was a perl -program that tried to parse out C structures and display their member -offsets for you. This was especially useful for people looking at -binary dumps or poking around the kernel. - -Pstruct was not a pretty program. Neither was it particularly robust. -The problem, you see, was that the C compiler was much better at parsing -C than I could ever hope to be. - -So I got smart: I decided to be lazy and let the C compiler parse the C, -which would spit out debugger stabs for me to read. These were much -easier to parse. It's still not a pretty program, but at least it's more -robust. - -Pstruct takes any .c or .h files, or preferably .s ones, since that's -the format it is going to massage them into anyway, and spits out -listings like this: - - struct tty { - int tty.t_locker 000 4 - int tty.t_mutex_index 004 4 - struct tty * tty.t_tp_virt 008 4 - struct clist tty.t_rawq 00c 20 - int tty.t_rawq.c_cc 00c 4 - int tty.t_rawq.c_cmax 010 4 - int tty.t_rawq.c_cfx 014 4 - int tty.t_rawq.c_clx 018 4 - struct tty * tty.t_rawq.c_tp_cpu 01c 4 - struct tty * tty.t_rawq.c_tp_iop 020 4 - unsigned char * tty.t_rawq.c_buf_cpu 024 4 - unsigned char * tty.t_rawq.c_buf_iop 028 4 - struct clist tty.t_canq 02c 20 - int tty.t_canq.c_cc 02c 4 - int tty.t_canq.c_cmax 030 4 - int tty.t_canq.c_cfx 034 4 - int tty.t_canq.c_clx 038 4 - struct tty * tty.t_canq.c_tp_cpu 03c 4 - struct tty * tty.t_canq.c_tp_iop 040 4 - unsigned char * tty.t_canq.c_buf_cpu 044 4 - unsigned char * tty.t_canq.c_buf_iop 048 4 - struct clist tty.t_outq 04c 20 - int tty.t_outq.c_cc 04c 4 - int tty.t_outq.c_cmax 050 4 - int tty.t_outq.c_cfx 054 4 - int tty.t_outq.c_clx 058 4 - struct tty * tty.t_outq.c_tp_cpu 05c 4 - struct tty * tty.t_outq.c_tp_iop 060 4 - unsigned char * tty.t_outq.c_buf_cpu 064 4 - unsigned char * tty.t_outq.c_buf_iop 068 4 - (*int)() tty.t_oproc_cpu 06c 4 - (*int)() tty.t_oproc_iop 070 4 - (*int)() tty.t_stopproc_cpu 074 4 - (*int)() tty.t_stopproc_iop 078 4 - struct thread * tty.t_rsel 07c 4 - -etc. - - -Actually, this was generated by a particular set of options. You can control -the formatting of each column, whether you prefer wide or fat, hex or decimal, -leading zeroes or whatever. - -All you need to be able to use this is a C compiler than generates -BSD/GCC-style stabs. The B<-g> option on native BSD compilers and GCC -should get this for you. - -To learn more, just type a bogus option, like B<-\?>, and a long usage message -will be provided. There are a fair number of possibilities. - -If you're only a C programmer, than this is the end of the message for you. -You can quit right now, and if you care to, save off the source and run it -when you feel like it. Or not. - - - -But if you're a perl programmer, then for you I have something much more -wondrous than just a structure offset printer. - -You see, if you call pstruct by its other incybernation, c2ph, you have a code -generator that translates C code into perl code! Well, structure and union -declarations at least, but that's quite a bit. - -Prior to this point, anyone programming in perl who wanted to interact -with C programs, like the kernel, was forced to guess the layouts of -the C structures, and then hardwire these into his program. Of course, -when you took your wonderfully crafted program to a system where the -sgtty structure was laid out differently, your program broke. Which is -a shame. - -We've had Larry's h2ph translator, which helped, but that only works on -cpp symbols, not real C, which was also very much needed. What I offer -you is a symbolic way of getting at all the C structures. I've couched -them in terms of packages and functions. Consider the following program: - - #!/usr/local/bin/perl - - require 'syscall.ph'; - require 'sys/time.ph'; - require 'sys/resource.ph'; - - $ru = "\0" x &rusage'sizeof(); - - syscall(&SYS_getrusage, &RUSAGE_SELF, $ru) && die "getrusage: $!"; - - @ru = unpack($t = &rusage'typedef(), $ru); - - $utime = $ru[ &rusage'ru_utime + &timeval'tv_sec ] - + ($ru[ &rusage'ru_utime + &timeval'tv_usec ]) / 1e6; - - $stime = $ru[ &rusage'ru_stime + &timeval'tv_sec ] - + ($ru[ &rusage'ru_stime + &timeval'tv_usec ]) / 1e6; - - printf "you have used %8.3fs+%8.3fu seconds.\n", $utime, $stime; - - -As you see, the name of the package is the name of the structure. Regular -fields are just their own names. Plus the following accessor functions are -provided for your convenience: - - struct This takes no arguments, and is merely the number of first- - level elements in the structure. You would use this for - indexing into arrays of structures, perhaps like this - - $usec = $u[ &user'u_utimer - + (&ITIMER_VIRTUAL * &itimerval'struct) - + &itimerval'it_value - + &timeval'tv_usec - ]; - - sizeof Returns the bytes in the structure, or the member if - you pass it an argument, such as - - &rusage'sizeof(&rusage'ru_utime) - - typedef This is the perl format definition for passing to pack and - unpack. If you ask for the typedef of a nothing, you get - the whole structure, otherwise you get that of the member - you ask for. Padding is taken care of, as is the magic to - guarantee that a union is unpacked into all its aliases. - Bitfields are not quite yet supported however. - - offsetof This function is the byte offset into the array of that - member. You may wish to use this for indexing directly - into the packed structure with vec() if you're too lazy - to unpack it. - - typeof Not to be confused with the typedef accessor function, this - one returns the C type of that field. This would allow - you to print out a nice structured pretty print of some - structure without knoning anything about it beforehand. - No args to this one is a noop. Someday I'll post such - a thing to dump out your u structure for you. - - -The way I see this being used is like basically this: - - % h2ph /usr/lib/perl/tmp.ph - % c2ph some_include_file.h >> /usr/lib/perl/tmp.ph - % install - -It's a little tricker with c2ph because you have to get the includes right. -I can't know this for your system, but it's not usually too terribly difficult. - -The code isn't pretty as I mentioned -- I never thought it would be a 1000- -line program when I started, or I might not have begun. :-) But I would have -been less cavalier in how the parts of the program communicated with each -other, etc. It might also have helped if I didn't have to divine the makeup -of the stabs on the fly, and then account for micro differences between my -compiler and gcc. - -Anyway, here it is. Should run on perl v4 or greater. Maybe less. - - - --tom - -=cut - -$RCSID = '$Id: c2ph,v 1.7 95/10/28 10:41:47 tchrist Exp Locker: tchrist $'; - -BEGIN { pop @INC if $INC[-1] eq '.' } -use File::Temp; - -###################################################################### - -# some handy data definitions. many of these can be reset later. - -$bitorder = 'b'; # ascending; set to B for descending bit fields - -%intrinsics = -%template = ( - 'char', 'c', - 'unsigned char', 'C', - 'short', 's', - 'short int', 's', - 'unsigned short', 'S', - 'unsigned short int', 'S', - 'short unsigned int', 'S', - 'int', 'i', - 'unsigned int', 'I', - 'long', 'l', - 'long int', 'l', - 'unsigned long', 'L', - 'unsigned long', 'L', - 'long unsigned int', 'L', - 'unsigned long int', 'L', - 'long long', 'q', - 'long long int', 'q', - 'unsigned long long', 'Q', - 'unsigned long long int', 'Q', - 'float', 'f', - 'double', 'd', - 'pointer', 'p', - 'null', 'x', - 'neganull', 'X', - 'bit', $bitorder, -); - -&buildscrunchlist; -delete $intrinsics{'neganull'}; -delete $intrinsics{'bit'}; -delete $intrinsics{'null'}; - -# use -s to recompute sizes -%sizeof = ( - 'char', '1', - 'unsigned char', '1', - 'short', '2', - 'short int', '2', - 'unsigned short', '2', - 'unsigned short int', '2', - 'short unsigned int', '2', - 'int', '4', - 'unsigned int', '4', - 'long', '4', - 'long int', '4', - 'unsigned long', '4', - 'unsigned long int', '4', - 'long unsigned int', '4', - 'long long', '8', - 'long long int', '8', - 'unsigned long long', '8', - 'unsigned long long int', '8', - 'float', '4', - 'double', '8', - 'pointer', '4', -); - -($type_width, $member_width, $offset_width, $size_width) = (20, 20, 6, 5); - -($offset_fmt, $size_fmt) = ('d', 'd'); - -$indent = 2; - -$CC = 'cc'; -$CFLAGS = '-gstabs -S'; -$DEFINES = ''; - -$perl++ if $0 =~ m#/?c2ph$#; - -use Getopt::Std qw(getopts); - -use File::Temp 'tempdir'; - -eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift; - -getopts('aixdpvtnws:') || &usage(0); - -$opt_d && $debug++; -$opt_t && $trace++; -$opt_p && $perl++; -$opt_v && $verbose++; -$opt_n && ($perl = 0); - -if ($opt_w) { - ($type_width, $member_width, $offset_width) = (45, 35, 8); -} -if ($opt_x) { - ($offset_fmt, $offset_width, $size_fmt, $size_width) = ( 'x', '08', 'x', 04 ); -} - -eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift; - -sub PLUMBER { - select(STDERR); - print "oops, apparent pager foulup\n"; - $isatty++; - &usage(1); -} - -sub usage { - local($oops) = @_; - unless (-t STDOUT) { - select(STDERR); - } elsif (!$oops) { - $isatty++; - $| = 1; - print "hit for further explanation: "; - ; - open (PIPE, "|". ($ENV{PAGER} || 'more')); - $SIG{PIPE} = PLUMBER; - select(PIPE); - } - - print "usage: $0 [-dpnP] [var=val] [files ...]\n"; - - exit unless $isatty; - - print < 1, CLEANUP => 1) - unless (defined($SAFEDIR)); -} - -undef $SAFEDIR; - -$recurse = 1; - -if (@ARGV) { - if (grep(!/\.[csh]$/,@ARGV)) { - warn "Only *.[csh] files expected!\n"; - &usage; - } - elsif (grep(/\.s$/,@ARGV)) { - if (@ARGV > 1) { - warn "Only one *.s file allowed!\n"; - &usage; - } - } - elsif (@ARGV == 1 && $ARGV[0] =~ /\.c$/) { - local($dir, $file) = $ARGV[0] =~ m#(.*/)?(.*)$#; - $chdir = "cd $dir && " if $dir; - &system("$chdir$CC $CFLAGS $DEFINES $file") && exit 1; - $ARGV[0] =~ s/\.c$/.s/; - } - else { - &safedir; - $TMP = "$SAFEDIR/c2ph.$$.c"; - &system("cat @ARGV > $TMP") && exit 1; - &system("cd $SAFEDIR && $CC $CFLAGS $DEFINES $TMP") && exit 1; - unlink $TMP; - $TMP =~ s/\.c$/.s/; - @ARGV = ($TMP); - } -} - -if ($opt_s) { - for (split(/[\s,]+/, $opt_s)) { - $interested{$_}++; - } -} - - -$| = 1 if $debug; - -main: { - - if ($trace) { - if (-t && !@ARGV) { - print STDERR "reading from your keyboard: "; - } else { - print STDERR "reading from " . (@ARGV ? "@ARGV" : "").": "; - } - } - -STAB: while (<>) { - if ($trace && !($. % 10)) { - $lineno = $..''; - print STDERR $lineno, "\b" x length($lineno); - } - next unless /^\s*\.stabs\s+/; - $line = $_; - s/^\s*\.stabs\s+//; - if (s/\\\\"[d,]+$//) { - $saveline .= $line; - $savebar = $_; - next STAB; - } - if ($saveline) { - s/^"//; - $_ = $savebar . $_; - $line = $saveline; - } - &stab; - $savebar = $saveline = undef; - } - print STDERR "$.\n" if $trace; - unlink $TMP if $TMP; - - &compute_intrinsics if $perl && !$opt_i; - - print STDERR "resolving types\n" if $trace; - - &resolve_types; - &adjust_start_addrs; - - $sum = 2 + $type_width + $member_width; - $pmask1 = "%-${type_width}s %-${member_width}s"; - $pmask2 = "%-${sum}s %${offset_width}${offset_fmt}%s %${size_width}${size_fmt}%s"; - - - - if ($perl) { - # resolve template -- should be in stab define order, but even this isn't enough. - print STDERR "\nbuilding type templates: " if $trace; - for $i (reverse 0..$#type) { - next unless defined($name = $type[$i]); - next unless defined $struct{$name}; - ($iname = $name) =~ s/\..*//; - $build_recursed = 0; - &build_template($name) unless defined $template{&psou($name)} || - $opt_s && !$interested{$iname}; - } - print STDERR "\n\n" if $trace; - } - - print STDERR "dumping structs: " if $trace; - - local($iam); - - - - foreach $name (sort keys %struct) { - ($iname = $name) =~ s/\..*//; - next if $opt_s && !$interested{$iname}; - print STDERR "$name " if $trace; - - undef @sizeof; - undef @typedef; - undef @offsetof; - undef @indices; - undef @typeof; - undef @fieldnames; - - $mname = &munge($name); - - $fname = &psou($name); - - print "# " if $perl && $verbose; - $pcode = ''; - print "$fname {\n" if !$perl || $verbose; - $template{$fname} = &scrunch($template{$fname}) if $perl; - &pstruct($name,$name,0); - print "# " if $perl && $verbose; - print "}\n" if !$perl || $verbose; - print "\n" if $perl && $verbose; - - if ($perl) { - print "$pcode"; - - printf("\nsub %-32s { %4d; }\n\n", "${mname}'struct", $countof{$name}); - - print < $sizeof{$b}; } - - - foreach $name (sort keys %intrinsics) { - print '$',&munge($name),"'typedef = '", $template{$name}, "';\n"; - } - - print "\n1;\n" if $perl; - - exit; -} - -######################################################################################## - - -sub stab { - next unless $continued || /:[\$\w]+(\(\d+,\d+\))?=[\*\$\w]+/; # (\d+,\d+) is for sun - s/"// || next; - s/",([x\d]+),([x\d]+),([x\d]+),.*// || next; - - next if /^\s*$/; - - $size = $3 if $3; - $_ = $continued . $_ if length($continued); - if (s/\\\\$//) { - # if last 2 chars of string are '\\' then stab is continued - # in next stab entry - chop; - $continued = $_; - next; - } - $continued = ''; - - - $line = $_; - - if (($name, $pdecl) = /^([\$ \w]+):[tT]((\d+)(=[rufs*](\d+))+)$/) { - print "$name is a typedef for some funky pointers: $pdecl\n" if $debug; - &pdecl($pdecl); - next; - } - - - - if (/(([ \w]+):t(\d+|\(\d+,\d+\)))=r?(\d+|\(\d+,\d+\))(;\d+;\d+;)?/) { - local($ident) = $2; - push(@intrinsics, $ident); - $typeno = &typeno($3); - $type[$typeno] = $ident; - print STDERR "intrinsic $ident in new type $typeno\n" if $debug; - next; - } - - if (($name, $typeordef, $typeno, $extra, $struct, $_) - = /^([\$ \w]+):([ustT])(\d+|\(\d+,\d+\))(=[rufs*](\d+))?(.*)$/) - { - $typeno = &typeno($typeno); # sun foolery - } - elsif (/^[\$\w]+:/) { - next; # variable - } - else { - warn "can't grok stab: <$_> in: $line " if $_; - next; - } - - #warn "got size $size for $name\n"; - $sizeof{$name} = $size if $size; - - s/;[-\d]*;[-\d]*;$//; # we don't care about ranges - - $typenos{$name} = $typeno; - - unless (defined $type[$typeno]) { - &panic("type 0??") unless $typeno; - $type[$typeno] = $name unless defined $type[$typeno]; - printf "new type $typeno is $name" if $debug; - if ($extra =~ /\*/ && defined $type[$struct]) { - print ", a typedef for a pointer to " , $type[$struct] if $debug; - } - } else { - printf "%s is type %d", $name, $typeno if $debug; - print ", a typedef for " , $type[$typeno] if $debug; - } - print "\n" if $debug; - #next unless $extra =~ /[su*]/; - - #$type[$struct] = $name; - - if ($extra =~ /[us*]/) { - &sou($name, $extra); - $_ = &sdecl($name, $_, 0); - } - elsif (/^=ar/) { - print "it's a bare array typedef -- that's pretty sick\n" if $debug; - $_ = "$typeno$_"; - $scripts = ''; - $_ = &adecl($_,1); - - } - elsif (s/((\w+):t(\d+|\(\d+,\d+\)))?=r?(;\d+;\d+;)?//) { # the ?'s are for gcc - push(@intrinsics, $2); - $typeno = &typeno($3); - $type[$typeno] = $2; - print STDERR "intrinsic $2 in new type $typeno\n" if $debug; - } - elsif (s/^=e//) { # blessed be thy compiler; mine won't do this - &edecl; - } - else { - warn "Funny remainder for $name on line $_ left in $line " if $_; - } -} - -sub typeno { # sun thinks types are (0,27) instead of just 27 - local($_) = @_; - s/\(\d+,(\d+)\)/$1/; - $_; -} - -sub pstruct { - local($what,$prefix,$base) = @_; - local($field, $fieldname, $typeno, $count, $offset, $entry); - local($fieldtype); - local($type, $tname); - local($mytype, $mycount, $entry2); - local($struct_count) = 0; - local($pad, $revpad, $length, $prepad, $lastoffset, $lastlength, $fmt); - local($bits,$bytes); - local($template); - - - local($mname) = &munge($name); - - sub munge { - local($_) = @_; - s/[\s\$\.]/_/g; - $_; - } - - local($sname) = &psou($what); - - $nesting++; - - for $field (split(/;/, $struct{$what})) { - $pad = $prepad = 0; - $entry = ''; - ($fieldname, $typeno, $count, $offset, $length) = split(/,/, $field); - - $type = $type[$typeno]; - - $type =~ /([^[]*)(\[.*\])?/; - $mytype = $1; - $count .= $2; - $fieldtype = &psou($mytype); - - local($fname) = &psou($name); - - if ($build_templates) { - - $pad = ($offset - ($lastoffset + $lastlength))/8 - if defined $lastoffset; - - if (! $finished_template{$sname}) { - if ($isaunion{$what}) { - $template{$sname} .= 'X' x $revpad . ' ' if $revpad; - } else { - $template{$sname} .= 'x' x $pad . ' ' if $pad; - } - } - - $template = &fetch_template($type); - &repeat_template($template,$count); - - if (! $finished_template{$sname}) { - $template{$sname} .= $template; - } - - $revpad = $length/8 if $isaunion{$what}; - - ($lastoffset, $lastlength) = ($offset, $length); - - } else { - print '# ' if $perl && $verbose; - $entry = sprintf($pmask1, - ' ' x ($nesting * $indent) . $fieldtype, - "$prefix.$fieldname" . $count); - - $entry =~ s/(\*+)( )/$2$1/; - - printf $pmask2, - $entry, - ($base+$offset)/8, - ($bits = ($base+$offset)%8) ? ".$bits" : " ", - $length/8, - ($bits = $length % 8) ? ".$bits": "" - if !$perl || $verbose; - - if ($perl) { - $template = &fetch_template($type); - &repeat_template($template,$count); - } - - if ($perl && $nesting == 1) { - - push(@sizeof, int($length/8) .",\t# $fieldname"); - push(@offsetof, int($offset/8) .",\t# $fieldname"); - local($little) = &scrunch($template); - push(@typedef, "'$little', \t# $fieldname"); - $type =~ s/(struct|union) //; - push(@typeof, "'$mytype" . ($count ? $count : '') . - "',\t# $fieldname"); - push(@fieldnames, "'$fieldname',"); - } - - print ' ', ' ' x $indent x $nesting, $template - if $perl && $verbose; - - print "\n" if !$perl || $verbose; - - } - if ($perl) { - local($mycount) = defined $struct{$mytype} ? $countof{$mytype} : 1; - $mycount *= &scripts2count($count) if $count; - if ($nesting==1 && !$build_templates) { - $pcode .= sprintf("sub %-32s { %4d; }\n", - "${mname}'${fieldname}", $struct_count); - push(@indices, $struct_count); - } - $struct_count += $mycount; - } - - - &pstruct($type, "$prefix.$fieldname", $base+$offset) - if $recurse && defined $struct{$type}; - } - - $countof{$what} = $struct_count unless defined $countof{$whati}; - - $template{$sname} .= '$' if $build_templates; - $finished_template{$sname}++; - - if ($build_templates && !defined $sizeof{$name}) { - local($fmt) = &scrunch($template{$sname}); - print STDERR "no size for $name, punting with $fmt..." if $debug; - eval '$sizeof{$name} = length(pack($fmt, ()))'; - if ($@) { - chop $@; - warn "couldn't get size for \$name: $@"; - } else { - print STDERR $sizeof{$name}, "\n" if $debUg; - } - } - - --$nesting; -} - - -sub psize { - local($me) = @_; - local($amstruct) = $struct{$me} ? 'struct ' : ''; - - print '$sizeof{\'', $amstruct, $me, '\'} = '; - printf "%d;\n", $sizeof{$me}; -} - -sub pdecl { - local($pdecl) = @_; - local(@pdecls); - local($tname); - - warn "pdecl: $pdecl\n" if $debug; - - $pdecl =~ s/\(\d+,(\d+)\)/$1/g; - $pdecl =~ s/\*//g; - @pdecls = split(/=/, $pdecl); - $typeno = $pdecls[0]; - $tname = pop @pdecls; - - if ($tname =~ s/^f//) { $tname = "$tname&"; } - #else { $tname = "$tname*"; } - - for (reverse @pdecls) { - $tname .= s/^f// ? "&" : "*"; - #$tname =~ s/^f(.*)/$1&/; - print "type[$_] is $tname\n" if $debug; - $type[$_] = $tname unless defined $type[$_]; - } -} - - - -sub adecl { - ($arraytype, $unknown, $lower, $upper) = (); - #local($typeno); - # global $typeno, @type - local($_, $typedef) = @_; - - while (s/^((\d+|\(\d+,\d+\))=)?ar(\d+|\(\d+,\d+\));//) { - ($arraytype, $unknown) = ($2, $3); - $arraytype = &typeno($arraytype); - $unknown = &typeno($unknown); - if (s/^(\d+);(\d+);//) { - ($lower, $upper) = ($1, $2); - $scripts .= '[' . ($upper+1) . ']'; - } else { - warn "can't find array bounds: $_"; - } - } - if (s/^([(,)\d*f=]*),(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - $whatis = $1; - if ($whatis =~ /^(\d+|\(\d+,\d+\))=/) { - $typeno = &typeno($1); - &pdecl($whatis); - } else { - $typeno = &typeno($whatis); - } - } elsif (s/^(\d+)(=[*suf]\d*)//) { - local($whatis) = $2; - - if ($whatis =~ /[f*]/) { - &pdecl($whatis); - } elsif ($whatis =~ /[su]/) { # - print "$prefix.$fieldname is an array$scripts anon structs; disgusting\n" - if $debug; - #$type[$typeno] = $name unless defined $type[$typeno]; - ##printf "new type $typeno is $name" if $debug; - $typeno = $1; - $type[$typeno] = "$prefix.$fieldname"; - local($name) = $type[$typeno]; - &sou($name, $whatis); - $_ = &sdecl($name, $_, $start+$offset); - 1; - $start = $start{$name}; - $offset = $sizeof{$name}; - $length = $offset; - } else { - warn "what's this? $whatis in $line "; - } - } elsif (/^\d+$/) { - $typeno = $_; - } else { - warn "bad array stab: $_ in $line "; - next STAB; - } - #local($wasdef) = defined($type[$typeno]) && $debug; - #if ($typedef) { - #print "redefining $type[$typeno] to " if $wasdef; - #$type[$typeno] = "$whatis$scripts"; # unless defined $type[$typeno]; - #print "$type[$typeno]\n" if $wasdef; - #} else { - #$type[$arraytype] = $type[$typeno] unless defined $type[$arraytype]; - #} - $type[$arraytype] = "$type[$typeno]$scripts" if defined $type[$typeno]; - print "type[$arraytype] is $type[$arraytype]\n" if $debug; - print "$prefix.$fieldname is an array of $type[$arraytype]\n" if $debug; - $_; -} - - - -sub sdecl { - local($prefix, $_, $offset) = @_; - - local($fieldname, $scripts, $type, $arraytype, $unknown, - $whatis, $pdecl, $upper,$lower, $start,$length) = (); - local($typeno,$sou); - - -SFIELD: - while (/^([^;]+);/) { - $scripts = ''; - warn "sdecl $_\n" if $debug; - if (s/^([\$\w]+)://) { - $fieldname = $1; - } elsif (s/(\d+)=([us])(\d+|\(\d+,\d+\))//) { # - $typeno = &typeno($1); - $type[$typeno] = "$prefix.$fieldname"; - local($name) = "$prefix.$fieldname"; - &sou($name,$2); - $_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - $start = $start{$name}; - $offset += $sizeof{$name}; - #print "done with anon, start is $start, offset is $offset\n"; - #next SFIELD; - } else { - warn "weird field $_ of $line" if $debug; - next STAB; - #$fieldname = &gensym; - #$_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - } - - if (/^(\d+|\(\d+,\d+\))=ar/) { - $_ = &adecl($_); - } - elsif (s/^(\d+|\(\d+,\d+\))?,(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - &panic("no length?") unless $length; - $typeno = &typeno($1) if $1; - } - elsif (s/^(\d+)=xs\w+:,(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - &panic("no length?") unless $length; - $typeno = &typeno($1) if $1; - } - elsif (s/^((\d+|\(\d+,\d+\))(=[*f](\d+|\(\d+,\d+\)))+),(\d+),(\d+);//) { - ($pdecl, $start, $length) = ($1,$5,$6); - &pdecl($pdecl); - } - elsif (s/(\d+)=([us])(\d+|\(\d+,\d+\))//) { # the dratted anon struct - ($typeno, $sou) = ($1, $2); - $typeno = &typeno($typeno); - if (defined($type[$typeno])) { - warn "now how did we get type $1 in $fieldname of $line?"; - } else { - print "anon type $typeno is $prefix.$fieldname\n" if $debug; - $type[$typeno] = "$prefix.$fieldname" unless defined $type[$typeno]; - }; - local($name) = "$prefix.$fieldname"; - &sou($name,$sou); - print "anon ".($isastruct{$name}) ? "struct":"union"." for $prefix.$fieldname\n" if $debug; - $type[$typeno] = "$prefix.$fieldname"; - $_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - $start = $start{$name}; - $length = $sizeof{$name}; - } - else { - warn "can't grok stab for $name ($_) in line $line "; - next STAB; - } - - &panic("no length for $prefix.$fieldname") unless $length; - $struct{$name} .= join(',', $fieldname, $typeno, $scripts, $start, $length) . ';'; - } - if (s/;\d*,(\d+),(\d+);//) { - local($start, $size) = ($1, $2); - $sizeof{$prefix} = $size; - print "start of $prefix is $start, size of $sizeof{$prefix}\n" if $debug; - $start{$prefix} = $start; - } - $_; -} - -sub edecl { - s/;$//; - $enum{$name} = $_; - $_ = ''; -} - -sub resolve_types { - local($sou); - for $i (0 .. $#type) { - next unless defined $type[$i]; - $_ = $type[$i]; - unless (/\d/) { - print "type[$i] $type[$i]\n" if $debug; - next; - } - print "type[$i] $_ ==> " if $debug; - s/^(\d+)(\**)\&\*(\**)/"$2($3".&type($1) . ')()'/e; - s/^(\d+)\&/&type($1)/e; - s/^(\d+)/&type($1)/e; - s/(\*+)([^*]+)(\*+)/$1$3$2/; - s/\((\*+)(\w+)(\*+)\)/$3($1$2)/; - s/^(\d+)([\*\[].*)/&type($1).$2/e; - #s/(\d+)(\*|(\[[\[\]\d\*]+]\])+)/&type($1).$2/ge; - $type[$i] = $_; - print "$_\n" if $debug; - } -} -sub type { &psou($type[$_[0]] || ""); } - -sub adjust_start_addrs { - for (sort keys %start) { - ($basename = $_) =~ s/\.[^.]+$//; - $start{$_} += $start{$basename}; - print "start: $_ @ $start{$_}\n" if $debug; - } -} - -sub sou { - local($what, $_) = @_; - /u/ && $isaunion{$what}++; - /s/ && $isastruct{$what}++; -} - -sub psou { - local($what) = @_; - local($prefix) = ''; - if ($isaunion{$what}) { - $prefix = 'union '; - } elsif ($isastruct{$what}) { - $prefix = 'struct '; - } - $prefix . $what; -} - -sub scrunch { - local($_) = @_; - - return '' if $_ eq ''; - - study; - - s/\$//g; - s/ / /g; - 1 while s/(\w) \1/$1$1/g; - - # i wanna say this, but perl resists my efforts: - # s/(\w)(\1+)/$2 . length($1)/ge; - - &quick_scrunch; - - s/ $//; - - $_; -} - -sub buildscrunchlist { - $scrunch_code = "sub quick_scrunch {\n"; - for (values %intrinsics) { - $scrunch_code .= "\ts/(${_}{2,})/'$_' . length(\$1)/ge;\n"; - } - $scrunch_code .= "}\n"; - print "$scrunch_code" if $debug; - eval $scrunch_code; - &panic("can't eval scrunch_code $@ \nscrunch_code") if $@; -} - -sub fetch_template { - local($mytype) = @_; - local($fmt); - local($count) = 1; - - &panic("why do you care?") unless $perl; - - if ($mytype =~ s/(\[\d+\])+$//) { - $count .= $1; - } - - if ($mytype =~ /\*/) { - $fmt = $template{'pointer'}; - } - elsif (defined $template{$mytype}) { - $fmt = $template{$mytype}; - } - elsif (defined $struct{$mytype}) { - if (!defined $template{&psou($mytype)}) { - &build_template($mytype) unless $mytype eq $name; - } - elsif ($template{&psou($mytype)} !~ /\$$/) { - #warn "incomplete template for $mytype\n"; - } - $fmt = $template{&psou($mytype)} || '?'; - } - else { - warn "unknown fmt for $mytype\n"; - $fmt = '?'; - } - - $fmt x $count . ' '; -} - -sub compute_intrinsics { - &safedir; - local($TMP) = "$SAFEDIR/c2ph-i.$$.c"; - open (TMP, ">$TMP") || die "can't open $TMP: $!"; - select(TMP); - - print STDERR "computing intrinsic sizes: " if $trace; - - undef %intrinsics; - - print <<'EOF'; -main() { - char *mask = "%d %s\n"; -EOF - - for $type (@intrinsics) { - next if !$type || $type eq 'void' || $type =~ /complex/; # sun stuff - print <<"EOF"; - printf(mask,sizeof($type), "$type"); -EOF - } - - print <<'EOF'; - printf(mask,sizeof(char *), "pointer"); - exit(0); -} -EOF - close TMP; - - select(STDOUT); - open(PIPE, "cd $SAFEDIR && $CC $TMP && $SAFEDIR/a.out|"); - while () { - chop; - split(' ',$_,2);; - print "intrinsic $_[1] is size $_[0]\n" if $debug; - $sizeof{$_[1]} = $_[0]; - $intrinsics{$_[1]} = $template{$_[0]}; - } - close(PIPE) || die "couldn't read intrinsics!"; - unlink($TMP, "$SAFEDIR/a.out"); - print STDERR "done\n" if $trace; -} - -sub scripts2count { - local($_) = @_; - - s/^\[//; - s/\]$//; - s/\]\[/*/g; - $_ = eval; - &panic("$_: $@") if $@; - $_; -} - -sub system { - print STDERR "@_\n" if $trace; - system @_; -} - -sub build_template { - local($name) = @_; - - &panic("already got a template for $name") if defined $template{$name}; - - local($build_templates) = 1; - - local($lparen) = '(' x $build_recursed; - local($rparen) = ')' x $build_recursed; - - print STDERR "$lparen$name$rparen " if $trace; - $build_recursed++; - &pstruct($name,$name,0); - print STDERR "TEMPLATE for $name is ", $template{&psou($name)}, "\n" if $debug; - --$build_recursed; -} - - -sub panic { - - select(STDERR); - - print "\npanic: @_\n"; - - exit 1 if $] <= 4.003; # caller broken - - local($i,$_); - local($p,$f,$l,$s,$h,$a,@a,@sub); - for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) { - @a = @DB'args; - for (@a) { - if (/^StB\000/ && length($_) == length($_main{'_main'})) { - $_ = sprintf("%s",$_); - } - else { - s/'/\\'/g; - s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/; - s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg; - s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg; - } - } - $w = $w ? '@ = ' : '$ = '; - $a = $h ? '(' . join(', ', @a) . ')' : ''; - push(@sub, "$w&$s$a from file $f line $l\n"); - last if $signal; - } - for ($i=0; $i <= $#sub; $i++) { - last if $signal; - print $sub[$i]; - } - exit 1; -} - -sub squishseq { - local($num); - local($last) = -1e8; - local($string); - local($seq) = '..'; - - while (defined($num = shift)) { - if ($num == ($last + 1)) { - $string .= $seq unless $inseq++; - $last = $num; - next; - } elsif ($inseq) { - $string .= $last unless $last == -1e8; - } - - $string .= ',' if defined $string; - $string .= $num; - $last = $num; - $inseq = 0; - } - $string .= $last if $inseq && $last != -e18; - $string; -} - -sub repeat_template { - # local($template, $scripts) = @_; have to change caller's values - - if ( $_[1] ) { - local($ncount) = &scripts2count($_[1]); - if ($_[0] =~ /^\s*c\s*$/i) { - $_[0] = "A$ncount "; - $_[1] = ''; - } else { - $_[0] = $template x $ncount; - } - } -} diff --git a/bin/cpanm b/bin/cpanm deleted file mode 100755 index 072e601d..00000000 --- a/bin/cpanm +++ /dev/null @@ -1,1075 +0,0 @@ -#!/home/git/binary-com/perl/bin/perl -# -# This is a pre-compiled source code for the cpanm (cpanminus) program. -# For more details about how to install cpanm, go to the following URL: -# -# https://github.com/miyagawa/cpanminus -# -# Quickstart: Run the following command and it will install itself for -# you. You might want to run it as a root with sudo if you want to install -# to places like /usr/local/bin. -# -# % curl -L https://cpanmin.us | perl - App::cpanminus -# -# If you don't have curl but wget, replace `curl -L` with `wget -O -`. - -# DO NOT EDIT -- this is an auto generated file - -# This chunk of stuff was generated by App::FatPacker. To find the original -# file's code, look for the end of this BEGIN block or the string 'FATPACK' -BEGIN { -my %fatpacked; - -$fatpacked{"App/cpanminus.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS'; - package App::cpanminus;our$VERSION="1.7044";1; -APP_CPANMINUS - -$fatpacked{"App/cpanminus/Dependency.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS_DEPENDENCY'; - package App::cpanminus::Dependency;use strict;use CPAN::Meta::Requirements;sub from_prereqs {my($class,$prereqs,$phases,$types)=@_;my@deps;for my$type (@$types){push@deps,$class->from_versions($prereqs->merged_requirements($phases,[$type])->as_string_hash,$type,)}return@deps}sub from_versions {my($class,$versions,$type)=@_;my@deps;while (my($module,$version)=each %$versions){push@deps,$class->new($module,$version,$type)}@deps}sub merge_with {my($self,$requirements)=@_;$self->{original_version}=$self->version;eval {$requirements->add_string_requirement($self->module,$self->version)};if ($@ =~ /illegal requirements/){warn sprintf("Can't merge requirements for %s: '%s' and '%s'",$self->module,$self->version,$requirements->requirements_for_module($self->module))}$self->{version}=$requirements->requirements_for_module($self->module)}sub new {my($class,$module,$version,$type)=@_;bless {module=>$module,version=>$version,type=>$type || 'requires',},$class}sub module {$_[0]->{module}}sub version {$_[0]->{version}}sub type {$_[0]->{type}}sub requires_version {my$self=shift;if (defined$self->{original_version}){return$self->{original_version}}$self->version}sub is_requirement {$_[0]->{type}eq 'requires'}1; -APP_CPANMINUS_DEPENDENCY - -$fatpacked{"App/cpanminus/script.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS_SCRIPT'; - package App::cpanminus::script;use strict;use Config;use Cwd ();use App::cpanminus;use App::cpanminus::Dependency;use File::Basename ();use File::Find ();use File::Path ();use File::Spec ();use File::Copy ();use File::Temp ();use Getopt::Long ();use Symbol ();use String::ShellQuote ();use version ();use constant WIN32=>$^O eq 'MSWin32';use constant BAD_TAR=>($^O eq 'solaris' || $^O eq 'hpux');use constant CAN_SYMLINK=>eval {symlink("","");1};our$VERSION=$App::cpanminus::VERSION;if ($INC{"App/FatPacker/Trace.pm"}){require version::vpp}my$quote=WIN32 ? q/"/ : q/'/;sub agent {my$self=shift;my$agent="cpanminus/$VERSION";$agent .= " perl/$]" if$self->{report_perl_version};$agent}sub determine_home {my$class=shift;my$homedir=$ENV{HOME}|| eval {require File::HomeDir;File::HomeDir->my_home}|| join('',@ENV{qw(HOMEDRIVE HOMEPATH)});if (WIN32){require Win32;$homedir=Win32::GetShortPathName($homedir)}return "$homedir/.cpanm"}sub new {my$class=shift;bless {home=>$class->determine_home,cmd=>'install',seen=>{},notest=>undef,test_only=>undef,installdeps=>undef,force=>undef,sudo=>undef,make=>undef,verbose=>undef,quiet=>undef,interactive=>undef,log=>undef,mirrors=>[],mirror_only=>undef,mirror_index=>undef,cpanmetadb=>"http://cpanmetadb.plackperl.org/v1.0/",perl=>$^X,argv=>[],local_lib=>undef,self_contained=>undef,exclude_vendor=>undef,prompt_timeout=>0,prompt=>undef,configure_timeout=>60,build_timeout=>3600,test_timeout=>1800,try_lwp=>1,try_wget=>1,try_curl=>1,uninstall_shadows=>($] < 5.012),skip_installed=>1,skip_satisfied=>0,auto_cleanup=>7,pod2man=>1,installed_dists=>0,install_types=>['requires'],with_develop=>0,with_configure=>0,showdeps=>0,scandeps=>0,scandeps_tree=>[],format=>'tree',save_dists=>undef,skip_configure=>0,verify=>0,report_perl_version=>!$class->maybe_ci,build_args=>{},features=>{},pure_perl=>0,cpanfile_path=>'cpanfile',@_,},$class}sub env {my($self,$key)=@_;$ENV{"PERL_CPANM_" .$key}}sub maybe_ci {my$class=shift;grep$ENV{$_},qw(TRAVIS CI AUTOMATED_TESTING AUTHOR_TESTING)}sub install_type_handlers {my$self=shift;my@handlers;for my$type (qw(recommends suggests)){push@handlers,"with-$type"=>sub {my%uniq;$self->{install_types}=[grep!$uniq{$_}++,@{$self->{install_types}},$type ]};push@handlers,"without-$type"=>sub {$self->{install_types}=[grep $_ ne $type,@{$self->{install_types}}]}}@handlers}sub build_args_handlers {my$self=shift;my@handlers;for my$phase (qw(configure build test install)){push@handlers,"$phase-args=s"=>\($self->{build_args}{$phase})}@handlers}sub parse_options {my$self=shift;local@ARGV=@{$self->{argv}};push@ARGV,grep length,split /\s+/,$self->env('OPT');push@ARGV,@_;Getopt::Long::Configure("bundling");Getopt::Long::GetOptions('f|force'=>sub {$self->{skip_installed}=0;$self->{force}=1},'n|notest!'=>\$self->{notest},'test-only'=>sub {$self->{notest}=0;$self->{skip_installed}=0;$self->{test_only}=1},'S|sudo!'=>\$self->{sudo},'v|verbose'=>\$self->{verbose},'verify!'=>\$self->{verify},'q|quiet!'=>\$self->{quiet},'h|help'=>sub {$self->{action}='show_help'},'V|version'=>sub {$self->{action}='show_version'},'perl=s'=>sub {$self->diag("--perl is deprecated since it's known to be fragile in figuring out dependencies. Run `$_[1] -S cpanm` instead.\n",1);$self->{perl}=$_[1]},'l|local-lib=s'=>sub {$self->{local_lib}=$self->maybe_abs($_[1])},'L|local-lib-contained=s'=>sub {$self->{local_lib}=$self->maybe_abs($_[1]);$self->{self_contained}=1;$self->{pod2man}=undef},'self-contained!'=>\$self->{self_contained},'exclude-vendor!'=>\$self->{exclude_vendor},'mirror=s@'=>$self->{mirrors},'mirror-only!'=>\$self->{mirror_only},'mirror-index=s'=>sub {$self->{mirror_index}=$self->maybe_abs($_[1])},'M|from=s'=>sub {$self->{mirrors}=[$_[1]];$self->{mirror_only}=1},'cpanmetadb=s'=>\$self->{cpanmetadb},'cascade-search!'=>\$self->{cascade_search},'prompt!'=>\$self->{prompt},'installdeps'=>\$self->{installdeps},'skip-installed!'=>\$self->{skip_installed},'skip-satisfied!'=>\$self->{skip_satisfied},'reinstall'=>sub {$self->{skip_installed}=0},'interactive!'=>\$self->{interactive},'i|install'=>sub {$self->{cmd}='install'},'info'=>sub {$self->{cmd}='info'},'look'=>sub {$self->{cmd}='look';$self->{skip_installed}=0},'U|uninstall'=>sub {$self->{cmd}='uninstall'},'self-upgrade'=>sub {$self->{action}='self_upgrade'},'uninst-shadows!'=>\$self->{uninstall_shadows},'lwp!'=>\$self->{try_lwp},'wget!'=>\$self->{try_wget},'curl!'=>\$self->{try_curl},'auto-cleanup=s'=>\$self->{auto_cleanup},'man-pages!'=>\$self->{pod2man},'scandeps'=>\$self->{scandeps},'showdeps'=>sub {$self->{showdeps}=1;$self->{skip_installed}=0},'format=s'=>\$self->{format},'save-dists=s'=>sub {$self->{save_dists}=$self->maybe_abs($_[1])},'skip-configure!'=>\$self->{skip_configure},'dev!'=>\$self->{dev_release},'metacpan!'=>\$self->{metacpan},'report-perl-version!'=>\$self->{report_perl_version},'configure-timeout=i'=>\$self->{configure_timeout},'build-timeout=i'=>\$self->{build_timeout},'test-timeout=i'=>\$self->{test_timeout},'with-develop'=>\$self->{with_develop},'without-develop'=>sub {$self->{with_develop}=0},'with-configure'=>\$self->{with_configure},'without-configure'=>sub {$self->{with_configure}=0},'with-feature=s'=>sub {$self->{features}{$_[1]}=1},'without-feature=s'=>sub {$self->{features}{$_[1]}=0},'with-all-features'=>sub {$self->{features}{__all}=1},'pp|pureperl!'=>\$self->{pure_perl},"cpanfile=s"=>\$self->{cpanfile_path},$self->install_type_handlers,$self->build_args_handlers,);if (!@ARGV && $0 ne '-' &&!-t STDIN){push@ARGV,$self->load_argv_from_fh(\*STDIN);$self->{load_from_stdin}=1}$self->{argv}=\@ARGV}sub check_upgrade {my$self=shift;my$install_base=$ENV{PERL_LOCAL_LIB_ROOT}? $self->local_lib_target($ENV{PERL_LOCAL_LIB_ROOT}): $Config{installsitebin};if ($0 eq '-'){return}elsif ($0 !~ /^$install_base/){if ($0 =~ m!perlbrew/bin!){die <{_checked}++;$self->bootstrap_local_lib}sub setup_verify {my$self=shift;my$has_modules=eval {require Module::Signature;require Digest::SHA;1};$self->{cpansign}=$self->which('cpansign');unless ($has_modules && $self->{cpansign}){warn "WARNING: Module::Signature and Digest::SHA is required for distribution verifications.\n";$self->{verify}=0}}sub parse_module_args {my($self,$module)=@_;$module =~ s/^([A-Za-z0-9_:]+)@([v\d\._]+)$/$1~== $2/;if ($module =~ /\~[v\d\._,\!<>= ]+$/){return split /\~/,$module,2}else {return$module,undef}}sub doit {my$self=shift;my$code;eval {$code=($self->_doit==0)};if (my$e=$@){warn$e;$code=1}return$code}sub _doit {my$self=shift;$self->setup_home;$self->init_tools;$self->setup_verify if$self->{verify};if (my$action=$self->{action}){$self->$action()and return 1}return$self->show_help(1)unless @{$self->{argv}}or $self->{load_from_stdin};$self->configure_mirrors;my$cwd=Cwd::cwd;my@fail;for my$module (@{$self->{argv}}){if ($module =~ s/\.pm$//i){my ($volume,$dirs,$file)=File::Spec->splitpath($module);$module=join '::',grep {$_}File::Spec->splitdir($dirs),$file}($module,my$version)=$self->parse_module_args($module);$self->chdir($cwd);if ($self->{cmd}eq 'uninstall'){$self->uninstall_module($module)or push@fail,$module}else {$self->install_module($module,0,$version)or push@fail,$module}}if ($self->{base}&& $self->{auto_cleanup}){$self->cleanup_workdirs}if ($self->{installed_dists}){my$dists=$self->{installed_dists}> 1 ? "distributions" : "distribution";$self->diag("$self->{installed_dists} $dists installed\n",1)}if ($self->{scandeps}){$self->dump_scandeps()}$self->chdir($cwd);return!@fail}sub setup_home {my$self=shift;$self->{home}=$self->env('HOME')if$self->env('HOME');unless (_writable($self->{home})){die "Can't write to cpanm home '$self->{home}': You should fix it with chown/chmod first.\n"}$self->{base}="$self->{home}/work/" .time .".$$";File::Path::mkpath([$self->{base}],0,0777);$self->{log}=File::Spec->catfile($self->{base},"build.log");my$final_log="$self->{home}/build.log";{open my$out,">$self->{log}" or die "$self->{log}: $!"}if (CAN_SYMLINK){my$build_link="$self->{home}/latest-build";unlink$build_link;symlink$self->{base},$build_link;unlink$final_log;symlink$self->{log},$final_log}else {my$log=$self->{log};my$home=$self->{home};$self->{at_exit}=sub {my$self=shift;my$temp_log="$home/build.log." .time .".$$";File::Copy::copy($log,$temp_log)&& unlink($final_log);rename($temp_log,$final_log)}}$self->chat("cpanm (App::cpanminus) $VERSION on perl $] built for $Config{archname}\n" ."Work directory is $self->{base}\n")}sub package_index_for {my ($self,$mirror)=@_;return$self->source_for($mirror)."/02packages.details.txt"}sub generate_mirror_index {my ($self,$mirror)=@_;my$file=$self->package_index_for($mirror);my$gz_file=$file .'.gz';my$index_mtime=(stat$gz_file)[9];unless (-e $file && (stat$file)[9]>= $index_mtime){$self->chat("Uncompressing index file...\n");if (eval {require Compress::Zlib}){my$gz=Compress::Zlib::gzopen($gz_file,"rb")or do {$self->diag_fail("$Compress::Zlib::gzerrno opening compressed index");return};open my$fh,'>',$file or do {$self->diag_fail("$! opening uncompressed index for write");return};my$buffer;while (my$status=$gz->gzread($buffer)){if ($status < 0){$self->diag_fail($gz->gzerror ." reading compressed index");return}print$fh $buffer}}else {if (system("gunzip -c $gz_file > $file")){$self->diag_fail("Cannot uncompress -- please install gunzip or Compress::Zlib");return}}utime$index_mtime,$index_mtime,$file}return 1}sub search_mirror_index {my ($self,$mirror,$module,$version)=@_;$self->search_mirror_index_file($self->package_index_for($mirror),$module,$version)}sub search_mirror_index_file {my($self,$file,$module,$version)=@_;open my$fh,'<',$file or return;my$found;while (<$fh>){if (m!^\Q$module\E\s+([\w\.]+)\s+(\S*)!m){$found=$self->cpan_module($module,$2,$1);last}}return$found unless$self->{cascade_search};if ($found){if ($self->satisfy_version($module,$found->{module_version},$version)){return$found}else {$self->chat("Found $module $found->{module_version} which doesn't satisfy $version.\n")}}return}sub with_version_range {my($self,$version)=@_;defined($version)&& $version =~ /(?:<|!=|==)/}sub encode_json {my($self,$data)=@_;require JSON::PP;my$json=JSON::PP::encode_json($data);$self->uri_escape($json)}sub decode_json {my($self,$json)=@_;require JSON::PP;JSON::PP::decode_json($json)}sub uri_escape {my($self,$fragment)=@_;$fragment =~ s/([^A-Za-z0-9\-\._~])/uc sprintf("%%%02X", ord($1))/eg;$fragment}sub uri_params {my($self,@params)=@_;my@param_strings;while (my$key=shift@params){my$value=shift@params;push@param_strings,join '=',map$self->uri_escape($_),$key,$value}return join '&',@param_strings}sub numify_ver {my($self,$ver)=@_;eval version->new($ver)->numify}sub search_metacpan {my($self,$module,$version,$dev_release)=@_;my$metacpan_uri='http://fastapi.metacpan.org/v1/download_url/';my$url=$metacpan_uri .$module;my$query=$self->uri_params(($version ? (version=>$version): ()),($dev_release ? (dev=>1): ()),);$url .= '?' .$query if length$query;my$dist_json=$self->get($url);my$dist_meta=eval {$self->decode_json($dist_json)};if ($dist_meta && $dist_meta->{download_url}){(my$distfile=$dist_meta->{download_url})=~ s!.+/authors/id/!!;local$self->{mirrors}=$self->{mirrors};$self->{mirrors}=['http://cpan.metacpan.org' ];return$self->cpan_module($module,$distfile,$dist_meta->{version})}$self->chat("! Could not find a release matching $module".($version?" ($version)":'')." on MetaCPAN.\n");return}sub search_database {my($self,$module,$version)=@_;my$found;if ($self->{dev_release}or $self->{metacpan}){$found=$self->search_metacpan($module,$version,$self->{dev_release})and return$found;$found=$self->search_cpanmetadb($module,$version,$self->{dev_release})and return$found}else {$found=$self->search_cpanmetadb($module,$version)and return$found;$found=$self->search_metacpan($module,$version)and return$found}}sub search_cpanmetadb {my($self,$module,$version,$dev_release)=@_;$self->chat("Searching $module ($version) on cpanmetadb ...\n");if ($self->with_version_range($version)){return$self->search_cpanmetadb_history($module,$version,$dev_release)}else {return$self->search_cpanmetadb_package($module,$version,$dev_release)}}sub search_cpanmetadb_package {my($self,$module,$version,$dev_release)=@_;require CPAN::Meta::YAML;(my$uri=$self->{cpanmetadb})=~ s{/?$}{/package/$module};my$yaml=$self->get($uri);my$meta=eval {CPAN::Meta::YAML::Load($yaml)};if ($meta && $meta->{distfile}){return$self->cpan_module($module,$meta->{distfile},$meta->{version})}$self->diag_fail("Finding $module on cpanmetadb failed.");return}sub search_cpanmetadb_history {my($self,$module,$version)=@_;(my$uri=$self->{cpanmetadb})=~ s{/?$}{/history/$module};my$content=$self->get($uri)or return;my@found;for my$line (split /\r?\n/,$content){if ($line =~ /^$module\s+(\S+)\s+(\S+)$/){push@found,{version=>$1,version_obj=>version::->parse($1),distfile=>$2,}}}return unless@found;$found[-1]->{latest}=1;my$match;for my$try (sort {$b->{version_obj}cmp $a->{version_obj}}@found){if ($self->satisfy_version($module,$try->{version_obj},$version)){local$self->{mirrors}=$self->{mirrors};unshift @{$self->{mirrors}},'http://backpan.perl.org' unless$try->{latest};return$self->cpan_module($module,$try->{distfile},$try->{version})}}$self->diag_fail("Finding $module ($version) on cpanmetadb failed.");return}sub search_module {my($self,$module,$version)=@_;if ($self->{mirror_index}){$self->mask_output(chat=>"Searching $module on mirror index $self->{mirror_index} ...\n");my$pkg=$self->search_mirror_index_file($self->{mirror_index},$module,$version);return$pkg if$pkg;unless ($self->{cascade_search}){$self->mask_output(diag_fail=>"Finding $module ($version) on mirror index $self->{mirror_index} failed.");return}}unless ($self->{mirror_only}){my$found=$self->search_database($module,$version);return$found if$found}MIRROR: for my$mirror (@{$self->{mirrors}}){$self->mask_output(chat=>"Searching $module on mirror $mirror ...\n");my$name='02packages.details.txt.gz';my$uri="$mirror/modules/$name";my$gz_file=$self->package_index_for($mirror).'.gz';unless ($self->{pkgs}{$uri}){$self->mask_output(chat=>"Downloading index file $uri ...\n");$self->mirror($uri,$gz_file);$self->generate_mirror_index($mirror)or next MIRROR;$self->{pkgs}{$uri}="!!retrieved!!"}my$pkg=$self->search_mirror_index($mirror,$module,$version);return$pkg if$pkg;$self->mask_output(diag_fail=>"Finding $module ($version) on mirror $mirror failed.")}return}sub source_for {my($self,$mirror)=@_;$mirror =~ s/[^\w\.\-]+/%/g;my$dir="$self->{home}/sources/$mirror";File::Path::mkpath([$dir ],0,0777);return$dir}sub load_argv_from_fh {my($self,$fh)=@_;my@argv;while(defined(my$line=<$fh>)){chomp$line;$line =~ s/#.+$//;$line =~ s/^\s+//;$line =~ s/\s+$//;push@argv,split ' ',$line if$line}return@argv}sub show_version {my$self=shift;print "cpanm (App::cpanminus) version $VERSION ($0)\n";print "perl version $] ($^X)\n\n";print " \%Config:\n";for my$key (qw(archname installsitelib installsitebin installman1dir installman3dir sitearchexp sitelibexp vendorarch vendorlibexp archlibexp privlibexp)){print " $key=$Config{$key}\n" if$Config{$key}}print " \%ENV:\n";for my$key (grep /^PERL/,sort keys%ENV){print " $key=$ENV{$key}\n"}print " \@INC:\n";for my$inc (@INC){print " $inc\n" unless ref($inc)eq 'CODE'}return 1}sub show_help {my$self=shift;if ($_[0]){print <splitdir($dir);while (@dir){$dir=File::Spec->catdir(@dir);if (-e $dir){return -w _}pop@dir}return}sub maybe_abs {my($self,$lib)=@_;if ($lib eq '_' or $lib =~ /^~/ or File::Spec->file_name_is_absolute($lib)){return$lib}else {return File::Spec->canonpath(File::Spec->catdir(Cwd::cwd(),$lib))}}sub local_lib_target {my($self,$root)=@_;(grep {$_ ne ''}split /\Q$Config{path_sep}/,$root)[0]}sub bootstrap_local_lib {my$self=shift;if ($self->{local_lib}){return$self->setup_local_lib($self->{local_lib})}if ($ENV{PERL_LOCAL_LIB_ROOT}&& $ENV{PERL_MM_OPT}){return$self->setup_local_lib($self->local_lib_target($ENV{PERL_LOCAL_LIB_ROOT}),1)}return if$self->{sudo}or (_writable($Config{installsitelib})and _writable($Config{installsitebin}));if ($ENV{PERL_MM_OPT}and ($ENV{MODULEBUILDRC}or $ENV{PERL_MB_OPT})){return}$self->setup_local_lib;$self->diag(<module=>$_}@$config_deps;my$reqs=CPAN::Meta::Requirements->from_string_hash({'Module::Build'=>'0.38','ExtUtils::MakeMaker'=>'6.58','ExtUtils::Install'=>'1.46',});if ($deps{"ExtUtils::MakeMaker"}){$deps{"ExtUtils::MakeMaker"}->merge_with($reqs)}elsif ($deps{"Module::Build"}){$deps{"Module::Build"}->merge_with($reqs);$deps{"ExtUtils::Install"}||= App::cpanminus::Dependency->new("ExtUtils::Install",0,'configure');$deps{"ExtUtils::Install"}->merge_with($reqs)}@$config_deps=values%deps}sub _core_only_inc {my($self,$base)=@_;require local::lib;(local::lib->resolve_path(local::lib->install_base_arch_path($base)),local::lib->resolve_path(local::lib->install_base_perl_path($base)),(!$self->{exclude_vendor}? grep {$_}@Config{qw(vendorarch vendorlibexp)}: ()),@Config{qw(archlibexp privlibexp)},)}sub _diff {my($self,$old,$new)=@_;my@diff;my%old=map {$_=>1}@$old;for my$n (@$new){push@diff,$n unless exists$old{$n}}@diff}sub _setup_local_lib_env {my($self,$base)=@_;$self->diag(<setup_env_hash_for($base,0)}sub setup_local_lib {my($self,$base,$no_env)=@_;$base=undef if$base eq '_';require local::lib;{local $0='cpanm';$base ||= "~/perl5";$base=local::lib->resolve_path($base);if ($self->{self_contained}){my@inc=$self->_core_only_inc($base);$self->{search_inc}=[@inc ]}else {$self->{search_inc}=[local::lib->install_base_arch_path($base),local::lib->install_base_perl_path($base),@INC,]}$self->_setup_local_lib_env($base)unless$no_env;$self->{local_lib}=$base}}sub prompt_bool {my($self,$mess,$def)=@_;my$val=$self->prompt($mess,$def);return lc$val eq 'y'}sub prompt {my($self,$mess,$def)=@_;my$isa_tty=-t STDIN && (-t STDOUT ||!(-f STDOUT || -c STDOUT));my$dispdef=defined$def ? "[$def] " : " ";$def=defined$def ? $def : "";if (!$self->{prompt}|| (!$isa_tty && eof STDIN)){return$def}local $|=1;local $\;my$ans;eval {local$SIG{ALRM}=sub {undef$ans;die "alarm\n"};print STDOUT "$mess $dispdef";alarm$self->{prompt_timeout}if$self->{prompt_timeout};$ans=;alarm 0};if (defined$ans){chomp$ans}else {print STDOUT "\n"}return (!defined$ans || $ans eq '')? $def : $ans}sub diag_ok {my($self,$msg)=@_;chomp$msg;$msg ||= "OK";if ($self->{in_progress}){$self->_diag("$msg\n");$self->{in_progress}=0}$self->log("-> $msg\n")}sub diag_fail {my($self,$msg,$always)=@_;chomp$msg;if ($self->{in_progress}){$self->_diag("FAIL\n");$self->{in_progress}=0}if ($msg){$self->_diag("! $msg\n",$always,1);$self->log("-> FAIL $msg\n")}}sub diag_progress {my($self,$msg)=@_;chomp$msg;$self->{in_progress}=1;$self->_diag("$msg ... ");$self->log("$msg\n")}sub _diag {my($self,$msg,$always,$error)=@_;my$fh=$error ? *STDERR : *STDOUT;print {$fh}$msg if$always or $self->{verbose}or!$self->{quiet}}sub diag {my($self,$msg,$always)=@_;$self->_diag($msg,$always);$self->log($msg)}sub chat {my$self=shift;print STDERR @_ if$self->{verbose};$self->log(@_)}sub mask_output {my$self=shift;my$method=shift;$self->$method($self->mask_uri_passwords(@_))}sub log {my$self=shift;open my$out,">>$self->{log}";print$out @_}sub run {my($self,$cmd)=@_;if (WIN32){$cmd=$self->shell_quote(@$cmd)if ref$cmd eq 'ARRAY';unless ($self->{verbose}){$cmd .= " >> " .$self->shell_quote($self->{log})." 2>&1"}!system$cmd}else {my$pid=fork;if ($pid){waitpid$pid,0;return!$?}else {$self->run_exec($cmd)}}}sub run_exec {my($self,$cmd)=@_;if (ref$cmd eq 'ARRAY'){unless ($self->{verbose}){open my$logfh,">>",$self->{log};open STDERR,'>&',$logfh;open STDOUT,'>&',$logfh;close$logfh}exec @$cmd}else {unless ($self->{verbose}){$cmd .= " >> " .$self->shell_quote($self->{log})." 2>&1"}exec$cmd}}sub run_timeout {my($self,$cmd,$timeout)=@_;return$self->run($cmd)if WIN32 || $self->{verbose}||!$timeout;my$pid=fork;if ($pid){eval {local$SIG{ALRM}=sub {die "alarm\n"};alarm$timeout;waitpid$pid,0;alarm 0};if ($@ && $@ eq "alarm\n"){$self->diag_fail("Timed out (> ${timeout}s). Use --verbose to retry.");local$SIG{TERM}='IGNORE';kill TERM=>0;waitpid$pid,0;return}return!$?}elsif ($pid==0){$self->run_exec($cmd)}else {$self->chat("! fork failed: falling back to system()\n");$self->run($cmd)}}sub append_args {my($self,$cmd,$phase)=@_;if (my$args=$self->{build_args}{$phase}){$cmd=join ' ',$self->shell_quote(@$cmd),$args}$cmd}sub configure {my($self,$cmd,$depth)=@_;local$ENV{PERL5_CPAN_IS_RUNNING}=local$ENV{PERL5_CPANPLUS_IS_RUNNING}=$$;local$ENV{PERL5_CPANM_IS_RUNNING}=$$;my$use_default=!$self->{interactive};local$ENV{PERL_MM_USE_DEFAULT}=$use_default;local$ENV{PERL_MM_OPT}=$ENV{PERL_MM_OPT};local$ENV{PERL_MB_OPT}=$ENV{PERL_MB_OPT};unless ($self->{pod2man}){$ENV{PERL_MM_OPT}.= " INSTALLMAN1DIR=none INSTALLMAN3DIR=none";$ENV{PERL_MB_OPT}.= " --config installman1dir= --config installsiteman1dir= --config installman3dir= --config installsiteman3dir="}if ($self->{pure_perl}){$ENV{PERL_MM_OPT}.= " PUREPERL_ONLY=1";$ENV{PERL_MB_OPT}.= " --pureperl-only"}local$ENV{PERL_USE_UNSAFE_INC}=1 unless exists$ENV{PERL_USE_UNSAFE_INC};$cmd=$self->append_args($cmd,'configure')if$depth==0;local$self->{verbose}=$self->{verbose}|| $self->{interactive};$self->run_timeout($cmd,$self->{configure_timeout})}sub build {my($self,$cmd,$distname,$depth)=@_;local$ENV{PERL_MM_USE_DEFAULT}=!$self->{interactive};local$ENV{PERL_USE_UNSAFE_INC}=1 unless exists$ENV{PERL_USE_UNSAFE_INC};$cmd=$self->append_args($cmd,'build')if$depth==0;return 1 if$self->run_timeout($cmd,$self->{build_timeout});while (1){my$ans=lc$self->prompt("Building $distname failed.\nYou can s)kip, r)etry, e)xamine build log, or l)ook ?","s");return if$ans eq 's';return$self->build($cmd,$distname,$depth)if$ans eq 'r';$self->show_build_log if$ans eq 'e';$self->look if$ans eq 'l'}}sub test {my($self,$cmd,$distname,$depth)=@_;return 1 if$self->{notest};local$ENV{PERL_MM_USE_DEFAULT}=!$self->{interactive};local$ENV{NONINTERACTIVE_TESTING}=!$self->{interactive};$cmd=$self->append_args($cmd,'test')if$depth==0;local$ENV{PERL_USE_UNSAFE_INC}=1 unless exists$ENV{PERL_USE_UNSAFE_INC};return 1 if$self->run_timeout($cmd,$self->{test_timeout});if ($self->{force}){$self->diag_fail("Testing $distname failed but installing it anyway.");return 1}else {$self->diag_fail;while (1){my$ans=lc$self->prompt("Testing $distname failed.\nYou can s)kip, r)etry, f)orce install, e)xamine build log, or l)ook ?","s");return if$ans eq 's';return$self->test($cmd,$distname,$depth)if$ans eq 'r';return 1 if$ans eq 'f';$self->show_build_log if$ans eq 'e';$self->look if$ans eq 'l'}}}sub install {my($self,$cmd,$uninst_opts,$depth)=@_;if ($depth==0 && $self->{test_only}){return 1}local$ENV{PERL_USE_UNSAFE_INC}=1 unless exists$ENV{PERL_USE_UNSAFE_INC};if ($self->{sudo}){unshift @$cmd,"sudo"}if ($self->{uninstall_shadows}&&!$ENV{PERL_MM_OPT}){push @$cmd,@$uninst_opts}$cmd=$self->append_args($cmd,'install')if$depth==0;$self->run($cmd)}sub look {my$self=shift;my$shell=$ENV{SHELL};$shell ||= $ENV{COMSPEC}if WIN32;if ($shell){my$cwd=Cwd::cwd;$self->diag("Entering $cwd with $shell\n");system$shell}else {$self->diag_fail("You don't seem to have a SHELL :/")}}sub show_build_log {my$self=shift;my@pagers=($ENV{PAGER},(WIN32 ? (): ('less')),'more');my$pager;while (@pagers){$pager=shift@pagers;next unless$pager;$pager=$self->which($pager);next unless$pager;last}if ($pager){system("$pager < $self->{log}")}else {$self->diag_fail("You don't seem to have a PAGER :/")}}sub chdir {my$self=shift;Cwd::chdir(File::Spec->canonpath($_[0]))or die "$_[0]: $!"}sub configure_mirrors {my$self=shift;unless (@{$self->{mirrors}}){$self->{mirrors}=['http://www.cpan.org' ]}for (@{$self->{mirrors}}){s!^/!file:///!;s!/$!!}}sub self_upgrade {my$self=shift;$self->check_upgrade;$self->{argv}=['App::cpanminus' ];return}sub install_module {my($self,$module,$depth,$version)=@_;$self->check_libs;if ($self->{seen}{$module}++){$self->chat("Already tried $module. Skipping.\n");return 1}if ($self->{skip_satisfied}){my($ok,$local)=$self->check_module($module,$version || 0);if ($ok){$self->diag("You have $module ($local)\n",1);return 1}}my$dist=$self->resolve_name($module,$version);unless ($dist){my$what=$module .($version ? " ($version)" : "");$self->diag_fail("Couldn't find module or a distribution $what",1);return}if ($dist->{distvname}&& $self->{seen}{$dist->{distvname}}++){$self->chat("Already tried $dist->{distvname}. Skipping.\n");return 1}if ($self->{cmd}eq 'info'){print$self->format_dist($dist),"\n";return 1}$dist->{depth}=$depth;if ($dist->{module}){unless ($self->satisfy_version($dist->{module},$dist->{module_version},$version)){$self->diag("Found $dist->{module} $dist->{module_version} which doesn't satisfy $version.\n",1);return}my$cmp=$version ? "==" : "";my$requirement=$dist->{module_version}? "$cmp$dist->{module_version}" : 0;my($ok,$local)=$self->check_module($dist->{module},$requirement);if ($self->{skip_installed}&& $ok){$self->diag("$dist->{module} is up to date. ($local)\n",1);return 1}}if ($dist->{dist}eq 'perl'){$self->diag("skipping $dist->{pathname}\n");return 1}$self->diag("--> Working on $module\n");$dist->{dir}||= $self->fetch_module($dist);unless ($dist->{dir}){$self->diag_fail("Failed to fetch distribution $dist->{distvname}",1);return}$self->chat("Entering $dist->{dir}\n");$self->chdir($self->{base});$self->chdir($dist->{dir});if ($self->{cmd}eq 'look'){$self->look;return 1}return$self->build_stuff($module,$dist,$depth)}sub uninstall_search_path {my$self=shift;$self->{local_lib}? (local::lib->install_base_arch_path($self->{local_lib}),local::lib->install_base_perl_path($self->{local_lib})): @Config{qw(installsitearch installsitelib)}}sub uninstall_module {my ($self,$module)=@_;$self->check_libs;my@inc=$self->uninstall_search_path;my($metadata,$packlist)=$self->packlists_containing($module,\@inc);unless ($packlist){$self->diag_fail(<uninstall_target($metadata,$packlist);$self->ask_permission($module,\@uninst_files)or return;$self->uninstall_files(@uninst_files,$packlist);$self->diag("Successfully uninstalled $module\n",1);return 1}sub packlists_containing {my($self,$module,$inc)=@_;require Module::Metadata;my$metadata=Module::Metadata->new_from_module($module,inc=>$inc)or return;my$packlist;my$wanted=sub {return unless $_ eq '.packlist' && -f $_;for my$file ($self->unpack_packlist($File::Find::name)){$packlist ||= $File::Find::name if$file eq $metadata->filename}};{require File::pushd;my$pushd=File::pushd::pushd();my@search=grep -d $_,map File::Spec->catdir($_,'auto'),@$inc;File::Find::find($wanted,@search)}return$metadata,$packlist}sub uninstall_target {my($self,$metadata,$packlist)=@_;if ($self->has_shadow_install($metadata)or $self->{local_lib}){grep$self->should_unlink($_),$self->unpack_packlist($packlist)}else {$self->unpack_packlist($packlist)}}sub has_shadow_install {my($self,$metadata)=@_;my@shadow=grep defined,map Module::Metadata->new_from_module($metadata->name,inc=>[$_]),@INC;@shadow >= 2}sub should_unlink {my($self,$file)=@_;if ($self->{local_lib}){$file =~ /^\Q$self->{local_lib}\E/}else {!(grep$file =~ /^\Q$_\E/,@Config{qw(installbin installscript installman1dir installman3dir)})}}sub ask_permission {my ($self,$module,$files)=@_;$self->diag("$module contains the following files:\n\n");for my$file (@$files){$self->diag(" $file\n")}$self->diag("\n");return 'force uninstall' if$self->{force};local$self->{prompt}=1;return$self->prompt_bool("Are you sure you want to uninstall $module?",'y')}sub unpack_packlist {my ($self,$packlist)=@_;open my$fh,'<',$packlist or die "$packlist: $!";map {chomp;$_}<$fh>}sub uninstall_files {my ($self,@files)=@_;$self->diag("\n");for my$file (@files){$self->diag("Unlink: $file\n");unlink$file or $self->diag_fail("$!: $file")}$self->diag("\n");return 1}sub format_dist {my($self,$dist)=@_;return "$dist->{cpanid}/$dist->{filename}"}sub trim {local $_=shift;tr/\n/ /d;s/^\s*|\s*$//g;$_}sub fetch_module {my($self,$dist)=@_;$self->chdir($self->{base});for my$uri (@{$dist->{uris}}){$self->mask_output(diag_progress=>"Fetching $uri");my$filename=$dist->{filename}|| $uri;my$name=File::Basename::basename($filename);my$cancelled;my$fetch=sub {my$file;eval {local$SIG{INT}=sub {$cancelled=1;die "SIGINT\n"};$self->mirror($uri,$name);$file=$name if -e $name};$self->diag("ERROR: " .trim("$@")."\n",1)if $@ && $@ ne "SIGINT\n";return$file};my($try,$file);while ($try++ < 3){$file=$fetch->();last if$cancelled or $file;$self->mask_output(diag_fail=>"Download $uri failed. Retrying ... ")}if ($cancelled){$self->diag_fail("Download cancelled.");return}unless ($file){$self->mask_output(diag_fail=>"Failed to download $uri");next}$self->diag_ok;$dist->{local_path}=File::Spec->rel2abs($name);my$dir=$self->unpack($file,$uri,$dist);next unless$dir;if (my$save=$self->{save_dists}){my$path=$dist->{pathname}? "$save/authors/id/$dist->{pathname}" : "$save/vendor/$file";$self->chat("Copying $name to $path\n");File::Path::mkpath([File::Basename::dirname($path)],0,0777);File::Copy::copy($file,$path)or warn $!}return$dist,$dir}}sub unpack {my($self,$file,$uri,$dist)=@_;if ($self->{verify}){$self->verify_archive($file,$uri,$dist)or return}$self->chat("Unpacking $file\n");my$dir=$file =~ /\.zip/i ? $self->unzip($file): $self->untar($file);unless ($dir){$self->diag_fail("Failed to unpack $file: no directory")}return$dir}sub verify_checksums_signature {my($self,$chk_file)=@_;require Module::Signature;$self->chat("Verifying the signature of CHECKSUMS\n");my$rv=eval {local$SIG{__WARN__}=sub {};my$v=Module::Signature::_verify($chk_file);$v==Module::Signature::SIGNATURE_OK()};if ($rv){$self->chat("Verified OK!\n")}else {$self->diag_fail("Verifying CHECKSUMS signature failed: $rv\n");return}return 1}sub verify_archive {my($self,$file,$uri,$dist)=@_;unless ($dist->{cpanid}){$self->chat("Archive '$file' does not seem to be from PAUSE. Skip verification.\n");return 1}(my$mirror=$uri)=~ s!/authors/id.*$!!;(my$chksum_uri=$uri)=~ s!/[^/]*$!/CHECKSUMS!;my$chk_file=$self->source_for($mirror)."/$dist->{cpanid}.CHECKSUMS";$self->mask_output(diag_progress=>"Fetching $chksum_uri");$self->mirror($chksum_uri,$chk_file);unless (-e $chk_file){$self->diag_fail("Fetching $chksum_uri failed.\n");return}$self->diag_ok;$self->verify_checksums_signature($chk_file)or return;$self->verify_checksum($file,$chk_file)}sub verify_checksum {my($self,$file,$chk_file)=@_;$self->chat("Verifying the SHA1 for $file\n");open my$fh,"<$chk_file" or die "$chk_file: $!";my$data=join '',<$fh>;$data =~ s/\015?\012/\n/g;require Safe;my$chksum=Safe->new->reval($data);if (!ref$chksum or ref$chksum ne 'HASH'){$self->diag_fail("! Checksum file downloaded from $chk_file is broken.\n");return}if (my$sha=$chksum->{$file}{sha256}){my$hex=$self->sha1_for($file);if ($hex eq $sha){$self->chat("Checksum for $file: Verified!\n")}else {$self->diag_fail("Checksum mismatch for $file\n");return}}else {$self->chat("Checksum for $file not found in CHECKSUMS.\n");return}}sub sha1_for {my($self,$file)=@_;require Digest::SHA;open my$fh,"<",$file or die "$file: $!";my$dg=Digest::SHA->new(256);my($data);while (read($fh,$data,4096)){$dg->add($data)}return$dg->hexdigest}sub verify_signature {my($self,$dist)=@_;$self->diag_progress("Verifying the SIGNATURE file");my$out=`$self->{cpansign} -v --skip 2>&1`;$self->log($out);if ($out =~ /Signature verified OK/){$self->diag_ok("Verified OK");return 1}else {$self->diag_fail("SIGNATURE verification for $dist->{filename} failed\n");return}}sub resolve_name {my($self,$module,$version)=@_;if ($module =~ /(?:^git:|\.git(?:@.+)?$)/){return$self->git_uri($module)}if ($module =~ /^(ftp|https?|file):/){if ($module =~ m!authors/id/(.*)!){return$self->cpan_dist($1,$module)}else {return {uris=>[$module ]}}}if ($module =~ m!^[\./]! && -d $module){return {source=>'local',dir=>Cwd::abs_path($module),}}if (-f $module){return {source=>'local',uris=>["file://" .Cwd::abs_path($module)],}}if ($module =~ s!^cpan:///distfile/!!){return$self->cpan_dist($module)}if ($module =~ m!^(?:[A-Z]/[A-Z]{2}/)?([A-Z]{2}[\-A-Z0-9]*/.*)$!){return$self->cpan_dist($1)}return$self->search_module($module,$version)}sub cpan_module {my($self,$module,$dist_file,$version)=@_;my$dist=$self->cpan_dist($dist_file);$dist->{module}=$module;$dist->{module_version}=$version if$version && $version ne 'undef';return$dist}sub cpan_dist {my($self,$dist,$url)=@_;$dist =~ s!^([A-Z]{2})!substr($1,0,1)."/".substr($1,0,2)."/".$1!e;require CPAN::DistnameInfo;my$d=CPAN::DistnameInfo->new($dist);if ($url){$url=[$url ]unless ref$url eq 'ARRAY'}else {my$id=$d->cpanid;my$fn=substr($id,0,1)."/" .substr($id,0,2)."/" .$id ."/" .$d->filename;my@mirrors=@{$self->{mirrors}};my@urls=map "$_/authors/id/$fn",@mirrors;$url=\@urls,}return {$d->properties,source=>'cpan',uris=>$url,}}sub git_uri {my ($self,$uri)=@_;($uri,my$commitish)=split /(?<=\.git)@/i,$uri,2;my$dir=File::Temp::tempdir(CLEANUP=>1);$self->mask_output(diag_progress=>"Cloning $uri");$self->run(['git','clone',$uri,$dir ]);unless (-e "$dir/.git"){$self->diag_fail("Failed cloning git repository $uri",1);return}if ($commitish){require File::pushd;my$dir=File::pushd::pushd($dir);unless ($self->run(['git','checkout',$commitish ])){$self->diag_fail("Failed to checkout '$commitish' in git repository $uri\n");return}}$self->diag_ok;return {source=>'local',dir=>$dir,}}sub setup_module_build_patch {my$self=shift;open my$out,">$self->{base}/ModuleBuildSkipMan.pm" or die $!;print$out <{search_inc}||= do {if (defined$::Bin){[grep!/^\Q$::Bin\E\/..\/(?:fat)?lib$/,@INC]}else {[@INC]}}}sub check_module {my($self,$mod,$want_ver)=@_;require Module::Metadata;my$meta=Module::Metadata->new_from_module($mod,inc=>$self->search_inc)or return 0,undef;my$version=$meta->version;if ($self->{self_contained}&& $self->loaded_from_perl_lib($meta)){$version=$self->core_version_for($mod);return 0,undef if$version && $version==-1}$self->{local_versions}{$mod}=$version;if ($self->is_deprecated($meta)){return 0,$version}elsif ($self->satisfy_version($mod,$version,$want_ver)){return 1,($version || 'undef')}else {return 0,$version}}sub satisfy_version {my($self,$mod,$version,$want_ver)=@_;$want_ver='0' unless defined($want_ver)&& length($want_ver);require CPAN::Meta::Requirements;my$requirements=CPAN::Meta::Requirements->new;$requirements->add_string_requirement($mod,$want_ver);$requirements->accepts_module($mod,$version)}sub unsatisfy_how {my($self,$ver,$want_ver)=@_;if ($want_ver =~ /^[v0-9\.\_]+$/){return "$ver < $want_ver"}else {return "$ver doesn't satisfy $want_ver"}}sub is_deprecated {my($self,$meta)=@_;my$deprecated=eval {require Module::CoreList;Module::CoreList::is_deprecated($meta->{module})};return$deprecated && $self->loaded_from_perl_lib($meta)}sub loaded_from_perl_lib {my($self,$meta)=@_;require Config;my@dirs=qw(archlibexp privlibexp);if ($self->{self_contained}&&!$self->{exclude_vendor}&& $Config{vendorarch}){unshift@dirs,qw(vendorarch vendorlibexp)}for my$dir (@dirs){my$confdir=$Config{$dir};if ($confdir eq substr($meta->filename,0,length($confdir))){return 1}}return}sub should_install {my($self,$mod,$ver)=@_;$self->chat("Checking if you have $mod $ver ... ");my($ok,$local)=$self->check_module($mod,$ver);if ($ok){$self->chat("Yes ($local)\n")}elsif ($local){$self->chat("No (" .$self->unsatisfy_how($local,$ver).")\n")}else {$self->chat("No\n")}return$mod unless$ok;return}sub check_perl_version {my($self,$version)=@_;require CPAN::Meta::Requirements;my$req=CPAN::Meta::Requirements->from_string_hash({perl=>$version });$req->accepts_module(perl=>$])}sub install_deps {my($self,$dir,$depth,@deps)=@_;my(@install,%seen,@fail);for my$dep (@deps){next if$seen{$dep->module};if ($dep->module eq 'perl'){if ($dep->is_requirement &&!$self->check_perl_version($dep->version)){$self->diag("Needs perl @{[$dep->version]}, you have $]\n");push@fail,'perl'}}elsif ($self->should_install($dep->module,$dep->version)){push@install,$dep;$seen{$dep->module}=1}}if (@install){$self->diag("==> Found dependencies: " .join(", ",map $_->module,@install)."\n")}for my$dep (@install){$self->install_module($dep->module,$depth + 1,$dep->version)}$self->chdir($self->{base});$self->chdir($dir)if$dir;if ($self->{scandeps}){return 1}my@not_ok=$self->unsatisfied_deps(@deps);if (@not_ok){return 0,\@not_ok}else {return 1}}sub unsatisfied_deps {my($self,@deps)=@_;require CPAN::Meta::Check;require CPAN::Meta::Requirements;my$reqs=CPAN::Meta::Requirements->new;for my$dep (grep $_->is_requirement,@deps){$reqs->add_string_requirement($dep->module=>$dep->requires_version || '0')}my$ret=CPAN::Meta::Check::check_requirements($reqs,'requires',$self->{search_inc});grep defined,values %$ret}sub install_deps_bailout {my($self,$target,$dir,$depth,@deps)=@_;my($ok,$fail)=$self->install_deps($dir,$depth,@deps);if (!$ok){$self->diag_fail("Installing the dependencies failed: " .join(", ",@$fail),1);unless ($self->prompt_bool("Do you want to continue building $target anyway?","n")){$self->diag_fail("Bailing out the installation for $target.",1);return}}return 1}sub build_stuff {my($self,$stuff,$dist,$depth)=@_;if ($self->{verify}&& -e 'SIGNATURE'){$self->verify_signature($dist)or return}require CPAN::Meta;my($meta_file)=grep -f,qw(META.json META.yml);if ($meta_file){$self->chat("Checking configure dependencies from $meta_file\n");$dist->{cpanmeta}=eval {CPAN::Meta->load_file($meta_file)}}elsif ($dist->{dist}&& $dist->{version}){$self->chat("META.yml/json not found. Creating skeleton for it.\n");$dist->{cpanmeta}=CPAN::Meta->new({name=>$dist->{dist},version=>$dist->{version}})}$dist->{meta}=$dist->{cpanmeta}? $dist->{cpanmeta}->as_struct : {};my@config_deps;if ($dist->{cpanmeta}){push@config_deps,App::cpanminus::Dependency->from_prereqs($dist->{cpanmeta}->effective_prereqs,['configure'],$self->{install_types},)}if (-e 'Build.PL' &&!$self->should_use_mm($dist->{dist})&&!@config_deps){push@config_deps,App::cpanminus::Dependency->from_versions({'Module::Build'=>'0.38' },'configure',)}$self->merge_with_cpanfile($dist,\@config_deps);$self->upgrade_toolchain(\@config_deps);my$target=$dist->{meta}{name}? "$dist->{meta}{name}-$dist->{meta}{version}" : $dist->{dir};{$self->install_deps_bailout($target,$dist->{dir},$depth,@config_deps)or return}$self->diag_progress("Configuring $target");my$configure_state=$self->configure_this($dist,$depth);$self->diag_ok($configure_state->{configured_ok}? "OK" : "N/A");if ($dist->{cpanmeta}&& $dist->{source}eq 'cpan'){$dist->{provides}=$dist->{cpanmeta}{provides}|| $self->extract_packages($dist->{cpanmeta},".")}my$root_target=(($self->{installdeps}or $self->{showdeps})and $depth==0);$dist->{want_phases}=$self->{notest}&&!$root_target ? [qw(build runtime)]: [qw(build test runtime)];push @{$dist->{want_phases}},'develop' if$self->{with_develop}&& $depth==0;push @{$dist->{want_phases}},'configure' if$self->{with_configure}&& $depth==0;my@deps=$self->find_prereqs($dist);my$module_name=$self->find_module_name($configure_state)|| $dist->{meta}{name};$module_name =~ s/-/::/g;if ($self->{showdeps}){for my$dep (@config_deps,@deps){print$dep->module,($dep->version ? ("~".$dep->version): ""),"\n"}return 1}my$distname=$dist->{meta}{name}? "$dist->{meta}{name}-$dist->{meta}{version}" : $stuff;my$walkup;if ($self->{scandeps}){$walkup=$self->scandeps_append_child($dist)}$self->install_deps_bailout($distname,$dist->{dir},$depth,@deps)or return;if ($self->{scandeps}){unless ($configure_state->{configured_ok}){my$diag=<{scandeps_tree}};$diag .= "!\n" .join("",map "! * $_->[0]{module}\n",@tree[0..$#tree-1])if@tree}$self->diag("!\n$diag!\n",1)}$walkup->();return 1}if ($self->{installdeps}&& $depth==0){if ($configure_state->{configured_ok}){$self->diag("<== Installed dependencies for $stuff. Finishing.\n");return 1}else {$self->diag("! Configuring $distname failed. See $self->{log} for details.\n",1);return}}my$installed;if ($configure_state->{use_module_build}&& -e 'Build' && -f _){$self->diag_progress("Building " .($self->{notest}? "" : "and testing ").$distname);$self->build([$self->{perl},"./Build" ],$distname,$depth)&& $self->test([$self->{perl},"./Build","test" ],$distname,$depth)&& $self->install([$self->{perl},"./Build","install" ],["--uninst",1 ],$depth)&& $installed++}elsif ($self->{make}&& -e 'Makefile'){$self->diag_progress("Building " .($self->{notest}? "" : "and testing ").$distname);$self->build([$self->{make}],$distname,$depth)&& $self->test([$self->{make},"test" ],$distname,$depth)&& $self->install([$self->{make},"install" ],["UNINST=1" ],$depth)&& $installed++}else {my$why;my$configure_failed=$configure_state->{configured}&&!$configure_state->{configured_ok};if ($configure_failed){$why="Configure failed for $distname."}elsif ($self->{make}){$why="The distribution doesn't have a proper Makefile.PL/Build.PL"}else {$why="Can't configure the distribution. You probably need to have 'make'."}$self->diag_fail("$why See $self->{log} for details.",1);return}if ($installed && $self->{test_only}){$self->diag_ok;$self->diag("Successfully tested $distname\n",1)}elsif ($installed){my$local=$self->{local_versions}{$dist->{module}|| ''};my$version=$dist->{module_version}|| $dist->{meta}{version}|| $dist->{version};my$reinstall=$local && ($local eq $version);my$action=$local &&!$reinstall ? $self->numify_ver($version)< $self->numify_ver($local)? "downgraded" : "upgraded" : undef;my$how=$reinstall ? "reinstalled $distname" : $local ? "installed $distname ($action from $local)" : "installed $distname" ;my$msg="Successfully $how";$self->diag_ok;$self->diag("$msg\n",1);$self->{installed_dists}++;$self->save_meta($stuff,$dist,$module_name,\@config_deps,\@deps);return 1}else {my$what=$self->{test_only}? "Testing" : "Installing";$self->diag_fail("$what $stuff failed. See $self->{log} for details. Retry with --force to force install it.",1);return}}sub perl_requirements {my($self,@requires)=@_;my@perl;for my$requires (grep defined,@requires){if (exists$requires->{perl}){push@perl,App::cpanminus::Dependency->new(perl=>$requires->{perl})}}return@perl}sub should_use_mm {my($self,$dist)=@_;my%should_use_mm=map {$_=>1}qw(version ExtUtils-ParseXS ExtUtils-Install ExtUtils-Manifest);$should_use_mm{$dist}}sub configure_this {my($self,$dist,$depth)=@_;if (-e $self->{cpanfile_path}&& $self->{installdeps}&& $depth==0){require Module::CPANfile;$dist->{cpanfile}=eval {Module::CPANfile->load($self->{cpanfile_path})};$self->diag_fail($@,1)if $@;return {configured=>1,configured_ok=>!!$dist->{cpanfile},use_module_build=>0,}}if ($self->{skip_configure}){my$eumm=-e 'Makefile';my$mb=-e 'Build' && -f _;return {configured=>1,configured_ok=>$eumm || $mb,use_module_build=>$mb,}}my$state={};my$try_eumm=sub {if (-e 'Makefile.PL'){$self->chat("Running Makefile.PL\n");if ($self->configure([$self->{perl},"Makefile.PL" ],$depth)){$state->{configured_ok}=-e 'Makefile'}$state->{configured}++}};my$try_mb=sub {if (-e 'Build.PL'){$self->chat("Running Build.PL\n");if ($self->configure([$self->{perl},"Build.PL" ],$depth)){$state->{configured_ok}=-e 'Build' && -f _}$state->{use_module_build}++;$state->{configured}++}};my@try;if ($dist->{dist}&& $self->should_use_mm($dist->{dist})){@try=($try_eumm,$try_mb)}else {@try=($try_mb,$try_eumm)}for my$try (@try){$try->();last if$state->{configured_ok}}unless ($state->{configured_ok}){while (1){my$ans=lc$self->prompt("Configuring $dist->{dist} failed.\nYou can s)kip, r)etry, e)xamine build log, or l)ook ?","s");last if$ans eq 's';return$self->configure_this($dist,$depth)if$ans eq 'r';$self->show_build_log if$ans eq 'e';$self->look if$ans eq 'l'}}return$state}sub find_module_name {my($self,$state)=@_;return unless$state->{configured_ok};if ($state->{use_module_build}&& -e "_build/build_params"){my$params=do {open my$in,"_build/build_params";$self->safe_eval(join "",<$in>)};return eval {$params->[2]{module_name}}|| undef}elsif (-e "Makefile"){open my$mf,"Makefile";while (<$mf>){if (/^\#\s+NAME\s+=>\s+(.*)/){return$self->safe_eval($1)}}}return}sub list_files {my$self=shift;if (-e 'MANIFEST'){require ExtUtils::Manifest;my$manifest=eval {ExtUtils::Manifest::manifind()}|| {};return sort {lc$a cmp lc$b}keys %$manifest}else {require File::Find;my@files;my$finder=sub {my$name=$File::Find::name;$name =~ s!\.[/\\]!!;push@files,$name};File::Find::find($finder,".");return sort {lc$a cmp lc$b}@files}}sub extract_packages {my($self,$meta,$dir)=@_;my$try=sub {my$file=shift;return 0 if$file =~ m!^(?:x?t|inc|local|perl5|fatlib|_build)/!;return 1 unless$meta->{no_index};return 0 if grep {$file =~ m!^$_/!}@{$meta->{no_index}{directory}|| []};return 0 if grep {$file eq $_}@{$meta->{no_index}{file}|| []};return 1};require Parse::PMFile;my@files=grep {/\.pm(?:\.PL)?$/ && $try->($_)}$self->list_files;my$provides={};for my$file (@files){my$parser=Parse::PMFile->new($meta,{UNSAFE=>1,ALLOW_DEV_VERSION=>1 });my$packages=$parser->parse($file);while (my($package,$meta)=each %$packages){$provides->{$package}||= {file=>$meta->{infile},($meta->{version}eq 'undef')? (): (version=>$meta->{version}),}}}return$provides}sub save_meta {my($self,$module,$dist,$module_name,$config_deps,$build_deps)=@_;return unless$dist->{distvname}&& $dist->{source}eq 'cpan';my$base=($ENV{PERL_MM_OPT}|| '')=~ /INSTALL_BASE=/ ? ($self->install_base($ENV{PERL_MM_OPT})."/lib/perl5"): $Config{sitelibexp};my$provides=$dist->{provides};File::Path::mkpath("blib/meta",0,0777);my$local={name=>$module_name,target=>$module,version=>exists$provides->{$module_name}? ($provides->{$module_name}{version}|| $dist->{version}): $dist->{version},dist=>$dist->{distvname},pathname=>$dist->{pathname},provides=>$provides,};require JSON::PP;open my$fh,">","blib/meta/install.json" or die $!;print$fh JSON::PP::encode_json($local);if (-e "MYMETA.json"){File::Copy::copy("MYMETA.json","blib/meta/MYMETA.json")}my@cmd=(($self->{sudo}? 'sudo' : ()),$^X,'-MExtUtils::Install=install','-e',qq[install({ 'blib/meta' => '$base/$Config{archname}/.meta/$dist->{distvname}' })],);$self->run(\@cmd)}sub _merge_hashref {my($self,@hashrefs)=@_;my%hash;for my$h (@hashrefs){%hash=(%hash,%$h)}return \%hash}sub install_base {my($self,$mm_opt)=@_;$mm_opt =~ /INSTALL_BASE=(\S+)/ and return $1;die "Your PERL_MM_OPT doesn't contain INSTALL_BASE"}sub safe_eval {my($self,$code)=@_;eval$code}sub configure_features {my($self,$dist,@features)=@_;map $_->identifier,grep {$self->effective_feature($dist,$_)}@features}sub effective_feature {my($self,$dist,$feature)=@_;if ($dist->{depth}==0){my$value=$self->{features}{$feature->identifier};return$value if defined$value;return 1 if$self->{features}{__all}}if ($self->{interactive}){require CPAN::Meta::Requirements;$self->diag("[@{[ $feature->description ]}]\n",1);my$req=CPAN::Meta::Requirements->new;for my$phase (@{$dist->{want_phases}}){for my$type (@{$self->{install_types}}){$req->add_requirements($feature->prereqs->requirements_for($phase,$type))}}my$reqs=$req->as_string_hash;my@missing;for my$module (keys %$reqs){if ($self->should_install($module,$req->{$module})){push@missing,$module}}if (@missing){my$howmany=@missing;$self->diag("==> Found missing dependencies: " .join(", ",@missing)."\n",1);local$self->{prompt}=1;return$self->prompt_bool("Install the $howmany optional module(s)?","y")}}return}sub find_prereqs {my($self,$dist)=@_;my@deps=$self->extract_meta_prereqs($dist);if ($dist->{module}=~ /^Bundle::/i){push@deps,$self->bundle_deps($dist)}$self->merge_with_cpanfile($dist,\@deps);return@deps}sub merge_with_cpanfile {my($self,$dist,$deps)=@_;if ($self->{cpanfile_requirements}&&!$dist->{cpanfile}){for my$dep (@$deps){$dep->merge_with($self->{cpanfile_requirements})}}}sub extract_meta_prereqs {my($self,$dist)=@_;if ($dist->{cpanfile}){my@features=$self->configure_features($dist,$dist->{cpanfile}->features);my$prereqs=$dist->{cpanfile}->prereqs_with(@features);$self->{cpanfile_requirements}=$prereqs->merged_requirements($dist->{want_phases},['requires']);return App::cpanminus::Dependency->from_prereqs($prereqs,$dist->{want_phases},$self->{install_types})}require CPAN::Meta;my@deps;my($meta_file)=grep -f,qw(MYMETA.json MYMETA.yml);if ($meta_file){$self->chat("Checking dependencies from $meta_file ...\n");my$mymeta=eval {CPAN::Meta->load_file($meta_file,{lazy_validation=>1 })};if ($mymeta){$dist->{meta}{name}=$mymeta->name;$dist->{meta}{version}=$mymeta->version;return$self->extract_prereqs($mymeta,$dist)}}if (-e '_build/prereqs'){$self->chat("Checking dependencies from _build/prereqs ...\n");my$prereqs=do {open my$in,"_build/prereqs";$self->safe_eval(join "",<$in>)};my$meta=CPAN::Meta->new({name=>$dist->{meta}{name},version=>$dist->{meta}{version},%$prereqs },{lazy_validation=>1 },);@deps=$self->extract_prereqs($meta,$dist)}elsif (-e 'Makefile'){$self->chat("Finding PREREQ from Makefile ...\n");open my$mf,"Makefile";while (<$mf>){if (/^\#\s+PREREQ_PM => \{\s*(.*?)\s*\}/){my@all;my@pairs=split ', ',$1;for (@pairs){my ($pkg,$v)=split '=>',$_;push@all,[$pkg,$v ]}my$list=join ", ",map {"'$_->[0]' => $_->[1]"}@all;my$prereq=$self->safe_eval("no strict; +{ $list }");push@deps,App::cpanminus::Dependency->from_versions($prereq)if$prereq;last}}}return@deps}sub bundle_deps {my($self,$dist)=@_;my$match;if ($dist->{module}){$match=sub {my$meta=Module::Metadata->new_from_file($_[0]);$meta && ($meta->name eq $dist->{module})}}else {$match=sub {1}}my@files;File::Find::find({wanted=>sub {push@files,File::Spec->rel2abs($_)if /\.pm$/i && $match->($_)},no_chdir=>1,},'.');my@deps;for my$file (@files){open my$pod,"<",$file or next;my$in_contents;while (<$pod>){if (/^=head\d\s+CONTENTS/){$in_contents=1}elsif (/^=/){$in_contents=0}elsif ($in_contents){/^(\S+)\s*(\S+)?/ and push@deps,App::cpanminus::Dependency->new($1,$self->maybe_version($2))}}}return@deps}sub maybe_version {my($self,$string)=@_;return$string && $string =~ /^\.?\d/ ? $string : undef}sub extract_prereqs {my($self,$meta,$dist)=@_;my@features=$self->configure_features($dist,$meta->features);my$prereqs=$self->soften_makemaker_prereqs($meta->effective_prereqs(\@features)->clone);return App::cpanminus::Dependency->from_prereqs($prereqs,$dist->{want_phases},$self->{install_types})}sub soften_makemaker_prereqs {my($self,$prereqs)=@_;return$prereqs unless -e "inc/Module/Install.pm";for my$phase (qw(build test runtime)){my$reqs=$prereqs->requirements_for($phase,'requires');if ($reqs->requirements_for_module('ExtUtils::MakeMaker')){$reqs->clear_requirement('ExtUtils::MakeMaker');$reqs->add_minimum('ExtUtils::MakeMaker'=>0)}}$prereqs}sub cleanup_workdirs {my$self=shift;my$expire=time - 24 * 60 * 60 * $self->{auto_cleanup};my@targets;opendir my$dh,"$self->{home}/work";while (my$e=readdir$dh){next if$e !~ /^(\d+)\.\d+$/;my$time=$1;if ($time < $expire){push@targets,"$self->{home}/work/$e"}}if (@targets){if (@targets >= 64){$self->diag("Expiring " .scalar(@targets)." work directories. This might take a while...\n")}else {$self->chat("Expiring " .scalar(@targets)." work directories.\n")}File::Path::rmtree(\@targets,0,0)}}sub scandeps_append_child {my($self,$dist)=@_;my$new_node=[$dist,[]];my$curr_node=$self->{scandeps_current}|| [undef,$self->{scandeps_tree}];push @{$curr_node->[1]},$new_node;$self->{scandeps_current}=$new_node;return sub {$self->{scandeps_current}=$curr_node}}sub dump_scandeps {my$self=shift;if ($self->{format}eq 'tree'){$self->walk_down(sub {my($dist,$depth)=@_;if ($depth==0){print "$dist->{distvname}\n"}else {print " " x ($depth - 1);print "\\_ $dist->{distvname}\n"}},1)}elsif ($self->{format}=~ /^dists?$/){$self->walk_down(sub {my($dist,$depth)=@_;print$self->format_dist($dist),"\n"},0)}elsif ($self->{format}eq 'json'){require JSON::PP;print JSON::PP::encode_json($self->{scandeps_tree})}elsif ($self->{format}eq 'yaml'){require YAML;print YAML::Dump($self->{scandeps_tree})}else {$self->diag("Unknown format: $self->{format}\n")}}sub walk_down {my($self,$cb,$pre)=@_;$self->_do_walk_down($self->{scandeps_tree},$cb,0,$pre)}sub _do_walk_down {my($self,$children,$cb,$depth,$pre)=@_;for my$node (@$children){$cb->($node->[0],$depth)if$pre;$self->_do_walk_down($node->[1],$cb,$depth + 1,$pre);$cb->($node->[0],$depth)unless$pre}}sub DESTROY {my$self=shift;$self->{at_exit}->($self)if$self->{at_exit}}sub shell_quote {my($self,@stuff)=@_;if (WIN32){join ' ',map {/^${quote}.+${quote}$/ ? $_ : ($quote .$_ .$quote)}@stuff}else {String::ShellQuote::shell_quote_best_effort(@stuff)}}sub which {my($self,$name)=@_;if (File::Spec->file_name_is_absolute($name)){if (-x $name &&!-d _){return$name}}my$exe_ext=$Config{_exe};for my$dir (File::Spec->path){my$fullpath=File::Spec->catfile($dir,$name);if ((-x $fullpath || -x ($fullpath .= $exe_ext))&&!-d _){if ($fullpath =~ /\s/){$fullpath=$self->shell_quote($fullpath)}return$fullpath}}return}sub get {my($self,$uri)=@_;if ($uri =~ /^file:/){$self->file_get($uri)}else {$self->{_backends}{get}->(@_)}}sub mirror {my($self,$uri,$local)=@_;if ($uri =~ /^file:/){$self->file_mirror($uri,$local)}else {$self->{_backends}{mirror}->(@_)}}sub untar {$_[0]->{_backends}{untar}->(@_)};sub unzip {$_[0]->{_backends}{unzip}->(@_)};sub uri_to_file {my($self,$uri)=@_;if ($uri =~ s!file:/+!!){$uri="/$uri" unless$uri =~ m![a-zA-Z]:!}return$uri}sub file_get {my($self,$uri)=@_;my$file=$self->uri_to_file($uri);open my$fh,"<$file" or return;join '',<$fh>}sub file_mirror {my($self,$uri,$path)=@_;my$file=$self->uri_to_file($uri);my$source_mtime=(stat$file)[9];return 1 if -e $path && (stat$path)[9]>= $source_mtime;File::Copy::copy($file,$path);utime$source_mtime,$source_mtime,$path}sub has_working_lwp {my($self,$mirrors)=@_;my$https=grep /^https:/,@$mirrors;eval {require LWP::UserAgent;LWP::UserAgent->VERSION(5.802);require LWP::Protocol::https if$https;1}}sub init_tools {my$self=shift;return if$self->{initialized}++;if ($self->{make}=$self->which($Config{make})){$self->chat("You have make $self->{make}\n")}if ($self->{try_lwp}&& $self->has_working_lwp($self->{mirrors})){$self->chat("You have LWP $LWP::VERSION\n");my$ua=sub {LWP::UserAgent->new(parse_head=>0,env_proxy=>1,agent=>$self->agent,timeout=>30,@_,)};$self->{_backends}{get}=sub {my$self=shift;my$res=$ua->()->request(HTTP::Request->new(GET=>$_[0]));return unless$res->is_success;return$res->decoded_content};$self->{_backends}{mirror}=sub {my$self=shift;my$res=$ua->()->mirror(@_);die$res->content if$res->code==501;$res->code}}elsif ($self->{try_wget}and my$wget=$self->which('wget')){$self->chat("You have $wget\n");my@common=('--user-agent',$self->agent,'--retry-connrefused',($self->{verbose}? (): ('-q')),);$self->{_backends}{get}=sub {my($self,$uri)=@_;$self->safeexec(my$fh,$wget,$uri,@common,'-O','-')or die "wget $uri: $!";local $/;<$fh>};$self->{_backends}{mirror}=sub {my($self,$uri,$path)=@_;$self->safeexec(my$fh,$wget,$uri,@common,'-O',$path)or die "wget $uri: $!";local $/;<$fh>}}elsif ($self->{try_curl}and my$curl=$self->which('curl')){$self->chat("You have $curl\n");my@common=('--location','--user-agent',$self->agent,($self->{verbose}? (): '-s'),);$self->{_backends}{get}=sub {my($self,$uri)=@_;$self->safeexec(my$fh,$curl,@common,$uri)or die "curl $uri: $!";local $/;<$fh>};$self->{_backends}{mirror}=sub {my($self,$uri,$path)=@_;$self->safeexec(my$fh,$curl,@common,$uri,'-#','-o',$path)or die "curl $uri: $!";local $/;<$fh>}}else {require HTTP::Tiny;$self->chat("Falling back to HTTP::Tiny $HTTP::Tiny::VERSION\n");my%common=(agent=>$self->agent,);$self->{_backends}{get}=sub {my$self=shift;my$res=HTTP::Tiny->new(%common)->get($_[0]);return unless$res->{success};return$res->{content}};$self->{_backends}{mirror}=sub {my$self=shift;my$res=HTTP::Tiny->new(%common)->mirror(@_);return$res->{status}}}my$tar=$self->which('tar');my$tar_ver;my$maybe_bad_tar=sub {WIN32 || BAD_TAR || (($tar_ver=`$tar --version 2>/dev/null`)=~ /GNU.*1\.13/i)};if ($tar &&!$maybe_bad_tar->()){chomp$tar_ver;$self->chat("You have $tar: $tar_ver\n");$self->{_backends}{untar}=sub {my($self,$tarfile)=@_;my$xf=($self->{verbose}? 'v' : '')."xf";my$ar=$tarfile =~ /bz2$/ ? 'j' : 'z';my($root,@others)=`$tar ${ar}tf $tarfile` or return undef;FILE: {chomp$root;$root =~ s!^\./!!;$root =~ s{^(.+?)/.*$}{$1};if (!length($root)){$root=shift(@others);redo FILE if$root}}system "$tar $ar$xf $tarfile";return$root if -d $root;$self->diag_fail("Bad archive: $tarfile");return undef}}elsif ($tar and my$gzip=$self->which('gzip')and my$bzip2=$self->which('bzip2')){$self->chat("You have $tar, $gzip and $bzip2\n");$self->{_backends}{untar}=sub {my($self,$tarfile)=@_;my$x="x" .($self->{verbose}? 'v' : '')."f -";my$ar=$tarfile =~ /bz2$/ ? $bzip2 : $gzip;my($root,@others)=`$ar -dc $tarfile | $tar tf -` or return undef;FILE: {chomp$root;$root =~ s!^\./!!;$root =~ s{^(.+?)/.*$}{$1};if (!length($root)){$root=shift(@others);redo FILE if$root}}system "$ar -dc $tarfile | $tar $x";return$root if -d $root;$self->diag_fail("Bad archive: $tarfile");return undef}}elsif (eval {require Archive::Tar}){$self->chat("Falling back to Archive::Tar $Archive::Tar::VERSION\n");$self->{_backends}{untar}=sub {my$self=shift;my$t=Archive::Tar->new($_[0]);my($root,@others)=$t->list_files;FILE: {$root =~ s!^\./!!;$root =~ s{^(.+?)/.*$}{$1};if (!length($root)){$root=shift(@others);redo FILE if$root}}$t->extract;return -d $root ? $root : undef}}else {$self->{_backends}{untar}=sub {die "Failed to extract $_[1] - You need to have tar or Archive::Tar installed.\n"}}if (my$unzip=$self->which('unzip')){$self->chat("You have $unzip\n");$self->{_backends}{unzip}=sub {my($self,$zipfile)=@_;my$opt=$self->{verbose}? '' : '-q';my(undef,$root,@others)=`$unzip -t $zipfile` or return undef;FILE: {chomp$root;if ($root !~ s{^\s+testing:\s+([^/]+)/.*?\s+OK$}{$1}){$root=shift(@others);redo FILE if$root}}system "$unzip $opt $zipfile";return$root if -d $root;$self->diag_fail("Bad archive: [$root] $zipfile");return undef}}else {$self->{_backends}{unzip}=sub {eval {require Archive::Zip}or die "Failed to extract $_[1] - You need to have unzip or Archive::Zip installed.\n";my($self,$file)=@_;my$zip=Archive::Zip->new();my$status;$status=$zip->read($file);$self->diag_fail("Read of file[$file] failed")if$status!=Archive::Zip::AZ_OK();my@members=$zip->members();for my$member (@members){my$af=$member->fileName();next if ($af =~ m!^(/|\.\./)!);$status=$member->extractToFileNamed($af);$self->diag_fail("Extracting of file[$af] from zipfile[$file failed")if$status!=Archive::Zip::AZ_OK()}my ($root)=$zip->membersMatching(qr<^[^/]+/$>);$root &&= $root->fileName;return -d $root ? $root : undef}}}sub safeexec {my$self=shift;my$rdr=$_[0]||= Symbol::gensym();if (WIN32){my$cmd=$self->shell_quote(@_[1..$#_]);return open($rdr,"$cmd |")}if (my$pid=open($rdr,'-|')){return$pid}elsif (defined$pid){exec(@_[1 .. $#_ ]);exit 1}else {return}}sub mask_uri_passwords {my($self,@strings)=@_;s{ (https?://) ([^:/]+) : [^@/]+ @ }{$1$2:********@}gx for@strings;return@strings}1; - It appears your cpanm executable was installed via `perlbrew install-cpanm`. - cpanm --self-upgrade won't upgrade the version of cpanm you're running. - - Run the following command to get it upgraded. - - perlbrew install-cpanm - - DIE - You are running cpanm from the path where your current perl won't install executables to. - Because of that, cpanm --self-upgrade won't upgrade the version of cpanm you're running. - - cpanm path : $0 - Install path : $Config{installsitebin} - - It means you either installed cpanm globally with system perl, or use distro packages such - as rpm or apt-get, and you have to use them again to upgrade cpanm. - DIE - Usage: cpanm [options] Module [...] - - Try `cpanm --help` or `man cpanm` for more options. - USAGE - Usage: cpanm [options] Module [...] - - Options: - -v,--verbose Turns on chatty output - -q,--quiet Turns off the most output - --interactive Turns on interactive configure (required for Task:: modules) - -f,--force force install - -n,--notest Do not run unit tests - --test-only Run tests only, do not install - -S,--sudo sudo to run install commands - --installdeps Only install dependencies - --showdeps Only display direct dependencies - --reinstall Reinstall the distribution even if you already have the latest version installed - --mirror Specify the base URL for the mirror (e.g. http://cpan.cpantesters.org/) - --mirror-only Use the mirror's index file instead of the CPAN Meta DB - -M,--from Use only this mirror base URL and its index file - --prompt Prompt when configure/build/test fails - -l,--local-lib Specify the install base to install modules - -L,--local-lib-contained Specify the install base to install all non-core modules - --self-contained Install all non-core modules, even if they're already installed. - --auto-cleanup Number of days that cpanm's work directories expire in. Defaults to 7 - - Commands: - --self-upgrade upgrades itself - --info Displays distribution info on CPAN - --look Opens the distribution with your SHELL - -U,--uninstall Uninstalls the modules (EXPERIMENTAL) - -V,--version Displays software version - - Examples: - - cpanm Test::More # install Test::More - cpanm MIYAGAWA/Plack-0.99_05.tar.gz # full distribution path - cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz # install from URL - cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz # install from a local file - cpanm --interactive Task::Kensho # Configure interactively - cpanm . # install from local directory - cpanm --installdeps . # install all the deps for the current directory - cpanm -L extlib Plack # install Plack and all non-core deps into extlib - cpanm --mirror http://cpan.cpantesters.org/ DBI # use the fast-syncing mirror - cpanm -M https://cpan.metacpan.org App::perlbrew # use only this secure mirror and its index - - You can also specify the default options in PERL_CPANM_OPT environment variable in the shell rc: - - export PERL_CPANM_OPT="--prompt --reinstall -l ~/perl --mirror http://cpan.cpantesters.org" - - Type `man cpanm` or `perldoc cpanm` for the more detailed explanation of the options. - - HELP - ! - ! Can't write to $Config{installsitelib} and $Config{installsitebin}: Installing modules to $ENV{HOME}/perl5 - ! To turn off this warning, you have to do one of the following: - ! - run me as a root or with --sudo option (to install to $Config{installsitelib} and $Config{installsitebin}) - ! - Configure local::lib in your existing shell to set PERL_MM_OPT etc. - ! - Install local::lib by running the following commands - ! - ! cpanm --local-lib=~/perl5 local::lib && eval \$(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) - ! - DIAG - WARNING: Your lib directory name ($base) contains a space in it. It's known to cause issues with perl builder tools such as local::lib and MakeMaker. You're recommended to rename your directory. - WARN - $module is not found in the following directories and can't be uninstalled. - - @{[ join(" \n", map " $_", @inc) ]} - - DIAG - package ModuleBuildSkipMan; - CHECK { - if (%Module::Build::) { - no warnings 'redefine'; - *Module::Build::Base::ACTION_manpages = sub {}; - *Module::Build::Base::ACTION_docs = sub {}; - } - } - 1; - EOF - ! Configuring $distname failed. See $self->{log} for details. - ! You might have to install the following modules first to get --scandeps working correctly. - DIAG -APP_CPANMINUS_SCRIPT - -$fatpacked{"CPAN/DistnameInfo.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_DISTNAMEINFO'; - package CPAN::DistnameInfo;$VERSION="0.12";use strict;sub distname_info {my$file=shift or return;my ($dist,$version)=$file =~ /^ - ((?:[-+.]*(?:[A-Za-z0-9]+|(?<=\D)_|_(?=\D))* - (?: - [A-Za-z](?=[^A-Za-z]|$) - | - \d(?=-) - )(? 6 and $1 & 1)or ($2 and $2 >= 50))or $3}elsif ($version =~ /\d\D\d+_\d/ or $version =~ /-TRIAL/){$dev=1}}else {$version=undef}($dist,$version,$dev)}sub new {my$class=shift;my$distfile=shift;$distfile =~ s,//+,/,g;my%info=(pathname=>$distfile);($info{filename}=$distfile)=~ s,^(((.*?/)?authors/)?id/)?([A-Z])/(\4[A-Z])/(\5[-A-Z0-9]*)/,, and $info{cpanid}=$6;if ($distfile =~ m,([^/]+)\.(tar\.(?:g?z|bz2)|zip|tgz)$,i){$info{distvname}=$1;$info{extension}=$2}@info{qw(dist version beta)}=distname_info($info{distvname});$info{maturity}=delete$info{beta}? 'developer' : 'released';return bless \%info,$class}sub dist {shift->{dist}}sub version {shift->{version}}sub maturity {shift->{maturity}}sub filename {shift->{filename}}sub cpanid {shift->{cpanid}}sub distvname {shift->{distvname}}sub extension {shift->{extension}}sub pathname {shift->{pathname}}sub properties {%{$_[0]}}1; -CPAN_DISTNAMEINFO - -$fatpacked{"CPAN/Meta.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META'; - use 5.006;use strict;use warnings;package CPAN::Meta;our$VERSION='2.150005';use Carp qw(carp croak);use CPAN::Meta::Feature;use CPAN::Meta::Prereqs;use CPAN::Meta::Converter;use CPAN::Meta::Validator;use Parse::CPAN::Meta 1.4414 ();BEGIN {*_dclone=\&CPAN::Meta::Converter::_dclone}BEGIN {my@STRING_READERS=qw(abstract description dynamic_config generated_by name release_status version);no strict 'refs';for my$attr (@STRING_READERS){*$attr=sub {$_[0]{$attr }}}}BEGIN {my@LIST_READERS=qw(author keywords license);no strict 'refs';for my$attr (@LIST_READERS){*$attr=sub {my$value=$_[0]{$attr };croak "$attr must be called in list context" unless wantarray;return @{_dclone($value)}if ref$value;return$value}}}sub authors {$_[0]->author}sub licenses {$_[0]->license}BEGIN {my@MAP_READERS=qw(meta-spec resources provides no_index prereqs optional_features);no strict 'refs';for my$attr (@MAP_READERS){(my$subname=$attr)=~ s/-/_/;*$subname=sub {my$value=$_[0]{$attr };return _dclone($value)if$value;return {}}}}sub custom_keys {return grep {/^x_/i}keys %{$_[0]}}sub custom {my ($self,$attr)=@_;my$value=$self->{$attr};return _dclone($value)if ref$value;return$value}sub _new {my ($class,$struct,$options)=@_;my$self;if ($options->{lazy_validation}){my$cmc=CPAN::Meta::Converter->new($struct);$self=$cmc->convert(version=>2);return bless$self,$class}else {my$cmv=CPAN::Meta::Validator->new($struct);unless ($cmv->is_valid){die "Invalid metadata structure. Errors: " .join(", ",$cmv->errors)."\n"}}my$version=$struct->{'meta-spec'}{version}|| '1.0';if ($version==2){$self=$struct}else {my$cmc=CPAN::Meta::Converter->new($struct);$self=$cmc->convert(version=>2)}return bless$self,$class}sub new {my ($class,$struct,$options)=@_;my$self=eval {$class->_new($struct,$options)};croak($@)if $@;return$self}sub create {my ($class,$struct,$options)=@_;my$version=__PACKAGE__->VERSION || 2;$struct->{generated_by}||= __PACKAGE__ ." version $version" ;$struct->{'meta-spec'}{version}||= int($version);my$self=eval {$class->_new($struct,$options)};croak ($@)if $@;return$self}sub load_file {my ($class,$file,$options)=@_;$options->{lazy_validation}=1 unless exists$options->{lazy_validation};croak "load_file() requires a valid, readable filename" unless -r $file;my$self;eval {my$struct=Parse::CPAN::Meta->load_file($file);$self=$class->_new($struct,$options)};croak($@)if $@;return$self}sub load_yaml_string {my ($class,$yaml,$options)=@_;$options->{lazy_validation}=1 unless exists$options->{lazy_validation};my$self;eval {my ($struct)=Parse::CPAN::Meta->load_yaml_string($yaml);$self=$class->_new($struct,$options)};croak($@)if $@;return$self}sub load_json_string {my ($class,$json,$options)=@_;$options->{lazy_validation}=1 unless exists$options->{lazy_validation};my$self;eval {my$struct=Parse::CPAN::Meta->load_json_string($json);$self=$class->_new($struct,$options)};croak($@)if $@;return$self}sub load_string {my ($class,$string,$options)=@_;$options->{lazy_validation}=1 unless exists$options->{lazy_validation};my$self;eval {my$struct=Parse::CPAN::Meta->load_string($string);$self=$class->_new($struct,$options)};croak($@)if $@;return$self}sub save {my ($self,$file,$options)=@_;my$version=$options->{version}|| '2';my$layer=$] ge '5.008001' ? ':utf8' : '';if ($version ge '2'){carp "'$file' should end in '.json'" unless$file =~ m{\.json$}}else {carp "'$file' should end in '.yml'" unless$file =~ m{\.yml$}}my$data=$self->as_string($options);open my$fh,">$layer",$file or die "Error opening '$file' for writing: $!\n";print {$fh}$data;close$fh or die "Error closing '$file': $!\n";return 1}sub meta_spec_version {my ($self)=@_;return$self->meta_spec->{version}}sub effective_prereqs {my ($self,$features)=@_;$features ||= [];my$prereq=CPAN::Meta::Prereqs->new($self->prereqs);return$prereq unless @$features;my@other=map {;$self->feature($_)->prereqs}@$features;return$prereq->with_merged_prereqs(\@other)}sub should_index_file {my ($self,$filename)=@_;for my$no_index_file (@{$self->no_index->{file}|| []}){return if$filename eq $no_index_file}for my$no_index_dir (@{$self->no_index->{directory}}){$no_index_dir =~ s{$}{/} unless$no_index_dir =~ m{/\z};return if index($filename,$no_index_dir)==0}return 1}sub should_index_package {my ($self,$package)=@_;for my$no_index_pkg (@{$self->no_index->{package}|| []}){return if$package eq $no_index_pkg}for my$no_index_ns (@{$self->no_index->{namespace}}){return if index($package,"${no_index_ns}::")==0}return 1}sub features {my ($self)=@_;my$opt_f=$self->optional_features;my@features=map {;CPAN::Meta::Feature->new($_=>$opt_f->{$_ })}keys %$opt_f;return@features}sub feature {my ($self,$ident)=@_;croak "no feature named $ident" unless my$f=$self->optional_features->{$ident };return CPAN::Meta::Feature->new($ident,$f)}sub as_struct {my ($self,$options)=@_;my$struct=_dclone($self);if ($options->{version}){my$cmc=CPAN::Meta::Converter->new($struct);$struct=$cmc->convert(version=>$options->{version})}return$struct}sub as_string {my ($self,$options)=@_;my$version=$options->{version}|| '2';my$struct;if ($self->meta_spec_version ne $version){my$cmc=CPAN::Meta::Converter->new($self->as_struct);$struct=$cmc->convert(version=>$version)}else {$struct=$self->as_struct}my ($data,$backend);if ($version ge '2'){$backend=Parse::CPAN::Meta->json_backend();local$struct->{x_serialization_backend}=sprintf '%s version %s',$backend,$backend->VERSION;$data=$backend->new->pretty->canonical->encode($struct)}else {$backend=Parse::CPAN::Meta->yaml_backend();local$struct->{x_serialization_backend}=sprintf '%s version %s',$backend,$backend->VERSION;$data=eval {no strict 'refs';&{"$backend\::Dump"}($struct)};if ($@){croak$backend->can('errstr')? $backend->errstr : $@}}return$data}sub TO_JSON {return {%{$_[0]}}}1; -CPAN_META - -$fatpacked{"CPAN/Meta/Check.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_CHECK'; - package CPAN::Meta::Check;$CPAN::Meta::Check::VERSION='0.012';use strict;use warnings;use base 'Exporter';our@EXPORT=qw//;our@EXPORT_OK=qw/check_requirements requirements_for verify_dependencies/;our%EXPORT_TAGS=(all=>[@EXPORT,@EXPORT_OK ]);use CPAN::Meta::Prereqs '2.132830';use CPAN::Meta::Requirements 2.121;use Module::Metadata 1.000023;sub _check_dep {my ($reqs,$module,$dirs)=@_;$module eq 'perl' and return ($reqs->accepts_module($module,$])? (): sprintf "Your Perl (%s) is not in the range '%s'",$],$reqs->requirements_for_module($module));my$metadata=Module::Metadata->new_from_module($module,inc=>$dirs);return "Module '$module' is not installed" if not defined$metadata;my$version=eval {$metadata->version};return "Missing version info for module '$module'" if$reqs->requirements_for_module($module)and not $version;return sprintf 'Installed version (%s) of %s is not in range \'%s\'',$version,$module,$reqs->requirements_for_module($module)if not $reqs->accepts_module($module,$version || 0);return}sub _check_conflict {my ($reqs,$module,$dirs)=@_;my$metadata=Module::Metadata->new_from_module($module,inc=>$dirs);return if not defined$metadata;my$version=eval {$metadata->version};return "Missing version info for module '$module'" if not $version;return sprintf 'Installed version (%s) of %s is in range \'%s\'',$version,$module,$reqs->requirements_for_module($module)if$reqs->accepts_module($module,$version);return}sub requirements_for {my ($meta,$phases,$type)=@_;my$prereqs=ref($meta)eq 'CPAN::Meta' ? $meta->effective_prereqs : $meta;return$prereqs->merged_requirements(ref($phases)? $phases : [$phases ],[$type ])}sub check_requirements {my ($reqs,$type,$dirs)=@_;return +{map {$_=>$type ne 'conflicts' ? scalar _check_dep($reqs,$_,$dirs): scalar _check_conflict($reqs,$_,$dirs)}$reqs->required_modules }}sub verify_dependencies {my ($meta,$phases,$type,$dirs)=@_;my$reqs=requirements_for($meta,$phases,$type);my$issues=check_requirements($reqs,$type,$dirs);return grep {defined}values %{$issues}}1; -CPAN_META_CHECK - -$fatpacked{"CPAN/Meta/Converter.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_CONVERTER'; - use 5.006;use strict;use warnings;package CPAN::Meta::Converter;our$VERSION='2.150005';use CPAN::Meta::Validator;use CPAN::Meta::Requirements;use Parse::CPAN::Meta 1.4400 ();BEGIN {eval "use version ()";if (my$err=$@){eval "use ExtUtils::MakeMaker::version" or die$err}}*_is_qv=version->can('is_qv')? sub {$_[0]->is_qv}: sub {exists $_[0]->{qv}};sub _dclone {my$ref=shift;no warnings 'once';no warnings 'redefine';local*UNIVERSAL::TO_JSON=sub {"$_[0]"};my$json=Parse::CPAN::Meta->json_backend()->new ->utf8 ->allow_blessed ->convert_blessed;$json->decode($json->encode($ref))}my%known_specs=('2'=>'http://search.cpan.org/perldoc?CPAN::Meta::Spec','1.4'=>'http://module-build.sourceforge.net/META-spec-v1.4.html','1.3'=>'http://module-build.sourceforge.net/META-spec-v1.3.html','1.2'=>'http://module-build.sourceforge.net/META-spec-v1.2.html','1.1'=>'http://module-build.sourceforge.net/META-spec-v1.1.html','1.0'=>'http://module-build.sourceforge.net/META-spec-v1.0.html');my@spec_list=sort {$a <=> $b}keys%known_specs;my ($LOWEST,$HIGHEST)=@spec_list[0,-1];sub _keep {$_[0]}sub _keep_or_one {defined($_[0])? $_[0]: 1}sub _keep_or_zero {defined($_[0])? $_[0]: 0}sub _keep_or_unknown {defined($_[0])&& length($_[0])? $_[0]: "unknown"}sub _generated_by {my$gen=shift;my$sig=__PACKAGE__ ." version " .(__PACKAGE__->VERSION || "");return$sig unless defined$gen and length$gen;return$gen if$gen =~ /\Q$sig/;return "$gen, $sig"}sub _listify {!defined $_[0]? undef : ref $_[0]eq 'ARRAY' ? $_[0]: [$_[0]]}sub _prefix_custom {my$key=shift;$key =~ s/^(?!x_) # Unless it already starts with x_ - (?:x-?)? # Remove leading x- or x (if present) - /x_/ix;return$key}sub _ucfirst_custom {my$key=shift;$key=ucfirst$key unless$key =~ /[A-Z]/;return$key}sub _no_prefix_ucfirst_custom {my$key=shift;$key =~ s/^x_//;return _ucfirst_custom($key)}sub _change_meta_spec {my ($element,undef,undef,$version)=@_;return {version=>$version,url=>$known_specs{$version},}}my@open_source=('perl','gpl','apache','artistic','artistic_2','lgpl','bsd','gpl','mit','mozilla','open_source',);my%is_open_source=map {;$_=>1}@open_source;my@valid_licenses_1=(@open_source,'unrestricted','restrictive','unknown',);my%license_map_1=((map {$_=>$_}@valid_licenses_1),artistic2=>'artistic_2',);sub _license_1 {my ($element)=@_;return 'unknown' unless defined$element;if ($license_map_1{lc$element}){return$license_map_1{lc$element}}else {return 'unknown'}}my@valid_licenses_2=qw(agpl_3 apache_1_1 apache_2_0 artistic_1 artistic_2 bsd freebsd gfdl_1_2 gfdl_1_3 gpl_1 gpl_2 gpl_3 lgpl_2_1 lgpl_3_0 mit mozilla_1_0 mozilla_1_1 openssl perl_5 qpl_1_0 ssleay sun zlib open_source restricted unrestricted unknown);my%license_map_2=((map {$_=>$_}@valid_licenses_2),apache=>'apache_2_0',artistic=>'artistic_1',artistic2=>'artistic_2',gpl=>'open_source',lgpl=>'open_source',mozilla=>'open_source',perl=>'perl_5',restrictive=>'restricted',);sub _license_2 {my ($element)=@_;return ['unknown' ]unless defined$element;$element=[$element ]unless ref$element eq 'ARRAY';my@new_list;for my$lic (@$element){next unless defined$lic;if (my$new=$license_map_2{lc$lic}){push@new_list,$new}}return@new_list ? \@new_list : ['unknown' ]}my%license_downgrade_map=qw(agpl_3 open_source apache_1_1 apache apache_2_0 apache artistic_1 artistic artistic_2 artistic_2 bsd bsd freebsd open_source gfdl_1_2 open_source gfdl_1_3 open_source gpl_1 gpl gpl_2 gpl gpl_3 gpl lgpl_2_1 lgpl lgpl_3_0 lgpl mit mit mozilla_1_0 mozilla mozilla_1_1 mozilla openssl open_source perl_5 perl qpl_1_0 open_source ssleay open_source sun open_source zlib open_source open_source open_source restricted restrictive unrestricted unrestricted unknown unknown);sub _downgrade_license {my ($element)=@_;if (!defined$element){return "unknown"}elsif(ref$element eq 'ARRAY'){if (@$element > 1){if (grep {!$is_open_source{$license_downgrade_map{lc $_}|| 'unknown' }}@$element){return 'unknown'}else {return 'open_source'}}elsif (@$element==1){return$license_downgrade_map{lc$element->[0]}|| "unknown"}}elsif (!ref$element){return$license_downgrade_map{lc$element}|| "unknown"}return "unknown"}my$no_index_spec_1_2={'file'=>\&_listify,'dir'=>\&_listify,'package'=>\&_listify,'namespace'=>\&_listify,};my$no_index_spec_1_3={'file'=>\&_listify,'directory'=>\&_listify,'package'=>\&_listify,'namespace'=>\&_listify,};my$no_index_spec_2={'file'=>\&_listify,'directory'=>\&_listify,'package'=>\&_listify,'namespace'=>\&_listify,':custom'=>\&_prefix_custom,};sub _no_index_1_2 {my (undef,undef,$meta)=@_;my$no_index=$meta->{no_index}|| $meta->{private};return unless$no_index;if (!ref$no_index){my$item=$no_index;$no_index={dir=>[$item ],file=>[$item ]}}elsif (ref$no_index eq 'ARRAY'){my$list=$no_index;$no_index={dir=>[@$list ],file=>[@$list ]}}if (exists$no_index->{files}){$no_index->{file}=delete$no_index->{files}}if (exists$no_index->{modules}){$no_index->{module}=delete$no_index->{modules}}return _convert($no_index,$no_index_spec_1_2)}sub _no_index_directory {my ($element,$key,$meta,$version)=@_;return unless$element;if (!ref$element){my$item=$element;$element={directory=>[$item ],file=>[$item ]}}elsif (ref$element eq 'ARRAY'){my$list=$element;$element={directory=>[@$list ],file=>[@$list ]}}if (exists$element->{dir}){$element->{directory}=delete$element->{dir}}if (exists$element->{files}){$element->{file}=delete$element->{files}}if (exists$element->{modules}){$element->{module}=delete$element->{modules}}my$spec=$version==2 ? $no_index_spec_2 : $no_index_spec_1_3;return _convert($element,$spec)}sub _is_module_name {my$mod=shift;return unless defined$mod && length$mod;return$mod =~ m{^[A-Za-z][A-Za-z0-9_]*(?:::[A-Za-z0-9_]+)*$}}sub _clean_version {my ($element)=@_;return 0 if!defined$element;$element =~ s{^\s*}{};$element =~ s{\s*$}{};$element =~ s{^\.}{0.};return 0 if!length$element;return 0 if ($element eq 'undef' || $element eq '');my$v=eval {version->new($element)};if (defined$v){return _is_qv($v)? $v->normal : $element}else {return 0}}sub _bad_version_hook {my ($v)=@_;$v =~ s{^\s*}{};$v =~ s{\s*$}{};$v =~ s{[a-z]+$}{};my$vobj=eval {version->new($v)};return defined($vobj)? $vobj : version->new(0)}sub _version_map {my ($element)=@_;return unless defined$element;if (ref$element eq 'HASH'){my$new_map=CPAN::Meta::Requirements->new({bad_version_hook=>\&_bad_version_hook });while (my ($k,$v)=each %$element){next unless _is_module_name($k);if (!defined($v)||!length($v)|| $v eq 'undef' || $v eq ''){$v=0}if (_is_module_name($v)&&!version::is_lax($v)){$new_map->add_minimum($k=>0);$new_map->add_minimum($v=>0)}$new_map->add_string_requirement($k=>$v)}return$new_map->as_string_hash}elsif (ref$element eq 'ARRAY'){my$hashref={map {$_=>0}@$element };return _version_map($hashref)}elsif (ref$element eq '' && length$element){return {$element=>0 }}return}sub _prereqs_from_1 {my (undef,undef,$meta)=@_;my$prereqs={};for my$phase (qw/build configure/){my$key="${phase}_requires";$prereqs->{$phase}{requires}=_version_map($meta->{$key})if$meta->{$key}}for my$rel (qw/requires recommends conflicts/){$prereqs->{runtime}{$rel}=_version_map($meta->{$rel})if$meta->{$rel}}return$prereqs}my$prereqs_spec={configure=>\&_prereqs_rel,build=>\&_prereqs_rel,test=>\&_prereqs_rel,runtime=>\&_prereqs_rel,develop=>\&_prereqs_rel,':custom'=>\&_prefix_custom,};my$relation_spec={requires=>\&_version_map,recommends=>\&_version_map,suggests=>\&_version_map,conflicts=>\&_version_map,':custom'=>\&_prefix_custom,};sub _cleanup_prereqs {my ($prereqs,$key,$meta,$to_version)=@_;return unless$prereqs && ref$prereqs eq 'HASH';return _convert($prereqs,$prereqs_spec,$to_version)}sub _prereqs_rel {my ($relation,$key,$meta,$to_version)=@_;return unless$relation && ref$relation eq 'HASH';return _convert($relation,$relation_spec,$to_version)}BEGIN {my@old_prereqs=qw(requires configure_requires recommends conflicts);for (@old_prereqs){my$sub="_get_$_";my ($phase,$type)=split qr/_/,$_;if (!defined$type){$type=$phase;$phase='runtime'}no strict 'refs';*{$sub}=sub {_extract_prereqs($_[2]->{prereqs},$phase,$type)}}}sub _get_build_requires {my ($data,$key,$meta)=@_;my$test_h=_extract_prereqs($_[2]->{prereqs},qw(test requires))|| {};my$build_h=_extract_prereqs($_[2]->{prereqs},qw(build requires))|| {};my$test_req=CPAN::Meta::Requirements->from_string_hash($test_h);my$build_req=CPAN::Meta::Requirements->from_string_hash($build_h);$test_req->add_requirements($build_req)->as_string_hash}sub _extract_prereqs {my ($prereqs,$phase,$type)=@_;return unless ref$prereqs eq 'HASH';return scalar _version_map($prereqs->{$phase}{$type})}sub _downgrade_optional_features {my (undef,undef,$meta)=@_;return unless exists$meta->{optional_features};my$origin=$meta->{optional_features};my$features={};for my$name (keys %$origin){$features->{$name}={description=>$origin->{$name}{description},requires=>_extract_prereqs($origin->{$name}{prereqs},'runtime','requires'),configure_requires=>_extract_prereqs($origin->{$name}{prereqs},'runtime','configure_requires'),build_requires=>_extract_prereqs($origin->{$name}{prereqs},'runtime','build_requires'),recommends=>_extract_prereqs($origin->{$name}{prereqs},'runtime','recommends'),conflicts=>_extract_prereqs($origin->{$name}{prereqs},'runtime','conflicts'),};for my$k (keys %{$features->{$name}}){delete$features->{$name}{$k}unless defined$features->{$name}{$k}}}return$features}sub _upgrade_optional_features {my (undef,undef,$meta)=@_;return unless exists$meta->{optional_features};my$origin=$meta->{optional_features};my$features={};for my$name (keys %$origin){$features->{$name}={description=>$origin->{$name}{description},prereqs=>_prereqs_from_1(undef,undef,$origin->{$name}),};delete$features->{$name}{prereqs}{configure}}return$features}my$optional_features_2_spec={description=>\&_keep,prereqs=>\&_cleanup_prereqs,':custom'=>\&_prefix_custom,};sub _feature_2 {my ($element,$key,$meta,$to_version)=@_;return unless$element && ref$element eq 'HASH';_convert($element,$optional_features_2_spec,$to_version)}sub _cleanup_optional_features_2 {my ($element,$key,$meta,$to_version)=@_;return unless$element && ref$element eq 'HASH';my$new_data={};for my$k (keys %$element){$new_data->{$k}=_feature_2($element->{$k},$k,$meta,$to_version)}return unless keys %$new_data;return$new_data}sub _optional_features_1_4 {my ($element)=@_;return unless$element;$element=_optional_features_as_map($element);for my$name (keys %$element){for my$drop (qw/requires_packages requires_os excluded_os/){delete$element->{$name}{$drop}}}return$element}sub _optional_features_as_map {my ($element)=@_;return unless$element;if (ref$element eq 'ARRAY'){my%map;for my$feature (@$element){my (@parts)=%$feature;$map{$parts[0]}=$parts[1]}$element=\%map}return$element}sub _is_urlish {defined $_[0]&& $_[0]=~ m{\A[-+.a-z0-9]+:.+}i}sub _url_or_drop {my ($element)=@_;return$element if _is_urlish($element);return}sub _url_list {my ($element)=@_;return unless$element;$element=_listify($element);$element=[grep {_is_urlish($_)}@$element ];return unless @$element;return$element}sub _author_list {my ($element)=@_;return ['unknown' ]unless$element;$element=_listify($element);$element=[map {defined $_ && length $_ ? $_ : 'unknown'}@$element ];return ['unknown' ]unless @$element;return$element}my$resource2_upgrade={license=>sub {return _is_urlish($_[0])? _listify($_[0]): undef},homepage=>\&_url_or_drop,bugtracker=>sub {my ($item)=@_;return unless$item;if ($item =~ m{^mailto:(.*)$}){return {mailto=>$1 }}elsif(_is_urlish($item)){return {web=>$item }}else {return}},repository=>sub {return _is_urlish($_[0])? {url=>$_[0]}: undef},':custom'=>\&_prefix_custom,};sub _upgrade_resources_2 {my (undef,undef,$meta,$version)=@_;return unless exists$meta->{resources};return _convert($meta->{resources},$resource2_upgrade)}my$bugtracker2_spec={web=>\&_url_or_drop,mailto=>\&_keep,':custom'=>\&_prefix_custom,};sub _repo_type {my ($element,$key,$meta,$to_version)=@_;return$element if defined$element;return unless exists$meta->{url};my$repo_url=$meta->{url};for my$type (qw/git svn/){return$type if$repo_url =~ m{\A$type}}return}my$repository2_spec={web=>\&_url_or_drop,url=>\&_url_or_drop,type=>\&_repo_type,':custom'=>\&_prefix_custom,};my$resources2_cleanup={license=>\&_url_list,homepage=>\&_url_or_drop,bugtracker=>sub {ref $_[0]? _convert($_[0],$bugtracker2_spec): undef},repository=>sub {my$data=shift;ref$data ? _convert($data,$repository2_spec): undef},':custom'=>\&_prefix_custom,};sub _cleanup_resources_2 {my ($resources,$key,$meta,$to_version)=@_;return unless$resources && ref$resources eq 'HASH';return _convert($resources,$resources2_cleanup,$to_version)}my$resource1_spec={license=>\&_url_or_drop,homepage=>\&_url_or_drop,bugtracker=>\&_url_or_drop,repository=>\&_url_or_drop,':custom'=>\&_keep,};sub _resources_1_3 {my (undef,undef,$meta,$version)=@_;return unless exists$meta->{resources};return _convert($meta->{resources},$resource1_spec)}*_resources_1_4=*_resources_1_3;sub _resources_1_2 {my (undef,undef,$meta)=@_;my$resources=$meta->{resources}|| {};if ($meta->{license_url}&&!$resources->{license}){$resources->{license}=$meta->{license_url}if _is_urlish($meta->{license_url})}return unless keys %$resources;return _convert($resources,$resource1_spec)}my$resource_downgrade_spec={license=>sub {return ref $_[0]? $_[0]->[0]: $_[0]},homepage=>\&_url_or_drop,bugtracker=>sub {return $_[0]->{web}},repository=>sub {return $_[0]->{url}|| $_[0]->{web}},':custom'=>\&_no_prefix_ucfirst_custom,};sub _downgrade_resources {my (undef,undef,$meta,$version)=@_;return unless exists$meta->{resources};return _convert($meta->{resources},$resource_downgrade_spec)}sub _release_status {my ($element,undef,$meta)=@_;return$element if$element && $element =~ m{\A(?:stable|testing|unstable)\z};return _release_status_from_version(undef,undef,$meta)}sub _release_status_from_version {my (undef,undef,$meta)=@_;my$version=$meta->{version}|| '';return ($version =~ /_/)? 'testing' : 'stable'}my$provides_spec={file=>\&_keep,version=>\&_keep,};my$provides_spec_2={file=>\&_keep,version=>\&_keep,':custom'=>\&_prefix_custom,};sub _provides {my ($element,$key,$meta,$to_version)=@_;return unless defined$element && ref$element eq 'HASH';my$spec=$to_version==2 ? $provides_spec_2 : $provides_spec;my$new_data={};for my$k (keys %$element){$new_data->{$k}=_convert($element->{$k},$spec,$to_version);$new_data->{$k}{version}=_clean_version($element->{$k}{version})if exists$element->{$k}{version}}return$new_data}sub _convert {my ($data,$spec,$to_version,$is_fragment)=@_;my$new_data={};for my$key (keys %$spec){next if$key eq ':custom' || $key eq ':drop';next unless my$fcn=$spec->{$key};if ($is_fragment && $key eq 'generated_by'){$fcn=\&_keep}die "spec for '$key' is not a coderef" unless ref$fcn && ref$fcn eq 'CODE';my$new_value=$fcn->($data->{$key},$key,$data,$to_version);$new_data->{$key}=$new_value if defined$new_value}my$drop_list=$spec->{':drop'};my$customizer=$spec->{':custom'}|| \&_keep;for my$key (keys %$data){next if$drop_list && grep {$key eq $_}@$drop_list;next if exists$spec->{$key};$new_data->{$customizer->($key)}=$data->{$key}}return$new_data}my%up_convert=('2-from-1.4'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_2,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'release_status'=>\&_release_status,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_upgrade_optional_features,'provides'=>\&_provides,'resources'=>\&_upgrade_resources_2,'description'=>\&_keep,'prereqs'=>\&_prereqs_from_1,':drop'=>[qw(build_requires configure_requires conflicts distribution_type license_url private recommends requires) ],':custom'=>\&_prefix_custom,},'1.4-from-1.3'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_optional_features_1_4,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_4,'configure_requires'=>\&_keep,':drop'=>[qw(license_url private)],':custom'=>\&_keep },'1.3-from-1.2'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_3,':drop'=>[qw(license_url private)],':custom'=>\&_keep },'1.2-from-1.1'=>{'version'=>\&_keep,'license'=>\&_license_1,'name'=>\&_keep,'generated_by'=>\&_generated_by,'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'meta-spec'=>\&_change_meta_spec,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'recommends'=>\&_version_map,'requires'=>\&_version_map,'keywords'=>\&_keep,'no_index'=>\&_no_index_1_2,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'resources'=>\&_resources_1_2,':drop'=>[qw(license_url private)],':custom'=>\&_keep },'1.1-from-1.0'=>{'version'=>\&_keep,'name'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'recommends'=>\&_version_map,'requires'=>\&_version_map,'license_url'=>\&_url_or_drop,'private'=>\&_keep,':custom'=>\&_keep },);my%down_convert=('1.4-from-2'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_downgrade_license,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_get_build_requires,'configure_requires'=>\&_get_configure_requires,'conflicts'=>\&_get_conflicts,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_downgrade_optional_features,'provides'=>\&_provides,'recommends'=>\&_get_recommends,'requires'=>\&_get_requires,'resources'=>\&_downgrade_resources,':drop'=>[qw(description prereqs release_status)],':custom'=>\&_keep },'1.3-from-1.4'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_3,':drop'=>[qw(configure_requires)],':custom'=>\&_keep,},'1.2-from-1.3'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_1_2,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_3,':custom'=>\&_keep,},'1.1-from-1.2'=>{'version'=>\&_keep,'name'=>\&_keep,'meta-spec'=>\&_change_meta_spec,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'private'=>\&_keep,'recommends'=>\&_version_map,'requires'=>\&_version_map,':drop'=>[qw(abstract author provides no_index keywords resources)],':custom'=>\&_keep,},'1.0-from-1.1'=>{'name'=>\&_keep,'meta-spec'=>\&_change_meta_spec,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'recommends'=>\&_version_map,'requires'=>\&_version_map,':custom'=>\&_keep,},);my%cleanup=('2'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_2,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'release_status'=>\&_release_status,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_cleanup_optional_features_2,'provides'=>\&_provides,'resources'=>\&_cleanup_resources_2,'description'=>\&_keep,'prereqs'=>\&_cleanup_prereqs,':drop'=>[qw(build_requires configure_requires conflicts distribution_type license_url private recommends requires) ],':custom'=>\&_prefix_custom,},'1.4'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_optional_features_1_4,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_4,'configure_requires'=>\&_keep,':custom'=>\&_keep },'1.3'=>{'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'meta-spec'=>\&_change_meta_spec,'name'=>\&_keep,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'keywords'=>\&_keep,'no_index'=>\&_no_index_directory,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'recommends'=>\&_version_map,'requires'=>\&_version_map,'resources'=>\&_resources_1_3,':custom'=>\&_keep },'1.2'=>{'version'=>\&_keep,'license'=>\&_license_1,'name'=>\&_keep,'generated_by'=>\&_generated_by,'abstract'=>\&_keep_or_unknown,'author'=>\&_author_list,'meta-spec'=>\&_change_meta_spec,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'recommends'=>\&_version_map,'requires'=>\&_version_map,'keywords'=>\&_keep,'no_index'=>\&_no_index_1_2,'optional_features'=>\&_optional_features_as_map,'provides'=>\&_provides,'resources'=>\&_resources_1_2,':custom'=>\&_keep },'1.1'=>{'version'=>\&_keep,'name'=>\&_keep,'meta-spec'=>\&_change_meta_spec,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'recommends'=>\&_version_map,'requires'=>\&_version_map,'license_url'=>\&_url_or_drop,'private'=>\&_keep,':custom'=>\&_keep },'1.0'=>{'name'=>\&_keep,'meta-spec'=>\&_change_meta_spec,'version'=>\&_keep,'build_requires'=>\&_version_map,'conflicts'=>\&_version_map,'distribution_type'=>\&_keep,'dynamic_config'=>\&_keep_or_one,'generated_by'=>\&_generated_by,'license'=>\&_license_1,'recommends'=>\&_version_map,'requires'=>\&_version_map,':custom'=>\&_keep,},);my%fragments_generate=('2'=>{'abstract'=>'abstract','author'=>'author','generated_by'=>'generated_by','license'=>'license','name'=>'name','version'=>'version','dynamic_config'=>'dynamic_config','release_status'=>'release_status','keywords'=>'keywords','no_index'=>'no_index','optional_features'=>'optional_features','provides'=>'provides','resources'=>'resources','description'=>'description','prereqs'=>'prereqs',},'1.4'=>{'abstract'=>'abstract','author'=>'author','generated_by'=>'generated_by','license'=>'license','name'=>'name','version'=>'version','build_requires'=>'prereqs','conflicts'=>'prereqs','distribution_type'=>'distribution_type','dynamic_config'=>'dynamic_config','keywords'=>'keywords','no_index'=>'no_index','optional_features'=>'optional_features','provides'=>'provides','recommends'=>'prereqs','requires'=>'prereqs','resources'=>'resources','configure_requires'=>'prereqs',},);$fragments_generate{$_}=$fragments_generate{'1.4'}for qw/1.3 1.2 1.1 1.0/;sub new {my ($class,$data,%args)=@_;my$self={'data'=>$data,'spec'=>_extract_spec_version($data,$args{default_version}),};return bless$self,$class}sub _extract_spec_version {my ($data,$default)=@_;my$spec=$data->{'meta-spec'};return($default || "1.0")unless defined$spec && ref$spec eq 'HASH';my$v=$spec->{version};if (defined$v && $v =~ /^\d+(?:\.\d+)?$/){return$v if defined$v && grep {$v eq $_}keys%known_specs;return$v+0 if defined$v && grep {$v==$_}keys%known_specs}return "2" if exists$data->{prereqs};return "1.4" if exists$data->{configure_requires};return($default || "1.2")}sub convert {my ($self,%args)=@_;my$args={%args };my$new_version=$args->{version}|| $HIGHEST;my$is_fragment=$args->{is_fragment};my ($old_version)=$self->{spec};my$converted=_dclone($self->{data});if ($old_version==$new_version){$converted=_convert($converted,$cleanup{$old_version},$old_version,$is_fragment);unless ($args->{is_fragment}){my$cmv=CPAN::Meta::Validator->new($converted);unless ($cmv->is_valid){my$errs=join("\n",$cmv->errors);die "Failed to clean-up $old_version metadata. Errors:\n$errs\n"}}return$converted}elsif ($old_version > $new_version){my@vers=sort {$b <=> $a}keys%known_specs;for my$i (0 .. $#vers-1){next if$vers[$i]> $old_version;last if$vers[$i+1]< $new_version;my$spec_string="$vers[$i+1]-from-$vers[$i]";$converted=_convert($converted,$down_convert{$spec_string},$vers[$i+1],$is_fragment);unless ($args->{is_fragment}){my$cmv=CPAN::Meta::Validator->new($converted);unless ($cmv->is_valid){my$errs=join("\n",$cmv->errors);die "Failed to downconvert metadata to $vers[$i+1]. Errors:\n$errs\n"}}}return$converted}else {my@vers=sort {$a <=> $b}keys%known_specs;for my$i (0 .. $#vers-1){next if$vers[$i]< $old_version;last if$vers[$i+1]> $new_version;my$spec_string="$vers[$i+1]-from-$vers[$i]";$converted=_convert($converted,$up_convert{$spec_string},$vers[$i+1],$is_fragment);unless ($args->{is_fragment}){my$cmv=CPAN::Meta::Validator->new($converted);unless ($cmv->is_valid){my$errs=join("\n",$cmv->errors);die "Failed to upconvert metadata to $vers[$i+1]. Errors:\n$errs\n"}}}return$converted}}sub upgrade_fragment {my ($self)=@_;my ($old_version)=$self->{spec};my%expected=map {;$_=>1}grep {defined}map {$fragments_generate{$old_version}{$_}}keys %{$self->{data}};my$converted=$self->convert(version=>$HIGHEST,is_fragment=>1);for my$key (keys %$converted){next if$key =~ /^x_/i || $key eq 'meta-spec';delete$converted->{$key}unless$expected{$key}}return$converted}1; -CPAN_META_CONVERTER - -$fatpacked{"CPAN/Meta/Feature.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_FEATURE'; - use 5.006;use strict;use warnings;package CPAN::Meta::Feature;our$VERSION='2.150005';use CPAN::Meta::Prereqs;sub new {my ($class,$identifier,$spec)=@_;my%guts=(identifier=>$identifier,description=>$spec->{description},prereqs=>CPAN::Meta::Prereqs->new($spec->{prereqs}),);bless \%guts=>$class}sub identifier {$_[0]{identifier}}sub description {$_[0]{description}}sub prereqs {$_[0]{prereqs}}1; -CPAN_META_FEATURE - -$fatpacked{"CPAN/Meta/History.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_HISTORY'; - use 5.006;use strict;use warnings;package CPAN::Meta::History;our$VERSION='2.150005';1; -CPAN_META_HISTORY - -$fatpacked{"CPAN/Meta/Merge.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_MERGE'; - use strict;use warnings;package CPAN::Meta::Merge;our$VERSION='2.150005';use Carp qw/croak/;use Scalar::Util qw/blessed/;use CPAN::Meta::Converter 2.141170;sub _is_identical {my ($left,$right)=@_;return (not defined$left and not defined$right)|| (defined$left and defined$right and $left eq $right)}sub _identical {my ($left,$right,$path)=@_;croak sprintf "Can't merge attribute %s: '%s' does not equal '%s'",join('.',@{$path}),$left,$right unless _is_identical($left,$right);return$left}sub _merge {my ($current,$next,$mergers,$path)=@_;for my$key (keys %{$next}){if (not exists$current->{$key}){$current->{$key}=$next->{$key}}elsif (my$merger=$mergers->{$key}){$current->{$key}=$merger->($current->{$key},$next->{$key},[@{$path},$key ])}elsif ($merger=$mergers->{':default'}){$current->{$key}=$merger->($current->{$key},$next->{$key},[@{$path},$key ])}else {croak sprintf "Can't merge unknown attribute '%s'",join '.',@{$path},$key}}return$current}sub _uniq {my%seen=();return grep {not $seen{$_}++}@_}sub _set_addition {my ($left,$right)=@_;return [+_uniq(@{$left},@{$right})]}sub _uniq_map {my ($left,$right,$path)=@_;for my$key (keys %{$right}){if (not exists$left->{$key}){$left->{$key}=$right->{$key}}elsif (_is_identical($left->{$key},$right->{$key})){1}elsif (ref$left->{$key}eq 'HASH' and ref$right->{$key}eq 'HASH'){$left->{$key}=_uniq_map($left->{$key},$right->{$key},[@{$path},$key ])}else {croak 'Duplication of element ' .join '.',@{$path},$key}}return$left}sub _improvize {my ($left,$right,$path)=@_;my ($name)=reverse @{$path};if ($name =~ /^x_/){if (ref($left)eq 'ARRAY'){return _set_addition($left,$right,$path)}elsif (ref($left)eq 'HASH'){return _uniq_map($left,$right,$path)}else {return _identical($left,$right,$path)}}croak sprintf "Can't merge '%s'",join '.',@{$path}}sub _optional_features {my ($left,$right,$path)=@_;for my$key (keys %{$right}){if (not exists$left->{$key}){$left->{$key}=$right->{$key}}else {for my$subkey (keys %{$right->{$key}}){next if$subkey eq 'prereqs';if (not exists$left->{$key}{$subkey}){$left->{$key}{$subkey}=$right->{$key}{$subkey}}else {Carp::croak "Cannot merge two optional_features named '$key' with different '$subkey' values" if do {no warnings 'uninitialized';$left->{$key}{$subkey}ne $right->{$key}{$subkey}}}}require CPAN::Meta::Prereqs;$left->{$key}{prereqs}=CPAN::Meta::Prereqs->new($left->{$key}{prereqs})->with_merged_prereqs(CPAN::Meta::Prereqs->new($right->{$key}{prereqs}))->as_string_hash}}return$left}my%default=(abstract=>\&_identical,author=>\&_set_addition,dynamic_config=>sub {my ($left,$right)=@_;return$left || $right},generated_by=>sub {my ($left,$right)=@_;return join ', ',_uniq(split(/, /,$left),split(/, /,$right))},license=>\&_set_addition,'meta-spec'=>{version=>\&_identical,url=>\&_identical },name=>\&_identical,release_status=>\&_identical,version=>\&_identical,description=>\&_identical,keywords=>\&_set_addition,no_index=>{map {($_=>\&_set_addition)}qw/file directory package namespace/ },optional_features=>\&_optional_features,prereqs=>sub {require CPAN::Meta::Prereqs;my ($left,$right)=map {CPAN::Meta::Prereqs->new($_)}@_[0,1];return$left->with_merged_prereqs($right)->as_string_hash},provides=>\&_uniq_map,resources=>{license=>\&_set_addition,homepage=>\&_identical,bugtracker=>\&_uniq_map,repository=>\&_uniq_map,':default'=>\&_improvize,},':default'=>\&_improvize,);sub new {my ($class,%arguments)=@_;croak 'default version required' if not exists$arguments{default_version};my%mapping=%default;my%extra=%{$arguments{extra_mappings}|| {}};for my$key (keys%extra){if (ref($mapping{$key})eq 'HASH'){$mapping{$key}={%{$mapping{$key}},%{$extra{$key}}}}else {$mapping{$key}=$extra{$key}}}return bless {default_version=>$arguments{default_version},mapping=>_coerce_mapping(\%mapping,[]),},$class}my%coderef_for=(set_addition=>\&_set_addition,uniq_map=>\&_uniq_map,identical=>\&_identical,improvize=>\&_improvize,);sub _coerce_mapping {my ($orig,$map_path)=@_;my%ret;for my$key (keys %{$orig}){my$value=$orig->{$key};if (ref($orig->{$key})eq 'CODE'){$ret{$key}=$value}elsif (ref($value)eq 'HASH'){my$mapping=_coerce_mapping($value,[@{$map_path},$key ]);$ret{$key}=sub {my ($left,$right,$path)=@_;return _merge($left,$right,$mapping,[@{$path}])}}elsif ($coderef_for{$value}){$ret{$key}=$coderef_for{$value}}else {croak "Don't know what to do with " .join '.',@{$map_path},$key}}return \%ret}sub merge {my ($self,@items)=@_;my$current={};for my$next (@items){if (blessed($next)&& $next->isa('CPAN::Meta')){$next=$next->as_struct}elsif (ref($next)eq 'HASH'){my$cmc=CPAN::Meta::Converter->new($next,default_version=>$self->{default_version});$next=$cmc->upgrade_fragment}else {croak "Don't know how to merge '$next'"}$current=_merge($current,$next,$self->{mapping},[])}return$current}1; -CPAN_META_MERGE - -$fatpacked{"CPAN/Meta/Prereqs.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_PREREQS'; - use 5.006;use strict;use warnings;package CPAN::Meta::Prereqs;our$VERSION='2.150005';use Carp qw(confess);use Scalar::Util qw(blessed);use CPAN::Meta::Requirements 2.121;sub __legal_phases {qw(configure build test runtime develop)}sub __legal_types {qw(requires recommends suggests conflicts)}sub new {my ($class,$prereq_spec)=@_;$prereq_spec ||= {};my%is_legal_phase=map {;$_=>1}$class->__legal_phases;my%is_legal_type=map {;$_=>1}$class->__legal_types;my%guts;PHASE: for my$phase (keys %$prereq_spec){next PHASE unless$phase =~ /\Ax_/i or $is_legal_phase{$phase};my$phase_spec=$prereq_spec->{$phase };next PHASE unless keys %$phase_spec;TYPE: for my$type (keys %$phase_spec){next TYPE unless$type =~ /\Ax_/i or $is_legal_type{$type};my$spec=$phase_spec->{$type };next TYPE unless keys %$spec;$guts{prereqs}{$phase}{$type}=CPAN::Meta::Requirements->from_string_hash($spec)}}return bless \%guts=>$class}sub requirements_for {my ($self,$phase,$type)=@_;confess "requirements_for called without phase" unless defined$phase;confess "requirements_for called without type" unless defined$type;unless ($phase =~ /\Ax_/i or grep {$phase eq $_}$self->__legal_phases){confess "requested requirements for unknown phase: $phase"}unless ($type =~ /\Ax_/i or grep {$type eq $_}$self->__legal_types){confess "requested requirements for unknown type: $type"}my$req=($self->{prereqs}{$phase}{$type}||= CPAN::Meta::Requirements->new);$req->finalize if$self->is_finalized;return$req}sub with_merged_prereqs {my ($self,$other)=@_;my@other=blessed($other)? $other : @$other;my@prereq_objs=($self,@other);my%new_arg;for my$phase ($self->__legal_phases){for my$type ($self->__legal_types){my$req=CPAN::Meta::Requirements->new;for my$prereq (@prereq_objs){my$this_req=$prereq->requirements_for($phase,$type);next unless$this_req->required_modules;$req->add_requirements($this_req)}next unless$req->required_modules;$new_arg{$phase }{$type }=$req->as_string_hash}}return (ref$self)->new(\%new_arg)}sub merged_requirements {my ($self,$phases,$types)=@_;$phases=[qw/runtime build test/]unless defined$phases;$types=[qw/requires recommends/]unless defined$types;confess "merged_requirements phases argument must be an arrayref" unless ref$phases eq 'ARRAY';confess "merged_requirements types argument must be an arrayref" unless ref$types eq 'ARRAY';my$req=CPAN::Meta::Requirements->new;for my$phase (@$phases){unless ($phase =~ /\Ax_/i or grep {$phase eq $_}$self->__legal_phases){confess "requested requirements for unknown phase: $phase"}for my$type (@$types){unless ($type =~ /\Ax_/i or grep {$type eq $_}$self->__legal_types){confess "requested requirements for unknown type: $type"}$req->add_requirements($self->requirements_for($phase,$type))}}$req->finalize if$self->is_finalized;return$req}sub as_string_hash {my ($self)=@_;my%hash;for my$phase ($self->__legal_phases){for my$type ($self->__legal_types){my$req=$self->requirements_for($phase,$type);next unless$req->required_modules;$hash{$phase }{$type }=$req->as_string_hash}}return \%hash}sub is_finalized {$_[0]{finalized}}sub finalize {my ($self)=@_;$self->{finalized}=1;for my$phase (keys %{$self->{prereqs}}){$_->finalize for values %{$self->{prereqs}{$phase}}}}sub clone {my ($self)=@_;my$clone=(ref$self)->new($self->as_string_hash)}1; -CPAN_META_PREREQS - -$fatpacked{"CPAN/Meta/Requirements.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_REQUIREMENTS'; - use strict;use warnings;package CPAN::Meta::Requirements;our$VERSION='2.133';use Carp ();BEGIN {eval "use version ()";if (my$err=$@){eval "use ExtUtils::MakeMaker::version" or die$err}}*_is_qv=version->can('is_qv')? sub {$_[0]->is_qv}: sub {exists $_[0]->{qv}};my$V0=version->new(0);my@valid_options=qw(bad_version_hook);sub new {my ($class,$options)=@_;$options ||= {};Carp::croak "Argument to $class\->new() must be a hash reference" unless ref$options eq 'HASH';my%self=map {;$_=>$options->{$_}}@valid_options;return bless \%self=>$class}sub _find_magic_vstring {my$value=shift;my$tvalue='';require B;my$sv=B::svref_2object(\$value);my$magic=ref($sv)eq 'B::PVMG' ? $sv->MAGIC : undef;while ($magic){if ($magic->TYPE eq 'V'){$tvalue=$magic->PTR;$tvalue =~ s/^v?(.+)$/v$1/;last}else {$magic=$magic->MOREMAGIC}}return$tvalue}sub _isa_version {UNIVERSAL::isa($_[0],'UNIVERSAL')&& $_[0]->isa('version')}sub _version_object {my ($self,$module,$version)=@_;my ($vobj,$err);if (not defined$version or (!ref($version)&& $version eq '0')){return$V0}elsif (ref($version)eq 'version' || _isa_version($version)){$vobj=$version}else {if ($INC{'version/vpp.pm'}|| $INC{'ExtUtils/MakeMaker/version/vpp.pm'}){my$magic=_find_magic_vstring($version);$version=$magic if length$magic}eval {local$SIG{__WARN__}=sub {die "Invalid version: $_[0]"};$vobj=version->new($version)};if (my$err=$@){my$hook=$self->{bad_version_hook};$vobj=eval {$hook->($version,$module)}if ref$hook eq 'CODE';unless (eval {$vobj->isa("version")}){$err =~ s{ at .* line \d+.*$}{};die "Can't convert '$version': $err"}}}if ($vobj =~ m{\A\.}){$vobj=version->new("0$vobj")}if (_is_qv($vobj)){$vobj=version->new($vobj->normal)}return$vobj}BEGIN {for my$type (qw(maximum exclusion exact_version)){my$method="with_$type";my$to_add=$type eq 'exact_version' ? $type : "add_$type";my$code=sub {my ($self,$name,$version)=@_;$version=$self->_version_object($name,$version);$self->__modify_entry_for($name,$method,$version);return$self};no strict 'refs';*$to_add=$code}}sub add_minimum {my ($self,$name,$version)=@_;if (not defined$version or "$version" eq '0'){return$self if$self->__entry_for($name);Carp::confess("can't add new requirements to finalized requirements")if$self->is_finalized;$self->{requirements}{$name }=CPAN::Meta::Requirements::_Range::Range->with_minimum($V0)}else {$version=$self->_version_object($name,$version);$self->__modify_entry_for($name,'with_minimum',$version)}return$self}sub add_requirements {my ($self,$req)=@_;for my$module ($req->required_modules){my$modifiers=$req->__entry_for($module)->as_modifiers;for my$modifier (@$modifiers){my ($method,@args)=@$modifier;$self->$method($module=>@args)}}return$self}sub accepts_module {my ($self,$module,$version)=@_;$version=$self->_version_object($module,$version);return 1 unless my$range=$self->__entry_for($module);return$range->_accepts($version)}sub clear_requirement {my ($self,$module)=@_;return$self unless$self->__entry_for($module);Carp::confess("can't clear requirements on finalized requirements")if$self->is_finalized;delete$self->{requirements}{$module };return$self}sub requirements_for_module {my ($self,$module)=@_;my$entry=$self->__entry_for($module);return unless$entry;return$entry->as_string}sub required_modules {keys %{$_[0]{requirements}}}sub clone {my ($self)=@_;my$new=(ref$self)->new;return$new->add_requirements($self)}sub __entry_for {$_[0]{requirements}{$_[1]}}sub __modify_entry_for {my ($self,$name,$method,$version)=@_;my$fin=$self->is_finalized;my$old=$self->__entry_for($name);Carp::confess("can't add new requirements to finalized requirements")if$fin and not $old;my$new=($old || 'CPAN::Meta::Requirements::_Range::Range')->$method($version);Carp::confess("can't modify finalized requirements")if$fin and $old->as_string ne $new->as_string;$self->{requirements}{$name }=$new}sub is_simple {my ($self)=@_;for my$module ($self->required_modules){return if$self->__entry_for($module)->as_string =~ /\s/}return 1}sub is_finalized {$_[0]{finalized}}sub finalize {$_[0]{finalized}=1}sub as_string_hash {my ($self)=@_;my%hash=map {;$_=>$self->{requirements}{$_}->as_string}$self->required_modules;return \%hash}my%methods_for_op=('=='=>[qw(exact_version) ],'!='=>[qw(add_exclusion) ],'>='=>[qw(add_minimum) ],'<='=>[qw(add_maximum) ],'>'=>[qw(add_minimum add_exclusion) ],'<'=>[qw(add_maximum add_exclusion) ],);sub add_string_requirement {my ($self,$module,$req)=@_;unless (defined$req && length$req){$req=0;$self->_blank_carp($module)}my$magic=_find_magic_vstring($req);if (length$magic){$self->add_minimum($module=>$magic);return}my@parts=split qr{\s*,\s*},$req;for my$part (@parts){my ($op,$ver)=$part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z};if (!defined$op){$self->add_minimum($module=>$part)}else {Carp::confess("illegal requirement string: $req")unless my$methods=$methods_for_op{$op };$self->$_($module=>$ver)for @$methods}}}sub _blank_carp {my ($self,$module)=@_;Carp::carp("Undefined requirement for $module treated as '0'")}sub from_string_hash {my ($class,$hash,$options)=@_;my$self=$class->new($options);for my$module (keys %$hash){my$req=$hash->{$module};unless (defined$req && length$req){$req=0;$class->_blank_carp($module)}$self->add_string_requirement($module,$req)}return$self}{package CPAN::Meta::Requirements::_Range::Exact;sub _new {bless {version=>$_[1]}=>$_[0]}sub _accepts {return $_[0]{version}==$_[1]}sub as_string {return "== $_[0]{version}"}sub as_modifiers {return [[exact_version=>$_[0]{version}]]}sub _clone {(ref $_[0])->_new(version->new($_[0]{version}))}sub with_exact_version {my ($self,$version)=@_;return$self->_clone if$self->_accepts($version);Carp::confess("illegal requirements: unequal exact version specified")}sub with_minimum {my ($self,$minimum)=@_;return$self->_clone if$self->{version}>= $minimum;Carp::confess("illegal requirements: minimum above exact specification")}sub with_maximum {my ($self,$maximum)=@_;return$self->_clone if$self->{version}<= $maximum;Carp::confess("illegal requirements: maximum below exact specification")}sub with_exclusion {my ($self,$exclusion)=@_;return$self->_clone unless$exclusion==$self->{version};Carp::confess("illegal requirements: excluded exact specification")}}{package CPAN::Meta::Requirements::_Range::Range;sub _self {ref($_[0])? $_[0]: (bless {}=>$_[0])}sub _clone {return (bless {}=>$_[0])unless ref $_[0];my ($s)=@_;my%guts=((exists$s->{minimum}? (minimum=>version->new($s->{minimum})): ()),(exists$s->{maximum}? (maximum=>version->new($s->{maximum})): ()),(exists$s->{exclusions}? (exclusions=>[map {version->new($_)}@{$s->{exclusions}}]): ()),);bless \%guts=>ref($s)}sub as_modifiers {my ($self)=@_;my@mods;push@mods,[add_minimum=>$self->{minimum}]if exists$self->{minimum};push@mods,[add_maximum=>$self->{maximum}]if exists$self->{maximum};push@mods,map {;[add_exclusion=>$_ ]}@{$self->{exclusions}|| []};return \@mods}sub as_string {my ($self)=@_;return 0 if!keys %$self;return "$self->{minimum}" if (keys %$self)==1 and exists$self->{minimum};my@exclusions=@{$self->{exclusions}|| []};my@parts;for my$pair ([qw(>= > minimum) ],[qw(<= < maximum) ],){my ($op,$e_op,$k)=@$pair;if (exists$self->{$k}){my@new_exclusions=grep {$_!=$self->{$k }}@exclusions;if (@new_exclusions==@exclusions){push@parts,"$op $self->{ $k }"}else {push@parts,"$e_op $self->{ $k }";@exclusions=@new_exclusions}}}push@parts,map {;"!= $_"}@exclusions;return join q{, },@parts}sub with_exact_version {my ($self,$version)=@_;$self=$self->_clone;Carp::confess("illegal requirements: exact specification outside of range")unless$self->_accepts($version);return CPAN::Meta::Requirements::_Range::Exact->_new($version)}sub _simplify {my ($self)=@_;if (defined$self->{minimum}and defined$self->{maximum}){if ($self->{minimum}==$self->{maximum}){Carp::confess("illegal requirements: excluded all values")if grep {$_==$self->{minimum}}@{$self->{exclusions}|| []};return CPAN::Meta::Requirements::_Range::Exact->_new($self->{minimum})}Carp::confess("illegal requirements: minimum exceeds maximum")if$self->{minimum}> $self->{maximum}}if ($self->{exclusions}){my%seen;@{$self->{exclusions}}=grep {(!defined$self->{minimum}or $_ >= $self->{minimum})and (!defined$self->{maximum}or $_ <= $self->{maximum})and !$seen{$_}++}@{$self->{exclusions}}}return$self}sub with_minimum {my ($self,$minimum)=@_;$self=$self->_clone;if (defined (my$old_min=$self->{minimum})){$self->{minimum}=(sort {$b cmp $a}($minimum,$old_min))[0]}else {$self->{minimum}=$minimum}return$self->_simplify}sub with_maximum {my ($self,$maximum)=@_;$self=$self->_clone;if (defined (my$old_max=$self->{maximum})){$self->{maximum}=(sort {$a cmp $b}($maximum,$old_max))[0]}else {$self->{maximum}=$maximum}return$self->_simplify}sub with_exclusion {my ($self,$exclusion)=@_;$self=$self->_clone;push @{$self->{exclusions}||= []},$exclusion;return$self->_simplify}sub _accepts {my ($self,$version)=@_;return if defined$self->{minimum}and $version < $self->{minimum};return if defined$self->{maximum}and $version > $self->{maximum};return if defined$self->{exclusions}and grep {$version==$_}@{$self->{exclusions}};return 1}}1; -CPAN_META_REQUIREMENTS - -$fatpacked{"CPAN/Meta/Spec.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_SPEC'; - use 5.006;use strict;use warnings;package CPAN::Meta::Spec;our$VERSION='2.150005';1; -CPAN_META_SPEC - -$fatpacked{"CPAN/Meta/Validator.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_VALIDATOR'; - use 5.006;use strict;use warnings;package CPAN::Meta::Validator;our$VERSION='2.150005';my%known_specs=('1.4'=>'http://module-build.sourceforge.net/META-spec-v1.4.html','1.3'=>'http://module-build.sourceforge.net/META-spec-v1.3.html','1.2'=>'http://module-build.sourceforge.net/META-spec-v1.2.html','1.1'=>'http://module-build.sourceforge.net/META-spec-v1.1.html','1.0'=>'http://module-build.sourceforge.net/META-spec-v1.0.html');my%known_urls=map {$known_specs{$_}=>$_}keys%known_specs;my$module_map1={'map'=>{':key'=>{name=>\&module,value=>\&exversion }}};my$module_map2={'map'=>{':key'=>{name=>\&module,value=>\&version }}};my$no_index_2={'map'=>{file=>{list=>{value=>\&string }},directory=>{list=>{value=>\&string }},'package'=>{list=>{value=>\&string }},namespace=>{list=>{value=>\&string }},':key'=>{name=>\&custom_2,value=>\&anything },}};my$no_index_1_3={'map'=>{file=>{list=>{value=>\&string }},directory=>{list=>{value=>\&string }},'package'=>{list=>{value=>\&string }},namespace=>{list=>{value=>\&string }},':key'=>{name=>\&string,value=>\&anything },}};my$no_index_1_2={'map'=>{file=>{list=>{value=>\&string }},dir=>{list=>{value=>\&string }},'package'=>{list=>{value=>\&string }},namespace=>{list=>{value=>\&string }},':key'=>{name=>\&string,value=>\&anything },}};my$no_index_1_1={'map'=>{':key'=>{name=>\&string,list=>{value=>\&string }},}};my$prereq_map={map=>{':key'=>{name=>\&phase,'map'=>{':key'=>{name=>\&relation,%$module_map1,},},}},};my%definitions=('2'=>{'abstract'=>{mandatory=>1,value=>\&string },'author'=>{mandatory=>1,list=>{value=>\&string }},'dynamic_config'=>{mandatory=>1,value=>\&boolean },'generated_by'=>{mandatory=>1,value=>\&string },'license'=>{mandatory=>1,list=>{value=>\&license }},'meta-spec'=>{mandatory=>1,'map'=>{version=>{mandatory=>1,value=>\&version},url=>{value=>\&url },':key'=>{name=>\&custom_2,value=>\&anything },}},'name'=>{mandatory=>1,value=>\&string },'release_status'=>{mandatory=>1,value=>\&release_status },'version'=>{mandatory=>1,value=>\&version },'description'=>{value=>\&string },'keywords'=>{list=>{value=>\&string }},'no_index'=>$no_index_2,'optional_features'=>{'map'=>{':key'=>{name=>\&string,'map'=>{description=>{value=>\&string },prereqs=>$prereq_map,':key'=>{name=>\&custom_2,value=>\&anything },}}}},'prereqs'=>$prereq_map,'provides'=>{'map'=>{':key'=>{name=>\&module,'map'=>{file=>{mandatory=>1,value=>\&file },version=>{value=>\&version },':key'=>{name=>\&custom_2,value=>\&anything },}}}},'resources'=>{'map'=>{license=>{list=>{value=>\&url }},homepage=>{value=>\&url },bugtracker=>{'map'=>{web=>{value=>\&url },mailto=>{value=>\&string},':key'=>{name=>\&custom_2,value=>\&anything },}},repository=>{'map'=>{web=>{value=>\&url },url=>{value=>\&url },type=>{value=>\&string },':key'=>{name=>\&custom_2,value=>\&anything },}},':key'=>{value=>\&string,name=>\&custom_2 },}},':key'=>{name=>\&custom_2,value=>\&anything },},'1.4'=>{'meta-spec'=>{mandatory=>1,'map'=>{version=>{mandatory=>1,value=>\&version},url=>{mandatory=>1,value=>\&urlspec },':key'=>{name=>\&string,value=>\&anything },},},'name'=>{mandatory=>1,value=>\&string },'version'=>{mandatory=>1,value=>\&version },'abstract'=>{mandatory=>1,value=>\&string },'author'=>{mandatory=>1,list=>{value=>\&string }},'license'=>{mandatory=>1,value=>\&license },'generated_by'=>{mandatory=>1,value=>\&string },'distribution_type'=>{value=>\&string },'dynamic_config'=>{value=>\&boolean },'requires'=>$module_map1,'recommends'=>$module_map1,'build_requires'=>$module_map1,'configure_requires'=>$module_map1,'conflicts'=>$module_map2,'optional_features'=>{'map'=>{':key'=>{name=>\&string,'map'=>{description=>{value=>\&string },requires=>$module_map1,recommends=>$module_map1,build_requires=>$module_map1,conflicts=>$module_map2,':key'=>{name=>\&string,value=>\&anything },}}}},'provides'=>{'map'=>{':key'=>{name=>\&module,'map'=>{file=>{mandatory=>1,value=>\&file },version=>{value=>\&version },':key'=>{name=>\&string,value=>\&anything },}}}},'no_index'=>$no_index_1_3,'private'=>$no_index_1_3,'keywords'=>{list=>{value=>\&string }},'resources'=>{'map'=>{license=>{value=>\&url },homepage=>{value=>\&url },bugtracker=>{value=>\&url },repository=>{value=>\&url },':key'=>{value=>\&string,name=>\&custom_1 },}},':key'=>{name=>\&string,value=>\&anything },},'1.3'=>{'meta-spec'=>{mandatory=>1,'map'=>{version=>{mandatory=>1,value=>\&version},url=>{mandatory=>1,value=>\&urlspec },':key'=>{name=>\&string,value=>\&anything },},},'name'=>{mandatory=>1,value=>\&string },'version'=>{mandatory=>1,value=>\&version },'abstract'=>{mandatory=>1,value=>\&string },'author'=>{mandatory=>1,list=>{value=>\&string }},'license'=>{mandatory=>1,value=>\&license },'generated_by'=>{mandatory=>1,value=>\&string },'distribution_type'=>{value=>\&string },'dynamic_config'=>{value=>\&boolean },'requires'=>$module_map1,'recommends'=>$module_map1,'build_requires'=>$module_map1,'conflicts'=>$module_map2,'optional_features'=>{'map'=>{':key'=>{name=>\&string,'map'=>{description=>{value=>\&string },requires=>$module_map1,recommends=>$module_map1,build_requires=>$module_map1,conflicts=>$module_map2,':key'=>{name=>\&string,value=>\&anything },}}}},'provides'=>{'map'=>{':key'=>{name=>\&module,'map'=>{file=>{mandatory=>1,value=>\&file },version=>{value=>\&version },':key'=>{name=>\&string,value=>\&anything },}}}},'no_index'=>$no_index_1_3,'private'=>$no_index_1_3,'keywords'=>{list=>{value=>\&string }},'resources'=>{'map'=>{license=>{value=>\&url },homepage=>{value=>\&url },bugtracker=>{value=>\&url },repository=>{value=>\&url },':key'=>{value=>\&string,name=>\&custom_1 },}},':key'=>{name=>\&string,value=>\&anything },},'1.2'=>{'meta-spec'=>{mandatory=>1,'map'=>{version=>{mandatory=>1,value=>\&version},url=>{mandatory=>1,value=>\&urlspec },':key'=>{name=>\&string,value=>\&anything },},},'name'=>{mandatory=>1,value=>\&string },'version'=>{mandatory=>1,value=>\&version },'license'=>{mandatory=>1,value=>\&license },'generated_by'=>{mandatory=>1,value=>\&string },'author'=>{mandatory=>1,list=>{value=>\&string }},'abstract'=>{mandatory=>1,value=>\&string },'distribution_type'=>{value=>\&string },'dynamic_config'=>{value=>\&boolean },'keywords'=>{list=>{value=>\&string }},'private'=>$no_index_1_2,'$no_index'=>$no_index_1_2,'requires'=>$module_map1,'recommends'=>$module_map1,'build_requires'=>$module_map1,'conflicts'=>$module_map2,'optional_features'=>{'map'=>{':key'=>{name=>\&string,'map'=>{description=>{value=>\&string },requires=>$module_map1,recommends=>$module_map1,build_requires=>$module_map1,conflicts=>$module_map2,':key'=>{name=>\&string,value=>\&anything },}}}},'provides'=>{'map'=>{':key'=>{name=>\&module,'map'=>{file=>{mandatory=>1,value=>\&file },version=>{value=>\&version },':key'=>{name=>\&string,value=>\&anything },}}}},'resources'=>{'map'=>{license=>{value=>\&url },homepage=>{value=>\&url },bugtracker=>{value=>\&url },repository=>{value=>\&url },':key'=>{value=>\&string,name=>\&custom_1 },}},':key'=>{name=>\&string,value=>\&anything },},'1.1'=>{'name'=>{value=>\&string },'version'=>{mandatory=>1,value=>\&version },'license'=>{value=>\&license },'generated_by'=>{value=>\&string },'license_uri'=>{value=>\&url },'distribution_type'=>{value=>\&string },'dynamic_config'=>{value=>\&boolean },'private'=>$no_index_1_1,'requires'=>$module_map1,'recommends'=>$module_map1,'build_requires'=>$module_map1,'conflicts'=>$module_map2,':key'=>{name=>\&string,value=>\&anything },},'1.0'=>{'name'=>{value=>\&string },'version'=>{mandatory=>1,value=>\&version },'license'=>{value=>\&license },'generated_by'=>{value=>\&string },'license_uri'=>{value=>\&url },'distribution_type'=>{value=>\&string },'dynamic_config'=>{value=>\&boolean },'requires'=>$module_map1,'recommends'=>$module_map1,'build_requires'=>$module_map1,'conflicts'=>$module_map2,':key'=>{name=>\&string,value=>\&anything },},);sub new {my ($class,$data)=@_;my$self={'data'=>$data,'spec'=>eval {$data->{'meta-spec'}{'version'}}|| "1.0",'errors'=>undef,};return bless$self,$class}sub is_valid {my$self=shift;my$data=$self->{data};my$spec_version=$self->{spec};$self->check_map($definitions{$spec_version},$data);return!$self->errors}sub errors {my$self=shift;return ()unless(defined$self->{errors});return @{$self->{errors}}}my$spec_error="Missing validation action in specification. " ."Must be one of 'map', 'list', or 'value'";sub check_map {my ($self,$spec,$data)=@_;if(ref($spec)ne 'HASH'){$self->_error("Unknown META specification, cannot validate.");return}if(ref($data)ne 'HASH'){$self->_error("Expected a map structure from string or file.");return}for my$key (keys %$spec){next unless($spec->{$key}->{mandatory});next if(defined$data->{$key});push @{$self->{stack}},$key;$self->_error("Missing mandatory field, '$key'");pop @{$self->{stack}}}for my$key (keys %$data){push @{$self->{stack}},$key;if($spec->{$key}){if($spec->{$key}{value}){$spec->{$key}{value}->($self,$key,$data->{$key})}elsif($spec->{$key}{'map'}){$self->check_map($spec->{$key}{'map'},$data->{$key})}elsif($spec->{$key}{'list'}){$self->check_list($spec->{$key}{'list'},$data->{$key})}else {$self->_error("$spec_error for '$key'")}}elsif ($spec->{':key'}){$spec->{':key'}{name}->($self,$key,$key);if($spec->{':key'}{value}){$spec->{':key'}{value}->($self,$key,$data->{$key})}elsif($spec->{':key'}{'map'}){$self->check_map($spec->{':key'}{'map'},$data->{$key})}elsif($spec->{':key'}{'list'}){$self->check_list($spec->{':key'}{'list'},$data->{$key})}else {$self->_error("$spec_error for ':key'")}}else {$self->_error("Unknown key, '$key', found in map structure")}pop @{$self->{stack}}}}sub check_list {my ($self,$spec,$data)=@_;if(ref($data)ne 'ARRAY'){$self->_error("Expected a list structure");return}if(defined$spec->{mandatory}){if(!defined$data->[0]){$self->_error("Missing entries from mandatory list")}}for my$value (@$data){push @{$self->{stack}},$value || "";if(defined$spec->{value}){$spec->{value}->($self,'list',$value)}elsif(defined$spec->{'map'}){$self->check_map($spec->{'map'},$value)}elsif(defined$spec->{'list'}){$self->check_list($spec->{'list'},$value)}elsif ($spec->{':key'}){$self->check_map($spec,$value)}else {$self->_error("$spec_error associated with '$self->{stack}[-2]'")}pop @{$self->{stack}}}}sub header {my ($self,$key,$value)=@_;if(defined$value){return 1 if($value && $value =~ /^--- #YAML:1.0/)}$self->_error("file does not have a valid YAML header.");return 0}sub release_status {my ($self,$key,$value)=@_;if(defined$value){my$version=$self->{data}{version}|| '';if ($version =~ /_/){return 1 if ($value =~ /\A(?:testing|unstable)\z/);$self->_error("'$value' for '$key' is invalid for version '$version'")}else {return 1 if ($value =~ /\A(?:stable|testing|unstable)\z/);$self->_error("'$value' for '$key' is invalid")}}else {$self->_error("'$key' is not defined")}return 0}sub _uri_split {return $_[0]=~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,}sub url {my ($self,$key,$value)=@_;if(defined$value){my ($scheme,$auth,$path,$query,$frag)=_uri_split($value);unless (defined$scheme && length$scheme){$self->_error("'$value' for '$key' does not have a URL scheme");return 0}unless (defined$auth && length$auth){$self->_error("'$value' for '$key' does not have a URL authority");return 0}return 1}$value ||= '';$self->_error("'$value' for '$key' is not a valid URL.");return 0}sub urlspec {my ($self,$key,$value)=@_;if(defined$value){return 1 if($value && $known_specs{$self->{spec}}eq $value);if($value && $known_urls{$value}){$self->_error('META specification URL does not match version');return 0}}$self->_error('Unknown META specification');return 0}sub anything {return 1}sub string {my ($self,$key,$value)=@_;if(defined$value){return 1 if($value || $value =~ /^0$/)}$self->_error("value is an undefined string");return 0}sub string_or_undef {my ($self,$key,$value)=@_;return 1 unless(defined$value);return 1 if($value || $value =~ /^0$/);$self->_error("No string defined for '$key'");return 0}sub file {my ($self,$key,$value)=@_;return 1 if(defined$value);$self->_error("No file defined for '$key'");return 0}sub exversion {my ($self,$key,$value)=@_;if(defined$value && ($value || $value =~ /0/)){my$pass=1;for(split(",",$value)){$self->version($key,$_)or ($pass=0)}return$pass}$value='' unless(defined$value);$self->_error("'$value' for '$key' is not a valid version.");return 0}sub version {my ($self,$key,$value)=@_;if(defined$value){return 0 unless($value || $value =~ /0/);return 1 if($value =~ /^\s*((<|<=|>=|>|!=|==)\s*)?v?\d+((\.\d+((_|\.)\d+)?)?)/)}else {$value=''}$self->_error("'$value' for '$key' is not a valid version.");return 0}sub boolean {my ($self,$key,$value)=@_;if(defined$value){return 1 if($value =~ /^(0|1|true|false)$/)}else {$value=''}$self->_error("'$value' for '$key' is not a boolean value.");return 0}my%v1_licenses=('perl'=>'http://dev.perl.org/licenses/','gpl'=>'http://www.opensource.org/licenses/gpl-license.php','apache'=>'http://apache.org/licenses/LICENSE-2.0','artistic'=>'http://opensource.org/licenses/artistic-license.php','artistic_2'=>'http://opensource.org/licenses/artistic-license-2.0.php','lgpl'=>'http://www.opensource.org/licenses/lgpl-license.php','bsd'=>'http://www.opensource.org/licenses/bsd-license.php','gpl'=>'http://www.opensource.org/licenses/gpl-license.php','mit'=>'http://opensource.org/licenses/mit-license.php','mozilla'=>'http://opensource.org/licenses/mozilla1.1.php','open_source'=>undef,'unrestricted'=>undef,'restrictive'=>undef,'unknown'=>undef,);my%v2_licenses=map {$_=>1}qw(agpl_3 apache_1_1 apache_2_0 artistic_1 artistic_2 bsd freebsd gfdl_1_2 gfdl_1_3 gpl_1 gpl_2 gpl_3 lgpl_2_1 lgpl_3_0 mit mozilla_1_0 mozilla_1_1 openssl perl_5 qpl_1_0 ssleay sun zlib open_source restricted unrestricted unknown);sub license {my ($self,$key,$value)=@_;my$licenses=$self->{spec}< 2 ? \%v1_licenses : \%v2_licenses;if(defined$value){return 1 if($value && exists$licenses->{$value})}else {$value=''}$self->_error("License '$value' is invalid");return 0}sub custom_1 {my ($self,$key)=@_;if(defined$key){return 1 if($key && $key =~ /^[_a-z]+$/i && $key =~ /[A-Z]/)}else {$key=''}$self->_error("Custom resource '$key' must be in CamelCase.");return 0}sub custom_2 {my ($self,$key)=@_;if(defined$key){return 1 if($key && $key =~ /^x_/i)}else {$key=''}$self->_error("Custom key '$key' must begin with 'x_' or 'X_'.");return 0}sub identifier {my ($self,$key)=@_;if(defined$key){return 1 if($key && $key =~ /^([a-z][_a-z]+)$/i)}else {$key=''}$self->_error("Key '$key' is not a legal identifier.");return 0}sub module {my ($self,$key)=@_;if(defined$key){return 1 if($key && $key =~ /^[A-Za-z0-9_]+(::[A-Za-z0-9_]+)*$/)}else {$key=''}$self->_error("Key '$key' is not a legal module name.");return 0}my@valid_phases=qw/configure build test runtime develop/;sub phase {my ($self,$key)=@_;if(defined$key){return 1 if(length$key && grep {$key eq $_}@valid_phases);return 1 if$key =~ /x_/i}else {$key=''}$self->_error("Key '$key' is not a legal phase.");return 0}my@valid_relations=qw/requires recommends suggests conflicts/;sub relation {my ($self,$key)=@_;if(defined$key){return 1 if(length$key && grep {$key eq $_}@valid_relations);return 1 if$key =~ /x_/i}else {$key=''}$self->_error("Key '$key' is not a legal prereq relationship.");return 0}sub _error {my$self=shift;my$mess=shift;$mess .= ' ('.join(' -> ',@{$self->{stack}}).')' if($self->{stack});$mess .= " [Validation: $self->{spec}]";push @{$self->{errors}},$mess}1; -CPAN_META_VALIDATOR - -$fatpacked{"CPAN/Meta/YAML.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_YAML'; - use 5.008001;use strict;use warnings;package CPAN::Meta::YAML;$CPAN::Meta::YAML::VERSION='0.016';;use Exporter;our@ISA=qw{Exporter};our@EXPORT=qw{Load Dump};our@EXPORT_OK=qw{LoadFile DumpFile freeze thaw};sub Dump {return CPAN::Meta::YAML->new(@_)->_dump_string}sub Load {my$self=CPAN::Meta::YAML->_load_string(@_);if (wantarray){return @$self}else {return$self->[-1]}}BEGIN {*freeze=\&Dump;*thaw=\&Load}sub DumpFile {my$file=shift;return CPAN::Meta::YAML->new(@_)->_dump_file($file)}sub LoadFile {my$file=shift;my$self=CPAN::Meta::YAML->_load_file($file);if (wantarray){return @$self}else {return$self->[-1]}}sub new {my$class=shift;bless [@_ ],$class}sub read_string {my$self=shift;$self->_load_string(@_)}sub write_string {my$self=shift;$self->_dump_string(@_)}sub read {my$self=shift;$self->_load_file(@_)}sub write {my$self=shift;$self->_dump_file(@_)}my@UNPRINTABLE=qw(0 x01 x02 x03 x04 x05 x06 a b t n v f r x0E x0F x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x1A e x1C x1D x1E x1F);my%UNESCAPES=(0=>"\x00",z=>"\x00",N=>"\x85",a=>"\x07",b=>"\x08",t=>"\x09",n=>"\x0a",v=>"\x0b",f=>"\x0c",r=>"\x0d",e=>"\x1b",'\\'=>'\\',);my%QUOTE=map {$_=>1}qw{null true false};my$re_capture_double_quoted=qr/\"([^\\"]*(?:\\.[^\\"]*)*)\"/;my$re_capture_single_quoted=qr/\'([^\']*(?:\'\'[^\']*)*)\'/;my$re_capture_unquoted_key=qr/([^:]+(?::+\S(?:[^:]*|.*?(?=:)))*)(?=\s*\:(?:\s+|$))/;my$re_trailing_comment=qr/(?:\s+\#.*)?/;my$re_key_value_separator=qr/\s*:(?:\s+(?:\#.*)?|$)/;sub _load_file {my$class=ref $_[0]? ref shift : shift;my$file=shift or $class->_error('You did not specify a file name');$class->_error("File '$file' does not exist")unless -e $file;$class->_error("'$file' is a directory, not a file")unless -f _;$class->_error("Insufficient permissions to read '$file'")unless -r _;open(my$fh,"<:unix:encoding(UTF-8)",$file);unless ($fh){$class->_error("Failed to open file '$file': $!")}if (_can_flock()){flock($fh,Fcntl::LOCK_SH())or warn "Couldn't lock '$file' for reading: $!"}my$contents=eval {use warnings FATAL=>'utf8';local $/;<$fh>};if (my$err=$@){$class->_error("Error reading from file '$file': $err")}unless (close$fh){$class->_error("Failed to close file '$file': $!")}$class->_load_string($contents)}sub _load_string {my$class=ref $_[0]? ref shift : shift;my$self=bless [],$class;my$string=$_[0];eval {unless (defined$string){die \"Did not provide a string to load"}if (utf8::is_utf8($string)&&!utf8::valid($string)){die \<<'...'}utf8::upgrade($string);$string =~ s/^\x{FEFF}//;return$self unless length$string;my@lines=grep {!/^\s*(?:\#.*)?\z/}split /(?:\015{1,2}\012|\015|\012)/,$string;@lines and $lines[0]=~ /^\%YAML[: ][\d\.]+.*\z/ and shift@lines;my$in_document=0;while (@lines){if ($lines[0]=~ /^---\s*(?:(.+)\s*)?\z/){shift@lines;if (defined $1 and $1 !~ /^(?:\#.+|\%YAML[: ][\d\.]+)\z/){push @$self,$self->_load_scalar("$1",[undef ],\@lines);next}$in_document=1}if (!@lines or $lines[0]=~ /^(?:---|\.\.\.)/){push @$self,undef;while (@lines and $lines[0]!~ /^---/){shift@lines}$in_document=0}elsif (!$in_document && @$self){die \"CPAN::Meta::YAML failed to classify the line '$lines[0]'"}elsif ($lines[0]=~ /^\s*\-(?:\s|$|-+$)/){my$document=[];push @$self,$document;$self->_load_array($document,[0 ],\@lines)}elsif ($lines[0]=~ /^(\s*)\S/){my$document={};push @$self,$document;$self->_load_hash($document,[length($1)],\@lines)}else {die \"CPAN::Meta::YAML failed to classify the line '$lines[0]'"}}};my$err=$@;if (ref$err eq 'SCALAR'){$self->_error(${$err})}elsif ($err){$self->_error($err)}return$self}sub _unquote_single {my ($self,$string)=@_;return '' unless length$string;$string =~ s/\'\'/\'/g;return$string}sub _unquote_double {my ($self,$string)=@_;return '' unless length$string;$string =~ s/\\"/"/g;$string =~ s{\\([Nnever\\fartz0b]|x([0-9a-fA-F]{2}))} - Read an invalid UTF-8 string (maybe mixed UTF-8 and 8-bit character set). - Did you decode with lax ":utf8" instead of strict ":encoding(UTF-8)"? - ... - {(length($1)>1)?pack("H2",$2):$UNESCAPES{$1}}gex;return$string}sub _load_scalar {my ($self,$string,$indent,$lines)=@_;$string =~ s/\s*\z//;return undef if$string eq '~';if ($string =~ /^$re_capture_single_quoted$re_trailing_comment\z/){return$self->_unquote_single($1)}if ($string =~ /^$re_capture_double_quoted$re_trailing_comment\z/){return$self->_unquote_double($1)}if ($string =~ /^[\'\"!&]/){die \"CPAN::Meta::YAML does not support a feature in line '$string'"}return {}if$string =~ /^{}(?:\s+\#.*)?\z/;return []if$string =~ /^\[\](?:\s+\#.*)?\z/;if ($string !~ /^[>|]/){die \"CPAN::Meta::YAML found illegal characters in plain scalar: '$string'" if$string =~ /^(?:-(?:\s|$)|[\@\%\`])/ or $string =~ /:(?:\s|$)/;$string =~ s/\s+#.*\z//;return$string}die \"CPAN::Meta::YAML failed to find multi-line scalar content" unless @$lines;$lines->[0]=~ /^(\s*)/;$indent->[-1]=length("$1");if (defined$indent->[-2]and $indent->[-1]<= $indent->[-2]){die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"}my@multiline=();while (@$lines){$lines->[0]=~ /^(\s*)/;last unless length($1)>= $indent->[-1];push@multiline,substr(shift(@$lines),length($1))}my$j=(substr($string,0,1)eq '>')? ' ' : "\n";my$t=(substr($string,1,1)eq '-')? '' : "\n";return join($j,@multiline).$t}sub _load_array {my ($self,$array,$indent,$lines)=@_;while (@$lines){if ($lines->[0]=~ /^(?:---|\.\.\.)/){while (@$lines and $lines->[0]!~ /^---/){shift @$lines}return 1}$lines->[0]=~ /^(\s*)/;if (length($1)< $indent->[-1]){return 1}elsif (length($1)> $indent->[-1]){die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"}if ($lines->[0]=~ /^(\s*\-\s+)[^\'\"]\S*\s*:(?:\s+|$)/){my$indent2=length("$1");$lines->[0]=~ s/-/ /;push @$array,{};$self->_load_hash($array->[-1],[@$indent,$indent2 ],$lines)}elsif ($lines->[0]=~ /^\s*\-\s*\z/){shift @$lines;unless (@$lines){push @$array,undef;return 1}if ($lines->[0]=~ /^(\s*)\-/){my$indent2=length("$1");if ($indent->[-1]==$indent2){push @$array,undef}else {push @$array,[];$self->_load_array($array->[-1],[@$indent,$indent2 ],$lines)}}elsif ($lines->[0]=~ /^(\s*)\S/){push @$array,{};$self->_load_hash($array->[-1],[@$indent,length("$1")],$lines)}else {die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"}}elsif ($lines->[0]=~ /^\s*\-(\s*)(.+?)\s*\z/){shift @$lines;push @$array,$self->_load_scalar("$2",[@$indent,undef ],$lines)}elsif (defined$indent->[-2]and $indent->[-1]==$indent->[-2]){return 1}else {die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"}}return 1}sub _load_hash {my ($self,$hash,$indent,$lines)=@_;while (@$lines){if ($lines->[0]=~ /^(?:---|\.\.\.)/){while (@$lines and $lines->[0]!~ /^---/){shift @$lines}return 1}$lines->[0]=~ /^(\s*)/;if (length($1)< $indent->[-1]){return 1}elsif (length($1)> $indent->[-1]){die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"}my$key;if ($lines->[0]=~ s/^\s*$re_capture_single_quoted$re_key_value_separator//){$key=$self->_unquote_single($1)}elsif ($lines->[0]=~ s/^\s*$re_capture_double_quoted$re_key_value_separator//){$key=$self->_unquote_double($1)}elsif ($lines->[0]=~ s/^\s*$re_capture_unquoted_key$re_key_value_separator//){$key=$1;$key =~ s/\s+$//}elsif ($lines->[0]=~ /^\s*\?/){die \"CPAN::Meta::YAML does not support a feature in line '$lines->[0]'"}else {die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"}if (exists$hash->{$key}){warn "CPAN::Meta::YAML found a duplicate key '$key' in line '$lines->[0]'"}if (length$lines->[0]){$hash->{$key}=$self->_load_scalar(shift(@$lines),[@$indent,undef ],$lines)}else {shift @$lines;unless (@$lines){$hash->{$key}=undef;return 1}if ($lines->[0]=~ /^(\s*)-/){$hash->{$key}=[];$self->_load_array($hash->{$key},[@$indent,length($1)],$lines)}elsif ($lines->[0]=~ /^(\s*)./){my$indent2=length("$1");if ($indent->[-1]>= $indent2){$hash->{$key}=undef}else {$hash->{$key}={};$self->_load_hash($hash->{$key},[@$indent,length($1)],$lines)}}}}return 1}sub _dump_file {my$self=shift;require Fcntl;my$file=shift or $self->_error('You did not specify a file name');my$fh;if (_can_flock()){my$flags=Fcntl::O_WRONLY()|Fcntl::O_CREAT();sysopen($fh,$file,$flags);unless ($fh){$self->_error("Failed to open file '$file' for writing: $!")}binmode($fh,":raw:encoding(UTF-8)");flock($fh,Fcntl::LOCK_EX())or warn "Couldn't lock '$file' for reading: $!";truncate$fh,0;seek$fh,0,0}else {open$fh,">:unix:encoding(UTF-8)",$file}print {$fh}$self->_dump_string;unless (close$fh){$self->_error("Failed to close file '$file': $!")}return 1}sub _dump_string {my$self=shift;return '' unless ref$self && @$self;my$indent=0;my@lines=();eval {for my$cursor (@$self){push@lines,'---';if (!defined$cursor){}elsif (!ref$cursor){$lines[-1].= ' ' .$self->_dump_scalar($cursor)}elsif (ref$cursor eq 'ARRAY'){unless (@$cursor){$lines[-1].= ' []';next}push@lines,$self->_dump_array($cursor,$indent,{})}elsif (ref$cursor eq 'HASH'){unless (%$cursor){$lines[-1].= ' {}';next}push@lines,$self->_dump_hash($cursor,$indent,{})}else {die \("Cannot serialize " .ref($cursor))}}};if (ref $@ eq 'SCALAR'){$self->_error(${$@})}elsif ($@){$self->_error($@)}join '',map {"$_\n"}@lines}sub _has_internal_string_value {my$value=shift;my$b_obj=B::svref_2object(\$value);return$b_obj->FLAGS & B::SVf_POK()}sub _dump_scalar {my$string=$_[1];my$is_key=$_[2];my$has_string_flag=_has_internal_string_value($string);return '~' unless defined$string;return "''" unless length$string;if (Scalar::Util::looks_like_number($string)){if ($is_key || $has_string_flag){return qq['$string']}else {return$string}}if ($string =~ /[\x00-\x09\x0b-\x0d\x0e-\x1f\x7f-\x9f\'\n]/){$string =~ s/\\/\\\\/g;$string =~ s/"/\\"/g;$string =~ s/\n/\\n/g;$string =~ s/[\x85]/\\N/g;$string =~ s/([\x00-\x1f])/\\$UNPRINTABLE[ord($1)]/g;$string =~ s/([\x7f-\x9f])/'\x' . sprintf("%X",ord($1))/ge;return qq|"$string"|}if ($string =~ /(?:^[~!@#%&*|>?:,'"`{}\[\]]|^-+$|\s|:\z)/ or $QUOTE{$string}){return "'$string'"}return$string}sub _dump_array {my ($self,$array,$indent,$seen)=@_;if ($seen->{refaddr($array)}++){die \"CPAN::Meta::YAML does not support circular references"}my@lines=();for my$el (@$array){my$line=(' ' x $indent).'-';my$type=ref$el;if (!$type){$line .= ' ' .$self->_dump_scalar($el);push@lines,$line}elsif ($type eq 'ARRAY'){if (@$el){push@lines,$line;push@lines,$self->_dump_array($el,$indent + 1,$seen)}else {$line .= ' []';push@lines,$line}}elsif ($type eq 'HASH'){if (keys %$el){push@lines,$line;push@lines,$self->_dump_hash($el,$indent + 1,$seen)}else {$line .= ' {}';push@lines,$line}}else {die \"CPAN::Meta::YAML does not support $type references"}}@lines}sub _dump_hash {my ($self,$hash,$indent,$seen)=@_;if ($seen->{refaddr($hash)}++){die \"CPAN::Meta::YAML does not support circular references"}my@lines=();for my$name (sort keys %$hash){my$el=$hash->{$name};my$line=(' ' x $indent).$self->_dump_scalar($name,1).":";my$type=ref$el;if (!$type){$line .= ' ' .$self->_dump_scalar($el);push@lines,$line}elsif ($type eq 'ARRAY'){if (@$el){push@lines,$line;push@lines,$self->_dump_array($el,$indent + 1,$seen)}else {$line .= ' []';push@lines,$line}}elsif ($type eq 'HASH'){if (keys %$el){push@lines,$line;push@lines,$self->_dump_hash($el,$indent + 1,$seen)}else {$line .= ' {}';push@lines,$line}}else {die \"CPAN::Meta::YAML does not support $type references"}}@lines}our$errstr='';sub _error {require Carp;$errstr=$_[1];$errstr =~ s/ at \S+ line \d+.*//;Carp::croak($errstr)}my$errstr_warned;sub errstr {require Carp;Carp::carp("CPAN::Meta::YAML->errstr and \$CPAN::Meta::YAML::errstr is deprecated")unless$errstr_warned++;$errstr}use B;my$HAS_FLOCK;sub _can_flock {if (defined$HAS_FLOCK){return$HAS_FLOCK}else {require Config;my$c=\%Config::Config;$HAS_FLOCK=grep {$c->{$_}}qw/d_flock d_fcntl_can_lock d_lockf/;require Fcntl if$HAS_FLOCK;return$HAS_FLOCK}}use Scalar::Util ();BEGIN {local $@;if (eval {Scalar::Util->VERSION(1.18)}){*refaddr=*Scalar::Util::refaddr}else {eval <<'END_PERL'}}delete$CPAN::Meta::YAML::{refaddr};1; - # Scalar::Util failed to load or too old - sub refaddr { - my $pkg = ref($_[0]) or return undef; - if ( !! UNIVERSAL::can($_[0], 'can') ) { - bless $_[0], 'Scalar::Util::Fake'; - } else { - $pkg = undef; - } - "$_[0]" =~ /0x(\w+)/; - my $i = do { no warnings 'portable'; hex $1 }; - bless $_[0], $pkg if defined $pkg; - $i; - } - END_PERL -CPAN_META_YAML - -$fatpacked{"Exporter.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXPORTER'; - package Exporter;require 5.006;our$Debug=0;our$ExportLevel=0;our$Verbose ||=0;our$VERSION='5.70';our (%Cache);sub as_heavy {require Exporter::Heavy;my$c=(caller(1))[3];$c =~ s/.*:://;\&{"Exporter::Heavy::heavy_$c"}}sub export {goto &{as_heavy()}}sub import {my$pkg=shift;my$callpkg=caller($ExportLevel);if ($pkg eq "Exporter" and @_ and $_[0]eq "import"){*{$callpkg."::import"}=\&import;return}my$exports=\@{"$pkg\::EXPORT"};my$fail=${$pkg .'::'}{EXPORT_FAIL}&& \@{"$pkg\::EXPORT_FAIL"};return export$pkg,$callpkg,@_ if$Verbose or $Debug or $fail && @$fail > 1;my$export_cache=($Cache{$pkg}||={});my$args=@_ or @_=@$exports;if ($args and not %$export_cache){s/^&//,$export_cache->{$_}=1 foreach (@$exports,@{"$pkg\::EXPORT_OK"})}my$heavy;if ($args or $fail){($heavy=(/\W/ or $args and not exists$export_cache->{$_}or $fail and @$fail and $_ eq $fail->[0]))and last foreach (@_)}else {($heavy=/\W/)and last foreach (@_)}return export$pkg,$callpkg,($args ? @_ : ())if$heavy;local$SIG{__WARN__}=sub {require Carp;&Carp::carp}if not $SIG{__WARN__};*{"$callpkg\::$_"}=\&{"$pkg\::$_"}foreach @_}sub export_fail {my$self=shift;@_}sub export_to_level {goto &{as_heavy()}}sub export_tags {goto &{as_heavy()}}sub export_ok_tags {goto &{as_heavy()}}sub require_version {goto &{as_heavy()}}1; -EXPORTER - -$fatpacked{"Exporter/Heavy.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXPORTER_HEAVY'; - package Exporter::Heavy;use strict;no strict 'refs';require Exporter;our$VERSION=$Exporter::VERSION;sub _rebuild_cache {my ($pkg,$exports,$cache)=@_;s/^&// foreach @$exports;@{$cache}{@$exports}=(1)x @$exports;my$ok=\@{"${pkg}::EXPORT_OK"};if (@$ok){s/^&// foreach @$ok;@{$cache}{@$ok}=(1)x @$ok}}sub heavy_export {my$oldwarn=$SIG{__WARN__};local$SIG{__WARN__}=sub {local$SIG{__WARN__}=$oldwarn;my$text=shift;if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//){require Carp;local$Carp::CarpLevel=1;Carp::carp($text)}else {warn$text}};local$SIG{__DIE__}=sub {require Carp;local$Carp::CarpLevel=1;Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")if $_[0]=~ /^Unable to create sub named "(.*?)::"/};my($pkg,$callpkg,@imports)=@_;my($type,$sym,$cache_is_current,$oops);my($exports,$export_cache)=(\@{"${pkg}::EXPORT"},$Exporter::Cache{$pkg}||={});if (@imports){if (!%$export_cache){_rebuild_cache ($pkg,$exports,$export_cache);$cache_is_current=1}if (grep m{^[/!:]},@imports){my$tagsref=\%{"${pkg}::EXPORT_TAGS"};my$tagdata;my%imports;my($remove,$spec,@names,@allexports);unshift@imports,':DEFAULT' if$imports[0]=~ m/^!/;for$spec (@imports){$remove=$spec =~ s/^!//;if ($spec =~ s/^://){if ($spec eq 'DEFAULT'){@names=@$exports}elsif ($tagdata=$tagsref->{$spec}){@names=@$tagdata}else {warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];++$oops;next}}elsif ($spec =~ m:^/(.*)/$:){my$patn=$1;@allexports=keys %$export_cache unless@allexports;@names=grep(/$patn/,@allexports)}else {@names=($spec)}warn "Import ".($remove ? "del":"add").": @names " if$Exporter::Verbose;if ($remove){for$sym (@names){delete$imports{$sym}}}else {@imports{@names}=(1)x @names}}@imports=keys%imports}my@carp;for$sym (@imports){if (!$export_cache->{$sym}){if ($sym =~ m/^\d/){$pkg->VERSION($sym);if (@imports==1){@imports=@$exports;last}if (@imports==2 and!$imports[1]){@imports=();last}}elsif ($sym !~ s/^&// ||!$export_cache->{$sym}){unless ($cache_is_current){%$export_cache=();_rebuild_cache ($pkg,$exports,$export_cache);$cache_is_current=1}if (!$export_cache->{$sym}){push@carp,qq["$sym" is not exported by the $pkg module\n];$oops++}}}}if ($oops){require Carp;Carp::croak("@{carp}Can't continue after import errors")}}else {@imports=@$exports}my($fail,$fail_cache)=(\@{"${pkg}::EXPORT_FAIL"},$Exporter::FailCache{$pkg}||={});if (@$fail){if (!%$fail_cache){my@expanded=map {/^\w/ ? ($_,'&'.$_): $_}@$fail;warn "${pkg}::EXPORT_FAIL cached: @expanded" if$Exporter::Verbose;@{$fail_cache}{@expanded}=(1)x @expanded}my@failed;for$sym (@imports){push(@failed,$sym)if$fail_cache->{$sym}}if (@failed){@failed=$pkg->export_fail(@failed);for$sym (@failed){require Carp;Carp::carp(qq["$sym" is not implemented by the $pkg module ],"on this architecture")}if (@failed){require Carp;Carp::croak("Can't continue after import errors")}}}warn "Importing into $callpkg from $pkg: ",join(", ",sort@imports)if$Exporter::Verbose;for$sym (@imports){(*{"${callpkg}::$sym"}=\&{"${pkg}::$sym"},next)unless$sym =~ s/^(\W)//;$type=$1;no warnings 'once';*{"${callpkg}::$sym"}=$type eq '&' ? \&{"${pkg}::$sym"}: $type eq '$' ? \${"${pkg}::$sym"}: $type eq '@' ? \@{"${pkg}::$sym"}: $type eq '%' ? \%{"${pkg}::$sym"}: $type eq '*' ? *{"${pkg}::$sym"}: do {require Carp;Carp::croak("Can't export symbol: $type$sym")}}}sub heavy_export_to_level {my$pkg=shift;my$level=shift;(undef)=shift;my$callpkg=caller($level);$pkg->export($callpkg,@_)}sub _push_tags {my($pkg,$var,$syms)=@_;my@nontag=();my$export_tags=\%{"${pkg}::EXPORT_TAGS"};push(@{"${pkg}::$var"},map {$export_tags->{$_}? @{$export_tags->{$_}}: scalar(push(@nontag,$_),$_)}(@$syms)? @$syms : keys %$export_tags);if (@nontag and $^W){require Carp;Carp::carp(join(", ",@nontag)." are not tags of $pkg")}}sub heavy_require_version {my($self,$wanted)=@_;my$pkg=ref$self || $self;return ${pkg}->VERSION($wanted)}sub heavy_export_tags {_push_tags((caller)[0],"EXPORT",\@_)}sub heavy_export_ok_tags {_push_tags((caller)[0],"EXPORT_OK",\@_)}1; -EXPORTER_HEAVY - -$fatpacked{"File/pushd.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_PUSHD'; - use strict;use warnings;package File::pushd;our$VERSION='1.009';our@EXPORT=qw(pushd tempd);our@ISA=qw(Exporter);use Exporter;use Carp;use Cwd qw(getcwd abs_path);use File::Path qw(rmtree);use File::Temp qw();use File::Spec;use overload q{""}=>sub {File::Spec->canonpath($_[0]->{_pushd})},fallback=>1;sub pushd {my ($target_dir,$options)=@_;$options->{untaint_pattern}||= qr{^([-+@\w./]+)$};$target_dir="." unless defined$target_dir;croak "Can't locate directory $target_dir" unless -d $target_dir;my$tainted_orig=getcwd;my$orig;if ($tainted_orig =~ $options->{untaint_pattern}){$orig=$1}else {$orig=$tainted_orig}my$tainted_dest;eval {$tainted_dest=$target_dir ? abs_path($target_dir): $orig};croak "Can't locate absolute path for $target_dir: $@" if $@;my$dest;if ($tainted_dest =~ $options->{untaint_pattern}){$dest=$1}else {$dest=$tainted_dest}if ($dest ne $orig){chdir$dest or croak "Can't chdir to $dest\: $!"}my$self=bless {_pushd=>$dest,_original=>$orig },__PACKAGE__;return$self}sub tempd {my ($options)=@_;my$dir;eval {$dir=pushd(File::Temp::tempdir(CLEANUP=>0),$options)};croak $@ if $@;$dir->{_tempd}=1;return$dir}sub preserve {my$self=shift;return 1 if!$self->{"_tempd"};if (@_==0){return$self->{_preserve}=1}else {return$self->{_preserve}=$_[0]? 1 : 0}}sub DESTROY {my ($self)=@_;my$orig=$self->{_original};chdir$orig if$orig;if ($self->{_tempd}&&!$self->{_preserve}){my$err=do {local $@;eval {rmtree($self->{_pushd})};$@};carp$err if$err}}1; -FILE_PUSHD - -$fatpacked{"HTTP/Tiny.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'HTTP_TINY'; - package HTTP::Tiny;use strict;use warnings;our$VERSION='0.056';use Carp ();my@attributes;BEGIN {@attributes=qw(cookie_jar default_headers http_proxy https_proxy keep_alive local_address max_redirect max_size proxy no_proxy timeout SSL_options verify_SSL);my%persist_ok=map {;$_=>1}qw(cookie_jar default_headers max_redirect max_size);no strict 'refs';no warnings 'uninitialized';for my$accessor (@attributes){*{$accessor}=sub {@_ > 1 ? do {delete $_[0]->{handle}if!$persist_ok{$accessor}&& $_[1]ne $_[0]->{$accessor};$_[0]->{$accessor}=$_[1]}: $_[0]->{$accessor}}}}sub agent {my($self,$agent)=@_;if(@_ > 1){$self->{agent}=(defined$agent && $agent =~ / $/)? $agent .$self->_agent : $agent}return$self->{agent}}sub new {my($class,%args)=@_;my$self={max_redirect=>5,timeout=>60,keep_alive=>1,verify_SSL=>$args{verify_SSL}|| $args{verify_ssl}|| 0,no_proxy=>$ENV{no_proxy},};bless$self,$class;$class->_validate_cookie_jar($args{cookie_jar})if$args{cookie_jar};for my$key (@attributes){$self->{$key}=$args{$key}if exists$args{$key}}$self->agent(exists$args{agent}? $args{agent}: $class->_agent);$self->_set_proxies;return$self}sub _set_proxies {my ($self)=@_;if (!exists$self->{proxy}){$self->{proxy}=$ENV{all_proxy}|| $ENV{ALL_PROXY}}if (defined$self->{proxy}){$self->_split_proxy('generic proxy'=>$self->{proxy})}else {delete$self->{proxy}}if (!exists$self->{http_proxy}){local$ENV{HTTP_PROXY}if$ENV{REQUEST_METHOD};$self->{http_proxy}=$ENV{http_proxy}|| $ENV{HTTP_PROXY}|| $self->{proxy}}if (defined$self->{http_proxy}){$self->_split_proxy(http_proxy=>$self->{http_proxy});$self->{_has_proxy}{http}=1}else {delete$self->{http_proxy}}if (!exists$self->{https_proxy}){$self->{https_proxy}=$ENV{https_proxy}|| $ENV{HTTPS_PROXY}|| $self->{proxy}}if ($self->{https_proxy}){$self->_split_proxy(https_proxy=>$self->{https_proxy});$self->{_has_proxy}{https}=1}else {delete$self->{https_proxy}}unless (ref$self->{no_proxy}eq 'ARRAY'){$self->{no_proxy}=(defined$self->{no_proxy})? [split /\s*,\s*/,$self->{no_proxy}]: []}return}for my$sub_name (qw/get head put post delete/){my$req_method=uc$sub_name;no strict 'refs';eval <<"HERE"}sub post_form {my ($self,$url,$data,$args)=@_;(@_==3 || @_==4 && ref$args eq 'HASH')or Carp::croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ ."\n");my$headers={};while (my ($key,$value)=each %{$args->{headers}|| {}}){$headers->{lc$key}=$value}delete$args->{headers};return$self->request('POST',$url,{%$args,content=>$self->www_form_urlencode($data),headers=>{%$headers,'content-type'=>'application/x-www-form-urlencoded' },})}sub mirror {my ($self,$url,$file,$args)=@_;@_==3 || (@_==4 && ref$args eq 'HASH')or Carp::croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ ."\n");if (-e $file and my$mtime=(stat($file))[9]){$args->{headers}{'if-modified-since'}||= $self->_http_date($mtime)}my$tempfile=$file .int(rand(2**31));require Fcntl;sysopen my$fh,$tempfile,Fcntl::O_CREAT()|Fcntl::O_EXCL()|Fcntl::O_WRONLY()or Carp::croak(qq/Error: Could not create temporary file $tempfile for downloading: $!\n/);binmode$fh;$args->{data_callback}=sub {print {$fh}$_[0]};my$response=$self->request('GET',$url,$args);close$fh or Carp::croak(qq/Error: Caught error closing temporary file $tempfile: $!\n/);if ($response->{success}){rename$tempfile,$file or Carp::croak(qq/Error replacing $file with $tempfile: $!\n/);my$lm=$response->{headers}{'last-modified'};if ($lm and my$mtime=$self->_parse_http_date($lm)){utime$mtime,$mtime,$file}}$response->{success}||= $response->{status}eq '304';unlink$tempfile;return$response}my%idempotent=map {$_=>1}qw/GET HEAD PUT DELETE OPTIONS TRACE/;sub request {my ($self,$method,$url,$args)=@_;@_==3 || (@_==4 && ref$args eq 'HASH')or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ ."\n");$args ||= {};my$response;for (0 .. 1){$response=eval {$self->_request($method,$url,$args)};last unless $@ && $idempotent{$method}&& $@ =~ m{^(?:Socket closed|Unexpected end)}}if (my$e=$@){if (ref$e eq 'HASH' && exists$e->{status}){return$e}$e="$e";$response={url=>$url,success=>q{},status=>599,reason=>'Internal Exception',content=>$e,headers=>{'content-type'=>'text/plain','content-length'=>length$e,}}}return$response}sub www_form_urlencode {my ($self,$data)=@_;(@_==2 && ref$data)or Carp::croak(q/Usage: $http->www_form_urlencode(DATAREF)/ ."\n");(ref$data eq 'HASH' || ref$data eq 'ARRAY')or Carp::croak("form data must be a hash or array reference\n");my@params=ref$data eq 'HASH' ? %$data : @$data;@params % 2==0 or Carp::croak("form data reference must have an even number of terms\n");my@terms;while(@params){my ($key,$value)=splice(@params,0,2);if (ref$value eq 'ARRAY'){unshift@params,map {$key=>$_}@$value}else {push@terms,join("=",map {$self->_uri_escape($_)}$key,$value)}}return join("&",(ref$data eq 'ARRAY')? (@terms): (sort@terms))}sub can_ssl {my ($self)=@_;my($ok,$reason)=(1,'');unless (eval {require IO::Socket::SSL;IO::Socket::SSL->VERSION(1.42)}){$ok=0;$reason .= qq/IO::Socket::SSL 1.42 must be installed for https support\n/}unless (eval {require Net::SSLeay;Net::SSLeay->VERSION(1.49)}){$ok=0;$reason .= qq/Net::SSLeay 1.49 must be installed for https support\n/}if (ref($self)&& ($self->{verify_SSL}|| $self->{SSL_options}{SSL_verify_mode})){my$handle=HTTP::Tiny::Handle->new(SSL_options=>$self->{SSL_options},verify_SSL=>$self->{verify_SSL},);unless (eval {$handle->_find_CA_file;1}){$ok=0;$reason .= "$@"}}wantarray ? ($ok,$reason): $ok}my%DefaultPort=(http=>80,https=>443,);sub _agent {my$class=ref($_[0])|| $_[0];(my$default_agent=$class)=~ s{::}{-}g;return$default_agent ."/" .$class->VERSION}sub _request {my ($self,$method,$url,$args)=@_;my ($scheme,$host,$port,$path_query,$auth)=$self->_split_url($url);my$request={method=>$method,scheme=>$scheme,host=>$host,port=>$port,host_port=>($port==$DefaultPort{$scheme}? $host : "$host:$port"),uri=>$path_query,headers=>{},};my$handle=delete$self->{handle};if ($handle){unless ($handle->can_reuse($scheme,$host,$port)){$handle->close;undef$handle}}$handle ||= $self->_open_handle($request,$scheme,$host,$port);$self->_prepare_headers_and_cb($request,$args,$url,$auth);$handle->write_request($request);my$response;do {$response=$handle->read_response_header}until (substr($response->{status},0,1)ne '1');$self->_update_cookie_jar($url,$response)if$self->{cookie_jar};if (my@redir_args=$self->_maybe_redirect($request,$response,$args)){$handle->close;return$self->_request(@redir_args,$args)}my$known_message_length;if ($method eq 'HEAD' || $response->{status}=~ /^[23]04/){$known_message_length=1}else {my$data_cb=$self->_prepare_data_cb($response,$args);$known_message_length=$handle->read_body($data_cb,$response)}if ($self->{keep_alive}&& $known_message_length && $response->{protocol}eq 'HTTP/1.1' && ($response->{headers}{connection}|| '')ne 'close'){$self->{handle}=$handle}else {$handle->close}$response->{success}=substr($response->{status},0,1)eq '2';$response->{url}=$url;return$response}sub _open_handle {my ($self,$request,$scheme,$host,$port)=@_;my$handle=HTTP::Tiny::Handle->new(timeout=>$self->{timeout},SSL_options=>$self->{SSL_options},verify_SSL=>$self->{verify_SSL},local_address=>$self->{local_address},keep_alive=>$self->{keep_alive});if ($self->{_has_proxy}{$scheme}&&!grep {$host =~ /\Q$_\E$/}@{$self->{no_proxy}}){return$self->_proxy_connect($request,$handle)}else {return$handle->connect($scheme,$host,$port)}}sub _proxy_connect {my ($self,$request,$handle)=@_;my@proxy_vars;if ($request->{scheme}eq 'https'){Carp::croak(qq{No https_proxy defined})unless$self->{https_proxy};@proxy_vars=$self->_split_proxy(https_proxy=>$self->{https_proxy});if ($proxy_vars[0]eq 'https'){Carp::croak(qq{Can't proxy https over https: $request->{uri} via $self->{https_proxy}})}}else {Carp::croak(qq{No http_proxy defined})unless$self->{http_proxy};@proxy_vars=$self->_split_proxy(http_proxy=>$self->{http_proxy})}my ($p_scheme,$p_host,$p_port,$p_auth)=@proxy_vars;if (length$p_auth &&!defined$request->{headers}{'proxy-authorization'}){$self->_add_basic_auth_header($request,'proxy-authorization'=>$p_auth)}$handle->connect($p_scheme,$p_host,$p_port);if ($request->{scheme}eq 'https'){$self->_create_proxy_tunnel($request,$handle)}else {$request->{uri}="$request->{scheme}://$request->{host_port}$request->{uri}"}return$handle}sub _split_proxy {my ($self,$type,$proxy)=@_;my ($scheme,$host,$port,$path_query,$auth)=eval {$self->_split_url($proxy)};unless(defined($scheme)&& length($scheme)&& length($host)&& length($port)&& $path_query eq '/'){Carp::croak(qq{$type URL must be in format http[s]://[auth@]:/\n})}return ($scheme,$host,$port,$auth)}sub _create_proxy_tunnel {my ($self,$request,$handle)=@_;$handle->_assert_ssl;my$agent=exists($request->{headers}{'user-agent'})? $request->{headers}{'user-agent'}: $self->{agent};my$connect_request={method=>'CONNECT',uri=>"$request->{host}:$request->{port}",headers=>{host=>"$request->{host}:$request->{port}",'user-agent'=>$agent,}};if ($request->{headers}{'proxy-authorization'}){$connect_request->{headers}{'proxy-authorization'}=delete$request->{headers}{'proxy-authorization'}}$handle->write_request($connect_request);my$response;do {$response=$handle->read_response_header}until (substr($response->{status},0,1)ne '1');unless (substr($response->{status},0,1)eq '2'){die$response}$handle->start_ssl($request->{host});return}sub _prepare_headers_and_cb {my ($self,$request,$args,$url,$auth)=@_;for ($self->{default_headers},$args->{headers}){next unless defined;while (my ($k,$v)=each %$_){$request->{headers}{lc$k}=$v}}if (exists$request->{headers}{'host'}){die(qq/The 'Host' header must not be provided as header option\n/)}$request->{headers}{'host'}=$request->{host_port};$request->{headers}{'user-agent'}||= $self->{agent};$request->{headers}{'connection'}="close" unless$self->{keep_alive};if (defined$args->{content}){if (ref$args->{content}eq 'CODE'){$request->{headers}{'content-type'}||= "application/octet-stream";$request->{headers}{'transfer-encoding'}='chunked' unless$request->{headers}{'content-length'}|| $request->{headers}{'transfer-encoding'};$request->{cb}=$args->{content}}elsif (length$args->{content}){my$content=$args->{content};if ($] ge '5.008'){utf8::downgrade($content,1)or die(qq/Wide character in request message body\n/)}$request->{headers}{'content-type'}||= "application/octet-stream";$request->{headers}{'content-length'}=length$content unless$request->{headers}{'content-length'}|| $request->{headers}{'transfer-encoding'};$request->{cb}=sub {substr$content,0,length$content,''}}$request->{trailer_cb}=$args->{trailer_callback}if ref$args->{trailer_callback}eq 'CODE'}if ($self->{cookie_jar}){my$cookies=$self->cookie_jar->cookie_header($url);$request->{headers}{cookie}=$cookies if length$cookies}if (length$auth &&!defined$request->{headers}{authorization}){$self->_add_basic_auth_header($request,'authorization'=>$auth)}return}sub _add_basic_auth_header {my ($self,$request,$header,$auth)=@_;require MIME::Base64;$request->{headers}{$header}="Basic " .MIME::Base64::encode_base64($auth,"");return}sub _prepare_data_cb {my ($self,$response,$args)=@_;my$data_cb=$args->{data_callback};$response->{content}='';if (!$data_cb || $response->{status}!~ /^2/){if (defined$self->{max_size}){$data_cb=sub {$_[1]->{content}.= $_[0];die(qq/Size of response body exceeds the maximum allowed of $self->{max_size}\n/)if length $_[1]->{content}> $self->{max_size}}}else {$data_cb=sub {$_[1]->{content}.= $_[0]}}}return$data_cb}sub _update_cookie_jar {my ($self,$url,$response)=@_;my$cookies=$response->{headers}->{'set-cookie'};return unless defined$cookies;my@cookies=ref$cookies ? @$cookies : $cookies;$self->cookie_jar->add($url,$_)for@cookies;return}sub _validate_cookie_jar {my ($class,$jar)=@_;for my$method (qw/add cookie_header/){Carp::croak(qq/Cookie jar must provide the '$method' method\n/)unless ref($jar)&& ref($jar)->can($method)}return}sub _maybe_redirect {my ($self,$request,$response,$args)=@_;my$headers=$response->{headers};my ($status,$method)=($response->{status},$request->{method});if (($status eq '303' or ($status =~ /^30[1278]/ && $method =~ /^GET|HEAD$/))and $headers->{location}and ++$args->{redirects}<= $self->{max_redirect}){my$location=($headers->{location}=~ /^\//)? "$request->{scheme}://$request->{host_port}$headers->{location}" : $headers->{location};return (($status eq '303' ? 'GET' : $method),$location)}return}sub _split_url {my$url=pop;my ($scheme,$host,$path_query)=$url =~ m<\A([^:/?#]+)://([^/?#]*)([^#]*)> or die(qq/Cannot parse URL: '$url'\n/);$scheme=lc$scheme;$path_query="/$path_query" unless$path_query =~ m<\A/>;my$auth='';if ((my$i=index$host,'@')!=-1){$auth=substr$host,0,$i,'';substr$host,0,1,'';$auth =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg}my$port=$host =~ s/:(\d*)\z// && length $1 ? $1 : $scheme eq 'http' ? 80 : $scheme eq 'https' ? 443 : undef;return ($scheme,(length$host ? lc$host : "localhost"),$port,$path_query,$auth)}my$DoW="Sun|Mon|Tue|Wed|Thu|Fri|Sat";my$MoY="Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec";sub _http_date {my ($sec,$min,$hour,$mday,$mon,$year,$wday)=gmtime($_[1]);return sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT",substr($DoW,$wday*4,3),$mday,substr($MoY,$mon*4,3),$year+1900,$hour,$min,$sec)}sub _parse_http_date {my ($self,$str)=@_;require Time::Local;my@tl_parts;if ($str =~ /^[SMTWF][a-z]+, +(\d{1,2}) ($MoY) +(\d\d\d\d) +(\d\d):(\d\d):(\d\d) +GMT$/){@tl_parts=($6,$5,$4,$1,(index($MoY,$2)/4),$3)}elsif ($str =~ /^[SMTWF][a-z]+, +(\d\d)-($MoY)-(\d{2,4}) +(\d\d):(\d\d):(\d\d) +GMT$/){@tl_parts=($6,$5,$4,$1,(index($MoY,$2)/4),$3)}elsif ($str =~ /^[SMTWF][a-z]+ +($MoY) +(\d{1,2}) +(\d\d):(\d\d):(\d\d) +(?:[^0-9]+ +)?(\d\d\d\d)$/){@tl_parts=($5,$4,$3,$2,(index($MoY,$1)/4),$6)}return eval {my$t=@tl_parts ? Time::Local::timegm(@tl_parts): -1;$t < 0 ? undef : $t}}my%escapes=map {chr($_)=>sprintf("%%%02X",$_)}0..255;$escapes{' '}="+";my$unsafe_char=qr/[^A-Za-z0-9\-\._~]/;sub _uri_escape {my ($self,$str)=@_;if ($] ge '5.008'){utf8::encode($str)}else {$str=pack("U*",unpack("C*",$str))if (length$str==do {use bytes;length$str});$str=pack("C*",unpack("C*",$str))}$str =~ s/($unsafe_char)/$escapes{$1}/ge;return$str}package HTTP::Tiny::Handle;use strict;use warnings;use Errno qw[EINTR EPIPE];use IO::Socket qw[SOCK_STREAM];my$SOCKET_CLASS=$ENV{PERL_HTTP_TINY_IPV4_ONLY}? 'IO::Socket::INET' : eval {require IO::Socket::IP;IO::Socket::IP->VERSION(0.25)}? 'IO::Socket::IP' : 'IO::Socket::INET';sub BUFSIZE () {32768}my$Printable=sub {local $_=shift;s/\r/\\r/g;s/\n/\\n/g;s/\t/\\t/g;s/([^\x20-\x7E])/sprintf('\\x%.2X', ord($1))/ge;$_};my$Token=qr/[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/;sub new {my ($class,%args)=@_;return bless {rbuf=>'',timeout=>60,max_line_size=>16384,max_header_lines=>64,verify_SSL=>0,SSL_options=>{},%args },$class}sub connect {@_==4 || die(q/Usage: $handle->connect(scheme, host, port)/ ."\n");my ($self,$scheme,$host,$port)=@_;if ($scheme eq 'https'){$self->_assert_ssl}elsif ($scheme ne 'http'){die(qq/Unsupported URL scheme '$scheme'\n/)}$self->{fh}=$SOCKET_CLASS->new(PeerHost=>$host,PeerPort=>$port,$self->{local_address}? (LocalAddr=>$self->{local_address}): (),Proto=>'tcp',Type=>SOCK_STREAM,Timeout=>$self->{timeout},KeepAlive=>!!$self->{keep_alive})or die(qq/Could not connect to '$host:$port': $@\n/);binmode($self->{fh})or die(qq/Could not binmode() socket: '$!'\n/);$self->start_ssl($host)if$scheme eq 'https';$self->{scheme}=$scheme;$self->{host}=$host;$self->{port}=$port;$self->{pid}=$$;$self->{tid}=_get_tid();return$self}sub start_ssl {my ($self,$host)=@_;if (ref($self->{fh})eq 'IO::Socket::SSL'){unless ($self->{fh}->stop_SSL){my$ssl_err=IO::Socket::SSL->errstr;die(qq/Error halting prior SSL connection: $ssl_err/)}}my$ssl_args=$self->_ssl_args($host);IO::Socket::SSL->start_SSL($self->{fh},%$ssl_args,SSL_create_ctx_callback=>sub {my$ctx=shift;Net::SSLeay::CTX_set_mode($ctx,Net::SSLeay::MODE_AUTO_RETRY())},);unless (ref($self->{fh})eq 'IO::Socket::SSL'){my$ssl_err=IO::Socket::SSL->errstr;die(qq/SSL connection failed for $host: $ssl_err\n/)}}sub close {@_==1 || die(q/Usage: $handle->close()/ ."\n");my ($self)=@_;CORE::close($self->{fh})or die(qq/Could not close socket: '$!'\n/)}sub write {@_==2 || die(q/Usage: $handle->write(buf)/ ."\n");my ($self,$buf)=@_;if ($] ge '5.008'){utf8::downgrade($buf,1)or die(qq/Wide character in write()\n/)}my$len=length$buf;my$off=0;local$SIG{PIPE}='IGNORE';while (){$self->can_write or die(qq/Timed out while waiting for socket to become ready for writing\n/);my$r=syswrite($self->{fh},$buf,$len,$off);if (defined$r){$len -= $r;$off += $r;last unless$len > 0}elsif ($!==EPIPE){die(qq/Socket closed by remote server: $!\n/)}elsif ($!!=EINTR){if ($self->{fh}->can('errstr')){my$err=$self->{fh}->errstr();die (qq/Could not write to SSL socket: '$err'\n /)}else {die(qq/Could not write to socket: '$!'\n/)}}}return$off}sub read {@_==2 || @_==3 || die(q/Usage: $handle->read(len [, allow_partial])/ ."\n");my ($self,$len,$allow_partial)=@_;my$buf='';my$got=length$self->{rbuf};if ($got){my$take=($got < $len)? $got : $len;$buf=substr($self->{rbuf},0,$take,'');$len -= $take}while ($len > 0){$self->can_read or die(q/Timed out while waiting for socket to become ready for reading/ ."\n");my$r=sysread($self->{fh},$buf,$len,length$buf);if (defined$r){last unless$r;$len -= $r}elsif ($!!=EINTR){if ($self->{fh}->can('errstr')){my$err=$self->{fh}->errstr();die (qq/Could not read from SSL socket: '$err'\n /)}else {die(qq/Could not read from socket: '$!'\n/)}}}if ($len &&!$allow_partial){die(qq/Unexpected end of stream\n/)}return$buf}sub readline {@_==1 || die(q/Usage: $handle->readline()/ ."\n");my ($self)=@_;while (){if ($self->{rbuf}=~ s/\A ([^\x0D\x0A]* \x0D?\x0A)//x){return $1}if (length$self->{rbuf}>= $self->{max_line_size}){die(qq/Line size exceeds the maximum allowed size of $self->{max_line_size}\n/)}$self->can_read or die(qq/Timed out while waiting for socket to become ready for reading\n/);my$r=sysread($self->{fh},$self->{rbuf},BUFSIZE,length$self->{rbuf});if (defined$r){last unless$r}elsif ($!!=EINTR){if ($self->{fh}->can('errstr')){my$err=$self->{fh}->errstr();die (qq/Could not read from SSL socket: '$err'\n /)}else {die(qq/Could not read from socket: '$!'\n/)}}}die(qq/Unexpected end of stream while looking for line\n/)}sub read_header_lines {@_==1 || @_==2 || die(q/Usage: $handle->read_header_lines([headers])/ ."\n");my ($self,$headers)=@_;$headers ||= {};my$lines=0;my$val;while (){my$line=$self->readline;if (++$lines >= $self->{max_header_lines}){die(qq/Header lines exceeds maximum number allowed of $self->{max_header_lines}\n/)}elsif ($line =~ /\A ([^\x00-\x1F\x7F:]+) : [\x09\x20]* ([^\x0D\x0A]*)/x){my ($field_name)=lc $1;if (exists$headers->{$field_name}){for ($headers->{$field_name}){$_=[$_]unless ref $_ eq "ARRAY";push @$_,$2;$val=\$_->[-1]}}else {$val=\($headers->{$field_name}=$2)}}elsif ($line =~ /\A [\x09\x20]+ ([^\x0D\x0A]*)/x){$val or die(qq/Unexpected header continuation line\n/);next unless length $1;$$val .= ' ' if length $$val;$$val .= $1}elsif ($line =~ /\A \x0D?\x0A \z/x){last}else {die(q/Malformed header line: / .$Printable->($line)."\n")}}return$headers}sub write_request {@_==2 || die(q/Usage: $handle->write_request(request)/ ."\n");my($self,$request)=@_;$self->write_request_header(@{$request}{qw/method uri headers/});$self->write_body($request)if$request->{cb};return}my%HeaderCase=('content-md5'=>'Content-MD5','etag'=>'ETag','te'=>'TE','www-authenticate'=>'WWW-Authenticate','x-xss-protection'=>'X-XSS-Protection',);sub write_header_lines {(@_==2 || @_==3 && ref $_[1]eq 'HASH')|| die(q/Usage: $handle->write_header_lines(headers[,prefix])/ ."\n");my($self,$headers,$prefix_data)=@_;my$buf=(defined$prefix_data ? $prefix_data : '');while (my ($k,$v)=each %$headers){my$field_name=lc$k;if (exists$HeaderCase{$field_name}){$field_name=$HeaderCase{$field_name}}else {$field_name =~ /\A $Token+ \z/xo or die(q/Invalid HTTP header field name: / .$Printable->($field_name)."\n");$field_name =~ s/\b(\w)/\u$1/g;$HeaderCase{lc$field_name}=$field_name}for (ref$v eq 'ARRAY' ? @$v : $v){$_='' unless defined $_;$buf .= "$field_name: $_\x0D\x0A"}}$buf .= "\x0D\x0A";return$self->write($buf)}sub read_body {@_==3 || die(q/Usage: $handle->read_body(callback, response)/ ."\n");my ($self,$cb,$response)=@_;my$te=$response->{headers}{'transfer-encoding'}|| '';my$chunked=grep {/chunked/i}(ref$te eq 'ARRAY' ? @$te : $te);return$chunked ? $self->read_chunked_body($cb,$response): $self->read_content_body($cb,$response)}sub write_body {@_==2 || die(q/Usage: $handle->write_body(request)/ ."\n");my ($self,$request)=@_;if ($request->{headers}{'content-length'}){return$self->write_content_body($request)}else {return$self->write_chunked_body($request)}}sub read_content_body {@_==3 || @_==4 || die(q/Usage: $handle->read_content_body(callback, response, [read_length])/ ."\n");my ($self,$cb,$response,$content_length)=@_;$content_length ||= $response->{headers}{'content-length'};if (defined$content_length){my$len=$content_length;while ($len > 0){my$read=($len > BUFSIZE)? BUFSIZE : $len;$cb->($self->read($read,0),$response);$len -= $read}return length($self->{rbuf})==0}my$chunk;$cb->($chunk,$response)while length($chunk=$self->read(BUFSIZE,1));return}sub write_content_body {@_==2 || die(q/Usage: $handle->write_content_body(request)/ ."\n");my ($self,$request)=@_;my ($len,$content_length)=(0,$request->{headers}{'content-length'});while (){my$data=$request->{cb}->();defined$data && length$data or last;if ($] ge '5.008'){utf8::downgrade($data,1)or die(qq/Wide character in write_content()\n/)}$len += $self->write($data)}$len==$content_length or die(qq/Content-Length mismatch (got: $len expected: $content_length)\n/);return$len}sub read_chunked_body {@_==3 || die(q/Usage: $handle->read_chunked_body(callback, $response)/ ."\n");my ($self,$cb,$response)=@_;while (){my$head=$self->readline;$head =~ /\A ([A-Fa-f0-9]+)/x or die(q/Malformed chunk head: / .$Printable->($head)."\n");my$len=hex($1)or last;$self->read_content_body($cb,$response,$len);$self->read(2)eq "\x0D\x0A" or die(qq/Malformed chunk: missing CRLF after chunk data\n/)}$self->read_header_lines($response->{headers});return 1}sub write_chunked_body {@_==2 || die(q/Usage: $handle->write_chunked_body(request)/ ."\n");my ($self,$request)=@_;my$len=0;while (){my$data=$request->{cb}->();defined$data && length$data or last;if ($] ge '5.008'){utf8::downgrade($data,1)or die(qq/Wide character in write_chunked_body()\n/)}$len += length$data;my$chunk=sprintf '%X',length$data;$chunk .= "\x0D\x0A";$chunk .= $data;$chunk .= "\x0D\x0A";$self->write($chunk)}$self->write("0\x0D\x0A");$self->write_header_lines($request->{trailer_cb}->())if ref$request->{trailer_cb}eq 'CODE';return$len}sub read_response_header {@_==1 || die(q/Usage: $handle->read_response_header()/ ."\n");my ($self)=@_;my$line=$self->readline;$line =~ /\A (HTTP\/(0*\d+\.0*\d+)) [\x09\x20]+ ([0-9]{3}) [\x09\x20]+ ([^\x0D\x0A]*) \x0D?\x0A/x or die(q/Malformed Status-Line: / .$Printable->($line)."\n");my ($protocol,$version,$status,$reason)=($1,$2,$3,$4);die (qq/Unsupported HTTP protocol: $protocol\n/)unless$version =~ /0*1\.0*[01]/;return {status=>$status,reason=>$reason,headers=>$self->read_header_lines,protocol=>$protocol,}}sub write_request_header {@_==4 || die(q/Usage: $handle->write_request_header(method, request_uri, headers)/ ."\n");my ($self,$method,$request_uri,$headers)=@_;return$self->write_header_lines($headers,"$method $request_uri HTTP/1.1\x0D\x0A")}sub _do_timeout {my ($self,$type,$timeout)=@_;$timeout=$self->{timeout}unless defined$timeout && $timeout >= 0;my$fd=fileno$self->{fh};defined$fd && $fd >= 0 or die(qq/select(2): 'Bad file descriptor'\n/);my$initial=time;my$pending=$timeout;my$nfound;vec(my$fdset='',$fd,1)=1;while (){$nfound=($type eq 'read')? select($fdset,undef,undef,$pending): select(undef,$fdset,undef,$pending);if ($nfound==-1){$!==EINTR or die(qq/select(2): '$!'\n/);redo if!$timeout || ($pending=$timeout - (time - $initial))> 0;$nfound=0}last}$!=0;return$nfound}sub can_read {@_==1 || @_==2 || die(q/Usage: $handle->can_read([timeout])/ ."\n");my$self=shift;if (ref($self->{fh})eq 'IO::Socket::SSL'){return 1 if$self->{fh}->pending}return$self->_do_timeout('read',@_)}sub can_write {@_==1 || @_==2 || die(q/Usage: $handle->can_write([timeout])/ ."\n");my$self=shift;return$self->_do_timeout('write',@_)}sub _assert_ssl {my($ok,$reason)=HTTP::Tiny->can_ssl();die$reason unless$ok}sub can_reuse {my ($self,$scheme,$host,$port)=@_;return 0 if $self->{pid}!=$$ || $self->{tid}!=_get_tid()|| length($self->{rbuf})|| $scheme ne $self->{scheme}|| $host ne $self->{host}|| $port ne $self->{port}|| eval {$self->can_read(0)}|| $@ ;return 1}sub _find_CA_file {my$self=shift();if ($self->{SSL_options}->{SSL_ca_file}){unless (-r $self->{SSL_options}->{SSL_ca_file}){die qq/SSL_ca_file '$self->{SSL_options}->{SSL_ca_file}' not found or not readable\n/}return$self->{SSL_options}->{SSL_ca_file}}return Mozilla::CA::SSL_ca_file()if eval {require Mozilla::CA;1};for my$ca_bundle ("/etc/ssl/certs/ca-certificates.crt","/etc/pki/tls/certs/ca-bundle.crt","/etc/ssl/ca-bundle.pem","/etc/openssl/certs/ca-certificates.crt","/etc/ssl/cert.pem","/usr/local/share/certs/ca-root-nss.crt","/etc/pki/tls/cacert.pem","/etc/certs/ca-certificates.crt",){return$ca_bundle if -e $ca_bundle}die qq/Couldn't find a CA bundle with which to verify the SSL certificate.\n/ .qq/Try installing Mozilla::CA from CPAN\n/}sub _get_tid {no warnings 'reserved';return threads->can("tid")? threads->tid : 0}sub _ssl_args {my ($self,$host)=@_;my%ssl_args;if (Net::SSLeay::OPENSSL_VERSION_NUMBER()>= 0x01000000){$ssl_args{SSL_hostname}=$host,}if ($self->{verify_SSL}){$ssl_args{SSL_verifycn_scheme}='http';$ssl_args{SSL_verifycn_name}=$host;$ssl_args{SSL_verify_mode}=0x01;$ssl_args{SSL_ca_file}=$self->_find_CA_file}else {$ssl_args{SSL_verifycn_scheme}='none';$ssl_args{SSL_verify_mode}=0x00}for my$k (keys %{$self->{SSL_options}}){$ssl_args{$k}=$self->{SSL_options}{$k}if$k =~ m/^SSL_/}return \%ssl_args}1; - sub $sub_name { - my (\$self, \$url, \$args) = \@_; - \@_ == 2 || (\@_ == 3 && ref \$args eq 'HASH') - or Carp::croak(q/Usage: \$http->$sub_name(URL, [HASHREF])/ . "\n"); - return \$self->request('$req_method', \$url, \$args || {}); - } - HERE -HTTP_TINY - -$fatpacked{"JSON/PP.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'JSON_PP'; - package JSON::PP;use 5.005;use strict;use base qw(Exporter);use overload ();use Carp ();use B ();$JSON::PP::VERSION='2.27300';@JSON::PP::EXPORT=qw(encode_json decode_json from_json to_json);use constant P_ASCII=>0;use constant P_LATIN1=>1;use constant P_UTF8=>2;use constant P_INDENT=>3;use constant P_CANONICAL=>4;use constant P_SPACE_BEFORE=>5;use constant P_SPACE_AFTER=>6;use constant P_ALLOW_NONREF=>7;use constant P_SHRINK=>8;use constant P_ALLOW_BLESSED=>9;use constant P_CONVERT_BLESSED=>10;use constant P_RELAXED=>11;use constant P_LOOSE=>12;use constant P_ALLOW_BIGNUM=>13;use constant P_ALLOW_BAREKEY=>14;use constant P_ALLOW_SINGLEQUOTE=>15;use constant P_ESCAPE_SLASH=>16;use constant P_AS_NONBLESSED=>17;use constant P_ALLOW_UNKNOWN=>18;use constant OLD_PERL=>$] < 5.008 ? 1 : 0;BEGIN {my@xs_compati_bit_properties=qw(latin1 ascii utf8 indent canonical space_before space_after allow_nonref shrink allow_blessed convert_blessed relaxed allow_unknown);my@pp_bit_properties=qw(allow_singlequote allow_bignum loose allow_barekey escape_slash as_nonblessed);if ($] < 5.008){my$helper=$] >= 5.006 ? 'JSON::PP::Compat5006' : 'JSON::PP::Compat5005';eval qq| require $helper |;if ($@){Carp::croak $@}}for my$name (@xs_compati_bit_properties,@pp_bit_properties){my$flag_name='P_' .uc($name);eval qq/ - sub $name { - my \$enable = defined \$_[1] ? \$_[1] : 1; - - if (\$enable) { - \$_[0]->{PROPS}->[$flag_name] = 1; - } - else { - \$_[0]->{PROPS}->[$flag_name] = 0; - } - - \$_[0]; - } - - sub get_$name { - \$_[0]->{PROPS}->[$flag_name] ? 1 : ''; - } - /}}my%encode_allow_method =map {($_=>1)}qw/utf8 pretty allow_nonref latin1 self_encode escape_slash allow_blessed convert_blessed indent indent_length allow_bignum as_nonblessed/;my%decode_allow_method =map {($_=>1)}qw/utf8 allow_nonref loose allow_singlequote allow_bignum allow_barekey max_size relaxed/;my$JSON;sub encode_json ($) {($JSON ||= __PACKAGE__->new->utf8)->encode(@_)}sub decode_json {($JSON ||= __PACKAGE__->new->utf8)->decode(@_)}sub to_json($) {Carp::croak ("JSON::PP::to_json has been renamed to encode_json.")}sub from_json($) {Carp::croak ("JSON::PP::from_json has been renamed to decode_json.")}sub new {my$class=shift;my$self={max_depth=>512,max_size=>0,indent=>0,FLAGS=>0,fallback=>sub {encode_error('Invalid value. JSON can only reference.')},indent_length=>3,};bless$self,$class}sub encode {return $_[0]->PP_encode_json($_[1])}sub decode {return $_[0]->PP_decode_json($_[1],0x00000000)}sub decode_prefix {return $_[0]->PP_decode_json($_[1],0x00000001)}sub pretty {my ($self,$v)=@_;my$enable=defined$v ? $v : 1;if ($enable){$self->indent(1)->indent_length(3)->space_before(1)->space_after(1)}else {$self->indent(0)->space_before(0)->space_after(0)}$self}sub max_depth {my$max=defined $_[1]? $_[1]: 0x80000000;$_[0]->{max_depth}=$max;$_[0]}sub get_max_depth {$_[0]->{max_depth}}sub max_size {my$max=defined $_[1]? $_[1]: 0;$_[0]->{max_size}=$max;$_[0]}sub get_max_size {$_[0]->{max_size}}sub filter_json_object {$_[0]->{cb_object}=defined $_[1]? $_[1]: 0;$_[0]->{F_HOOK}=($_[0]->{cb_object}or $_[0]->{cb_sk_object})? 1 : 0;$_[0]}sub filter_json_single_key_object {if (@_ > 1){$_[0]->{cb_sk_object}->{$_[1]}=$_[2]}$_[0]->{F_HOOK}=($_[0]->{cb_object}or $_[0]->{cb_sk_object})? 1 : 0;$_[0]}sub indent_length {if (!defined $_[1]or $_[1]> 15 or $_[1]< 0){Carp::carp "The acceptable range of indent_length() is 0 to 15."}else {$_[0]->{indent_length}=$_[1]}$_[0]}sub get_indent_length {$_[0]->{indent_length}}sub sort_by {$_[0]->{sort_by}=defined $_[1]? $_[1]: 1;$_[0]}sub allow_bigint {Carp::carp("allow_bigint() is obsoleted. use allow_bignum() insted.")}{my$max_depth;my$indent;my$ascii;my$latin1;my$utf8;my$space_before;my$space_after;my$canonical;my$allow_blessed;my$convert_blessed;my$indent_length;my$escape_slash;my$bignum;my$as_nonblessed;my$depth;my$indent_count;my$keysort;sub PP_encode_json {my$self=shift;my$obj=shift;$indent_count=0;$depth=0;my$idx=$self->{PROPS};($ascii,$latin1,$utf8,$indent,$canonical,$space_before,$space_after,$allow_blessed,$convert_blessed,$escape_slash,$bignum,$as_nonblessed)=@{$idx}[P_ASCII .. P_SPACE_AFTER,P_ALLOW_BLESSED,P_CONVERT_BLESSED,P_ESCAPE_SLASH,P_ALLOW_BIGNUM,P_AS_NONBLESSED];($max_depth,$indent_length)=@{$self}{qw/max_depth indent_length/};$keysort=$canonical ? sub {$a cmp $b}: undef;if ($self->{sort_by}){$keysort=ref($self->{sort_by})eq 'CODE' ? $self->{sort_by}: $self->{sort_by}=~ /\D+/ ? $self->{sort_by}: sub {$a cmp $b}}encode_error("hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)")if(!ref$obj and!$idx->[P_ALLOW_NONREF ]);my$str=$self->object_to_json($obj);$str .= "\n" if ($indent);unless ($ascii or $latin1 or $utf8){utf8::upgrade($str)}if ($idx->[P_SHRINK ]){utf8::downgrade($str,1)}return$str}sub object_to_json {my ($self,$obj)=@_;my$type=ref($obj);if($type eq 'HASH'){return$self->hash_to_json($obj)}elsif($type eq 'ARRAY'){return$self->array_to_json($obj)}elsif ($type){if (blessed($obj)){return$self->value_to_json($obj)if ($obj->isa('JSON::PP::Boolean'));if ($convert_blessed and $obj->can('TO_JSON')){my$result=$obj->TO_JSON();if (defined$result and ref($result)){if (refaddr($obj)eq refaddr($result)){encode_error(sprintf("%s::TO_JSON method returned same object as was passed instead of a new one",ref$obj))}}return$self->object_to_json($result)}return "$obj" if ($bignum and _is_bignum($obj));return$self->blessed_to_json($obj)if ($allow_blessed and $as_nonblessed);encode_error(sprintf("encountered object '%s', but neither allow_blessed " ."nor convert_blessed settings are enabled",$obj))unless ($allow_blessed);return 'null'}else {return$self->value_to_json($obj)}}else{return$self->value_to_json($obj)}}sub hash_to_json {my ($self,$obj)=@_;my@res;encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)")if (++$depth > $max_depth);my ($pre,$post)=$indent ? $self->_up_indent(): ('','');my$del=($space_before ? ' ' : '').':' .($space_after ? ' ' : '');for my$k (_sort($obj)){if (OLD_PERL){utf8::decode($k)}push@res,string_to_json($self,$k).$del .($self->object_to_json($obj->{$k})|| $self->value_to_json($obj->{$k}))}--$depth;$self->_down_indent()if ($indent);return '{' .(@res ? $pre : '').(@res ? join(",$pre",@res).$post : '').'}'}sub array_to_json {my ($self,$obj)=@_;my@res;encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)")if (++$depth > $max_depth);my ($pre,$post)=$indent ? $self->_up_indent(): ('','');for my$v (@$obj){push@res,$self->object_to_json($v)|| $self->value_to_json($v)}--$depth;$self->_down_indent()if ($indent);return '[' .(@res ? $pre : '').(@res ? join(",$pre",@res).$post : '').']'}sub value_to_json {my ($self,$value)=@_;return 'null' if(!defined$value);my$b_obj=B::svref_2object(\$value);my$flags=$b_obj->FLAGS;return$value if$flags & (B::SVp_IOK | B::SVp_NOK)and!($flags & B::SVp_POK);my$type=ref($value);if(!$type){return string_to_json($self,$value)}elsif(blessed($value)and $value->isa('JSON::PP::Boolean')){return $$value==1 ? 'true' : 'false'}elsif ($type){if ((overload::StrVal($value)=~ /=(\w+)/)[0]){return$self->value_to_json("$value")}if ($type eq 'SCALAR' and defined $$value){return $$value eq '1' ? 'true' : $$value eq '0' ? 'false' : $self->{PROPS}->[P_ALLOW_UNKNOWN ]? 'null' : encode_error("cannot encode reference to scalar")}if ($self->{PROPS}->[P_ALLOW_UNKNOWN ]){return 'null'}else {if ($type eq 'SCALAR' or $type eq 'REF'){encode_error("cannot encode reference to scalar")}else {encode_error("encountered $value, but JSON can only represent references to arrays or hashes")}}}else {return$self->{fallback}->($value)if ($self->{fallback}and ref($self->{fallback})eq 'CODE');return 'null'}}my%esc=("\n"=>'\n',"\r"=>'\r',"\t"=>'\t',"\f"=>'\f',"\b"=>'\b',"\""=>'\"',"\\"=>'\\\\',"\'"=>'\\\'',);sub string_to_json {my ($self,$arg)=@_;$arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;$arg =~ s/\//\\\//g if ($escape_slash);$arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg;if ($ascii){$arg=JSON_PP_encode_ascii($arg)}if ($latin1){$arg=JSON_PP_encode_latin1($arg)}if ($utf8){utf8::encode($arg)}return '"' .$arg .'"'}sub blessed_to_json {my$reftype=reftype($_[1])|| '';if ($reftype eq 'HASH'){return $_[0]->hash_to_json($_[1])}elsif ($reftype eq 'ARRAY'){return $_[0]->array_to_json($_[1])}else {return 'null'}}sub encode_error {my$error=shift;Carp::croak "$error"}sub _sort {defined$keysort ? (sort$keysort (keys %{$_[0]})): keys %{$_[0]}}sub _up_indent {my$self=shift;my$space=' ' x $indent_length;my ($pre,$post)=('','');$post="\n" .$space x $indent_count;$indent_count++;$pre="\n" .$space x $indent_count;return ($pre,$post)}sub _down_indent {$indent_count--}sub PP_encode_box {{depth=>$depth,indent_count=>$indent_count,}}}sub _encode_ascii {join('',map {$_ <= 127 ? chr($_): $_ <= 65535 ? sprintf('\u%04x',$_): sprintf('\u%x\u%x',_encode_surrogates($_))}unpack('U*',$_[0]))}sub _encode_latin1 {join('',map {$_ <= 255 ? chr($_): $_ <= 65535 ? sprintf('\u%04x',$_): sprintf('\u%x\u%x',_encode_surrogates($_))}unpack('U*',$_[0]))}sub _encode_surrogates {my$uni=$_[0]- 0x10000;return ($uni / 0x400 + 0xD800,$uni % 0x400 + 0xDC00)}sub _is_bignum {$_[0]->isa('Math::BigInt')or $_[0]->isa('Math::BigFloat')}my$max_intsize;BEGIN {my$checkint=1111;for my$d (5..64){$checkint .= 1;my$int=eval qq| $checkint |;if ($int =~ /[eE]/){$max_intsize=$d - 1;last}}}{my%escapes=(b=>"\x8",t=>"\x9",n=>"\xA",f=>"\xC",r=>"\xD",'\\'=>'\\','"'=>'"','/'=>'/',);my$text;my$at;my$ch;my$len;my$depth;my$encoding;my$is_valid_utf8;my$utf8_len;my$utf8;my$max_depth;my$max_size;my$relaxed;my$cb_object;my$cb_sk_object;my$F_HOOK;my$allow_bigint;my$singlequote;my$loose;my$allow_barekey;sub PP_decode_json {my ($self,$opt);($self,$text,$opt)=@_;($at,$ch,$depth)=(0,'',0);if (!defined$text or ref$text){decode_error("malformed JSON string, neither array, object, number, string or atom")}my$idx=$self->{PROPS};($utf8,$relaxed,$loose,$allow_bigint,$allow_barekey,$singlequote)=@{$idx}[P_UTF8,P_RELAXED,P_LOOSE .. P_ALLOW_SINGLEQUOTE];if ($utf8){utf8::downgrade($text,1)or Carp::croak("Wide character in subroutine entry")}else {utf8::upgrade($text);utf8::encode($text)}$len=length$text;($max_depth,$max_size,$cb_object,$cb_sk_object,$F_HOOK)=@{$self}{qw/max_depth max_size cb_object cb_sk_object F_HOOK/};if ($max_size > 1){use bytes;my$bytes=length$text;decode_error(sprintf("attempted decode of JSON text of %s bytes size, but max_size is set to %s" ,$bytes,$max_size),1)if ($bytes > $max_size)}my@octets=unpack('C4',$text);$encoding=($octets[0]and $octets[1])? 'UTF-8' : (!$octets[0]and $octets[1])? 'UTF-16BE' : (!$octets[0]and!$octets[1])? 'UTF-32BE' : ($octets[2])? 'UTF-16LE' : (!$octets[2])? 'UTF-32LE' : 'unknown';white();my$valid_start=defined$ch;my$result=value();return undef if (!$result && ($opt & 0x10000000));decode_error("malformed JSON string, neither array, object, number, string or atom")unless$valid_start;if (!$idx->[P_ALLOW_NONREF ]and!ref$result){decode_error('JSON text must be an object or array (but found number, string, true, false or null,' .' use allow_nonref to allow this)',1)}Carp::croak('something wrong.')if$len < $at;my$consumed=defined$ch ? $at - 1 : $at;white();if ($ch){return ($result,$consumed)if ($opt & 0x00000001);decode_error("garbage after JSON object")}($opt & 0x00000001)? ($result,$consumed): $result}sub next_chr {return$ch=undef if($at >= $len);$ch=substr($text,$at++,1)}sub value {white();return if(!defined$ch);return object()if($ch eq '{');return array()if($ch eq '[');return string()if($ch eq '"' or ($singlequote and $ch eq "'"));return number()if($ch =~ /[0-9]/ or $ch eq '-');return word()}sub string {my ($i,$s,$t,$u);my$utf16;my$is_utf8;($is_valid_utf8,$utf8_len)=('',0);$s='';if($ch eq '"' or ($singlequote and $ch eq "'")){my$boundChar=$ch;OUTER: while(defined(next_chr())){if($ch eq $boundChar){next_chr();if ($utf16){decode_error("missing low surrogate character in surrogate pair")}utf8::decode($s)if($is_utf8);return$s}elsif($ch eq '\\'){next_chr();if(exists$escapes{$ch}){$s .= $escapes{$ch}}elsif($ch eq 'u'){my$u='';for(1..4){$ch=next_chr();last OUTER if($ch !~ /[0-9a-fA-F]/);$u .= $ch}if ($u =~ /^[dD][89abAB][0-9a-fA-F]{2}/){$utf16=$u}elsif ($u =~ /^[dD][c-fC-F][0-9a-fA-F]{2}/){unless (defined$utf16){decode_error("missing high surrogate character in surrogate pair")}$is_utf8=1;$s .= JSON_PP_decode_surrogates($utf16,$u)|| next;$utf16=undef}else {if (defined$utf16){decode_error("surrogate pair expected")}if ((my$hex=hex($u))> 127){$is_utf8=1;$s .= JSON_PP_decode_unicode($u)|| next}else {$s .= chr$hex}}}else{unless ($loose){$at -= 2;decode_error('illegal backslash escape sequence in string')}$s .= $ch}}else{if (ord$ch > 127){unless($ch=is_valid_utf8($ch)){$at -= 1;decode_error("malformed UTF-8 character in JSON string")}else {$at += $utf8_len - 1}$is_utf8=1}if (!$loose){if ($ch =~ /[\x00-\x1f\x22\x5c]/){$at--;decode_error('invalid character encountered while parsing JSON string')}}$s .= $ch}}}decode_error("unexpected end of string while parsing JSON string")}sub white {while(defined$ch){if($ch le ' '){next_chr()}elsif($ch eq '/'){next_chr();if(defined$ch and $ch eq '/'){1 while(defined(next_chr())and $ch ne "\n" and $ch ne "\r")}elsif(defined$ch and $ch eq '*'){next_chr();while(1){if(defined$ch){if($ch eq '*'){if(defined(next_chr())and $ch eq '/'){next_chr();last}}else{next_chr()}}else{decode_error("Unterminated comment")}}next}else{$at--;decode_error("malformed JSON string, neither array, object, number, string or atom")}}else{if ($relaxed and $ch eq '#'){pos($text)=$at;$text =~ /\G([^\n]*(?:\r\n|\r|\n|$))/g;$at=pos($text);next_chr;next}last}}}sub array {my$a=$_[0]|| [];decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)')if (++$depth > $max_depth);next_chr();white();if(defined$ch and $ch eq ']'){--$depth;next_chr();return$a}else {while(defined($ch)){push @$a,value();white();if (!defined$ch){last}if($ch eq ']'){--$depth;next_chr();return$a}if($ch ne ','){last}next_chr();white();if ($relaxed and $ch eq ']'){--$depth;next_chr();return$a}}}decode_error(", or ] expected while parsing array")}sub object {my$o=$_[0]|| {};my$k;decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)')if (++$depth > $max_depth);next_chr();white();if(defined$ch and $ch eq '}'){--$depth;next_chr();if ($F_HOOK){return _json_object_hook($o)}return$o}else {while (defined$ch){$k=($allow_barekey and $ch ne '"' and $ch ne "'")? bareKey(): string();white();if(!defined$ch or $ch ne ':'){$at--;decode_error("':' expected")}next_chr();$o->{$k}=value();white();last if (!defined$ch);if($ch eq '}'){--$depth;next_chr();if ($F_HOOK){return _json_object_hook($o)}return$o}if($ch ne ','){last}next_chr();white();if ($relaxed and $ch eq '}'){--$depth;next_chr();if ($F_HOOK){return _json_object_hook($o)}return$o}}}$at--;decode_error(", or } expected while parsing object/hash")}sub bareKey {my$key;while($ch =~ /[^\x00-\x23\x25-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F]/){$key .= $ch;next_chr()}return$key}sub word {my$word=substr($text,$at-1,4);if($word eq 'true'){$at += 3;next_chr;return$JSON::PP::true}elsif($word eq 'null'){$at += 3;next_chr;return undef}elsif($word eq 'fals'){$at += 3;if(substr($text,$at,1)eq 'e'){$at++;next_chr;return$JSON::PP::false}}$at--;decode_error("'null' expected")if ($word =~ /^n/);decode_error("'true' expected")if ($word =~ /^t/);decode_error("'false' expected")if ($word =~ /^f/);decode_error("malformed JSON string, neither array, object, number, string or atom")}sub number {my$n='';my$v;if($ch eq '0'){my$peek=substr($text,$at,1);my$hex=$peek =~ /[xX]/;if($hex){decode_error("malformed number (leading zero must not be followed by another digit)");($n)=(substr($text,$at+1)=~ /^([0-9a-fA-F]+)/)}else{($n)=(substr($text,$at)=~ /^([0-7]+)/);if (defined$n and length$n > 1){decode_error("malformed number (leading zero must not be followed by another digit)")}}if(defined$n and length($n)){if (!$hex and length($n)==1){decode_error("malformed number (leading zero must not be followed by another digit)")}$at += length($n)+ $hex;next_chr;return$hex ? hex($n): oct($n)}}if($ch eq '-'){$n='-';next_chr;if (!defined$ch or $ch !~ /\d/){decode_error("malformed number (no digits after initial minus)")}}while(defined$ch and $ch =~ /\d/){$n .= $ch;next_chr}if(defined$ch and $ch eq '.'){$n .= '.';next_chr;if (!defined$ch or $ch !~ /\d/){decode_error("malformed number (no digits after decimal point)")}else {$n .= $ch}while(defined(next_chr)and $ch =~ /\d/){$n .= $ch}}if(defined$ch and ($ch eq 'e' or $ch eq 'E')){$n .= $ch;next_chr;if(defined($ch)and ($ch eq '+' or $ch eq '-')){$n .= $ch;next_chr;if (!defined$ch or $ch =~ /\D/){decode_error("malformed number (no digits after exp sign)")}$n .= $ch}elsif(defined($ch)and $ch =~ /\d/){$n .= $ch}else {decode_error("malformed number (no digits after exp sign)")}while(defined(next_chr)and $ch =~ /\d/){$n .= $ch}}$v .= $n;if ($v !~ /[.eE]/ and length$v > $max_intsize){if ($allow_bigint){require Math::BigInt;return Math::BigInt->new($v)}else {return "$v"}}elsif ($allow_bigint){require Math::BigFloat;return Math::BigFloat->new($v)}return 0+$v}sub is_valid_utf8 {$utf8_len=$_[0]=~ /[\x00-\x7F]/ ? 1 : $_[0]=~ /[\xC2-\xDF]/ ? 2 : $_[0]=~ /[\xE0-\xEF]/ ? 3 : $_[0]=~ /[\xF0-\xF4]/ ? 4 : 0 ;return unless$utf8_len;my$is_valid_utf8=substr($text,$at - 1,$utf8_len);return ($is_valid_utf8 =~ /^(?: - [\x00-\x7F] - |[\xC2-\xDF][\x80-\xBF] - |[\xE0][\xA0-\xBF][\x80-\xBF] - |[\xE1-\xEC][\x80-\xBF][\x80-\xBF] - |[\xED][\x80-\x9F][\x80-\xBF] - |[\xEE-\xEF][\x80-\xBF][\x80-\xBF] - |[\xF0][\x90-\xBF][\x80-\xBF][\x80-\xBF] - |[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF] - |[\xF4][\x80-\x8F][\x80-\xBF][\x80-\xBF] - )$/x)? $is_valid_utf8 : ''}sub decode_error {my$error=shift;my$no_rep=shift;my$str=defined$text ? substr($text,$at): '';my$mess='';my$type=$] >= 5.008 ? 'U*' : $] < 5.006 ? 'C*' : utf8::is_utf8($str)? 'U*' : 'C*' ;for my$c (unpack($type,$str)){$mess .= $c==0x07 ? '\a' : $c==0x09 ? '\t' : $c==0x0a ? '\n' : $c==0x0d ? '\r' : $c==0x0c ? '\f' : $c < 0x20 ? sprintf('\x{%x}',$c): $c==0x5c ? '\\\\' : $c < 0x80 ? chr($c): sprintf('\x{%x}',$c);if (length$mess >= 20){$mess .= '...';last}}unless (length$mess){$mess='(end of string)'}Carp::croak ($no_rep ? "$error" : "$error, at character offset $at (before \"$mess\")")}sub _json_object_hook {my$o=$_[0];my@ks=keys %{$o};if ($cb_sk_object and @ks==1 and exists$cb_sk_object->{$ks[0]}and ref$cb_sk_object->{$ks[0]}){my@val=$cb_sk_object->{$ks[0]}->($o->{$ks[0]});if (@val==1){return$val[0]}}my@val=$cb_object->($o)if ($cb_object);if (@val==0 or @val > 1){return$o}else {return$val[0]}}sub PP_decode_box {{text=>$text,at=>$at,ch=>$ch,len=>$len,depth=>$depth,encoding=>$encoding,is_valid_utf8=>$is_valid_utf8,}}}sub _decode_surrogates {my$uni=0x10000 + (hex($_[0])- 0xD800)* 0x400 + (hex($_[1])- 0xDC00);my$un=pack('U*',$uni);utf8::encode($un);return$un}sub _decode_unicode {my$un=pack('U',hex shift);utf8::encode($un);return$un}BEGIN {unless (defined&utf8::is_utf8){require Encode;*utf8::is_utf8=*Encode::is_utf8}if ($] >= 5.008){*JSON::PP::JSON_PP_encode_ascii=\&_encode_ascii;*JSON::PP::JSON_PP_encode_latin1=\&_encode_latin1;*JSON::PP::JSON_PP_decode_surrogates=\&_decode_surrogates;*JSON::PP::JSON_PP_decode_unicode=\&_decode_unicode}if ($] >= 5.008 and $] < 5.008003){package JSON::PP;require subs;subs->import('join');eval q| - sub join { - return '' if (@_ < 2); - my $j = shift; - my $str = shift; - for (@_) { $str .= $j . $_; } - return $str; - } - |}sub JSON::PP::incr_parse {local$Carp::CarpLevel=1;($_[0]->{_incr_parser}||= JSON::PP::IncrParser->new)->incr_parse(@_)}sub JSON::PP::incr_skip {($_[0]->{_incr_parser}||= JSON::PP::IncrParser->new)->incr_skip}sub JSON::PP::incr_reset {($_[0]->{_incr_parser}||= JSON::PP::IncrParser->new)->incr_reset}eval q{ - sub JSON::PP::incr_text : lvalue { - $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new; - - if ( $_[0]->{_incr_parser}->{incr_parsing} ) { - Carp::croak("incr_text can not be called when the incremental parser already started parsing"); - } - $_[0]->{_incr_parser}->{incr_text}; - } - } if ($] >= 5.006)}BEGIN {eval 'require Scalar::Util';unless($@){*JSON::PP::blessed=\&Scalar::Util::blessed;*JSON::PP::reftype=\&Scalar::Util::reftype;*JSON::PP::refaddr=\&Scalar::Util::refaddr}else{eval 'sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) }';*JSON::PP::blessed=sub {local($@,$SIG{__DIE__},$SIG{__WARN__});ref($_[0])? eval {$_[0]->a_sub_not_likely_to_be_here}: undef};my%tmap=qw(B::NULL SCALAR B::HV HASH B::AV ARRAY B::CV CODE B::IO IO B::GV GLOB B::REGEXP REGEXP);*JSON::PP::reftype=sub {my$r=shift;return undef unless length(ref($r));my$t=ref(B::svref_2object($r));return exists$tmap{$t}? $tmap{$t}: length(ref($$r))? 'REF' : 'SCALAR'};*JSON::PP::refaddr=sub {return undef unless length(ref($_[0]));my$addr;if(defined(my$pkg=blessed($_[0]))){$addr .= bless $_[0],'Scalar::Util::Fake';bless $_[0],$pkg}else {$addr .= $_[0]}$addr =~ /0x(\w+)/;local $^W;hex($1)}}}$JSON::PP::true=do {bless \(my$dummy=1),"JSON::PP::Boolean"};$JSON::PP::false=do {bless \(my$dummy=0),"JSON::PP::Boolean"};sub is_bool {defined $_[0]and UNIVERSAL::isa($_[0],"JSON::PP::Boolean")}sub true {$JSON::PP::true}sub false {$JSON::PP::false}sub null {undef}package JSON::PP::Boolean;use overload ("0+"=>sub {${$_[0]}},"++"=>sub {$_[0]=${$_[0]}+ 1},"--"=>sub {$_[0]=${$_[0]}- 1},fallback=>1,);package JSON::PP::IncrParser;use strict;use constant INCR_M_WS=>0;use constant INCR_M_STR=>1;use constant INCR_M_BS=>2;use constant INCR_M_JSON=>3;use constant INCR_M_C0=>4;use constant INCR_M_C1=>5;$JSON::PP::IncrParser::VERSION='1.01';my$unpack_format=$] < 5.006 ? 'C*' : 'U*';sub new {my ($class)=@_;bless {incr_nest=>0,incr_text=>undef,incr_parsing=>0,incr_p=>0,},$class}sub incr_parse {my ($self,$coder,$text)=@_;$self->{incr_text}='' unless (defined$self->{incr_text});if (defined$text){if (utf8::is_utf8($text)and!utf8::is_utf8($self->{incr_text})){utf8::upgrade($self->{incr_text});utf8::decode($self->{incr_text})}$self->{incr_text}.= $text}my$max_size=$coder->get_max_size;if (defined wantarray){$self->{incr_mode}=INCR_M_WS unless defined$self->{incr_mode};if (wantarray){my@ret;$self->{incr_parsing}=1;do {push@ret,$self->_incr_parse($coder,$self->{incr_text});unless (!$self->{incr_nest}and $self->{incr_mode}==INCR_M_JSON){$self->{incr_mode}=INCR_M_WS if$self->{incr_mode}!=INCR_M_STR}}until (length$self->{incr_text}>= $self->{incr_p});$self->{incr_parsing}=0;return@ret}else {$self->{incr_parsing}=1;my$obj=$self->_incr_parse($coder,$self->{incr_text});$self->{incr_parsing}=0 if defined$obj;return$obj ? $obj : undef}}}sub _incr_parse {my ($self,$coder,$text,$skip)=@_;my$p=$self->{incr_p};my$restore=$p;my@obj;my$len=length$text;if ($self->{incr_mode}==INCR_M_WS){while ($len > $p){my$s=substr($text,$p,1);$p++ and next if (0x20 >= unpack($unpack_format,$s));$self->{incr_mode}=INCR_M_JSON;last}}while ($len > $p){my$s=substr($text,$p++,1);if ($s eq '"'){if (substr($text,$p - 2,1)eq '\\'){next}if ($self->{incr_mode}!=INCR_M_STR){$self->{incr_mode}=INCR_M_STR}else {$self->{incr_mode}=INCR_M_JSON;unless ($self->{incr_nest}){last}}}if ($self->{incr_mode}==INCR_M_JSON){if ($s eq '[' or $s eq '{'){if (++$self->{incr_nest}> $coder->get_max_depth){Carp::croak('json text or perl structure exceeds maximum nesting level (max_depth set too low?)')}}elsif ($s eq ']' or $s eq '}'){last if (--$self->{incr_nest}<= 0)}elsif ($s eq '#'){while ($len > $p){last if substr($text,$p++,1)eq "\n"}}}}$self->{incr_p}=$p;return if ($self->{incr_mode}==INCR_M_STR and not $self->{incr_nest});return if ($self->{incr_mode}==INCR_M_JSON and $self->{incr_nest}> 0);return '' unless (length substr($self->{incr_text},0,$p));local$Carp::CarpLevel=2;$self->{incr_p}=$restore;$self->{incr_c}=$p;my ($obj,$tail)=$coder->PP_decode_json(substr($self->{incr_text},0,$p),0x10000001);$self->{incr_text}=substr($self->{incr_text},$p);$self->{incr_p}=0;return$obj || ''}sub incr_text {if ($_[0]->{incr_parsing}){Carp::croak("incr_text can not be called when the incremental parser already started parsing")}$_[0]->{incr_text}}sub incr_skip {my$self=shift;$self->{incr_text}=substr($self->{incr_text},$self->{incr_c});$self->{incr_p}=0}sub incr_reset {my$self=shift;$self->{incr_text}=undef;$self->{incr_p}=0;$self->{incr_mode}=0;$self->{incr_nest}=0;$self->{incr_parsing}=0}1; -JSON_PP - -$fatpacked{"JSON/PP/Boolean.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'JSON_PP_BOOLEAN'; - use JSON::PP ();use strict;1; -JSON_PP_BOOLEAN - -$fatpacked{"Module/CPANfile.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE'; - package Module::CPANfile;use strict;use warnings;use Cwd;use Carp ();use Module::CPANfile::Environment;use Module::CPANfile::Requirement;our$VERSION='1.1000';sub new {my($class,$file)=@_;bless {},$class}sub load {my($proto,$file)=@_;my$self=ref$proto ? $proto : $proto->new;$self->parse($file || Cwd::abs_path('cpanfile'));$self}sub save {my($self,$path)=@_;open my$out,">",$path or die "$path: $!";print {$out}$self->to_string}sub parse {my($self,$file)=@_;my$code=do {open my$fh,"<",$file or die "$file: $!";join '',<$fh>};my$env=Module::CPANfile::Environment->new($file);$env->parse($code)or die $@;$self->{_mirrors}=$env->mirrors;$self->{_prereqs}=$env->prereqs}sub from_prereqs {my($proto,$prereqs)=@_;my$self=$proto->new;$self->{_prereqs}=Module::CPANfile::Prereqs->from_cpan_meta($prereqs);$self}sub mirrors {my$self=shift;$self->{_mirrors}|| []}sub features {my$self=shift;map$self->feature($_),$self->{_prereqs}->identifiers}sub feature {my($self,$identifier)=@_;$self->{_prereqs}->feature($identifier)}sub prereq {shift->prereqs}sub prereqs {my$self=shift;$self->{_prereqs}->as_cpan_meta}sub merged_requirements {my$self=shift;$self->{_prereqs}->merged_requirements}sub effective_prereqs {my($self,$features)=@_;$self->prereqs_with(@{$features || []})}sub prereqs_with {my($self,@feature_identifiers)=@_;my$prereqs=$self->prereqs;my@others=map {$self->feature($_)->prereqs}@feature_identifiers;$prereqs->with_merged_prereqs(\@others)}sub prereq_specs {my$self=shift;$self->prereqs->as_string_hash}sub prereq_for_module {my($self,$module)=@_;$self->{_prereqs}->find($module)}sub options_for_module {my($self,$module)=@_;my$prereq=$self->prereq_for_module($module)or return;$prereq->requirement->options}sub merge_meta {my($self,$file,$version)=@_;require CPAN::Meta;$version ||= $file =~ /\.yml$/ ? '1.4' : '2';my$prereq=$self->prereqs;my$meta=CPAN::Meta->load_file($file);my$prereqs_hash=$prereq->with_merged_prereqs($meta->effective_prereqs)->as_string_hash;my$struct={%{$meta->as_struct},prereqs=>$prereqs_hash };CPAN::Meta->new($struct)->save($file,{version=>$version })}sub _dump {my$str=shift;require Data::Dumper;chomp(my$value=Data::Dumper->new([$str])->Terse(1)->Dump);$value}sub to_string {my($self,$include_empty)=@_;my$mirrors=$self->mirrors;my$prereqs=$self->prereq_specs;my$code='';$code .= $self->_dump_mirrors($mirrors);$code .= $self->_dump_prereqs($prereqs,$include_empty);for my$feature ($self->features){$code .= sprintf "feature %s, %s => sub {\n",_dump($feature->{identifier}),_dump($feature->{description});$code .= $self->_dump_prereqs($feature->{spec},$include_empty,4);$code .= "}\n\n"}$code =~ s/\n+$/\n/s;$code}sub _dump_mirrors {my($self,$mirrors)=@_;my$code="";for my$url (@$mirrors){$code .= "mirror '$url';\n"}$code =~ s/\n+$/\n/s;$code}sub _dump_prereqs {my($self,$prereqs,$include_empty,$base_indent)=@_;my$code='';for my$phase (qw(runtime configure build test develop)){my$indent=$phase eq 'runtime' ? '' : ' ';$indent=(' ' x ($base_indent || 0)).$indent;my($phase_code,$requirements);$phase_code .= "on $phase => sub {\n" unless$phase eq 'runtime';for my$type (qw(requires recommends suggests conflicts)){for my$mod (sort keys %{$prereqs->{$phase}{$type}}){my$ver=$prereqs->{$phase}{$type}{$mod};$phase_code .= $ver eq '0' ? "${indent}$type '$mod';\n" : "${indent}$type '$mod', '$ver';\n";$requirements++}}$phase_code .= "\n" unless$requirements;$phase_code .= "};\n" unless$phase eq 'runtime';$code .= $phase_code ."\n" if$requirements or $include_empty}$code =~ s/\n+$/\n/s;$code}1; -MODULE_CPANFILE - -$fatpacked{"Module/CPANfile/Environment.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_ENVIRONMENT'; - package Module::CPANfile::Environment;use strict;use warnings;use Module::CPANfile::Prereqs;use Carp ();my@bindings=qw(on requires recommends suggests conflicts feature osname mirror configure_requires build_requires test_requires author_requires);my$file_id=1;sub new {my($class,$file)=@_;bless {file=>$file,phase=>'runtime',feature=>undef,features=>{},prereqs=>Module::CPANfile::Prereqs->new,mirrors=>[],},$class}sub bind {my$self=shift;my$pkg=caller;for my$binding (@bindings){no strict 'refs';*{"$pkg\::$binding"}=sub {$self->$binding(@_)}}}sub parse {my($self,$code)=@_;my$err;{local $@;$file_id++;$self->_evaluate(<{file} failed: $err"};return 1}sub _evaluate {my$_environment=$_[0];eval $_[1]}sub prereqs {$_[0]->{prereqs}}sub mirrors {$_[0]->{mirrors}}sub on {my($self,$phase,$code)=@_;local$self->{phase}=$phase;$code->()}sub feature {my($self,$identifier,$description,$code)=@_;if (@_==3 && ref($description)eq 'CODE'){$code=$description;$description=$identifier}unless (ref$description eq '' && ref$code eq 'CODE'){Carp::croak("Usage: feature 'identifier', 'Description' => sub { ... }")}local$self->{feature}=$identifier;$self->prereqs->add_feature($identifier,$description);$code->()}sub osname {die "TODO"}sub mirror {my($self,$url)=@_;push @{$self->{mirrors}},$url}sub requirement_for {my($self,$module,@args)=@_;my$requirement=0;$requirement=shift@args if@args % 2;return Module::CPANfile::Requirement->new(name=>$module,version=>$requirement,@args,)}sub requires {my$self=shift;$self->add_prereq(requires=>@_)}sub recommends {my$self=shift;$self->add_prereq(recommends=>@_)}sub suggests {my$self=shift;$self->add_prereq(suggests=>@_)}sub conflicts {my$self=shift;$self->add_prereq(conflicts=>@_)}sub add_prereq {my($self,$type,$module,@args)=@_;$self->prereqs->add_prereq(feature=>$self->{feature},phase=>$self->{phase},type=>$type,module=>$module,requirement=>$self->requirement_for($module,@args),)}sub configure_requires {my($self,@args)=@_;$self->on(configure=>sub {$self->requires(@args)})}sub build_requires {my($self,@args)=@_;$self->on(build=>sub {$self->requires(@args)})}sub test_requires {my($self,@args)=@_;$self->on(test=>sub {$self->requires(@args)})}sub author_requires {my($self,@args)=@_;$self->on(develop=>sub {$self->requires(@args)})}1; - package Module::CPANfile::Sandbox$file_id; - no warnings; - BEGIN { \$_environment->bind } - - # line 1 "$self->{file}" - $code; - EVAL -MODULE_CPANFILE_ENVIRONMENT - -$fatpacked{"Module/CPANfile/Prereq.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_PREREQ'; - package Module::CPANfile::Prereq;use strict;sub new {my($class,%options)=@_;bless \%options,$class}sub feature {$_[0]->{feature}}sub phase {$_[0]->{phase}}sub type {$_[0]->{type}}sub module {$_[0]->{module}}sub requirement {$_[0]->{requirement}}sub match_feature {my($self,$identifier)=@_;no warnings 'uninitialized';$self->feature eq $identifier}1; -MODULE_CPANFILE_PREREQ - -$fatpacked{"Module/CPANfile/Prereqs.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_PREREQS'; - package Module::CPANfile::Prereqs;use strict;use Carp ();use CPAN::Meta::Feature;use Module::CPANfile::Prereq;sub from_cpan_meta {my($class,$prereqs)=@_;my$self=$class->new;for my$phase (keys %$prereqs){for my$type (keys %{$prereqs->{$phase}}){while (my($module,$requirement)=each %{$prereqs->{$phase}{$type}}){$self->add_prereq(phase=>$phase,type=>$type,module=>$module,requirement=>Module::CPANfile::Requirement->new(name=>$module,version=>$requirement),)}}}$self}sub new {my$class=shift;bless {prereqs=>[],features=>{},},$class}sub add_feature {my($self,$identifier,$description)=@_;$self->{features}{$identifier}={description=>$description }}sub add_prereq {my($self,%args)=@_;$self->add(Module::CPANfile::Prereq->new(%args))}sub add {my($self,$prereq)=@_;push @{$self->{prereqs}},$prereq}sub as_cpan_meta {my$self=shift;$self->{cpanmeta}||= $self->build_cpan_meta}sub build_cpan_meta {my($self,$identifier)=@_;my$prereq_spec={};$self->prereq_each($identifier,sub {my$prereq=shift;$prereq_spec->{$prereq->phase}{$prereq->type}{$prereq->module}=$prereq->requirement->version});CPAN::Meta::Prereqs->new($prereq_spec)}sub prereq_each {my($self,$identifier,$code)=@_;for my$prereq (@{$self->{prereqs}}){next unless$prereq->match_feature($identifier);$code->($prereq)}}sub merged_requirements {my$self=shift;my$reqs=CPAN::Meta::Requirements->new;for my$prereq (@{$self->{prereqs}}){$reqs->add_string_requirement($prereq->module,$prereq->requirement->version)}$reqs}sub find {my($self,$module)=@_;for my$prereq (@{$self->{prereqs}}){return$prereq if$prereq->module eq $module}return}sub identifiers {my$self=shift;keys %{$self->{features}}}sub feature {my($self,$identifier)=@_;my$data=$self->{features}{$identifier}or Carp::croak("Unknown feature '$identifier'");my$prereqs=$self->build_cpan_meta($identifier);CPAN::Meta::Feature->new($identifier,{description=>$data->{description},prereqs=>$prereqs->as_string_hash,})}1; -MODULE_CPANFILE_PREREQS - -$fatpacked{"Module/CPANfile/Requirement.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_REQUIREMENT'; - package Module::CPANfile::Requirement;use strict;sub new {my ($class,%args)=@_;$args{version}||= 0;bless +{name=>delete$args{name},version=>delete$args{version},options=>\%args,},$class}sub name {$_[0]->{name}}sub version {$_[0]->{version}}sub options {$_[0]->{options}}sub has_options {keys %{$_[0]->{options}}> 0}1; -MODULE_CPANFILE_REQUIREMENT - -$fatpacked{"Module/Metadata.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_METADATA'; - package Module::Metadata;sub __clean_eval {eval $_[0]}use strict;use warnings;our$VERSION='1.000027';use Carp qw/croak/;use File::Spec;BEGIN {eval {require Fcntl;Fcntl->import('SEEK_SET');1}or *SEEK_SET=sub {0}}use version 0.87;BEGIN {if ($INC{'Log/Contextual.pm'}){require "Log/Contextual/WarnLogger.pm";Log::Contextual->import('log_info','-default_logger'=>Log::Contextual::WarnLogger->new({env_prefix=>'MODULE_METADATA',}),)}else {*log_info=sub (&) {warn $_[0]->()}}}use File::Find qw(find);my$V_NUM_REGEXP=qr{v?[0-9._]+};my$PKG_FIRST_WORD_REGEXP=qr{ # the FIRST word in a package name - [a-zA-Z_] # the first word CANNOT start with a digit - (?: - [\w']? # can contain letters, digits, _, or ticks - \w # But, NO multi-ticks or trailing ticks - )* - }x;my$PKG_ADDL_WORD_REGEXP=qr{ # the 2nd+ word in a package name - \w # the 2nd+ word CAN start with digits - (?: - [\w']? # and can contain letters or ticks - \w # But, NO multi-ticks or trailing ticks - )* - }x;my$PKG_NAME_REGEXP=qr{ # match a package name - (?: :: )? # a pkg name can start with arisdottle - $PKG_FIRST_WORD_REGEXP # a package word - (?: - (?: :: )+ ### arisdottle (allow one or many times) - $PKG_ADDL_WORD_REGEXP ### a package word - )* # ^ zero, one or many times - (?: - :: # allow trailing arisdottle - )? - }x;my$PKG_REGEXP=qr{ # match a package declaration - ^[\s\{;]* # intro chars on a line - package # the word 'package' - \s+ # whitespace - ($PKG_NAME_REGEXP) # a package name - \s* # optional whitespace - ($V_NUM_REGEXP)? # optional version number - \s* # optional whitesapce - [;\{] # semicolon line terminator or block start (since 5.16) - }x;my$VARNAME_REGEXP=qr{ # match fully-qualified VERSION name - ([\$*]) # sigil - $ or * - ( - ( # optional leading package name - (?:::|\')? # possibly starting like just :: (a la $::VERSION) - (?:\w+(?:::|\'))* # Foo::Bar:: ... - )? - VERSION - )\b - }x;my$VERS_REGEXP=qr{ # match a VERSION definition - (?: - \(\s*$VARNAME_REGEXP\s*\) # with parens - | - $VARNAME_REGEXP # without parens - ) - \s* - =[^=~>] # = but not ==, nor =~, nor => - }x;sub new_from_file {my$class=shift;my$filename=File::Spec->rel2abs(shift);return undef unless defined($filename)&& -f $filename;return$class->_init(undef,$filename,@_)}sub new_from_handle {my$class=shift;my$handle=shift;my$filename=shift;return undef unless defined($handle)&& defined($filename);$filename=File::Spec->rel2abs($filename);return$class->_init(undef,$filename,@_,handle=>$handle)}sub new_from_module {my$class=shift;my$module=shift;my%props=@_;$props{inc}||= \@INC;my$filename=$class->find_module_by_name($module,$props{inc});return undef unless defined($filename)&& -f $filename;return$class->_init($module,$filename,%props)}{my$compare_versions=sub {my ($v1,$op,$v2)=@_;$v1=version->new($v1)unless UNIVERSAL::isa($v1,'version');my$eval_str="\$v1 $op \$v2";my$result=eval$eval_str;log_info {"error comparing versions: '$eval_str' $@"}if $@;return$result};my$normalize_version=sub {my ($version)=@_;if ($version =~ /[=<>!,]/){}elsif (ref$version eq 'version'){$version=$version->is_qv ? $version->normal : $version->stringify}elsif ($version =~ /^[^v][^.]*\.[^.]+\./){$version="v$version"}else {}return$version};my$resolve_module_versions=sub {my$packages=shift;my($file,$version);my$err='';for my$p (@$packages){if (defined($p->{version})){if (defined($version)){if ($compare_versions->($version,'!=',$p->{version})){$err .= " $p->{file} ($p->{version})\n"}else {}}else {$file=$p->{file};$version=$p->{version}}}$file ||= $p->{file}if defined($p->{file})}if ($err){$err=" $file ($version)\n" .$err}my%result=(file=>$file,version=>$version,err=>$err);return \%result};sub provides {my$class=shift;croak "provides() requires key/value pairs \n" if @_ % 2;my%args=@_;croak "provides() takes only one of 'dir' or 'files'\n" if$args{dir}&& $args{files};croak "provides() requires a 'version' argument" unless defined$args{version};croak "provides() does not support version '$args{version}' metadata" unless grep {$args{version}eq $_}qw/1.4 2/;$args{prefix}='lib' unless defined$args{prefix};my$p;if ($args{dir}){$p=$class->package_versions_from_directory($args{dir})}else {croak "provides() requires 'files' to be an array reference\n" unless ref$args{files}eq 'ARRAY';$p=$class->package_versions_from_directory($args{files})}if (length$args{prefix}){$args{prefix}=~ s{/$}{};for my$v (values %$p){$v->{file}="$args{prefix}/$v->{file}"}}return$p}sub package_versions_from_directory {my ($class,$dir,$files)=@_;my@files;if ($files){@files=@$files}else {find({wanted=>sub {push@files,$_ if -f $_ && /\.pm$/},no_chdir=>1,},$dir)}my(%prime,%alt);for my$file (@files){my$mapped_filename=File::Spec::Unix->abs2rel($file,$dir);my@path=split(/\//,$mapped_filename);(my$prime_package=join('::',@path))=~ s/\.pm$//;my$pm_info=$class->new_from_file($file);for my$package ($pm_info->packages_inside){next if$package eq 'main';next if$package eq 'DB';next if grep /^_/,split(/::/,$package);my$version=$pm_info->version($package);$prime_package=$package if lc($prime_package)eq lc($package);if ($package eq $prime_package){if (exists($prime{$package})){croak "Unexpected conflict in '$package'; multiple versions found.\n"}else {$mapped_filename="$package.pm" if lc("$package.pm")eq lc($mapped_filename);$prime{$package}{file}=$mapped_filename;$prime{$package}{version}=$version if defined($version)}}else {push(@{$alt{$package}},{file=>$mapped_filename,version=>$version,})}}}for my$package (keys(%alt)){my$result=$resolve_module_versions->($alt{$package});if (exists($prime{$package})){if ($result->{err}){log_info {"Found conflicting versions for package '$package'\n" ." $prime{$package}{file} ($prime{$package}{version})\n" .$result->{err}}}elsif (defined($result->{version})){if (exists($prime{$package}{version})&& defined($prime{$package}{version})){if ($compare_versions->($prime{$package}{version},'!=',$result->{version})){log_info {"Found conflicting versions for package '$package'\n" ." $prime{$package}{file} ($prime{$package}{version})\n" ." $result->{file} ($result->{version})\n"}}}else {$prime{$package}{file}=$result->{file};$prime{$package}{version}=$result->{version}}}else {}}else {if ($result->{err}){log_info {"Found conflicting versions for package '$package'\n" .$result->{err}}}$prime{$package}{file}=$result->{file};$prime{$package}{version}=$result->{version}if defined($result->{version})}}for (grep defined $_->{version},values%prime){$_->{version}=$normalize_version->($_->{version})}return \%prime}}sub _init {my$class=shift;my$module=shift;my$filename=shift;my%props=@_;my$handle=delete$props{handle};my(%valid_props,@valid_props);@valid_props=qw(collect_pod inc);@valid_props{@valid_props}=delete(@props{@valid_props});warn "Unknown properties: @{[keys %props]}\n" if scalar(%props);my%data=(module=>$module,filename=>$filename,version=>undef,packages=>[],versions=>{},pod=>{},pod_headings=>[],collect_pod=>0,%valid_props,);my$self=bless(\%data,$class);if (not $handle){my$filename=$self->{filename};open$handle,'<',$filename or croak("Can't open '$filename': $!");$self->_handle_bom($handle,$filename)}$self->_parse_fh($handle);unless($self->{module}and length($self->{module})){my ($v,$d,$f)=File::Spec->splitpath($self->{filename});if($f =~ /\.pm$/){$f =~ s/\..+$//;my@candidates=grep /$f$/,@{$self->{packages}};$self->{module}=shift(@candidates)}else {if(grep /main/,@{$self->{packages}}){$self->{module}='main'}else {$self->{module}=$self->{packages}[0]|| ''}}}$self->{version}=$self->{versions}{$self->{module}}if defined($self->{module});return$self}sub _do_find_module {my$class=shift;my$module=shift || croak 'find_module_by_name() requires a package name';my$dirs=shift || \@INC;my$file=File::Spec->catfile(split(/::/,$module));for my$dir (@$dirs){my$testfile=File::Spec->catfile($dir,$file);return [File::Spec->rel2abs($testfile),$dir ]if -e $testfile and!-d _;$testfile .= '.pm';return [File::Spec->rel2abs($testfile),$dir ]if -e $testfile}return}sub find_module_by_name {my$found=shift()->_do_find_module(@_)or return;return$found->[0]}sub find_module_dir_by_name {my$found=shift()->_do_find_module(@_)or return;return$found->[1]}sub _parse_version_expression {my$self=shift;my$line=shift;my($sigil,$variable_name,$package);if ($line =~ /$VERS_REGEXP/o){($sigil,$variable_name,$package)=$2 ? ($1,$2,$3): ($4,$5,$6);if ($package){$package=($package eq '::')? 'main' : $package;$package =~ s/::$//}}return ($sigil,$variable_name,$package)}sub _handle_bom {my ($self,$fh,$filename)=@_;my$pos=tell$fh;return unless defined$pos;my$buf=' ' x 2;my$count=read$fh,$buf,length$buf;return unless defined$count and $count >= 2;my$encoding;if ($buf eq "\x{FE}\x{FF}"){$encoding='UTF-16BE'}elsif ($buf eq "\x{FF}\x{FE}"){$encoding='UTF-16LE'}elsif ($buf eq "\x{EF}\x{BB}"){$buf=' ';$count=read$fh,$buf,length$buf;if (defined$count and $count >= 1 and $buf eq "\x{BF}"){$encoding='UTF-8'}}if (defined$encoding){if ("$]" >= 5.008){binmode($fh,":encoding($encoding)")}}else {seek$fh,$pos,SEEK_SET or croak(sprintf "Can't reset position to the top of '$filename'")}return$encoding}sub _parse_fh {my ($self,$fh)=@_;my($in_pod,$seen_end,$need_vers)=(0,0,0);my(@packages,%vers,%pod,@pod);my$package='main';my$pod_sect='';my$pod_data='';my$in_end=0;while (defined(my$line=<$fh>)){my$line_num=$.;chomp($line);my$is_cut;if ($line =~ /^=([a-zA-Z].*)/){my$cmd=$1;$is_cut=$cmd =~ /^cut(?:[^a-zA-Z]|$)/;$in_pod=!$is_cut}if ($in_pod){if ($line =~ /^=head[1-4]\s+(.+)\s*$/){push(@pod,$1);if ($self->{collect_pod}&& length($pod_data)){$pod{$pod_sect}=$pod_data;$pod_data=''}$pod_sect=$1}elsif ($self->{collect_pod}){$pod_data .= "$line\n"}}elsif ($is_cut){if ($self->{collect_pod}&& length($pod_data)){$pod{$pod_sect}=$pod_data;$pod_data=''}$pod_sect=''}else {next if$in_end;next if$line =~ /^\s*#/;if ($line eq '__END__'){$in_end++;next}last if$line eq '__DATA__';my($version_sigil,$version_fullname,$version_package)=index($line,'VERSION')>= 1 ? $self->_parse_version_expression($line): ();if ($line =~ /$PKG_REGEXP/o){$package=$1;my$version=$2;push(@packages,$package)unless grep($package eq $_,@packages);$need_vers=defined$version ? 0 : 1;if (not exists$vers{$package}and defined$version){my$dwim_version=eval {_dwim_version($version)};croak "Version '$version' from $self->{filename} does not appear to be valid:\n$line\n\nThe fatal error was: $@\n" unless defined$dwim_version;$vers{$package}=$dwim_version}}elsif ($version_fullname && $version_package){push(@packages,$version_package)unless grep($version_package eq $_,@packages);$need_vers=0 if$version_package eq $package;unless (defined$vers{$version_package}&& length$vers{$version_package}){$vers{$version_package}=$self->_evaluate_version_line($version_sigil,$version_fullname,$line)}}elsif ($package eq 'main' && $version_fullname &&!exists($vers{main})){$need_vers=0;my$v=$self->_evaluate_version_line($version_sigil,$version_fullname,$line);$vers{$package}=$v;push(@packages,'main')}elsif ($package eq 'main' &&!exists($vers{main})&& $line =~ /\w/){$need_vers=1;$vers{main}='';push(@packages,'main')}elsif ($version_fullname && $need_vers){$need_vers=0;my$v=$self->_evaluate_version_line($version_sigil,$version_fullname,$line);unless (defined$vers{$package}&& length$vers{$package}){$vers{$package}=$v}}}}if ($self->{collect_pod}&& length($pod_data)){$pod{$pod_sect}=$pod_data}$self->{versions}=\%vers;$self->{packages}=\@packages;$self->{pod}=\%pod;$self->{pod_headings}=\@pod}{my$pn=0;sub _evaluate_version_line {my$self=shift;my($sigil,$variable_name,$line)=@_;$pn++;my$eval=qq{ my \$dummy = q# Hide from _packages_inside() - #; package Module::Metadata::_version::p${pn}; - use version; - sub { - local $sigil$variable_name; - $line; - \$$variable_name - }; - };$eval=$1 if$eval =~ m{^(.+)}s;local $^W;my$vsub=__clean_eval($eval);if ($@ =~ /Can't locate/ && -d 'lib'){local@INC=('lib',@INC);$vsub=__clean_eval($eval)}warn "Error evaling version line '$eval' in $self->{filename}: $@\n" if $@;(ref($vsub)eq 'CODE')or croak "failed to build version sub for $self->{filename}";my$result=eval {$vsub->()};croak "Could not get version from $self->{filename} by executing:\n$eval\n\nThe fatal error was: $@\n" if $@;my$version=eval {_dwim_version($result)};croak "Version '$result' from $self->{filename} does not appear to be valid:\n$eval\n\nThe fatal error was: $@\n" unless defined$version;return$version}}{my@version_prep=(sub {return shift},sub {my$v=shift;$v =~ s{([0-9])[a-z-].*$}{$1}i;return$v},sub {my$v=shift;my$num_dots=()=$v =~ m{(\.)}g;my$num_unders=()=$v =~ m{(_)}g;my$leading_v=substr($v,0,1)eq 'v';if (!$leading_v && $num_dots < 2 && $num_unders > 1){$v =~ s{_}{}g;$num_unders=()=$v =~ m{(_)}g}return$v},sub {my$v=shift;no warnings 'numeric';return 0 + $v},);sub _dwim_version {my ($result)=shift;return$result if ref($result)eq 'version';my ($version,$error);for my$f (@version_prep){$result=$f->($result);$version=eval {version->new($result)};$error ||= $@ if $@;last if defined$version}croak$error unless defined$version;return$version}}sub name {$_[0]->{module}}sub filename {$_[0]->{filename}}sub packages_inside {@{$_[0]->{packages}}}sub pod_inside {@{$_[0]->{pod_headings}}}sub contains_pod {0+@{$_[0]->{pod_headings}}}sub version {my$self=shift;my$mod=shift || $self->{module};my$vers;if (defined($mod)&& length($mod)&& exists($self->{versions}{$mod})){return$self->{versions}{$mod}}else {return undef}}sub pod {my$self=shift;my$sect=shift;if (defined($sect)&& length($sect)&& exists($self->{pod}{$sect})){return$self->{pod}{$sect}}else {return undef}}sub is_indexable {my ($self,$package)=@_;my@indexable_packages=grep {$_ ne 'main'}$self->packages_inside;return!!grep {$_ eq $package}@indexable_packages if$package;return!!@indexable_packages}1; -MODULE_METADATA - -$fatpacked{"Parse/CPAN/Meta.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARSE_CPAN_META'; - use 5.008001;use strict;package Parse::CPAN::Meta;our$VERSION='1.4414';use Exporter;use Carp 'croak';our@ISA=qw/Exporter/;our@EXPORT_OK=qw/Load LoadFile/;sub load_file {my ($class,$filename)=@_;my$meta=_slurp($filename);if ($filename =~ /\.ya?ml$/){return$class->load_yaml_string($meta)}elsif ($filename =~ /\.json$/){return$class->load_json_string($meta)}else {$class->load_string($meta)}}sub load_string {my ($class,$string)=@_;if ($string =~ /^---/){return$class->load_yaml_string($string)}elsif ($string =~ /^\s*\{/){return$class->load_json_string($string)}else {return$class->load_yaml_string($string)}}sub load_yaml_string {my ($class,$string)=@_;my$backend=$class->yaml_backend();my$data=eval {no strict 'refs';&{"$backend\::Load"}($string)};croak $@ if $@;return$data || {}}sub load_json_string {my ($class,$string)=@_;my$data=eval {$class->json_backend()->new->decode($string)};croak $@ if $@;return$data || {}}sub yaml_backend {if (!defined$ENV{PERL_YAML_BACKEND}){_can_load('CPAN::Meta::YAML',0.011)or croak "CPAN::Meta::YAML 0.011 is not available\n";return "CPAN::Meta::YAML"}else {my$backend=$ENV{PERL_YAML_BACKEND};_can_load($backend)or croak "Could not load PERL_YAML_BACKEND '$backend'\n";$backend->can("Load")or croak "PERL_YAML_BACKEND '$backend' does not implement Load()\n";return$backend}}sub json_backend {if (!$ENV{PERL_JSON_BACKEND}or $ENV{PERL_JSON_BACKEND}eq 'JSON::PP'){_can_load('JSON::PP'=>2.27103)or croak "JSON::PP 2.27103 is not available\n";return 'JSON::PP'}else {_can_load('JSON'=>2.5)or croak "JSON 2.5 is required for " ."\$ENV{PERL_JSON_BACKEND} = '$ENV{PERL_JSON_BACKEND}'\n";return "JSON"}}sub _slurp {require Encode;open my$fh,"<:raw","$_[0]" or die "can't open $_[0] for reading: $!";my$content=do {local $/;<$fh>};$content=Encode::decode('UTF-8',$content,Encode::PERLQQ());return$content}sub _can_load {my ($module,$version)=@_;(my$file=$module)=~ s{::}{/}g;$file .= ".pm";return 1 if$INC{$file};return 0 if exists$INC{$file};eval {require$file;1}or return 0;if (defined$version){eval {$module->VERSION($version);1}or return 0}return 1}sub LoadFile ($) {return Load(_slurp(shift))}sub Load ($) {require CPAN::Meta::YAML;my$object=eval {CPAN::Meta::YAML::Load(shift)};croak $@ if $@;return$object}1; -PARSE_CPAN_META - -$fatpacked{"Parse/PMFile.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARSE_PMFILE'; - package Parse::PMFile;sub __clean_eval {eval $_[0]}use strict;use warnings;use Safe;use JSON::PP ();use Dumpvalue;use version ();use File::Spec ();our$VERSION='0.36';our$VERBOSE=0;our$ALLOW_DEV_VERSION=0;our$FORK=0;our$UNSAFE=$] < 5.010000 ? 1 : 0;sub new {my ($class,$meta,$opts)=@_;bless {%{$opts || {}},META_CONTENT=>$meta},$class}sub parse {my ($self,$pmfile)=@_;$pmfile =~ s|\\|/|g;my($filemtime)=(stat$pmfile)[9];$self->{MTIME}=$filemtime;$self->{PMFILE}=$pmfile;unless ($self->_version_from_meta_ok){my$version;unless (eval {$version=$self->_parse_version;1}){$self->_verbose(1,"error with version in $pmfile: $@");return}$self->{VERSION}=$version;if ($self->{VERSION}=~ /^\{.*\}$/){}elsif ($self->{VERSION}=~ /[_\s]/ &&!$self->{ALLOW_DEV_VERSION}&&!$ALLOW_DEV_VERSION){return}}my($ppp)=$self->_packages_per_pmfile;my@keys_ppp=$self->_filter_ppps(sort keys %$ppp);$self->_verbose(1,"Will check keys_ppp[@keys_ppp]\n");my ($package,%errors);my%checked_in;DBPACK: foreach$package (@keys_ppp){if ($package !~ /^\w[\w\:\']*\w?\z/ || $package !~ /\w\z/ || $package =~ /:/ && $package !~ /::/ || $package =~ /\w:\w/ || $package =~ /:::/){$self->_verbose(1,"Package[$package] did not pass the ultimate sanity check");delete$ppp->{$package};next}if ($self->{USERID}&& $self->{PERMISSIONS}&&!$self->_perm_check($package)){delete$ppp->{$package};next}{my (undef,$module)=split m{/lib/},$self->{PMFILE},2;if ($module){$module =~ s{\.pm\z}{};$module =~ s{/}{::}g;if (lc$module eq lc$package && $module ne $package){$errors{$package}={indexing_warning=>"Capitalization of package ($package) does not match filename!",infile=>$self->{PMFILE},}}}}my$pp=$ppp->{$package};if ($pp->{version}&& $pp->{version}=~ /^\{.*\}$/){my$err=JSON::PP::decode_json($pp->{version});if ($err->{x_normalize}){$errors{$package}={normalize=>$err->{version},infile=>$pp->{infile},};$pp->{version}="undef"}elsif ($err->{openerr}){$pp->{version}="undef";$self->_verbose(1,qq{Parse::PMFile was not able to - read the file. It issued the following error: C< $err->{r} >},);$errors{$package}={open=>$err->{r},infile=>$pp->{infile},}}else {$pp->{version}="undef";$self->_verbose(1,qq{Parse::PMFile was not able to - parse the following line in that file: C< $err->{line} > - - Note: the indexer is running in a Safe compartement and cannot - provide the full functionality of perl in the VERSION line. It - is trying hard, but sometime it fails. As a workaround, please - consider writing a META.yml that contains a 'provides' - attribute or contact the CPAN admins to investigate (yet - another) workaround against "Safe" limitations.)},);$errors{$package}={parse_version=>$err->{line},infile=>$err->{file},}}}for ($package,$pp->{version},){if (!defined || /^\s*$/ || /\s/){delete$ppp->{$package};next}}$checked_in{$package}=$ppp->{$package}}return (wantarray && %errors)? (\%checked_in,\%errors): \%checked_in}sub _perm_check {my ($self,$package)=@_;my$userid=$self->{USERID};my$module=$self->{PERMISSIONS}->module_permissions($package);return 1 if!$module;return 1 if defined$module->m && $module->m eq $userid;return 1 if defined$module->f && $module->f eq $userid;return 1 if defined$module->c && grep {$_ eq $userid}@{$module->c};return}sub _parse_version {my$self=shift;use strict;my$pmfile=$self->{PMFILE};my$tmpfile=File::Spec->catfile(File::Spec->tmpdir,"ParsePMFile$$" .rand(1000));my$pmcp=$pmfile;for ($pmcp){s/([^\\](\\\\)*)@/$1\\@/g}my($v);{package main;my$pid;if ($self->{FORK}|| $FORK){$pid=fork();die "Can't fork: $!" unless defined$pid}if ($pid){waitpid($pid,0);if (open my$fh,'<',$tmpfile){$v=<$fh>}}else {my($comp)=Safe->new;my$eval=qq{ - local(\$^W) = 0; - Parse::PMFile::_parse_version_safely("$pmcp"); - };$comp->permit("entereval");$comp->share("*Parse::PMFile::_parse_version_safely");$comp->share("*version::new");$comp->share("*version::numify");$comp->share_from('main',['*version::','*charstar::','*Exporter::','*DynaLoader::']);$comp->share_from('version',['&qv']);$comp->permit(":base_math");$comp->deny(qw/enteriter iter unstack goto/);version->import('qv')if$self->{UNSAFE}|| $UNSAFE;{no strict;$v=($self->{UNSAFE}|| $UNSAFE)? eval$eval : $comp->reval($eval)}if ($@){my$err=$@;if (ref$err){if ($err->{line}=~ /([\$*])([\w\:\']*)\bVERSION\b.*?\=(.*)/){local($^W)=0;my ($sigil,$vstr)=($1,$3);$self->_restore_overloaded_stuff(1)if$err->{line}=~ /use\s+version\b|version\->|qv\(/;$v=($self->{UNSAFE}|| $UNSAFE)? eval$vstr : $comp->reval($vstr);$v=$$v if$sigil eq '*' && ref$v}if ($@ or!$v){$self->_verbose(1,sprintf("reval failed: err[%s] for eval[%s]",JSON::PP::encode_json($err),$eval,));$v=JSON::PP::encode_json($err)}}else {$v=JSON::PP::encode_json({openerr=>$err })}}if (defined$v){$v=$v->numify if ref($v)=~ /^version(::vpp)?$/}else {$v=""}if ($self->{FORK}|| $FORK){open my$fh,'>:utf8',$tmpfile;print$fh $v;exit 0}else {utf8::encode($v);$v=undef if defined$v &&!length$v;$comp->erase;$self->_restore_overloaded_stuff}}}unlink$tmpfile if ($self->{FORK}|| $FORK)&& -e $tmpfile;return$self->_normalize_version($v)}sub _restore_overloaded_stuff {my ($self,$used_version_in_safe)=@_;return if$self->{UNSAFE}|| $UNSAFE;no strict 'refs';no warnings 'redefine';my$restored;if ($INC{'version/vxs.pm'}){*{'version::(""'}=\&version::vxs::stringify;*{'version::(0+'}=\&version::vxs::numify;*{'version::(cmp'}=\&version::vxs::VCMP;*{'version::(<=>'}=\&version::vxs::VCMP;*{'version::(bool'}=\&version::vxs::boolean;$restored=1}if ($INC{'version/vpp.pm'}){{package charstar;overload->import}if (!$used_version_in_safe){package version::vpp;overload->import}unless ($restored){*{'version::(""'}=\&version::vpp::stringify;*{'version::(0+'}=\&version::vpp::numify;*{'version::(cmp'}=\&version::vpp::vcmp;*{'version::(<=>'}=\&version::vpp::vcmp;*{'version::(bool'}=\&version::vpp::vbool}*{'version::vpp::(""'}=\&version::vpp::stringify;*{'version::vpp::(0+'}=\&version::vpp::numify;*{'version::vpp::(cmp'}=\&version::vpp::vcmp;*{'version::vpp::(<=>'}=\&version::vpp::vcmp;*{'version::vpp::(bool'}=\&version::vpp::vbool;*{'charstar::(""'}=\&charstar::thischar;*{'charstar::(0+'}=\&charstar::thischar;*{'charstar::(++'}=\&charstar::increment;*{'charstar::(--'}=\&charstar::decrement;*{'charstar::(+'}=\&charstar::plus;*{'charstar::(-'}=\&charstar::minus;*{'charstar::(*'}=\&charstar::multiply;*{'charstar::(cmp'}=\&charstar::cmp;*{'charstar::(<=>'}=\&charstar::spaceship;*{'charstar::(bool'}=\&charstar::thischar;*{'charstar::(='}=\&charstar::clone;$restored=1}if (!$restored){*{'version::(""'}=\&version::stringify;*{'version::(0+'}=\&version::numify;*{'version::(cmp'}=\&version::vcmp;*{'version::(<=>'}=\&version::vcmp;*{'version::(bool'}=\&version::boolean}}sub _packages_per_pmfile {my$self=shift;my$ppp={};my$pmfile=$self->{PMFILE};my$filemtime=$self->{MTIME};my$version=$self->{VERSION};open my$fh,"<","$pmfile" or return$ppp;local $/="\n";my$inpod=0;PLINE: while (<$fh>){chomp;my($pline)=$_;$inpod=$pline =~ /^=(?!cut)/ ? 1 : $pline =~ /^=cut/ ? 0 : $inpod;next if$inpod;next if substr($pline,0,4)eq "=cut";$pline =~ s/\#.*//;next if$pline =~ /^\s*$/;if ($pline =~ /^__(?:END|DATA)__\b/ and $pmfile !~ /\.PL$/){last PLINE}my$pkg;my$strict_version;if ($pline =~ m{ - # (.*) # takes too much time if $pline is long - (? 128;$ppp->{$pkg}{parsed}++;$ppp->{$pkg}{infile}=$pmfile;if ($self->_simile($pmfile,$pkg)){$ppp->{$pkg}{simile}=$pmfile;if ($self->_version_from_meta_ok){my$provides=$self->{META_CONTENT}{provides};if (exists$provides->{$pkg}){if (defined$provides->{$pkg}{version}){my$v=$provides->{$pkg}{version};if ($v =~ /[_\s]/ &&!$self->{ALLOW_DEV_VERSION}&&!$ALLOW_DEV_VERSION){next PLINE}unless (eval {$version=$self->_normalize_version($v);1}){$self->_verbose(1,"error with version in $pmfile: $@");next}$ppp->{$pkg}{version}=$version}else {$ppp->{$pkg}{version}="undef"}}}else {if (defined$strict_version){$ppp->{$pkg}{version}=$strict_version }else {$ppp->{$pkg}{version}=defined$version ? $version : ""}no warnings;if ($version eq 'undef'){$ppp->{$pkg}{version}=$version unless defined$ppp->{$pkg}{version}}else {$ppp->{$pkg}{version}=$version if$version > $ppp->{$pkg}{version}|| $version gt $ppp->{$pkg}{version}}}}else {$ppp->{$pkg}{version}=$version unless defined$ppp->{$pkg}{version}&& length($ppp->{$pkg}{version})}$ppp->{$pkg}{filemtime}=$filemtime}else {}}close$fh;$ppp}{no strict;sub _parse_version_safely {my($parsefile)=@_;my$result;local*FH;local $/="\n";open(FH,$parsefile)or die "Could not open '$parsefile': $!";my$inpod=0;while (){$inpod=/^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;next if$inpod || /^\s*#/;last if /^__(?:END|DATA)__\b/;chop;if (my ($ver)=/package \s+ \S+ \s+ (\S+) \s* [;{]/x){return$ver if version::is_lax($ver)}next unless /(?<=])\=(?![=>])/;my$current_parsed_line=$_;my$eval=qq{ - package # - ExtUtils::MakeMaker::_version; - - local $1$2; - \$$2=undef; do { - $_ - }; \$$2 - };local $^W=0;local$SIG{__WARN__}=sub {};$result=__clean_eval($eval);if ($@ or!defined$result){die +{eval=>$eval,line=>$current_parsed_line,file=>$parsefile,err=>$@,}}last}close FH;$result="undef" unless defined$result;if ((ref$result)=~ /^version(?:::vpp)?\b/){$result=$result->numify}return$result}}sub _filter_ppps {my($self,@ppps)=@_;my@res;MANI: for my$ppp (@ppps){if ($self->{META_CONTENT}){my$no_index=$self->{META_CONTENT}{no_index}|| $self->{META_CONTENT}{private};if (ref($no_index)eq 'HASH'){my%map=(package=>qr{\z},namespace=>qr{::},);for my$k (qw(package namespace)){next unless my$v=$no_index->{$k};my$rest=$map{$k};if (ref$v eq "ARRAY"){for my$ve (@$v){$ve =~ s|::$||;if ($ppp =~ /^$ve$rest/){$self->_verbose(1,"Skipping ppp[$ppp] due to ve[$ve]");next MANI}else {$self->_verbose(1,"NOT skipping ppp[$ppp] due to ve[$ve]")}}}else {$v =~ s|::$||;if ($ppp =~ /^$v$rest/){$self->_verbose(1,"Skipping ppp[$ppp] due to v[$v]");next MANI}else {$self->_verbose(1,"NOT skipping ppp[$ppp] due to v[$v]")}}}}else {$self->_verbose(1,"No keyword 'no_index' or 'private' in META_CONTENT")}}else {}push@res,$ppp}$self->_verbose(1,"Result of filter_ppps: res[@res]");@res}sub _simile {my($self,$file,$package)=@_;$file =~ s|.*/||;$file =~ s|\.pm(?:\.PL)?||;my$ret=$package =~ m/\b\Q$file\E$/;$ret ||= 0;unless ($ret){$ret=1 if lc$file eq 'version'}$self->_verbose(1,"Result of simile(): file[$file] package[$package] ret[$ret]\n");$ret}sub _normalize_version {my($self,$v)=@_;$v="undef" unless defined$v;my$dv=Dumpvalue->new;my$sdv=$dv->stringify($v,1);$self->_verbose(1,"Result of normalize_version: sdv[$sdv]\n");return$v if$v eq "undef";return$v if$v =~ /^\{.*\}$/;$v =~ s/^\s+//;$v =~ s/\s+\z//;if ($v =~ /_/){return$v }if (!version::is_lax($v)){return JSON::PP::encode_json({x_normalize=>'version::is_lax failed',version=>$v })}my$vv=eval {no warnings;version->new($v)->numify};if ($@){return JSON::PP::encode_json({x_normalize=>$@,version=>$v })}if ($vv eq $v){}else {my$forced=$self->_force_numeric($v);if ($forced eq $vv){}elsif ($forced =~ /^v(.+)/){$vv=version->new($1)->numify}else {if ($forced==$vv){$vv=$forced}}}return$vv}sub _force_numeric {my($self,$v)=@_;$v=$self->_readable($v);if ($v =~ /^(\+?)(\d*)(\.(\d*))?/ && (defined $2 && length $2 || defined $4 && length $4)){my$two=defined $2 ? $2 : "";my$three=defined $3 ? $3 : "";$v="$two$three"}$v}sub _version_from_meta_ok {my($self)=@_;return$self->{VERSION_FROM_META_OK}if exists$self->{VERSION_FROM_META_OK};my$c=$self->{META_CONTENT};return($self->{VERSION_FROM_META_OK}=0)unless$c->{provides};my ($mb_v)=(defined$c->{generated_by}? $c->{generated_by}: '')=~ /Module::Build version ([\d\.]+)/;return($self->{VERSION_FROM_META_OK}=1)unless$mb_v;return($self->{VERSION_FROM_META_OK}=1)if$mb_v eq '0.250.0';if ($mb_v >= 0.19 && $mb_v < 0.26 &&!keys %{$c->{provides}}){return($self->{VERSION_FROM_META_OK}=0)}return($self->{VERSION_FROM_META_OK}=1)}sub _verbose {my($self,$level,@what)=@_;warn@what if$level <= ((ref$self && $self->{VERBOSE})|| $VERBOSE)}sub _vcmp {my($self,$l,$r)=@_;local($^W)=0;$self->_verbose(9,"l[$l] r[$r]");return 0 if$l eq $r;for ($l,$r){s/_//g}$self->_verbose(9,"l[$l] r[$r]");for ($l,$r){next unless tr/.// > 1 || /^v/;s/^v?/v/;1 while s/\.0+(\d)/.$1/}$self->_verbose(9,"l[$l] r[$r]");if ($l=~/^v/ <=> $r=~/^v/){for ($l,$r){next if /^v/;$_=$self->_float2vv($_)}}$self->_verbose(9,"l[$l] r[$r]");my$lvstring="v0";my$rvstring="v0";if ($] >= 5.006 && $l =~ /^v/ && $r =~ /^v/){$lvstring=$self->_vstring($l);$rvstring=$self->_vstring($r);$self->_verbose(9,sprintf "lv[%vd] rv[%vd]",$lvstring,$rvstring)}return (($l ne "undef")<=> ($r ne "undef")|| $lvstring cmp $rvstring || $l <=> $r || $l cmp $r)}sub _vgt {my($self,$l,$r)=@_;$self->_vcmp($l,$r)> 0}sub _vlt {my($self,$l,$r)=@_;$self->_vcmp($l,$r)< 0}sub _vge {my($self,$l,$r)=@_;$self->_vcmp($l,$r)>= 0}sub _vle {my($self,$l,$r)=@_;$self->_vcmp($l,$r)<= 0}sub _vstring {my($self,$n)=@_;$n =~ s/^v// or die "Parse::PMFile::_vstring() called with invalid arg [$n]";pack "U*",split /\./,$n}sub _float2vv {my($self,$n)=@_;my($rev)=int($n);$rev ||= 0;my($mantissa)=$n =~ /\.(\d{1,12})/;$mantissa ||= 0;$mantissa .= "0" while length($mantissa)%3;my$ret="v" .$rev;while ($mantissa){$mantissa =~ s/(\d{1,3})// or die "Panic: length>0 but not a digit? mantissa[$mantissa]";$ret .= ".".int($1)}$ret =~ s/(\.0)+/.0/;$ret}sub _readable {my($self,$n)=@_;$n =~ /^([\w\-\+\.]+)/;return $1 if defined $1 && length($1)>0;if ($] < 5.006){$self->_verbose(9,"Suspicious version string seen [$n]\n");return$n}my$better=sprintf "v%vd",$n;$self->_verbose(9,"n[$n] better[$better]");return$better}1; -PARSE_PMFILE - -$fatpacked{"String/ShellQuote.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'STRING_SHELLQUOTE'; - package String::ShellQuote;use strict;use vars qw($VERSION @ISA @EXPORT);require Exporter;$VERSION='1.04';@ISA=qw(Exporter);@EXPORT=qw(shell_quote shell_quote_best_effort shell_comment_quote);sub croak {require Carp;goto&Carp::croak}sub _shell_quote_backend {my@in=@_;my@err=();if (0){require RS::Handy;print RS::Handy::data_dump(\@in)}return \@err,'' unless@in;my$ret='';my$saw_non_equal=0;for (@in){if (!defined $_ or $_ eq ''){$_="''";next}if (s/\x00//g){push@err,"No way to quote string containing null (\\000) bytes"}my$escape=0;if (/=/){if (!$saw_non_equal){$escape=1}}else {$saw_non_equal=1}if (m|[^\w!%+,\-./:=@^]|){$escape=1}if ($escape || (!$saw_non_equal && /=/)){s/'/'\\''/g;s|((?:'\\''){2,})|q{'"} . (q{'} x (length($1) / 4)) . q{"'}|ge;$_="'$_'";s/^''//;s/''$//}}continue {$ret .= "$_ "}chop$ret;return \@err,$ret}sub shell_quote {my ($rerr,$s)=_shell_quote_backend @_;if (@$rerr){my%seen;@$rerr=grep {!$seen{$_}++}@$rerr;my$s=join '',map {"shell_quote(): $_\n"}@$rerr;chomp$s;croak$s}return$s}sub shell_quote_best_effort {my ($rerr,$s)=_shell_quote_backend @_;return$s}sub shell_comment_quote {return '' unless @_;unless (@_==1){croak "Too many arguments to shell_comment_quote " ."(got " .@_ ." expected 1)"}local $_=shift;s/\n/\n#/g;return $_}1; -STRING_SHELLQUOTE - -$fatpacked{"lib/core/only.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'LIB_CORE_ONLY'; - package lib::core::only;use strict;use warnings FATAL=>'all';use Config;sub import {@INC=@Config{qw(privlibexp archlibexp)};return}1; -LIB_CORE_ONLY - -$fatpacked{"local/lib.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'LOCAL_LIB'; - package local::lib;use 5.006;use strict;use warnings;use Config;our$VERSION='2.000015';$VERSION=eval$VERSION;BEGIN {*_WIN32=($^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'symbian')? sub(){1}: sub(){0};*_USE_FSPEC=($^O eq 'MacOS' || $^O eq 'VMS' || $INC{'File/Spec.pm'})? sub(){1}: sub(){0}}our$_DIR_JOIN=_WIN32 ? '\\' : '/';our$_DIR_SPLIT=(_WIN32 || $^O eq 'cygwin')? qr{[\\/]} : qr{/};our$_ROOT=_WIN32 ? do {my$UNC=qr{[\\/]{2}[^\\/]+[\\/][^\\/]+};qr{^(?:$UNC|[A-Za-z]:|)$_DIR_SPLIT}}: qr{^/};our$_PERL;sub _cwd {my$drive=shift;if (!$_PERL){($_PERL)=$^X =~ /(.+)/;if (_is_abs($_PERL)){}elsif (-x $Config{perlpath}){$_PERL=$Config{perlpath}}else {($_PERL)=map {/(.*)/}grep {-x $_}map {join($_DIR_JOIN,$_,$_PERL)}split /\Q$Config{path_sep}\E/,$ENV{PATH}}}local@ENV{qw(PATH IFS CDPATH ENV BASH_ENV)};my$cmd=$drive ? "eval { Cwd::getdcwd(q($drive)) }" : 'getcwd';my$cwd=`"$_PERL" -MCwd -le "print $cmd"`;chomp$cwd;if (!length$cwd && $drive){$cwd=$drive}$cwd =~ s/$_DIR_SPLIT?$/$_DIR_JOIN/;$cwd}sub _catdir {if (_USE_FSPEC){require File::Spec;File::Spec->catdir(@_)}else {my$dir=join($_DIR_JOIN,@_);$dir =~ s{($_DIR_SPLIT)(?:\.?$_DIR_SPLIT)+}{$1}g;$dir}}sub _is_abs {if (_USE_FSPEC){require File::Spec;File::Spec->file_name_is_absolute($_[0])}else {$_[0]=~ $_ROOT}}sub _rel2abs {my ($dir,$base)=@_;return$dir if _is_abs($dir);$base=_WIN32 && $dir =~ s/^([A-Za-z]:)// ? _cwd("$1"): $base ? $base : _cwd;return _catdir($base,$dir)}sub import {my ($class,@args)=@_;push@args,@ARGV if $0 eq '-';my@steps;my%opts;my$shelltype;while (@args){my$arg=shift@args;if ($arg =~ /\xE2\x88\x92/ or $arg =~ /āˆ’/){die <<'DEATH'}elsif ($arg eq '--self-contained'){die <<'DEATH'}elsif($arg =~ /^--deactivate(?:=(.*))?$/){my$path=defined $1 ? $1 : shift@args;push@steps,['deactivate',$path]}elsif ($arg eq '--deactivate-all'){push@steps,['deactivate_all']}elsif ($arg =~ /^--shelltype(?:=(.*))?$/){$shelltype=defined $1 ? $1 : shift@args}elsif ($arg eq '--no-create'){$opts{no_create}=1}elsif ($arg =~ /^--/){die "Unknown import argument: $arg"}else {push@steps,['activate',$arg]}}if (!@steps){push@steps,['activate',undef]}my$self=$class->new(%opts);for (@steps){my ($method,@args)=@$_;$self=$self->$method(@args)}if ($0 eq '-'){print$self->environment_vars_string($shelltype);exit 0}else {$self->setup_local_lib}}sub new {my$class=shift;bless {@_},$class}sub clone {my$self=shift;bless {%$self,@_},ref$self}sub inc {$_[0]->{inc}||= \@INC}sub libs {$_[0]->{libs}||= [\'PERL5LIB' ]}sub bins {$_[0]->{bins}||= [\'PATH' ]}sub roots {$_[0]->{roots}||= [\'PERL_LOCAL_LIB_ROOT' ]}sub extra {$_[0]->{extra}||= {}}sub no_create {$_[0]->{no_create}}my$_archname=$Config{archname};my$_version=$Config{version};my@_inc_version_list=reverse split / /,$Config{inc_version_list};my$_path_sep=$Config{path_sep};sub _as_list {my$list=shift;grep length,map {!(ref $_ && ref $_ eq 'SCALAR')? $_ : (defined$ENV{$$_}? split(/\Q$_path_sep/,$ENV{$$_}): ())}ref$list ? @$list : $list}sub _remove_from {my ($list,@remove)=@_;return @$list if!@remove;my%remove=map {$_=>1}@remove;grep!$remove{$_},_as_list($list)}my@_lib_subdirs=([$_version,$_archname],[$_version],[$_archname],(@_inc_version_list ? \@_inc_version_list : ()),[],);sub install_base_bin_path {my ($class,$path)=@_;return _catdir($path,'bin')}sub install_base_perl_path {my ($class,$path)=@_;return _catdir($path,'lib','perl5')}sub install_base_arch_path {my ($class,$path)=@_;_catdir($class->install_base_perl_path($path),$_archname)}sub lib_paths_for {my ($class,$path)=@_;my$base=$class->install_base_perl_path($path);return map {_catdir($base,@$_)}@_lib_subdirs}sub _mm_escape_path {my$path=shift;$path =~ s/\\/\\\\/g;if ($path =~ s/ /\\ /g){$path=qq{"$path"}}return$path}sub _mb_escape_path {my$path=shift;$path =~ s/\\/\\\\/g;return qq{"$path"}}sub installer_options_for {my ($class,$path)=@_;return (PERL_MM_OPT=>defined$path ? "INSTALL_BASE="._mm_escape_path($path): undef,PERL_MB_OPT=>defined$path ? "--install_base "._mb_escape_path($path): undef,)}sub active_paths {my ($self)=@_;$self=ref$self ? $self : $self->new;return grep {my$active_ll=$self->install_base_perl_path($_);grep {$_ eq $active_ll}@{$self->inc}}_as_list($self->roots)}sub deactivate {my ($self,$path)=@_;$self=$self->new unless ref$self;$path=$self->resolve_path($path);$path=$self->normalize_path($path);my@active_lls=$self->active_paths;if (!grep {$_ eq $path}@active_lls){warn "Tried to deactivate inactive local::lib '$path'\n";return$self}my%args=(bins=>[_remove_from($self->bins,$self->install_base_bin_path($path))],libs=>[_remove_from($self->libs,$self->install_base_perl_path($path))],inc=>[_remove_from($self->inc,$self->lib_paths_for($path))],roots=>[_remove_from($self->roots,$path)],);$args{extra}={$self->installer_options_for($args{roots}[0])};$self->clone(%args)}sub deactivate_all {my ($self)=@_;$self=$self->new unless ref$self;my@active_lls=$self->active_paths;my%args;if (@active_lls){%args=(bins=>[_remove_from($self->bins,map$self->install_base_bin_path($_),@active_lls)],libs=>[_remove_from($self->libs,map$self->install_base_perl_path($_),@active_lls)],inc=>[_remove_from($self->inc,map$self->lib_paths_for($_),@active_lls)],roots=>[_remove_from($self->roots,@active_lls)],)}$args{extra}={$self->installer_options_for(undef)};$self->clone(%args)}sub activate {my ($self,$path)=@_;$self=$self->new unless ref$self;$path=$self->resolve_path($path);$self->ensure_dir_structure_for($path)unless$self->no_create;$path=$self->normalize_path($path);my@active_lls=$self->active_paths;if (grep {$_ eq $path}@active_lls[1 .. $#active_lls]){$self=$self->deactivate($path)}my%args;if (!@active_lls || $active_lls[0]ne $path){%args=(bins=>[$self->install_base_bin_path($path),@{$self->bins}],libs=>[$self->install_base_perl_path($path),@{$self->libs}],inc=>[$self->lib_paths_for($path),@{$self->inc}],roots=>[$path,@{$self->roots}],)}$args{extra}={$self->installer_options_for($path)};$self->clone(%args)}sub normalize_path {my ($self,$path)=@_;$path=(Win32::GetShortPathName($path)|| $path)if $^O eq 'MSWin32';return$path}sub build_environment_vars_for {my$self=$_[0]->new->activate($_[1]);$self->build_environment_vars}sub build_activate_environment_vars_for {my$self=$_[0]->new->activate($_[1]);$self->build_environment_vars}sub build_deactivate_environment_vars_for {my$self=$_[0]->new->deactivate($_[1]);$self->build_environment_vars}sub build_deact_all_environment_vars_for {my$self=$_[0]->new->deactivate_all;$self->build_environment_vars}sub build_environment_vars {my$self=shift;(PATH=>join($_path_sep,_as_list($self->bins)),PERL5LIB=>join($_path_sep,_as_list($self->libs)),PERL_LOCAL_LIB_ROOT=>join($_path_sep,_as_list($self->roots)),%{$self->extra},)}sub setup_local_lib_for {my$self=$_[0]->new->activate($_[1]);$self->setup_local_lib}sub setup_local_lib {my$self=shift;require Carp::Heavy if$INC{'Carp.pm'};$self->setup_env_hash;@INC=@{$self->inc}}sub setup_env_hash_for {my$self=$_[0]->new->activate($_[1]);$self->setup_env_hash}sub setup_env_hash {my$self=shift;my%env=$self->build_environment_vars;for my$key (keys%env){if (defined$env{$key}){$ENV{$key}=$env{$key}}else {delete$ENV{$key}}}}sub print_environment_vars_for {print $_[0]->environment_vars_string_for(@_[1..$#_])}sub environment_vars_string_for {my$self=$_[0]->new->activate($_[1]);$self->environment_vars_string}sub environment_vars_string {my ($self,$shelltype)=@_;$shelltype ||= $self->guess_shelltype;my$extra=$self->extra;my@envs=(PATH=>$self->bins,PERL5LIB=>$self->libs,PERL_LOCAL_LIB_ROOT=>$self->roots,map {$_=>$extra->{$_}}sort keys %$extra,);$self->_build_env_string($shelltype,\@envs)}sub _build_env_string {my ($self,$shelltype,$envs)=@_;my@envs=@$envs;my$build_method="build_${shelltype}_env_declaration";my$out='';while (@envs){my ($name,$value)=(shift(@envs),shift(@envs));if (ref$value && @$value==1 && ref$value->[0]&& ref$value->[0]eq 'SCALAR' && ${$value->[0]}eq $name){next}$out .= $self->$build_method($name,$value)}my$wrap_method="wrap_${shelltype}_output";if ($self->can($wrap_method)){return$self->$wrap_method($out)}return$out}sub build_bourne_env_declaration {my ($class,$name,$args)=@_;my$value=$class->_interpolate($args,'${%s}',qr/["\\\$!`]/,'\\%s');if (!defined$value){return qq{unset $name;\n}}$value =~ s/(^|\G|$_path_sep)\$\{$name\}$_path_sep/$1\${$name}\${$name+$_path_sep}/g;$value =~ s/$_path_sep\$\{$name\}$/\${$name+$_path_sep}\${$name}/;qq{${name}="$value"; export ${name};\n}}sub build_csh_env_declaration {my ($class,$name,$args)=@_;my ($value,@vars)=$class->_interpolate($args,'${%s}','"','"\\%s"');if (!defined$value){return qq{unsetenv $name;\n}}my$out='';for my$var (@vars){$out .= qq{if ! \$?$name setenv $name '';\n}}my$value_without=$value;if ($value_without =~ s/(?:^|$_path_sep)\$\{$name\}(?:$_path_sep|$)//g){$out .= qq{if "\${$name}" != '' setenv $name "$value";\n};$out .= qq{if "\${$name}" == '' }}$out .= qq{setenv $name "$value_without";\n};return$out}sub build_cmd_env_declaration {my ($class,$name,$args)=@_;my$value=$class->_interpolate($args,'%%%s%%',qr(%),'%s');if (!$value){return qq{\@set $name=\n}}my$out='';my$value_without=$value;if ($value_without =~ s/(?:^|$_path_sep)%$name%(?:$_path_sep|$)//g){$out .= qq{\@if not "%$name%"=="" set "$name=$value"\n};$out .= qq{\@if "%$name%"=="" }}$out .= qq{\@set "$name=$value_without"\n};return$out}sub build_powershell_env_declaration {my ($class,$name,$args)=@_;my$value=$class->_interpolate($args,'$env:%s','"','`%s');if (!$value){return qq{Remove-Item -ErrorAction 0 Env:\\$name;\n}}my$maybe_path_sep=qq{\$(if("\$env:$name"-eq""){""}else{"$_path_sep"})};$value =~ s/(^|\G|$_path_sep)\$env:$name$_path_sep/$1\$env:$name"+$maybe_path_sep+"/g;$value =~ s/$_path_sep\$env:$name$/"+$maybe_path_sep+\$env:$name+"/;qq{\$env:$name = \$("$value");\n}}sub wrap_powershell_output {my ($class,$out)=@_;return$out || " \n"}sub build_fish_env_declaration {my ($class,$name,$args)=@_;my$value=$class->_interpolate($args,'$%s',qr/[\\"' ]/,'\\%s');if (!defined$value){return qq{set -e $name;\n}}$value =~ s/$_path_sep/ /g;qq{set -x $name $value;\n}}sub _interpolate {my ($class,$args,$var_pat,$escape,$escape_pat)=@_;return unless defined$args;my@args=ref$args ? @$args : $args;return unless@args;my@vars=map {$$_}grep {ref $_ eq 'SCALAR'}@args;my$string=join$_path_sep,map {ref $_ eq 'SCALAR' ? sprintf($var_pat,$$_): do {s/($escape)/sprintf($escape_pat, $1)/ge;$_}}@args;return wantarray ? ($string,\@vars): $string}sub pipeline;sub pipeline {my@methods=@_;my$last=pop(@methods);if (@methods){\sub {my ($obj,@args)=@_;$obj->${pipeline@methods}($obj->$last(@args))}}else {\sub {shift->$last(@_)}}}sub resolve_path {my ($class,$path)=@_;$path=$class->${pipeline qw(resolve_relative_path resolve_home_path resolve_empty_path)}($path);$path}sub resolve_empty_path {my ($class,$path)=@_;if (defined$path){$path}else {'~/perl5'}}sub resolve_home_path {my ($class,$path)=@_;$path =~ /^~([^\/]*)/ or return$path;my$user=$1;my$homedir=do {if (!length($user)&& defined$ENV{HOME}){$ENV{HOME}}else {require File::Glob;File::Glob::bsd_glob("~$user",File::Glob::GLOB_TILDE())}};unless (defined$homedir){require Carp;require Carp::Heavy;Carp::croak("Couldn't resolve homedir for " .(defined$user ? $user : 'current user'))}$path =~ s/^~[^\/]*/$homedir/;$path}sub resolve_relative_path {my ($class,$path)=@_;_rel2abs($path)}sub ensure_dir_structure_for {my ($class,$path)=@_;unless (-d $path){warn "Attempting to create directory ${path}\n"}require File::Basename;my@dirs;while(!-d $path){push@dirs,$path;$path=File::Basename::dirname($path)}mkdir $_ for reverse@dirs;return}sub guess_shelltype {my$shellbin =defined$ENV{SHELL}? ($ENV{SHELL}=~ /([\w.]+)$/)[-1]: ($^O eq 'MSWin32' && exists$ENV{'!EXITCODE'})? 'bash' : ($^O eq 'MSWin32' && $ENV{PROMPT}&& $ENV{COMSPEC})? ($ENV{COMSPEC}=~ /([\w.]+)$/)[-1]: ($^O eq 'MSWin32' &&!$ENV{PROMPT})? 'powershell.exe' : 'sh';for ($shellbin){return /csh$/ ? 'csh' : /fish/ ? 'fish' : /command(?:\.com)?$/i ? 'cmd' : /cmd(?:\.exe)?$/i ? 'cmd' : /4nt(?:\.exe)?$/i ? 'cmd' : /powershell(?:\.exe)?$/i ? 'powershell' : 'bourne'}}1; - WHOA THERE! It looks like you've got some fancy dashes in your commandline! - These are *not* the traditional -- dashes that software recognizes. You - probably got these by copy-pasting from the perldoc for this module as - rendered by a UTF8-capable formatter. This most typically happens on an OS X - terminal, but can happen elsewhere too. Please try again after replacing the - dashes with normal minus signs. - DEATH - FATAL: The local::lib --self-contained flag has never worked reliably and the - original author, Mark Stosberg, was unable or unwilling to maintain it. As - such, this flag has been removed from the local::lib codebase in order to - prevent misunderstandings and potentially broken builds. The local::lib authors - recommend that you look at the lib::core::only module shipped with this - distribution in order to create a more robust environment that is equivalent to - what --self-contained provided (although quite possibly not what you originally - thought it provided due to the poor quality of the documentation, for which we - apologise). - DEATH -LOCAL_LIB - -$fatpacked{"parent.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARENT'; - package parent;use strict;use vars qw($VERSION);$VERSION='0.228';sub import {my$class=shift;my$inheritor=caller(0);if (@_ and $_[0]eq '-norequire'){shift @_}else {for (my@filename=@_){if ($_ eq $inheritor){warn "Class '$inheritor' tried to inherit from itself\n"};s{::|'}{/}g;require "$_.pm"}}{no strict 'refs';push @{"$inheritor\::ISA"},@_}};"All your base are belong to us" -PARENT - -$fatpacked{"version.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION'; - package version;use 5.006002;use strict;use warnings::register;if ($] >= 5.015){warnings::register_categories(qw/version/)}use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);$VERSION=0.9912;$CLASS='version';{local$SIG{'__DIE__'};if (1){eval "use version::vpp $VERSION";die "$@" if ($@);push@ISA,"version::vpp";local $^W;*version::qv=\&version::vpp::qv;*version::declare=\&version::vpp::declare;*version::_VERSION=\&version::vpp::_VERSION;*version::vcmp=\&version::vpp::vcmp;*version::new=\&version::vpp::new;*version::numify=\&version::vpp::numify;*version::normal=\&version::vpp::normal;if ($] >= 5.009000){no strict 'refs';*version::stringify=\&version::vpp::stringify;*{'version::(""'}=\&version::vpp::stringify;*{'version::(<=>'}=\&version::vpp::vcmp;*version::parse=\&version::vpp::parse}}else {push@ISA,"version::vxs";local $^W;*version::declare=\&version::vxs::declare;*version::qv=\&version::vxs::qv;*version::_VERSION=\&version::vxs::_VERSION;*version::vcmp=\&version::vxs::VCMP;*version::new=\&version::vxs::new;*version::numify=\&version::vxs::numify;*version::normal=\&version::vxs::normal;if ($] >= 5.009000){no strict 'refs';*version::stringify=\&version::vxs::stringify;*{'version::(""'}=\&version::vxs::stringify;*{'version::(<=>'}=\&version::vxs::VCMP;*version::parse=\&version::vxs::parse}}}require version::regex;*version::is_lax=\&version::regex::is_lax;*version::is_strict=\&version::regex::is_strict;*LAX=\$version::regex::LAX;*STRICT=\$version::regex::STRICT;sub import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local $^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if (@_){map {$args{$_}=1}@_}else {%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if (exists($args{declare})){*{$callpkg.'::declare'}=sub {return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if (exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless defined(&{$callpkg.'::qv'})}if (exists($args{'UNIVERSAL::VERSION'})){local $^W;*UNIVERSAL::VERSION =\&{$CLASS.'::_VERSION'}}if (exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION'}}if (exists($args{'is_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless defined(&{$callpkg.'::is_strict'})}if (exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless defined(&{$callpkg.'::is_lax'})}}1; -VERSION - -$fatpacked{"version/regex.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION_REGEX'; - package version::regex;use strict;use vars qw($VERSION $CLASS $STRICT $LAX);$VERSION=0.9912;my$FRACTION_PART=qr/\.[0-9]+/;my$STRICT_INTEGER_PART=qr/0|[1-9][0-9]*/;my$LAX_INTEGER_PART=qr/[0-9]+/;my$STRICT_DOTTED_DECIMAL_PART=qr/\.[0-9]{1,3}/;my$LAX_DOTTED_DECIMAL_PART=qr/\.[0-9]+/;my$LAX_ALPHA_PART=qr/_[0-9]+/;my$STRICT_DECIMAL_VERSION=qr/ $STRICT_INTEGER_PART $FRACTION_PART? /x;my$STRICT_DOTTED_DECIMAL_VERSION=qr/ v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x;$STRICT=qr/ $STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION /x;my$LAX_DECIMAL_VERSION=qr/ $LAX_INTEGER_PART (?: \. | $FRACTION_PART $LAX_ALPHA_PART? )? - | - $FRACTION_PART $LAX_ALPHA_PART? - /x;my$LAX_DOTTED_DECIMAL_VERSION=qr/ - v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )? - | - $LAX_INTEGER_PART? $LAX_DOTTED_DECIMAL_PART{2,} $LAX_ALPHA_PART? - /x;$LAX=qr/ undef | $LAX_DECIMAL_VERSION | $LAX_DOTTED_DECIMAL_VERSION /x;sub is_strict {defined $_[0]&& $_[0]=~ qr/ \A $STRICT \z /x}sub is_lax {defined $_[0]&& $_[0]=~ qr/ \A $LAX \z /x}1; -VERSION_REGEX - -$fatpacked{"version/vpp.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION_VPP'; - package charstar;use overload ('""'=>\&thischar,'0+'=>\&thischar,'++'=>\&increment,'--'=>\&decrement,'+'=>\&plus,'-'=>\&minus,'*'=>\&multiply,'cmp'=>\&cmp,'<=>'=>\&spaceship,'bool'=>\&thischar,'='=>\&clone,);sub new {my ($self,$string)=@_;my$class=ref($self)|| $self;my$obj={string=>[split(//,$string)],current=>0,};return bless$obj,$class}sub thischar {my ($self)=@_;my$last=$#{$self->{string}};my$curr=$self->{current};if ($curr >= 0 && $curr <= $last){return$self->{string}->[$curr]}else {return ''}}sub increment {my ($self)=@_;$self->{current}++}sub decrement {my ($self)=@_;$self->{current}--}sub plus {my ($self,$offset)=@_;my$rself=$self->clone;$rself->{current}+= $offset;return$rself}sub minus {my ($self,$offset)=@_;my$rself=$self->clone;$rself->{current}-= $offset;return$rself}sub multiply {my ($left,$right,$swapped)=@_;my$char=$left->thischar();return$char * $right}sub spaceship {my ($left,$right,$swapped)=@_;unless (ref($right)){$right=$left->new($right)}return$left->{current}<=> $right->{current}}sub cmp {my ($left,$right,$swapped)=@_;unless (ref($right)){if (length($right)==1){return$left->thischar cmp $right}$right=$left->new($right)}return$left->currstr cmp $right->currstr}sub bool {my ($self)=@_;my$char=$self->thischar;return ($char ne '')}sub clone {my ($left,$right,$swapped)=@_;$right={string=>[@{$left->{string}}],current=>$left->{current},};return bless$right,ref($left)}sub currstr {my ($self,$s)=@_;my$curr=$self->{current};my$last=$#{$self->{string}};if (defined($s)&& $s->{current}< $last){$last=$s->{current}}my$string=join('',@{$self->{string}}[$curr..$last]);return$string}package version::vpp;use 5.006002;use strict;use warnings::register;use Config;use vars qw($VERSION $CLASS @ISA $LAX $STRICT $WARN_CATEGORY);$VERSION=0.9912;$CLASS='version::vpp';if ($] > 5.015){warnings::register_categories(qw/version/);$WARN_CATEGORY='version'}else {$WARN_CATEGORY='numeric'}require version::regex;*version::vpp::is_strict=\&version::regex::is_strict;*version::vpp::is_lax=\&version::regex::is_lax;*LAX=\$version::regex::LAX;*STRICT=\$version::regex::STRICT;use overload ('""'=>\&stringify,'0+'=>\&numify,'cmp'=>\&vcmp,'<=>'=>\&vcmp,'bool'=>\&vbool,'+'=>\&vnoop,'-'=>\&vnoop,'*'=>\&vnoop,'/'=>\&vnoop,'+='=>\&vnoop,'-='=>\&vnoop,'*='=>\&vnoop,'/='=>\&vnoop,'abs'=>\&vnoop,);sub import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local $^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if (@_){map {$args{$_}=1}@_}else {%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if (exists($args{declare})){*{$callpkg.'::declare'}=sub {return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if (exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless defined(&{$callpkg.'::qv'})}if (exists($args{'UNIVERSAL::VERSION'})){no warnings qw/redefine/;*UNIVERSAL::VERSION =\&{$CLASS.'::_VERSION'}}if (exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION'}}if (exists($args{'is_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless defined(&{$callpkg.'::is_strict'})}if (exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless defined(&{$callpkg.'::is_lax'})}}my$VERSION_MAX=0x7FFFFFFF;use constant TRUE=>1;use constant FALSE=>0;sub isDIGIT {my ($char)=shift->thischar();return ($char =~ /\d/)}sub isALPHA {my ($char)=shift->thischar();return ($char =~ /[a-zA-Z]/)}sub isSPACE {my ($char)=shift->thischar();return ($char =~ /\s/)}sub BADVERSION {my ($s,$errstr,$error)=@_;if ($errstr){$$errstr=$error}return$s}sub prescan_version {my ($s,$strict,$errstr,$sqv,$ssaw_decimal,$swidth,$salpha)=@_;my$qv=defined$sqv ? $$sqv : FALSE;my$saw_decimal=defined$ssaw_decimal ? $$ssaw_decimal : 0;my$width=defined$swidth ? $$swidth : 3;my$alpha=defined$salpha ? $$salpha : FALSE;my$d=$s;if ($qv && isDIGIT($d)){goto dotted_decimal_version}if ($d eq 'v'){$d++;if (isDIGIT($d)){$qv=TRUE}else {return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)")}dotted_decimal_version: if ($strict && $d eq '0' && isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)")}while (isDIGIT($d)){$d++}if ($d eq '.'){$saw_decimal++;$d++}else {if ($strict){return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)")}else {goto version_prescan_finish}}{my$i=0;my$j=0;while (isDIGIT($d)){$i++;while (isDIGIT($d)){$d++;$j++;if ($strict && $j > 3){return BADVERSION($s,$errstr,"Invalid version format (maximum 3 digits between decimals)")}}if ($d eq '_'){if ($strict){return BADVERSION($s,$errstr,"Invalid version format (no underscores)")}if ($alpha){return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)")}$d++;$alpha=TRUE}elsif ($d eq '.'){if ($alpha){return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)")}$saw_decimal++;$d++}elsif (!isDIGIT($d)){last}$j=0}if ($strict && $i < 2){return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)")}}}else {my$j=0;if ($strict){if ($d eq '.'){return BADVERSION($s,$errstr,"Invalid version format (0 before decimal required)")}if ($d eq '0' && isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)")}}if ($d eq '-'){return BADVERSION($s,$errstr,"Invalid version format (negative version number)")}while (isDIGIT($d)){$d++}if ($d eq '.'){$saw_decimal++;$d++}elsif (!$d || $d eq ';' || isSPACE($d)|| $d eq '}'){if ($d==$s){return BADVERSION($s,$errstr,"Invalid version format (version required)")}goto version_prescan_finish}elsif ($d==$s){return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)")}elsif ($d eq '_'){if ($strict){return BADVERSION($s,$errstr,"Invalid version format (no underscores)")}elsif (isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (alpha without decimal)")}else {return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)")}}elsif ($d){return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)")}if ($d &&!isDIGIT($d)&& ($strict ||!($d eq ';' || isSPACE($d)|| $d eq '}'))){return BADVERSION($s,$errstr,"Invalid version format (fractional part required)")}while (isDIGIT($d)){$d++;$j++;if ($d eq '.' && isDIGIT($d-1)){if ($alpha){return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)")}if ($strict){return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions must begin with 'v')")}$d=$s;$qv=TRUE;goto dotted_decimal_version}if ($d eq '_'){if ($strict){return BADVERSION($s,$errstr,"Invalid version format (no underscores)")}if ($alpha){return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)")}if (!isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)")}$width=$j;$d++;$alpha=TRUE}}}version_prescan_finish: while (isSPACE($d)){$d++}if ($d &&!isDIGIT($d)&& (!($d eq ';' || $d eq '}'))){return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)")}if ($saw_decimal > 1 && ($d-1)eq '.'){return BADVERSION($s,$errstr,"Invalid version format (trailing decimal)")}if (defined$sqv){$$sqv=$qv}if (defined$swidth){$$swidth=$width}if (defined$ssaw_decimal){$$ssaw_decimal=$saw_decimal}if (defined$salpha){$$salpha=$alpha}return$d}sub scan_version {my ($s,$rv,$qv)=@_;my$start;my$pos;my$last;my$errstr;my$saw_decimal=0;my$width=3;my$alpha=FALSE;my$vinf=FALSE;my@av;$s=new charstar$s;while (isSPACE($s)){$s++}$last=prescan_version($s,FALSE,\$errstr,\$qv,\$saw_decimal,\$width,\$alpha);if ($errstr){if ($s ne 'undef'){require Carp;Carp::croak($errstr)}}$start=$s;if ($s eq 'v'){$s++}$pos=$s;if ($qv){$$rv->{qv}=$qv}if ($alpha){$$rv->{alpha}=$alpha}if (!$qv && $width < 3){$$rv->{width}=$width}while (isDIGIT($pos)){$pos++}if (!isALPHA($pos)){my$rev;for (;;){$rev=0;{my$end=$pos;my$mult=1;my$orev;if (!$qv && $s > $start && $saw_decimal==1){$mult *= 100;while ($s < $end){$orev=$rev;$rev += $s * $mult;$mult /= 10;if ((abs($orev)> abs($rev))|| (abs($rev)> $VERSION_MAX)){warn("Integer overflow in version %d",$VERSION_MAX);$s=$end - 1;$rev=$VERSION_MAX;$vinf=1}$s++;if ($s eq '_'){$s++}}}else {while (--$end >= $s){$orev=$rev;$rev += $end * $mult;$mult *= 10;if ((abs($orev)> abs($rev))|| (abs($rev)> $VERSION_MAX)){warn("Integer overflow in version");$end=$s - 1;$rev=$VERSION_MAX;$vinf=1}}}}push@av,$rev;if ($vinf){$s=$last;last}elsif ($pos eq '.'){$pos++;if ($qv){while ($pos eq '0'){$pos++}}$s=$pos}elsif ($pos eq '_' && isDIGIT($pos+1)){$s=++$pos}elsif ($pos eq ',' && isDIGIT($pos+1)){$s=++$pos}elsif (isDIGIT($pos)){$s=$pos}else {$s=$pos;last}if ($qv){while (isDIGIT($pos)){$pos++}}else {my$digits=0;while ((isDIGIT($pos)|| $pos eq '_')&& $digits < 3){if ($pos ne '_'){$digits++}$pos++}}}}if ($qv){my$len=$#av;$len=2 - $len;while ($len-- > 0){push@av,0}}if ($vinf){$$rv->{original}="v.Inf";$$rv->{vinf}=1}elsif ($s > $start){$$rv->{original}=$start->currstr($s);if ($qv && $saw_decimal==1 && $start ne 'v'){$$rv->{original}='v' .$$rv->{original}}}else {$$rv->{original}='0';push(@av,0)}$$rv->{version}=\@av;if ($s eq 'undef'){$s += 5}return$s}sub new {my$class=shift;unless (defined$class or $#_ > 1){require Carp;Carp::croak('Usage: version::new(class, version)')}my$self=bless ({},ref ($class)|| $class);my$qv=FALSE;if ($#_==1){$qv=TRUE}my$value=pop;if (ref($value)&& eval('$value->isa("version")')){$self->{version}=[@{$value->{version}}];$self->{qv}=1 if$value->{qv};$self->{alpha}=1 if$value->{alpha};$self->{original}=''.$value->{original};return$self}if (not defined$value or $value =~ /^undef$/){push @{$self->{version}},0;$self->{original}="0";return ($self)}if (ref($value)=~ m/ARRAY|HASH/){require Carp;Carp::croak("Invalid version format (non-numeric data)")}$value=_un_vstring($value);if ($Config{d_setlocale}){use POSIX qw/locale_h/;use if$Config{d_setlocale},'locale';my$currlocale=setlocale(LC_ALL);if (localeconv()->{decimal_point}eq ','){$value =~ tr/,/./}}if ($value =~ /\d+.?\d*e[-+]?\d+/){$value=sprintf("%.9f",$value);$value =~ s/(0+)$//}my$s=scan_version($value,\$self,$qv);if ($s){warn("Version string '%s' contains invalid data; " ."ignoring: '%s'",$value,$s)}return ($self)}*parse=\&new;sub numify {my ($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid version object")}my$width=$self->{width}|| 3;my$alpha=$self->{alpha}|| "";my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("%d.",$digit);if ($alpha and warnings::enabled()){warnings::warn($WARN_CATEGORY,'alpha->numify() is lossy')}for (my$i=1 ;$i < $len ;$i++ ){$digit=$self->{version}[$i];if ($width < 3){my$denom=10**(3-$width);my$quot=int($digit/$denom);my$rem=$digit - ($quot * $denom);$string .= sprintf("%0".$width."d_%d",$quot,$rem)}else {$string .= sprintf("%03d",$digit)}}if ($len > 0){$digit=$self->{version}[$len];if ($alpha && $width==3){$string .= "_"}$string .= sprintf("%0".$width."d",$digit)}else {$string .= sprintf("000")}return$string}sub normal {my ($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid version object")}my$alpha=$self->{alpha}|| "";my$qv=$self->{qv}|| "";my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("v%d",$digit);for (my$i=1 ;$i < $len ;$i++ ){$digit=$self->{version}[$i];$string .= sprintf(".%d",$digit)}if ($len > 0){$digit=$self->{version}[$len];if ($alpha){$string .= sprintf("_%0d",$digit)}else {$string .= sprintf(".%0d",$digit)}}if ($len <= 2){for ($len=2 - $len;$len!=0;$len-- ){$string .= sprintf(".%0d",0)}}return$string}sub stringify {my ($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid version object")}return exists$self->{original}? $self->{original}: exists$self->{qv}? $self->normal : $self->numify}sub vcmp {require UNIVERSAL;my ($left,$right,$swap)=@_;my$class=ref($left);unless (UNIVERSAL::isa($right,$class)){$right=$class->new($right)}if ($swap){($left,$right)=($right,$left)}unless (_verify($left)){require Carp;Carp::croak("Invalid version object")}unless (_verify($right)){require Carp;Carp::croak("Invalid version format")}my$l=$#{$left->{version}};my$r=$#{$right->{version}};my$m=$l < $r ? $l : $r;my$lalpha=$left->is_alpha;my$ralpha=$right->is_alpha;my$retval=0;my$i=0;while ($i <= $m && $retval==0){$retval=$left->{version}[$i]<=> $right->{version}[$i];$i++}if ($retval==0 && $l==$r && $left->{version}[$m]==$right->{version}[$m]&& ($lalpha || $ralpha)){if ($lalpha &&!$ralpha){$retval=-1}elsif ($ralpha &&!$lalpha){$retval=+1}}if ($retval==0 && $l!=$r){if ($l < $r){while ($i <= $r && $retval==0){if ($right->{version}[$i]!=0){$retval=-1}$i++}}else {while ($i <= $l && $retval==0){if ($left->{version}[$i]!=0){$retval=+1}$i++}}}return$retval}sub vbool {my ($self)=@_;return vcmp($self,$self->new("0"),1)}sub vnoop {require Carp;Carp::croak("operation not supported with version object")}sub is_alpha {my ($self)=@_;return (exists$self->{alpha})}sub qv {my$value=shift;my$class=$CLASS;if (@_){$class=ref($value)|| $value;$value=shift}$value=_un_vstring($value);$value='v'.$value unless$value =~ /(^v|\d+\.\d+\.\d)/;my$obj=$CLASS->new($value);return bless$obj,$class}*declare=\&qv;sub is_qv {my ($self)=@_;return (exists$self->{qv})}sub _verify {my ($self)=@_;if (ref($self)&& eval {exists$self->{version}}&& ref($self->{version})eq 'ARRAY'){return 1}else {return 0}}sub _is_non_alphanumeric {my$s=shift;$s=new charstar$s;while ($s){return 0 if isSPACE($s);return 1 unless (isALPHA($s)|| isDIGIT($s)|| $s =~ /[.-]/);$s++}return 0}sub _un_vstring {my$value=shift;if (length($value)>= 1 && $value !~ /[,._]/ && _is_non_alphanumeric($value)){my$tvalue;if ($] >= 5.008_001){$tvalue=_find_magic_vstring($value);$value=$tvalue if length$tvalue}elsif ($] >= 5.006_000){$tvalue=sprintf("v%vd",$value);if ($tvalue =~ /^v\d+(\.\d+)*$/){$value=$tvalue}}}return$value}sub _find_magic_vstring {my$value=shift;my$tvalue='';require B;my$sv=B::svref_2object(\$value);my$magic=ref($sv)eq 'B::PVMG' ? $sv->MAGIC : undef;while ($magic){if ($magic->TYPE eq 'V'){$tvalue=$magic->PTR;$tvalue =~ s/^v?(.+)$/v$1/;last}else {$magic=$magic->MOREMAGIC}}return$tvalue}sub _VERSION {my ($obj,$req)=@_;my$class=ref($obj)|| $obj;no strict 'refs';if (exists$INC{"$class.pm"}and not %{"$class\::"}and $] >= 5.008){require Carp;Carp::croak("$class defines neither package nor VERSION" ."--version check failed")}my$version=eval "\$$class\::VERSION";if (defined$version){local $^W if $] <= 5.008;$version=version::vpp->new($version)}if (defined$req){unless (defined$version){require Carp;my$msg=$] < 5.006 ? "$class version $req required--this is only version " : "$class does not define \$$class\::VERSION" ."--version check failed";if ($ENV{VERSION_DEBUG}){Carp::confess($msg)}else {Carp::croak($msg)}}$req=version::vpp->new($req);if ($req > $version){require Carp;if ($req->is_qv){Carp::croak(sprintf ("%s version %s required--"."this is only version %s",$class,$req->normal,$version->normal))}else {Carp::croak(sprintf ("%s version %s required--"."this is only version %s",$class,$req->stringify,$version->stringify))}}}return defined$version ? $version->stringify : undef}1; -VERSION_VPP - -s/^ //mg for values %fatpacked; - -my $class = 'FatPacked::'.(0+\%fatpacked); -no strict 'refs'; -*{"${class}::files"} = sub { keys %{$_[0]} }; - -if ($] < 5.008) { - *{"${class}::INC"} = sub { - if (my $fat = $_[0]{$_[1]}) { - my $pos = 0; - my $last = length $fat; - return (sub { - return 0 if $pos == $last; - my $next = (1 + index $fat, "\n", $pos) || $last; - $_ .= substr $fat, $pos, $next - $pos; - $pos = $next; - return 1; - }); - } - }; -} - -else { - *{"${class}::INC"} = sub { - if (my $fat = $_[0]{$_[1]}) { - open my $fh, '<', \$fat - or die "FatPacker error loading $_[1] (could be a perl installation issue?)"; - return $fh; - } - return; - }; -} - -unshift @INC, bless \%fatpacked, $class; - } # END OF FATPACK CODE - - - -use strict; -use App::cpanminus::script; - - -unless (caller) { - my $app = App::cpanminus::script->new; - $app->parse_options(@ARGV); - exit $app->doit; -} - -__END__ - -=head1 NAME - -cpanm - get, unpack build and install modules from CPAN - -=head1 SYNOPSIS - - cpanm Test::More # install Test::More - cpanm MIYAGAWA/Plack-0.99_05.tar.gz # full distribution path - cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz # install from URL - cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz # install from a local file - cpanm --interactive Task::Kensho # Configure interactively - cpanm . # install from local directory - cpanm --installdeps . # install all the deps for the current directory - cpanm -L extlib Plack # install Plack and all non-core deps into extlib - cpanm --mirror http://cpan.cpantesters.org/ DBI # use the fast-syncing mirror - cpanm --from https://cpan.metacpan.org/ Plack # use only the HTTPS mirror - -=head1 COMMANDS - -=over 4 - -=item (arguments) - -Command line arguments can be either a module name, distribution file, -local file path, HTTP URL or git repository URL. Following commands -will all work as you expect. - - cpanm Plack - cpanm Plack/Request.pm - cpanm MIYAGAWA/Plack-1.0000.tar.gz - cpanm /path/to/Plack-1.0000.tar.gz - cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - cpanm git://github.com/plack/Plack.git - -Additionally, you can use the notation using C<~> and C<@> to specify -version for a given module. C<~> specifies the version requirement in -the L format, while C<@> pins the exact version, and -is a shortcut for C<~"== VERSION">. - - cpanm Plack~1.0000 # 1.0000 or later - cpanm Plack~">= 1.0000, < 2.0000" # latest of 1.xxxx - cpanm Plack@0.9990 # specific version. same as Plack~"== 0.9990" - -The version query including specific version or range will be sent to -L to search for previous releases. The query will search for -BackPAN archives by default, unless you specify C<--dev> option, in -which case, archived versions will be filtered out. - -For a git repository, you can specify a branch, tag, or commit SHA to -build. The default is C - - cpanm git://github.com/plack/Plack.git@1.0000 # tag - cpanm git://github.com/plack/Plack.git@devel # branch - -=item -i, --install - -Installs the modules. This is a default behavior and this is just a -compatibility option to make it work like L or L. - -=item --self-upgrade - -Upgrades itself. It's just an alias for: - - cpanm App::cpanminus - -=item --info - -Displays the distribution information in -C format in the standard out. - -=item --installdeps - -Installs the dependencies of the target distribution but won't build -itself. Handy if you want to try the application from a version -controlled repository such as git. - - cpanm --installdeps . - -=item --look - -Download and unpack the distribution and then open the directory with -your shell. Handy to poke around the source code or do manual -testing. - -=item -h, --help - -Displays the help message. - -=item -V, --version - -Displays the version number. - -=back - -=head1 OPTIONS - -You can specify the default options in C environment variable. - -=over 4 - -=item -f, --force - -Force install modules even when testing failed. - -=item -n, --notest - -Skip the testing of modules. Use this only when you just want to save -time for installing hundreds of distributions to the same perl and -architecture you've already tested to make sure it builds fine. - -Defaults to false, and you can say C<--no-notest> to override when it -is set in the default options in C. - -=item --test-only - -Run the tests only, and do not install the specified module or -distributions. Handy if you want to verify the new (or even old) -releases pass its unit tests without installing the module. - -Note that if you specify this option with a module or distribution -that has dependencies, these dependencies will be installed if you -don't currently have them. - -=item -S, --sudo - -Switch to the root user with C when installing modules. Use this -if you want to install modules to the system perl include path. - -Defaults to false, and you can say C<--no-sudo> to override when it is -set in the default options in C. - -=item -v, --verbose - -Makes the output verbose. It also enables the interactive -configuration. (See --interactive) - -=item -q, --quiet - -Makes the output even more quiet than the default. It only shows the -successful/failed dependencies to the output. - -=item -l, --local-lib - -Sets the L compatible path to install modules to. You -don't need to set this if you already configure the shell environment -variables using L, but this can be used to override that -as well. - -=item -L, --local-lib-contained - -Same with C<--local-lib> but with L<--self-contained> set. All -non-core dependencies will be installed even if they're already -installed. - -For instance, - - cpanm -L extlib Plack - -would install Plack and all of its non-core dependencies into the -directory C, which can be loaded from your application with: - - use local::lib '/path/to/extlib'; - -Note that this option does B reliably work with perl installations -supplied by operating system vendors that strips standard modules from perl, -such as RHEL, Fedora and CentOS, B you also install packages supplying -all the modules that have been stripped. For these systems you will probably -want to install the C meta-package which does just that. - -=item --self-contained - -When examining the dependencies, assume no non-core modules are -installed on the system. Handy if you want to bundle application -dependencies in one directory so you can distribute to other machines. - -=item --exclude-vendor - -Don't include modules installed under the 'vendor' paths when searching for -core modules when the C<--self-contained> flag is in effect. This restores -the behaviour from before version 1.7023 - -=item --mirror - -Specifies the base URL for the CPAN mirror to use, such as -C (you can omit the trailing slash). You -can specify multiple mirror URLs by repeating the command line option. - -You can use a local directory that has a CPAN mirror structure -(created by tools such as L or L) by using a special -URL scheme C. If the given URL begins with `/` (without any -scheme), it is considered as a file scheme as well. - - cpanm --mirror file:///path/to/mirror - cpanm --mirror ~/minicpan # Because shell expands ~ to /home/user - -Defaults to C. - -=item --mirror-only - -Download the mirror's 02packages.details.txt.gz index file instead of -querying the CPAN Meta DB. This will also effectively opt out sending -your local perl versions to backend database servers such as CPAN Meta -DB and MetaCPAN. - -Select this option if you are using a local mirror of CPAN, such as -minicpan when you're offline, or your own CPAN index (a.k.a darkpan). - -=item --from, -M - - cpanm -M https://cpan.metacpan.org/ - cpanm --from https://cpan.metacpan.org/ - -Use the given mirror URL and its index as the I source to search -and download modules from. - -It works similar to C<--mirror> and C<--mirror-only> combined, with a -small difference: unlike C<--mirror> which I the URL to the -list of mirrors, C<--from> (or C<-M> for short) uses the specified URL -as its I source to download index and modules from. This makes -the option always override the default mirror, which might have been -set via global options such as the one set by C -environment variable. - -B It might be useful if you name these options with your shell -aliases, like: - - alias minicpanm='cpanm --from ~/minicpan' - alias darkpan='cpanm --from http://mycompany.example.com/DPAN' - -=item --mirror-index - -B: Specifies the file path to C<02packages.details.txt> -for module search index. - -=item --cpanmetadb - -B: Specifies an alternate URI for CPAN MetaDB index lookups. - -=item --metacpan - -Prefers MetaCPAN API over CPAN MetaDB. - -=item --cpanfile - -B: Specified an alternate path for cpanfile to search for, -when C<--installdeps> command is in use. Defaults to C. - -=item --prompt - -Prompts when a test fails so that you can skip, force install, retry -or look in the shell to see what's going wrong. It also prompts when -one of the dependency failed if you want to proceed the installation. - -Defaults to false, and you can say C<--no-prompt> to override if it's -set in the default options in C. - -=item --dev - -B: search for a newer developer release as well. Defaults to false. - -=item --reinstall - -cpanm, when given a module name in the command line (i.e. C), checks the locally installed version first and skips if it is -already installed. This option makes it skip the check, so: - - cpanm --reinstall Plack - -would reinstall L even if your locally installed version is -latest, or even newer (which would happen if you install a developer -release from version control repositories). - -Defaults to false. - -=item --interactive - -Makes the configuration (such as C and C) -interactive, so you can answer questions in the distribution that -requires custom configuration or Task:: distributions. - -Defaults to false, and you can say C<--no-interactive> to override -when it's set in the default options in C. - -=item --pp, --pureperl - -Prefer Pure perl build of modules by setting C for -MakeMaker and C<--pureperl-only> for Build.PL based -distributions. Note that not all of the CPAN modules support this -convention yet. - -=item --with-recommends, --with-suggests - -B: Installs dependencies declared as C and -C respectively, per META spec. When these dependencies fail -to install, cpanm continues the installation, since they're just -recommendation/suggestion. - -Enabling this could potentially make a circular dependency for a few -modules on CPAN, when C adds a module that C -back the module in return. - -There's also C<--without-recommend> and C<--without-suggests> to -override the default decision made earlier in C. - -Defaults to false for both. - -=item --with-develop - -B: Installs develop phase dependencies in META files or -C when used with C<--installdeps>. Defaults to false. - -=item --with-configure - -B: Installs configure phase dependencies in C -when used with C<--installdeps>. Defaults to false. - -=item --with-feature, --without-feature, --with-all-features - -B: Specifies the feature to enable, if a module supports -optional features per META spec 2.0. - - cpanm --with-feature=opt_csv Spreadsheet::Read - -the features can also be interactively chosen when C<--interactive> -option is enabled. - -C<--with-all-features> enables all the optional features, and -C<--without-feature> can select a feature to disable. - -=item --configure-timeout, --build-timeout, --test-timeout - -Specify the timeout length (in seconds) to wait for the configure, -build and test process. Current default values are: 60 for configure, -3600 for build and 1800 for test. - -=item --configure-args, --build-args, --test-args, --install-args - -B: Pass arguments for configure/build/test/install -commands respectively, for a given module to install. - - cpanm DBD::mysql --configure-args="--cflags=... --libs=..." - -The argument is only enabled for the module passed as a command line -argument, not dependencies. - -=item --scandeps - -B: Scans the depencencies of given modules and output the -tree in a text format. (See C<--format> below for more options) - -Because this command doesn't actually install any distributions, it -will be useful that by typing: - - cpanm --scandeps Catalyst::Runtime - -you can make sure what modules will be installed. - -This command takes into account which modules you already have -installed in your system. If you want to see what modules will be -installed against a vanilla perl installation, you might want to -combine it with C<-L> option. - -=item --format - -B: Determines what format to display the scanned -dependency tree. Available options are C, C, C and -C. - -=over 8 - -=item tree - -Displays the tree in a plain text format. This is the default value. - -=item json, yaml - -Outputs the tree in a JSON or YAML format. L and L modules -need to be installed respectively. The output tree is represented as a -recursive tuple of: - - [ distribution, dependencies ] - -and the container is an array containing the root elements. Note that -there may be multiple root nodes, since you can give multiple modules -to the C<--scandeps> command. - -=item dists - -C is a special output format, where it prints the distribution -filename in the I after the dependency resolution, -like: - - GAAS/MIME-Base64-3.13.tar.gz - GAAS/URI-1.58.tar.gz - PETDANCE/HTML-Tagset-3.20.tar.gz - GAAS/HTML-Parser-3.68.tar.gz - GAAS/libwww-perl-5.837.tar.gz - -which means you can install these distributions in this order without -extra dependencies. When combined with C<-L> option, it will be useful -to replay installations on other machines. - -=back - -=item --save-dists - -Specifies the optional directory path to copy downloaded tarballs in -the CPAN mirror compatible directory structure -i.e. I - -If the distro tarball did not come from CPAN, for example from a local -file or from GitHub, then it will be saved under -I. - -=item --uninst-shadows - -Uninstalls the shadow files of the distribution that you're -installing. This eliminates the confusion if you're trying to install -core (dual-life) modules from CPAN against perl 5.10 or older, or -modules that used to be XS-based but switched to pure perl at some -version. - -If you run cpanm as root and use C or equivalent to -specify custom installation path, you SHOULD disable this option so -you won't accidentally uninstall dual-life modules from the core -include path. - -Defaults to true if your perl version is smaller than 5.12, and you -can disable that with C<--no-uninst-shadows>. - -B: Since version 1.3000 this flag is turned off by default for -perl newer than 5.12, since with 5.12 @INC contains site_perl directory -I the perl core library path, and uninstalling shadows is not -necessary anymore and does more harm by deleting files from the core -library path. - -=item --uninstall, -U - -Uninstalls a module from the library path. It finds a packlist for -given modules, and removes all the files included in the same -distribution. - -If you enable local::lib, it only removes files from the local::lib -directory. - -If you try to uninstall a module in C directory (i.e. core -module), an error will be thrown. - -A dialog will be prompted to confirm the files to be deleted. If you pass -C<-f> option as well, the dialog will be skipped and uninstallation -will be forced. - -=item --cascade-search - -B: Specifies whether to cascade search when you specify -multiple mirrors and a mirror doesn't have a module or has a lower -version of the module than requested. Defaults to false. - -=item --skip-installed - -Specifies whether a module given in the command line is skipped if its latest -version is already installed. Defaults to true. - -B: The C environment variable have to be correctly set -for this to work with modules installed using L, unless -you always use the C<-l> option. - -=item --skip-satisfied - -B: Specifies whether a module (and version) given in the -command line is skipped if it's already installed. - -If you run: - - cpanm --skip-satisfied CGI DBI~1.2 - -cpanm won't install them if you already have CGI (for whatever -versions) or have DBI with version higher than 1.2. It is similar to -C<--skip-installed> but while C<--skip-installed> checks if the -I version of CPAN is installed, C<--skip-satisfied> checks if -a requested version (or not, which means any version) is installed. - -Defaults to false. - -=item --verify - -Verify the integrity of distribution files retrieved from PAUSE using -CHECKSUMS and SIGNATURES (if found). Defaults to false. - -=item --report-perl-version - -Whether it reports the locally installed perl version to the various -web server as part of User-Agent. Defaults to true unless CI related -environment variables such as C, C or C -is enabled. You can disable it by using C<--no-report-perl-version>. - -=item --auto-cleanup - -Specifies the number of days in which cpanm's work directories -expire. Defaults to 7, which means old work directories will be -cleaned up in one week. - -You can set the value to C<0> to make cpan never cleanup those -directories. - -=item --man-pages - -Generates man pages for executables (man1) and libraries (man3). - -Defaults to true (man pages generated) unless C<-L|--local-lib-contained> -option is supplied in which case it's set to false. You can disable -it with C<--no-man-pages>. - -=item --lwp - -Uses L module to download stuff over HTTP. Defaults to true, and -you can say C<--no-lwp> to disable using LWP, when you want to upgrade -LWP from CPAN on some broken perl systems. - -=item --wget - -Uses GNU Wget (if available) to download stuff. Defaults to true, and -you can say C<--no-wget> to disable using Wget (versions of Wget older -than 1.9 don't support the C<--retry-connrefused> option used by cpanm). - -=item --curl - -Uses cURL (if available) to download stuff. Defaults to true, and -you can say C<--no-curl> to disable using cURL. - -Normally with C<--lwp>, C<--wget> and C<--curl> options set to true -(which is the default) cpanm tries L, Wget, cURL and L -(in that order) and uses the first one available. - -=back - -=head1 ENVIRONMENT VARIABLES - -=over 4 - -=item PERL_CPANM_HOME - -The directory cpanm should use to store downloads and build and test -modules. Defaults to the C<.cpanm> directory in your user's home -directory. - -=item PERL_CPANM_OPT - -If set, adds a set of default options to every cpanm command. These -options come first, and so are overridden by command-line options. - -=back - -=head1 SEE ALSO - -L - -=head1 COPYRIGHT - -Copyright 2010- Tatsuhiko Miyagawa. - -=head1 AUTHOR - -Tatsuhiko Miyagawa - -=cut diff --git a/bin/perl b/bin/perl index ae212f3809b1e6702175369df9dc731451a9549c..153251361a14fd0f6b63c545241b49ab6aac4a8e 100755 GIT binary patch delta 721 zcmYLGUr1A76#vfk&bzzmbZ+L{5tL-+lJ@7$sdH{>JxHr)7-68KNfRZhrVkSNkcrSg zNH`CPAXqPH1tAkcq6cvgfw+pmqCH4aqy&XvQ4!U-z4Y+?&N;vDcYf!5_s*`t)EZ1y z!-)m=eaW8PvV2^i`N1!9EgPHXlBZ+CKeMS#smufO^dfGnkigic3L#0#A3ey*H;IE$ z+13N(9;61p7micEzXjqn@AvvUSeE0oj|d?Y;}b^14ukOu(?;2$xIhTChzr@NoZ$Q&vo2qzpp)eI12BjHJ%_sHV zv&G}wE6jW8QeYfrNUn|GJ6&I;>ZZcnE^|@+uaM0TsjGHU`l{0B+6}l%ncylsPEFUH z0_dP$^;ea8wv@4lZZx<{Ge#luu-70&J_ZyaEEr|q0vx7HLmj*%L#PW5P;aQUMq=KA zb3Cm8i`bzMmv}!b&N5$w72IpXWkx%`qD-hVe-CRAkFj$ZUZmflD14$wV~O&eC#u*- zosI5DmV2$3&e0tX@wc<#Wqybq)65s+I`{6vH=LK?3Tqq~V@)ZJvBrrjwA>iZf5f*g z%wx|gTqQN^b`9}d58mP3yqM(NhqpQR;}k1346;uEZ&63sZ5w4KjB(z%36C;HFijK= zDqHNY0qS%XGdMJvpqL*+!1R_L54^|IZNTCD~o$JHzd(Q9tzUOn!y|X_# zgL;ott=;yH;ihJbQIV~El-8=DkEXO1xJ7GPIlLe>)b1H!hN;(5!K3ZMVmI|mcR97D zjov}`IQI%`0bL4>!wkvc1g;zY3e|uLYrD*s%I%A6y-A(nNl94fNB9#gP&V=w-sn>` zT>we?TYF7uW~7Y!>3W^FSm$N)FliDZA47@|HY{gu0d`Qft_D7mDcT9Gl#K4H`pQll z&hWGX+{FYtKH>cwIKloMSjN3hTx50OGs;HG^ELJ$9%FJTUZsE02H2!TtWf#D92GNk zBIZqe;a&&6&M^pw_}@A43V(-9oaD~*k*E7a*{W#6L1#pz}YJ9+X5Xac5VT3s$9HrxNud|CQactwA>+vXS0%wWh z5hcsC1K3K-@kij(N9$K$H?Y+>j#brJ70hKGAIE#uRpsWYThBCrjcy$N5)J(J=isT-gkOvAaFJ{+`lcph+nJmYx>0_3z8mglil#0qN!SVOqo<8{G@r-GTLBW NrC@g>{Gm+up8rdkqqzV8 diff --git a/bin/perl5.26.2 b/bin/perl5.26.2 index ae212f3809b1e6702175369df9dc731451a9549c..153251361a14fd0f6b63c545241b49ab6aac4a8e 100755 GIT binary patch delta 721 zcmYLGUr1A76#vfk&bzzmbZ+L{5tL-+lJ@7$sdH{>JxHr)7-68KNfRZhrVkSNkcrSg zNH`CPAXqPH1tAkcq6cvgfw+pmqCH4aqy&XvQ4!U-z4Y+?&N;vDcYf!5_s*`t)EZ1y z!-)m=eaW8PvV2^i`N1!9EgPHXlBZ+CKeMS#smufO^dfGnkigic3L#0#A3ey*H;IE$ z+13N(9;61p7micEzXjqn@AvvUSeE0oj|d?Y;}b^14ukOu(?;2$xIhTChzr@NoZ$Q&vo2qzpp)eI12BjHJ%_sHV zv&G}wE6jW8QeYfrNUn|GJ6&I;>ZZcnE^|@+uaM0TsjGHU`l{0B+6}l%ncylsPEFUH z0_dP$^;ea8wv@4lZZx<{Ge#luu-70&J_ZyaEEr|q0vx7HLmj*%L#PW5P;aQUMq=KA zb3Cm8i`bzMmv}!b&N5$w72IpXWkx%`qD-hVe-CRAkFj$ZUZmflD14$wV~O&eC#u*- zosI5DmV2$3&e0tX@wc<#Wqybq)65s+I`{6vH=LK?3Tqq~V@)ZJvBrrjwA>iZf5f*g z%wx|gTqQN^b`9}d58mP3yqM(NhqpQR;}k1346;uEZ&63sZ5w4KjB(z%36C;HFijK= zDqHNY0qS%XGdMJvpqL*+!1R_L54^|IZNTCD~o$JHzd(Q9tzUOn!y|X_# zgL;ott=;yH;ihJbQIV~El-8=DkEXO1xJ7GPIlLe>)b1H!hN;(5!K3ZMVmI|mcR97D zjov}`IQI%`0bL4>!wkvc1g;zY3e|uLYrD*s%I%A6y-A(nNl94fNB9#gP&V=w-sn>` zT>we?TYF7uW~7Y!>3W^FSm$N)FliDZA47@|HY{gu0d`Qft_D7mDcT9Gl#K4H`pQll z&hWGX+{FYtKH>cwIKloMSjN3hTx50OGs;HG^ELJ$9%FJTUZsE02H2!TtWf#D92GNk zBIZqe;a&&6&M^pw_}@A43V(-9oaD~*k*E7a*{W#6L1#pz}YJ9+X5Xac5VT3s$9HrxNud|CQactwA>+vXS0%wWh z5hcsC1K3K-@kij(N9$K$H?Y+>j#brJ70hKGAIE#uRpsWYThBCrjcy$N5)J(J=isT-gkOvAaFJ{+`lcph+nJmYx>0_3z8mglil#0qN!SVOqo<8{G@r-GTLBW NrC@g>{Gm+up8rdkqqzV8 diff --git a/bin/perlbug b/bin/perlbug index c8f99863..3a508973 100755 --- a/bin/perlbug +++ b/bin/perlbug @@ -2,7 +2,7 @@ eval 'exec /home/git/binary-com/perl/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; -my $config_tag1 = '5.26.2 - Wed Jan 19 08:19:35 UTC 2022'; +my $config_tag1 = '5.26.2 - Tue Mar 26 09:06:16 UTC 2024'; my $patchlevel_date = 1521920647; my @patches = Config::local_patches(); diff --git a/bin/perlthanks b/bin/perlthanks index c8f99863..3a508973 100755 --- a/bin/perlthanks +++ b/bin/perlthanks @@ -2,7 +2,7 @@ eval 'exec /home/git/binary-com/perl/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; -my $config_tag1 = '5.26.2 - Wed Jan 19 08:19:35 UTC 2022'; +my $config_tag1 = '5.26.2 - Tue Mar 26 09:06:16 UTC 2024'; my $patchlevel_date = 1521920647; my @patches = Config::local_patches(); diff --git a/bin/pstruct b/bin/pstruct deleted file mode 100755 index 5402eec5..00000000 --- a/bin/pstruct +++ /dev/null @@ -1,1368 +0,0 @@ -#!/home/git/binary-com/perl/bin/perl - eval 'exec /home/git/binary-com/perl/bin/perl -S $0 ${1+"$@"}' - if $running_under_some_shell; -# -# -# c2ph (aka pstruct) -# Tom Christiansen, -# -# As pstruct, dump C structures as generated from 'cc -g -S' stabs. -# As c2ph, do this PLUS generate perl code for getting at the structures. -# -# See the usage message for more. If this isn't enough, read the code. -# - -=head1 NAME - -c2ph, pstruct - Dump C structures as generated from C stabs - -=head1 SYNOPSIS - - c2ph [-dpnP] [var=val] [files ...] - -=head2 OPTIONS - - Options: - - -w wide; short for: type_width=45 member_width=35 offset_width=8 - -x hex; short for: offset_fmt=x offset_width=08 size_fmt=x \ - size_width=04 - - -n do not generate perl code (default when invoked as pstruct) - -p generate perl code (default when invoked as c2ph) - -v generate perl code, with C decls as comments - - -i do NOT recompute sizes for intrinsic datatypes - -a dump information on intrinsics also - - -t trace execution - -d spew reams of debugging output - - -slist give comma-separated list a structures to dump - -=head1 DESCRIPTION - -The following is the old c2ph.doc documentation by Tom Christiansen - -Date: 25 Jul 91 08:10:21 GMT - -Once upon a time, I wrote a program called pstruct. It was a perl -program that tried to parse out C structures and display their member -offsets for you. This was especially useful for people looking at -binary dumps or poking around the kernel. - -Pstruct was not a pretty program. Neither was it particularly robust. -The problem, you see, was that the C compiler was much better at parsing -C than I could ever hope to be. - -So I got smart: I decided to be lazy and let the C compiler parse the C, -which would spit out debugger stabs for me to read. These were much -easier to parse. It's still not a pretty program, but at least it's more -robust. - -Pstruct takes any .c or .h files, or preferably .s ones, since that's -the format it is going to massage them into anyway, and spits out -listings like this: - - struct tty { - int tty.t_locker 000 4 - int tty.t_mutex_index 004 4 - struct tty * tty.t_tp_virt 008 4 - struct clist tty.t_rawq 00c 20 - int tty.t_rawq.c_cc 00c 4 - int tty.t_rawq.c_cmax 010 4 - int tty.t_rawq.c_cfx 014 4 - int tty.t_rawq.c_clx 018 4 - struct tty * tty.t_rawq.c_tp_cpu 01c 4 - struct tty * tty.t_rawq.c_tp_iop 020 4 - unsigned char * tty.t_rawq.c_buf_cpu 024 4 - unsigned char * tty.t_rawq.c_buf_iop 028 4 - struct clist tty.t_canq 02c 20 - int tty.t_canq.c_cc 02c 4 - int tty.t_canq.c_cmax 030 4 - int tty.t_canq.c_cfx 034 4 - int tty.t_canq.c_clx 038 4 - struct tty * tty.t_canq.c_tp_cpu 03c 4 - struct tty * tty.t_canq.c_tp_iop 040 4 - unsigned char * tty.t_canq.c_buf_cpu 044 4 - unsigned char * tty.t_canq.c_buf_iop 048 4 - struct clist tty.t_outq 04c 20 - int tty.t_outq.c_cc 04c 4 - int tty.t_outq.c_cmax 050 4 - int tty.t_outq.c_cfx 054 4 - int tty.t_outq.c_clx 058 4 - struct tty * tty.t_outq.c_tp_cpu 05c 4 - struct tty * tty.t_outq.c_tp_iop 060 4 - unsigned char * tty.t_outq.c_buf_cpu 064 4 - unsigned char * tty.t_outq.c_buf_iop 068 4 - (*int)() tty.t_oproc_cpu 06c 4 - (*int)() tty.t_oproc_iop 070 4 - (*int)() tty.t_stopproc_cpu 074 4 - (*int)() tty.t_stopproc_iop 078 4 - struct thread * tty.t_rsel 07c 4 - -etc. - - -Actually, this was generated by a particular set of options. You can control -the formatting of each column, whether you prefer wide or fat, hex or decimal, -leading zeroes or whatever. - -All you need to be able to use this is a C compiler than generates -BSD/GCC-style stabs. The B<-g> option on native BSD compilers and GCC -should get this for you. - -To learn more, just type a bogus option, like B<-\?>, and a long usage message -will be provided. There are a fair number of possibilities. - -If you're only a C programmer, than this is the end of the message for you. -You can quit right now, and if you care to, save off the source and run it -when you feel like it. Or not. - - - -But if you're a perl programmer, then for you I have something much more -wondrous than just a structure offset printer. - -You see, if you call pstruct by its other incybernation, c2ph, you have a code -generator that translates C code into perl code! Well, structure and union -declarations at least, but that's quite a bit. - -Prior to this point, anyone programming in perl who wanted to interact -with C programs, like the kernel, was forced to guess the layouts of -the C structures, and then hardwire these into his program. Of course, -when you took your wonderfully crafted program to a system where the -sgtty structure was laid out differently, your program broke. Which is -a shame. - -We've had Larry's h2ph translator, which helped, but that only works on -cpp symbols, not real C, which was also very much needed. What I offer -you is a symbolic way of getting at all the C structures. I've couched -them in terms of packages and functions. Consider the following program: - - #!/usr/local/bin/perl - - require 'syscall.ph'; - require 'sys/time.ph'; - require 'sys/resource.ph'; - - $ru = "\0" x &rusage'sizeof(); - - syscall(&SYS_getrusage, &RUSAGE_SELF, $ru) && die "getrusage: $!"; - - @ru = unpack($t = &rusage'typedef(), $ru); - - $utime = $ru[ &rusage'ru_utime + &timeval'tv_sec ] - + ($ru[ &rusage'ru_utime + &timeval'tv_usec ]) / 1e6; - - $stime = $ru[ &rusage'ru_stime + &timeval'tv_sec ] - + ($ru[ &rusage'ru_stime + &timeval'tv_usec ]) / 1e6; - - printf "you have used %8.3fs+%8.3fu seconds.\n", $utime, $stime; - - -As you see, the name of the package is the name of the structure. Regular -fields are just their own names. Plus the following accessor functions are -provided for your convenience: - - struct This takes no arguments, and is merely the number of first- - level elements in the structure. You would use this for - indexing into arrays of structures, perhaps like this - - $usec = $u[ &user'u_utimer - + (&ITIMER_VIRTUAL * &itimerval'struct) - + &itimerval'it_value - + &timeval'tv_usec - ]; - - sizeof Returns the bytes in the structure, or the member if - you pass it an argument, such as - - &rusage'sizeof(&rusage'ru_utime) - - typedef This is the perl format definition for passing to pack and - unpack. If you ask for the typedef of a nothing, you get - the whole structure, otherwise you get that of the member - you ask for. Padding is taken care of, as is the magic to - guarantee that a union is unpacked into all its aliases. - Bitfields are not quite yet supported however. - - offsetof This function is the byte offset into the array of that - member. You may wish to use this for indexing directly - into the packed structure with vec() if you're too lazy - to unpack it. - - typeof Not to be confused with the typedef accessor function, this - one returns the C type of that field. This would allow - you to print out a nice structured pretty print of some - structure without knoning anything about it beforehand. - No args to this one is a noop. Someday I'll post such - a thing to dump out your u structure for you. - - -The way I see this being used is like basically this: - - % h2ph /usr/lib/perl/tmp.ph - % c2ph some_include_file.h >> /usr/lib/perl/tmp.ph - % install - -It's a little tricker with c2ph because you have to get the includes right. -I can't know this for your system, but it's not usually too terribly difficult. - -The code isn't pretty as I mentioned -- I never thought it would be a 1000- -line program when I started, or I might not have begun. :-) But I would have -been less cavalier in how the parts of the program communicated with each -other, etc. It might also have helped if I didn't have to divine the makeup -of the stabs on the fly, and then account for micro differences between my -compiler and gcc. - -Anyway, here it is. Should run on perl v4 or greater. Maybe less. - - - --tom - -=cut - -$RCSID = '$Id: c2ph,v 1.7 95/10/28 10:41:47 tchrist Exp Locker: tchrist $'; - -BEGIN { pop @INC if $INC[-1] eq '.' } -use File::Temp; - -###################################################################### - -# some handy data definitions. many of these can be reset later. - -$bitorder = 'b'; # ascending; set to B for descending bit fields - -%intrinsics = -%template = ( - 'char', 'c', - 'unsigned char', 'C', - 'short', 's', - 'short int', 's', - 'unsigned short', 'S', - 'unsigned short int', 'S', - 'short unsigned int', 'S', - 'int', 'i', - 'unsigned int', 'I', - 'long', 'l', - 'long int', 'l', - 'unsigned long', 'L', - 'unsigned long', 'L', - 'long unsigned int', 'L', - 'unsigned long int', 'L', - 'long long', 'q', - 'long long int', 'q', - 'unsigned long long', 'Q', - 'unsigned long long int', 'Q', - 'float', 'f', - 'double', 'd', - 'pointer', 'p', - 'null', 'x', - 'neganull', 'X', - 'bit', $bitorder, -); - -&buildscrunchlist; -delete $intrinsics{'neganull'}; -delete $intrinsics{'bit'}; -delete $intrinsics{'null'}; - -# use -s to recompute sizes -%sizeof = ( - 'char', '1', - 'unsigned char', '1', - 'short', '2', - 'short int', '2', - 'unsigned short', '2', - 'unsigned short int', '2', - 'short unsigned int', '2', - 'int', '4', - 'unsigned int', '4', - 'long', '4', - 'long int', '4', - 'unsigned long', '4', - 'unsigned long int', '4', - 'long unsigned int', '4', - 'long long', '8', - 'long long int', '8', - 'unsigned long long', '8', - 'unsigned long long int', '8', - 'float', '4', - 'double', '8', - 'pointer', '4', -); - -($type_width, $member_width, $offset_width, $size_width) = (20, 20, 6, 5); - -($offset_fmt, $size_fmt) = ('d', 'd'); - -$indent = 2; - -$CC = 'cc'; -$CFLAGS = '-gstabs -S'; -$DEFINES = ''; - -$perl++ if $0 =~ m#/?c2ph$#; - -use Getopt::Std qw(getopts); - -use File::Temp 'tempdir'; - -eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift; - -getopts('aixdpvtnws:') || &usage(0); - -$opt_d && $debug++; -$opt_t && $trace++; -$opt_p && $perl++; -$opt_v && $verbose++; -$opt_n && ($perl = 0); - -if ($opt_w) { - ($type_width, $member_width, $offset_width) = (45, 35, 8); -} -if ($opt_x) { - ($offset_fmt, $offset_width, $size_fmt, $size_width) = ( 'x', '08', 'x', 04 ); -} - -eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift; - -sub PLUMBER { - select(STDERR); - print "oops, apparent pager foulup\n"; - $isatty++; - &usage(1); -} - -sub usage { - local($oops) = @_; - unless (-t STDOUT) { - select(STDERR); - } elsif (!$oops) { - $isatty++; - $| = 1; - print "hit for further explanation: "; - ; - open (PIPE, "|". ($ENV{PAGER} || 'more')); - $SIG{PIPE} = PLUMBER; - select(PIPE); - } - - print "usage: $0 [-dpnP] [var=val] [files ...]\n"; - - exit unless $isatty; - - print < 1, CLEANUP => 1) - unless (defined($SAFEDIR)); -} - -undef $SAFEDIR; - -$recurse = 1; - -if (@ARGV) { - if (grep(!/\.[csh]$/,@ARGV)) { - warn "Only *.[csh] files expected!\n"; - &usage; - } - elsif (grep(/\.s$/,@ARGV)) { - if (@ARGV > 1) { - warn "Only one *.s file allowed!\n"; - &usage; - } - } - elsif (@ARGV == 1 && $ARGV[0] =~ /\.c$/) { - local($dir, $file) = $ARGV[0] =~ m#(.*/)?(.*)$#; - $chdir = "cd $dir && " if $dir; - &system("$chdir$CC $CFLAGS $DEFINES $file") && exit 1; - $ARGV[0] =~ s/\.c$/.s/; - } - else { - &safedir; - $TMP = "$SAFEDIR/c2ph.$$.c"; - &system("cat @ARGV > $TMP") && exit 1; - &system("cd $SAFEDIR && $CC $CFLAGS $DEFINES $TMP") && exit 1; - unlink $TMP; - $TMP =~ s/\.c$/.s/; - @ARGV = ($TMP); - } -} - -if ($opt_s) { - for (split(/[\s,]+/, $opt_s)) { - $interested{$_}++; - } -} - - -$| = 1 if $debug; - -main: { - - if ($trace) { - if (-t && !@ARGV) { - print STDERR "reading from your keyboard: "; - } else { - print STDERR "reading from " . (@ARGV ? "@ARGV" : "").": "; - } - } - -STAB: while (<>) { - if ($trace && !($. % 10)) { - $lineno = $..''; - print STDERR $lineno, "\b" x length($lineno); - } - next unless /^\s*\.stabs\s+/; - $line = $_; - s/^\s*\.stabs\s+//; - if (s/\\\\"[d,]+$//) { - $saveline .= $line; - $savebar = $_; - next STAB; - } - if ($saveline) { - s/^"//; - $_ = $savebar . $_; - $line = $saveline; - } - &stab; - $savebar = $saveline = undef; - } - print STDERR "$.\n" if $trace; - unlink $TMP if $TMP; - - &compute_intrinsics if $perl && !$opt_i; - - print STDERR "resolving types\n" if $trace; - - &resolve_types; - &adjust_start_addrs; - - $sum = 2 + $type_width + $member_width; - $pmask1 = "%-${type_width}s %-${member_width}s"; - $pmask2 = "%-${sum}s %${offset_width}${offset_fmt}%s %${size_width}${size_fmt}%s"; - - - - if ($perl) { - # resolve template -- should be in stab define order, but even this isn't enough. - print STDERR "\nbuilding type templates: " if $trace; - for $i (reverse 0..$#type) { - next unless defined($name = $type[$i]); - next unless defined $struct{$name}; - ($iname = $name) =~ s/\..*//; - $build_recursed = 0; - &build_template($name) unless defined $template{&psou($name)} || - $opt_s && !$interested{$iname}; - } - print STDERR "\n\n" if $trace; - } - - print STDERR "dumping structs: " if $trace; - - local($iam); - - - - foreach $name (sort keys %struct) { - ($iname = $name) =~ s/\..*//; - next if $opt_s && !$interested{$iname}; - print STDERR "$name " if $trace; - - undef @sizeof; - undef @typedef; - undef @offsetof; - undef @indices; - undef @typeof; - undef @fieldnames; - - $mname = &munge($name); - - $fname = &psou($name); - - print "# " if $perl && $verbose; - $pcode = ''; - print "$fname {\n" if !$perl || $verbose; - $template{$fname} = &scrunch($template{$fname}) if $perl; - &pstruct($name,$name,0); - print "# " if $perl && $verbose; - print "}\n" if !$perl || $verbose; - print "\n" if $perl && $verbose; - - if ($perl) { - print "$pcode"; - - printf("\nsub %-32s { %4d; }\n\n", "${mname}'struct", $countof{$name}); - - print < $sizeof{$b}; } - - - foreach $name (sort keys %intrinsics) { - print '$',&munge($name),"'typedef = '", $template{$name}, "';\n"; - } - - print "\n1;\n" if $perl; - - exit; -} - -######################################################################################## - - -sub stab { - next unless $continued || /:[\$\w]+(\(\d+,\d+\))?=[\*\$\w]+/; # (\d+,\d+) is for sun - s/"// || next; - s/",([x\d]+),([x\d]+),([x\d]+),.*// || next; - - next if /^\s*$/; - - $size = $3 if $3; - $_ = $continued . $_ if length($continued); - if (s/\\\\$//) { - # if last 2 chars of string are '\\' then stab is continued - # in next stab entry - chop; - $continued = $_; - next; - } - $continued = ''; - - - $line = $_; - - if (($name, $pdecl) = /^([\$ \w]+):[tT]((\d+)(=[rufs*](\d+))+)$/) { - print "$name is a typedef for some funky pointers: $pdecl\n" if $debug; - &pdecl($pdecl); - next; - } - - - - if (/(([ \w]+):t(\d+|\(\d+,\d+\)))=r?(\d+|\(\d+,\d+\))(;\d+;\d+;)?/) { - local($ident) = $2; - push(@intrinsics, $ident); - $typeno = &typeno($3); - $type[$typeno] = $ident; - print STDERR "intrinsic $ident in new type $typeno\n" if $debug; - next; - } - - if (($name, $typeordef, $typeno, $extra, $struct, $_) - = /^([\$ \w]+):([ustT])(\d+|\(\d+,\d+\))(=[rufs*](\d+))?(.*)$/) - { - $typeno = &typeno($typeno); # sun foolery - } - elsif (/^[\$\w]+:/) { - next; # variable - } - else { - warn "can't grok stab: <$_> in: $line " if $_; - next; - } - - #warn "got size $size for $name\n"; - $sizeof{$name} = $size if $size; - - s/;[-\d]*;[-\d]*;$//; # we don't care about ranges - - $typenos{$name} = $typeno; - - unless (defined $type[$typeno]) { - &panic("type 0??") unless $typeno; - $type[$typeno] = $name unless defined $type[$typeno]; - printf "new type $typeno is $name" if $debug; - if ($extra =~ /\*/ && defined $type[$struct]) { - print ", a typedef for a pointer to " , $type[$struct] if $debug; - } - } else { - printf "%s is type %d", $name, $typeno if $debug; - print ", a typedef for " , $type[$typeno] if $debug; - } - print "\n" if $debug; - #next unless $extra =~ /[su*]/; - - #$type[$struct] = $name; - - if ($extra =~ /[us*]/) { - &sou($name, $extra); - $_ = &sdecl($name, $_, 0); - } - elsif (/^=ar/) { - print "it's a bare array typedef -- that's pretty sick\n" if $debug; - $_ = "$typeno$_"; - $scripts = ''; - $_ = &adecl($_,1); - - } - elsif (s/((\w+):t(\d+|\(\d+,\d+\)))?=r?(;\d+;\d+;)?//) { # the ?'s are for gcc - push(@intrinsics, $2); - $typeno = &typeno($3); - $type[$typeno] = $2; - print STDERR "intrinsic $2 in new type $typeno\n" if $debug; - } - elsif (s/^=e//) { # blessed be thy compiler; mine won't do this - &edecl; - } - else { - warn "Funny remainder for $name on line $_ left in $line " if $_; - } -} - -sub typeno { # sun thinks types are (0,27) instead of just 27 - local($_) = @_; - s/\(\d+,(\d+)\)/$1/; - $_; -} - -sub pstruct { - local($what,$prefix,$base) = @_; - local($field, $fieldname, $typeno, $count, $offset, $entry); - local($fieldtype); - local($type, $tname); - local($mytype, $mycount, $entry2); - local($struct_count) = 0; - local($pad, $revpad, $length, $prepad, $lastoffset, $lastlength, $fmt); - local($bits,$bytes); - local($template); - - - local($mname) = &munge($name); - - sub munge { - local($_) = @_; - s/[\s\$\.]/_/g; - $_; - } - - local($sname) = &psou($what); - - $nesting++; - - for $field (split(/;/, $struct{$what})) { - $pad = $prepad = 0; - $entry = ''; - ($fieldname, $typeno, $count, $offset, $length) = split(/,/, $field); - - $type = $type[$typeno]; - - $type =~ /([^[]*)(\[.*\])?/; - $mytype = $1; - $count .= $2; - $fieldtype = &psou($mytype); - - local($fname) = &psou($name); - - if ($build_templates) { - - $pad = ($offset - ($lastoffset + $lastlength))/8 - if defined $lastoffset; - - if (! $finished_template{$sname}) { - if ($isaunion{$what}) { - $template{$sname} .= 'X' x $revpad . ' ' if $revpad; - } else { - $template{$sname} .= 'x' x $pad . ' ' if $pad; - } - } - - $template = &fetch_template($type); - &repeat_template($template,$count); - - if (! $finished_template{$sname}) { - $template{$sname} .= $template; - } - - $revpad = $length/8 if $isaunion{$what}; - - ($lastoffset, $lastlength) = ($offset, $length); - - } else { - print '# ' if $perl && $verbose; - $entry = sprintf($pmask1, - ' ' x ($nesting * $indent) . $fieldtype, - "$prefix.$fieldname" . $count); - - $entry =~ s/(\*+)( )/$2$1/; - - printf $pmask2, - $entry, - ($base+$offset)/8, - ($bits = ($base+$offset)%8) ? ".$bits" : " ", - $length/8, - ($bits = $length % 8) ? ".$bits": "" - if !$perl || $verbose; - - if ($perl) { - $template = &fetch_template($type); - &repeat_template($template,$count); - } - - if ($perl && $nesting == 1) { - - push(@sizeof, int($length/8) .",\t# $fieldname"); - push(@offsetof, int($offset/8) .",\t# $fieldname"); - local($little) = &scrunch($template); - push(@typedef, "'$little', \t# $fieldname"); - $type =~ s/(struct|union) //; - push(@typeof, "'$mytype" . ($count ? $count : '') . - "',\t# $fieldname"); - push(@fieldnames, "'$fieldname',"); - } - - print ' ', ' ' x $indent x $nesting, $template - if $perl && $verbose; - - print "\n" if !$perl || $verbose; - - } - if ($perl) { - local($mycount) = defined $struct{$mytype} ? $countof{$mytype} : 1; - $mycount *= &scripts2count($count) if $count; - if ($nesting==1 && !$build_templates) { - $pcode .= sprintf("sub %-32s { %4d; }\n", - "${mname}'${fieldname}", $struct_count); - push(@indices, $struct_count); - } - $struct_count += $mycount; - } - - - &pstruct($type, "$prefix.$fieldname", $base+$offset) - if $recurse && defined $struct{$type}; - } - - $countof{$what} = $struct_count unless defined $countof{$whati}; - - $template{$sname} .= '$' if $build_templates; - $finished_template{$sname}++; - - if ($build_templates && !defined $sizeof{$name}) { - local($fmt) = &scrunch($template{$sname}); - print STDERR "no size for $name, punting with $fmt..." if $debug; - eval '$sizeof{$name} = length(pack($fmt, ()))'; - if ($@) { - chop $@; - warn "couldn't get size for \$name: $@"; - } else { - print STDERR $sizeof{$name}, "\n" if $debUg; - } - } - - --$nesting; -} - - -sub psize { - local($me) = @_; - local($amstruct) = $struct{$me} ? 'struct ' : ''; - - print '$sizeof{\'', $amstruct, $me, '\'} = '; - printf "%d;\n", $sizeof{$me}; -} - -sub pdecl { - local($pdecl) = @_; - local(@pdecls); - local($tname); - - warn "pdecl: $pdecl\n" if $debug; - - $pdecl =~ s/\(\d+,(\d+)\)/$1/g; - $pdecl =~ s/\*//g; - @pdecls = split(/=/, $pdecl); - $typeno = $pdecls[0]; - $tname = pop @pdecls; - - if ($tname =~ s/^f//) { $tname = "$tname&"; } - #else { $tname = "$tname*"; } - - for (reverse @pdecls) { - $tname .= s/^f// ? "&" : "*"; - #$tname =~ s/^f(.*)/$1&/; - print "type[$_] is $tname\n" if $debug; - $type[$_] = $tname unless defined $type[$_]; - } -} - - - -sub adecl { - ($arraytype, $unknown, $lower, $upper) = (); - #local($typeno); - # global $typeno, @type - local($_, $typedef) = @_; - - while (s/^((\d+|\(\d+,\d+\))=)?ar(\d+|\(\d+,\d+\));//) { - ($arraytype, $unknown) = ($2, $3); - $arraytype = &typeno($arraytype); - $unknown = &typeno($unknown); - if (s/^(\d+);(\d+);//) { - ($lower, $upper) = ($1, $2); - $scripts .= '[' . ($upper+1) . ']'; - } else { - warn "can't find array bounds: $_"; - } - } - if (s/^([(,)\d*f=]*),(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - $whatis = $1; - if ($whatis =~ /^(\d+|\(\d+,\d+\))=/) { - $typeno = &typeno($1); - &pdecl($whatis); - } else { - $typeno = &typeno($whatis); - } - } elsif (s/^(\d+)(=[*suf]\d*)//) { - local($whatis) = $2; - - if ($whatis =~ /[f*]/) { - &pdecl($whatis); - } elsif ($whatis =~ /[su]/) { # - print "$prefix.$fieldname is an array$scripts anon structs; disgusting\n" - if $debug; - #$type[$typeno] = $name unless defined $type[$typeno]; - ##printf "new type $typeno is $name" if $debug; - $typeno = $1; - $type[$typeno] = "$prefix.$fieldname"; - local($name) = $type[$typeno]; - &sou($name, $whatis); - $_ = &sdecl($name, $_, $start+$offset); - 1; - $start = $start{$name}; - $offset = $sizeof{$name}; - $length = $offset; - } else { - warn "what's this? $whatis in $line "; - } - } elsif (/^\d+$/) { - $typeno = $_; - } else { - warn "bad array stab: $_ in $line "; - next STAB; - } - #local($wasdef) = defined($type[$typeno]) && $debug; - #if ($typedef) { - #print "redefining $type[$typeno] to " if $wasdef; - #$type[$typeno] = "$whatis$scripts"; # unless defined $type[$typeno]; - #print "$type[$typeno]\n" if $wasdef; - #} else { - #$type[$arraytype] = $type[$typeno] unless defined $type[$arraytype]; - #} - $type[$arraytype] = "$type[$typeno]$scripts" if defined $type[$typeno]; - print "type[$arraytype] is $type[$arraytype]\n" if $debug; - print "$prefix.$fieldname is an array of $type[$arraytype]\n" if $debug; - $_; -} - - - -sub sdecl { - local($prefix, $_, $offset) = @_; - - local($fieldname, $scripts, $type, $arraytype, $unknown, - $whatis, $pdecl, $upper,$lower, $start,$length) = (); - local($typeno,$sou); - - -SFIELD: - while (/^([^;]+);/) { - $scripts = ''; - warn "sdecl $_\n" if $debug; - if (s/^([\$\w]+)://) { - $fieldname = $1; - } elsif (s/(\d+)=([us])(\d+|\(\d+,\d+\))//) { # - $typeno = &typeno($1); - $type[$typeno] = "$prefix.$fieldname"; - local($name) = "$prefix.$fieldname"; - &sou($name,$2); - $_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - $start = $start{$name}; - $offset += $sizeof{$name}; - #print "done with anon, start is $start, offset is $offset\n"; - #next SFIELD; - } else { - warn "weird field $_ of $line" if $debug; - next STAB; - #$fieldname = &gensym; - #$_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - } - - if (/^(\d+|\(\d+,\d+\))=ar/) { - $_ = &adecl($_); - } - elsif (s/^(\d+|\(\d+,\d+\))?,(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - &panic("no length?") unless $length; - $typeno = &typeno($1) if $1; - } - elsif (s/^(\d+)=xs\w+:,(\d+),(\d+);//) { - ($start, $length) = ($2, $3); - &panic("no length?") unless $length; - $typeno = &typeno($1) if $1; - } - elsif (s/^((\d+|\(\d+,\d+\))(=[*f](\d+|\(\d+,\d+\)))+),(\d+),(\d+);//) { - ($pdecl, $start, $length) = ($1,$5,$6); - &pdecl($pdecl); - } - elsif (s/(\d+)=([us])(\d+|\(\d+,\d+\))//) { # the dratted anon struct - ($typeno, $sou) = ($1, $2); - $typeno = &typeno($typeno); - if (defined($type[$typeno])) { - warn "now how did we get type $1 in $fieldname of $line?"; - } else { - print "anon type $typeno is $prefix.$fieldname\n" if $debug; - $type[$typeno] = "$prefix.$fieldname" unless defined $type[$typeno]; - }; - local($name) = "$prefix.$fieldname"; - &sou($name,$sou); - print "anon ".($isastruct{$name}) ? "struct":"union"." for $prefix.$fieldname\n" if $debug; - $type[$typeno] = "$prefix.$fieldname"; - $_ = &sdecl("$prefix.$fieldname", $_, $start+$offset); - $start = $start{$name}; - $length = $sizeof{$name}; - } - else { - warn "can't grok stab for $name ($_) in line $line "; - next STAB; - } - - &panic("no length for $prefix.$fieldname") unless $length; - $struct{$name} .= join(',', $fieldname, $typeno, $scripts, $start, $length) . ';'; - } - if (s/;\d*,(\d+),(\d+);//) { - local($start, $size) = ($1, $2); - $sizeof{$prefix} = $size; - print "start of $prefix is $start, size of $sizeof{$prefix}\n" if $debug; - $start{$prefix} = $start; - } - $_; -} - -sub edecl { - s/;$//; - $enum{$name} = $_; - $_ = ''; -} - -sub resolve_types { - local($sou); - for $i (0 .. $#type) { - next unless defined $type[$i]; - $_ = $type[$i]; - unless (/\d/) { - print "type[$i] $type[$i]\n" if $debug; - next; - } - print "type[$i] $_ ==> " if $debug; - s/^(\d+)(\**)\&\*(\**)/"$2($3".&type($1) . ')()'/e; - s/^(\d+)\&/&type($1)/e; - s/^(\d+)/&type($1)/e; - s/(\*+)([^*]+)(\*+)/$1$3$2/; - s/\((\*+)(\w+)(\*+)\)/$3($1$2)/; - s/^(\d+)([\*\[].*)/&type($1).$2/e; - #s/(\d+)(\*|(\[[\[\]\d\*]+]\])+)/&type($1).$2/ge; - $type[$i] = $_; - print "$_\n" if $debug; - } -} -sub type { &psou($type[$_[0]] || ""); } - -sub adjust_start_addrs { - for (sort keys %start) { - ($basename = $_) =~ s/\.[^.]+$//; - $start{$_} += $start{$basename}; - print "start: $_ @ $start{$_}\n" if $debug; - } -} - -sub sou { - local($what, $_) = @_; - /u/ && $isaunion{$what}++; - /s/ && $isastruct{$what}++; -} - -sub psou { - local($what) = @_; - local($prefix) = ''; - if ($isaunion{$what}) { - $prefix = 'union '; - } elsif ($isastruct{$what}) { - $prefix = 'struct '; - } - $prefix . $what; -} - -sub scrunch { - local($_) = @_; - - return '' if $_ eq ''; - - study; - - s/\$//g; - s/ / /g; - 1 while s/(\w) \1/$1$1/g; - - # i wanna say this, but perl resists my efforts: - # s/(\w)(\1+)/$2 . length($1)/ge; - - &quick_scrunch; - - s/ $//; - - $_; -} - -sub buildscrunchlist { - $scrunch_code = "sub quick_scrunch {\n"; - for (values %intrinsics) { - $scrunch_code .= "\ts/(${_}{2,})/'$_' . length(\$1)/ge;\n"; - } - $scrunch_code .= "}\n"; - print "$scrunch_code" if $debug; - eval $scrunch_code; - &panic("can't eval scrunch_code $@ \nscrunch_code") if $@; -} - -sub fetch_template { - local($mytype) = @_; - local($fmt); - local($count) = 1; - - &panic("why do you care?") unless $perl; - - if ($mytype =~ s/(\[\d+\])+$//) { - $count .= $1; - } - - if ($mytype =~ /\*/) { - $fmt = $template{'pointer'}; - } - elsif (defined $template{$mytype}) { - $fmt = $template{$mytype}; - } - elsif (defined $struct{$mytype}) { - if (!defined $template{&psou($mytype)}) { - &build_template($mytype) unless $mytype eq $name; - } - elsif ($template{&psou($mytype)} !~ /\$$/) { - #warn "incomplete template for $mytype\n"; - } - $fmt = $template{&psou($mytype)} || '?'; - } - else { - warn "unknown fmt for $mytype\n"; - $fmt = '?'; - } - - $fmt x $count . ' '; -} - -sub compute_intrinsics { - &safedir; - local($TMP) = "$SAFEDIR/c2ph-i.$$.c"; - open (TMP, ">$TMP") || die "can't open $TMP: $!"; - select(TMP); - - print STDERR "computing intrinsic sizes: " if $trace; - - undef %intrinsics; - - print <<'EOF'; -main() { - char *mask = "%d %s\n"; -EOF - - for $type (@intrinsics) { - next if !$type || $type eq 'void' || $type =~ /complex/; # sun stuff - print <<"EOF"; - printf(mask,sizeof($type), "$type"); -EOF - } - - print <<'EOF'; - printf(mask,sizeof(char *), "pointer"); - exit(0); -} -EOF - close TMP; - - select(STDOUT); - open(PIPE, "cd $SAFEDIR && $CC $TMP && $SAFEDIR/a.out|"); - while () { - chop; - split(' ',$_,2);; - print "intrinsic $_[1] is size $_[0]\n" if $debug; - $sizeof{$_[1]} = $_[0]; - $intrinsics{$_[1]} = $template{$_[0]}; - } - close(PIPE) || die "couldn't read intrinsics!"; - unlink($TMP, "$SAFEDIR/a.out"); - print STDERR "done\n" if $trace; -} - -sub scripts2count { - local($_) = @_; - - s/^\[//; - s/\]$//; - s/\]\[/*/g; - $_ = eval; - &panic("$_: $@") if $@; - $_; -} - -sub system { - print STDERR "@_\n" if $trace; - system @_; -} - -sub build_template { - local($name) = @_; - - &panic("already got a template for $name") if defined $template{$name}; - - local($build_templates) = 1; - - local($lparen) = '(' x $build_recursed; - local($rparen) = ')' x $build_recursed; - - print STDERR "$lparen$name$rparen " if $trace; - $build_recursed++; - &pstruct($name,$name,0); - print STDERR "TEMPLATE for $name is ", $template{&psou($name)}, "\n" if $debug; - --$build_recursed; -} - - -sub panic { - - select(STDERR); - - print "\npanic: @_\n"; - - exit 1 if $] <= 4.003; # caller broken - - local($i,$_); - local($p,$f,$l,$s,$h,$a,@a,@sub); - for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) { - @a = @DB'args; - for (@a) { - if (/^StB\000/ && length($_) == length($_main{'_main'})) { - $_ = sprintf("%s",$_); - } - else { - s/'/\\'/g; - s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/; - s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg; - s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg; - } - } - $w = $w ? '@ = ' : '$ = '; - $a = $h ? '(' . join(', ', @a) . ')' : ''; - push(@sub, "$w&$s$a from file $f line $l\n"); - last if $signal; - } - for ($i=0; $i <= $#sub; $i++) { - last if $signal; - print $sub[$i]; - } - exit 1; -} - -sub squishseq { - local($num); - local($last) = -1e8; - local($string); - local($seq) = '..'; - - while (defined($num = shift)) { - if ($num == ($last + 1)) { - $string .= $seq unless $inseq++; - $last = $num; - next; - } elsif ($inseq) { - $string .= $last unless $last == -1e8; - } - - $string .= ',' if defined $string; - $string .= $num; - $last = $num; - $inseq = 0; - } - $string .= $last if $inseq && $last != -e18; - $string; -} - -sub repeat_template { - # local($template, $scripts) = @_; have to change caller's values - - if ( $_[1] ) { - local($ncount) = &scripts2count($_[1]); - if ($_[0] =~ /^\s*c\s*$/i) { - $_[0] = "A$ncount "; - $_[1] = ''; - } else { - $_[0] = $template x $ncount; - } - } -} diff --git a/lib/5.26.2/x86_64-linux/.packlist b/lib/5.26.2/x86_64-linux/.packlist index f38dbbbf..d47db3e9 100644 --- a/lib/5.26.2/x86_64-linux/.packlist +++ b/lib/5.26.2/x86_64-linux/.packlist @@ -1448,7 +1448,6 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Config_git.pl type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Config_heavy.pl type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Cwd.pm type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/DB_File.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Data/Dumper.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Devel/PPPort.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Devel/Peek.pm type=file @@ -1494,7 +1493,6 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/File/Spec/VMS.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/File/Spec/Win32.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Filter/Util/Call.pm type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/GDBM_File.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Hash/Util.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Hash/Util/FieldHash.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/I18N/Langinfo.pm type=file @@ -1518,9 +1516,7 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/MIME/Base64.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/MIME/QuotedPrint.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Math/BigInt/FastCalc.pm type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/NDBM_File.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/O.pm type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/ODBM_File.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/Opcode.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/POSIX.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/POSIX.pod type=file @@ -1548,7 +1544,6 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Compress/Raw/Bzip2/Bzip2.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Compress/Raw/Zlib/Zlib.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Cwd/Cwd.so type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/DB_File/DB_File.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Data/Dumper/Dumper.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Devel/Peek/Peek.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Digest/MD5/MD5.so type=file @@ -1566,7 +1561,6 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/File/DosGlob/DosGlob.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/File/Glob/Glob.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Filter/Util/Call/Call.so type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/GDBM_File/GDBM_File.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Hash/Util/FieldHash/FieldHash.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Hash/Util/Util.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/I18N/Langinfo/Langinfo.so type=file @@ -1575,8 +1569,6 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/List/Util/Util.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/MIME/Base64/Base64.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Math/BigInt/FastCalc/FastCalc.so type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/NDBM_File/NDBM_File.so type=file -/home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/ODBM_File/ODBM_File.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/Opcode/Opcode.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/POSIX/POSIX.so type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/auto/PerlIO/encoding/encoding.so type=file @@ -1606,794 +1598,3 @@ /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/re.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/threads.pm type=file /home/git/binary-com/perl/lib/5.26.2/x86_64-linux/threads/shared.pm type=file -/home/git/binary-com/perl/man/man1/corelist.1 type=file -/home/git/binary-com/perl/man/man1/cpan.1 type=file -/home/git/binary-com/perl/man/man1/enc2xs.1 type=file -/home/git/binary-com/perl/man/man1/encguess.1 type=file -/home/git/binary-com/perl/man/man1/h2ph.1 type=file -/home/git/binary-com/perl/man/man1/h2xs.1 type=file -/home/git/binary-com/perl/man/man1/instmodsh.1 type=file -/home/git/binary-com/perl/man/man1/json_pp.1 type=file -/home/git/binary-com/perl/man/man1/libnetcfg.1 type=file -/home/git/binary-com/perl/man/man1/perl.1 type=file -/home/git/binary-com/perl/man/man1/perl5004delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5005delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5100delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5101delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5120delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5121delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5122delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5123delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5124delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5125delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5140delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5141delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5142delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5143delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5144delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5160delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5161delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5162delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5163delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5180delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5181delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5182delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5184delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5200delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5201delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5202delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5203delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5220delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5221delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5222delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5223delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5224delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5240delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5241delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5242delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5243delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5260delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5261delta.1 type=file -/home/git/binary-com/perl/man/man1/perl5262delta.1 type=file -/home/git/binary-com/perl/man/man1/perl561delta.1 type=file -/home/git/binary-com/perl/man/man1/perl56delta.1 type=file -/home/git/binary-com/perl/man/man1/perl581delta.1 type=file -/home/git/binary-com/perl/man/man1/perl582delta.1 type=file -/home/git/binary-com/perl/man/man1/perl583delta.1 type=file -/home/git/binary-com/perl/man/man1/perl584delta.1 type=file -/home/git/binary-com/perl/man/man1/perl585delta.1 type=file -/home/git/binary-com/perl/man/man1/perl586delta.1 type=file -/home/git/binary-com/perl/man/man1/perl587delta.1 type=file -/home/git/binary-com/perl/man/man1/perl588delta.1 type=file -/home/git/binary-com/perl/man/man1/perl589delta.1 type=file -/home/git/binary-com/perl/man/man1/perl58delta.1 type=file -/home/git/binary-com/perl/man/man1/perlaix.1 type=file -/home/git/binary-com/perl/man/man1/perlamiga.1 type=file -/home/git/binary-com/perl/man/man1/perlandroid.1 type=file -/home/git/binary-com/perl/man/man1/perlapi.1 type=file -/home/git/binary-com/perl/man/man1/perlapio.1 type=file -/home/git/binary-com/perl/man/man1/perlartistic.1 type=file -/home/git/binary-com/perl/man/man1/perlbook.1 type=file -/home/git/binary-com/perl/man/man1/perlboot.1 type=file -/home/git/binary-com/perl/man/man1/perlbot.1 type=file -/home/git/binary-com/perl/man/man1/perlbs2000.1 type=file -/home/git/binary-com/perl/man/man1/perlbug.1 type=file -/home/git/binary-com/perl/man/man1/perlcall.1 type=file -/home/git/binary-com/perl/man/man1/perlce.1 type=file -/home/git/binary-com/perl/man/man1/perlcheat.1 type=file -/home/git/binary-com/perl/man/man1/perlclib.1 type=file -/home/git/binary-com/perl/man/man1/perlcn.1 type=file -/home/git/binary-com/perl/man/man1/perlcommunity.1 type=file -/home/git/binary-com/perl/man/man1/perlcygwin.1 type=file -/home/git/binary-com/perl/man/man1/perldata.1 type=file -/home/git/binary-com/perl/man/man1/perldbmfilter.1 type=file -/home/git/binary-com/perl/man/man1/perldebguts.1 type=file -/home/git/binary-com/perl/man/man1/perldebtut.1 type=file -/home/git/binary-com/perl/man/man1/perldebug.1 type=file -/home/git/binary-com/perl/man/man1/perldelta.1 type=file -/home/git/binary-com/perl/man/man1/perldeprecation.1 type=file -/home/git/binary-com/perl/man/man1/perldiag.1 type=file -/home/git/binary-com/perl/man/man1/perldoc.1 type=file -/home/git/binary-com/perl/man/man1/perldos.1 type=file -/home/git/binary-com/perl/man/man1/perldsc.1 type=file -/home/git/binary-com/perl/man/man1/perldtrace.1 type=file -/home/git/binary-com/perl/man/man1/perlebcdic.1 type=file -/home/git/binary-com/perl/man/man1/perlembed.1 type=file -/home/git/binary-com/perl/man/man1/perlexperiment.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq1.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq2.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq3.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq4.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq5.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq6.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq7.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq8.1 type=file -/home/git/binary-com/perl/man/man1/perlfaq9.1 type=file -/home/git/binary-com/perl/man/man1/perlfilter.1 type=file -/home/git/binary-com/perl/man/man1/perlfork.1 type=file -/home/git/binary-com/perl/man/man1/perlform.1 type=file -/home/git/binary-com/perl/man/man1/perlfreebsd.1 type=file -/home/git/binary-com/perl/man/man1/perlfunc.1 type=file -/home/git/binary-com/perl/man/man1/perlgit.1 type=file -/home/git/binary-com/perl/man/man1/perlglossary.1 type=file -/home/git/binary-com/perl/man/man1/perlgpl.1 type=file -/home/git/binary-com/perl/man/man1/perlguts.1 type=file -/home/git/binary-com/perl/man/man1/perlhack.1 type=file -/home/git/binary-com/perl/man/man1/perlhacktips.1 type=file -/home/git/binary-com/perl/man/man1/perlhacktut.1 type=file -/home/git/binary-com/perl/man/man1/perlhaiku.1 type=file -/home/git/binary-com/perl/man/man1/perlhist.1 type=file -/home/git/binary-com/perl/man/man1/perlhpux.1 type=file -/home/git/binary-com/perl/man/man1/perlhurd.1 type=file -/home/git/binary-com/perl/man/man1/perlintern.1 type=file -/home/git/binary-com/perl/man/man1/perlinterp.1 type=file -/home/git/binary-com/perl/man/man1/perlintro.1 type=file -/home/git/binary-com/perl/man/man1/perliol.1 type=file -/home/git/binary-com/perl/man/man1/perlipc.1 type=file -/home/git/binary-com/perl/man/man1/perlirix.1 type=file -/home/git/binary-com/perl/man/man1/perlivp.1 type=file -/home/git/binary-com/perl/man/man1/perljp.1 type=file -/home/git/binary-com/perl/man/man1/perlko.1 type=file -/home/git/binary-com/perl/man/man1/perllexwarn.1 type=file -/home/git/binary-com/perl/man/man1/perllinux.1 type=file -/home/git/binary-com/perl/man/man1/perllocale.1 type=file -/home/git/binary-com/perl/man/man1/perllol.1 type=file -/home/git/binary-com/perl/man/man1/perlmacos.1 type=file -/home/git/binary-com/perl/man/man1/perlmacosx.1 type=file -/home/git/binary-com/perl/man/man1/perlmod.1 type=file -/home/git/binary-com/perl/man/man1/perlmodinstall.1 type=file -/home/git/binary-com/perl/man/man1/perlmodlib.1 type=file -/home/git/binary-com/perl/man/man1/perlmodstyle.1 type=file -/home/git/binary-com/perl/man/man1/perlmroapi.1 type=file -/home/git/binary-com/perl/man/man1/perlnetware.1 type=file -/home/git/binary-com/perl/man/man1/perlnewmod.1 type=file -/home/git/binary-com/perl/man/man1/perlnumber.1 type=file -/home/git/binary-com/perl/man/man1/perlobj.1 type=file -/home/git/binary-com/perl/man/man1/perlootut.1 type=file -/home/git/binary-com/perl/man/man1/perlop.1 type=file -/home/git/binary-com/perl/man/man1/perlopenbsd.1 type=file -/home/git/binary-com/perl/man/man1/perlopentut.1 type=file -/home/git/binary-com/perl/man/man1/perlos2.1 type=file -/home/git/binary-com/perl/man/man1/perlos390.1 type=file -/home/git/binary-com/perl/man/man1/perlos400.1 type=file -/home/git/binary-com/perl/man/man1/perlpacktut.1 type=file -/home/git/binary-com/perl/man/man1/perlperf.1 type=file -/home/git/binary-com/perl/man/man1/perlplan9.1 type=file -/home/git/binary-com/perl/man/man1/perlpod.1 type=file -/home/git/binary-com/perl/man/man1/perlpodspec.1 type=file -/home/git/binary-com/perl/man/man1/perlpodstyle.1 type=file -/home/git/binary-com/perl/man/man1/perlpolicy.1 type=file -/home/git/binary-com/perl/man/man1/perlport.1 type=file -/home/git/binary-com/perl/man/man1/perlpragma.1 type=file -/home/git/binary-com/perl/man/man1/perlqnx.1 type=file -/home/git/binary-com/perl/man/man1/perlre.1 type=file -/home/git/binary-com/perl/man/man1/perlreapi.1 type=file -/home/git/binary-com/perl/man/man1/perlrebackslash.1 type=file -/home/git/binary-com/perl/man/man1/perlrecharclass.1 type=file -/home/git/binary-com/perl/man/man1/perlref.1 type=file -/home/git/binary-com/perl/man/man1/perlreftut.1 type=file -/home/git/binary-com/perl/man/man1/perlreguts.1 type=file -/home/git/binary-com/perl/man/man1/perlrepository.1 type=file -/home/git/binary-com/perl/man/man1/perlrequick.1 type=file -/home/git/binary-com/perl/man/man1/perlreref.1 type=file -/home/git/binary-com/perl/man/man1/perlretut.1 type=file -/home/git/binary-com/perl/man/man1/perlriscos.1 type=file -/home/git/binary-com/perl/man/man1/perlrun.1 type=file -/home/git/binary-com/perl/man/man1/perlsec.1 type=file -/home/git/binary-com/perl/man/man1/perlsolaris.1 type=file -/home/git/binary-com/perl/man/man1/perlsource.1 type=file -/home/git/binary-com/perl/man/man1/perlstyle.1 type=file -/home/git/binary-com/perl/man/man1/perlsub.1 type=file -/home/git/binary-com/perl/man/man1/perlsymbian.1 type=file -/home/git/binary-com/perl/man/man1/perlsyn.1 type=file -/home/git/binary-com/perl/man/man1/perlsynology.1 type=file -/home/git/binary-com/perl/man/man1/perlthanks.1 from=/home/git/binary-com/perl/man/man1/perlbug.1 type=link -/home/git/binary-com/perl/man/man1/perlthrtut.1 type=file -/home/git/binary-com/perl/man/man1/perltie.1 type=file -/home/git/binary-com/perl/man/man1/perltoc.1 type=file -/home/git/binary-com/perl/man/man1/perltodo.1 type=file -/home/git/binary-com/perl/man/man1/perltooc.1 type=file -/home/git/binary-com/perl/man/man1/perltoot.1 type=file -/home/git/binary-com/perl/man/man1/perltrap.1 type=file -/home/git/binary-com/perl/man/man1/perltru64.1 type=file -/home/git/binary-com/perl/man/man1/perltw.1 type=file -/home/git/binary-com/perl/man/man1/perlunicode.1 type=file -/home/git/binary-com/perl/man/man1/perlunicook.1 type=file -/home/git/binary-com/perl/man/man1/perlunifaq.1 type=file -/home/git/binary-com/perl/man/man1/perluniintro.1 type=file -/home/git/binary-com/perl/man/man1/perluniprops.1 type=file -/home/git/binary-com/perl/man/man1/perlunitut.1 type=file -/home/git/binary-com/perl/man/man1/perlutil.1 type=file -/home/git/binary-com/perl/man/man1/perlvar.1 type=file -/home/git/binary-com/perl/man/man1/perlvms.1 type=file -/home/git/binary-com/perl/man/man1/perlvos.1 type=file -/home/git/binary-com/perl/man/man1/perlwin32.1 type=file -/home/git/binary-com/perl/man/man1/perlxs.1 type=file -/home/git/binary-com/perl/man/man1/perlxstut.1 type=file -/home/git/binary-com/perl/man/man1/perlxstypemap.1 type=file -/home/git/binary-com/perl/man/man1/piconv.1 type=file -/home/git/binary-com/perl/man/man1/pl2pm.1 type=file -/home/git/binary-com/perl/man/man1/pod2html.1 type=file -/home/git/binary-com/perl/man/man1/pod2man.1 type=file -/home/git/binary-com/perl/man/man1/pod2text.1 type=file -/home/git/binary-com/perl/man/man1/pod2usage.1 type=file -/home/git/binary-com/perl/man/man1/podchecker.1 type=file -/home/git/binary-com/perl/man/man1/podselect.1 type=file -/home/git/binary-com/perl/man/man1/prove.1 type=file -/home/git/binary-com/perl/man/man1/ptar.1 type=file -/home/git/binary-com/perl/man/man1/ptardiff.1 type=file -/home/git/binary-com/perl/man/man1/ptargrep.1 type=file -/home/git/binary-com/perl/man/man1/shasum.1 type=file -/home/git/binary-com/perl/man/man1/splain.1 type=file -/home/git/binary-com/perl/man/man1/xsubpp.1 type=file -/home/git/binary-com/perl/man/man1/zipdetails.1 type=file -/home/git/binary-com/perl/man/man3/AnyDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/App::Cpan.3perl type=file -/home/git/binary-com/perl/man/man3/App::Prove.3perl type=file -/home/git/binary-com/perl/man/man3/App::Prove::State.3perl type=file -/home/git/binary-com/perl/man/man3/App::Prove::State::Result.3perl type=file -/home/git/binary-com/perl/man/man3/App::Prove::State::Result::Test.3perl type=file -/home/git/binary-com/perl/man/man3/Archive::Tar.3perl type=file -/home/git/binary-com/perl/man/man3/Archive::Tar::File.3perl type=file -/home/git/binary-com/perl/man/man3/Attribute::Handlers.3perl type=file -/home/git/binary-com/perl/man/man3/AutoLoader.3perl type=file -/home/git/binary-com/perl/man/man3/AutoSplit.3perl type=file -/home/git/binary-com/perl/man/man3/B.3perl type=file -/home/git/binary-com/perl/man/man3/B::Concise.3perl type=file -/home/git/binary-com/perl/man/man3/B::Debug.3perl type=file -/home/git/binary-com/perl/man/man3/B::Deparse.3perl type=file -/home/git/binary-com/perl/man/man3/B::Op_private.3perl type=file -/home/git/binary-com/perl/man/man3/B::Showlex.3perl type=file -/home/git/binary-com/perl/man/man3/B::Terse.3perl type=file -/home/git/binary-com/perl/man/man3/B::Xref.3perl type=file -/home/git/binary-com/perl/man/man3/Benchmark.3perl type=file -/home/git/binary-com/perl/man/man3/CORE.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::API::HOWTO.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Debug.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Distroprefs.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::FirstTime.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::HandleConfig.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Kwalify.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Converter.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Feature.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History::Meta_1_0.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History::Meta_1_1.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History::Meta_1_2.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History::Meta_1_3.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::History::Meta_1_4.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Merge.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Prereqs.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Requirements.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Spec.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::Validator.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Meta::YAML.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Mirrors.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Nox.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Plugin.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Plugin::Specfile.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Queue.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Tarzip.3perl type=file -/home/git/binary-com/perl/man/man3/CPAN::Version.3perl type=file -/home/git/binary-com/perl/man/man3/Carp.3perl type=file -/home/git/binary-com/perl/man/man3/Class::Struct.3perl type=file -/home/git/binary-com/perl/man/man3/Compress::Raw::Bzip2.3perl type=file -/home/git/binary-com/perl/man/man3/Compress::Raw::Zlib.3perl type=file -/home/git/binary-com/perl/man/man3/Compress::Zlib.3perl type=file -/home/git/binary-com/perl/man/man3/Config.3perl type=file -/home/git/binary-com/perl/man/man3/Config::Extensions.3perl type=file -/home/git/binary-com/perl/man/man3/Config::Perl::V.3perl type=file -/home/git/binary-com/perl/man/man3/Cwd.3perl type=file -/home/git/binary-com/perl/man/man3/DB.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter::compress.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter::encode.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter::int32.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter::null.3perl type=file -/home/git/binary-com/perl/man/man3/DBM_Filter::utf8.3perl type=file -/home/git/binary-com/perl/man/man3/DB_File.3perl type=file -/home/git/binary-com/perl/man/man3/Data::Dumper.3perl type=file -/home/git/binary-com/perl/man/man3/Devel::PPPort.3perl type=file -/home/git/binary-com/perl/man/man3/Devel::Peek.3perl type=file -/home/git/binary-com/perl/man/man3/Devel::SelfStubber.3perl type=file -/home/git/binary-com/perl/man/man3/Digest.3perl type=file -/home/git/binary-com/perl/man/man3/Digest::MD5.3perl type=file -/home/git/binary-com/perl/man/man3/Digest::SHA.3perl type=file -/home/git/binary-com/perl/man/man3/Digest::base.3perl type=file -/home/git/binary-com/perl/man/man3/Digest::file.3perl type=file -/home/git/binary-com/perl/man/man3/DirHandle.3perl type=file -/home/git/binary-com/perl/man/man3/Dumpvalue.3perl type=file -/home/git/binary-com/perl/man/man3/DynaLoader.3perl type=file -/home/git/binary-com/perl/man/man3/Encode.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Alias.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Byte.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::CJKConstants.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::CN.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::CN::HZ.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Config.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::EBCDIC.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Encoder.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Encoding.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::GSM0338.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Guess.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::JP.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::JP::H2Z.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::JP::JIS7.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::KR.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::KR::2022_KR.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::MIME::Header.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::MIME::Name.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::PerlIO.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Supported.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Symbol.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::TW.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Unicode.3perl type=file -/home/git/binary-com/perl/man/man3/Encode::Unicode::UTF7.3perl type=file -/home/git/binary-com/perl/man/man3/English.3perl type=file -/home/git/binary-com/perl/man/man3/Env.3perl type=file -/home/git/binary-com/perl/man/man3/Errno.3perl type=file -/home/git/binary-com/perl/man/man3/Exporter.3perl type=file -/home/git/binary-com/perl/man/man3/Exporter::Heavy.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::CBuilder.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::CBuilder::Platform::Windows.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Command.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Command::MM.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Constant.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Constant::Base.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Constant::Utils.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Constant::XS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Embed.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Install.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Installed.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Liblist.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_AIX.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Any.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_BeOS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Cygwin.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_DOS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Darwin.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_MacOS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_NW5.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_OS2.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_QNX.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_UWIN.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Unix.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_VMS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_VOS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Win32.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MM_Win95.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MY.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MakeMaker.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MakeMaker::Config.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MakeMaker::FAQ.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MakeMaker::Locale.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::MakeMaker::Tutorial.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Manifest.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Miniperl.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Mkbootstrap.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Mksymlists.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Packlist.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::ParseXS.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::ParseXS::Constants.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::ParseXS::Eval.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::ParseXS::Utilities.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Typemaps.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Typemaps::Cmd.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Typemaps::InputMap.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Typemaps::OutputMap.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::Typemaps::Type.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::XSSymSet.3perl type=file -/home/git/binary-com/perl/man/man3/ExtUtils::testlib.3perl type=file -/home/git/binary-com/perl/man/man3/Fatal.3perl type=file -/home/git/binary-com/perl/man/man3/Fcntl.3perl type=file -/home/git/binary-com/perl/man/man3/File::Basename.3perl type=file -/home/git/binary-com/perl/man/man3/File::Compare.3perl type=file -/home/git/binary-com/perl/man/man3/File::Copy.3perl type=file -/home/git/binary-com/perl/man/man3/File::DosGlob.3perl type=file -/home/git/binary-com/perl/man/man3/File::Fetch.3perl type=file -/home/git/binary-com/perl/man/man3/File::Find.3perl type=file -/home/git/binary-com/perl/man/man3/File::Glob.3perl type=file -/home/git/binary-com/perl/man/man3/File::GlobMapper.3perl type=file -/home/git/binary-com/perl/man/man3/File::Path.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::AmigaOS.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Cygwin.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Epoc.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Functions.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Mac.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::OS2.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Unix.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::VMS.3perl type=file -/home/git/binary-com/perl/man/man3/File::Spec::Win32.3perl type=file -/home/git/binary-com/perl/man/man3/File::Temp.3perl type=file -/home/git/binary-com/perl/man/man3/File::stat.3perl type=file -/home/git/binary-com/perl/man/man3/FileCache.3perl type=file -/home/git/binary-com/perl/man/man3/FileHandle.3perl type=file -/home/git/binary-com/perl/man/man3/Filter::Simple.3perl type=file -/home/git/binary-com/perl/man/man3/Filter::Util::Call.3perl type=file -/home/git/binary-com/perl/man/man3/FindBin.3perl type=file -/home/git/binary-com/perl/man/man3/GDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Getopt::Long.3perl type=file -/home/git/binary-com/perl/man/man3/Getopt::Std.3perl type=file -/home/git/binary-com/perl/man/man3/HTTP::Tiny.3perl type=file -/home/git/binary-com/perl/man/man3/Hash::Util.3perl type=file -/home/git/binary-com/perl/man/man3/Hash::Util::FieldHash.3perl type=file -/home/git/binary-com/perl/man/man3/I18N::Collate.3perl type=file -/home/git/binary-com/perl/man/man3/I18N::LangTags.3perl type=file -/home/git/binary-com/perl/man/man3/I18N::LangTags::Detect.3perl type=file -/home/git/binary-com/perl/man/man3/I18N::LangTags::List.3perl type=file -/home/git/binary-com/perl/man/man3/I18N::Langinfo.3perl type=file -/home/git/binary-com/perl/man/man3/IO.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::Base.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::Bzip2.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::Deflate.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::FAQ.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::Gzip.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::RawDeflate.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Compress::Zip.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Dir.3perl type=file -/home/git/binary-com/perl/man/man3/IO::File.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Handle.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Pipe.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Poll.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Seekable.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Select.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Socket.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Socket::INET.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Socket::IP.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Socket::UNIX.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::AnyInflate.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::AnyUncompress.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::Base.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::Bunzip2.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::Gunzip.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::Inflate.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::RawInflate.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Uncompress::Unzip.3perl type=file -/home/git/binary-com/perl/man/man3/IO::Zlib.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::Cmd.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::Msg.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::Open2.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::Open3.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::Semaphore.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::SharedMem.3perl type=file -/home/git/binary-com/perl/man/man3/IPC::SysV.3perl type=file -/home/git/binary-com/perl/man/man3/Internals.3perl type=file -/home/git/binary-com/perl/man/man3/JSON::PP.3perl type=file -/home/git/binary-com/perl/man/man3/JSON::PP::Boolean.3perl type=file -/home/git/binary-com/perl/man/man3/List::Util.3perl type=file -/home/git/binary-com/perl/man/man3/List::Util::XS.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::API.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::Changes.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::Country.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::Currency.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::LangExt.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::LangFam.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::LangVar.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::Language.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Codes::Script.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Country.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Currency.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Language.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext::Cookbook.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext::Guts.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext::GutsLoader.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext::Simple.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Maketext::TPJ13.3perl type=file -/home/git/binary-com/perl/man/man3/Locale::Script.3perl type=file -/home/git/binary-com/perl/man/man3/MIME::Base64.3perl type=file -/home/git/binary-com/perl/man/man3/MIME::QuotedPrint.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigFloat.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigInt.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigInt::Calc.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigInt::CalcEmu.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigInt::FastCalc.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigInt::Lib.3perl type=file -/home/git/binary-com/perl/man/man3/Math::BigRat.3perl type=file -/home/git/binary-com/perl/man/man3/Math::Complex.3perl type=file -/home/git/binary-com/perl/man/man3/Math::Trig.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::AnyDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::Expire.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::ExpireFile.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::ExpireTest.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::NDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::SDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Memoize::Storable.3perl type=file -/home/git/binary-com/perl/man/man3/Module::CoreList.3perl type=file -/home/git/binary-com/perl/man/man3/Module::CoreList::Utils.3perl type=file -/home/git/binary-com/perl/man/man3/Module::Load.3perl type=file -/home/git/binary-com/perl/man/man3/Module::Load::Conditional.3perl type=file -/home/git/binary-com/perl/man/man3/Module::Loaded.3perl type=file -/home/git/binary-com/perl/man/man3/Module::Metadata.3perl type=file -/home/git/binary-com/perl/man/man3/NDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/NEXT.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Cmd.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Config.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Domain.3perl type=file -/home/git/binary-com/perl/man/man3/Net::FTP.3perl type=file -/home/git/binary-com/perl/man/man3/Net::NNTP.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Netrc.3perl type=file -/home/git/binary-com/perl/man/man3/Net::POP3.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Ping.3perl type=file -/home/git/binary-com/perl/man/man3/Net::SMTP.3perl type=file -/home/git/binary-com/perl/man/man3/Net::Time.3perl type=file -/home/git/binary-com/perl/man/man3/Net::hostent.3perl type=file -/home/git/binary-com/perl/man/man3/Net::libnetFAQ.3perl type=file -/home/git/binary-com/perl/man/man3/Net::netent.3perl type=file -/home/git/binary-com/perl/man/man3/Net::protoent.3perl type=file -/home/git/binary-com/perl/man/man3/Net::servent.3perl type=file -/home/git/binary-com/perl/man/man3/O.3perl type=file -/home/git/binary-com/perl/man/man3/ODBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Opcode.3perl type=file -/home/git/binary-com/perl/man/man3/POSIX.3perl type=file -/home/git/binary-com/perl/man/man3/Params::Check.3perl type=file -/home/git/binary-com/perl/man/man3/Parse::CPAN::Meta.3perl type=file -/home/git/binary-com/perl/man/man3/Perl::OSType.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO::encoding.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO::mmap.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO::scalar.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO::via.3perl type=file -/home/git/binary-com/perl/man/man3/PerlIO::via::QuotedPrint.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Checker.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Escapes.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Find.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Html.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::InputObjects.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Man.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::ParseLink.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::ParseUtils.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Parser.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::BaseTo.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::GetOptsOO.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToANSI.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToChecker.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToMan.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToNroff.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToPod.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToRtf.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToTerm.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToText.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToTk.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Perldoc::ToXml.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::PlainText.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Select.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Checker.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Debug.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::DumpAsText.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::DumpAsXML.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::HTML.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::HTMLBatch.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::LinkSection.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Methody.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::PullParser.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::PullParserEndToken.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::PullParserStartToken.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::PullParserTextToken.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::PullParserToken.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::RTF.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Search.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::SimpleTree.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Subclassing.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::Text.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::TextContent.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::XHTML.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Simple::XMLOutStream.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Text.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Text::Color.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Text::Overstrike.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Text::Termcap.3perl type=file -/home/git/binary-com/perl/man/man3/Pod::Usage.3perl type=file -/home/git/binary-com/perl/man/man3/SDBM_File.3perl type=file -/home/git/binary-com/perl/man/man3/Safe.3perl type=file -/home/git/binary-com/perl/man/man3/Scalar::Util.3perl type=file -/home/git/binary-com/perl/man/man3/Search::Dict.3perl type=file -/home/git/binary-com/perl/man/man3/SelectSaver.3perl type=file -/home/git/binary-com/perl/man/man3/SelfLoader.3perl type=file -/home/git/binary-com/perl/man/man3/Socket.3perl type=file -/home/git/binary-com/perl/man/man3/Storable.3perl type=file -/home/git/binary-com/perl/man/man3/Sub::Util.3perl type=file -/home/git/binary-com/perl/man/man3/Symbol.3perl type=file -/home/git/binary-com/perl/man/man3/Sys::Hostname.3perl type=file -/home/git/binary-com/perl/man/man3/Sys::Syslog.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Base.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Base.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Color.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Console.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Console::ParallelSession.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Console::Session.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::File.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::File::Session.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Formatter::Session.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Harness.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Harness::Beyond.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Harness::Env.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Object.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Aggregator.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Grammar.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Iterator.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Iterator::Array.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Iterator::Process.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Iterator::Stream.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::IteratorFactory.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Multiplexer.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Bailout.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Comment.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Plan.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Pragma.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Test.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Unknown.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::Version.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Result::YAML.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::ResultFactory.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Scheduler.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Scheduler::Job.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Scheduler::Spinner.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::Source.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler::Executable.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler::File.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler::Handle.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler::Perl.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::SourceHandler::RawTAP.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::YAMLish::Reader.3perl type=file -/home/git/binary-com/perl/man/man3/TAP::Parser::YAMLish::Writer.3perl type=file -/home/git/binary-com/perl/man/man3/Term::ANSIColor.3perl type=file -/home/git/binary-com/perl/man/man3/Term::Cap.3perl type=file -/home/git/binary-com/perl/man/man3/Term::Complete.3perl type=file -/home/git/binary-com/perl/man/man3/Term::ReadLine.3perl type=file -/home/git/binary-com/perl/man/man3/Test.3perl type=file -/home/git/binary-com/perl/man/man3/Test2.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::API.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::API::Breakage.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::API::Context.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::API::Instance.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::API::Stack.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Bail.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Diag.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Encoding.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Exception.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Generic.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Info.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Note.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Ok.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Plan.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Skip.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Subtest.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::TAP::Version.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Event::Waiting.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Formatter.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Formatter::TAP.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Hub.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Hub::Interceptor.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Hub::Interceptor::Terminator.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Hub::Subtest.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::IPC.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::IPC::Driver.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::IPC::Driver::Files.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Tools::Tiny.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Transition.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Util.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Util::ExternalMeta.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Util::HashBase.3perl type=file -/home/git/binary-com/perl/man/man3/Test2::Util::Trace.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::Formatter.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::IO::Scalar.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::Module.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::Tester.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::Tester::Color.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Builder::TodoDiag.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Harness.3perl type=file -/home/git/binary-com/perl/man/man3/Test::More.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Simple.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Tester.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Tester::Capture.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Tester::CaptureRunner.3perl type=file -/home/git/binary-com/perl/man/man3/Test::Tutorial.3perl type=file -/home/git/binary-com/perl/man/man3/Test::use::ok.3perl type=file -/home/git/binary-com/perl/man/man3/Text::Abbrev.3perl type=file -/home/git/binary-com/perl/man/man3/Text::Balanced.3perl type=file -/home/git/binary-com/perl/man/man3/Text::ParseWords.3perl type=file -/home/git/binary-com/perl/man/man3/Text::Tabs.3perl type=file -/home/git/binary-com/perl/man/man3/Text::Wrap.3perl type=file -/home/git/binary-com/perl/man/man3/Thread.3perl type=file -/home/git/binary-com/perl/man/man3/Thread::Queue.3perl type=file -/home/git/binary-com/perl/man/man3/Thread::Semaphore.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Array.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::File.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Handle.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Hash.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Hash::NamedCapture.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Memoize.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::RefHash.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::Scalar.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::StdHandle.3perl type=file -/home/git/binary-com/perl/man/man3/Tie::SubstrHash.3perl type=file -/home/git/binary-com/perl/man/man3/Time::HiRes.3perl type=file -/home/git/binary-com/perl/man/man3/Time::Local.3perl type=file -/home/git/binary-com/perl/man/man3/Time::Piece.3perl type=file -/home/git/binary-com/perl/man/man3/Time::Seconds.3perl type=file -/home/git/binary-com/perl/man/man3/Time::gmtime.3perl type=file -/home/git/binary-com/perl/man/man3/Time::localtime.3perl type=file -/home/git/binary-com/perl/man/man3/Time::tm.3perl type=file -/home/git/binary-com/perl/man/man3/UNIVERSAL.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::Big5.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::GB2312.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::JISX0208.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::Korean.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::Pinyin.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::Stroke.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::CJK::Zhuyin.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Collate::Locale.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::Normalize.3perl type=file -/home/git/binary-com/perl/man/man3/Unicode::UCD.3perl type=file -/home/git/binary-com/perl/man/man3/User::grent.3perl type=file -/home/git/binary-com/perl/man/man3/User::pwent.3perl type=file -/home/git/binary-com/perl/man/man3/XSLoader.3perl type=file -/home/git/binary-com/perl/man/man3/arybase.3perl type=file -/home/git/binary-com/perl/man/man3/attributes.3perl type=file -/home/git/binary-com/perl/man/man3/autodie.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::Scope::Guard.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::Scope::GuardStack.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::Util.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::exception.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::exception::system.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::hints.3perl type=file -/home/git/binary-com/perl/man/man3/autodie::skip.3perl type=file -/home/git/binary-com/perl/man/man3/autouse.3perl type=file -/home/git/binary-com/perl/man/man3/base.3perl type=file -/home/git/binary-com/perl/man/man3/bigint.3perl type=file -/home/git/binary-com/perl/man/man3/bignum.3perl type=file -/home/git/binary-com/perl/man/man3/bigrat.3perl type=file -/home/git/binary-com/perl/man/man3/blib.3perl type=file -/home/git/binary-com/perl/man/man3/bytes.3perl type=file -/home/git/binary-com/perl/man/man3/charnames.3perl type=file -/home/git/binary-com/perl/man/man3/constant.3perl type=file -/home/git/binary-com/perl/man/man3/deprecate.3perl type=file -/home/git/binary-com/perl/man/man3/diagnostics.3perl type=file -/home/git/binary-com/perl/man/man3/encoding.3perl type=file -/home/git/binary-com/perl/man/man3/encoding::warnings.3perl type=file -/home/git/binary-com/perl/man/man3/experimental.3perl type=file -/home/git/binary-com/perl/man/man3/feature.3perl type=file -/home/git/binary-com/perl/man/man3/fields.3perl type=file -/home/git/binary-com/perl/man/man3/filetest.3perl type=file -/home/git/binary-com/perl/man/man3/if.3perl type=file -/home/git/binary-com/perl/man/man3/integer.3perl type=file -/home/git/binary-com/perl/man/man3/less.3perl type=file -/home/git/binary-com/perl/man/man3/lib.3perl type=file -/home/git/binary-com/perl/man/man3/locale.3perl type=file -/home/git/binary-com/perl/man/man3/mro.3perl type=file -/home/git/binary-com/perl/man/man3/ok.3perl type=file -/home/git/binary-com/perl/man/man3/open.3perl type=file -/home/git/binary-com/perl/man/man3/ops.3perl type=file -/home/git/binary-com/perl/man/man3/overload.3perl type=file -/home/git/binary-com/perl/man/man3/overloading.3perl type=file -/home/git/binary-com/perl/man/man3/parent.3perl type=file -/home/git/binary-com/perl/man/man3/re.3perl type=file -/home/git/binary-com/perl/man/man3/sigtrap.3perl type=file -/home/git/binary-com/perl/man/man3/sort.3perl type=file -/home/git/binary-com/perl/man/man3/strict.3perl type=file -/home/git/binary-com/perl/man/man3/subs.3perl type=file -/home/git/binary-com/perl/man/man3/threads.3perl type=file -/home/git/binary-com/perl/man/man3/threads::shared.3perl type=file -/home/git/binary-com/perl/man/man3/utf8.3perl type=file -/home/git/binary-com/perl/man/man3/vars.3perl type=file -/home/git/binary-com/perl/man/man3/version.3perl type=file -/home/git/binary-com/perl/man/man3/version::Internals.3perl type=file -/home/git/binary-com/perl/man/man3/vmsish.3perl type=file -/home/git/binary-com/perl/man/man3/warnings.3perl type=file -/home/git/binary-com/perl/man/man3/warnings::register.3perl type=file diff --git a/lib/5.26.2/x86_64-linux/CORE/config.h b/lib/5.26.2/x86_64-linux/CORE/config.h index 8c0bdb54..9f81cc06 100644 --- a/lib/5.26.2/x86_64-linux/CORE/config.h +++ b/lib/5.26.2/x86_64-linux/CORE/config.h @@ -9,9 +9,9 @@ /* Package name : perl5 * Source directory : . - * Configuration time: Wed Jan 19 08:19:35 UTC 2022 - * Configured by : chylli - * Target system : linux qa68.regentmarkets.com 5.10.0-8-cloud-amd64 #1 smp debian 5.10.46-5 (2021-09-23) x86_64 gnulinux + * Configuration time: Tue Mar 26 09:06:16 UTC 2024 + * Configured by : root + * Target system : linux 4754b32b4a31 6.5.0-1016-azure #16~22.04.1-ubuntu smp fri feb 16 15:42:02 utc 2024 x86_64 gnulinux */ #ifndef _config_h_ @@ -20,7 +20,7 @@ /* LOC_SED: * This symbol holds the complete pathname to the sed program. */ -#define LOC_SED "/usr/bin/sed" /**/ +#define LOC_SED "/bin/sed" /**/ /* HAS_ALARM: * This symbol, if defined, indicates that the alarm routine is @@ -1538,7 +1538,7 @@ * feature tests from Configure are generally more reliable. */ #define OSNAME "linux" /**/ -#define OSVERS "5.10.0-8-cloud-amd64" /**/ +#define OSVERS "6.5.0-1016-azure" /**/ /* CAT2: * This macro concatenates 2 tokens together. @@ -1783,7 +1783,7 @@ #define HAS_UNAME /**/ /*#define HAS_PHOSTNAME / **/ #ifdef HAS_PHOSTNAME -#define PHOSTNAME "/usr/bin/hostname" /* How to get the host name */ +#define PHOSTNAME "/bin/hostname" /* How to get the host name */ #endif /* HAS_GETNETBYADDR: diff --git a/lib/5.26.2/x86_64-linux/CORE/libperl.so b/lib/5.26.2/x86_64-linux/CORE/libperl.so index c24ef0f740f41a9f7847c07992663ccc8b676e8a..24c04f2db434d08ce95a342aafea33ce7d693bfc 100755 GIT binary patch delta 546311 zcmZ5p2Y3|4+n?FHNj8_{a=E+QU6M<7b0lQb10f+mfY3wly@e)SkS0AKU@tTo5fA|p zX@a1fT~O>GMMMy!Do7IrMWo30o7o)X|K)k!%e?Qjw@=x(Tuuo~^ffW{1xX&FP~&(MO>G@!JBh0vI3+5DriQ5da$?5)cK5 z2G{{H00$rz-~_k;Za^Hs6YQgS)dY9j0ps+VMS9Krnzi)&I(74F*R56X#ALr0-~+@1 z5&($+KOiYM*`NICk&0%uDfv5}5Hb-^<)?*e9eI2!8xEK`<^=&aO4LdES73K7msEruqS}n?vBM7k_@U};J*sMqvaTNviFu(YB za#H$*ri4VQmLnj6uTKSEDg(nLy>Bx@qKw2eO32JvJoiR&>gY9H2#F>_1~PC91U1Xn zf%iI!@-mRsfz>*N$_|n~Sd1~q7mqR0XFyK7&(&9qT?+!*WglXf?NTT@6yNnN`pg9I`{jS!rVC0>x2yy*UInBQff&3YB%1Vf$ zrndlc&HXtLt9m3I$ltCZ3|&b4KXOFznb!b=7+Y(R#>DTst1cHq{^Um6d*+b#ciI9W z)Ev{^GZ`4A_LWe8)&5y$U z%sVBBn}m;El0@;D_qQOfg$d#bcy_4bGtY*PvL-zF-{dvXzvg1TWT%+iF!*=>CfAD| z+5x1ak(uDYcY=FvC700Myz{N(=2Yb`-%8G-EBQCKk_%!sLy?|uS#*l9#?@RNbvxNt zaVSd?b1)iyLJClko!LF(*1`a z$bH3t_4~&SzpC#I3_F*cWw@ z|4c8}?mS9}r^o%*e)72@c)9zStzR zL(70YG2%YPciu^k?KT`C>YYn%3e;`bN8|vTM{SqUINu(b3G4}Kn+L4eK3&N0q=}W- z6Keu{n%bX7AeGt&AtiaAqtQ!&m65PE^!b7}=@DT4IJj8nl5Ahzt zCGUUymt4K}U9jsp?DoUK@=2gohXe}YA%Q~p{dfuyq(s;6L83zVuIIQ-L_Q?yw;vJ} z*}T~h!uTRyNc5{3hzdz`?!H7XcF=q>!aV0f0=+m%tMs9B|IZE~Jj8Yg53wD>Lu`le zkR3v};QGZITJ;#o^lu@iALm(Ai#I+0)O`*imWfn) {3b1K9%pF%@ipZb4Xhwu>B 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

t7e-TM|4)1+YPtMwd*rMlYb@6xf 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 ?G6i#7`(`8v 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 z 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 S^KY?R-U)wE_qt9Cs{b7*{5p;R delta 546271 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 z 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 OUuXPv)Pp)Nss3-91uq2v diff --git a/lib/5.26.2/x86_64-linux/Config.pm b/lib/5.26.2/x86_64-linux/Config.pm index 4d8c8a4b..384143d1 100644 --- a/lib/5.26.2/x86_64-linux/Config.pm +++ b/lib/5.26.2/x86_64-linux/Config.pm @@ -96,9 +96,9 @@ tie %Config, 'Config', { inc_version_list => ' ', intsize => '4', ldlibpthname => 'LD_LIBRARY_PATH', - libpth => '/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64', + libpth => '/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib', osname => 'linux', - osvers => '5.10.0-8-cloud-amd64', + osvers => '6.5.0-1016-azure', path_sep => ':', privlibexp => '/home/git/binary-com/perl/lib/5.26.2', scriptdir => '/home/git/binary-com/perl/bin', diff --git a/lib/5.26.2/x86_64-linux/Config_heavy.pl b/lib/5.26.2/x86_64-linux/Config_heavy.pl index a27a54c3..2f58491e 100644 --- a/lib/5.26.2/x86_64-linux/Config_heavy.pl +++ b/lib/5.26.2/x86_64-linux/Config_heavy.pl @@ -75,9 +75,9 @@ sub header_files { # ## Package name : perl5 ## Source directory : . -## Configuration time: Wed Jan 19 08:19:35 UTC 2022 -## Configured by : chylli -## Target system : linux qa68.regentmarkets.com 5.10.0-8-cloud-amd64 #1 smp debian 5.10.46-5 (2021-09-23) x86_64 gnulinux +## Configuration time: Tue Mar 26 09:06:16 UTC 2024 +## Configured by : root +## Target system : linux 4754b32b4a31 6.5.0-1016-azure #16~22.04.1-ubuntu smp fri feb 16 15:42:02 utc 2024 x86_64 gnulinux # #: Configure command line arguments. # @@ -201,7 +201,7 @@ sub myconfig { afsroot='/afs' alignbytes='8' ansi2knr='' -aphostname='/usr/bin/hostname' +aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='26' @@ -233,9 +233,9 @@ sub myconfig { ccname='gcc' ccsymbols='' ccversion='' -cf_by='chylli' -cf_email='chylli@qa68.regentmarkets.com' -cf_time='Wed Jan 19 08:19:35 UTC 2022' +cf_by='root' +cf_email='root@4754b32b4a31.pbnfqiwlmsbu5gn45r0pdzho1a.cx.internal.cloudapp.net' +cf_time='Tue Mar 26 09:06:16 UTC 2024' charbits='8' charsize='1' chgrp='' @@ -889,7 +889,7 @@ sub myconfig { from=':' full_ar='/usr/bin/ar' full_csh='csh' -full_sed='/usr/bin/sed' +full_sed='/bin/sed' gccansipedantic='' gccosandvers='' gccversion='10.2.1 20210110' @@ -917,7 +917,7 @@ sub myconfig { gidsign='1' gidsize='4' gidtype='gid_t' -glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib /lib64 /usr/lib64 /usr/local/lib64 ' +glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' gmake='gmake' gmtime_r_proto='0' gnulibc_version='2.31' @@ -1089,19 +1089,19 @@ sub myconfig { libc='libc-2.31.so' libdb_needs_pthread='N' libperl='libperl.so' -libpth='/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64' +libpth='/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib' libs='-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc' -libsdirs=' /lib/x86_64-linux-gnu' +libsdirs=' /usr/lib/x86_64-linux-gnu' libsfiles=' libpthread.so libnsl.so libdl.so libm.so libcrypt.so libutil.so libc.so' -libsfound=' /lib/x86_64-linux-gnu/libpthread.so /lib/x86_64-linux-gnu/libnsl.so /lib/x86_64-linux-gnu/libdl.so /lib/x86_64-linux-gnu/libm.so /lib/x86_64-linux-gnu/libcrypt.so /lib/x86_64-linux-gnu/libutil.so /lib/x86_64-linux-gnu/libc.so' -libspath=' /usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64' +libsfound=' /usr/lib/x86_64-linux-gnu/libpthread.so /usr/lib/x86_64-linux-gnu/libnsl.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libcrypt.so /usr/lib/x86_64-linux-gnu/libutil.so /usr/lib/x86_64-linux-gnu/libc.so' +libspath=' /usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib' libswanted='cl pthread socket inet nsl gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' -lns='/usr/bin/ln -s' +lns='/bin/ln -s' localtime_r_proto='0' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' @@ -1139,9 +1139,9 @@ sub myconfig { multiarch='undef' mv='' myarchname='x86_64-linux' -mydomain='.regentmarkets.com' -myhostname='qa68' -myuname='linux qa68.regentmarkets.com 5.10.0-8-cloud-amd64 #1 smp debian 5.10.46-5 (2021-09-23) x86_64 gnulinux ' +mydomain='.pbnfqiwlmsbu5gn45r0pdzho1a.cx.internal.cloudapp.net' +myhostname='4754b32b4a31' +myuname='linux 4754b32b4a31 6.5.0-1016-azure #16~22.04.1-ubuntu smp fri feb 16 15:42:02 utc 2024 x86_64 gnulinux ' n='-n' need_va_copy='define' netdb_hlen_type='size_t' @@ -1170,7 +1170,7 @@ sub myconfig { optimize='-O2 -g' orderlib='false' osname='linux' -osvers='5.10.0-8-cloud-amd64' +osvers='6.5.0-1016-azure' otherlibdirs=' ' package='perl5' pager='/usr/bin/sensible-pager' @@ -1178,10 +1178,10 @@ sub myconfig { patchlevel='26' path_sep=':' perl='perl' -perl5='/home/git/binary-com/perl/bin/perl' +perl5='/usr/bin/perl' perl_patchlevel='' perl_static_inline='static __inline__' -perladmin='chylli@qa68.regentmarkets.com' +perladmin='root@4754b32b4a31.pbnfqiwlmsbu5gn45r0pdzho1a.cx.internal.cloudapp.net' perllibs='-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc' perlpath='/home/git/binary-com/perl/bin/perl' pg='pg' @@ -1209,7 +1209,7 @@ sub myconfig { readdir_r_proto='0' revision='5' rm='rm' -rm_try='/usr/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' +rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' rmail='' run='' runnm='false' diff --git a/lib/5.26.2/x86_64-linux/DB_File.pm b/lib/5.26.2/x86_64-linux/DB_File.pm deleted file mode 100644 index 5f4b764b..00000000 --- a/lib/5.26.2/x86_64-linux/DB_File.pm +++ /dev/null @@ -1,2354 +0,0 @@ -# DB_File.pm -- Perl 5 interface to Berkeley DB -# -# Written by Paul Marquess (pmqs@cpan.org) -# -# Copyright (c) 1995-2016 Paul Marquess. All rights reserved. -# This program is free software; you can redistribute it and/or -# modify it under the same terms as Perl itself. - - -package DB_File::HASHINFO ; - -require 5.008003; - -use warnings; -use strict; -use Carp; -require Tie::Hash; -@DB_File::HASHINFO::ISA = qw(Tie::Hash); - -sub new -{ - my $pkg = shift ; - my %x ; - tie %x, $pkg ; - bless \%x, $pkg ; -} - - -sub TIEHASH -{ - my $pkg = shift ; - - bless { VALID => { - bsize => 1, - ffactor => 1, - nelem => 1, - cachesize => 1, - hash => 2, - lorder => 1, - }, - GOT => {} - }, $pkg ; -} - - -sub FETCH -{ - my $self = shift ; - my $key = shift ; - - return $self->{GOT}{$key} if exists $self->{VALID}{$key} ; - - my $pkg = ref $self ; - croak "${pkg}::FETCH - Unknown element '$key'" ; -} - - -sub STORE -{ - my $self = shift ; - my $key = shift ; - my $value = shift ; - - my $type = $self->{VALID}{$key}; - - if ( $type ) - { - croak "Key '$key' not associated with a code reference" - if $type == 2 && !ref $value && ref $value ne 'CODE'; - $self->{GOT}{$key} = $value ; - return ; - } - - my $pkg = ref $self ; - croak "${pkg}::STORE - Unknown element '$key'" ; -} - -sub DELETE -{ - my $self = shift ; - my $key = shift ; - - if ( exists $self->{VALID}{$key} ) - { - delete $self->{GOT}{$key} ; - return ; - } - - my $pkg = ref $self ; - croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ; -} - -sub EXISTS -{ - my $self = shift ; - my $key = shift ; - - exists $self->{VALID}{$key} ; -} - -sub NotHere -{ - my $self = shift ; - my $method = shift ; - - croak ref($self) . " does not define the method ${method}" ; -} - -sub FIRSTKEY { my $self = shift ; $self->NotHere("FIRSTKEY") } -sub NEXTKEY { my $self = shift ; $self->NotHere("NEXTKEY") } -sub CLEAR { my $self = shift ; $self->NotHere("CLEAR") } - -package DB_File::RECNOINFO ; - -use warnings; -use strict ; - -@DB_File::RECNOINFO::ISA = qw(DB_File::HASHINFO) ; - -sub TIEHASH -{ - my $pkg = shift ; - - bless { VALID => { map {$_, 1} - qw( bval cachesize psize flags lorder reclen bfname ) - }, - GOT => {}, - }, $pkg ; -} - -package DB_File::BTREEINFO ; - -use warnings; -use strict ; - -@DB_File::BTREEINFO::ISA = qw(DB_File::HASHINFO) ; - -sub TIEHASH -{ - my $pkg = shift ; - - bless { VALID => { - flags => 1, - cachesize => 1, - maxkeypage => 1, - minkeypage => 1, - psize => 1, - compare => 2, - prefix => 2, - lorder => 1, - }, - GOT => {}, - }, $pkg ; -} - - -package DB_File ; - -use warnings; -use strict; -our ($VERSION, @ISA, @EXPORT, $AUTOLOAD, $DB_BTREE, $DB_HASH, $DB_RECNO); -our ($db_version, $use_XSLoader, $splice_end_array_no_length, $splice_end_array, $Error); -use Carp; - - -$VERSION = "1.840" ; -$VERSION = eval $VERSION; # needed for dev releases - -{ - local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);}; - my @a =(1); splice(@a, 3); - $splice_end_array_no_length = - ($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /); -} -{ - local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);}; - my @a =(1); splice(@a, 3, 1); - $splice_end_array = - ($splice_end_array =~ /^splice\(\) offset past end of array at /); -} - -#typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; -$DB_BTREE = new DB_File::BTREEINFO ; -$DB_HASH = new DB_File::HASHINFO ; -$DB_RECNO = new DB_File::RECNOINFO ; - -require Tie::Hash; -require Exporter; -BEGIN { - $use_XSLoader = 1 ; - { local $SIG{__DIE__} ; eval { require XSLoader } ; } - - if ($@) { - $use_XSLoader = 0 ; - require DynaLoader; - @ISA = qw(DynaLoader); - } -} - -push @ISA, qw(Tie::Hash Exporter); -@EXPORT = qw( - $DB_BTREE $DB_HASH $DB_RECNO - - BTREEMAGIC - BTREEVERSION - DB_LOCK - DB_SHMEM - DB_TXN - HASHMAGIC - HASHVERSION - MAX_PAGE_NUMBER - MAX_PAGE_OFFSET - MAX_REC_NUMBER - RET_ERROR - RET_SPECIAL - RET_SUCCESS - R_CURSOR - R_DUP - R_FIRST - R_FIXEDLEN - R_IAFTER - R_IBEFORE - R_LAST - R_NEXT - R_NOKEY - R_NOOVERWRITE - R_PREV - R_RECNOSYNC - R_SETCURSOR - R_SNAPSHOT - __R_UNUSED - -); - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - my ($error, $val) = constant($constname); - Carp::croak $error if $error; - no strict 'refs'; - *{$AUTOLOAD} = sub { $val }; - goto &{$AUTOLOAD}; -} - - -eval { - # Make all Fcntl O_XXX constants available for importing - require Fcntl; - my @O = grep /^O_/, @Fcntl::EXPORT; - Fcntl->import(@O); # first we import what we want to export - push(@EXPORT, @O); -}; - -if ($use_XSLoader) - { XSLoader::load("DB_File", $VERSION)} -else - { bootstrap DB_File $VERSION } - -sub tie_hash_or_array -{ - my (@arg) = @_ ; - my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ; - - use File::Spec; - $arg[1] = File::Spec->rel2abs($arg[1]) - if defined $arg[1] ; - - $arg[4] = tied %{ $arg[4] } - if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; - - $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; - $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; - - # make recno in Berkeley DB version 2 (or better) work like - # recno in version 1. - if ($db_version >= 4 and ! $tieHASH) { - $arg[2] |= O_CREAT(); - } - - if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and - $arg[1] and ! -e $arg[1]) { - open(FH, ">$arg[1]") or return undef ; - close FH ; - chmod $arg[3] ? $arg[3] : 0666 , $arg[1] ; - } - - DoTie_($tieHASH, @arg) ; -} - -sub TIEHASH -{ - tie_hash_or_array(@_) ; -} - -sub TIEARRAY -{ - tie_hash_or_array(@_) ; -} - -sub CLEAR -{ - my $self = shift; - my $key = 0 ; - my $value = "" ; - my $status = $self->seq($key, $value, R_FIRST()); - my @keys; - - while ($status == 0) { - push @keys, $key; - $status = $self->seq($key, $value, R_NEXT()); - } - foreach $key (reverse @keys) { - my $s = $self->del($key); - } -} - -sub EXTEND { } - -sub STORESIZE -{ - my $self = shift; - my $length = shift ; - my $current_length = $self->length() ; - - if ($length < $current_length) { - my $key ; - for ($key = $current_length - 1 ; $key >= $length ; -- $key) - { $self->del($key) } - } - elsif ($length > $current_length) { - $self->put($length-1, "") ; - } -} - - -sub SPLICE -{ - my $self = shift; - my $offset = shift; - if (not defined $offset) { - warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); - $offset = 0; - } - - my $has_length = @_; - my $length = @_ ? shift : 0; - # Carping about definedness comes _after_ the OFFSET sanity check. - # This is so we get the same error messages as Perl's splice(). - # - - my @list = @_; - - my $size = $self->FETCHSIZE(); - - # 'If OFFSET is negative then it start that far from the end of - # the array.' - # - if ($offset < 0) { - my $new_offset = $size + $offset; - if ($new_offset < 0) { - die "Modification of non-creatable array value attempted, " - . "subscript $offset"; - } - $offset = $new_offset; - } - - if (not defined $length) { - warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); - $length = 0; - } - - if ($offset > $size) { - $offset = $size; - warnings::warnif('misc', 'splice() offset past end of array') - if $has_length ? $splice_end_array : $splice_end_array_no_length; - } - - # 'If LENGTH is omitted, removes everything from OFFSET onward.' - if (not defined $length) { - $length = $size - $offset; - } - - # 'If LENGTH is negative, leave that many elements off the end of - # the array.' - # - if ($length < 0) { - $length = $size - $offset + $length; - - if ($length < 0) { - # The user must have specified a length bigger than the - # length of the array passed in. But perl's splice() - # doesn't catch this, it just behaves as for length=0. - # - $length = 0; - } - } - - if ($length > $size - $offset) { - $length = $size - $offset; - } - - # $num_elems holds the current number of elements in the database. - my $num_elems = $size; - - # 'Removes the elements designated by OFFSET and LENGTH from an - # array,'... - # - my @removed = (); - foreach (0 .. $length - 1) { - my $old; - my $status = $self->get($offset, $old); - if ($status != 0) { - my $msg = "error from Berkeley DB on get($offset, \$old)"; - if ($status == 1) { - $msg .= ' (no such element?)'; - } - else { - $msg .= ": error status $status"; - if (defined $! and $! ne '') { - $msg .= ", message $!"; - } - } - die $msg; - } - push @removed, $old; - - $status = $self->del($offset); - if ($status != 0) { - my $msg = "error from Berkeley DB on del($offset)"; - if ($status == 1) { - $msg .= ' (no such element?)'; - } - else { - $msg .= ": error status $status"; - if (defined $! and $! ne '') { - $msg .= ", message $!"; - } - } - die $msg; - } - - -- $num_elems; - } - - # ...'and replaces them with the elements of LIST, if any.' - my $pos = $offset; - while (defined (my $elem = shift @list)) { - my $old_pos = $pos; - my $status; - if ($pos >= $num_elems) { - $status = $self->put($pos, $elem); - } - else { - $status = $self->put($pos, $elem, $self->R_IBEFORE); - } - - if ($status != 0) { - my $msg = "error from Berkeley DB on put($pos, $elem, ...)"; - if ($status == 1) { - $msg .= ' (no such element?)'; - } - else { - $msg .= ", error status $status"; - if (defined $! and $! ne '') { - $msg .= ", message $!"; - } - } - die $msg; - } - - die "pos unexpectedly changed from $old_pos to $pos with R_IBEFORE" - if $old_pos != $pos; - - ++ $pos; - ++ $num_elems; - } - - if (wantarray) { - # 'In list context, returns the elements removed from the - # array.' - # - return @removed; - } - elsif (defined wantarray and not wantarray) { - # 'In scalar context, returns the last element removed, or - # undef if no elements are removed.' - # - if (@removed) { - my $last = pop @removed; - return "$last"; - } - else { - return undef; - } - } - elsif (not defined wantarray) { - # Void context - } - else { die } -} -sub ::DB_File::splice { &SPLICE } - -sub find_dup -{ - croak "Usage: \$db->find_dup(key,value)\n" - unless @_ == 3 ; - - my $db = shift ; - my ($origkey, $value_wanted) = @_ ; - my ($key, $value) = ($origkey, 0); - my ($status) = 0 ; - - for ($status = $db->seq($key, $value, R_CURSOR() ) ; - $status == 0 ; - $status = $db->seq($key, $value, R_NEXT() ) ) { - - return 0 if $key eq $origkey and $value eq $value_wanted ; - } - - return $status ; -} - -sub del_dup -{ - croak "Usage: \$db->del_dup(key,value)\n" - unless @_ == 3 ; - - my $db = shift ; - my ($key, $value) = @_ ; - my ($status) = $db->find_dup($key, $value) ; - return $status if $status != 0 ; - - $status = $db->del($key, R_CURSOR() ) ; - return $status ; -} - -sub get_dup -{ - croak "Usage: \$db->get_dup(key [,flag])\n" - unless @_ == 2 or @_ == 3 ; - - my $db = shift ; - my $key = shift ; - my $flag = shift ; - my $value = 0 ; - my $origkey = $key ; - my $wantarray = wantarray ; - my %values = () ; - my @values = () ; - my $counter = 0 ; - my $status = 0 ; - - # iterate through the database until either EOF ($status == 0) - # or a different key is encountered ($key ne $origkey). - for ($status = $db->seq($key, $value, R_CURSOR()) ; - $status == 0 and $key eq $origkey ; - $status = $db->seq($key, $value, R_NEXT()) ) { - - # save the value or count number of matches - if ($wantarray) { - if ($flag) - { ++ $values{$value} } - else - { push (@values, $value) } - } - else - { ++ $counter } - - } - - return ($wantarray ? ($flag ? %values : @values) : $counter) ; -} - - -sub STORABLE_freeze -{ - my $type = ref shift; - croak "Cannot freeze $type object\n"; -} - -sub STORABLE_thaw -{ - my $type = ref shift; - croak "Cannot thaw $type object\n"; -} - - - -1; -__END__ - -=head1 NAME - -DB_File - Perl5 access to Berkeley DB version 1.x - -=head1 SYNOPSIS - - use DB_File; - - [$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ; - [$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ; - [$X =] tie @array, 'DB_File', $filename, $flags, $mode, $DB_RECNO ; - - $status = $X->del($key [, $flags]) ; - $status = $X->put($key, $value [, $flags]) ; - $status = $X->get($key, $value [, $flags]) ; - $status = $X->seq($key, $value, $flags) ; - $status = $X->sync([$flags]) ; - $status = $X->fd ; - - # BTREE only - $count = $X->get_dup($key) ; - @list = $X->get_dup($key) ; - %list = $X->get_dup($key, 1) ; - $status = $X->find_dup($key, $value) ; - $status = $X->del_dup($key, $value) ; - - # RECNO only - $a = $X->length; - $a = $X->pop ; - $X->push(list); - $a = $X->shift; - $X->unshift(list); - @r = $X->splice(offset, length, elements); - - # DBM Filters - $old_filter = $db->filter_store_key ( sub { ... } ) ; - $old_filter = $db->filter_store_value( sub { ... } ) ; - $old_filter = $db->filter_fetch_key ( sub { ... } ) ; - $old_filter = $db->filter_fetch_value( sub { ... } ) ; - - untie %hash ; - untie @array ; - -=head1 DESCRIPTION - -B is a module which allows Perl programs to make use of the -facilities provided by Berkeley DB version 1.x (if you have a newer -version of DB, see L). -It is assumed that you have a copy of the Berkeley DB manual pages at -hand when reading this documentation. The interface defined here -mirrors the Berkeley DB interface closely. - -Berkeley DB is a C library which provides a consistent interface to a -number of database formats. B provides an interface to all -three of the database types currently supported by Berkeley DB. - -The file types are: - -=over 5 - -=item B - -This database type allows arbitrary key/value pairs to be stored in data -files. This is equivalent to the functionality provided by other -hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though, -the files created using DB_HASH are not compatible with any of the -other packages mentioned. - -A default hashing algorithm, which will be adequate for most -applications, is built into Berkeley DB. If you do need to use your own -hashing algorithm it is possible to write your own in Perl and have -B use it instead. - -=item B - -The btree format allows arbitrary key/value pairs to be stored in a -sorted, balanced binary tree. - -As with the DB_HASH format, it is possible to provide a user defined -Perl routine to perform the comparison of keys. By default, though, the -keys are stored in lexical order. - -=item B - -DB_RECNO allows both fixed-length and variable-length flat text files -to be manipulated using the same key/value pair interface as in DB_HASH -and DB_BTREE. In this case the key will consist of a record (line) -number. - -=back - -=head2 Using DB_File with Berkeley DB version 2 or greater - -Although B is intended to be used with Berkeley DB version 1, -it can also be used with version 2, 3 or 4. In this case the interface is -limited to the functionality provided by Berkeley DB 1.x. Anywhere the -version 2 or greater interface differs, B arranges for it to work -like version 1. This feature allows B scripts that were built -with version 1 to be migrated to version 2 or greater without any changes. - -If you want to make use of the new features available in Berkeley DB -2.x or greater, use the Perl module B instead. - -B The database file format has changed multiple times in Berkeley -DB version 2, 3 and 4. If you cannot recreate your databases, you -must dump any existing databases with either the C or the -C utility that comes with Berkeley DB. -Once you have rebuilt DB_File to use Berkeley DB version 2 or greater, -your databases can be recreated using C. Refer to the Berkeley DB -documentation for further details. - -Please read L<"COPYRIGHT"> before using version 2.x or greater of Berkeley -DB with DB_File. - -=head2 Interface to Berkeley DB - -B allows access to Berkeley DB files using the tie() mechanism -in Perl 5 (for full details, see L). This facility -allows B to access Berkeley DB files using either an -associative array (for DB_HASH & DB_BTREE file types) or an ordinary -array (for the DB_RECNO file type). - -In addition to the tie() interface, it is also possible to access most -of the functions provided in the Berkeley DB API directly. -See L. - -=head2 Opening a Berkeley DB Database File - -Berkeley DB uses the function dbopen() to open or create a database. -Here is the C prototype for dbopen(): - - DB* - dbopen (const char * file, int flags, int mode, - DBTYPE type, const void * openinfo) - -The parameter C is an enumeration which specifies which of the 3 -interface methods (DB_HASH, DB_BTREE or DB_RECNO) is to be used. -Depending on which of these is actually chosen, the final parameter, -I points to a data structure which allows tailoring of the -specific interface method. - -This interface is handled slightly differently in B. Here is -an equivalent call using B: - - tie %array, 'DB_File', $filename, $flags, $mode, $DB_HASH ; - -The C, C and C parameters are the direct -equivalent of their dbopen() counterparts. The final parameter $DB_HASH -performs the function of both the C and C parameters in -dbopen(). - -In the example above $DB_HASH is actually a pre-defined reference to a -hash object. B has three of these pre-defined references. -Apart from $DB_HASH, there is also $DB_BTREE and $DB_RECNO. - -The keys allowed in each of these pre-defined references is limited to -the names used in the equivalent C structure. So, for example, the -$DB_HASH reference will only allow keys called C, C, -C, C, C and C. - -To change one of these elements, just assign to it like this: - - $DB_HASH->{'cachesize'} = 10000 ; - -The three predefined variables $DB_HASH, $DB_BTREE and $DB_RECNO are -usually adequate for most applications. If you do need to create extra -instances of these objects, constructors are available for each file -type. - -Here are examples of the constructors and the valid options available -for DB_HASH, DB_BTREE and DB_RECNO respectively. - - $a = new DB_File::HASHINFO ; - $a->{'bsize'} ; - $a->{'cachesize'} ; - $a->{'ffactor'}; - $a->{'hash'} ; - $a->{'lorder'} ; - $a->{'nelem'} ; - - $b = new DB_File::BTREEINFO ; - $b->{'flags'} ; - $b->{'cachesize'} ; - $b->{'maxkeypage'} ; - $b->{'minkeypage'} ; - $b->{'psize'} ; - $b->{'compare'} ; - $b->{'prefix'} ; - $b->{'lorder'} ; - - $c = new DB_File::RECNOINFO ; - $c->{'bval'} ; - $c->{'cachesize'} ; - $c->{'psize'} ; - $c->{'flags'} ; - $c->{'lorder'} ; - $c->{'reclen'} ; - $c->{'bfname'} ; - -The values stored in the hashes above are mostly the direct equivalent -of their C counterpart. Like their C counterparts, all are set to a -default values - that means you don't have to set I of the -values when you only want to change one. Here is an example: - - $a = new DB_File::HASHINFO ; - $a->{'cachesize'} = 12345 ; - tie %y, 'DB_File', "filename", $flags, 0777, $a ; - -A few of the options need extra discussion here. When used, the C -equivalent of the keys C, C and C store pointers -to C functions. In B these keys are used to store references -to Perl subs. Below are templates for each of the subs: - - sub hash - { - my ($data) = @_ ; - ... - # return the hash value for $data - return $hash ; - } - - sub compare - { - my ($key, $key2) = @_ ; - ... - # return 0 if $key1 eq $key2 - # -1 if $key1 lt $key2 - # 1 if $key1 gt $key2 - return (-1 , 0 or 1) ; - } - - sub prefix - { - my ($key, $key2) = @_ ; - ... - # return number of bytes of $key2 which are - # necessary to determine that it is greater than $key1 - return $bytes ; - } - -See L for an example of using the -C template. - -If you are using the DB_RECNO interface and you intend making use of -C, you should check out L. - -=head2 Default Parameters - -It is possible to omit some or all of the final 4 parameters in the -call to C and let them take default values. As DB_HASH is the most -common file format used, the call: - - tie %A, "DB_File", "filename" ; - -is equivalent to: - - tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ; - -It is also possible to omit the filename parameter as well, so the -call: - - tie %A, "DB_File" ; - -is equivalent to: - - tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ; - -See L for a discussion on the use of C -in place of a filename. - -=head2 In Memory Databases - -Berkeley DB allows the creation of in-memory databases by using NULL -(that is, a C<(char *)0> in C) in place of the filename. B -uses C instead of NULL to provide this functionality. - -=head1 DB_HASH - -The DB_HASH file format is probably the most commonly used of the three -file formats that B supports. It is also very straightforward -to use. - -=head2 A Simple Example - -This example shows how to create a database, add key/value pairs to the -database, delete keys/value pairs and finally how to enumerate the -contents of the database. - - use warnings ; - use strict ; - use DB_File ; - our (%h, $k, $v) ; - - unlink "fruit" ; - tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH - or die "Cannot open file 'fruit': $!\n"; - - # Add a few key/value pairs to the file - $h{"apple"} = "red" ; - $h{"orange"} = "orange" ; - $h{"banana"} = "yellow" ; - $h{"tomato"} = "red" ; - - # Check for existence of a key - print "Banana Exists\n\n" if $h{"banana"} ; - - # Delete a key/value pair. - delete $h{"apple"} ; - - # print the contents of the file - while (($k, $v) = each %h) - { print "$k -> $v\n" } - - untie %h ; - -here is the output: - - Banana Exists - - orange -> orange - tomato -> red - banana -> yellow - -Note that the like ordinary associative arrays, the order of the keys -retrieved is in an apparently random order. - -=head1 DB_BTREE - -The DB_BTREE format is useful when you want to store data in a given -order. By default the keys will be stored in lexical order, but as you -will see from the example shown in the next section, it is very easy to -define your own sorting function. - -=head2 Changing the BTREE sort order - -This script shows how to override the default sorting algorithm that -BTREE uses. Instead of using the normal lexical ordering, a case -insensitive compare function will be used. - - use warnings ; - use strict ; - use DB_File ; - - my %h ; - - sub Compare - { - my ($key1, $key2) = @_ ; - "\L$key1" cmp "\L$key2" ; - } - - # specify the Perl sub that will do the comparison - $DB_BTREE->{'compare'} = \&Compare ; - - unlink "tree" ; - tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open file 'tree': $!\n" ; - - # Add a key/value pair to the file - $h{'Wall'} = 'Larry' ; - $h{'Smith'} = 'John' ; - $h{'mouse'} = 'mickey' ; - $h{'duck'} = 'donald' ; - - # Delete - delete $h{"duck"} ; - - # Cycle through the keys printing them in order. - # Note it is not necessary to sort the keys as - # the btree will have kept them in order automatically. - foreach (keys %h) - { print "$_\n" } - - untie %h ; - -Here is the output from the code above. - - mouse - Smith - Wall - -There are a few point to bear in mind if you want to change the -ordering in a BTREE database: - -=over 5 - -=item 1. - -The new compare function must be specified when you create the database. - -=item 2. - -You cannot change the ordering once the database has been created. Thus -you must use the same compare function every time you access the -database. - -=item 3 - -Duplicate keys are entirely defined by the comparison function. -In the case-insensitive example above, the keys: 'KEY' and 'key' -would be considered duplicates, and assigning to the second one -would overwrite the first. If duplicates are allowed for (with the -R_DUP flag discussed below), only a single copy of duplicate keys -is stored in the database --- so (again with example above) assigning -three values to the keys: 'KEY', 'Key', and 'key' would leave just -the first key: 'KEY' in the database with three values. For some -situations this results in information loss, so care should be taken -to provide fully qualified comparison functions when necessary. -For example, the above comparison routine could be modified to -additionally compare case-sensitively if two keys are equal in the -case insensitive comparison: - - sub compare { - my($key1, $key2) = @_; - lc $key1 cmp lc $key2 || - $key1 cmp $key2; - } - -And now you will only have duplicates when the keys themselves -are truly the same. (note: in versions of the db library prior to -about November 1996, such duplicate keys were retained so it was -possible to recover the original keys in sets of keys that -compared as equal). - - -=back - -=head2 Handling Duplicate Keys - -The BTREE file type optionally allows a single key to be associated -with an arbitrary number of values. This option is enabled by setting -the flags element of C<$DB_BTREE> to R_DUP when creating the database. - -There are some difficulties in using the tied hash interface if you -want to manipulate a BTREE database with duplicate keys. Consider this -code: - - use warnings ; - use strict ; - use DB_File ; - - my ($filename, %h) ; - - $filename = "tree" ; - unlink $filename ; - - # Enable duplicate records - $DB_BTREE->{'flags'} = R_DUP ; - - tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - # Add some key/value pairs to the file - $h{'Wall'} = 'Larry' ; - $h{'Wall'} = 'Brick' ; # Note the duplicate key - $h{'Wall'} = 'Brick' ; # Note the duplicate key and value - $h{'Smith'} = 'John' ; - $h{'mouse'} = 'mickey' ; - - # iterate through the associative array - # and print each key/value pair. - foreach (sort keys %h) - { print "$_ -> $h{$_}\n" } - - untie %h ; - -Here is the output: - - Smith -> John - Wall -> Larry - Wall -> Larry - Wall -> Larry - mouse -> mickey - -As you can see 3 records have been successfully created with key C -- the only thing is, when they are retrieved from the database they -I to have the same value, namely C. The problem is caused -by the way that the associative array interface works. Basically, when -the associative array interface is used to fetch the value associated -with a given key, it will only ever retrieve the first value. - -Although it may not be immediately obvious from the code above, the -associative array interface can be used to write values with duplicate -keys, but it cannot be used to read them back from the database. - -The way to get around this problem is to use the Berkeley DB API method -called C. This method allows sequential access to key/value -pairs. See L for details of both the C method -and the API in general. - -Here is the script above rewritten using the C API method. - - use warnings ; - use strict ; - use DB_File ; - - my ($filename, $x, %h, $status, $key, $value) ; - - $filename = "tree" ; - unlink $filename ; - - # Enable duplicate records - $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - # Add some key/value pairs to the file - $h{'Wall'} = 'Larry' ; - $h{'Wall'} = 'Brick' ; # Note the duplicate key - $h{'Wall'} = 'Brick' ; # Note the duplicate key and value - $h{'Smith'} = 'John' ; - $h{'mouse'} = 'mickey' ; - - # iterate through the btree using seq - # and print each key/value pair. - $key = $value = 0 ; - for ($status = $x->seq($key, $value, R_FIRST) ; - $status == 0 ; - $status = $x->seq($key, $value, R_NEXT) ) - { print "$key -> $value\n" } - - undef $x ; - untie %h ; - -that prints: - - Smith -> John - Wall -> Brick - Wall -> Brick - Wall -> Larry - mouse -> mickey - -This time we have got all the key/value pairs, including the multiple -values associated with the key C. - -To make life easier when dealing with duplicate keys, B comes with -a few utility methods. - -=head2 The get_dup() Method - -The C method assists in -reading duplicate values from BTREE databases. The method can take the -following forms: - - $count = $x->get_dup($key) ; - @list = $x->get_dup($key) ; - %list = $x->get_dup($key, 1) ; - -In a scalar context the method returns the number of values associated -with the key, C<$key>. - -In list context, it returns all the values which match C<$key>. Note -that the values will be returned in an apparently random order. - -In list context, if the second parameter is present and evaluates -TRUE, the method returns an associative array. The keys of the -associative array correspond to the values that matched in the BTREE -and the values of the array are a count of the number of times that -particular value occurred in the BTREE. - -So assuming the database created above, we can use C like -this: - - use warnings ; - use strict ; - use DB_File ; - - my ($filename, $x, %h) ; - - $filename = "tree" ; - - # Enable duplicate records - $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - my $cnt = $x->get_dup("Wall") ; - print "Wall occurred $cnt times\n" ; - - my %hash = $x->get_dup("Wall", 1) ; - print "Larry is there\n" if $hash{'Larry'} ; - print "There are $hash{'Brick'} Brick Walls\n" ; - - my @list = sort $x->get_dup("Wall") ; - print "Wall => [@list]\n" ; - - @list = $x->get_dup("Smith") ; - print "Smith => [@list]\n" ; - - @list = $x->get_dup("Dog") ; - print "Dog => [@list]\n" ; - - -and it will print: - - Wall occurred 3 times - Larry is there - There are 2 Brick Walls - Wall => [Brick Brick Larry] - Smith => [John] - Dog => [] - -=head2 The find_dup() Method - - $status = $X->find_dup($key, $value) ; - -This method checks for the existence of a specific key/value pair. If the -pair exists, the cursor is left pointing to the pair and the method -returns 0. Otherwise the method returns a non-zero value. - -Assuming the database from the previous example: - - use warnings ; - use strict ; - use DB_File ; - - my ($filename, $x, %h, $found) ; - - $filename = "tree" ; - - # Enable duplicate records - $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; - print "Larry Wall is $found there\n" ; - - $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; - print "Harry Wall is $found there\n" ; - - undef $x ; - untie %h ; - -prints this - - Larry Wall is there - Harry Wall is not there - - -=head2 The del_dup() Method - - $status = $X->del_dup($key, $value) ; - -This method deletes a specific key/value pair. It returns -0 if they exist and have been deleted successfully. -Otherwise the method returns a non-zero value. - -Again assuming the existence of the C database - - use warnings ; - use strict ; - use DB_File ; - - my ($filename, $x, %h, $found) ; - - $filename = "tree" ; - - # Enable duplicate records - $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - $x->del_dup("Wall", "Larry") ; - - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; - print "Larry Wall is $found there\n" ; - - undef $x ; - untie %h ; - -prints this - - Larry Wall is not there - -=head2 Matching Partial Keys - -The BTREE interface has a feature which allows partial keys to be -matched. This functionality is I available when the C method -is used along with the R_CURSOR flag. - - $x->seq($key, $value, R_CURSOR) ; - -Here is the relevant quote from the dbopen man page where it defines -the use of the R_CURSOR flag with seq: - - Note, for the DB_BTREE access method, the returned key is not - necessarily an exact match for the specified key. The returned key - is the smallest key greater than or equal to the specified key, - permitting partial key matches and range searches. - -In the example script below, the C sub uses this feature to find -and print the first matching key/value pair given a partial key. - - use warnings ; - use strict ; - use DB_File ; - use Fcntl ; - - my ($filename, $x, %h, $st, $key, $value) ; - - sub match - { - my $key = shift ; - my $value = 0; - my $orig_key = $key ; - $x->seq($key, $value, R_CURSOR) ; - print "$orig_key\t-> $key\t-> $value\n" ; - } - - $filename = "tree" ; - unlink $filename ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Cannot open $filename: $!\n"; - - # Add some key/value pairs to the file - $h{'mouse'} = 'mickey' ; - $h{'Wall'} = 'Larry' ; - $h{'Walls'} = 'Brick' ; - $h{'Smith'} = 'John' ; - - - $key = $value = 0 ; - print "IN ORDER\n" ; - for ($st = $x->seq($key, $value, R_FIRST) ; - $st == 0 ; - $st = $x->seq($key, $value, R_NEXT) ) - - { print "$key -> $value\n" } - - print "\nPARTIAL MATCH\n" ; - - match "Wa" ; - match "A" ; - match "a" ; - - undef $x ; - untie %h ; - -Here is the output: - - IN ORDER - Smith -> John - Wall -> Larry - Walls -> Brick - mouse -> mickey - - PARTIAL MATCH - Wa -> Wall -> Larry - A -> Smith -> John - a -> mouse -> mickey - -=head1 DB_RECNO - -DB_RECNO provides an interface to flat text files. Both variable and -fixed length records are supported. - -In order to make RECNO more compatible with Perl, the array offset for -all RECNO arrays begins at 0 rather than 1 as in Berkeley DB. - -As with normal Perl arrays, a RECNO array can be accessed using -negative indexes. The index -1 refers to the last element of the array, --2 the second last, and so on. Attempting to access an element before -the start of the array will raise a fatal run-time error. - -=head2 The 'bval' Option - -The operation of the bval option warrants some discussion. Here is the -definition of bval from the Berkeley DB 1.85 recno manual page: - - The delimiting byte to be used to mark the end of a - record for variable-length records, and the pad charac- - ter for fixed-length records. If no value is speci- - fied, newlines (``\n'') are used to mark the end of - variable-length records and fixed-length records are - padded with spaces. - -The second sentence is wrong. In actual fact bval will only default to -C<"\n"> when the openinfo parameter in dbopen is NULL. If a non-NULL -openinfo parameter is used at all, the value that happens to be in bval -will be used. That means you always have to specify bval when making -use of any of the options in the openinfo parameter. This documentation -error will be fixed in the next release of Berkeley DB. - -That clarifies the situation with regards Berkeley DB itself. What -about B? Well, the behavior defined in the quote above is -quite useful, so B conforms to it. - -That means that you can specify other options (e.g. cachesize) and -still have bval default to C<"\n"> for variable length records, and -space for fixed length records. - -Also note that the bval option only allows you to specify a single byte -as a delimiter. - -=head2 A Simple Example - -Here is a simple example that uses RECNO (if you are using a version -of Perl earlier than 5.004_57 this example won't work -- see -L for a workaround). - - use warnings ; - use strict ; - use DB_File ; - - my $filename = "text" ; - unlink $filename ; - - my @h ; - tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO - or die "Cannot open file 'text': $!\n" ; - - # Add a few key/value pairs to the file - $h[0] = "orange" ; - $h[1] = "blue" ; - $h[2] = "yellow" ; - - push @h, "green", "black" ; - - my $elements = scalar @h ; - print "The array contains $elements entries\n" ; - - my $last = pop @h ; - print "popped $last\n" ; - - unshift @h, "white" ; - my $first = shift @h ; - print "shifted $first\n" ; - - # Check for existence of a key - print "Element 1 Exists with value $h[1]\n" if $h[1] ; - - # use a negative index - print "The last element is $h[-1]\n" ; - print "The 2nd last element is $h[-2]\n" ; - - untie @h ; - -Here is the output from the script: - - The array contains 5 entries - popped black - shifted white - Element 1 Exists with value blue - The last element is green - The 2nd last element is yellow - -=head2 Extra RECNO Methods - -If you are using a version of Perl earlier than 5.004_57, the tied -array interface is quite limited. In the example script above -C, C, C, C -or determining the array length will not work with a tied array. - -To make the interface more useful for older versions of Perl, a number -of methods are supplied with B to simulate the missing array -operations. All these methods are accessed via the object returned from -the tie call. - -Here are the methods: - -=over 5 - -=item B<$X-Epush(list) ;> - -Pushes the elements of C to the end of the array. - -=item B<$value = $X-Epop ;> - -Removes and returns the last element of the array. - -=item B<$X-Eshift> - -Removes and returns the first element of the array. - -=item B<$X-Eunshift(list) ;> - -Pushes the elements of C to the start of the array. - -=item B<$X-Elength> - -Returns the number of elements in the array. - -=item B<$X-Esplice(offset, length, elements);> - -Returns a splice of the array. - -=back - -=head2 Another Example - -Here is a more complete example that makes use of some of the methods -described above. It also makes use of the API interface directly (see -L). - - use warnings ; - use strict ; - my (@h, $H, $file, $i) ; - use DB_File ; - use Fcntl ; - - $file = "text" ; - - unlink $file ; - - $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO - or die "Cannot open file $file: $!\n" ; - - # first create a text file to play with - $h[0] = "zero" ; - $h[1] = "one" ; - $h[2] = "two" ; - $h[3] = "three" ; - $h[4] = "four" ; - - - # Print the records in order. - # - # The length method is needed here because evaluating a tied - # array in a scalar context does not return the number of - # elements in the array. - - print "\nORIGINAL\n" ; - foreach $i (0 .. $H->length - 1) { - print "$i: $h[$i]\n" ; - } - - # use the push & pop methods - $a = $H->pop ; - $H->push("last") ; - print "\nThe last record was [$a]\n" ; - - # and the shift & unshift methods - $a = $H->shift ; - $H->unshift("first") ; - print "The first record was [$a]\n" ; - - # Use the API to add a new record after record 2. - $i = 2 ; - $H->put($i, "Newbie", R_IAFTER) ; - - # and a new record before record 1. - $i = 1 ; - $H->put($i, "New One", R_IBEFORE) ; - - # delete record 3 - $H->del(3) ; - - # now print the records in reverse order - print "\nREVERSE\n" ; - for ($i = $H->length - 1 ; $i >= 0 ; -- $i) - { print "$i: $h[$i]\n" } - - # same again, but use the API functions instead - print "\nREVERSE again\n" ; - my ($s, $k, $v) = (0, 0, 0) ; - for ($s = $H->seq($k, $v, R_LAST) ; - $s == 0 ; - $s = $H->seq($k, $v, R_PREV)) - { print "$k: $v\n" } - - undef $H ; - untie @h ; - -and this is what it outputs: - - ORIGINAL - 0: zero - 1: one - 2: two - 3: three - 4: four - - The last record was [four] - The first record was [zero] - - REVERSE - 5: last - 4: three - 3: Newbie - 2: one - 1: New One - 0: first - - REVERSE again - 5: last - 4: three - 3: Newbie - 2: one - 1: New One - 0: first - -Notes: - -=over 5 - -=item 1. - -Rather than iterating through the array, C<@h> like this: - - foreach $i (@h) - -it is necessary to use either this: - - foreach $i (0 .. $H->length - 1) - -or this: - - for ($a = $H->get($k, $v, R_FIRST) ; - $a == 0 ; - $a = $H->get($k, $v, R_NEXT) ) - -=item 2. - -Notice that both times the C method was used the record index was -specified using a variable, C<$i>, rather than the literal value -itself. This is because C will return the record number of the -inserted line via that parameter. - -=back - -=head1 THE API INTERFACE - -As well as accessing Berkeley DB using a tied hash or array, it is also -possible to make direct use of most of the API functions defined in the -Berkeley DB documentation. - -To do this you need to store a copy of the object returned from the tie. - - $db = tie %hash, "DB_File", "filename" ; - -Once you have done that, you can access the Berkeley DB API functions -as B methods directly like this: - - $db->put($key, $value, R_NOOVERWRITE) ; - -B If you have saved a copy of the object returned from -C, the underlying database file will I be closed until both -the tied variable is untied and all copies of the saved object are -destroyed. - - use DB_File ; - $db = tie %hash, "DB_File", "filename" - or die "Cannot tie filename: $!" ; - ... - undef $db ; - untie %hash ; - -See L for more details. - -All the functions defined in L are available except for -close() and dbopen() itself. The B method interface to the -supported functions have been implemented to mirror the way Berkeley DB -works whenever possible. In particular note that: - -=over 5 - -=item * - -The methods return a status value. All return 0 on success. -All return -1 to signify an error and set C<$!> to the exact -error code. The return code 1 generally (but not always) means that the -key specified did not exist in the database. - -Other return codes are defined. See below and in the Berkeley DB -documentation for details. The Berkeley DB documentation should be used -as the definitive source. - -=item * - -Whenever a Berkeley DB function returns data via one of its parameters, -the equivalent B method does exactly the same. - -=item * - -If you are careful, it is possible to mix API calls with the tied -hash/array interface in the same piece of code. Although only a few of -the methods used to implement the tied interface currently make use of -the cursor, you should always assume that the cursor has been changed -any time the tied hash/array interface is used. As an example, this -code will probably not do what you expect: - - $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE - or die "Cannot tie $filename: $!" ; - - # Get the first key/value pair and set the cursor - $X->seq($key, $value, R_FIRST) ; - - # this line will modify the cursor - $count = scalar keys %x ; - - # Get the second key/value pair. - # oops, it didn't, it got the last key/value pair! - $X->seq($key, $value, R_NEXT) ; - -The code above can be rearranged to get around the problem, like this: - - $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE - or die "Cannot tie $filename: $!" ; - - # this line will modify the cursor - $count = scalar keys %x ; - - # Get the first key/value pair and set the cursor - $X->seq($key, $value, R_FIRST) ; - - # Get the second key/value pair. - # worked this time. - $X->seq($key, $value, R_NEXT) ; - -=back - -All the constants defined in L for use in the flags parameters -in the methods defined below are also available. Refer to the Berkeley -DB documentation for the precise meaning of the flags values. - -Below is a list of the methods available. - -=over 5 - -=item B<$status = $X-Eget($key, $value [, $flags]) ;> - -Given a key (C<$key>) this method reads the value associated with it -from the database. The value read from the database is returned in the -C<$value> parameter. - -If the key does not exist the method returns 1. - -No flags are currently defined for this method. - -=item B<$status = $X-Eput($key, $value [, $flags]) ;> - -Stores the key/value pair in the database. - -If you use either the R_IAFTER or R_IBEFORE flags, the C<$key> parameter -will have the record number of the inserted key/value pair set. - -Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and -R_SETCURSOR. - -=item B<$status = $X-Edel($key [, $flags]) ;> - -Removes all key/value pairs with key C<$key> from the database. - -A return code of 1 means that the requested key was not in the -database. - -R_CURSOR is the only valid flag at present. - -=item B<$status = $X-Efd ;> - -Returns the file descriptor for the underlying database. - -See L for an explanation for why you should -not use C to lock your database. - -=item B<$status = $X-Eseq($key, $value, $flags) ;> - -This interface allows sequential retrieval from the database. See -L for full details. - -Both the C<$key> and C<$value> parameters will be set to the key/value -pair read from the database. - -The flags parameter is mandatory. The valid flag values are R_CURSOR, -R_FIRST, R_LAST, R_NEXT and R_PREV. - -=item B<$status = $X-Esync([$flags]) ;> - -Flushes any cached buffers to disk. - -R_RECNOSYNC is the only valid flag at present. - -=back - -=head1 DBM FILTERS - -A DBM Filter is a piece of code that is be used when you I want to -make the same transformation to all keys and/or values in a DBM database. -An example is when you need to encode your data in UTF-8 before writing to -the database and then decode the UTF-8 when reading from the database file. - -There are two ways to use a DBM Filter. - -=over 5 - -=item 1. - -Using the low-level API defined below. - -=item 2. - -Using the L module. -This module hides the complexity of the API defined below and comes -with a number of "canned" filters that cover some of the common use-cases. - -=back - -Use of the L module is recommended. - -=head2 DBM Filter Low-level API - -There are four methods associated with DBM Filters. All work identically, -and each is used to install (or uninstall) a single DBM Filter. Each -expects a single parameter, namely a reference to a sub. The only -difference between them is the place that the filter is installed. - -To summarise: - -=over 5 - -=item B - -If a filter has been installed with this method, it will be invoked -every time you write a key to a DBM database. - -=item B - -If a filter has been installed with this method, it will be invoked -every time you write a value to a DBM database. - - -=item B - -If a filter has been installed with this method, it will be invoked -every time you read a key from a DBM database. - -=item B - -If a filter has been installed with this method, it will be invoked -every time you read a value from a DBM database. - -=back - -You can use any combination of the methods, from none, to all four. - -All filter methods return the existing filter, if present, or C -in not. - -To delete a filter pass C to it. - -=head2 The Filter - -When each filter is called by Perl, a local copy of C<$_> will contain -the key or value to be filtered. Filtering is achieved by modifying -the contents of C<$_>. The return code from the filter is ignored. - -=head2 An Example -- the NULL termination problem. - -Consider the following scenario. You have a DBM database -that you need to share with a third-party C application. The C application -assumes that I keys and values are NULL terminated. Unfortunately -when Perl writes to DBM databases it doesn't use NULL termination, so -your Perl application will have to manage NULL termination itself. When -you write to the database you will have to use something like this: - - $hash{"$key\0"} = "$value\0" ; - -Similarly the NULL needs to be taken into account when you are considering -the length of existing keys/values. - -It would be much better if you could ignore the NULL terminations issue -in the main application code and have a mechanism that automatically -added the terminating NULL to all keys and values whenever you write to -the database and have them removed when you read from the database. As I'm -sure you have already guessed, this is a problem that DBM Filters can -fix very easily. - - use warnings ; - use strict ; - use DB_File ; - - my %hash ; - my $filename = "filt" ; - unlink $filename ; - - my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH - or die "Cannot open $filename: $!\n" ; - - # Install DBM Filters - $db->filter_fetch_key ( sub { s/\0$// } ) ; - $db->filter_store_key ( sub { $_ .= "\0" } ) ; - $db->filter_fetch_value( sub { s/\0$// } ) ; - $db->filter_store_value( sub { $_ .= "\0" } ) ; - - $hash{"abc"} = "def" ; - my $a = $hash{"ABC"} ; - # ... - undef $db ; - untie %hash ; - -Hopefully the contents of each of the filters should be -self-explanatory. Both "fetch" filters remove the terminating NULL, -and both "store" filters add a terminating NULL. - - -=head2 Another Example -- Key is a C int. - -Here is another real-life example. By default, whenever Perl writes to -a DBM database it always writes the key and value as strings. So when -you use this: - - $hash{12345} = "something" ; - -the key 12345 will get stored in the DBM database as the 5 byte string -"12345". If you actually want the key to be stored in the DBM database -as a C int, you will have to use C when writing, and C -when reading. - -Here is a DBM Filter that does it: - - use warnings ; - use strict ; - use DB_File ; - my %hash ; - my $filename = "filt" ; - unlink $filename ; - - - my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH - or die "Cannot open $filename: $!\n" ; - - $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; - $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; - $hash{123} = "def" ; - # ... - undef $db ; - untie %hash ; - -This time only two filters have been used -- we only need to manipulate -the contents of the key, so it wasn't necessary to install any value -filters. - -=head1 HINTS AND TIPS - - -=head2 Locking: The Trouble with fd - -Until version 1.72 of this module, the recommended technique for locking -B databases was to flock the filehandle returned from the "fd" -function. Unfortunately this technique has been shown to be fundamentally -flawed (Kudos to David Harris for tracking this down). Use it at your own -peril! - -The locking technique went like this. - - $db = tie(%db, 'DB_File', 'foo.db', O_CREAT|O_RDWR, 0644) - || die "dbcreat foo.db $!"; - $fd = $db->fd; - open(DB_FH, "+<&=$fd") || die "dup $!"; - flock (DB_FH, LOCK_EX) || die "flock: $!"; - ... - $db{"Tom"} = "Jerry" ; - ... - flock(DB_FH, LOCK_UN); - undef $db; - untie %db; - close(DB_FH); - -In simple terms, this is what happens: - -=over 5 - -=item 1. - -Use "tie" to open the database. - -=item 2. - -Lock the database with fd & flock. - -=item 3. - -Read & Write to the database. - -=item 4. - -Unlock and close the database. - -=back - -Here is the crux of the problem. A side-effect of opening the B -database in step 2 is that an initial block from the database will get -read from disk and cached in memory. - -To see why this is a problem, consider what can happen when two processes, -say "A" and "B", both want to update the same B database -using the locking steps outlined above. Assume process "A" has already -opened the database and has a write lock, but it hasn't actually updated -the database yet (it has finished step 2, but not started step 3 yet). Now -process "B" tries to open the same database - step 1 will succeed, -but it will block on step 2 until process "A" releases the lock. The -important thing to notice here is that at this point in time both -processes will have cached identical initial blocks from the database. - -Now process "A" updates the database and happens to change some of the -data held in the initial buffer. Process "A" terminates, flushing -all cached data to disk and releasing the database lock. At this point -the database on disk will correctly reflect the changes made by process -"A". - -With the lock released, process "B" can now continue. It also updates the -database and unfortunately it too modifies the data that was in its -initial buffer. Once that data gets flushed to disk it will overwrite -some/all of the changes process "A" made to the database. - -The result of this scenario is at best a database that doesn't contain -what you expect. At worst the database will corrupt. - -The above won't happen every time competing process update the same -B database, but it does illustrate why the technique should -not be used. - -=head2 Safe ways to lock a database - -Starting with version 2.x, Berkeley DB has internal support for locking. -The companion module to this one, B, provides an interface -to this locking functionality. If you are serious about locking -Berkeley DB databases, I strongly recommend using B. - -If using B isn't an option, there are a number of modules -available on CPAN that can be used to implement locking. Each one -implements locking differently and has different goals in mind. It is -therefore worth knowing the difference, so that you can pick the right -one for your application. Here are the three locking wrappers: - -=over 5 - -=item B - -A B wrapper which creates copies of the database file for -read access, so that you have a kind of a multiversioning concurrent read -system. However, updates are still serial. Use for databases where reads -may be lengthy and consistency problems may occur. - -=item B - -A B wrapper that has the ability to lock and unlock the database -while it is being used. Avoids the tie-before-flock problem by simply -re-tie-ing the database when you get or drop a lock. Because of the -flexibility in dropping and re-acquiring the lock in the middle of a -session, this can be massaged into a system that will work with long -updates and/or reads if the application follows the hints in the POD -documentation. - -=item B - -An extremely lightweight B wrapper that simply flocks a lockfile -before tie-ing the database and drops the lock after the untie. Allows -one to use the same lockfile for multiple databases to avoid deadlock -problems, if desired. Use for databases where updates are reads are -quick and simple flock locking semantics are enough. - -=back - -=head2 Sharing Databases With C Applications - -There is no technical reason why a Berkeley DB database cannot be -shared by both a Perl and a C application. - -The vast majority of problems that are reported in this area boil down -to the fact that C strings are NULL terminated, whilst Perl strings are -not. See L for a generic way to work around this problem. - -Here is a real example. Netscape 2.0 keeps a record of the locations you -visit along with the time you last visited them in a DB_HASH database. -This is usually stored in the file F<~/.netscape/history.db>. The key -field in the database is the location string and the value field is the -time the location was last visited stored as a 4 byte binary value. - -If you haven't already guessed, the location string is stored with a -terminating NULL. This means you need to be careful when accessing the -database. - -Here is a snippet of code that is loosely based on Tom Christiansen's -I script (available from your nearest CPAN archive in -F). - - use warnings ; - use strict ; - use DB_File ; - use Fcntl ; - - my ($dotdir, $HISTORY, %hist_db, $href, $binary_time, $date) ; - $dotdir = $ENV{HOME} || $ENV{LOGNAME}; - - $HISTORY = "$dotdir/.netscape/history.db"; - - tie %hist_db, 'DB_File', $HISTORY - or die "Cannot open $HISTORY: $!\n" ;; - - # Dump the complete database - while ( ($href, $binary_time) = each %hist_db ) { - - # remove the terminating NULL - $href =~ s/\x00$// ; - - # convert the binary time into a user friendly string - $date = localtime unpack("V", $binary_time); - print "$date $href\n" ; - } - - # check for the existence of a specific key - # remember to add the NULL - if ( $binary_time = $hist_db{"http://mox.perl.com/\x00"} ) { - $date = localtime unpack("V", $binary_time) ; - print "Last visited mox.perl.com on $date\n" ; - } - else { - print "Never visited mox.perl.com\n" - } - - untie %hist_db ; - -=head2 The untie() Gotcha - -If you make use of the Berkeley DB API, it is I strongly -recommended that you read L. - -Even if you don't currently make use of the API interface, it is still -worth reading it. - -Here is an example which illustrates the problem from a B -perspective: - - use DB_File ; - use Fcntl ; - - my %x ; - my $X ; - - $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_TRUNC - or die "Cannot tie first time: $!" ; - - $x{123} = 456 ; - - untie %x ; - - tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT - or die "Cannot tie second time: $!" ; - - untie %x ; - -When run, the script will produce this error message: - - Cannot tie second time: Invalid argument at bad.file line 14. - -Although the error message above refers to the second tie() statement -in the script, the source of the problem is really with the untie() -statement that precedes it. - -Having read L you will probably have already guessed that the -error is caused by the extra copy of the tied object stored in C<$X>. -If you haven't, then the problem boils down to the fact that the -B destructor, DESTROY, will not be called until I -references to the tied object are destroyed. Both the tied variable, -C<%x>, and C<$X> above hold a reference to the object. The call to -untie() will destroy the first, but C<$X> still holds a valid -reference, so the destructor will not get called and the database file -F will remain open. The fact that Berkeley DB then reports the -attempt to open a database that is already open via the catch-all -"Invalid argument" doesn't help. - -If you run the script with the C<-w> flag the error message becomes: - - untie attempted while 1 inner references still exist at bad.file line 12. - Cannot tie second time: Invalid argument at bad.file line 14. - -which pinpoints the real problem. Finally the script can now be -modified to fix the original problem by destroying the API object -before the untie: - - ... - $x{123} = 456 ; - - undef $X ; - untie %x ; - - $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT - ... - - -=head1 COMMON QUESTIONS - -=head2 Why is there Perl source in my database? - -If you look at the contents of a database file created by DB_File, -there can sometimes be part of a Perl script included in it. - -This happens because Berkeley DB uses dynamic memory to allocate -buffers which will subsequently be written to the database file. Being -dynamic, the memory could have been used for anything before DB -malloced it. As Berkeley DB doesn't clear the memory once it has been -allocated, the unused portions will contain random junk. In the case -where a Perl script gets written to the database, the random junk will -correspond to an area of dynamic memory that happened to be used during -the compilation of the script. - -Unless you don't like the possibility of there being part of your Perl -scripts embedded in a database file, this is nothing to worry about. - -=head2 How do I store complex data structures with DB_File? - -Although B cannot do this directly, there is a module which -can layer transparently over B to accomplish this feat. - -Check out the MLDBM module, available on CPAN in the directory -F. - -=head2 What does "wide character in subroutine entry" mean? - -You will usually get this message if you are working with UTF-8 data and -want to read/write it from/to a Berkeley DB database file. - -The easist way to deal with this issue is to use the pre-defined "utf8" -B (see L) that was designed to deal with this -situation. - -The example below shows what you need if I the key and value are -expected to be in UTF-8. - - use DB_File; - use DBM_Filter; - - my $db = tie %h, 'DB_File', '/tmp/try.db', O_CREAT|O_RDWR, 0666, $DB_BTREE; - $db->Filter_Key_Push('utf8'); - $db->Filter_Value_Push('utf8'); - - my $key = "\N{LATIN SMALL LETTER A WITH ACUTE}"; - my $value = "\N{LATIN SMALL LETTER E WITH ACUTE}"; - $h{ $key } = $value; - -=head2 What does "Invalid Argument" mean? - -You will get this error message when one of the parameters in the -C call is wrong. Unfortunately there are quite a few parameters to -get wrong, so it can be difficult to figure out which one it is. - -Here are a couple of possibilities: - -=over 5 - -=item 1. - -Attempting to reopen a database without closing it. - -=item 2. - -Using the O_WRONLY flag. - -=back - -=head2 What does "Bareword 'DB_File' not allowed" mean? - -You will encounter this particular error message when you have the -C pragma (or the full strict pragma) in your script. -Consider this script: - - use warnings ; - use strict ; - use DB_File ; - my %x ; - tie %x, DB_File, "filename" ; - -Running it produces the error in question: - - Bareword "DB_File" not allowed while "strict subs" in use - -To get around the error, place the word C in either single or -double quotes, like this: - - tie %x, "DB_File", "filename" ; - -Although it might seem like a real pain, it is really worth the effort -of having a C in all your scripts. - -=head1 REFERENCES - -Articles that are either about B or make use of it. - -=over 5 - -=item 1. - -I, Tim Kientzle (tkientzle@ddj.com), -Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41 - -=back - -=head1 HISTORY - -Moved to the Changes file. - -=head1 BUGS - -Some older versions of Berkeley DB had problems with fixed length -records using the RECNO file format. This problem has been fixed since -version 1.85 of Berkeley DB. - -I am sure there are bugs in the code. If you do find any, or can -suggest any enhancements, I would welcome your comments. - -=head1 AVAILABILITY - -B comes with the standard Perl source distribution. Look in -the directory F. Given the amount of time between releases -of Perl the version that ships with Perl is quite likely to be out of -date, so the most recent version can always be found on CPAN (see -L for details), in the directory -F. - -This version of B will work with either version 1.x, 2.x or -3.x of Berkeley DB, but is limited to the functionality provided by -version 1. - -The official web site for Berkeley DB is F. -All versions of Berkeley DB are available there. - -Alternatively, Berkeley DB version 1 is available at your nearest CPAN -archive in F. - -=head1 COPYRIGHT - -Copyright (c) 1995-2016 Paul Marquess. All rights reserved. This program -is free software; you can redistribute it and/or modify it under the -same terms as Perl itself. - -Although B is covered by the Perl license, the library it -makes use of, namely Berkeley DB, is not. Berkeley DB has its own -copyright and its own license. Please take the time to read it. - -Here are a few words taken from the Berkeley DB FAQ (at -F) regarding the license: - - Do I have to license DB to use it in Perl scripts? - - No. The Berkeley DB license requires that software that uses - Berkeley DB be freely redistributable. In the case of Perl, that - software is Perl, and not your scripts. Any Perl scripts that you - write are your property, including scripts that make use of - Berkeley DB. Neither the Perl license nor the Berkeley DB license - place any restriction on what you may do with them. - -If you are in any doubt about the license situation, contact either the -Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. - - -=head1 SEE ALSO - -L, L, L, L, L, -L, L - -=head1 AUTHOR - -The DB_File interface was written by Paul Marquess -Epmqs@cpan.orgE. - -=cut diff --git a/lib/5.26.2/x86_64-linux/Errno.pm b/lib/5.26.2/x86_64-linux/Errno.pm index e3351f72..bc120977 100644 --- a/lib/5.26.2/x86_64-linux/Errno.pm +++ b/lib/5.26.2/x86_64-linux/Errno.pm @@ -10,8 +10,8 @@ use strict; use Config; "$Config{'archname'}-$Config{'osvers'}" eq -"x86_64-linux-5.10.0-8-cloud-amd64" or - die "Errno architecture (x86_64-linux-5.10.0-8-cloud-amd64) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; +"x86_64-linux-6.5.0-1016-azure" or + die "Errno architecture (x86_64-linux-6.5.0-1016-azure) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; our $VERSION = "1.28"; $VERSION = eval $VERSION; diff --git a/lib/5.26.2/x86_64-linux/GDBM_File.pm b/lib/5.26.2/x86_64-linux/GDBM_File.pm deleted file mode 100644 index a06fa138..00000000 --- a/lib/5.26.2/x86_64-linux/GDBM_File.pm +++ /dev/null @@ -1,76 +0,0 @@ -# GDBM_File.pm -- Perl 5 interface to GNU gdbm library. - -=head1 NAME - -GDBM_File - Perl5 access to the gdbm library. - -=head1 SYNOPSIS - - use GDBM_File ; - tie %hash, 'GDBM_File', $filename, &GDBM_WRCREAT, 0640; - # Use the %hash array. - untie %hash ; - -=head1 DESCRIPTION - -B is a module which allows Perl programs to make use of the -facilities provided by the GNU gdbm library. If you intend to use this -module you should really have a copy of the gdbm manualpage at hand. - -Most of the libgdbm.a functions are available through the GDBM_File -interface. - -=head1 AVAILABILITY - -gdbm is available from any GNU archive. The master site is -C, but you are strongly urged to use one of the many -mirrors. You can obtain a list of mirror sites from -http://www.gnu.org/order/ftp.html. - -=head1 BUGS - -The available functions and the gdbm/perl interface need to be documented. - -The GDBM error number and error message interface needs to be added. - -=head1 SEE ALSO - -L, L, L. - -=cut - -package GDBM_File; - -use strict; -use warnings; -our($VERSION, @ISA, @EXPORT); - -require Carp; -require Tie::Hash; -require Exporter; -require XSLoader; -@ISA = qw(Tie::Hash Exporter); -@EXPORT = qw( - GDBM_CACHESIZE - GDBM_CENTFREE - GDBM_COALESCEBLKS - GDBM_FAST - GDBM_FASTMODE - GDBM_INSERT - GDBM_NEWDB - GDBM_NOLOCK - GDBM_OPENMASK - GDBM_READER - GDBM_REPLACE - GDBM_SYNC - GDBM_SYNCMODE - GDBM_WRCREAT - GDBM_WRITER -); - -# This module isn't dual life, so no need for dev version numbers. -$VERSION = '1.15'; - -XSLoader::load(); - -1; diff --git a/lib/5.26.2/x86_64-linux/NDBM_File.pm b/lib/5.26.2/x86_64-linux/NDBM_File.pm deleted file mode 100644 index fc250ec8..00000000 --- a/lib/5.26.2/x86_64-linux/NDBM_File.pm +++ /dev/null @@ -1,116 +0,0 @@ -package NDBM_File; - -use strict; -use warnings; - -require Tie::Hash; -require XSLoader; - -our @ISA = qw(Tie::Hash); -our $VERSION = "1.14"; - -XSLoader::load(); - -1; - -__END__ - -=head1 NAME - -NDBM_File - Tied access to ndbm files - -=head1 SYNOPSIS - - use Fcntl; # For O_RDWR, O_CREAT, etc. - use NDBM_File; - - tie(%h, 'NDBM_File', 'filename', O_RDWR|O_CREAT, 0666) - or die "Couldn't tie NDBM file 'filename': $!; aborting"; - - # Now read and change the hash - $h{newkey} = newvalue; - print $h{oldkey}; - ... - - untie %h; - -=head1 DESCRIPTION - -C establishes a connection between a Perl hash variable and -a file in NDBM_File format;. You can manipulate the data in the file -just as if it were in a Perl hash, but when your program exits, the -data will remain in the file, to be used the next time your program -runs. - -Use C with the Perl built-in C function to establish -the connection between the variable and the file. The arguments to -C should be: - -=over 4 - -=item 1. - -The hash variable you want to tie. - -=item 2. - -The string C<"NDBM_File">. (Ths tells Perl to use the C -package to perform the functions of the hash.) - -=item 3. - -The name of the file you want to tie to the hash. - -=item 4. - -Flags. Use one of: - -=over 2 - -=item C - -Read-only access to the data in the file. - -=item C - -Write-only access to the data in the file. - -=item C - -Both read and write access. - -=back - -If you want to create the file if it does not exist, add C to -any of these, as in the example. If you omit C and the file -does not already exist, the C call will fail. - -=item 5. - -The default permissions to use if a new file is created. The actual -permissions will be modified by the user's umask, so you should -probably use 0666 here. (See L.) - -=back - -=head1 DIAGNOSTICS - -On failure, the C call returns an undefined value and probably -sets C<$!> to contain the reason the file could not be tied. - -=head2 C - -This warning is emitted when you try to store a key or a value that -is too long. It means that the change was not recorded in the -database. See BUGS AND WARNINGS below. - -=head1 BUGS AND WARNINGS - -There are a number of limits on the size of the data that you can -store in the NDBM file. The most important is that the length of a -key, plus the length of its associated value, may not exceed 1008 -bytes. - -See L, L, L - -=cut diff --git a/lib/5.26.2/x86_64-linux/ODBM_File.pm b/lib/5.26.2/x86_64-linux/ODBM_File.pm deleted file mode 100644 index 31840257..00000000 --- a/lib/5.26.2/x86_64-linux/ODBM_File.pm +++ /dev/null @@ -1,113 +0,0 @@ -package ODBM_File; - -use strict; -use warnings; - -require Tie::Hash; -require XSLoader; - -our @ISA = qw(Tie::Hash); -our $VERSION = "1.14"; - -XSLoader::load(); - -1; - -__END__ - -=head1 NAME - -ODBM_File - Tied access to odbm files - -=head1 SYNOPSIS - - use Fcntl; # For O_RDWR, O_CREAT, etc. - use ODBM_File; - - # Now read and change the hash - $h{newkey} = newvalue; - print $h{oldkey}; - ... - - untie %h; - -=head1 DESCRIPTION - -C establishes a connection between a Perl hash variable and -a file in ODBM_File format;. You can manipulate the data in the file -just as if it were in a Perl hash, but when your program exits, the -data will remain in the file, to be used the next time your program -runs. - -Use C with the Perl built-in C function to establish -the connection between the variable and the file. The arguments to -C should be: - -=over 4 - -=item 1. - -The hash variable you want to tie. - -=item 2. - -The string C<"ODBM_File">. (Ths tells Perl to use the C -package to perform the functions of the hash.) - -=item 3. - -The name of the file you want to tie to the hash. - -=item 4. - -Flags. Use one of: - -=over 2 - -=item C - -Read-only access to the data in the file. - -=item C - -Write-only access to the data in the file. - -=item C - -Both read and write access. - -=back - -If you want to create the file if it does not exist, add C to -any of these, as in the example. If you omit C and the file -does not already exist, the C call will fail. - -=item 5. - -The default permissions to use if a new file is created. The actual -permissions will be modified by the user's umask, so you should -probably use 0666 here. (See L.) - -=back - -=head1 DIAGNOSTICS - -On failure, the C call returns an undefined value and probably -sets C<$!> to contain the reason the file could not be tied. - -=head2 C - -This warning is emitted when you try to store a key or a value that -is too long. It means that the change was not recorded in the -database. See BUGS AND WARNINGS below. - -=head1 BUGS AND WARNINGS - -There are a number of limits on the size of the data that you can -store in the ODBM file. The most important is that the length of a -key, plus the length of its associated value, may not exceed 1008 -bytes. - -See L, L, L - -=cut diff --git a/lib/5.26.2/x86_64-linux/auto/B/B.so b/lib/5.26.2/x86_64-linux/auto/B/B.so index 5176b48f7c9a50a6a922780450c87a75849031dc..638ab0c59dfe6c354dd01f4bc0856348459e1fd0 100755 GIT binary patch delta 10399 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Compress/Raw/Bzip2/Bzip2.so b/lib/5.26.2/x86_64-linux/auto/Compress/Raw/Bzip2/Bzip2.so index e1e9e60fc970385e892318574dd74cd7a8879ba0..3a6291a5b592d67e76e3a88cb4143101ef444f17 100755 GIT binary patch delta 18280 zcmdsfd3;nw_U}EnyVEy)JKddLlJ0bp+ntRB0tpBq2uRq2C_4j^00Bj!0UKywpU-^W@4Ywg{qgeooKAgD z)v0sp)Tz3ss&BGxPukKwX{!pUa#xX|`i&d=J-N1c$L%*-@612;dBt!0vt}*3ty-|Kr)?ZhY16D!g&tSErm0Yz8$z=) zwro@=db#M@6KZygs-D!m{2Z)s{ccvde{cgRiq^#~i=|Cz4Lh!Wa zUMF7cNtMOpy->XsDv~t*)OO&*wa*FW^ODJ*+N;d`*(+N2qPoIu4uEVg_vttSd#o-) zV|Drk?my~YiZcB2uJH6Gf9M>%?KL3Hu{ysy_kyB57R_9GB|7k+klJpG!D3lC~R8y@Wjx{ag4SxFgs(denXi zp{c|*4#0=-MfaV?nT?jYja zyVOLT+?fa%?{acw7>ZKi?#%YBq?8CyrQ+X-N$~V`WPSysLic0h$g?P*T?BGJF8W_d zEefZg?EBWXiUUAj4?O^^M$_NHoX3Gv?;sw$lJd>g=WUN;(DByi6I+{rTc5tv`d3>! z=#97jHLr9xjK)?L*&!XIoK(Hi~`Z=s*&a)kA^upD9f4L4&<3TcP1k(gs5vc19n z!284Ww&T@RL3s4FW-@2V+z80NfG?rEEu3 zXnFuP2QnPJ@XMngM+bqh;~}*2>Q1i7OyGL2N$V%CXnxH-p6A{REEKEXGL?0xc zxS9%Ebl}+eC)wCBirWJd7@dIYH1|k2ozY_K5*~M0P(Lb)Nr8qx2mmDr0L2Bc$N7Ld z!ib=|Id}aFrEWsk5yfA|V;}2C%f@&ezXKGe>Doj9ofV`x1>C57>Ju$rW<*Cv#eUEVWr$Tcm?bO7v10@Uv zC}Ai-HBCb)Q_Z2cMeWQU4{T^mf%E&|Ab1zn~#9#~8P zGDpUq1~9D)V_*PnuaSd6M_{UtGA02TI@b3OVG4gyMW z5Kw}HfOa%FsHV|DGsH^+D17Z+j>-%PWv#!WEYH_NQ6b-yn<55)57fu;Lf=?TI|t>ta$zKm;{$-#N_30zYsfnV_r=-NZ^Om#T>!w~;Lv2!qmVor=dR4jK0Mfbz{P)m;$ z>p;_QfSypR_(tMIt`sV9%fv=s&do|?uWTeo%XCNZSvIm1UM~$@rSaCPkA}set8E;j ziv9{Kx>_z$O&7S3mh?PF zGRCLqIz-a*^&>Dr(?^SxKT$!r4QkR`rSh(!=v@)>=_RQgdscmn==Uc|i%moizLU~5 zse9o#lzGjk-jB8@b5Nw7!NNg#Dwhv(V4Sq^I!OJ(EOQEwdfY7Yl1Tj-lZ`eO=uZ8G zw}6v2HqDupc#r`Z)9rz`d2~h!FP) z<~8~<_%aTz)BSJ{z$(br>hsNxxYx;gEAiK1$a~5G(162isooY73&4(ArLQz=SnWFf zVT>O&3^wcAObrYk(Z|7A@tU1!yG7}68ZuE%P<_G#)hA3)eZmCQCrnU%!UWaJ9L=1d zdRx;3)hA3)eSCt%+2PoerOI;&D$gaTJeQ#IT!PAT2`bMes63aT@?3(-a|tnV&Wwp9 zjUO}~amO{3Y>xXvf)N)IjJS|s#DxSSE+iOnA;E|X2}WESpvvMm0XtqyfDLZVFK{V49k@X5D198D)O5~*b|Ka zXfgtz$q0ZZBLJF=0BAA-pvee;CL;ivi~tA(ViywB zJDu+srSJj|AMpTuO(}eUBZ^_PkV%U&d9XaJVhH`)3kyDN% zhW)~Kic(~=<+?Il@qHifBT0K6PwD8B*xoeX8M1SFAATFtX=tj=r#(Adue)%G*@(_VBLNd=i#VTgs91=s0mmD%N5h`ofI=!;9N)}SdEh8ZdmR(twVKRFJr7|s*GJ$vk@=WAIg{0m zWwRc4cLmV&+ZpV1&js-47x7pem-(#wE})=3oDF%-y%`{)|G>NR^X|U_6zYpv(F^V) z0Hyjtel+ZHD@akw^)iG`=3aLmK!rY+A15!ny8~3})tK+hS7p}&^kL%sD9UqLuseG) zAM_k!8}AcEqbWig>aHA3TZn2zeGNrj+t4JG>wH%xK#z;8F_e??FqDLh_`o0?6+dI7juVfJp=kOmSkHWFfC_GCo*z;l7GI$< zcR3!pU~v+f`e!_OQ08DZ8-B(;&JlTIskopPZc1;KB%j~kBMj0DlV3nP#nJ_$-g~nH zNQ7KvV&+&{ANvznS-Hf^w%|2{d{!Q9=khTutE_yJ{}jy0YG#&)V<=gLvYe!GmQipc zMwQixPNCC+1F$EnKk>>eSirr_rvm0*4=b`BBEBPO=Hm9>6V1UaWykDRKHz6}PP!OT z6yq#=$S6aEkx_?F)!2`)v>1lWtahVEn~{siNit%XJiBo%IGWK9Qpv^uxW{31#SH7l z?QoCN*n)D3aVu(F#vYX2#uMnrW4wx%sm9f4>n(3^kN&b3BG8>BAi0Pv8i}=!UMy z*oeJDHTu8;i}3K~@IC9#Izhc288P_2_v>OM}yJqx+9mz&N2sn(-V5V-IfR#?; z2y~l2F!liEGdvxtFoVoZUWs1e0ra*S^^+BVaMl;yh%P4}w zdm9Td`by&`blS(54zVkZa`5{qc>^M?t#flR8;@f$B5hLSuBP{gXyh_~H;h};cS9=D zRsyHq2R269N#M~R!TOA}mohe7c5@l;0eKFA4me!uiJdBA?h?X`k7EttlsIio}cc6DoA8Y|=@A?2>xV{ka zX(^Y@s`UsW#L~g_I%;b4g<)Q)mrGQuH-n2T9VM8oSo(_X<0&ij4(q50)IgtQD5lra z%`87Fz8p^l>8bFf>iB%L>) zlDxXLwRDpeHZ?hb_cL{Qmqp3Qudc?bc%7gSb^ zh@%3N`4d_n29>QAyXH||v!3ue71@$GW3#N@87upkqw9bwFI6_?E6QD^C*R= zWu0R_?NBk;=VP=26VZD?qm}2a(vfdASCm&kuyXYRj50~Qynw!kz>b9&om*U3Xgcs# z(}A~|4!l+RiWG{&@U0NZcU)d7G3dTGXiNMN`xM){62s5Hw9&B;_AkWXd}h zOZi6^L%vr0v{=eFyS-61o@knO8L!8P5Go{QhwVq$iE=YER*uN%NylenDWD~P?Ub4mhXv)%c*m^ zoX<8^IiEEZiZTdlq|RmpeP)pw5A{}*zk|$R`P^hKtyGj-L1j|?7bf#- zFb**@DEi$g)o;4fRDbg-s6Qv3T_x3@S|z7AvRY1YyVY`y_|~AwP*J@`Ho0p}qlML` zg?k4m$}=EX_{ka?G*tRzoT+!nU_5(3riIs=OzRLu`Hh)DY{fL*lEfSH6flQ@OtWjv zmMe!U%0f^{PqE-`>I<*EeK*bEQ0}&tuA%S6hPBeB18W;?DmQIP=gJ2bO+-&M-cO#|) zRMsaO%*iJ6elXTEbC(0mDJJtLFzO{!q;A3`!uGleo5*6Jcf{leq>HvZ&}hss(-`{{ zMfrWQH0Fl~aE=NJ{Xv?8DOvm=T>F@K=RqllLq+^K^&LsqreT)(*@{8*-9i=gZQY73 zG>yEkVwEHXiDQ618iVxYbCJ50n$vpGX)BfGp6BOk1{plo%jY6j0JYf7Pv9uoSg5S1 z?!UH@n;@|DVQL$Y0zYSQ`+f7UTYy^Z7WEI)#{4PBKP=x7^}i1J&omS>`Egw-(}VAF zxih8r46$WsG-bO zRCY|0WqGim@0ZQJKUo3&=r@QUxTXs_uh}n4(X(d{w{0{NJ5OE~6#M z{_38{8kiy{gH_ES-%OM~Nr6}n!h$KfLibkPgLlA<08b~rl@qI(pVf4imo$K^f z?Z5z-qGQ!?^+xo?6#28e>H$O}Q}h8x+DIP3Hc*aI^}7X@fTGh=(yHd8Pp0Unc3)Mj zC<7T0D0&K7?!%J&VULQ*^5ys9uevi79fEyLwy(PAm9OB9q-!{XL4p6wOHSRecTnn4*(( zf7L{Igelsf`Kqo#;4($;(tTAgK^If>K}WFqQ+R|aGTmKO4-HJwP8M(Vc`%tG*SV{X z!XT#Tw;18J6lJJ_4<(wE?5jF~IAw}Hiji1h2~%_^X5t>q4^wnMJT@Epn4(IuulfNv zmB~KBIoi5ObtofeqTK|M{xlWj41!xKK{>Dmk!n@=7D1zxh&5*bL3zL`Mn8@3F!)6q zi}?!8rMGY7+cT;rUzYio7j#Izk`sRo$Ew-1>F5wI>b#G+#%nwLmQB(CwY9Yn6KUsz zh1wIO+sP`Aolh2OdnpvO&x!z)%bJLt4;E?% z3G(b0Md@w|h4~brUg7Qvb>;RkQGhP4VE`5O*F-;$+HD-4BGhiyTcK9phN-hO4-Me* z?`UgjVU`cTNtWVJTkxF=A*{c{jFus`RUa5exg<0U<&;C8SpH^xja{CX3GVA&E-Ur| zp+5sx^5u`^fM*SQ@YwHTvG+Z1qe0NVnZXAVMC?@&fDa`ow7n)1W;)o!{Ad{Gr-=5JNSY-h$+MEk8#xzX+pLA4BTotD*LXn zujh8h?5yZIyB%JOgIfDIw&xq!Y=V70t~V?vB$#YJ$ui$cFx`HXdpjw?Z2N4k`Cfus z?A=)D51!Z;ux^1n#8vg4dIsd4#+uGbgBGZ6E4TbniY-#z_1y9wvTmvBp1|mz60K0( z{P?u|EL*Np-A{5|gGBeJZhpd9evxRM>Tbb({sxq*C>vDweulq$euMhWs%H%&g*m8p z=crc;o)mIeojfbe7UALml))29y4A^ZeJvQHnK@1@c#ix7I>P`;vC6PI2>u6L_bfAA zCNq68j#QwGEM~f`PM+f}U~B}X?O~?JY^kp9kugnt{TyweE@I*Hl+jIEb4CrZH4!O) zRt>RyM4I%Y8e)?o}s`Ev4&aVu9R&}1uoFVLu zhIq|KT=REtG}?w3Cr2a zoqQPw`=ql?ke@T0tBzZI+)d8s48F1Wxg-2!pJhBzO`?-{Dj2*{fWmTo(hZZ;aFZKu zR>RT_a^$heYFG}v6Kk6i2bUuTXsQW}>jqC(Xj;5R`h24micoWlyXhX1bIQOuI1{Dsx(K*YjKISt&w%bCDs#Ra|lWvUm54T%le;H^QG+{ ziF;q9jLx#RI1hJW&s=KvTw^;Hii7B!IT&RehvWHe3H2{O#760h$;_O(Zx-$N~Fv&esm@+d`I`4SZs$_XAx!6vCu6l|K{ z(G=u8H?l|E_Yzh9X)CM$Fo~uiV<`->*FMZ*<%Mgw;v=)Xg!vzvWf>(0v)CDha(Nt* zy=NWbdOfH8Q5g$tWt4A$7eh z=hZ-Qk(|#J@!*(xi6i2iMVC1DOJzzPU*ZT&G z7ntSdG9t`!zNy>`Ktfm(%DA&edyvS;*0V=fDkcz4mvRS2) zENTx>yWa5>X9+}|2`P>9$ zwSYYfeDOr6BLniq6CpNef$EDVLM*jN^~Dn*u3M`5I1#ErCd6=s>WgPW+;o-di)TWN z?ooa5Oo-7s)fdl%7;R8}@kFRE)NfY(jfqe-;3G-?@xtf0G83wQ zpVDJ;vPY3u&UTRF(=vw4=?=E!H1Rs}%!Mvza2q>roLT1yuIIYz$ukLc{-AXCc#dGL(*`v;WK@-?34S>)lfQxAW36lk{Dq=(f%f_s}oo~5X)wEAmB>W7p`pNLi; zQdX=zo3Y5WvDWEd#iEN%IKk;Z#-g{IaI(|?G}kUM;dG~8#>R3}&uph(M#mlG;qbV{ z>DO6y1$ov(?JX(()(lsYhvQ{MihnWdT}912+flv3<^PPmx|%%CGt4&Ua}9ZTKHtv9 ze4b@vb699C-rr^oyZkR;yR`@tKK7>nbFN)y!q1NQeXMXjdH#+boelnl3^$m@<~8`2 zGTdmw!Uq2)hMP=S+~EH^5A=Q$mNxizanGA6CZnTmgTE8Ee!#3QZ}5M?tsgXDrw0Fd zo{TLftZ4B2S@XCc!sPmVR|xpilT#* zr~We{`X9u;yIf2;Nd6Y5VFcyaiXXvA{<%}QX#r(k1yd;3R?G+K^6&9wBPer>*vSI& z@-g35%!k)8Kj3--lqoMC3ryx)V7vm#$`hv#Qoi>eFpYZJtQ7(h_%Y^-faES$s$F1i0hv~vHd~H7gZmRu<{0k%jJ0`3h$o*_ zlwX+HM~wLdrb?@Rv^Hl`LqFod0?OoFo6eccC1A`0!PL#4z*K&hk^(kscr7IG15*!v zLVIx8zxFWYP@Z`1Ftwub;#;6J-ma*fr3G(S@BE}Fdq8;;>LQ=gBQ_c--u#M+B6mg5 z<^@%5MwVpUPPAKsi32B_H_dhV!$~Dz$fcq)Wi~@{|gI?ThR2;m+eU4V;-|Cdt^YCioy=`SMMh(b0 zo{rusXsjAwHX#<`7lZMtUur$UT5DCAPv9%?Pet)j%4s3pa-MS8 zEg!o``8&vrj|-H`GcnFhN);%xiQxx%;r4U z2k0^uPxq2y2jx8_h8?43v|YrG(bFyWuw~OIi5~*g8Hf3H(vWGUA>~K8dIlwPb@>WW z^ECzW70jHkDYI$?`)h<*rL=C&gK81)=RNe(2ItEbRPcr$g0h#EX48&Op|X4*`?s7N z?49PCWPu)kyaoI~#*Pfto$jLUZOri_8HS7fgR|eTWrFU=9_5?*Q zyM_lbEotvuwgYi*{!(beOx(CtnJj4 zL2qH#VzP!+*Py-_OkYuRib6>pb7iU>L;3&ri^7`!#f!p!cSq=y+44Rd1RL)Nx%{tp zgewt}m+lB(M}tdugbXg-5iyLMYu6Sz9f3Ub&bvLHQ4lMmglHB9Pm-Pv$aT{=#?s8X(@M)PE|NS(c5PikP)A-&l zR#$R{(t|Wg^w!iNc!F-w)M#umj;eIFm{0btx?;J}kMe-s>Ohps@&Mmz0xp>8$Ea-6 zQI?Bj`Jb}fT9%*TJ@T9>yMy`X|RCQcC-?WLsv{QWiVAWSR-`C3snEO2&co8|ED# zgRcNf>cpvJ)#%JQEuA6fM3|$LzRdkh#s~RTX@SzF` zP+Q?^xS0-hEcwJI4z*uEUi}E28?>KA%4MMTD@7+=&Fm)iKa|4iUk3XHP}a^uv@79W z_hfNJ>TFy>f!arTv@d0GKVyNbnRi^=tE+kRjCe^`mr*y-$EiluhNzg}R3r3e-AboA zfkHO!tW^>{g5Sm1+FNBGM53W|{z!OTYV+=wVTU#^D!PQwg2|FaRIv>XV6qHP=_0^n z!grd~WdsD6EU83Y<<=}>E;Ufq3sfUeqrlJjV)OTa|8u?nov(w2|4+UT!cpY^=GQ^;rLzCn*Fn4*_;0#hE#br8 zNpb!KzavgovhymTk$rYta%}7-o}$PN3YY{c(Ud? zkGJt;eFKo++jz3(x}dl5WX&kkE4NgftmVC^xAA1nb$Q-CF|0^FSu-s3?v4QAWX+ux zd-pTK$(rj*y>f@e$(m7HZ{x|DQMvaF_cFs&(aCpHsbZOFHmvYAp0`2 zug-1wIWW;JwJaiK6evSJj3-H+z8I$&P=H(l+3Q_SLYwIEi_9WFK-eoo3= zpp26&e7oe89VO-P5%9V&Z;8%+y5k#C@d&%{=Z zhmvAGk~3M36Aq_%09uuNyeSaB>%Ske{8Uuzm{9lCAW8hj=V6va95J%IjF_z+mHTU6y0ke%<{ z=uycd>=+lB$Cq#PnB;W^uRX|~k9QO3@xo1zy$g65^JFkS(Tr6b1O61G$za?ed323k z#@|kfuC$3aa@4^jL}sqqy0h$WeU$qfgnuv64`lXtZ-o216L=}}WPkTb-WR}!LD~Va zJXh_7e{%62dKx&CgSH}{M>W-VXUS~tdRd+nyW;(4|eIqKeA(Rz#} tO}x9&7NKHscB8EeWsBCE@JkU>_}5;s3%?u}?!m(nKUb1C`+1jj delta 18295 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 YJx5;;t6%7AnQF2ZUoF)1z3!s_3lcyk`v3p{ delta 29503 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Cwd/Cwd.so b/lib/5.26.2/x86_64-linux/auto/Cwd/Cwd.so index 4867c174d1579bc085344c0eb3a541d9be2f8206..365c77a6268ef9bea27a13860f2c7a0a8f044bf4 100755 GIT binary patch delta 3911 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 W7Jts(*TmnOz1PIwtlk_SN&P<>Fb9SJ delta 3926 zcmYjT3wTt;6~42ZO?D@{d-rA^*;ghvA?85{!Nj~E0zohVArRO+S`zXg3FJY-s|txG z7(k(z3XGqjp9ry4+sdQJ@)e4okG80MQYm6ve4qui7F2>tfoO^JpPLYNzwg|gGv}Ot z{&VKc+pIiIuS)f0~eD|Hofb$ToR zLrGHnI7O0l#)u^GN5U6}OOoCaCP@*A(P1ZIie?ZCt4biiN~tHtx!1q;S~Djr{zAXGt#a4tV7n;9Ci?{tEUm zImmw-C?l`(TY(f}<|(D`$!naj$H@iA1*?3(O=YTOx0w4d@*w7vXr5h`Z#@KJHtXMw zmoY^z@O5QlliQJnJi)SA#L;4*WLfrMY@|O2U-@47O(-^6z)zPYk}drEvZ>Y=kb}I? z832_c+Q19TSCQ-dmGW7>O1mUQoiIGdM8tk%1!Yc*B)MJ7xmuAP$3X~FlYkgT9I8u3 z0Y-JZ>N?ApSEQ2x-e2LhJ`OCUkouD%Bq`b*JYI2C||}lBq6P7+p^8TzG8Sad2?D&DY$bUhzo4>9O1&D+qZ&$myl2fUwbL(OFI(oq!re zQJb*%O)4yQ`b+MsY>kCebGKY?1W>k4Sq~spz7FR09Gx;1TC(K00^&*obulww75;iv zrcXq>t%mQ!w$R5=T(@i(F3v7)S(K582GGS63zn;H8|mDl1R`@7JiXa>1&Ijqw&>`;^bDir7DIAMdEiB(;2h zjfafo$7>R;?IPRDR{E4M5AmBdNvY2wBH3PNG=3nO`5m;qeX%h@#7nXrQ}%jegoLd! z%3Zv;)<<^n=31X`2CC@x_>D=Z6i=qzO~6r*G_+AkUE;Hy|rag4>v%0;+f ze8qtAP0+?zB&Qrf5ivH4ak<#3ONK_kD2s;27ew-2}+88L)(j5p%cOWF)fsk|uLed=w zNq4|-C*6V3Y;QGYSTyLXBhY;ElIRSrZdXHqu7&_z4FS433iSArjA4$0Ash!oI1Ywz z91MXT41pdDfgT)%mY0rj9J<5TKzDprKKqzNMK}TCzH#A$hgFfg&2m zt2GW3(K%kN0#HQjc(vAnBKFIx^$rwKO|RBGP_!e9=1FSGwrVRx++KmVGE-+=#FBbFg~p{BbkeJ_Q}LAuC$kgazLI4#YPQy|M`!| zbD_AY%6GPAlArQZtscC#zih20YlE|v{hE+2KG0TTIfhf?i8UR;rL1h`v)j{1CGTjD zLq)1v#q3wN=2d0~BwDsX2i`}w){xG}4c1!lzcsI0_s!uT!mYSR363cmuLuzVbu zz)O}tgKvq;%L~XRp1xv?PIB?UiiBt!!t#>eLHxRr@yh!?Gl>E4Ve1DgU4;cP8R z8^Nx?$H-LhF|khZLBmc0Ka%|yo@UmCEG%rc#v~T}Wwr$?+E^pT3Y&=gC5lywdy%yO z&A}2-2Pg9Z!NnTj6V3AA<7Nxt<6+JDaPqP-aPl!Pocyc}n;pY$!illHaEfKINI+$o zSSF4Y;2F;-3Oa`E;p(aw%O61{g?$X7W7!%$YgIw_M~KR19GE%mLyU9Tc8v2_Bcdj< z)9{?c0-%!57T|d=i$JQASt+bjSUP5=vJX&>0#=ElPh;hXy^m$1xu>(I;WL8`0rP%V z2Ao3XfM*foU^SEd1LIk&Ar^)Qq(qy3FERDSqe6d1M*4lkBu=Cx-{L8&eeNQl>VHp& za4_j>YGJ`I`7>U*Is}R>wb&`eUoe|#v$dKd=% zO?)^YGV?DyWlf3>Zhld9wejS~le}kyn&OWe) z8@KvV$Gf(s=*HUkysfUg!a!0#FH(H*7I%p4DhU_6ReVj{1@j|z=VAO$zGdq=lFH57 z5ag8X_27QTi#A?gLAy=*ePg~Ttk z1~vr`@RG5P^rh{~8q$|Etxm6NYO7tjHf?eHGVXdKE=XQ8>w-CNT${|#5kqj?tz&NT lW#6~aB!^t=OL3Daq@}M({HcAv6Mv`rE{VUneJLK2^nV5@5%&N9 diff --git a/lib/5.26.2/x86_64-linux/auto/DB_File/DB_File.so b/lib/5.26.2/x86_64-linux/auto/DB_File/DB_File.so deleted file mode 100755 index 5b5968264d1bf505dc0857739fb40a1476a86137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250136 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≶K{7_c6$kCkNPQp90-yE`$M*C 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

%tUk?2tSl-|RFmj!dQigh0tN>1 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 V!>~HFnq@UC0%U(_I9#XZ|3B*x56A!j delta 6778 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 J%8mIf{XbCOP?i7y delta 8522 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Digest/MD5/MD5.so b/lib/5.26.2/x86_64-linux/auto/Digest/MD5/MD5.so index b6cd3efb5311ee48b83d635ca4cad031e9830947..4f2c7f94477a10517761c193acc328491c629815 100755 GIT binary patch delta 8911 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 delta 8925 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 delta 4089 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/Byte/Byte.so b/lib/5.26.2/x86_64-linux/auto/Encode/Byte/Byte.so index 8840b57fcdc41d84a8c658cfad38b6b046a98a7e..4b006ddfc4b9bc932fd432c0e1856659e5027648 100755 GIT binary patch delta 20262 zcmY+M2YgfI*T-+t-Zbe*)23-}Ixlpy%21%punH(s+*$}58Ct*rq9h;+D6;X0iUd$V z*)j^U0s;cEhkzi2y_6|XROCG;Ij8@=emOlJ^^m7&b*>o_e zIoX&a76uztPhpg>HgEvr8(xDebJTR>KT%+wtEL*FAbYMl(NGIk%~d<6^ov)N)W}EX z7mbQyITo!bk&o3V1IDsufId%MVfX|N%~LlReu7EgsACMZA>ms!-w**!zE!Ij6nO1h zwPs59C`F0+Mg0`hQ!F-2fFI13j-%=GN@hOaAh#uoGPsJzeOE6}>S~c$o`dhE4*i`Zbo+rr7J#@V*?G_^uhdF%w37r`9oyhGpNW&K6_P(v}wU9Y)kFMf8v!*&9>V zEwym1*)pO4l|03M$%Y|%L?%9>5G}Abd2vzZb~w{5Z6WG=^%X-~==;5zV;BV!zgP2G zw?zxDUE)pt`+iDTJ+y)F;~n^X>Nk^2MhL`QlTBeDP`L|MGQ9zW>BQ)5U5sF4314tMv@2 zFcrVWE};GnHwI_IFzdT;e6gCEcQOX+`C4R>0f)wH$A#vyMVa5h2g@}4!xkM~Hx(;q zIRvRo)H+rL^S8xC4@Z_~nGMBD)F%z6VcHTk=gD_biauwJqj}~m!~u*xZ;hkr=p2eO zKKg<+j>f=g$3LPkTH|P=aJ~pPmZ;9y-Q;@38d;avym<<20M$+!*{E{Zl zpVr7}Wbru#zhRC3mL8Uw@Zo0YL9zb^gO{o;>jRB?A9I41L}R%I!(02BBPbbNv3JCQ ziyj=Qoxz@)KSfPTNHtf&@0RoM=Tfy_-aZr(s@u|V;LMhF7(by#a9-Lh&!bgBLF{~7 zg_`9(cz>Dt%9AxQYC`+qD5hFs$sqKgTQ1;siVtsK2eK>;LuNEX@+@;oW0tFR4Tc@i za)p}dY=XVBUR7y^;}8XZZccMDAG|0(JsX3fOnZgxW7-O@swEi4){VyVs@jM6Dw@4l z)gknAcl-l?9){nr0~ly$(ib-J#wBuNh3Yh{2J;W<*8Fke ztq}Qcg~)d~GQ77+O$p^&Rw3Uq$#*$M4dq)_A!=ELsAUzRmQ~2NO!B>jiyQNO6g*8Z zUww5j-}VVt!MTDDG+CV8A$^USW@rM9*5J&@hv(Pe<~bYQ$ESKhuZW6X z_z?0!S1UdQ=UCc9-095LvxW%TEu9MNMQ7_AGPz)gd6C-R34g6o^Q>j~v-O%Gx&tNM z7pj!1HLNpecHcI{3?<*Y(5FFA-tx~rOZVOsc1KV%Jl4v?N z44NzHy(%!&?U*5+542O-c40jHnKoveR`}Bj+?{NVVde(4lA$WB z$8Ry?v6854#X{Oj;OYidkGX>h#^;*oAhj)l#Et4C!+My%5wBxrIIvMos`diSfvDs% z+|VN~;~(bs2sCGm`Pno@NgvvKu;R2iUdEplOE0i*Qgf_5FqYF{%f@f=lg17~yF8yHiwEW@0gEo`(c zrdpoDgTmP=_>hK2>Y+_)14BKC*^DdaW60jDW*RO+Tl&@j25rVMnF4$9Ddr@0GC4J_ zKQ>bNIy~B}7R2OZosuhs&}}I6t6gIDW3$QmA=CwC`q9xwR@Fmj59~tZd<(muTq}gW zqPVp~KlcT73wm_HjwaU)p>N?yLhlo55JDe7?=5O;!$?@NMNM)#DOQV+@+MBsYZ|~wsVQ|>;P>DA;g70^!nO$g77z&*`$)%KBf-}R=z+4N@Dl^Rt zL!;CmP*BX<3h|*y@WC80q<4veH`4_u*vvFp49#uiqM4V0zB_n)HQ22-_RyP9ST_`+ zTxj|>{t%;t4Zv^K#yR*J6s-}mgei+~UE+V%y7+cvjAN>Q&$M1Oq=`)3-!b*!ebt!4 z)U}Z5xB{d)(@6IM#!Wu^MRjcMj9VxL+7sFm?M>g>Gqz^&c1FHjMSzY#a{DDMR;DC_W>RX0iAs(HEEo zzG6DPD$-XakWe4d?o8cZvh4<bV7im&0H*$#lHn1;C5!`~vvC02doaU4NPL$? z1z0R2>Jj=G)0R}jF-+Yvn67JubUahvbf!7^NGCE4Ok>);4$^5%b)=yh_Gygxa|ulE zo>bYvVB3oszDMF*7L_S1jwQN4TqZM}N^~((-z289h^~+bLboJ)UiIiJp)MTTou%S^!U0OPKpj4iN|T zgJ{$Vn&P*jOKE7-G+gV5S619Fhq6&bI^y=>+Nz+he+c6tgr6%9DcA_h52}gUw$`Zj zD|Z^qPTS%1LDgjd$T*}X;@zX}A#6SwdeFByFcD$#N<3DKhr_iYmS7eG*)tapBI9XE z&NYB>A>ltHi$H(IW1c~LPn!1$P6NYXYJAT??oTqY+bx}Qpm#REwem6V)Os7Ms%ERFm?1uqIu!#Kt@LTcEw3!=B z+JY$RTHqD-JxSPV(#8docL}~pIN8Jr_+Mu0u%{7co3zYepWK3zAmb>mt}g9RttYDg zC3gCda5IynCwL~|wt`)P@6id}*`(zKi|l@pgGA>dc8j$xIFoR{5T@1j0-JXLKW3!O zB6*les{A~wtKbHzMNdA9>ST%O5_Loe#Gi|k_c?ZQc1AqE+*|ViV2**bR2P4K3 zrVGED3x;E=LmNaJdsYOGxZaVYO@|uCaIhAUT38;m1FI#~5jPJ7#h8MDa67^N_H2DQ zAMx`MJbQG(k7y$p9Kpr#J|+F=h>+lICC7+p4AAATAO9iTx`_13F3}sSy+NQ5Pn6h6~XQ6Ans}AS+6(cAOi^x z5$iw`##0Et8^V~jPx!asJ%O|S8lBP;%(8eJv)3kAifVB)QnyG3xn4-_(1>Bf9Pg7^f_gi60*0)Dy;KM*xgpPdSzBdSFs@Xgm~ws65*qDIiY z)n?&Y9;nAosf3+k?Gt<+7X5}JbY4fb(4wu!cLqzC>j`!m1UImy;?XpIgCwM0ht)Wm z3~x)wKyAkJ$$F$%dj+p2JXWk-f@7ikN$hGJx`BQ!s;?HuY6Fu{^^BsM|3V8dL0?T) zXA)j5PHw>~2yYau3*JR|yWl_p2RTc4uZ0(YF8Cqgla}Cs;oR`oVDkc~c?$DAK>O66 z;^nW-stR3E_0+D3YFMNUji|5D7^FpNBZ6m#QiYvP(ll%p$r-rv8UI1JOC)#No5%PO zVRw0K!B#rl`$Yza9rF$3vUvtPri=zWiSqD}i~}s{1j3^wm?C%<;g1FTb2!!jdQqAx zi7J9Ugni}K*=#+H@WK$rjJ(1ZfbVy_v0Wp1tpxLCvDbgKVE^x`qxd@Y=YRwaWU{=o zKH}rzr3<#xO1V^SU74+C;zu~f8-jg;cR;h#c-C~IJtQtl>x}0 z52-t&$7EDS&IVxIfO&=PD z>2~(IPZ!X_XrBM>c*c=1C4gzC*F*LBXs){w$7*fZjH;)I)c(=30Bx*ZpxHA-oC2|o zM;a>g~$lJCC0WoU4uU zpOS%_|JFk6J;L_|%U@=Q-H?O$v0&eS_&Fl}7we`i%WUPc2OcpVO4woLLiz-ML^v&k zsba$Sfa?NQ%u25x4XnJw`5tnxrSLkc#d+zd4w0txGFA`L2z#uuqdj2UjjYF6WhW5) z7gVk8j^Ce7R4}EymPGWg) zajfp(A$6S#)$Xx;yY$^)wKFWagtxdFG(X>s)iz?+@j82*RTtbM-`eE6GL~=B-m9#h zg7nMSwIMVePsd7eFS9y|@E@^!b$4H6JejcB#<7A@{+?ntMNkA9;G&H-0T}`Lg=vmSkdk8K^)aBGCl|TAK23RL{z_$mUK}|paZJKS@e#z zSVFpgX5S7}pVIO^3I4Ad;w|NU+QHT_baWq(!uYo{{t>oN0;j1yS0n-7Hde#nCaRvL z^%Dw!MkYXKVg^KjGwK4p&&(e-WmP$7r5}h z*n4FCf;~7gxWogSn0sLIpO|kh4P1$x*N}fBtA(%$)#9f~{m3p$Nz@G;5l^)9BnWI^ zr)hLR&bRX#a;<0FF(2_p38Dz@3bk%v0x!~zdBV=q&$W)74nj9nJ&$O#uS-kbwXEK* zg7}^|>4Fs+-~a3~WlGt48J(t<1ny&C4dX3@lM=XdKEa0xXM`}_D1>kM>?TgujmfAs zOVDhXHj2wR)?V6NK1kq}1IrknBs?*JJLeT_hQT+n>)*FTb+#m+hzc+pRZm|k%=!dA zczlaF>Bn z`QW-mLq*G2cW}Y{^jAP>hV_TnQ7s-p^RITu8Fx@o+tAk3$iXG>Enuhlgj+c{U+;Xz zrG#IQCR~E+!&ypT9UX219o%={H|+Eh#NNh&<Wm1B` z9JZcF>vve zFS@?3S^WZ{@8E%SoYrkdqLzxQ2ls?8S)B$Q?_giI(Y3ODqLgnYtA_}8OXNMk{W;@T zX=q9kxo%!ytkS!+Cy|Fn7o44qcw8b6bKox(F{3r@%*ye{mt+5NgU2<`#UEUeA7( zZn!>V>q~Hu5_mxBHEF{80jr1MF{+*cEm5^J9CtLg2bNRv%d@UOHGI%vVFzsK@#unL7KE9YOC;fpW9C(Z6C5ec`oSc$d@S-fl$xgn1d55y~n%ao#IJsCZ!P^Ko zbaF9#L)e<`KgQP1;6TvsD?Al!4{*%$sOcA-Jh1~M>{SR&NTt8NYaAgl^*2~G!N3Q& z{4Ua+{A;K79)4(x(|I7P-C!B|dInKn{gS3z)Np!D+bLKV{4{MQ2LuNOaI9r?fj%zS zCm3ks3`o}A{%pOF@EvDxIbvVkuQBfkoyxE`Jt$agGFM3N$LcH?iK^$P=BPGHmV1A1 zR`oWBJ0|ljO7F$Ev@PPEV(sq9xJwb@!O3!w75so!>4;<=GJg-YHq%u6AcQerukd2X zc!(LjPVx*1=I_p4i{cT_mSA4NTj)?;kjx|LcC+;%!t2CZ7kr(Li7m;zY~9`1dJbJ$ z_az7SAj+sK^8?_=jGR}qP&TE=7WE3N53=CqL;P?#iT3zvDYA@TV!0Px?4C%Go6?Jn zm(o?Fc?#FcD|iL1xONi6C3q`z{~O2fEUB-GlkWwN<%UV9dUn%%ElJ^BC-6M0E=pi{ z3YW(J9OJKPK71lAc?GA`K|C#mOXGi*t-DYmebVML^^6^+|qjY5XQ^GN+TpM2p#;?#lF)5V`>=yj1hB!m8 zF8DGW{0B>Rg7(1ziREq2vEG5lsCqimU$khE$|du+V>K!Tal2G5neS=Fsf4>qOK!o{ z3HM2rL*Oa4Hq*6dXev(^e_O^6=;NL#slk%rB=faqJ_daMV!l&p7X6sYpFy}=vAPQO zp<4VqP26LtJek}rS^byrMd_p>_%bDSQ}XqNC&;)#9`C!ns6x<8Hvdr-HAif)&B* zX!37KLgQNS8CdCR<0-)-p6b_&SdT(+ij}6` zu^|)H*D_?M$Yj@e!Xw1VEqES{;|CeCQ&eVa2jR(~1n@Oaa1l(wCbS58U*A^V#|(Bl z3!72(+@vLTMq1L-Sv}Db@#PHJ*wPpm(2TiNo^C2*7h(J>vZ22v88@DK^&6+9daVVD5@%Fj4a=Sks8WT&1`fU0LE-A2CGc`fM7FApO4`7Ffy#X4Z;AZ{ALV4nwGGCTpil}4YKU9k^ z(}IYo#9O`+&oQH#B6d{bwI7IO98GUAwJPzDxddkrZd^%rTq|35hQZ;Oz;;?iy+l=F zSp5}dqw0B!vL9WEe?b+9WHp?&JnPzx?o?pU^)z| z2zCj!(S7HM$~+$fVQhU7&Qb!O(HmRq%G?{5sG}g(gaz9{7m}Wpx!AgqeV?Lt#Uav? z-@thL6Nuld%$t%+@NvRpr3poFJNmTqi^{UIDICPp1@ZTxCh4!6Jq}aozt~&tVTH-$ zaL%IcY^f~M;y;$}RfjVu7bnt(1xKZ~zDF!qBYax0OYmqqq%I2%{L9wkX&OJO%$u7o zcph|)z>+;jC39qQL0$i_Q&aGu>S@*z)f`cMf3w=2u22P;vXuy4lZCj2U|n##XAwUw zIPj2zyiKvYWJ=!!k0;zM)FkctWo$kIbTj6gM{T^9DMzlTjiCdo#gk~qo|?(GH2psN z4z7WCL8g2na*y#UvR<1h*Py=`>$Hz*vUrZ^w;20q=dPa>JnFDu z%1!1CV6p}C&7^!^kzmT7tR}!FREs;-Ms;YGjN~7z7SXXjE{pFw-fN79&@0Q_EH0S; zD&vm`FUyjxP;ft}6^RKfBy~r56Ia+N9=f6G$)^O4XUW-rnbnT;o6+;)Z7pUu5%{pG9H1OGvGn%?bG~uvisppjzA@ z7u6=&TrXWz3#I!^HqT}6d3G{(Lfkc*2hw+raU$VC+5GnII?K2U%%KFDkUAloi>w4# zb;EvCJ*TJwb0h)p8CK1d^>>0@f;Yq?UXd-^_?bil;t@cqpF8{;#C zvvRnO{u7LA(q+A7j;uMsOCT-=6L_0`74nied5^KvhtL#NPiLykAW0zbE2~>6ueSwz z1-GYbn4 zi*sei{e`V-(J|RSgsEV=nKy?{v6$~$bPfJ0m)Eg(C#y|hB&x+zNL?z4DWc9Lyhgg= z`c38fX-k3v`f` z3DyO>p_k26)vyjGqpy}o6RS%eU*de5*tZ^RLbdn>TBjv>JWz_LeFzWB;}P<0WT%ES zcSnh}TW~Yl1;-241-qbD9OiKnis{=@7$0Y^b`)~>FHC5i#Js*n3stG*5uhM zVU6$((=*guT)h~?YxClM!V3-V3L7|!gD?P{4BrC8o2nQ6MQ;RK^5UA|%ZDW_ntfy6 zq8@C`vyTXdR3zlbHpJT`q<1}s90ief4A~m$+D+B9Ep$BZm5^6^uu)$aL29)+s2&#e zH&NSx-;U+J7>nw!(t!U*_8kT{umR(}=8%$Ls^)x5cf2zaW1Ymfoegf3yB>C;d{N}Z zA`hY$(o51OALF$%aEbrTDu;HYR&SjN;xZE6U24IDO#MK zfnFNUi3~ad3PlYQ^%Q)Es^J?rreVp(Lzokv(xH|Uvj}U2E=BqF%ecc^!v5$UY9}rq zx}jP;onEG%mVnn-jdjvC)=r!*h|_JVWCzLFznXK7q~Yi+LC#5#BsfHQB!8A{N;F<; z09rE6$lJ6%6^rd5v3;Bg#VBh7=`F6O$h$>;4dx_cs1n$Zu?*AU5id(w66Em40EH3mvjOo>kVN8iR_(i3GB_vF#jFgwNMD0&7Lx$!;e|2OO$*M%0{ zNb&NoWUr}oN{*7I=1Nm@;BQJKoUU|ZMg2n5zR)z)RNeC?onW7eI#tx(F2oZhfeDfT z{lj$QWJy4g1n$$cm?l9!mLT=$J~Lf{jFBLFs287wg244uQPsca*2OoYSlU85yR;B0FuOyYuZk z@KXUxm?mj`OU2(KPF`^;q&NEg(vn?TstO}AFprZokVi!g6SW5TQ8g@p8`xm+E7X-! z(%=<$D4jU^-w+s2ON0JpoMkQgP1;!rd7iCf-=W`toRc8OCCCTRUB@0<$?38<9TBIm zV3Lkm&Z9p3De5*+d%+P>`_x4BuBfX--2=`_sJ5b4`-h@_BkD2eN~#t2F5_cSr;9oV z=Amlv!a@4b*OQAzrYd|A4`ZXak?_F;Rn38#&zQntM0A9;^ue2^wHAoTi->{8xe?~lWg|^7=F)W^nHKzD_zSuh zM$|L@?S(H2Bbpd`z=^_$riRbK*&w2+vFsAO+#sTfrEARyydNpb3vjkDBIEx6^s?`? delta 20275 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 OtcMgoL9Q2(`~LvDPx6WY diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/CN/CN.so b/lib/5.26.2/x86_64-linux/auto/Encode/CN/CN.so index d5b8e9ea6e5e9355b1d6be639093593c0ac62b12..cdfe711cdd53b3fa33b26f48f86c20a4ae179afd 100755 GIT binary patch delta 57309 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 delta 57318 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 QnQg6q21y3>hdnIwe{efMwg3PC delta 4202 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/Encode.so b/lib/5.26.2/x86_64-linux/auto/Encode/Encode.so index db39035cf6774a681d0b14330253a12160c4e139..4ddf1f69c5c3f82215d0744e3ed037b91e21d07d 100755 GIT binary patch delta 2776 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/JP/JP.so b/lib/5.26.2/x86_64-linux/auto/Encode/JP/JP.so index ee93b182276798eb31614b316f3120f1a9070acd..482ec68dd87a76304844ec5fcce7d7de67d0aa8d 100755 GIT binary patch delta 57659 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/KR/KR.so b/lib/5.26.2/x86_64-linux/auto/Encode/KR/KR.so index 36e89839c894c0cff4210c982408f46db6b3c82d..a536583e6bcdb07ba29a1312a23a0bf60972e1d8 100755 GIT binary patch delta 68265 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
e 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 XYqvQrzX}|WWX5iG+nPS_XIA__gP!km delta 68292 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/Symbol/Symbol.so b/lib/5.26.2/x86_64-linux/auto/Encode/Symbol/Symbol.so index a5594189d5ac0b635a8291c66c6ffbb622026b9e..f20e1c5612a0db8bad367f4295dd63546d644404 100755 GIT binary patch delta 4505 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 W-&BE1fX|}kG5!WEJ9%>j4ER4I4_z++ diff --git a/lib/5.26.2/x86_64-linux/auto/Encode/TW/TW.so b/lib/5.26.2/x86_64-linux/auto/Encode/TW/TW.so index 078230f6307fc7078ed0c36382578b315ac24c19..7f86cc87083dd8af3f9fe645e228e0a90fba17af 100755 GIT binary patch delta 55810 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 avpd8*X;SR$j&;+Mva5EUerAp@+y8&4jVZtY delta 55871 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 delta 6137 zcmY*ddwf*Yoxf)unLGE)%$=KgWM*zM86JTN7?SWZfROM=CJ+Nbgerjq!XwE_Kq0N* zqoG|NC~uCt2o+WoUFrhDMhkqX+S*F#igmkcg;f{n+KLatBi$1B)98MG=Z0|ik8^Xr zzw6diwDp7AdHQ9Wbm56gND3a)0KqPU0TSbFXW9HOWjqIB*! zOm(~5tt;CVXFK|?_o43|7OfzYs{2({QLKI zSt~-jsb7P>=l3}oQc^u7G9dR6*mAXEM2&^!l2!~MsPS+M_5UDdO&R7{qM=)mCDu>L zVS~lfQ^vDW@!pie#`Cb?+|S4{eLaWq33$8^o{&QNdVYnEb_eVSd6yb=C<;HBh0hiD z5DX~%@9^bU^%X`%|G_wE{@$ame`dUQA6=qG< zhm$eJ0)M5j^@qgEQ*U7##K%($*;gWKS|PhbluSFG?uBKZ%qAtR7S3EeUnSQ(3c~mR zeH;3a-YJ5W;rLFZ$Ioh4Av3B;=^SSe8T-Y=%G&}DBd{QUU%idA{!2VwS;&@(qm{+} z7R2RnxiXN4Ys96>Li0ON5_sGF9%d+fDJ=B?mH%0kR>h4TL;_I-x%TFyqHl=$s{D=- zuyaGo!l~#*gxHTmspwa5(2uiI(E+GiKQ>a)|FMq;Q~X#!jxR$L1NkLOnZO_=909NX zjF!6_(wr>_kog}`BkD0g{fc0j;pqhkM!)E$6{ql_umrFflU4qyHA2A0O>t+Yz*4^M z{xH(7eBG{W0aD&~L-}v+#%RCt-|Wg3Amy%1L5B?EntRqw%h&A67JxE>(YxL6gi#_T z{Li4@KSzu7V%_C5g2kBbX6iJMu1kAa%smvEiZ1g4l8Nauu|DL}rAe`)dSJ)rU?u3& z{slf1UXO3kZ}j9671v-g7|_0s;SWE9Z6DM%vK8ZJX(T8?F5gH74DB6^r1&XP%hrAa zkmi-BLog%_l<-^-8w_i|#7J5615%4bDv*KV%4ZeP!>B~jlnQ=c%$VNC&n5S7 zC>^Uzm+bslppTy}cctVf*18IeC`{dflfYtxG50m9hs6kxjgdao$B2Wumq8OO??Jd7 z{`p$;pI}D&cWn3)BS(#Zd+xzXG-AH-;6>qMAu;0q>q%nlx2T4Z(C$T!LH-M*WSH7P zXl3(>uwvwTX@Q3LWB3|*{^J;l@x=s^lK&L{lGO6~ix^2OA<;I&WcA{S8Rodlv_}8R z+)u%GP%nTVLKO%hri2fm9R3Ab^aqF~#|sl_{Trsf4W!qLPiC09oc+K3vxTRoQ2zs^ zqO8DKfw|+TiSI zmI>N{b^K|NgfUvXcky@0t?qswBMbOcqzmv6MiwdI2WU04XwlIKJm+hG4SIt^EvJO* z#ZPL@jAWwm|1kmd?M)^Y-C!aFi+YnIP>!9I)#fjZjqPNx@cb3l7H4g7W z1YWK0LW%WuhY#^9b^1gEpnu;XxBOlDW-7%Gtg%J(Xy?cP)zse=@O?#qk?YGAP{Oy8qc$z?G$!YK3o~iGNmZNkupsqq zRFEaAhfZ5Xe+cvRrK*Q~srnWw#WFQK6U7SZKO^%S#@)78Glhd#&v}6>S@Z_)H+Lu&d&7b@+iWNxyE9UCS87M?h zah)Z$cR2?eIMk{u75!xB2)dCL;hn>CU&O4?U~QDVx2gyfaE|?@@>|@ZWKMzEgKZNU zVNk{j{{X&2#Re@U7hf#yofGXi1c&+;bPg!SljQabH|;Q^3_9pjiH)nUi~a-D-;IRO zr`2qHWcBF{V7!Sz$Z264FCcLAi%7l(iK0J_`Yo1C+T)705R*^G)ZIavjw9WFXWXRo zBK8x<%_9zAYJzI@zL5v?2e($26Y%T~88Tiv?cvTmxp zI)fc5o{99DG~@#6wgu8{3#8i?NVhGJZd)MTwm`aVfppsf>9z&ZO@WC0^Rg`tdTg$H zY_5B3u6t~*du*BnP|R$4-CU;x^|3Auv-f5sjNGsg(Uwcd z9Sb1uBDrM&XwN3(o&}&yn`jXe@5-~N_SoG3+;jtAxxqr#0qCem$fE*4-h9$Ez)jZx zH(dkVbPZs+#)ctl<>3&rOP!_jQ@_AG^mt0l5ntaG&wYiCug{o&FH{qC1pdVQbkixR zpNj!^CjzB(7JbQlGQ1OF`rRYOpTT*nUuAxJRwwG{%)7??bUxtUaeB(F>EGAIBL{WK9zT6*YN6Z_t`mJ+}XCAKg$3FLZhgm6xN!kKpi+ zr6o{#F`XlYUaCfr4q<&83u7Io92tQqZ3g1IVX>lF~ z#Dw~A;5r?6vGKuMa6ny(3<)uW;z< zjs*qj)pP>BuHS=eyo_@S`xp9FfC@gIyu7I&2B_wTMeTypVh=>Y*mJ>|ICuF*lqj~} zN5`(hKOz4w1ZY4-HIGB)3U?k_@KaVY0z;9AL85|KWPoD=9t2!~y2!vV^%cGyOCd7I zH(5S1c8bRu1~Rw!X~Q^w1LDDRfUX_mVR5-3Qb~pBdyC7Q(3d#{RlJVrwQVfM`Hnt4 z;w^v|jh1qtZW{cY*hlHM_t0MZ^vjh$jwW6Hk^ zlF-mBc?W+XPBm^V^TJzV5TpGx@Htpa43&LVrK^5m3ZKMnERv7@MsSyy$!LoVOsZn@ zqKRy!czaRG;qZz}i*f=pFz(pn;54ylt;k+{ip>}27LSCMuW5ADfu-W`IJoqLS4|9U z3QFjQEBX>jFqzOvoOegjkkIKBdpcw) z8)eY+@9$W&Nivg7QuYb(36jZ}H_MRQu@#o1O_IrN@zJRg!D95HO>Cj?wn~|E`+<&0 zb1Bzt62FS^eQ1+j0yAv8_Zn8a_^hokB9nef=KLBK!%?(JO=956G%~7LdD1yt!CGKr ztn({(kfKDi4RRhtJZ$`fdyYU3KBs;qqo zQPp_=JyDt4!Z0nhX+yvP+GM9ke0u*7wpV!8w&JJ4`_@)DAUd)3g^tO{(7Bn>+HqE% z0&ops^oVj!FH@AN?bt?rf~o*k1p0pL+Nx%dg#NFgs8se~LE(2AIjf_8RzCX&3|h1D zS*U+jzBMaT3ffAuIuyk`90+Bq;h&mW>uc z7UG(=d4Q&V?gT#l3$3@Si)|Cf_n*Uv!du+>Nm*DrQ(e1LEil`)C0xJrSXKRX=cIy8e?Fd zje%mpquv7aH5QahE*&?s!`3u^I|M$1zQGmvguDpbzg`LH83{1LFb2YGtG8J6&?l}16YIa2T-m>#!qU}V%;yW({ZBRFNmb$#JgW$rQ<}rUtp#=F(-kd&WU;+WwmmC zFAXl&t@$83kS_`Wtjhe{FNTK9H@@3!77{Ua%eO^NLDuJ z+%DC$dVUX)zEuwu0X1m$lbFCS2oxWH=R_$Y)cM+&@ug35Yy4taKD|z_le4B5>78=v z^x9M%+*qf)~iKnM6}>`GK`BxJ2b-5G2u5*^`zyNY0sjl$AL z!YVll=0Z9mrUJ!m0gYHHrD+yIf+LZ@ZLpSMO^7aHD+4ubFcK4qs$AE_{tM%gSPXR$ z*F2?qeXNj13rT?L*6P`B&VBN573zfSxTO(Irk;z_$sn$u|OBJT^8*%gzI+TD9z5}Ty z)Q;aKe;ny06b6}uW7i=;SABWoe?B)LJ7?J$vKCwCuohdNw{{_t65C)YvTUyWcve1PBYzYe zkRv!CN5X(+sMzkL)Si`(jSoj?*4Zv=Dk9Bj_A3aEUlS-Cf;<|3!jjD|3>jYns7MQW zE|nB%Rs+g~O3MR~BS)(PFc`;if_;FUT^LrA((G%*4KNWS8FnRX0<;0tux?NSxDB9= zJ)Tp$8xhyD0xT*=x`HK0i?S z9VR8lgW)>sN|(XFE>{+Fev~;NN9KSWnFH$V&s_8A%x$-k1FOZwIs9h$g;b+$F8^Pk zTEpL^YQEmZ#z9)g??bs;OLC~5dr%D4&vK}N@1jy`cLgclCccKObhy-RpU#hMCdX)Cy||o0Ig*%wdq#!i>Quobg50ZO0$>4GhYyh7eZ`2gHo%v z3yh5b>?TaJgTYbQ#2VX9n=_<4Xcp^dzd!9sX&@#5Vmavqc=e> z!_L4$*>-R%Kn*LA&(6t=tHi4EgS=opJS4}0JU_%OIxdsNaK{gGi?%>g;KPq_i!PJo zG5F>mbBoTwv%h}CE*~@7^e#%vLllzcr{uyVNAa%)BQvRF= zR+I7^D&{YEpp%SE26x`ggLLU6?P0HX21 zhVcLy|H_gNT$RYCz%V{Ef9l+fxZ=aY>S4k9PzmuGWfm-tQUcloiCtvrKG?2_Uu@7p z&8FfLpXjA>)YwAAMgTH{Er0}oVK18OWwJd{U5^P?PW%ZV_F}eCp4(EXUoBf&Cg=;~ zj+U|dlk&5c3VQ~URx~>C0gQ#d#?rXIv1R$(>e;QB4alQ&E3$M`#fDn+j?mai%#01Q=*;ji8_A1}wDtiQTG+6Td6&Y8IffSan97Jb zk1F7pm$tPz1{(l3bv;cI% z_H_0()(3zLG_%KZY6PxkhhQ5cbO_96cX_pf(|U{9dU?k+m6KjZN})gnw~kHD*`eHR zX0~5v1Hwj zCF}O~FIl%^#kw6U*6moa?%ay`j6EO|mLFWpavXXb9C{oadK?^j92|Na9C{oadK?^j z92|Na9C}W3NF(LptYP(fe_M!>QpxCb5b1Rg>2(n4br9)w5b1Rg>2(n4br9)w5a}f% z^5c1tTn_piuKOIW`y8(O9IpEuuKOIW`y8(O9IpEuuKP~sfL>>%$N?U=&&5$6DhU8o zW=XY+0caa1)iwrD_lMfY0JM>lY9j-vJ4@|k0IG|m+R6ax0#jQVfcA1y?PUPk%*m|U z%|L29`_x0K)Uf=zm!4ZWP5}L!0Qxxr^m78}=LFEt380@7KtCscqmvYd6e-0CKygYR z#qKk#!@8fIy2<_6`qmLWs9gOSXRGzG9-<>6xmrH6AbCwIJtM6D*ZuF4wyq9FJ*X%z zp{bwhK}Goh(r109hm_hN2JpEaqH7rcXXwJLbS*ZpVV%(Z^cO|4l{CK8Lkc`0NB^|s z+D5XSfAS|&IK~K2qBJBB?{s?0CY4hD4WCm2IIV;SFTD$MO8K{NP6o4qS}RlcAc#z|(wK zCWjauq&<(0+Myx3P&F2oovkH$TE5s?8LpsQj?dlCnmaAOX)PT~{!bs@6e;?Op0N+0 zIl0rkA4e?vJ1*ShuCS|^OdcWEyTj)I7|bWHSXeZBB3a%W-U3mYdCC8i;YR^7Y$(}$ zI{ZFB4dZmU{~`P@fI8+PGyB3Nc!bom*GTR8@MwSrc7QnjF}x0HP3%ZOzPYe`*dlBx zGr7(Dfap9PVa5fTO|A1&ZwLXg;M(aeeVu{bU7`k z*aTC$7>2J)Ob3IkTa1P$kN6stz2a(w;uFhIY<}@`SU1EsV8%oW69VEv^b14-d4n& zs&DaED5b;zC>4uw2)#s{4MIZbP%Rbzz_he@22{$#tN0EO8xT{uxDSgyP<#yw6=FB2 zREoW@P$h;U;EdP=n}fto=v0e?urpZfM8Ic=v50<%$lA!*P;mm>hlvRKHR3q>!^Mku z>eh;vVdzZpC-g^%m(U+6VlZ)*sKrrqwuqu%Cx)XxO1uOr=ZJZrb*@N)=x9-d?@z>s zn021mhtV#QzPz)bz|Sv~sM@FEQeok?ujb8rvk#Y_HO%$Sc~*vufa^o>U`z6U=x{ z>H}%h7<>v00oAB?w&t&ap~M03OL$J{#=}5d%|7*`*{6Oq`;=ZoSCOgt7eT*jC^)%C z>H3}w5z({`+1EZmFO=zyw0@l&+mYa7u?X(-^a5fq)P8|Hbmnz6DyJK6PJv}=Dh zsp}o`$jU0cTLxD34pKQStEB~LCgN!4t92e=YjS?{ zjCy*wP;m4Tf}f>pD#7gjHBXJI$LdlO6N1sk9k4-7OgHStH;{E|LV9A2w_}m0i8}zQ zv4^YWZEIupTBM$u*z2|%zd#IMgyi0}L$e+%4>j@M+-_WgY)})!ShSI$=%|U^Jlc2{ zq}0S83L=f8P{!26@KCgIBBa#BvY_4gDOgYwiwdHRi*evk6JcgIR$)t06Fz_qphZpm zx~9Nxd=qg{6SG~Z#>3!3O|$@nFoBvlPEjJLH-cSv-5iN_y}RWj#)i$AbHlL3*DP5m zpWag3_4xKT%eyx2zayrvmSrEF?fT|-a^{EU>3igs569@u@;!VzWzk1t^#74FKC1dR Dr@3Fo delta 7040 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 DvUP90 diff --git a/lib/5.26.2/x86_64-linux/auto/File/DosGlob/DosGlob.so b/lib/5.26.2/x86_64-linux/auto/File/DosGlob/DosGlob.so index ced442e85b08850cdd340bacb399e6f9c9b594c9..63ac585cf7a19a970f3f324463e4cd075719a1ca 100755 GIT binary patch delta 6110 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 delta 6125 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 r6)S%pCj2WONwejN>XmP%*; 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 OCh*UbD>f%vYyCfk=wKiK diff --git a/lib/5.26.2/x86_64-linux/auto/Filter/Util/Call/Call.so b/lib/5.26.2/x86_64-linux/auto/Filter/Util/Call/Call.so index 4c61d068754ffd96a688459d9722a0b781114d83..4840fc55ec7633482c8da83e421331c6c58881b2 100755 GIT binary patch delta 9337 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 bkCgAX@5b|>{T80D+OZc#%GcO4Ur7EJ@tvdE diff --git a/lib/5.26.2/x86_64-linux/auto/GDBM_File/GDBM_File.so b/lib/5.26.2/x86_64-linux/auto/GDBM_File/GDBM_File.so deleted file mode 100755 index 9e60e0d32fe5851b09a3f47170340c71f9d5cdf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110040 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¬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 diff --git a/lib/5.26.2/x86_64-linux/auto/Hash/Util/FieldHash/FieldHash.so b/lib/5.26.2/x86_64-linux/auto/Hash/Util/FieldHash/FieldHash.so index 04ac677b14e3e1ffde003d0bff95e7c6b4bbd541..d7b37d9e7a093da7b70ea60bc081f99fff3fda86 100755 GIT binary patch delta 8472 zcmY*e3w%_?)xWdZP43*>o!!m8vl+4pc>y6W0z|fM?xDOngxk~g@BNXP;~tS zc_<+Df>EK=*QeD_EE+{o3$a#PrD{dwE47MfivbHr`TPuOYX4{MV%GeAb9c_1Gw1O? z=gi#QJkagDx7)d;j5R+!Am0&q?%l2(|DI4f<%U=5zIdl#eCuOV&JO9EORF+qZC8yK1psiiYc*?|lU}ywM=`PK!X)ZnEex_+Y=PR+>u$rm=l6Wk0oK-)y ze{nz=a(#ns86U$!R>VIU{EQEwIx8Bumgc*y^;7$m=Xx<60dYM~S=7hnXquNlqmP1i zJ_CaMSywjZ8qcr}PHmX6B?uMmSjg1rY2Jc|`*H(|8`L5_O^X)Cld+v@k)GzS@zDQ? zMXzyM{}Kf6!o&C?rCwNVjZyZ1wZ3s+T|K-qzOxzPJRmhR=GlQj9O4=PZZIZ3gG)~F zEC4ecESL#^b#d4_+1Rgsp96O1R{0wv8_YV2AJm&+oAtR z9{_ygFNT^wLE=ZUkJEaYb^WxF;yF0(H4fi546n^AjJ%al5#lh+%r!y11C-cg4fsi2Y&8l{F z#t6R_V4+rs$m8dT<1?m%i1WS3yeG$K1X0Fk0Sb>_DX8K>0Otu96Tztq&H|*KU=ZmI zYtDRDAJm8&q6MT&tLKKbbb1Q7Q|W=*1Oc;udRbCM$9@o9ib8Y*jf1()LNl=WJJMy& zFhWUSr0+(;s=Q(SOA!1G0xx2|jyBNv*Wh@g?vecnfXe`YH`n-8rujDm4|A3ga-cCoF9P>6ah~Zv z0VVcQHGR!ogrX*nSkRaZl!dg;`2n`{KZCB zMrbaXcnE5$gmCD8_}+xak!}K1nh8*8CP1Bq&XfhO!?qy8Kuh=>J|B2V#Izl>ImZYc zf(iW&U|r_R*82lRP9gbBRTmnkhluQkI$0=?+nVv=QSFzhG0IV zW9?caR0VbVR{$@bvrb=nL3hr2{ep7q^O@14j!ijt`Y42m<`=YgF7gfWP%ZXWiCTyL z2`C%up+5iuR2mSV(trRJLJOpT81@4ohTA{@2VW9JV73~eGvsU`(3$Ud>zybD1%zMN zxGNw)*g#NbK`3LK5(}c6&O;soUVe|-6X(0A$~-Ou$7UJt26!OKK~(X%$UcaxK*%~i z$(HLt3Dxu6Fb&ocu*UM~R{qt|uq*TgAY3o5 zap(td3)pbA`~WUcX>fr`g9}t^A6$tGaJ>~oxr#XsaR9AfCU(PwSnSBU1EN);4pl2| zaPS7K)(IDU5KC>UUfc@@#WI^3D-Kd6w>wOVakBV7((*HhI#im)H9$t(X!8;xPCc~T z=FJxiQKm_8lg(Tr9!0ofh0VN49Hosb9jdo)6=#5=__;&%_J3*q-y)yp0weqvV4=T- zs;c*9>sMh1&qT3$P4hh)17A4NDM%c~oR?fQ9It)Y=~lADz_EHB@cKgpWEU`aX1; zp9mkFtszulAoYT%+G}H-=wAyH>KGv3`%_TSv<@WLY?H%QPj#O zg~~#7AX)od@J2u!y$GnA{}je;q+lhQ+&m?WR#I@7w4D~_aw57&?2Jul{(m4IbCDsN zlJF>W5RWo3N7o<6M69NSU#n-4lbW~_FDGIyDA>})Du5zd^}ur|4X^kHh>PoNDk6S^ z;t})geR0kIH2TN9!HDdEPJIM;kwBi_1A_kv2@2RpGOj2CUIt3CHmYmwFtJKi$XkvhZ%qBsJT z9`!E6A41@PDrEpZmQww+8<95BoeAw#feAX@8(fm^iLMUxAE>K=J}9~XbWXPvh}U7s z%daBk6V)vk;V+Q)Hj&3Gpe9AcxfkexSPW%Fyu>ERP8mOCt(iTB{n0uwdnEh2rOzqO z=>j`6GIAe`xo4u3GGieuHefwV(w(WxLr4pk zPa=(m9DstzmbcRhB0q*Qx1{%DAtzw3M;1WFt7Tkmy*{TfwhBS!6dC&wxyGZ|kyD)A zfqd&cVP#xfl01t_&Z+Q4sVw+JFmft=RH#nAA8_Xk_1#SHXdYdha1EhODuzPLJ0S1% zBUsGo5b^G$B0Axsit_#nf|$3^ybiu%PCeuuWzRd|jQ5C=Pr9g|yhl+k5ZX(Or-3)- zuhIOMNCf6|f@yjqu=->8elKlTM|^m@gOX?8bs+kVco2O@Jc!LvItgk3WO#?8C70ft zo&!qZ9ZAP(u*!HLbc03es`!0?9Ry)g$4}av$6=?Q&xD`g5HXg210+C@p~?K1O|(LH zGyeu{nNpD8A0y}#F_&)ys30~#!F=B1!o8VdE#bKUEk(5RN^9TTXv-YnizUK(J7F#xJ!z(U(oFZH zna1AlP4}dk?nyJ&Yz%tS9O+GSq&Llx-ZV#g(;Vqda|C<8cceGX zk=`^%dKCui=lN|6@b*r{7FCT6f;u~@Iva$#m{eRwh)L5LU^sF7g1X% z^~P-rflxwz?zTQ$P$QI@)JtZx)sokTM~{SCVv$4t4QX)F%Uqj-Zy@uTdNo|i)E6N{ zo#Rm!F3}B~s{AOT2$!a=@{_u?{QBZ6n&}W4q}Jk^{uH#{8Xm0Ikod!NB3HQS2F0r$ z?X8r=&^6;FSZ%;Gy8%3hroU``dVPuKZ**dgwqFRejF+v*PxF)H`i0YIK) zKL!!!t>o*Ao*O`v@terb%bpGp!>jmwKoH*N*#oMMKSk$#m*=k_>iK1K|NPE#9>iF_ zj~xBI(mk0sTc>_nB#y%?Z}=haedJ=DmA^2~5}ox6A7<<+>+g#S#AWm*(%)RG-iF3m z{z#tr33Do1+V64QP5Xyixr@t13E;>n%~bcg)3llv zZ!X`6*RY6rsZako-l#<(D%x!DW#0ut6MK+PbF@wAg83}5q%?UCz>f51)SyL=LLgGa z=x3{k=t!wOZ$>|NL{ znu}_UTw>3M(fTAtomccDll*;z(eFydHCES>+$4R+*5r-gGWj;14*4|_ogpuV3a8u# z7hQ4$vXm)L0K_ag1uMGT0i|3H0&s>5BgfftI)F3fBFx?L&)^FAIOZPtHuQMq6Oi=D zfso0OFB05x23!cpZ2IaPl)pxlA$cX0k=#K@$fYnDm5nI(TzM2LF*zFO=gB%mEag@p z)KBh&x_m7!%Q*ren1 zITUaPL)D-<;(f-G%hP( zra;ysm_j)OG4+?Pp}LBs8_^WYFjSYwqj0oTUJ02pc>*pDknclgplpN5L2@uaDwh)> zKUn?+fmO)K$ZVzjU(BoIB+RSjdr96|!L`vZIBl%-+N6GuKQZJ7nq)TNF!fTMzuy?c!!Q^Ff z17t3j#}VonS>;S>+7)sY)Qy$5BjPLNVQd>GM`2~WR;V*CKY^_BMNrRtoLU^oY(+t^ zoD9l$$rz|+ex{@{nr9Oqpac**o54)#Rh}_9wOqCpz&PG6I}SOrsW%5NTk`$9yau2WgW9jOvGbDlK^bhXwP1M-Httwn8&Vs0+Z#VZh7V%Y z)mX=uFLCq+t>&9vV*j!NE1K9YYrzV&XGLnyW_ynxh-YKao)x1*w~_BJF*o^6XUH=c zb=B6Wl>*~YTkUHGuxe}Pnku%U^PM$Q81xpby@J47tAJRW(mTr5 zyBF8Q(-^j1ERx=-IOxY=R7?g$e3;VfT=ybW?O%5VTWMvjCsh}(PhnbWt6CVx-G>28 z*Q|eqt+mE%Ah8u2QWiB^ti4Fn7Gl^Iu}BupVjLA16$z$kcU-J29@`KY^a%3ma5)^8 zK&A)$FEHvB0S8B>L){9^C7RZRQP*X~?+D~?qiii=s%oFdawkSbJ(L`(LuW4NY`o)R zLZo(MGh1eD+F0mt`mCon`dOp(+Qu=S5-4UDF~&xXL{D$GayM18h1P^k)#6d~4jXM3 zNO`q&=cZy-ZauxJ;_7|qb=D7ChF*g9sV1?0EJk%Sz8q}@qKt@gRYv)Y(=Q|Cc~ow3 z+skrCCWr!?7~G0~tg%AI>6>)u*d&x1ym&Ddh} z7h6SMd}(!WzIaeKdG@WKi;+Ev<*T~TQ|#M9lAAQUZJEY;?OSu=9&6%V`4` zx60QCXxi^Erf#!#-Bsf7`mOixn&J2=Y*lZG+j8%ek=(Zfkr52YUAINaZQfGKZnO5_ zf0WgoN4K~cO7YY$-eeoC7w(p=3Y}MS36K31n)VXLR29%GrL?A1BF9*3Qds>?K{Xp| zEf`G-vR74J*MnX|YYLg)bK2VldLKr~2J2$$J;%vR%d<5$T($L{A`)m;#-CTh+Qb2r zr(KK~>_`K!QIfk<-llK2W^au+P8!zFx5kPU<5x<>^zFEw*aPa97+c+gN?r4I>!qy| z<~fObOEKYcl`?iq73m*mZ(Ge5Bf@4C+8Q@iL9QYY^*vX5RQw}UAeuI% z)!J}RZH>AmqAD)}r4+4h&`DVOf1B`K_ixJ1QPF}C}_kQ z5MK^9(}?+*KQRs-(1>*t^01-Nh&`GSNc;veG-7{)?uX$Ejo28tFaamugwFeZ^@Qx4 z`PYJpCX<^CkY#|71zA!SiHWi)$PzW+!Vo}+N?0w6;LwT! z%2qF$x}kphwY49pm=;AWf<>yLtwm~GT8g$JNQv5%iWcv()k(KrYkf5DbTb* z5lx%WOH+TNL-r>>kN^doWI`7i9w z>vCZ!RWtxg4u`X~ZLyXoP0ag5hmw@x`~;NK$a|1!TEMX{@nfv!8;=l=<+sTCNxjOx zCJTo1CM)+@5RIYMOJ;eY?~ZsFUYl%`_z@efA@Db!#V;`+#2&ej6ig&6@a@Lvp$7O4(ow1 zD4j*}0kC0p%FiYj*T1X7?i@Vw4SJdj@$haV6jrK5dYWr!aXrkq?p2HQG#{qLJ#utY zZ?;V?Y!8#*96?LdLZ@Zn z)wP);UU+rTISmYh4+a<@+6A`rUF7dUXJe73#UhKK5d_tUgBK(t`)sD7Su`2>xwD(k zBFV^8@aeof3nwFQp$IO}p=9K^ZE5Hv& ziaSg6(n2lJWsY(eEr*I|Cmdzw>WI+}%KBf~`ud`8EN*2gbUbQz#!=D1d~UliiWO!u{wjd3$q0 zsIB?T-fJn}vXp7{kvp5qGe_aC&vXxl^BV69MLus}IC5g}Bf!FExhKacTfaaaeLgqE z7~^eG5Pn4z@%M-ma8Cgz$+sf&zMy+Dh!kIpit&Y%f*Sq}sSdlxfm0W`1d#e75u~?3 zbCj_9$S1^&(gM<@)$^Wm;gl?Jr*Z?g2?FNjDXEN#j(sn>EQRO@8l5@6M5O?mvq+aY z)g8^Cg^kycuo{1XaT)}Fn!t;h2T%YS4`P=;?j2T40Q3d`{zCUz`rx+$RDZ%vCsmLq zX{ji~sa!(*FyQbD?^9sK_)^kPtnf_oKhvfXPdhj%E%Yc~^{5O7afUo+zx zP}U!*n!aI9LQ%86#oEO+#Ca<(7PnG^CF9Vi9` zM98vnS3rQUfuPKSP{ueV7Q}Hn4|x^v3i;HYB)^xc%;$9D*i7-a03L`+5H)-SvJYZB z2vNre*mCVCp?ZEFOoKHatkL{pS#o_mvl1?1X(*z(j=v5UK^U-_)l>-;3S>14@&%^az1m$YA=+;3LP|A7@Caih7>u!kF zSQAjS)&iY3V71N?@WEPWQ}xzLIA|@hsnOPFRLP5VlVY4;nbaA#>grHwwif&F17a4#^t)|?N!!cplIEutKR;R7WxzNX|}ox z-UAlKC#b4=zsDGl9sDF7e$#vh2x}Y%ndbK@!r*R{vEMRJf#c_YqdSQYoJvY;F;RXc zhs4sRfEmSUlj1uOwm)PJ0#U=4%8zbHHLOJp=HD#OI#`H5L9Kn%3eZU%-$d2+krkj$ ziN6S)=Eqim&er&H*f#%e1?UKlFO-*0E6;p`DltE`0^gFFI=m^(jowWF5q$EBOsGI+^+&?A-ccRJ7Qmf?`48uiEYSultoLDnK!IojI0VviiBm8TWhTjTN zrf#&Un6-sYpV{`lq!xM|`8OB1V>_YKNP-s&7a3Nf&13V#!?OE(#*`zzUv*`x?_h@MoYjT&YecjsFFu5bo!HQK{JmGvTW2 zA?8DIgsXk(F2mO#@NkVX03SzC{VaCJ+DLaXwAX~MFzCI(b<#b~*^d4L)d2KC(F?%f z?T`a;0G9mxB2qq1y#-_Z5%S(9ig*ZWvP6=nfF6i>P*%z>wh6M6;)mqw=_A=Y^5FDg z?5s3e%7X8K9UT^<^m}haDdo+UBU<`icMN#yq7hY>C;CIgA(rCl6t}>gd@&X4F5yLz z4e?Jj0vG#{Mz^p~5FYUeogm^Qlz9c+k1a71dwt>uknwAIx5@)8JrmOrWU$ozG9uS_ zEp`OUJnhK0!7r0}Gs-jXqLPDEfjE@~Zw4b+9iT#W@FxLxaA1H=14Hu})(PiD)JbkA z#JnByeo8#%bcpz$q9Qusq>A#dh9KtCXfEI@=F~&}QhVM3XZ-(A@);-flYc*o8bZ5> zaX;|J{8gI&7>U4~PB6{58Cbnm@SvZzt0TVPA)S(Ezw1DBAMqf%k9ZIp<8%^?1*ioN z>(dJ9-t-nwDtI`f-vL&N4}os5NL>xz0oXwhCUsm_a{5!SQ_t(+Cpbim=0|}92r@K* zAFzp8(A~^KsKBg(G(U-;v&2lk0EmHD2L*GuKOgVSENedh&ely<7xPha&&>F=Q79(x z3G20dFvoPG@IMIy-aH*=eUUU)?Kw83VWJ4*{NC zSY0`ebmchGmE%ZPjw4+;j&$WXg1r|U>B@1WE60&8azrk@F=%6OCdc%d9MflVOrOay zeJ02BnHw5H* zVI5~KI#c7XASUYsGnLDyaHLqDF;ltRM8rwvRbuOLJXrr^UV5M7SBLp%{1S%r8`c-h zMc<0z`$^(U=2gTHIi*$1j?uY`Zy|Kt#8={kB7%~o6&n`5I?#s zri-X8l)Z7=LLih-sMC~xZS8LCkE_Te>C&}d%>w7kbEr-4pn5dFtj;i!T5Eg8%V9KrRYda!Zn3)=_`U6O8SW|Crmu>PfsdSh)b#u$XyCz_<-JYRiR+HX8z-O&~Pu_sFN&Xj6uD%rC9^6`9)rcB~hp1})tK zfmkV{pRGzKBdS=Ly*>~@$13dke8dw=sd>IZx0F))QXCt==+#&H8g59jf%g2jKp{4a z{SmfHSD;#B!|nMcw0KLm4rwE{UT9^h=o`N zgo?#Zs4LNmT#lg#q0pays0Vl+#Gr`+sAA%7bg3>jAd)<>4hkJ&CTu&!&4?sltbi(4 zMtleDhL{XLxR{F#Zt*endc<=OHAOi*^NKYppca7V6Zb*2Up#|(Kt!k_L<(MpL>ttF zMLpn*h%SU46;DH^K!hO^6BUq&i@A^~6eA#$5dVTqk;ps=148KVs8}q8P>C1^Pm^LK z%=8fT2&SiqA*Np9ZB$pOC_^-5q8h5p#aD2&LX3e-O8grx_7+DW(??8($-W{8kSfJ2 z$oCUpAh0Si2Q6GJKF7R9%*MP{yput{_ZKcie~~zZ`2dlR`9Lua>IR92;pt#;1?F|) zAyVacZA4brC#hoNS6pdqHGXp>}?cPFnOtH zgUn^(AVM7}MmsW^HcD)Py3yhhL_9|9#@bWd?Hk{5K~fl&C`hwP`(C+Y$`LUS9#uq>~d-ufYJY;vk3!jxzS7>UetrFlK)wh ztoRCU>xXp@^=7|C^DoRR3jiuHsQoJHI)*Rqo5!}w)+PP1@!=%{qH5!__QoT~@F9%4 z0(or7eBFr3=B2yYpJjMi6T4ToE>nA!W%q2f_k^h4Flf)R#^`M1jqPS$@_i@beh#B9 zDn~5u9qj;`Y!6f4yF+j{fKkWf?aMD_+dF=<{CA8Um3OWn8!xOFFi`om+_v!ols=15 zr-H#E1v3FSj>f3k4CsGf3+`!OM~{^)`EYpk9Zf7F-@k*DnX3m3P|BKZWyequN2n;2 zGAxp^RY=4SF{<#d2yMv#aCghat9!Gk+`77k{iNd$t0yw(?Qz#A_D9)zmjdFhtlkl} z-d%W2?7*<~Vv+Pt!a+Y4qiO;m;)9f4$C?+R>g6?~*fi-{OR9#f&0<<%tGXqLcOM2Y zUA=Z6(lv4&i7i`~wW!%*i%T`_77W`W7RjPnhNA+bD$O+Q?jg$JN9)3UUqW7Wr>+l& z%o*^%z^Gda9Q1r$y%n0vHLVGw?x0NG9WL2U*_z8#)jp5q4veaLC^=k*&iqlwnA4P`7KcWkJ-p8k`ge(S+6qL9h)PvPC5+QABbAKGEopmM zS(p!^hfVaGg@3HEo{ZBs>B@WLu#LSEKOug3*0hSR!oD0A zKyOWZ1!K~7xqVZ)emW@sv}vlY$7Jp1q%HS{6v>_KgN$H6?#9hZZsX<(He2q*|0ts! zf7|S3D8*Ahd4oMEU$|GyQt0d}Bs^ZO(zM+elT<+aDrilsMvk%8q_BELK{Xv~(=eJ8 zWWQB;T?=|Ottn*obK1KX^d5}z$K??D4*t0*eOnTPRa@^YC4pvT{COp;jk73E+Zi#~ z`whTGNp4qpo3cty-xAYxkGyS5qD(O!RVt>e!t04WrhbXB)jh7%HFwC}TdtUWf|T7} zM!1Yu#%`}6{bTKIckp?Luvvw++Dlc?tW@8r&YWfy-d*a>f2FE{HC`%#F`qU7HnK8VTu$r2E2c8i_ZJQ2GeEfktAJCzQUL z{t0k3$+daH=`rwwM&cz`v}FQXnMPt~IK3E~X(ZlpgwkDDq>=a(#2i?rk@y^{Pry2j z#E0MvfwwdgM_i$F3@-*6i7k#u%M46tB;F6F<)N+d%saTY&`3PwiKL%%;w^=dcvUY< zKLgb?62}pC4A9a@toH=de}QP4; zOd}Cup>#DoppiIE$is$4Bk{AmaGHKqppp0sbnk{QG!i4>LM=|d+KvYv{iV3~?N~?S zZ(cPzh8}p8hpXqzn>(v|cI)Emme#iE3zzkqF>kI69O%;#d;5XW&;KgM9EEx$CddCJ n+WvNbmSp?ezwFOOFkgG^MfiBEeF1&=+jr21ul>u5SjGPXl#Fkl diff --git a/lib/5.26.2/x86_64-linux/auto/Hash/Util/Util.so b/lib/5.26.2/x86_64-linux/auto/Hash/Util/Util.so index d5a552c241cebb790d4b3335476d0f38b528a674..e80fe46c477c459e386409861d17f1bc55dd2221 100755 GIT binary patch delta 2467 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 XXIM-pdmIs%;(AKNbgJjM2p;=?fv;K4 diff --git a/lib/5.26.2/x86_64-linux/auto/I18N/Langinfo/Langinfo.so b/lib/5.26.2/x86_64-linux/auto/I18N/Langinfo/Langinfo.so index 83a8c0cb5254885aa78534856fee97d7ad14f53f..235f8c32c2775594c19d26e5fb589b216ec42b11 100755 GIT binary patch delta 3671 zcmYk8dsx&}8pqH14KvJdfZq%Zx0zuM0|Nsp7v++c3J47dC?KdQpm;$IAx)IEtaQ!Q z$ks)Dt-MrT@_Djn*V^J~(`~cus!#cJ*~cz+wQV=GHrkC!T4UYsJIUkx@jLT*&+nY? zdEfWE=ltf#4%2}hrtR7Cz*D1AwfL+9=jvnbxh3Q57b*WVPwIHGSsA_kt=j1lOIMl@ z`}~wQCCl2YgwU*!n`qt?mt06|r?kuU^zoGPxM7bFru*^MmXcB=gs{$}vE?qgm}<() z<#gIsULx&ux_tiVx)dRzub87G1{pW`VF+n|$OKuVCmWWO#(BJoF#ba`D`v~t^!tiY z+Rt8kui|ZcSpWml>^&Hb)t1pSH~M1MbKlvhFVW`+(BE&IWPFzaj6P#cix5ITKsmv= zQll-w8o8a`3A$tpeI3kC>&7(u8|I0;l#KT!^rwc|PG7=ZG_f*Od)Gs)l}o(a)1kOd znm*pXIo3L@$Z;u5~zlNq13URT>MDAa$l_vRH)CO|-cN54ysJFHW z?Z>s1o?Xy37TFS$q99&{aI)j0tV?0&yJ+&XfcCwYmP{+e;5{(Td+5b!Suie63(8K) zpYAby22+Mj@Y>>|x@CSVz(jMmqU zl38@5j(z#L&LekHa(%HJq`LZmXEf5{bVQdRD?a^wEaHrf-UuUGf0_E~>+Kt};P>Z7 z>}JI7zT%^A>XWrI=@i*e;5mxzGAj8rC29A5a&yYLL_-(9!E}v z{uJfRaLI#IIipCX(j7BeWG}rxquIC@9wtpU7eOprKTf5Mm2v@XX9N)CL>QlKL|(Y^sto=<%j9<9-C6kQd7V2)&gqHTh?)^25=K<_FQ^ zSc^1+%Q4&W6NZADm@oK3+{QeBB0&E-NH~7@g)hg0b9qB9nmLD#K3X|*95&+M%r%~q z$e{ZnjpLiD*J1*U+ac7TSJ2p5F8LnS%nE21QmK1Zsiz26z}3OK^)wuktHuHSGdewM z#V^hdggHA9=IlV2vjgU9&JKh*J7B)%?7)b#eX|RHQ63Ca9t=|+3{xHqQyvUc9t=|+ z98pfX>8kQjnDS7V@=%!aP?+*inDS7V^3aI#{t@NjFy-Me<>4^p;V|XlFy-Me<>3+K ztT{z;6}8TBm4`||lOZ8@s0LtgUfrQ0fWcMZ4pjjR&a69B1~5WrsgItWGah2!j)+Bu zi@~@i2IHC-jB8>ru8P&n&63Yj_uL|xM32p#E$^oP&7C0oXnb=9+SX9JvAGWXcJp3Y zOr0&R)TKBe?tJe$H;#p{neej}PgFU|Q4`iqdbA~APsDk2SA>qBLzp`0gO*fi47C&# ze}u8_qxMpKaIAU^7v~@Cx504eJ2e=`?Au@@>)Tl1xcw0rKK(grYc10*XVAgc`EuUV z^B$Fw=0qzx3Id$ zFFE?mV`gwxh%HvWjWQpme=Hct{4MUJ1cVZ}52q!OL7^v!;m#!Z#xRjCEv(A?9s1MQ z+=h|q3_kSu8P;QD2E$}pyvSeHfm1q)%~8nGXa)FqH~$|K)jmGEm*FG!G)e$hP7C38pCz;#^S!lc1)bdW3?xWf>6y zRDzkoPXAikkP^fyb~dLvQ8Wx|F(8(~M{}0>H`wqQGO6Dn@CbDy@?%y6wx~mBBh{}m z_%h#&R#&s|<*=zU@FYsjhitTZ0cng;6HthTT8giTp-OP!+tu}0!l7=!tXS28&q17e z4u$DdJK%P_%7Jo%`Wc+4UfuvBNwwhWPF4|+aH+i*>Q*11z&z?J^rt9aoDg2sf?O!| zCO%`SY9)V2)jMz^O+61zSA9AvNfpAm3{}I$scr=a)E+pLrJe_8D<{6{qtqb;Ia>9C z$0+IFAViKz#|GxA7txicK1ZJN)op$u#;U)ff1L6ojskTU`&Ou4GYe6q4&#$wtZuak zah-YyZjDzbz!Q`X*RNOS!8fQ);EAduQiw^a3p$h4g9xKUtwWHdYC1AhroPYx4c(kj zQG~HU^)$AyQWr^}1dbN%kItpY8 zZR*I$dkn!^Pz-@1NO2^?ene(v@Zvn_3($Rp^p0_+F^Luo&JN7VWzey19z!#w zb^6=4!PJCA38FYm3_ZwV1Vb~@V`lgfd9X0lARO)se2Tov5MZ#zkP96X!&dki!LUZ> zp@4ci(pe%m(fQ6|rw<8~h&!+sJE<|eNBLdu%uA>o3!6Wnjw2Z+BQ7gLKSt^dowTB> zxb+;u)R3^iy9mw1Fc)(p7#>Bg%nTP$jW`-2;6cerhNJj1qcJSUESwh+@IzlRG^6Y_ zhO=I}(v{w_3Xw#zeFh6#8IB`Jo#6|~TLo}pJEItG!DlX-;ct+OVfYeq2E%T+WoL-N zVReLh=+0Z-mo+qVMX`*att)cC&#tJ8X-7yACme^6=G-0qaVx*kWX;a*U_k^F`6CQpb#tQ_MWM^ z_xOb1$Gb@L1YgC;<;QE+oxu#8L4Ldz7#~6YqxAlPp8fv*SNGU-J-@AOZT_uGy1VG$ zo{avt4o!CS>;0wi@(5L*94`;k#*?LTBfW_B0?AXQ@*GV$RjO5=poUWx>OJNAKQi{> A-~a#s delta 3685 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 OcLHwV?*=+`CiVZ}%-?4K diff --git a/lib/5.26.2/x86_64-linux/auto/IO/IO.so b/lib/5.26.2/x86_64-linux/auto/IO/IO.so index c2e71e123be6c9be931df7b7b37c37c0c6531cd6..76f3273cd613d5776cfe50782eab05d5f4cfee51 100755 GIT binary patch delta 6928 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 QM}AF#{5VvzJeMW>51$o}1^@s6 diff --git a/lib/5.26.2/x86_64-linux/auto/IPC/SysV/SysV.so b/lib/5.26.2/x86_64-linux/auto/IPC/SysV/SysV.so index ec9746e54e218cc50131c53a7b18e8e08448064e..21d4b6db13af5b4c250fc5dcccd57c50de1d5833 100755 GIT binary patch delta 3727 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 diff --git a/lib/5.26.2/x86_64-linux/auto/List/Util/Util.so b/lib/5.26.2/x86_64-linux/auto/List/Util/Util.so index 03d5cfb676b07bbb45719fbb537571b223e68a90..2367c7d5559a0e2e4028dcb1fed70671c3ad33f0 100755 GIT binary patch delta 7228 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 delta 7233 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 D8m3eP diff --git a/lib/5.26.2/x86_64-linux/auto/MIME/Base64/Base64.so b/lib/5.26.2/x86_64-linux/auto/MIME/Base64/Base64.so index ab681a7b48cbf27a6132fe90a0b2fa5895662cff..21697521bbf05549e3374cfa893d6eb41b3fc89f 100755 GIT binary patch delta 3724 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 delta 3748 zcmY*beNH;dD5*3sv--3vI7!&Xd#9$zP5I<_7IT4b! zC#ia@agx^0oS1}0bE1V1ThrRKr)f1+Yij(6o+OG|TdBG*S)F{-as>YJ2BG`47{>^4yYC z`Ps>H@- zL9LwRsd)y;;xqH|$YH)YZ{OH1m^i+*=>%#u4RIV2(e}fmtd@F!2vP4q6{?FHLm>y44UQ4TsEuOqn%NnG+_u@?h8r2r=Y#?!Ar6rdX*lNRzb zvyJ3M1A0;C3YsaKdQsYHdJM#2d=Z+3^i!^tRmGcW*UC1@c#wA85WO!VcuU!2lEQyc zR!Da9|CRZ)0DP+(Wyc#xv{l{319Ot|WmFlK>ZW9#uZk7etMnw^YXxAuAN1 zTQz&eSkLRr1L{t6iSw@N_+024_)p4{$jAJ{@|2eCI96(d;;BH6y4rz?sLKYBSN#&k z>Jy4x1oBIfbJ4uc)ef%)e##FZ^Lk>HN&p%LMxHoxhb7vE=$?Q*2~}5UoX{khOmuo( zXp&9fks>N`3nV99<8TJyH}V8;t}uLk@ah>i=;#OqNY&?=j()@6tjJZD34NJuFRCfg zE&S_>fciBW0-}NQF^UH&17s5~t6WOH;2o8#!We2E>gS`Ymbj`=gK%~qjp<~^IIo&U z-r=8A<+RL((}*;;@F3Bts7FM)ThuX>9s&D^N$y?%MbZ?t+jbB>^rfQZyG<546-T4n zHWOEj{+_61x2;;t8P;I_xR|$M5$1;=(q9~yr@&O-X3jmfqe8I?g@jSMP}~mZZ_F(f z4c;?%cHTXdEqbqf81#y%4{HE6!EXg613>bL2G&t7Xha%yv}Zsgz~giSf9?^3yvl$2 zNPtxH4<9im?*QvTmpiH8H3(j(eFFRUGwI)n8^n%$px2$p);_!xA#61_(*#YBIS z=P#I;yiUY9r0u{tSLhZ2+O<;vIz5d)R?$bbE&wmB<@*+7kUjkD0zmbem4Yq)y6qlow;6=>qVy10y2aP4}tNg{*9Bj)8q zJU#LD&>VO-9uCv|lEf5LOk#G_fUsJ=ye_VU;`*_(#qg)FXRwa4>RW)>;fb{wiQ%j zSr{I>ICc&l8PA+3JsYAIqlf)10r)siTN2lzVxf(FA9sEj8;>P+rXzKQ6@w&Y6L1n7 zED2=7*+N)4*#Wq6v0Rhhx3JOJWIS*>n*kbbwgI6d*kM>kvP5|EunZI-iaiY4BiMA< zM6+jL<7J0nW3Yr47{#!OF!Hf%7{xLT`Ny#ZAQaCcVanKfEc3I!gGvHRLP-^kOY?1l~5 zq_b<`yu3a!CJ9!PSsS=aVFAoD*;|-rv2R>_OMPs`Jp`S>G?2+*_dze0Z2;9gmItGJ zb`Vu4U@_RvLY9lgMa&7pGnqKm#cVpXCF~wn&0;=CN~NTC`G4xikXoL&w3v+H%a>-U z8^M)ak;BF7oL18L-qP_hDd9I7CPF`ASqa(5>y~XLq5ST$cJe%b?TIF`fGdqcJFQV@ zf7n=*`A@73$tP62pdl|GXvx?NMj-_xY@O&uw1-fU_|fJhXuF!*1aP9hJ~KcdsuQ-Kp)}p?K08n^!iZKhd-r8sE=(M^DoK E0sJ@ENB{r; diff --git a/lib/5.26.2/x86_64-linux/auto/Math/BigInt/FastCalc/FastCalc.so b/lib/5.26.2/x86_64-linux/auto/Math/BigInt/FastCalc/FastCalc.so index 0f6da06817648685522c222fb94bda681a512f7d..1fd9908490397fb7bb392fa4107f7b16faf635eb 100755 GIT binary patch delta 3736 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 delta 3752 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 diff --git a/lib/5.26.2/x86_64-linux/auto/NDBM_File/NDBM_File.so b/lib/5.26.2/x86_64-linux/auto/NDBM_File/NDBM_File.so deleted file mode 100755 index bd2682613187b430da2704263ddd811c4c95672b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84600 zcmeEvd3aP+()aD|B;7ZJP7^xm+ys)&LP$eM!jc$}U;+U;5Mo$G1(OiMB1<9(2m%TQ zl-NcY9d~qa$K4s%QAa@?VbpQZaY5X0?}!4*3?j08zh9l(NyCtt_xqmrukV@mv2RtK zI(4e*RMk26+}q)@(G_E?7K;}8*t8KEu^P9cl$Z_6OFMZ=v?9%}m1vn-hVVw3Jg2+3 z3l%kV)ikdVC@l*AFE17pSFZq}>n@w3?=i2TepZm#Z=>07quDQXJz%OCx;m5?Edp2m zzr$=l^_pq&g|6h~r|RqG*@W{43HmSBW<}OQ*HFKS=tn*OryrNeILREZE5B@@1Mmr5 zO>@LHP8r=bwsNYLIQp}-XZN|_gLCw!-i>XUf6eEg4_U~5Y(E44hy1@`YmG&VDA7q9 zhX04-|B<8L`~KNKcT0W#%j;I{x@dZ@Keqko-23RuOhVB6W>ExdP@9F3P=zlu-o4epo>q7q0F8Bjo=zmEUep}N8 z|1(|Cw{<~p1pRdOe%uAUs*CxW+=cviy3l`e7xZts@DJEEFaAIEliG!xcffc$yPocX ze`Xi-?On(j)&>91UHGlI3%_mZ!f)NWkYCe<{5QIw_wQod{4V%wVXqhepZYng3;vtB z&~qR7PnR#hcEO+11^vD*=tWS_d#aMaufYGOoA-n+^q&O&^wY?h*TuNsbwQud1^v}7 z=-0};c(kfg?@6Qg0zFQP(KhBPawYonbC>WZYST--L_0n=n)FlU&*L6swbHeMlGyuYN~J2sw%1%)h=0pG3ypo zH#RRJK_Rnho9a8Urbex*e#ye>re#!P{<8Yn)pM3KEb1T*n!l`i&cfQckVv+=B@ML; z!ocd~P1Q@AYUe_tDP>W^lIGflbq$RxLj5rCvg)OaXV=f^U}~yw1}#kP;`)mxPitD% z!7yh@ef=PFoMm&t3Z1Iw)nn+2>ISG>QC+umNn`D7Ld~`F7dO`fG&O)Mr9=k>!@-P2 zbG6yC7F92C!9(8);G>y*f3XHIDgh$ zjGWulkUKbpRM#~uYOHPUpw$s7)T--e*EZL}-dRmeDkni&JX_0K+O#AOa`KiJ6;>Ax z8L)8v;-$+6%w4=x8(UF6a#Z!8+#wy%pxlD+97h2>>4U=Yzx3&pY|%RZQ^GBpRa-AL zO5yJL^Sg7Gxy__4O`5N3;CaJTC$zs0?aTAyRlhanK0ZW0z|AZ^{!%Y5T8JLP*PNy3 z++&CK+~nI3Mi1YAZw#Z`$!LCV4x@+0VAJL>dQ6BJ*DYam*4ohL@i4k4M8x&kFuD;& z-x@~m9Y)^~M$ZnT?+l}dm-by@^!zaXJz?~LVf0`aeNY(vKp1^U82xYE0X7(KRwThr!+(Zly2jbZfgrFeN5JuXbnnlO6LF#3itx*7V?x-pDyri##S4x=ZA z$=Mu6PYR=N38N>6(H{?^^Ij_Sc{Yrm5+dTdHH@AbM&A)e_lD7ThSAf)=)1z`;rp{a zVf2hJ{$LnAGmL&9jNT`VemIPt6-L)ey@D}r`wFDK9Hm|XNcRb(zFehV0Z8vBkorn2 z^$I|Ge}UAOx6~^D={W+auk2E<0HhBPNPXp(dIcce+!6|2RO*#0>4ODQUnQkp0Z2EG zRs{FAeDClFBEKHs)%@$XHd{~Z^tZg~cttx=ke=(+PV~vdcWi12Ama1br+v=}eEK92 zw-DbccpPyn@vVYK6KBe{KQ6eHI7@E(X2FkO$azfN_Kkx7M4Y9!eU0GX5vRKCje>tc zoTawCM)2Llnd0qLg18`0K=(((Ud@U4s9CI8(Y^6Z}Eq zvBVD?2cgeh#F@hFdj!9gI8(QMr{LESXUev375pmVOx5+9ve#Duo?FWw0{&eDA;(G*7BA!Nkr{HnK(}`~tJeoLDvHfwu zt;Csv?VANZk^`Kn*S=Bk>-u}OIU9k?$KO`m4hDZ)Brj9_zQg|3ul+5Doy+18u2JA+ zxau=c?3ojrTBd0;UtyHa$&F227wZ3j^e?ze^*_%3+m74(tq1(uf@k?Hule6T-kbI)!L?8{B030`+cv8k%w(9hb^(|*TWzFx{v&U;kzr^az3GV4vp>Z zXrAD2EASy+f)^bXEM=k}spsxRBf6G=2Z2dEohNR)!#syaS4%6t^b;m)1BKcHg`L8rQcHOt61#II2W!Z=S z)%c~#_+&8q+j4^bz-oto{fXu!iu@JHf%x^D+d#MSp&yKEEkmq=X=xKym9QX z=s7yEqV;&NMEq!j8?#SwW9bE@)d(EKvp-<>2THtQBQCuLT*`$2i2@X(lxx1&Uq~$l1{m z(?dF9I(FS7WNj;$h`JfPnYaVpCb=%s{PdL`z((;RC z={SF&`x{waZOu?i^N2NX_9)*zTK00Kt)pX*al0q9E_N^YbDwl%y0zF36idld-MfQea{aiiWCB z%%6_r$%be4_Mxu}BA_N*ULcpE@<5cot?Fn+>o4W438)g~0e5CcmDuKQ-QnNHDuKlL zlzvxL0v3r!{jFu04wW?<*xFWb1j|)$7w|=;8)@aqJiejM1Sjc_{(4SPH+|JEvp?`?7Bzcw!rA@^;=`tXFzE1 zPBaBKK?{G|>g?bXA|TQY^S6)AMmyq0WJBU5u3#C53zSiQd=YpU^MMjqMQb*EQ@XZ3 z=ERAgG0@fs|C!eE)~MKZ*F!=@>yh&Q?#ve>C=I2h6}=;`%4F}=j*8Zz;Bk%~h`drr z@jK%npSKa=l|dCEw?H+uz69%ats6 zK8D!)`;K6Ud^i2{@e{$p&GSnX{3K(D@c1Dfil0H)rXqf_*@J5W-3|E-+<~!_NxT6C0F4jAE=|JQTp~v@-kyyTBuZ@J1U?cRL(0Z)G*1sGzJ9sB_n-L9TI{+9;1_>ebEY?V6FSlmFXtIuTi-!IO#-nLMC_Hj`Rfj}?i|;)aNyxSvbJ)6 zdKbF~A{RiJHAR-#b=Lu3^Hz`Y*5*uCDSU^1y`5;pc4_G0iq?7{1+@&o-Hk3;o`dJhO!O>oeO2yPf*(Qc_8-wp?b9n- zzYQ+`k>+)4Uw|qcd_!#Q*}efRD9NAU&Jii~o?Hqp#C;>OCkPB4(8$_W&>h6!yO0q~ zrJ%NgA=pHK%LO{Pc7xctpE_xMpN{ILKjX=5K*hW zbm~>&tH_>0ik~4DB!^sqv&>T~cm7>qTtymfo~ zWZZhmtw#m4@v4P(#$IK!w-m9=TF^e3wY}rKD7Y6+XQOnDy>zYqF`>i>!0a>!_J z5S_K)8)(OP?LS~J_$m0ji4PK=u&)0eF@%}0vZ1Z}i?~6@0`a6=3eMMw6>kRymd_v< zMRYnk1fNiFB49B5LovLlh^dPBnIb*_V({JX@O3S|0&K5B>&H~BtgXh}oSk&bcnJ#1gu1WB1%`i7**5%Zj;ih!N1y@b zylICyZm7mHmVTsR*EcQ@vF9}Vt~SK9x?6mr9lmIN#ow~hg}udt5Qt z88ZECE3<>o&@F-ZL@2*~lzHzLwkY@^s=RHiS`#K9oWd7{Gb!X>76qOXba#oXWK|fZ zRt21S1jG}B;4gPRKS$L&{LL!g-i_DgvHT;s5}UKY{JeQxV812;HMB6cGJ`#ikx)Q zw4FEIcG6o`Cc^PgVm1S#s+5DKU|))+<41^q$lt|>IbP+o+;so#TdJULx?cfL z$4wJ%C`W6hYv;zCbl1)8>-QM1qV*?#|Eb!^>uOKwzcP_az?EWJq)SNg=bDnaZ*4>O z;IlF;D?SQIW$W-g47gB1dBY7o{&nZL4ITew=U4_B>)v$KJ%-`>6;ihtNi2Iyx#eT~ zDf`H4q%^4f3*H8ox6emqHS0-$csgs2obLq%kM3+=$tl8lQTr1Z3-#g}6l~Osb#f^f zF59f)n}DHSJVry?3SIyfYylj6>l-2bS#iCjxLOt0TZ;IgA~u7_bpdJfVb7D!>u_px z0u$q?2ER7Md>(5~}sykADTQAuzoB4_pb!eb& zCgnhQ;Gtk6y#aYyTi%tygAwE8?f+)x^*woqXOkRtkory&H32 zBjztq0;%55+Jox{$bCs(vZHi3@JxkxVYOL%EL zK5*+xb0ao%5B>^%^mQ|L+lp(^*!oKFMn&Au19{x8!Ny>VBE2Bzi^Y6RFW9I^^W`?K zcr!^e73mQ7c5THgNgAg}cgu2LJcXn)6sd~UvaL9tq)bKnE3+Msxaia#iWDs&S-hE~ z{{@xj>dab<6Ei`R%*fDhZ>8yxIn-f@SrCU zE%;m2*!md=NCxfv_Mg5ufq0WAPc3{BtUj}6X`OF6bwI<0)h(>AU4oadv_4J4ynULy z^P9Yj8=AchbG*$f8tXy93s^bcx`x^Ho&ARmLkGM?#umQJ7ACH8^zbI~%Wl)!_{}@BGD-7REcKe9~lL4x^Qgt{6RKbU4@KDQ8bQi7;mLlu`b0je(P;96X}h!Ec@%<(RwT?2Cm4$+ns8#bkUw7+!nNy9=IUYe|)!?)C`PjSOZZOdvGE_@283RW;kdY&)|VAkGQ2$3H{r;_5}DJ&S8TVsIy}E+m2r zQMm_IrUut4lyGL-MlAdMUB*sq_ev1b`M49@h-)K`+xFnP5sv`!5xkp^oH)^lYYozQ zD}xyyx4LMSOD1WSJ3hk!&A|WDVZ&#nj&!=(tRtO?SKCUR-YX(Xo!KpsWzKx-@1mXA zpp-fj!7}Adp z>xpP*5h##6(&+`Kk~c=lqdwe2Er$>1QeL^!bq(dU*}#1@^|^xbTB58!D~&oNjG_eU z!*{K>!1p8Qk4}Bi|1|p4*dDcjgV+M!7DE`X9*KXtDK(Jgva7A^$CeybV|+dSQkCALy5EJFPf1p`6bbAa6R3 z?fFdf-^}M9Pnl1NF#7)}`e)e1ON5Fe?9PD5B%2y|MkHCx(7nPdkFo`Av6G&cz$M^``!?K(J458bHPt< zbxB)l?L>B!YM7Y0CTm)>&Gp|>e*Bj02edhIP^ZJ^3ec!x(V_pxL z*C@Qd!cT&E%`&fr=5>sDon~I=nAc_I^$PQPqj|m0ygqGSUo)@oo7Zp5>mlk^ zdCfAfh30jPdG(iisirn|)Tm+J?6Ue<^J^D-3v&nO<_{QH)PHvUtf5N>`V_%CD1YD? z`2_ghUKEshHz$2I`n ztycT%$Q)~geMl}Y4tpLimZ*hbuv#O3PKVrxNdBtOHiPVrNajoAH#jkjST&YlPZWxX z)g=V^N>Rk60{$8c@G@cOQvh(SP>WIlUM|#M*{x+ByS>yO;5q@*d;r(0k?g(uqOlw5 zSj3gm_;4S90fJGE$Ui{qh+Bld0;MM64grthu0P^o0pkY)e2k#o!M6%wR1>Wx99aWR zBTLtF^mr%|S#=4)6X+ee$WDewF;>+0uSk6cBiVORX~!BzGEV~aKMe%Zn;_~KTlhx; zy1fG+R*QV49~x8UfD+@v47j3}KhHi-fE;xRC2IP^h>fU~aUeVB^M2y`NCsBq0MubU zpHmb0D8BW9Lka$bDx(iB0cdyhLpR%Z_=>dTVE9xGff7wST>wN0yB6~c%KMIP>7^j) zpJ1}OW&aaBG`$k^ZazA=L|>l(xF1#bYtigHF(d%8^U~2cgZ;bz0U7Uz@m>bld20mB zN@suPPeTA^><6etUI)*{WX=FbWFh3m4EqpNha+a((;(^FVP8zec5>=>r2w8lcSmRr zSIopO$#9H)CQ~YYxQq#pnL;>1e+(nXOy$51GN0?B8${aqVbW%ZG{rpAWcJ3?PVHc> z3uB(Gn0LYUn0k)l&?6C`F>|iMC@%e_bii{7CvwDwWfbxQW+vt$u~a`d4e%1eP{|v! z;BGRM(!fQE;b|;%F^i{);TtXH@)Gom(PA58Mo$8t^X^!nV+FjLlTdjBba!5Y$cULn=ew$xG;1*z z(9O^%T|Pd3?o@B~BnQ(e9vFyW>85_q02< z;}Xq1#HRpc>=MoP7GU>>2#oFnETp@46V4Ub?yw;LuZKLjzS-;W@S`%x+O4#tZ6 z>F;(ZrVoITaR;9R9HEazEsHy}(81`n{Vc-x?HS6T?T=vW6?gnPz{d0#FlrW&X0)P! z#91sN&S*tW##t?&!O#d}E^0uW%~C{xMlvdCT!geFYPK?nu{-$fxd~s1QPI%)e zi-6w{yhgxZ3Em>03*Vl5@D;h9u1cW~V{$P)5pk(>u6{ju>Q7{jQc>q<1jt$!$ea5ISAnHY=BzyU%*bH#9yoy&F*Xw+^$7)NY0kvHdF&l zpeye06G76qa=?#2mCQ~==-2c z&-?}&pt}&pJqtDhbm)J>O4zgbKEN)01$jo?1~^ea1Ldn{32SmM{U*d;Pg#_``tzXl zlxmWx|I!EWXv)miZ-s|?j{7~}eEoA|V$aGS0T=0iLqX_Sbrf)k-U2W6JpV>m>esij z?+n7z^|5ez&zXeh>FK0jNR^js(Oifp02G6)S~SbV%n)wT+z-IOs3Z$n+)trnRI-JI z!aV|uX;d%EJi-r=Cr$A@Lmr>vDIrfk#q$gbV$}6Qk0IURKI47J)X#=P+(Ri+(>Fm$ z_b|c{2;kqN*+ZU$L2!6{p%k!RVYdRM+}M#=qWK9esjPgGmT*}dD2Zu^tK{-&nrB%Q z6|{LkOr8q-;;6B}lPdv^w(~VOt0UqQxXc<6F%Bz8!sW0&aSJu*6~XVs8J5ez)q53O ze_6`oTpUtHqik7H1|id|DHk(cwbcFy$i!KeX<&7yV@XMzE8S8bfuWwf=<^{p`Rppq zGccO3O?mNWGO~@=S0gO+)u?R78#^(!re6#573|R8K~Lk2mm$}se~WFA@y2)*qQtbP zy@X4^9-(`@X&=EoCTdCWrj?^4hR}F#+RcMIQMWfOud}bEr#CGb!b8k)-n5-@ooEkl z8h`H_YIS+_J&0A~jU4Eiu73rGDL6w*9!0wbMYqD3bo_M=ttx4SWh)A(LCcaZv508~ zO*0XPLEC_caR!Y8BGzTlIv^qQGH6~1hkY5euLFnyJW$u^$CchY*xi@4+) zci;{o=}OB2AVtRAG;M<*!;M-bY0_1eN6@vzNX!J%W}zIvma1b^Pf_%n@LEhG2CXrE z{RzXV*f<&%8v>iLaWpJ8j)uj?(U9|0Y$&uNHcT`W8zvfx4HFH;hKYt^!$d=|VWOef zI2slk0%z#!QB#d$)IVDv!f-lHINvy$0@!Mqj{;j{yx$K0F*K?kHW=zw$v z9gvXUBSGw3>SGw3>SGw3>SGw3>SGw6VK2Azpy7~;SO#F}hFJoum> z`NnyOGvgsaii~f10C`xD5+en!F&+^Fp_PfW^o)(}3*TgZ??m15tcxE>M^zvbJnQ4R zWkYS6jCy!>^dvOc*y_cf#7Rv4_8NftMR0s_a6j2}2NtR1AcNbXKZKgB;253vc**VW zVOm{Uaw%k0Mc+a(wG?ycy$&%yk3hLJ#rzy5MqpFS;q7T6#t$(QqnVK2c@*<&FIPyL zqtADWIT|KLU{lPoGVnl~Q4ljJx-a^A>nP^Ox(+cvZNo^WHa~@l5!e)SaGYq9`Wr;4 zXL57{I%h6NkR~QaT7D125cfn`9`iz!A^wSySaulVAce#j;vu`G9L|JNV^K1vM880# z=AvTu>UIHUP+yEd?-jEJ-qrNAy#RL~olj5Sjj?+<520kZ^lbRJS1grH)IUdh^>PvJ zrGJ10uU8KiB(MGeQmt3qtAMlhdr&ZY^<>|CJsO*vUT)T@qO`XtGrj~vMWk9v()i2x zUI~I)u!&d{3Dh$dz5GxX9-JCI9~ye`XO$9@zrUBtirqhyb$alJFb@iBdT`%gy|g)f zegpby7Kv5qY_W`jH%zBl!kwlN(`i=AHkrxPr4~%VInh61^i2M&qbBJrTX#gUF&|1K zjk2W_LYkJ@2VSg6deizKn+oBgq`z93TAJbG8uXSR7UMZMAn9+`@o2Fcm1s`dX+0lE zgyF|HN$&{aFh2JJ`MV%7MllLj(!16vxbblr3o%^Md)9~H>_j7iB1G%VA^EXI3Zr`dWZi6BDy*(MYQPW>QV)agJg2OfaEp+c~j6Z`@ z|5+~JBr56B_drDNWF~B!{w%_ycQ2aNQ@_{)xHpGR)ce{1r!a)Di-cyqQ@Lr%){>`J zVHVGi&ck5o%kjsZyvhHxTm-}@#&#|FkSt}Ik&Z9`G68xxj4P3PKyHnuwLd{)AS=+4 zsHLVubI>|M`F@auM*4k8xd-$0m3l+QVNNLF2Dux@~5uC|qSl__N*;;B1V!%@${V5d= z!VB}f-LH=~z2J3rD(rQdUSOGYDup>!Ugy^+9f|t;5a*30zgHjJmv98qBU|qWJG`+O zfb;b!m`rc%NWevUF+A&yWz3Z5<51wev9+N4^?rzNZ!F75mHxp1!p!#R`aJ@F2Ko#= zN?_(tjh5OALOt`Me+Q*A`QzCQ$ro5};^HpxRvqrB>TpL@hdZj;>cFg<5mIA1>Naeu zl4n`BBa^a?3M652gS8*n@{KIiiR6o{-0K$^TNu4d1Sv6=LH*<=LHx$u@Jw>El}1(> z8A$2mrB)Wj=|(FS)#PQ;Qe(Ue!;>$TmU+hOY*{WXjYeP8(c~48Mm`k+E&>zm;9-aSVH&e#8jS?%p6PZ5^k%5yc( zh0$pktWWLY6`I5Isqp3j{7F>+QaM)T}(vS4I2Vl>a^PNq!OAf%t?3n$%@ zbpld7Upl#-WNjw>D+$1?XA=N_?c|m&%LBolZ=CdL);?}IzIE~}Dr*_E^8}p?imV>w zZ+9|qviQ8f^PQ7ZmDK|i>e=h;OL!3G#`C?C_iR~qOseMx=lkUU1E$Hd&-nx4cd6%o zfwjy`tZ#{)m9hCS#0a9BXI1PyXX0w~r>NDjzecc@^}v*QE{&zlE-m#BLx3%e9*#bl zmHps3&)V3VDWDQX!*hA;gCc-u#-5f~>g6zIV{h(RCy2|KiKzChk9`VkiN>cK^a>f& zYt%FBuM`AX{4u(E7DeB~aSHL3ojl8NkmJ-a>gpVHsb)NnTAn=Hp~g8g4M@FX5^Q%F z1E4|j96=HdKjVI`^g%_7MRIyBiar5pG4%+g#I#<+!Jx0gkZH0QX!?FQJT2>5_`#u{ zfuYj+()TWX6$(LGHet7xTvb}8d6qW|KUfK#q^W=&LR4xtvL%({c~knsQ;DBRd@Aurh7uny z?Sltt>5o#njX|6=mH1;N#Hp5eGH$PV`fvxC?GEm( zZA>=1gWoph8cs>UVs~%`><;dgaU6_Uv|6k;U}9~I{~iqdxcwLvjb8wcxfUV3E91vT z#E$+PzA}EIj+#CPQr!rA&d z7vQ6W^YvKhlyQu3k^Ul*JL5Rv5@Rc6Y8E1XqaCr3VG*Rtcn`UgVHIS$aSRib5nHZKy4dl(kSuPiX)pI%N%FyIaZ*P-0S+V-CBgyo?ETrp!g( z*py>X8V_!EWBQYCp{hy#(OUBJ^C8kZuU<<`_1*$de;5l-YUcA^D5F1tr7pD(ZJ;!UwFWjTLF3@692k;(Qe;1soxhx5q{zoX2nnyoG=!+<`fRT+q4C6>{ zuRuyU`$MC8Z*q_|aHN$xrh9tKSB6uC_OKxXrao!@}W6;mpj5tYd zXRUE^Lz&$E6sdP&;N)IUiN!Oi+H zILx=H6r9WTS0LH9i5rwPdX1eh-Mc~m8LO#p6WzB_-wg*SeQwq-EC|7yb^fJlMc<;o zheTKK<7xc!V7^Ty&>y}d@{&45uhdT#9+&TE+&cP3N4t}_E@WY*hAMPCdusJyITrv1Do+_!qW#LnUAL|_a zSm)r!ItM@2Iry>8!H;zgeynrwW1WK^GY99*ZGT6yRSrY4B-zy>nkBYdEgU~f(%ovI z0$GypRtq)Al7zQfs6v)xyj4!3vLxlL7Alb?Id8R4i!4ccoTw0%thZWBJ$QQwJ?s|V zfhs-hvY0D9>|uJ?!}PF+>0uAk!ycxGJxmXKm>%{pJ?u)4oM#bzj^xkfG$3mri`*A# zga`To{!&gBvX*86{z}f`v)&v6_-hMyNm|bBD7%j2poOJ4>i~>QZdZE0&K}<>z4O^) zui|+FH6ZzW)!Xi1Vb3Wpq>KX=9>!$dgsPPMqk_jEJClEs6AYvakC))DLvo0b^&%>V zc~+A37US+EF^@V?=zN}g0PDPg@g>R`n?49i`V7JreH)za zlfx^k7Re62-c9T~3nOIvvJSKFv z@1cD3)#r1`dw3H-95zP*e&k)i4t)!kyvMs|)5fW}fS*kVoTzWZy{7Mvg8_T>eKh5{ zO2FCrH+H};Gy~4pFBlB?#p?kV>2=t0__jU+xJ18_OXSP%1NQ44E~BqfW|cmNI_z*` z_c&d%QE|J2y4f9^1>Ayw63M0CcRLrSnBh><<-6-*u;`DWlkXm`mYTkhtKYpOJJ5>` zirkF&^W8TIq+B|NX2x+x7RPu6(+0M1e?z0=8o&}q7lnOMOdO|I?r=i=?qWZ3+F^j| zCp>&TCag2>z2eA%p;n`d-Lab;$x6$mBZxf#_n=EdglrP%S0#E5#ZYbV4rSB)lbafV zqG40HLZ&!MLh~hTrWTwR)hu3-FDeb5TS7dXuP_m2^PkvEpE@xE zaeqV~_4*LE$8p?c#j!C?TIuYN=U5Bvj*rnhugW*idLMe{FR5Ry`Q{6(8MmOX??O4c zb{MkhS!kuIE<<)hi=|j38nOjykOMidA$y=kL9z|m1YIOZzVQvJf^UhH^|C0xv7t%x zHOWDEiE$h;<7<}VFh4XJE7QYg!>Li!V5v0;s^xiotE@)>7_lU-7FaX>%1FD^T7a_e zFxugE-(}V&ATFbO6p%GaM@anxx@L|Fuu-<*wS#%4Ed>Qp8x+A5yFeP2#|{dDWMXS#(fdsBr@D|l zzO~jDp+f3Dlm_3ua_XPw@NKtlp}_HycA^$6P4vBG{kns^Q;`kXvA!+k-C@X<^<C z^6MHk-`}n4(ZfYIePGQ)kyA214DY-g|15~Z zxCvVq-(f*q#%dkNFIJ{VqImL%DDO44a$bKGB-1#~X+0{MWap36e8)uHeB(vxaa_Wt zh!bbA-O(|&&BmzIj3!Wg5ppi%Fq|027b!@L7#?NgY{|swwvRhHcQZTh<&?w-;xOK) z3%kq7kjprVW!LAlvGgTsc@e%Iwu9)Mk6$)xzBqXi8Qv)Jd2EYurlX?4FolXYl9W(U zB3UUx%X$f@T+!Rcpz<2inJFo9#FS}lBa$iuWE=A_x-VUj93z@Dlpz}BYk63@ZSQmp zoox>N6Lv>FpE)!Gx1WsRQts|Ah}(#yq#R|NF^B#eATIM7t73rU3X-Yi)%XV5uELV2 z%p0u6$gdly`G$y2j{LeoAz0-}fjOLHQ=yIZ(5;IV?=YaxFNjweRjy_* zf6@HKns1z%!F>LMHztx#3&$%{7#9jGQC3xmA%11m1VN^0{pa}}vc|#aEQ9rKt91o5 z$dYRPvX$j`@QQj={l8fGkUZ-vhS7Uc{<7|3kbfpMFYAdkzz3`aNQx{M;S<)c30s)7 zb{kVW>+d}Q$4aVYJ;}`MDVdY?GlMHr@*wLjmef26{;UFK|5*}^Svwd&l{R``OXYgt zn`mQ+kEZ7M(*;e{|K3# zmQGO9e?|PJW$=|yhi<{PG%b@bR}&u3+Z{ZEk9DM_JPN9FD<(cIRlp_~me%J<%CI}w z#qO9U-&^IIr|jr9fe-DR{M(}HFx+`1c9CflWV;{h@H+YIPBxtCQJ-u$z4Finz18D9 z=cRC`H&#y2roa|&ET1+>GoSD|>v7~_Ht&Hg-q@p9wxyX5`kX=O%|kb5cR11;%R4D) zUc=^E-1K;3t%w4r9ZP^$9;l$%cB4i(bI7>M^w4!4YB|sad1I=G@4&x-T_zwxdUCHcxxC7zge>b|rbQ z28(Wi8A)jbHT^qyAt{}|4RGihIwfUrTd`B0NS;itdGG4EaAZ;+E>-Wt296TBA4!mu zE#Mrs-ns?U#H-*qyMyOib_Z`&GvC72DLbjJ)lSFdNFOV;)r=dURZ>5zL|Q&xTuJJ0 zWf-`OYcNAe17w?#Xsm^hq+BbXBYE*&3g$LDX|Q!lhqNK#(h9?*ouQ=V@nJMgk43o56HjEBq1@0D-R!ED>sKc#u(k0S@bq1nW z$}nEzAK2L?trA(;u>Cry-QSUPwe@`nAKbL85%0oTc~&u)`dlL_XnC%r>#Vw^0w7XQ^ z8Or)63`-hmI}f+lTISa%v-wH8ZBNt6CeGam6AS|28XfC1>_Uk3*d4Yb_)1Z zkVNA(&gy68Zelry*&|4%F^qV$GkkSR zEbj!_9dCgkPYn2Gz)3AZwy+Q12k2~35PvBZ$D3~qWJS9$o<&B=jU$8>KKr&i`U9~$ z_@aU%F~@loumRk2=EU9(ujAnf%2SSODnN%mi*OIhjnUu21}I04q;OV}2j}G^Ohn(9 z10IBZPSU4<^+V{DlS~l5fru-`{!zi4e1iFU0v7+AA+!|FLD{u{@NoSN!tzFX ziS7a==L~A@*9RkZbBeePtkOM5@0_88C+c64=S;$rbT861XE@i6$@=~Xz{Qj~Mek0} zj9~qruIn`AEW$Oqo!%&+H|FX5rEg9t6RlC7O7D#%yhOi_ZWu*5%{n#7DI@=K{UNNO zIipEmqnFqKk0HEHUyJXYv0RKd=-7NPIbF)4LA(d0fakuDqVmFp^b`yN~xPC9~sv`YaJ&ig~q=sAdTF&?s z!aMW}2u~%vQ~w1am@|#=E`1aAIfw8bJqr1fGo5fy_fY1!gb(Q3Df0rpnSEG)p88Z% z&!hTfs8=~P)c?3%2hN;Y!Y2wZO$R(n9&1?&XEUzqwtEpXmcoe~Z8lTiWhvx~c{y`d zz=T9gA^)X;oVl$)N-TwwP~LOqQP>nq;UyepK9Q-G!g3COA(3g8!ffihfXF$P!tp2s zIScvf;B-sjn`~M1Gcu>fQs_jz%~?$KYpjLoX+Ro?%(fOjgW{aCgnOrX*24R!TN9B+ zYa#zpgq&u+bhO-Bcy=<7Wt_7W)-xJ<0a;#x_>Qo|F1Mbsf{t3Da3}D8Vk?t#iNd=B z_c72`Dm(_lj?Fwz?n@!J zmf6(Zj=Ep7({M)Mb>MQFmI z_5fVmHQ0)Jmd26fz5#RTxmdxq9DRj?52L<&Rw}qB>8lmIgGyYc;HPLwi-Lzz=6VI+ ziK+5zF!>RAo~smmUSGghD;Vtf#gxFJ-zQK;d>V_N!cnm&5v87uaiqKHWY2Y~<1r5O zTLoW%)XOn_GROSu^`zYs51;2-|^xUoB3sC|*_bRxV zPIyqkJCgxF8&?Qb+*Q=)IR)QOC%hoA7;;~+X-J7?yAiNEnaaErN4k3`!oc%q5h%=m z4>6z6Y_E_(Ly`6Djw9V|r`tbLu(dnjkK_1mLUbKmXCEQcd6awx?kPQ=#F6BlM6U&U z@_~hW2Q9o>!F<~4X;biYFW_qgmfv)V1=qh}96}bW1l>v2;@xa{t`Q?D)Q2~qNus%;9}zRg6NO()6yFw7qip-ahlld>aKAEv|gs?P@U-HeDC5T%opZ~;n7ZU%31 z60#7Mxta82!dF<@bNdK&KXwJVeFdz=Sh?8(PAdf1?;A+4J9sCbP>u0&b65is?!;n~ zJ3zqAz;pAumy%5gUm_xM^96hh!InEvz}q!|gGKN*EJ3+LxGzt*6JNOn0(L{JM8e&e;@r_(XA`0k z_PPEY2(E-1QTKAk^R@Ye00JSmLcnsmr;=qmA(wK`7SKvhUBJ~m;avnmt}NyW3*m=c zS<4fgNTJ+WJg-Pdz{KV*79C=dytzyHmSMt;DF81K9oDnkN&$z^?W?&MCtQI!&%KmO ze!^!+f!xa`jieJ_hTjvs*!1MCk+vx)MY-#^`X-E^3$EaHCSfRDd!>Li)bA>>#X}ct zyjA4z;3?rOEQ7hfc}NI6jY{~69>1P9_X#6Y0p7!ePOw8{?!5v&P3PYy;63boKTn7f z_EVoN0#4$TJRl=ag_zuj^ifosi*JGl!g3!GLwC?A&oc!R8sYKWm-y4w1PcRatAO`# z3bu&@?@9;wvWQ&Gf!-A`m?b3ciDRae;zIkY26e`78;wO7rs=IJ1;iOAsBovn^HBX94qnj)f)9eJ*EYo`SbB zJ{KxDn-S5VytkAg+-Rv7LyNe2xo>6)Hz{9rV`wxh_;L1Hs^B`#-7*FLf#vpM3rmH2 zIcwb|itZW!c(sCOvf{2$@G$y$t%5J56}Kojkr8>TvS>RK|275dgf}VJU<%wWV@0zd zMUU;+2)MKQqV0E7??Wt#_bK=T#?bu= zUdHjZDA>c$e?Ytjz9rFqOH_s~LKLK6*jH2KD@t8Y_`=@S-Kk&zX}5ZlG2#sn%Vb`&X5Q zxs1_2E34ydfL~MaIA+~nl;mXcys6?Nk1_XG6>}#TPj4ys6?*k=78VWnRIKm0Z>zpH zGfMuh`o6?*KTz;4TDQxxMKt7Q$NdFI{8r7yd{&k3@Q<}pf3CIedGy%#7M{Mj-(a@y zQ=Z&F5AV0|F@*a$dfMs z$&*`mKW;xP3hv9XtP1{#GahLj#=I(^x1$uyzhRPVx8{*PIR~&q!BglTT|FAU17$5Y zM!{!OXSafv(`t``pQk>F3U)Da4EdWSZk_t{mItuz#q>j}mFND^`_cDkxf$`Xn!A{h zk!JlKB=@__stoH&`Z0r1+egXm&i;L^yuWlmMIZU(tkgZ2m8`#<8oT*((cBy>A6~ep zQ}0{_*Q5c?Q}BBboI6m#FOX-jf)6vJ3YD(k(-&u0`BcIE7t)IqJdQdHRr;L8C?6*8 zMYvZ}{+Y_xcM>jE^mr(eJ3`T~=2&AC{1^o1j#cnT(krajjKEk1qpDKTU!w0OTPxuz zcQIr49C;bST}GMbDxO2EujebB3#r=-<&!DwTdUwJNS~$PD;d*u3VzZGc(#JyV#S)H z;4dh1u7cm_3HU+<8_dZC3cj8?sMk&0+c-yy6#WF_W3hs7Vzp{eu$L=OqrlPJ3>+SB z&b^L(ICWiO4T2PN z9+9{Y#{<4gUgvZFm67(e((*3$dPc!(Slynp@)dsfc+SG})^QUkZ7nGyId?Az#r<2_ z^OCavBKmHtf`5zwyiLJx`vAYJ;9KagR}`GZ_<2>q-w}Sz%KK8cmvOs8X*&!-n)??8 z$8*l!w9aGP&gBaHH|qz?*(uavr-Hv^-wzc00A+q?<*AUnm^cAM=uju#D{|A-M0ow9UMGw#?KU*7-RQQu>K-?bA;ICG$ zJ?`6BRgPKTXC_W&hT>;FuvDUwzdMq{oOJwc5Jq;o?N*T7moh5`*oGmf+!I-e^K7y! zO-I$p%jPe@5}M(Jyn(XmybS9?-Vgx`5DIzYSq&2|%mr8>;N_V1yz{w-Nyvx4@@C9{ z8xsm)PToubhxP(kE4MJ4(Kqi=p+>8ORoPGfXuXAbMr49nf)N({N$}60q1uLINubo8Ex)yE_6_Q4%fhp zpFq=}#*7Tir(?5e-I8u%9cd|d{j#z62*-GM4C;D%!Z?F zeFuONd1W_%zAFIY=L;nK1F2!_N9`k#ZJMn=!J)IEyyZOWMuaOr@+a1DwQQ=Hs%gXU zs2Gj%ngfVudXUzZYFV;|-4)_p9?rWJX{&gLhw(;CF>R{|=Usyxsp365j5j~TJ2;$| zyGzA8D~xwWi1(OD6rY9ua;P>k6d&}%h7j)=;d4=fx~1fX!i2m}hIl8Ro;MUN|lK!>T$}&l}xjH0G z*KOTQL>v97>5Q2Wq>cFvlH4-P8ZuP=K@ZR^n?63r%-&&=P^%HWDtm{k>}84$mu&qQ zO_I#R)pi?e=U7Q*)m%+nvRJk62R!EpTR zJ(g1I%8BqK7{_jQLAQ~zgePEEH#Q0ZWhoQ98hFVb^qVma{hAj++E{rDgdNNNY0l() z@$(eRAdI>YjO7^BcISR{)5g8nfI+c<@Z*9}wmTmH$N1Ml<}FbLX%pTB_9L*$r%cYJ z^rLpR6PM>qQVAF>71qz#I|cMJvC@_Cz>}Y~qQO+_rGQ87Fx6@U@i^EeLJ#H%BbsAO zfw!PJ{v2tB<|9i?^1UDrQe^98=sS^(Tg=Aaqj8)xPDP_uw%4Tp33Q3H9{Fk*iJSxG zm=ZZ13TUOFp-_e8a~~v*J;w?ACR@4Vxd^6dRaVHHXqp0$kx_QU9Pck`JlHG7^)p9B z>>V5o&J=4XAwN?iAoix5YsOxRD&`nN#h$k__Pi2%{3DMNdtM2qJgh}3_Ed8{afv5{z?vIs%Tdl_{}R`uBJ>xX;vK6Wb+*`brFyap%oXSp1Cqn@Qv3J&z72PhQzz z(;=sEILdryO+wyw<^7}P2v{}clL^Nt?-z*o`3D@8_b)U#$!76d%g!0}WnOeOFYlTRVe?X= zp~B1sjU8cHT5%3N-ShH5TD6Vu2tqFKu>HU~W2T&~4#!LrK|S}f%sEP@=% zrq^bgbGb|A@>NJzbGcg%j)t>-?^eIw!xA8Kxm%948i1;~RL%Dim$_8!@hAl)kHdgf z7(wdurxw=d--14Z{~8$nQ0mpd)!gn8_!IUyfIf#2VX8KNDZk!hr?R{xiNEmND)FLd zcgFx@f1ow{GbWrBz;LvPWJ7LF-JU2au6%CejLxb{B#6Vb-p4<6!P6(^%;5G z3oJ*m%pDMJo+@l(F?zH|*l@k-1eOlZ<72 zhd_4@2`fGAJAZVLn1TQ1u6WOA>M%$6`5~IWG+BMM({)q{GBr^YMB8wkvUtKBr<23WQojsO++H| zClmRPkvYN~hLQQ2lC0Z0wh@)9&F0yR%uh}gdQxO|-Y@){$gF{@^K0O0iOhE-GM|L2 zRb;+rMxut9vOH@k<9kp1bVO#@TKITAcs5!>H!<=Lw1L&K>D)RqGB-+O?t*j`nb&nj z=5-R8bv?|;yiOvsI1YNr{#P~MLR=zKwflNvhPJ|hv1$0$EZwjlQH_K>0 zp-rugw^+C~p6P}R7dA8g+ECPPlBlJSvaiiMvhb)a0rM0LI1&F2q-MEKe(G#P)hl@% z4I3auMeY3(wKqY0rQGAg6)I}&sq`T3{4s--F(x9BXP5{h?>Pu!2s85dZzAx+$g3Q0 zBHWaY+-4#S!@bf&!f=mCmN49JA`RdfX?R7Fwh~ARj6mI^?po#7W`hLlv^2$a`e0o( zP_@Ew2VnB$5To`7kBZ~=z~r*Srnu1lU=_NIe9H7DL;FrOcz9^%ntiT>Zk6wui0l*c zPu1t7IPbiN{x@-6f*n{Q0#U{J;}Yiy-08`V+i7aH5y51+&N6biIUwVFJbKCU&{2ge zOU>r%ps6;d8l~1!VF}&o%fBQDx@A+hd1l~ONZ?muI2HJnoq=B|f&U?zq$F2L;IGA& zQw6?i{)D&$zG`2D8-kL@VbM)<&A^`|fuDiB*KpZ5OqRfZ7C3)Ts$p+-(?m_X1`Ewt z{t(?VRWx{-xZLA{13F<6xqBFAk|jC#2Y>jHg%S4k|g`%TipD97{}v|8sJ{W+Eh6@PV#g!y+qQ7sOp<*%j2it}oOpx+=I2*S)$td?3rpU0roWbiKGL z-tYI+Ilo``ue+DK_jCWaopjgZS9R*tsdG-9I#pA@;Zy3nytxEx{gHrV`G92GcriIY zM91V5Gck()8=;CxepH5I5Kyl;WqjpZIMfuZ0umV15} z>CI1rbt`B=jK~W`WBn5OZmPbhZmPamwAEfH<;`nhDgP7ns9Wk>BJ9pe+a@k@NY`th z>rwb8S<^o215w)iH9R;E51c4oE~0odzz^?zm4o86&+8SYh{G{Wh&a4O6BLKN07UIm z!PI=e=8HIdNfROt8!mQ`DGqOv8lruYnl0i`)`V!Edo)3D|CFoXv=9FnlpoPPpV7oi zYM<^doSQv}E{kz}r5M*=CPk0o!I~S47F&cC>tG`c4=89yi_a@MB34gog2weh)MfYS zCL3FD`~AA?ySHxH_j4^Sbo`|zgpT}MQ+`OtyA=@Wc&_G?j$8Pbv;2^BpO->HIvzLT zM@V;pA}d7s6HT-x%7I>250Ed>5u!Rg@1TlIs1EsOy8Qe(8s7H1QJ@Vv;KPA9x77h) z_%6?TJDPFwyj|q^2+c8(=MSk&-n$s0cV2AE+qFT;^TVhm@*El+zpszQ=-6{7XYm(p z*W!ej;0+1BBac6r;qJ|g+$s7v8gl~dg#zq}0QYyR0DB_9??ciFuzUO)rp4rN&mV;H z*?c{G44cq^2=D?C;MZe<8OwU{z1Ml58xot3qtKl>lh`F9u`IQ1%Oxm+Po2c>`~V7y zla8}ig{@G16tBKj)!@|hM&)n ziTHjaejY($5pX8U9sw4Asrdn~d_5RRtmeZ#p}JuO%Nev~4ycy`L^rB0mr=c$)1r*3 z4atd1F+lLB|DCqSQI!!5mrQ%!*Nrld+cwq5f<>+l|z?td`{A8<~^=l&9-4rEcy9`ZoafcqduzJKQo|i0Nm%0Mf?3 z%jA_ziiP-(Y^%oPO_+FN|HR}6nG}2RS^BBIie&%SSK|Rb8h9Tq04dov9k>={P6v~3 zd0HQS9b@rsJP*`|jL5(1)2HwhPh!0wQ%3@$(vK4Y^67Sgw}`m^7>StNq&5uL!wa>H zEEG=H#J@OD&Qor#Df;fcEhF06FHqz>z(ZrPwd(M{x$fDOk!SbmGji{^KI`+g{e4|F zL4j8N-HJs*(S8Tfmi6^7>G*jA<^CEv`kzwXc#gdCn9pE2<#l|KC*r()-@@X!#4UforA2r=*1Uy3;R1k++jq;@5ow zh;*FAW5023m`Rnh$Zb0}AW4zzIOiv9`&x;gD{*h)d|=9N-BWEzkL@in>Yn1^4oX%;)%C{H~H-w?3m!T8^3*%9TT4b`T6bp{?dsnyTQNs_8ne2 z@r`rwH|O~FJ+Nqkb`!sS%a=`Xmx$lKt|b#w%RP_ZzAar7-vep*?fdbP30i9W_MP4} zaVoq3{Pvw1n^?IX7s=z>_x;5a8-Y8&efPx=+>gZ&zrC9d99f4KFyh;L#l&X-jo-d^ zbWQL|b$neb2H+xu$&EAP#z4XAX zSeWtK+dJ`EP=w#U_boZ_QBaNF-Zc~7f&IvD-`z_leh*B@Z{N$7ORfH!c)EY^55yYqKo;RC!i!$ zDFdbxD`Q<BJw@v@-g1{7Kniw&-1e%HBxxdu5)SH|MY!}7~cYe?d6u)~H!1fF?##}N=3TnQ`|vhlO;11b!(zA=es#?wtd7%f-$K`jJ@C8%M7@(@cWybO7lpR>pet-Wg7=QP#(?+Et{6cM zDn24_SDl51_5g`}UHgS}_*>at>E#engIRQ$riWdVY;Sj6B^kkyvrtH(fV8g-d(2Mm zQS`bZ=;0lI#vUZ=Scn&sxRp<-jCzjBsy7dF!^UD+SP$28Iv!`y(g zfuec{u^V-+3+ph0HsHrMxCvNabqj%$m6k>;3hYtU=3v!6S6eqL^u` z**wcHz_PoVPG_bN$DmiT)0Irs6-GYZ+^c0W)f@69&9^w~W~Z}-siHo}P8X6nSD{wO zqP~kyXR5`L0V<{rCe!J%) z>Wq6{B$mj*o77ySGV8)=4fE43oz(P6 zCiMvcBB9{()BbEVISFo%YSZb-{OSUJkOav}iiiZ9i54L5G?47FMo{T?eW?J@k4l( zNBoROQSHf_5_q9!{Cs!Yv_G>}s5BNL4 zpWXbq8b2NJ`~wm!OH|{BpO4o_&TA4^J&q?2-CRX;Ulx=ex|toY_(q8Xjd!6g8h$ir zSO%suzW7l#kl4lF{rq`^KcxMFTk#X?WTSEZEbd4VxuqRftmxc75#USg9X)@~4mhMn;)hOy4?;a4ekN6e9I z`-;v)jYR28kd$DA3m9zYPal8y5GQZeviO3|zvAyF`7^|yO`Qq0368lxQL#4uQwH%}OgkzMT zc!M961j3K(nd8TQX6&W(0bY+oeQ+i8!LGf#5^Io(#WNiju{#0r*vyjnk_4qvrI`i#K; zlC=A2jX#>W^$t|(0C%(BkPQkaC`cwjYHdU6WS2T_T>0z~c2KqJt%-Bd;-AGf?*HJX z{cjXK8&5f&BfG?&lb^T6kHr&H=O?yrj-UEa{D#Nkr}pemtcm{H^bfWD_Kh#z7(dhl zwmrLJAxzbMqkdrX(I6?7yj9KMuz-C(a#st*{OLZV5n77 zGZ|QAvwkHxoAD-d2Wx&Ymu3P7h*1RAVX;=l&2ostmY9Oo35ZE1GXPr2+{kFQ;M1J( zx9%Pq>K_~MbH!9LC+*=RVa118mpTZ0kq8!w-oZ=;CXDC%Ft^sapw|U`F1XYMmwDC6 zoS%fvm-GvnxvIBkU~Ig92(R1BRe(%p)=TAzl?=e32+=_2q~+}4j9<=7dAZCS+OADa zd3b9d`cTLm@@YH)JdD@WOfKyMLh7Jj4SS9^N)Gwcx#HwZu?U=Nla8u>s#pUx0SE8X z92wX%guV`s4eT4E8C;l7=DiUB_EY6z@*s?^%xtQdFY(?HKoc5F<%$>^q*BFP5msK+ ztIYZ}W*{u(lBvuL2oJI#hg8NWW!N0v{3w+iG-k{SS$HWaC|b>?1Kg#dpq&b=;EYh- zFC=l9@LX!v$52+XfGgw71%c-i?ZMsNOh$NwZRL`cs$V&jtjzcad6tE>)BYsMNZiU8 z^0_Q1jYUVr&t;~nFjawaxl;A2Gi8#EoRR`jIcWZ5Iax@}uquiPCWsCewq&dMWC7Oy-H;)7gQ;`L`FwIZoAUCtTortY8x0*H&@J}9AyxIZ?jG5> z)2pP)nPeV_xyODAJOz3b^ZrccpqI{6N=b+lal%rF94bUWZ-=%3-C08R{L%5jZN7(P z5yU7%-V$O?<&x7CkGNrpfCUY~U@hcEZ4Mm~S{^Ev(_RfyeQ6&k1Mc#B<+qQW#yZsT zDB_2b<$_-TpAYW#w+{{tfWc}NPec^3D!3%3L2qmy7~8rNLs47rbA7hK!}YhmQZ9f7 zNy}%wQl4+A9`Z-SE`eT2EZ3NeYa&Z|s1@>YB@6w4epmT`oq+&WW+19{gb4@2p9UlQ z&>9eUpx~5Px>&=yhU`@;0~*LdiJmH!^I$4yl+p33Kh!@88Jw*7X?6=u$++s02m=MA z>NOloW~-TUMTCbEfD)ydWF;e91cgv5%Zs=PXpZQYi_jSbEQhDbixf>6Zr_Ixfh{o* zsbZl@^#n+@LM1tcQJW#BiUOSk&m83P%%?7yhCIz+4J#nnaxx7rb}~Dcovn#d^(z^t z&q`2~LhV|CYDzQ`Dgj%tM+S#)z>26$*2&CeQcR|j=q@oy7s&)dyF930nZZxFS`$)% zQsj6HMaa@V)jAm;Rcm<)oe+QuV6s@OhO-RxRuxLDG!O0?7#Q$b1MHH@Ws(ISRa;EN7?DZ_!B5R)kTfS~)2QJEy>V zQ1&h%d<~qz+$gRPFmcuLlbNz=VSjXN_nra45-O6+3Z?{0lSA=B!l6M3L^)Hb<w0F_TQ26qh07Rm_c5KtL@)iUdTbP;t0O(FK*fRG;9^%nGN(J(*-~D>%QB^rw>f zY;GPJsG^=V3~Ca13FwWl^Fb2 znCmm(nrW&o=nSfeTAqs2ap)Y`#q=B}W(S&gkO5gCIQvgI^dUsJQeCVB&Yz?H)>*t7 zTL}oA3o{NXE?X$osvcgr>J!M;q20p+{z(6x{#~P_I`gAUrFK0)Yaz-bnSmW~P|WteMVM;p7Ej=T~EV z)?k=(^0RtfPv82UzBN$&YXTd*abk6X=}%=ip;Jg;zd^&)e7r=OSU4L|Vy1SS7YrXCjbf&zS?2gl%uURhc@?W-No+iDCg&QAKhAEU63jRFXZ@*KA?3!I zWAC(@O#6nNPUX;rlbKw_E6)j+VL)=CLxzimpW`+hcN%by` z|B;>jqXS$5jE?QuyLF5nXEBIn769uw69exJ?;n@;s%5xnJro`q7-j}|J(&}8F~hk# zTcz5iKA4vo8)FR{NVyYpD$H7%a+By%t%Ly9itocIPpjOoCZ~fXfHV3_NOM^;ot-@d zYeRcX<0DfR{pRK8!6?j!)d~w|UX+rpdZ17+JM9~V1?Zs*ThRq_5Gf+F76~{5`c`M) zdoLeUjpDHPp*BcxF?LZfuvIt%P?r?At|5e3pD#Y3OT9pqlA43gr7t@RDc+em$5FpDGhQ>o#KWpoaWM*$=WoHJTX8@ zU`H&NY&=9av0+)h$e^N)ZCfw_2wCMh_^Q>~0Kx+f$U^3XsC5cDDY~#ygPP*Nz-D$z zNY;PU^jK_(u!+H5#}a6}kQCgU1ue^b$RE(>rUd&xlbK6n!G-xI3yU1rIzAQM7O6v4`tzwj7v;UJc>KeBstaGy^L2V;R5!5iz} zvm@(cU0s0zK2;J*VPz+a^KDyzLFk5{*&Ix^bA9V%2_jPN6lSh?hg(#Ctgi!heFi&tlw9fot%eeKy@>N0R#pG+zaSRosC81=mb(q z;~~vL$bgI>+E(jde zvg*1&1j~ILbc3oTFsoQg=nqUmj#=61QWOd3pK+GgA^Nu9SS6Ym9tUsN4o8|&jgAf2 zQkbA+kwL9QIu+B-*mtsrPM1CCNh)LN^=#qL48|M<-NFl_NAS+ZuAj3j$+R+q)m=9nNN^u!(%sOFDz9!WMr{T&5DPeTSq*Bs=-5)| zMq`RhWXgkdaBDyiduU+a=+6E<1Ka2~$25Y8Jqe?p-0P>QL@(Rm_)<(F3@$tlkT;8F^q1Xamj|wZfnlZVRJ$0G z%+JsgtickPf{Ue)0+*})Qej5V;i{Mown2o2#X!dstZ>*h*@z%vD3t2iV26sJ9Erev z66b1my+KwedmhYbj6G+5ABuH~I+zrJiA6IDer`${p|S-`#-tAxkLVRW+B9L14}%(e zE0hO%lw5~VjZ-VeFwjV1zN#GA-hr?*d@xRkBC}KmtevgSgF?!gT-Q0n0(fe#AhHF| zKPXFBv2VagL%W?t9&SXaxC=$7=G^!IRmeG{s)p_sD|EeZX^h^Xt4QI*OeTd*hFqEg zfM;|7D~(fglqSz@42f*lpp7t~XkRQcY23GtPG|GZ>rt;22B8(O9!SxLUCxMm%T2^m zh+U_474wusEsJ?wU=b4#4YDA!lk9}RbP=Bx7Ey=kl;#RkJo_9qCyUBXZsFv(O@_tU zG%&2QVkXf2>jW|+A)Ro}az#HO|9CF)>s;8x51b7z2kDfaL_?w=)PSpB0pfW+p9C9n zQDQFGgN5QDOd2$WP%m8QZX3{bE_zyWZb6|FOmDbdu|*{kL&tu#2(8etYL>dY_jB!s zk%X#)QIeqob>=wmP!EPPZe)(+&Kcap!q-l-rVff-jnZW3X|#jJCS{%|f?;8FfgZM* zM;$!8cW8)nFXV|v8!FP;Fi(D6-v)-aiMcMOBpo7if%U){iqgxKCR`~(N=mNVjG)O0 ze~P(9WdeYbVF6`N$KO~r7oB??e~$t@IQs5MMr4i>k5{^0IDyUhdB=><35L5PRafq=RGJrp|oQw%s6Iy z2?HUCWkfZZ;}oHs7MLP1Cc!M?XH)UQVh;m9r3*a>JZvO4-vWD>yRa$IR~dhhTU=Z; zjKg&+W!vqM%I*^N2{*JzhhpWB?6TAODyox0D*BRZM67jmov2$PlQ3!mrvU8&z}T6r z?BYJ#`=Wy#5io?DtmgnJ^!QL265h{8JYy|c2K zphqlNoA`sHySMtB_~1!&a_*)84q50AGR+H?lQDwNIWJybFaTWvR1Ov6BuG{gbC>v~ z#BnBiSS%|MKVqED;+O=_Wr(p1jJ@oXY?t$4u_BE)MAUdQB_eWEfIB~r+Gw4ADcS3n zy;=-GMRXsPD?zCq6D16%sn|O-e~MHzFfr+H1wT-MqWADZPtQ`FK`ErMP?~WbFX2V% zK|NgqxH8qbvlYf295E83TCSzw{L0K`at0ULbN~L)vHc?hk`tIqSU)-+FquTA>LI!V z>bOXzEwQ}a`dQRGum=iUDZ;;Pf`XB+Rr~=yanbF8MJ*dD$VU&+B8@$)uV4m;Wo5^f z9dM^q9DtNs12b63W7d!EF^9E9{kuBO?IvtIOVbB^UUb^cmx{#vP zkBzz>KPsK9=uxhrsW}{G*t+9>p^vRQ`U*nnHb-L!mQTFn_|#NGt@|2LbEgY3tQ4bPKZFsQqkmirpnFqf)4uW_M}j% z#04%^YjoS0`Rk0PQZkFFg@O;=(3h>-7!O^g)MZ$l+sPN2YBa#WJ^(EPTIcY?Y^MkA zz}c!Neb1#mYrFf__FlerUGMtt)%j|zkl7@A0@)Oj z+*{v-KX_Ta{<7}X)AE0JU-xQ$Y22j_uI3zy#aXe89L_Ye2n)s4P-fXwbv3q2k{C|Z zj234J9#dRBH8Qxhd-ZCNC7JK8R7$I14MQ|nbLci*M)t$D0w&6EEwX3tFpOjP$&$1Z z$j+px@UQSI<}uN8SsZSJ>4;N?vKmAooCM%T3F}b2-2iZYlY?_INeZ{%6o}ZSIzHIT z&tiv3PI__ti4$%1fE&}`DHx2H9O>4_hCXXk4Ep?Dl%~qWiLa6mZ1lVh=7|cIKsrCl zPF6UCGD*m^kj46u{6wCkXnWhAeObUwL?b zKpYrw5`c)n$LGF6E_rw!Mi$7dM=;oJ7@uzPMIsHCZhplL zrlNV;zcEoIKwM1<7Y)F@Hw5!>Kz49ZM~2Ww551zJ!0`s1-=1?aU@0$a`1O~e>!<|B zXo>3@M1>i$hiSA1Y=*TQpU?_)7DPpiE!zin1XYg&3c58k=NcZ(=J(Y&45W$tLV4J=~Ix+u3pRm-{ygP@HbxwA66MI{tsJy+y zyGQ)~z5BQb1i7&_md2W2mf5m+rUSBfJx5!03)fLts)}RJ?X|cQM63d}!Na*V|DxeUXK^McBMRu3n z?i6-ni43TlpXb&CSEC?EMK%`r&UHMbu>eK`5gklq1+%xajCdrTat8mS96Qs)7L)+` z%6LRtYzS^9I(Gxl%t{;SIhh++SjT3_Gf);Y9DS37Ia4qH`5awz}g?oapj1UJ9G|=qE>b zy|dd;TP3fGb1gUwtM;cX&Khj#Z39CCV*~Y5B}QLJ>rTGP85a&Zlo(FhiTLqsEK*q4 z;qW3zkWYd>LW; zCPf(<4`uC=#mN(ZqV>!9iOdW`6+@Pkl`KwK!KA30?V*084>Y-Hp&gomhfNH8s%~i7 ze6c!%!x@-veP=0PFrk&;=T=4{!MK&;w3wS|AdJq6qYn?h2;oNn&?DQu>)oJXbIq+F zsRDE^k-?zni35Os6masw{V|9)&0br@)5Bg`-Ks5(m^Jmf|rMELu_95nAvA)+WyuybpnokUxc@bWmW0OrEE zQiw&}xm%pw+A+41TW~5J&gEp2X8mbCF(=TVXkoO+WdNz~+>A)s9y@sgJ|V##r$OEB z8lQ8yS`GZwZtqBZA&uU3QDWkt0QRsj${DvX8^tk~kzM_Jt|n;lQ-b6mviQ%43g-#= z3!HT<0l5=q*h;x@)`w^s-7t32ZS#bb3{TST*czVBqa5%L4mbodainH2Hzn~m8d&@u z77Z{mw#SEGvThRWQ`aMxmGF&X8ftJ1tNJGQxCskdOe|-5KZq-(AB!+-vtU0FMmAiS z@Z+;v5EdRhz_C8MdqjU=Q6+yIf~R!lz^$8fCy$bH0$w&dY0AU$5G7uLV;-IWcz|k? zY5|9z*2+LsEmYA9efFvtE$Bl&Nzd^gJZ-~U^sEF+v=gP zVUZwWfS$pKZsbSzXB+4|PO9mqrEGdr4oeg=NE(z(o!Vnt#S)oPj9VWL5XdL6E5WW3 zMNQ8>mRleW=q*F&mYcL%&0PRXm<6y#cVfI2_h;}kqG8P2YtgYFYs{iYcr6h=3p~72 z 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 NGwK3~^Cyz@{tqYL4L$$> diff --git a/lib/5.26.2/x86_64-linux/auto/Opcode/Opcode.so b/lib/5.26.2/x86_64-linux/auto/Opcode/Opcode.so index d9fe0daafc9099ca2ef28eb63e707454a941b9ee..33f6498165704cff95aa96ad6a5580c4aeeb653a 100755 GIT binary patch delta 6920 zcmY*dd0>;pwx3CwHq9jY@-<77G^Nu5C1q>N4gyk8_D#Sicmrsm$Wlr{l(z5)DDv>B zfE}PL$|8%)V=uVftM?+fBB)#ipQ7TGdjZ7?_KI~WzTf%2D0zRJuXESLDj$*Erl7^_HEC+}{P zE;1Oi*wa!o)b+cA?QiijW*uf{%odGwVT`4u*k)ABXSO*QTXh%a+XimJ*kZR;s{W;e z^SQCzHVY!__g2R2LGNfR}ldtGXOX+g#r55~Q)K0RXSc08cIDGl*Qlx<4? zz{@~nTg9=-PT#Z*__#k+6Q`_b+l+nUH(Netn0Cz#hH>o$*s^F#gWx!KUxO$`yQH+K z|Iw~oho(Ii(nR017w~broS1ygn51voyEOTUT0Ql}Xto17T4az4#|hX-5jl3!F7^PD z$kkS34B%Wayp{R~(~|k#@iFEa9cB0^^IeYy(SsXi6|nu|n;;r;{oFF(ky`LD@xlOg$#>75D;{og0cO$KtZ z+-R!-L=W?AS39OhvyIiM++401a1xwTTcIvZ@7#YLMcAcJjZo~K18R@kF(0r!q6ebt z(H!JSP%O;^<1v_s_>xTMjv7d$n4~7n2(=iBSa^Jn3QY9~JWF!F-w1mS?-%H**3Rf} zdj4%Pa+4v?zMm0|8(8`O!B5LBAI#ixdj-4$J&R7luKFwB~jZLBg$p+xuxlRZ2wx|BLEak;PZ3p%q#2aWJ6OSd6qS(Y8Xhw$NgvZ7K5&z-HGBN9GxX z*s&JY`{}|yf=-v^*rq$3^*MknoWP*F48|^2lEm#i0f|RUK-KD+Aqk4HR5~7mk>WYp zqdR@qur4ZWFra�ZE~`tePtNM>kP~zjW)Aqp$;dT>o(E)C=J@NS^B}w?3bkPgLog z&RJt{V7o559Zs66My6et+(u)CXQ};jLIeJZs&QR*JN^rB!#hwtu5aBAN>2D~+S%ZC zt|w+Rvg!KHWSB1mP_EgI?6L4D^HJrjEQoIbYOT!fJB_~{?R7*%n`UxB?JQNuJ@zz$ zC7JIz>ZiGm;9=}`tN{L?KVtt8j3~j!Z*~I{{{mQlep=s-|S zCL*q?`E&F6LA7b_bj!~{Wt%rUwHoQO)~Kp^1KR%^CR62%G~8%%3ld?MPatsV@;p3o z$T`S{kn3<)IpvR;>cYHUSze&>wsM?9y)f}J)_Plu7opECUQ)g9&5!2;o42D*eZWK| zQsFJsDf1~}DxiD2>YKsXna8eOvW-I&^%$k*lHrVg0!uKae$bClIxpEOX#5kbVO&Gw zM}Z0B@lc~HbNnF{??z)RZB&!`7toAFpO7FQ(ZKj$G-fWv=LgY@;rYfn(0~5$0e50; z@CnO{06bU}K?|5Quryi(OlEnQdb$>lLqd+-CEV~h!Aun`H1)y!pry4}eKWuHs6s4& zh?28H`~@KeLts~n4W@()trrKV>P)L!MLSa+NuCkQ(8CGI{=jQ$@_pkfj2JZ}#i$`E zMh!_ZYDkJvLsEE_>KK$mB( zdS`*d#DJFo)l=B$4=~gqVWUC7P=|z#4go{C2pcT|hRQB%^avO#fUwadV2p#?Xc92g zC1ImWz)+in8A_0zAD6vqY?aT%kd}-A%nb}+ZeRd&0|S^F7{J`X0Oke;FgGxOxq$)9 zWiJkEmUplErm9W53v@u7=dNMo8NIi(e{vVy6)cZIWY;e8G&+sKLBHx#-FhU)@upo) zEV0`k$AO+V9$jtMuJAN^G=+Q8imTjZFzbo=p1Y|1QHhV?(9N}L*UV>6c#PU#-HMM< z9~s}DtHZon`D;33W=KsdK1@~Abaq!lL$FQa*k7ae)#MjsQQNmOrX+Km!?Cs`*ug$F zg!A!JoU*}=E;`hiSgEepWb>sevM^uM>2w%i-Vw~YRNb~P2WI9jY@Kxo2Yqn2b`EC} z6LjSU_h`W^pcS?1z`_upqK+@@%=@X|7KYr7=%3&*Z5qU*#Q~MSsFiypGV2LG<#`$V z#X2>9k>pR+S1)>&^Ve0&#kuaMAosU)?lEqvXVjR*d9He(^XH_0geiTeTDrIc->&v8 z&IO(iFn(M8w%E_#QvP^u%UL){@$4Z~dNWQwj42s7>@j)?Zzg@2nh>Xi0-vUTus7miBH@(1_7zWkev2NOK7x$86 zoFVauw~$)z?Jn~PpRTJ>OFFd-LXY=OH@(vEn1e6gKN$=9A;DdtyG?74+Oec z04bAV5Z##zjXNL9?{R?c&L<9YNF>zTMegR zMt=ab&_Z)O9Mu@w#p%~ww3O!e81s=rvNfC=ngTqQj-a*CLDY zjz>p&IfZrx7QLd@71@e+6FJP-()&o_#l!%W*K8*$w(uR4byn?YyQX9Hudt_LX z=b*) z4n$-v=CkDwD*j+N{uO*@@+Y)8mviv7$Vo6}m1!vd6gdxOY_bY9nJW9@iIXNjgdV$0 z!%VsygY^!1C#(zkH>`BZTYz-}Izr?E;PJ@o80+#sVLd~ZQ>JARwE1Ld9Fgi%*CfmtJ;BkA|4c>Q< zDJYDNvI1pLD6JS5$=Mhe%VTKEPI5UEb(Tjl?jj$;xU1yQ&`lnK((aOB+(Xu5+*7th zG4ztB5T~2uR%q@mx8U1H9>T7^GD~L#>}Gik==w=F@RrCb#+WL^6w^7eO)QPWDmmZSQfzZP5u?p(B!h0+K7b%4HctT zCscGXRZM{Qqd-uxadiV0Jp6cJBFhLB)5WIF=MaTB@!- z9wRfOY6tQKYF#b)_;zhVmuBjUBi{=^rY=m9t}KMe3o0&xm2f9i#7b4Ho+n+GR5i3r zS(AXwOf7@3sf4IX?O9Vm>posXuI*c!Sa-={M3jEP9RXq8PiwRJP?foEEv??W?hZat zrPdL`o^^>mhs`~2BJfA3EUMIlbtUZ{q%{AX8~+bjfEJ_wIh0I6D_B3|&Je0`GbT2I zfcd*Rf540Wuzt$@c8KVI8>eagNfln7%}=Tx>o4M>&fVb4IZ0Jn~lI=B)(S`TpJ zznsPU(X+qyf)=m$;1i#5^7o4;{~Ky%ZccbwYI^!sE@N+i;OU{wy`k{x=AMC4xNcp= zJ(CdLqj@MUP{}aWZ%ekt>#d)>CC^a!;MQV3NFClv=q_$eq_~@@Hjoc@KxT?DNh$s- zCSC#+GgM@+5=cwc=xsheO_gmM7cio+fNKwt`HDgik@!_}6U_b`X5pw>_JesuSBoW>?(J#Wtw_q&;IFgOILYx4%old1uE! zzE|lx$(LJpCe;1PjRHDV$kV#(bc(v|>Arkw{pzPX zaXz^I=rf(I7MEK!{ZBD;w%wi3xxv&q4Y|IH@@=#yCQ0Y#m^ck8W*nEma6@P9?kL|< z|L5H!xXZ}$`7H8d$W-Ou+YON#zPCHyt(NW0Yip$AL^@^T$v)_P&}btMC(R0bKNayC z!Pv;%>ixZ|xKMZP%k~>b&yEPixMN@32%zC7Rqej~zD7&zxRqX4k0E&rK&HA~raJI! z^GK*O>^|$fAN+kKjLij&oUg9!tKt*Xoc(vTc#+y}4JTZD!YDvD+*lJd+^AIF?$4ZU zz^pU$vN6-BcjKJId=;&qM8zHV)5K6?@6vP{n`jQH4ZbM{>-e|oiGz8eo1xO$)i@l68d2$%J_)ba(JR%NgKc?( zvefq)^&VVFxrwiYD?^6hJj9sX8q&p_KZY?IKOJyWa*RdRFK&a>*p-NUx!U9pGQ@SrEfsZJ%$L*UG0dS(&VH|oyky1<6BDumBTLryD z5#jK~h9Z_jmFI;aJr^TLM3Ge~zSw@;Z$yy*_r~fGF`~#tgy9On6Gg6LS#MbAU0?gc z(DvztlP51ItSp;Xu0~zWu0Q+LWLJIpRnHwSR1fBFX7RkblBv8qUtL!{mEX+&QTG!4 W8DIAk{b6-I%kbyny6Q6C=KlbRc^$6+ delta 6960 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

3cACb8(eKMwi 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 PUYO9_O&7xRLA;(ggW5&1 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 delta 1303 zcmYjRZA?>V6u#%yy9&0#fP($9y&-@lV|54$!iJ(-79DicmBkGf215iQGR7EHC^`n? zV|?upuTn<4KtjyWvE7kEGBJEa5r1qmo60_+h9B&sf6xTx%yw=&S#NUkoO9miecp54 zd+v43awD@`*EZPxxyisr>>1Lx{@LYLc^j;^hm6b9z0nU+#az}{!B*--d*yEcDlDnW z1i;~{F?drfdM6)3?x`6@$%pLUz|bSxiQiQlL5ugRt&oog-(7|fOs=u8ziY9n#z{e} z?PV#bwP|1+1>3Xm9R6(UrG=W4KGyY<*{}z(S!f+Jh2o zuk%5jALi;_l#)7oF}tk6MtdR@;+S0rsrbF!BCW*MXA+2|_2~fD#G%v0z&=omq3
CBVNUB3HXh;`CP&U>5K89Rl?|s#u={lXQ~lGE084-#>!c{ZY`2NBb@8KU#G6CmEh5 zY7jp~FFKfiAxIjP(O_v*u92_g>oC}9W>++r=KL7+IPWw;2FhH~@C?Sek|7TBTzdIM zk}&bF;2Bqza*?KL7vDhFm%=aLkFGR$O^o_P$--HT87P1WY#uN}4~`8~fE7)HZ7?8? z4(4otQc-asMgfsx;^?S?E2FQZ4F8x+54%m;k{P!tBXZ(NJRWyXJs(y|^-897hUY91 zE~&9+YWL$7x^Ky}<7(?Lk%#fusaEbPsa?hL>9QwOv?iJHvrQ_iNNLH8o{izwLi(Xd zrjbLq)k#?=ax*R5934F;;!Jdgdr1bVvIz6B6UU3p#U)kdf|Bw#Ds2gcCyonOWDx7# vDu>u~Tma6!e;?Eu;FvI30J~sGSSx@GSQJtV2~q@`1b2jS3Fd{hLWuhp7$1#q diff --git a/lib/5.26.2/x86_64-linux/auto/PerlIO/mmap/mmap.so b/lib/5.26.2/x86_64-linux/auto/PerlIO/mmap/mmap.so index ba7e289ad6646a3e64a3e9b2a5aa9972218455d8..f05a0e2add97726363858c5f916e2954be1ecd39 100755 GIT binary patch delta 7833 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 U){!j(*uh5;OZ*#e&D+BN4<59?VgLXD delta 7848 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 DwMnSQ delta 6776 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 Ht`z@2ogb&( diff --git a/lib/5.26.2/x86_64-linux/auto/PerlIO/via/via.so b/lib/5.26.2/x86_64-linux/auto/PerlIO/via/via.so index 8d277f389366624f2726a47aeaa93e8ed38396da..6c2fe9698ac4e3a5d2a0f7f2d2b9e1630fe7c7fb 100755 GIT binary patch delta 8749 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 g)GJs&_Vw1^)1PBoPtuOV diff --git a/lib/5.26.2/x86_64-linux/auto/SDBM_File/SDBM_File.so b/lib/5.26.2/x86_64-linux/auto/SDBM_File/SDBM_File.so index 60922229d06873dff0ab6c6595a23a293f1590bf..3d1c2c7dcc4d93d0a3d6bc719fdd51f45e0e27ef 100755 GIT binary patch delta 8504 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Socket/Socket.so b/lib/5.26.2/x86_64-linux/auto/Socket/Socket.so index 570147ec691b7023654361d37b2ee1998c918d4f..c6e9186ae7d1d3aaed1402675b23b3af95676cd5 100755 GIT binary patch delta 2627 zcmYjSeN<)LN}av5g{&SqfIgAfWXFm4cCI?9tT{BPWWbYbv34mT-K3+&B00ckkS} zGq1PFy{E~2XC!1Ek1`8>d+l#VY9DMFG~DqTimv~rB5&~Bzgi1~W5+x{F%m*|c@W~E zXZq$$ILV5d2L(R^n`cc>*Bc1Yc)h`Dtcg&=j#^{G7wZWD+606MbZ`nGuJoB7|DN?B z#GP7v2@&aEm`h87u2dp~1Z(5aOj5Ml*=sFn>W!ETs1MuO5)A9v@s`G;pWlJ^B3nV0-CZMK(j$%=TG)5p~1s!rHWECA{jka(I zW>;*%UfZxJ@k>w1jSwk@J-5x%9>qdLvCn-8s>B5LTI+N{C9&$(D8B4%eHCKaz1CeY z$Ts}#F5F{9A(~22dsY6JpU5 z^$RIf|AUE%C)1cza6|5pp;287Tktkh9+RMh7jYpWZiP|51_kI;$FTJUqKacfGA8+80Go@6FJxBfl4uRB%vB*0( zpNgT#yW*5e?_gr&-$NMbw-da;Pk0*k*D%EL&bMhF*6@t)xkvPE27mUL5DQxbA zEudoU7s|7oDTfs)hZQM@6)A@mDTfs)hgB0P+1h{1pFkT?pp7WdMigix3bYXg+Q=l@ z_mgN21)4*F=1`zH6le|wnqv~J?&6QNjVaK^6lh}#v@r$Rm;!BV5>0a{1^U=eFBxY! z4@LlIaES9{P~b-s;yfA@_}PRw&jtnFsgP;x<4frne|s`st&B(EMLY^G;!*f9KKk-+ z;1kw-xmxg**wibbeEHeLQZ=#czLL$A_A8;VhGyU@^v@o&%C6HK7f7JA^ zajw*Kizk1g_uy6Vpe1;XG&B;QeNWnp4-ln?koTe&+5Y~$5Y18t`14maV90965%!@+ zurt2&IzIb;bRG`4KQ&>Lp03AxWT0*6Bhg0mG16=3GleGe3q+@&PXH~%76&5o)q&9I z2k^Rw(IfbFhtonzNCb_b2`f=XMr223d0?ov2_yOOtR5j|EusD&uK6Rt<_R^y|*G@Fnm zNQoBPJuSQnuv?xcIx`;&;;GGml2}isx8R~#VR-#En z*elm$sK;r_wQ8Mw1?NAPQ!H5iCb`f82KZcl*8)p@T<`(s6t>LWH&2hFrYpj%#zJK+@e)F*!* zRnVmO7ldH62BiGN{EKK0V_eK^{j!n0`J9LzLFUK<8;RW=N>$;ZPWMiq{k z!ex6HSX6do?KT=E8xFi wd!-5%{Lc2_GguV}Z_1DLLK3W#qYT1)u*<*X%iD4zUn=DxzI-c3Ny60s0}-mME&u=k delta 2643 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 Gy8jQz|HD-P delta 12533 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 O@&@72N|X(<=KeoHVd_8t diff --git a/lib/5.26.2/x86_64-linux/auto/Sys/Hostname/Hostname.so b/lib/5.26.2/x86_64-linux/auto/Sys/Hostname/Hostname.so index f1147b55f98ddf7ca47865ac84cbd299ec24abfe..fcd3f5053045383914a1075e98b464b52c2acb27 100755 GIT binary patch delta 4159 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 delta 4162 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 delta 6184 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 J*Q|2k{{uiMRPO)) diff --git a/lib/5.26.2/x86_64-linux/auto/Tie/Hash/NamedCapture/NamedCapture.so b/lib/5.26.2/x86_64-linux/auto/Tie/Hash/NamedCapture/NamedCapture.so index 2586e442cf50012ef9b60740f6db5df6a1f2b458..1f83c270123694116458dd4ca63f61781d68caa5 100755 GIT binary patch delta 6779 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 delta 6793 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 diff --git a/lib/5.26.2/x86_64-linux/auto/Time/HiRes/HiRes.so b/lib/5.26.2/x86_64-linux/auto/Time/HiRes/HiRes.so index d720af3bb25e60fe888181dded779a8f8ed04a42..a105933e753a1c3c75697ef4d3dd1147a6cf5192 100755 GIT binary patch delta 9040 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

AEvJtPk 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 VsQ6F$I#k^B7+%H2(~hx>{{zGm6psJ^ diff --git a/lib/5.26.2/x86_64-linux/auto/Time/Piece/Piece.so b/lib/5.26.2/x86_64-linux/auto/Time/Piece/Piece.so index ed13e024ccf494a8cfa8641b866928c1f22d15bf..858961b84da9dfc81b2ce60f14cc4533f4c085f8 100755 GIT binary patch delta 4625 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

ZXh@TBZl0#(=J|dI5__xc1 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 Ck;8ES delta 7705 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 Tl$Ktjo{)bMnjx$F>G}T;diltj diff --git a/lib/5.26.2/x86_64-linux/auto/Unicode/Normalize/Normalize.so b/lib/5.26.2/x86_64-linux/auto/Unicode/Normalize/Normalize.so index 3f086446b7b3431fb622523d6ff071366a2a7d6d..7a07f8326ebf594e563e9a081c03c23b4cef4113 100755 GIT binary patch delta 22017 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 WjJIK8IK8zOPtw~aaj>z`=>Gu;_ZMdX diff --git a/lib/5.26.2/x86_64-linux/auto/arybase/arybase.so b/lib/5.26.2/x86_64-linux/auto/arybase/arybase.so index 20130554b0221f9bbb00292df7436a783beb7b18..3c244d3c6cbdfdf282005e4171bd260e33e48a7e 100755 GIT binary patch delta 8516 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 delta 8513 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 diff --git a/lib/5.26.2/x86_64-linux/auto/attributes/attributes.so b/lib/5.26.2/x86_64-linux/auto/attributes/attributes.so index cf31239a8321638d3b1e558332db8cb17076b8a2..804824d1dadf163efadeb11efd2edfab094de23e 100755 GIT binary patch delta 6325 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 B`_%vd delta 6336 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 e34ZA%UN$YEo>ZToqMyY)Vmf}Jd57r6<5Hk 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∋-W(&tEjCfKZ(xi#dpGp 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 diff --git a/lib/5.26.2/x86_64-linux/auto/threads/shared/shared.so b/lib/5.26.2/x86_64-linux/auto/threads/shared/shared.so index c01019c9ebc9b1b2ea0ea9e697d3540eca3ce557..0cdb6dd2f38c7196f03e3192fed723a16d862b58 100755 GIT binary patch delta 3016 zcmYjTeQ;FO6@T|7Z};8ZeQ)1plihv08xj+eEFY4@e1DUK1O$Ro#M zI@kz0t-!RP$BOb{g@F-TK%KN&XK1aCXqk3w$8juwv=kVqfRYhnOO&kiciwJbGn4o3 z@1AqdJ-^>Q_q=`ijCkRU*pU#C*QXVzx$d?L3l<;#{F~m`pE`F{S#KPl*S>D#d+O|2 z>TEB)RACQq@hFO_y3cv>%65N03oqThl3&8L4YsV^5|7gGoeKMDmvx|N*?1)4)tJi8 z)*kK~P_p*3>-10)d+FL|E=AGwtc|?%o!Dkfy7awl60T?A=;m?OPhic~*9NyS7^c=r z+un;QS0s2Z&&HbRTV{kjC|!y%?q<)uB1bE?Fnt=rN?1(>HPG)kB4!RmQ@`WZVFdFrT)!L zd#e*-0li;6-S`#)sM*;AP$c*yC99{#FJZm!FWS?7gp^5+kOI2=hnrez5@IH;t|6E)EH0Aof?^sJE5Y~ZYE4u<>n5XidZHVvjf>hAtXAY% zXa>-MMY`OVvM}(;VOmjJl5)PTd2??$U(a+-0d_tz={%v)ZRd$h=M-S)uWCz%oiwg# zPX=#AzLx2n0&s@p#+WAHW+}lF(8{~SlXnVL5b8$m5knJt0c10scrKwW&p|-b;RWOn zGaX`S*Q~oKH&UE13jSAWd*o8-kmqgdgq)B}M3u zaD0c75L#*8ElNNcl+q|oNfp|QkRCEUiq*s3WuDNFG0@MW^eg;f{R;p&9SZs*zCN&2 z%Y^UXov4(?KY1FEL35Zc>u0>FzP7S;Tgv~mUp?8%h6afeQK6tLl zG4y`|@LsPrMryWW{~S{rz_qaC6YvJ;jxmM%;g#dpHaisNg95-BSQ65piN-21gDRSA z(NFW6YB;@3O`Oo4rq~Q8q29@aHb4nurE0FnIVQ}b8c@ILz6hBs%%ya$sZRWmqRn;w zO-RHTQk}{fG^5np92bk|@n+lH0ZM+KuM&r$$PgW9t}>T{i9g^Qz*IsG(S_z3v6Esg zrRE73yywgS*Pp$M?rE`Wz5^cK3ub_uhaF<=|6>ODEbJy0=TkHA4Fi+iE}EW7c6*cd zwv@(B@YLs~XEWPhKo;IBrso%I|AbDrM8y>Ps%4H<%mi2Kxxp}0GryM9(;D@kLLQM| zT))Fa&S!LbthFchGBivCXXsmb?j!6SoavmgBHQV7s~!Ih)&$G_`*7(Z@=fd=tnhG6 z7b?Lh1>33;-$sC7k2V#DV9B{C5&(9H$N~0Ffw+8#`r2%BI5ow!nUF;zzig`%qJch` zU0gEAC2~n)2`v2cxPy;>D-*e-E#h$*`P;+xWn_dI?i|)fxE~n*0P(DRYHJVI983B0 z!7BRy(3Jli+GVjXY71Rxx5}lX$Zl8wx^UvU+)mrtZQ-GV?YmV zH0}Y`Wl4YU4B7cyY`*F-SAJ>}gId zq3?1r*<~yW0IOm$=G+mkWfnK1!w#{`&+ zDY_%|PE5?*jtP*8$#o0h9CH3iB&Qo^g`4}QJ?5ds-4XNO>~dZhOE}3!+R&X)Kl9MO z?nd(rUx};2;O~T8N0++m#ab$wyDISvFX>a|78ELe=2U{KOJ9R_r+i1cbf><99j;2cIkz^Ji+w^(ss1o!Ro_EOsM!I!JVp1; z>lRtGbKWK~mF&A)E3P7%720oI$K{d7P<5dLKJICXoR6eJ2TeBUNarx-vOe^T{Os=i zqT)mB8q5puTwx@5hk6=)M|yd(D3`~IT*ED-*mvIf70^dZ7Zizuv~j`X#TJso*MK{! zbsx6CnA<$c45K65o}Q)n!cODkl;0nqm1WV|g@wj(%mm6@&Yk!*y|{3@{d<&WxL9ys zDO!)~9WHam#Sc<@&yr|8sEK;r%jU%Tb+^W4)pV@qY1af6Pv|4fi+=7M$y&BBTb8d_ zv7vn3sz=w-zm}Gc+;hL7jx6nc#T1uF^w)_$QbT{6sHY)3d+DwIHhFC|(#BsQz0+6l Ef8nGeGynhq delta 3019 zcmYjTX>3&26@K^GZ~X2oZ)QC9%)FWL5*ynC4%iMJ@B2yurlh0_OGFGQiBZ5#zzrcy z1R+!*TcJ9oBxX@TP(kYuz*1C8Ns}&FXj3&s-CI$TvNpwvaTH9;#Qn~jv6&yf?|%23 zd+zzZd+r&(dS3kSyx1KT`KM;*saea07e6}m;pIy|yRrQEXRqvCPFL_K z{y`<}AM85EU(a5;_L)slG(GK2cK&&II~HyF0X7NSM{vyGdD>55P1o1^UScpxO%))!CY zPDP2xxV}tP6lox$oYEXHE5?30cGrIYuXyWQFxqq;o$q6C{ef1@e@nDdpmK*QbvjTP z72l!vE9bag){%C4`XChXy-o4TS&>4lIDez?%&%R7Qh&4ynL1*}fu(?3~0u+;=Q1N|5q*`9`X90EZad#fbxr_wzFAeY)k@>K_MC4f z^7T~b1b{OncTH#lZXU(=9<*{SwP*hYRp8%-`wqG^q31z%!-{7U+R97>G%Q{~7BRyj zmPAg&3P}g5%fiD5Zn(VrLd<>_1H*pGkCS8vU9K*!Y2u|!`_m94D(B(84WDH%mo1RW z$g)2HOHFnUyJcrv_mL-BvU{nsCYB(0P5U3`lhFBED!~Lu5**XEz|Ers)(wD?BJ>R$ z-=ZXhR-8RU2`Gh95+y0ALVFF;L#AQu-s)Ik_dkV+o(rAI-2we`067N=x`WPsuvFw} z2y24E1Rd{8(we1##9Y_hF50sg%3hW9H53)t<7VXt7faXQdg z9G>E({}}e|Y(I-E9M=r{ciH|4ooft7)43)yauK=v%G`(W=z?+_0et0luIYTm zcOUth=SO!VfUifJg-h_rZoG5=b_mK7?41A+d64>>O=C2%#I+ff4~*<-t`K4qeb7=^ zbec=#s>Tv{@W=BuzWzN-V6PGc#Y#!@(qO>-)1 zPjVVd;WReQ>B08E3X9X2W^uCV`*5~fN0;Sh?6Gv4NI7F7<&25s8AuTRD_FxqR%}A! z9^jc}r;pqH=KWmc6WVGPbO05A`39bk(o}mmL1HrHfXS2tCZ|a>cO*$nrjVGNCNa>F zBr!Qng1Z|?#I2v71c`Xc8S#`e;wdEJDJ0@EB+hpvNyJk~#HUHPJ0s#W-Pvi*wrUA| zmy5|<&7uIXDyF3h0Ly{`qyEld*pdZntcz*s0>HwUqjab<2QlB7j+v1f6X14Cfa#c` zD_CR2#M=&nj*i!5AmqM1|8|}yGhd>BhTM`Sd{-2 zr~0zJyp|vI-JzaC-;tfXSdhhYMIPoBQs}&3{TFbImM<(2C+X>h&lKK+jn-GcW0<6Foa^RR~ulM;aEt;>arN8`!Y6?2&bY zWoy>;uim(2?n46`D0fxy$eHDf(nmU0xzv&SdXE_53%c1~EzVHIK(lC}$1(QNDUAQ6 I@qv>61KJuR{r~^~ diff --git a/lib/5.26.2/x86_64-linux/auto/threads/threads.so b/lib/5.26.2/x86_64-linux/auto/threads/threads.so index b597424958567a86294c3e01b963b727bec8b348..d4fb3fb34979e39e31a4503c6353d7af8729d6d9 100755 GIT binary patch delta 5014 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 I{f!0x2Tl49_5c6? delta 5043 zcmYjU4RBP|6@G8CZ};BaeLtH`Hv7niECG@Y7!pDPF@Yulfgqr$MG+VYe;NuT7$Ts> zE~1qm(V~}*iin8P>HvdPm~RwUlvN(F zy~Iwv9#9mI$NyyzKVJXiY4~COP4uJs-heIb&+tvl∋LPrJ&1uJ_`TjF+Ly>(v%D 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 L - -=over 4 - -=item * - -C - -=item * - -C - -=item * - -C - -=item * - -C - -=back - diff --git a/lib/site_perl/5.26.2/App/cpanminus.pm b/lib/site_perl/5.26.2/App/cpanminus.pm deleted file mode 100644 index 6cc10955..00000000 --- a/lib/site_perl/5.26.2/App/cpanminus.pm +++ /dev/null @@ -1,292 +0,0 @@ -package App::cpanminus; -our $VERSION = "1.7044"; - -=encoding utf8 - -=head1 NAME - -App::cpanminus - get, unpack, build and install modules from CPAN - -=head1 SYNOPSIS - - cpanm Module - -Run C or C for more options. - -=head1 DESCRIPTION - -cpanminus is a script to get, unpack, build and install modules from -CPAN and does nothing else. - -It's dependency free (can bootstrap itself), requires zero -configuration, and stands alone. When running, it requires only 10MB -of RAM. - -=head1 INSTALLATION - -There are several ways to install cpanminus to your system. - -=head2 Package management system - -There are Debian packages, RPMs, FreeBSD ports, and packages for other -operation systems available. If you want to use the package management system, -search for cpanminus and use the appropriate command to install. This makes it -easy to install C to your system without thinking about where to -install, and later upgrade. - -=head2 Installing to system perl - -You can also use the latest cpanminus to install cpanminus itself: - - curl -L https://cpanmin.us | perl - --sudo App::cpanminus - -This will install C to your bin directory like -C and you'll need the C<--sudo> option to write to -the directory, unless you configured C with L. - -=head2 Installing to local perl (perlbrew, plenv etc.) - -If you have perl in your home directory, which is the case if you use -tools like L or plenv, you don't need the C<--sudo> option, since -you're most likely to have a write permission to the perl's library -path. You can just do: - - curl -L https://cpanmin.us | perl - App::cpanminus - -to install the C executable to the perl's bin path, like -C<~/perl5/perlbrew/bin/cpanm>. - -=head2 Downloading the standalone executable - -You can also copy the standalone executable to whatever location you'd like. - - cd ~/bin - curl -L https://cpanmin.us/ -o cpanm - chmod +x cpanm - -This just works, but be sure to grab the new version manually when you -upgrade because C<--self-upgrade> might not work with this installation setup. - -=head2 Troubleshoot: HTTPS warnings - -When you run C commands above, you may encounter SSL handshake -errors or certification warnings. This is due to your HTTP client -(curl) being old, or SSL certificates installed on your system needs -to be updated. - -You're recommended to update the software or system if you can. If -that is impossible or difficult, use the C<-k> option with curl or an -alternative URL, C - -=head1 DEPENDENCIES - -perl 5.8.1 or later. - -=over 4 - -=item * - -'tar' executable (bsdtar or GNU tar version 1.22 are recommended) or Archive::Tar to unpack files. - -=item * - -C compiler, if you want to build XS modules. - -=item * - -make - -=item * - -Module::Build (core in 5.10) - -=back - -=head1 QUESTIONS - -=head2 How does cpanm get/parse/update the CPAN index? - -It queries the CPAN Meta DB site at L. -The site is updated at least every hour to reflect the latest changes -from fast syncing mirrors. The script then also falls back to query the -module at L using its search API. - -Upon calling these API hosts, cpanm (1.6004 or later) will send the -local perl versions to the server in User-Agent string by default. You -can turn it off with C<--no-report-perl-version> option. Read more -about the option with L, and read more about the privacy policy -about this data collection at L - -Fetched files are unpacked in C<~/.cpanm> and automatically cleaned up -periodically. You can configure the location of this with the -C environment variable. - -=head2 Where does this install modules to? Do I need root access? - -It installs to wherever ExtUtils::MakeMaker and Module::Build are -configured to (via C and C). - -By default, it installs to the site_perl directory that belongs to -your perl. You can see the locations for that by running C -and it will be likely something under C if you're -using system perl, or under your home directory if you have built perl -yourself using perlbrew or plenv. - -If you've already configured local::lib on your shell, cpanm respects -that settings and modules will be installed to your local perl5 -directory. - -At a boot time, cpanminus checks whether you have already configured -local::lib, or have a permission to install modules to the site_perl -directory. If neither, i.e. you're using system perl and do not run -cpanm as a root, it automatically sets up local::lib compatible -installation path in a C directory under your home -directory. - -To avoid this, run C either as a root user, with C<--sudo> -option, or with C<--local-lib> option. - -=head2 cpanminus can't install the module XYZ. Is it a bug? - -It is more likely a problem with the distribution itself. cpanminus -doesn't support or may have issues with distributions such as follows: - -=over 4 - -=item * - -Tests that require input from STDIN. - -=item * - -Build.PL or Makefile.PL that prompts for input even when -C is enabled. - -=item * - -Modules that have invalid numeric values as VERSION (such as C<1.1a>) - -=back - -These failures can be reported back to the author of the module so -that they can fix it accordingly, rather than to cpanminus. - -=head2 Does cpanm support the feature XYZ of L and L? - -Most likely not. Here are the things that cpanm doesn't do by -itself. - -If you need these features, use L, L or the standalone -tools that are mentioned. - -=over 4 - -=item * - -CPAN testers reporting. See L - -=item * - -Building RPM packages from CPAN modules - -=item * - -Listing the outdated modules that needs upgrading. See L - -=item * - -Showing the changes of the modules you're about to upgrade. See L - -=item * - -Patching CPAN modules with distroprefs. - -=back - -See L or C to see what cpanminus I do :) - -=head1 COPYRIGHT - -Copyright 2010- Tatsuhiko Miyagawa - -The standalone executable contains the following modules embedded. - -=over 4 - -=item L Copyright 2003 Graham Barr - -=item L Copyright 2007-2009 Matt S Trout - -=item L Copyright 2011 Christian Hansen - -=item L Copyright 2001-2006 Ken Williams. 2010 Matt S Trout - -=item L Copyright 2004-2010 John Peacock - -=item L Copyright 2007-2011 by Makamaka Hannyaharamitu - -=item L, L Copyright (c) 2010 by David Golden and Ricardo Signes - -=item L Copyright 2010 Adam Kennedy - -=item L Copyright (c) 2012 by Leon Timmermans - -=item L Copyright 2012 David Golden - -=item L Copyright (c) 2007-10 Max Maischein - -=item L Copyright 1995 - 2013 by Andreas Koenig, Copyright 2013 by Kenichi Ishigaki - -=item L by Roderick Schertler - - -=back - -=head1 LICENSE - -This software is licensed under the same terms as Perl. - -=head1 CREDITS - -=head2 CONTRIBUTORS - -Patches and code improvements were contributed by: - -Goro Fuji, Kazuhiro Osawa, Tokuhiro Matsuno, Kenichi Ishigaki, Ian -Wells, Pedro Melo, Masayoshi Sekimura, Matt S Trout (mst), squeeky, -horus and Ingy dot Net. - -=head2 ACKNOWLEDGEMENTS - -Bug reports, suggestions and feedbacks were sent by, or general -acknowledgement goes to: - -Jesse Vincent, David Golden, Andreas Koenig, Jos Boumans, Chris -Williams, Adam Kennedy, Audrey Tang, J. Shirley, Chris Prather, Jesse -Luehrs, Marcus Ramberg, Shawn M Moore, chocolateboy, Chirs Nehren, -Jonathan Rockway, Leon Brocard, Simon Elliott, Ricardo Signes, AEvar -Arnfjord Bjarmason, Eric Wilhelm, Florian Ragwitz and xaicron. - -=head1 COMMUNITY - -=over 4 - -=item L - source code repository, issue tracker - -=item L - discussions about cpanm and its related tools - -=back - -=head1 NO WARRANTY - -This software is provided "as-is," without any express or implied -warranty. In no event shall the author be held liable for any damages -arising from the use of the software. - -=head1 SEE ALSO - -L L L - -=cut - -1; diff --git a/lib/site_perl/5.26.2/App/cpanminus/fatscript.pm b/lib/site_perl/5.26.2/App/cpanminus/fatscript.pm deleted file mode 100644 index 52fcbbd3..00000000 --- a/lib/site_perl/5.26.2/App/cpanminus/fatscript.pm +++ /dev/null @@ -1,25245 +0,0 @@ -package App::cpanminus::fatscript; -# -# This is a pre-compiled source code for the cpanm (cpanminus) program. -# For more details about how to install cpanm, go to the following URL: -# -# https://github.com/miyagawa/cpanminus -# -# Quickstart: Run the following command and it will install itself for -# you. You might want to run it as a root with sudo if you want to install -# to places like /usr/local/bin. -# -# % curl -L https://cpanmin.us | perl - App::cpanminus -# -# If you don't have curl but wget, replace `curl -L` with `wget -O -`. - -# DO NOT EDIT -- this is an auto generated file - -# This chunk of stuff was generated by App::FatPacker. To find the original -# file's code, look for the end of this BEGIN block or the string 'FATPACK' -BEGIN { -my %fatpacked; - -$fatpacked{"App/cpanminus.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS'; - package App::cpanminus; - our $VERSION = "1.7044"; - - =encoding utf8 - - =head1 NAME - - App::cpanminus - get, unpack, build and install modules from CPAN - - =head1 SYNOPSIS - - cpanm Module - - Run C or C for more options. - - =head1 DESCRIPTION - - cpanminus is a script to get, unpack, build and install modules from - CPAN and does nothing else. - - It's dependency free (can bootstrap itself), requires zero - configuration, and stands alone. When running, it requires only 10MB - of RAM. - - =head1 INSTALLATION - - There are several ways to install cpanminus to your system. - - =head2 Package management system - - There are Debian packages, RPMs, FreeBSD ports, and packages for other - operation systems available. If you want to use the package management system, - search for cpanminus and use the appropriate command to install. This makes it - easy to install C to your system without thinking about where to - install, and later upgrade. - - =head2 Installing to system perl - - You can also use the latest cpanminus to install cpanminus itself: - - curl -L https://cpanmin.us | perl - --sudo App::cpanminus - - This will install C to your bin directory like - C and you'll need the C<--sudo> option to write to - the directory, unless you configured C with L. - - =head2 Installing to local perl (perlbrew, plenv etc.) - - If you have perl in your home directory, which is the case if you use - tools like L or plenv, you don't need the C<--sudo> option, since - you're most likely to have a write permission to the perl's library - path. You can just do: - - curl -L https://cpanmin.us | perl - App::cpanminus - - to install the C executable to the perl's bin path, like - C<~/perl5/perlbrew/bin/cpanm>. - - =head2 Downloading the standalone executable - - You can also copy the standalone executable to whatever location you'd like. - - cd ~/bin - curl -L https://cpanmin.us/ -o cpanm - chmod +x cpanm - - This just works, but be sure to grab the new version manually when you - upgrade because C<--self-upgrade> might not work with this installation setup. - - =head2 Troubleshoot: HTTPS warnings - - When you run C commands above, you may encounter SSL handshake - errors or certification warnings. This is due to your HTTP client - (curl) being old, or SSL certificates installed on your system needs - to be updated. - - You're recommended to update the software or system if you can. If - that is impossible or difficult, use the C<-k> option with curl or an - alternative URL, C - - =head1 DEPENDENCIES - - perl 5.8.1 or later. - - =over 4 - - =item * - - 'tar' executable (bsdtar or GNU tar version 1.22 are recommended) or Archive::Tar to unpack files. - - =item * - - C compiler, if you want to build XS modules. - - =item * - - make - - =item * - - Module::Build (core in 5.10) - - =back - - =head1 QUESTIONS - - =head2 How does cpanm get/parse/update the CPAN index? - - It queries the CPAN Meta DB site at L. - The site is updated at least every hour to reflect the latest changes - from fast syncing mirrors. The script then also falls back to query the - module at L using its search API. - - Upon calling these API hosts, cpanm (1.6004 or later) will send the - local perl versions to the server in User-Agent string by default. You - can turn it off with C<--no-report-perl-version> option. Read more - about the option with L, and read more about the privacy policy - about this data collection at L - - Fetched files are unpacked in C<~/.cpanm> and automatically cleaned up - periodically. You can configure the location of this with the - C environment variable. - - =head2 Where does this install modules to? Do I need root access? - - It installs to wherever ExtUtils::MakeMaker and Module::Build are - configured to (via C and C). - - By default, it installs to the site_perl directory that belongs to - your perl. You can see the locations for that by running C - and it will be likely something under C if you're - using system perl, or under your home directory if you have built perl - yourself using perlbrew or plenv. - - If you've already configured local::lib on your shell, cpanm respects - that settings and modules will be installed to your local perl5 - directory. - - At a boot time, cpanminus checks whether you have already configured - local::lib, or have a permission to install modules to the site_perl - directory. If neither, i.e. you're using system perl and do not run - cpanm as a root, it automatically sets up local::lib compatible - installation path in a C directory under your home - directory. - - To avoid this, run C either as a root user, with C<--sudo> - option, or with C<--local-lib> option. - - =head2 cpanminus can't install the module XYZ. Is it a bug? - - It is more likely a problem with the distribution itself. cpanminus - doesn't support or may have issues with distributions such as follows: - - =over 4 - - =item * - - Tests that require input from STDIN. - - =item * - - Build.PL or Makefile.PL that prompts for input even when - C is enabled. - - =item * - - Modules that have invalid numeric values as VERSION (such as C<1.1a>) - - =back - - These failures can be reported back to the author of the module so - that they can fix it accordingly, rather than to cpanminus. - - =head2 Does cpanm support the feature XYZ of L and L? - - Most likely not. Here are the things that cpanm doesn't do by - itself. - - If you need these features, use L, L or the standalone - tools that are mentioned. - - =over 4 - - =item * - - CPAN testers reporting. See L - - =item * - - Building RPM packages from CPAN modules - - =item * - - Listing the outdated modules that needs upgrading. See L - - =item * - - Showing the changes of the modules you're about to upgrade. See L - - =item * - - Patching CPAN modules with distroprefs. - - =back - - See L or C to see what cpanminus I do :) - - =head1 COPYRIGHT - - Copyright 2010- Tatsuhiko Miyagawa - - The standalone executable contains the following modules embedded. - - =over 4 - - =item L Copyright 2003 Graham Barr - - =item L Copyright 2007-2009 Matt S Trout - - =item L Copyright 2011 Christian Hansen - - =item L Copyright 2001-2006 Ken Williams. 2010 Matt S Trout - - =item L Copyright 2004-2010 John Peacock - - =item L Copyright 2007-2011 by Makamaka Hannyaharamitu - - =item L, L Copyright (c) 2010 by David Golden and Ricardo Signes - - =item L Copyright 2010 Adam Kennedy - - =item L Copyright (c) 2012 by Leon Timmermans - - =item L Copyright 2012 David Golden - - =item L Copyright (c) 2007-10 Max Maischein - - =item L Copyright 1995 - 2013 by Andreas Koenig, Copyright 2013 by Kenichi Ishigaki - - =item L by Roderick Schertler - - - =back - - =head1 LICENSE - - This software is licensed under the same terms as Perl. - - =head1 CREDITS - - =head2 CONTRIBUTORS - - Patches and code improvements were contributed by: - - Goro Fuji, Kazuhiro Osawa, Tokuhiro Matsuno, Kenichi Ishigaki, Ian - Wells, Pedro Melo, Masayoshi Sekimura, Matt S Trout (mst), squeeky, - horus and Ingy dot Net. - - =head2 ACKNOWLEDGEMENTS - - Bug reports, suggestions and feedbacks were sent by, or general - acknowledgement goes to: - - Jesse Vincent, David Golden, Andreas Koenig, Jos Boumans, Chris - Williams, Adam Kennedy, Audrey Tang, J. Shirley, Chris Prather, Jesse - Luehrs, Marcus Ramberg, Shawn M Moore, chocolateboy, Chirs Nehren, - Jonathan Rockway, Leon Brocard, Simon Elliott, Ricardo Signes, AEvar - Arnfjord Bjarmason, Eric Wilhelm, Florian Ragwitz and xaicron. - - =head1 COMMUNITY - - =over 4 - - =item L - source code repository, issue tracker - - =item L - discussions about cpanm and its related tools - - =back - - =head1 NO WARRANTY - - This software is provided "as-is," without any express or implied - warranty. In no event shall the author be held liable for any damages - arising from the use of the software. - - =head1 SEE ALSO - - L L L - - =cut - - 1; -APP_CPANMINUS - -$fatpacked{"App/cpanminus/Dependency.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS_DEPENDENCY'; - package App::cpanminus::Dependency; - use strict; - use CPAN::Meta::Requirements; - - sub from_prereqs { - my($class, $prereqs, $phases, $types) = @_; - - my @deps; - for my $type (@$types) { - push @deps, $class->from_versions( - $prereqs->merged_requirements($phases, [$type])->as_string_hash, - $type, - ); - } - - return @deps; - } - - sub from_versions { - my($class, $versions, $type) = @_; - - my @deps; - while (my($module, $version) = each %$versions) { - push @deps, $class->new($module, $version, $type) - } - - @deps; - } - - sub merge_with { - my($self, $requirements) = @_; - - # save the original requirement - $self->{original_version} = $self->version; - - # should it clone? not cloning means we upgrade root $requirements on our way - eval { - $requirements->add_string_requirement($self->module, $self->version); - }; - if ($@ =~ /illegal requirements/) { - # Just give a warning then replace with the root requirements - # so that later CPAN::Meta::Check can give a valid error - warn sprintf("Can't merge requirements for %s: '%s' and '%s'", - $self->module, $self->version, - $requirements->requirements_for_module($self->module)); - } - - $self->{version} = $requirements->requirements_for_module($self->module); - } - - sub new { - my($class, $module, $version, $type) = @_; - - bless { - module => $module, - version => $version, - type => $type || 'requires', - }, $class; - } - - sub module { $_[0]->{module} } - sub version { $_[0]->{version} } - sub type { $_[0]->{type} } - - sub requires_version { - my $self = shift; - - # original_version may be 0 - if (defined $self->{original_version}) { - return $self->{original_version}; - } - - $self->version; - } - - sub is_requirement { - $_[0]->{type} eq 'requires'; - } - - 1; -APP_CPANMINUS_DEPENDENCY - -$fatpacked{"App/cpanminus/script.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_CPANMINUS_SCRIPT'; - package App::cpanminus::script; - use strict; - use Config; - use Cwd (); - use App::cpanminus; - use App::cpanminus::Dependency; - use File::Basename (); - use File::Find (); - use File::Path (); - use File::Spec (); - use File::Copy (); - use File::Temp (); - use Getopt::Long (); - use Symbol (); - use String::ShellQuote (); - use version (); - - use constant WIN32 => $^O eq 'MSWin32'; - use constant BAD_TAR => ($^O eq 'solaris' || $^O eq 'hpux'); - use constant CAN_SYMLINK => eval { symlink("", ""); 1 }; - - our $VERSION = $App::cpanminus::VERSION; - - if ($INC{"App/FatPacker/Trace.pm"}) { - require version::vpp; - } - - my $quote = WIN32 ? q/"/ : q/'/; - - sub agent { - my $self = shift; - my $agent = "cpanminus/$VERSION"; - $agent .= " perl/$]" if $self->{report_perl_version}; - $agent; - } - - sub determine_home { - my $class = shift; - - my $homedir = $ENV{HOME} - || eval { require File::HomeDir; File::HomeDir->my_home } - || join('', @ENV{qw(HOMEDRIVE HOMEPATH)}); # Win32 - - if (WIN32) { - require Win32; # no fatpack - $homedir = Win32::GetShortPathName($homedir); - } - - return "$homedir/.cpanm"; - } - - sub new { - my $class = shift; - - bless { - home => $class->determine_home, - cmd => 'install', - seen => {}, - notest => undef, - test_only => undef, - installdeps => undef, - force => undef, - sudo => undef, - make => undef, - verbose => undef, - quiet => undef, - interactive => undef, - log => undef, - mirrors => [], - mirror_only => undef, - mirror_index => undef, - cpanmetadb => "http://cpanmetadb.plackperl.org/v1.0/", - perl => $^X, - argv => [], - local_lib => undef, - self_contained => undef, - exclude_vendor => undef, - prompt_timeout => 0, - prompt => undef, - configure_timeout => 60, - build_timeout => 3600, - test_timeout => 1800, - try_lwp => 1, - try_wget => 1, - try_curl => 1, - uninstall_shadows => ($] < 5.012), - skip_installed => 1, - skip_satisfied => 0, - auto_cleanup => 7, # days - pod2man => 1, - installed_dists => 0, - install_types => ['requires'], - with_develop => 0, - with_configure => 0, - showdeps => 0, - scandeps => 0, - scandeps_tree => [], - format => 'tree', - save_dists => undef, - skip_configure => 0, - verify => 0, - report_perl_version => !$class->maybe_ci, - build_args => {}, - features => {}, - pure_perl => 0, - cpanfile_path => 'cpanfile', - @_, - }, $class; - } - - sub env { - my($self, $key) = @_; - $ENV{"PERL_CPANM_" . $key}; - } - - sub maybe_ci { - my $class = shift; - grep $ENV{$_}, qw( TRAVIS CI AUTOMATED_TESTING AUTHOR_TESTING ); - } - - sub install_type_handlers { - my $self = shift; - - my @handlers; - for my $type (qw( recommends suggests )) { - push @handlers, "with-$type" => sub { - my %uniq; - $self->{install_types} = [ grep !$uniq{$_}++, @{$self->{install_types}}, $type ]; - }; - push @handlers, "without-$type" => sub { - $self->{install_types} = [ grep $_ ne $type, @{$self->{install_types}} ]; - }; - } - - @handlers; - } - - sub build_args_handlers { - my $self = shift; - - my @handlers; - for my $phase (qw( configure build test install )) { - push @handlers, "$phase-args=s" => \($self->{build_args}{$phase}); - } - - @handlers; - } - - sub parse_options { - my $self = shift; - - local @ARGV = @{$self->{argv}}; - push @ARGV, grep length, split /\s+/, $self->env('OPT'); - push @ARGV, @_; - - Getopt::Long::Configure("bundling"); - Getopt::Long::GetOptions( - 'f|force' => sub { $self->{skip_installed} = 0; $self->{force} = 1 }, - 'n|notest!' => \$self->{notest}, - 'test-only' => sub { $self->{notest} = 0; $self->{skip_installed} = 0; $self->{test_only} = 1 }, - 'S|sudo!' => \$self->{sudo}, - 'v|verbose' => \$self->{verbose}, - 'verify!' => \$self->{verify}, - 'q|quiet!' => \$self->{quiet}, - 'h|help' => sub { $self->{action} = 'show_help' }, - 'V|version' => sub { $self->{action} = 'show_version' }, - 'perl=s' => sub { - $self->diag("--perl is deprecated since it's known to be fragile in figuring out dependencies. Run `$_[1] -S cpanm` instead.\n", 1); - $self->{perl} = $_[1]; - }, - 'l|local-lib=s' => sub { $self->{local_lib} = $self->maybe_abs($_[1]) }, - 'L|local-lib-contained=s' => sub { - $self->{local_lib} = $self->maybe_abs($_[1]); - $self->{self_contained} = 1; - $self->{pod2man} = undef; - }, - 'self-contained!' => \$self->{self_contained}, - 'exclude-vendor!' => \$self->{exclude_vendor}, - 'mirror=s@' => $self->{mirrors}, - 'mirror-only!' => \$self->{mirror_only}, - 'mirror-index=s' => sub { $self->{mirror_index} = $self->maybe_abs($_[1]) }, - 'M|from=s' => sub { - $self->{mirrors} = [$_[1]]; - $self->{mirror_only} = 1; - }, - 'cpanmetadb=s' => \$self->{cpanmetadb}, - 'cascade-search!' => \$self->{cascade_search}, - 'prompt!' => \$self->{prompt}, - 'installdeps' => \$self->{installdeps}, - 'skip-installed!' => \$self->{skip_installed}, - 'skip-satisfied!' => \$self->{skip_satisfied}, - 'reinstall' => sub { $self->{skip_installed} = 0 }, - 'interactive!' => \$self->{interactive}, - 'i|install' => sub { $self->{cmd} = 'install' }, - 'info' => sub { $self->{cmd} = 'info' }, - 'look' => sub { $self->{cmd} = 'look'; $self->{skip_installed} = 0 }, - 'U|uninstall' => sub { $self->{cmd} = 'uninstall' }, - 'self-upgrade' => sub { $self->{action} = 'self_upgrade' }, - 'uninst-shadows!' => \$self->{uninstall_shadows}, - 'lwp!' => \$self->{try_lwp}, - 'wget!' => \$self->{try_wget}, - 'curl!' => \$self->{try_curl}, - 'auto-cleanup=s' => \$self->{auto_cleanup}, - 'man-pages!' => \$self->{pod2man}, - 'scandeps' => \$self->{scandeps}, - 'showdeps' => sub { $self->{showdeps} = 1; $self->{skip_installed} = 0 }, - 'format=s' => \$self->{format}, - 'save-dists=s' => sub { - $self->{save_dists} = $self->maybe_abs($_[1]); - }, - 'skip-configure!' => \$self->{skip_configure}, - 'dev!' => \$self->{dev_release}, - 'metacpan!' => \$self->{metacpan}, - 'report-perl-version!' => \$self->{report_perl_version}, - 'configure-timeout=i' => \$self->{configure_timeout}, - 'build-timeout=i' => \$self->{build_timeout}, - 'test-timeout=i' => \$self->{test_timeout}, - 'with-develop' => \$self->{with_develop}, - 'without-develop' => sub { $self->{with_develop} = 0 }, - 'with-configure' => \$self->{with_configure}, - 'without-configure' => sub { $self->{with_configure} = 0 }, - 'with-feature=s' => sub { $self->{features}{$_[1]} = 1 }, - 'without-feature=s' => sub { $self->{features}{$_[1]} = 0 }, - 'with-all-features' => sub { $self->{features}{__all} = 1 }, - 'pp|pureperl!' => \$self->{pure_perl}, - "cpanfile=s" => \$self->{cpanfile_path}, - $self->install_type_handlers, - $self->build_args_handlers, - ); - - if (!@ARGV && $0 ne '-' && !-t STDIN){ # e.g. # cpanm < author/requires.cpanm - push @ARGV, $self->load_argv_from_fh(\*STDIN); - $self->{load_from_stdin} = 1; - } - - $self->{argv} = \@ARGV; - } - - sub check_upgrade { - my $self = shift; - my $install_base = $ENV{PERL_LOCAL_LIB_ROOT} ? $self->local_lib_target($ENV{PERL_LOCAL_LIB_ROOT}) : $Config{installsitebin}; - if ($0 eq '-') { - # run from curl, that's fine - return; - } elsif ($0 !~ /^$install_base/) { - if ($0 =~ m!perlbrew/bin!) { - die <{_checked}++; - $self->bootstrap_local_lib; - } - - sub setup_verify { - my $self = shift; - - my $has_modules = eval { require Module::Signature; require Digest::SHA; 1 }; - $self->{cpansign} = $self->which('cpansign'); - - unless ($has_modules && $self->{cpansign}) { - warn "WARNING: Module::Signature and Digest::SHA is required for distribution verifications.\n"; - $self->{verify} = 0; - } - } - - sub parse_module_args { - my($self, $module) = @_; - - # Plack@1.2 -> Plack~"==1.2" - # BUT don't expand @ in git URLs - $module =~ s/^([A-Za-z0-9_:]+)@([v\d\._]+)$/$1~== $2/; - - # Plack~1.20, DBI~"> 1.0, <= 2.0" - if ($module =~ /\~[v\d\._,\!<>= ]+$/) { - return split /\~/, $module, 2; - } else { - return $module, undef; - } - } - - sub doit { - my $self = shift; - - my $code; - eval { - $code = ($self->_doit == 0); - }; if (my $e = $@) { - warn $e; - $code = 1; - } - - return $code; - } - - sub _doit { - my $self = shift; - - $self->setup_home; - $self->init_tools; - $self->setup_verify if $self->{verify}; - - if (my $action = $self->{action}) { - $self->$action() and return 1; - } - - return $self->show_help(1) - unless @{$self->{argv}} or $self->{load_from_stdin}; - - $self->configure_mirrors; - - my $cwd = Cwd::cwd; - - my @fail; - for my $module (@{$self->{argv}}) { - if ($module =~ s/\.pm$//i) { - my ($volume, $dirs, $file) = File::Spec->splitpath($module); - $module = join '::', grep { $_ } File::Spec->splitdir($dirs), $file; - } - ($module, my $version) = $self->parse_module_args($module); - - $self->chdir($cwd); - if ($self->{cmd} eq 'uninstall') { - $self->uninstall_module($module) - or push @fail, $module; - } else { - $self->install_module($module, 0, $version) - or push @fail, $module; - } - } - - if ($self->{base} && $self->{auto_cleanup}) { - $self->cleanup_workdirs; - } - - if ($self->{installed_dists}) { - my $dists = $self->{installed_dists} > 1 ? "distributions" : "distribution"; - $self->diag("$self->{installed_dists} $dists installed\n", 1); - } - - if ($self->{scandeps}) { - $self->dump_scandeps(); - } - # Workaround for older File::Temp's - # where creating a tempdir with an implicit $PWD - # causes tempdir non-cleanup if $PWD changes - # as paths are stored internally without being resolved - # absolutely. - # https://rt.cpan.org/Public/Bug/Display.html?id=44924 - $self->chdir($cwd); - - return !@fail; - } - - sub setup_home { - my $self = shift; - - $self->{home} = $self->env('HOME') if $self->env('HOME'); - - unless (_writable($self->{home})) { - die "Can't write to cpanm home '$self->{home}': You should fix it with chown/chmod first.\n"; - } - - $self->{base} = "$self->{home}/work/" . time . ".$$"; - File::Path::mkpath([ $self->{base} ], 0, 0777); - - # native path because we use shell redirect - $self->{log} = File::Spec->catfile($self->{base}, "build.log"); - my $final_log = "$self->{home}/build.log"; - - { open my $out, ">$self->{log}" or die "$self->{log}: $!" } - - if (CAN_SYMLINK) { - my $build_link = "$self->{home}/latest-build"; - unlink $build_link; - symlink $self->{base}, $build_link; - - unlink $final_log; - symlink $self->{log}, $final_log; - } else { - my $log = $self->{log}; my $home = $self->{home}; - $self->{at_exit} = sub { - my $self = shift; - my $temp_log = "$home/build.log." . time . ".$$"; - File::Copy::copy($log, $temp_log) - && unlink($final_log); - rename($temp_log, $final_log); - } - } - - $self->chat("cpanm (App::cpanminus) $VERSION on perl $] built for $Config{archname}\n" . - "Work directory is $self->{base}\n"); - } - - sub package_index_for { - my ($self, $mirror) = @_; - return $self->source_for($mirror) . "/02packages.details.txt"; - } - - sub generate_mirror_index { - my ($self, $mirror) = @_; - my $file = $self->package_index_for($mirror); - my $gz_file = $file . '.gz'; - my $index_mtime = (stat $gz_file)[9]; - - unless (-e $file && (stat $file)[9] >= $index_mtime) { - $self->chat("Uncompressing index file...\n"); - if (eval {require Compress::Zlib}) { - my $gz = Compress::Zlib::gzopen($gz_file, "rb") - or do { $self->diag_fail("$Compress::Zlib::gzerrno opening compressed index"); return}; - open my $fh, '>', $file - or do { $self->diag_fail("$! opening uncompressed index for write"); return }; - my $buffer; - while (my $status = $gz->gzread($buffer)) { - if ($status < 0) { - $self->diag_fail($gz->gzerror . " reading compressed index"); - return; - } - print $fh $buffer; - } - } else { - if (system("gunzip -c $gz_file > $file")) { - $self->diag_fail("Cannot uncompress -- please install gunzip or Compress::Zlib"); - return; - } - } - utime $index_mtime, $index_mtime, $file; - } - return 1; - } - - sub search_mirror_index { - my ($self, $mirror, $module, $version) = @_; - $self->search_mirror_index_file($self->package_index_for($mirror), $module, $version); - } - - sub search_mirror_index_file { - my($self, $file, $module, $version) = @_; - - open my $fh, '<', $file or return; - my $found; - while (<$fh>) { - if (m!^\Q$module\E\s+([\w\.]+)\s+(\S*)!m) { - $found = $self->cpan_module($module, $2, $1); - last; - } - } - - return $found unless $self->{cascade_search}; - - if ($found) { - if ($self->satisfy_version($module, $found->{module_version}, $version)) { - return $found; - } else { - $self->chat("Found $module $found->{module_version} which doesn't satisfy $version.\n"); - } - } - - return; - } - - sub with_version_range { - my($self, $version) = @_; - defined($version) && $version =~ /(?:<|!=|==)/; - } - - sub encode_json { - my($self, $data) = @_; - require JSON::PP; - - my $json = JSON::PP::encode_json($data); - $self->uri_escape($json); - } - - sub decode_json { - my($self, $json) = @_; - require JSON::PP; - - JSON::PP::decode_json($json); - } - - sub uri_escape { - my($self, $fragment) = @_; - $fragment =~ s/([^A-Za-z0-9\-\._~])/uc sprintf("%%%02X", ord($1))/eg; - $fragment; - } - - sub uri_params { - my($self, @params) = @_; - my @param_strings; - while (my $key = shift @params) { - my $value = shift @params; - push @param_strings, join '=', map $self->uri_escape($_), $key, $value; - } - return join '&', @param_strings; - } - - # version->new("1.00_00")->numify => "1.00_00" :/ - sub numify_ver { - my($self, $ver) = @_; - eval version->new($ver)->numify; - } - - sub search_metacpan { - my($self, $module, $version, $dev_release) = @_; - - my $metacpan_uri = 'http://fastapi.metacpan.org/v1/download_url/'; - - my $url = $metacpan_uri . $module; - - my $query = $self->uri_params( - ($version ? (version => $version) : ()), - ($dev_release ? (dev => 1) : ()), - ); - $url .= '?' . $query - if length $query; - - my $dist_json = $self->get($url); - my $dist_meta = eval { $self->decode_json($dist_json) }; - - if ($dist_meta && $dist_meta->{download_url}) { - (my $distfile = $dist_meta->{download_url}) =~ s!.+/authors/id/!!; - local $self->{mirrors} = $self->{mirrors}; - $self->{mirrors} = [ 'http://cpan.metacpan.org' ]; - return $self->cpan_module($module, $distfile, $dist_meta->{version}); - } - - $self->chat("! Could not find a release matching $module".($version?" ($version)":'')." on MetaCPAN.\n"); - return; - } - - sub search_database { - my($self, $module, $version) = @_; - - my $found; - - if ($self->{dev_release} or $self->{metacpan}) { - $found = $self->search_metacpan($module, $version, $self->{dev_release}) and return $found; - $found = $self->search_cpanmetadb($module, $version, $self->{dev_release}) and return $found; - } else { - $found = $self->search_cpanmetadb($module, $version) and return $found; - $found = $self->search_metacpan($module, $version) and return $found; - } - } - - sub search_cpanmetadb { - my($self, $module, $version, $dev_release) = @_; - - - $self->chat("Searching $module ($version) on cpanmetadb ...\n"); - - if ($self->with_version_range($version)) { - return $self->search_cpanmetadb_history($module, $version, $dev_release); - } else { - return $self->search_cpanmetadb_package($module, $version, $dev_release); - } - } - - sub search_cpanmetadb_package { - my($self, $module, $version, $dev_release) = @_; - - require CPAN::Meta::YAML; - - (my $uri = $self->{cpanmetadb}) =~ s{/?$}{/package/$module}; - my $yaml = $self->get($uri); - my $meta = eval { CPAN::Meta::YAML::Load($yaml) }; - if ($meta && $meta->{distfile}) { - return $self->cpan_module($module, $meta->{distfile}, $meta->{version}); - } - - $self->diag_fail("Finding $module on cpanmetadb failed."); - return; - } - - sub search_cpanmetadb_history { - my($self, $module, $version) = @_; - - (my $uri = $self->{cpanmetadb}) =~ s{/?$}{/history/$module}; - my $content = $self->get($uri) or return; - - my @found; - for my $line (split /\r?\n/, $content) { - if ($line =~ /^$module\s+(\S+)\s+(\S+)$/) { - push @found, { - version => $1, - version_obj => version::->parse($1), - distfile => $2, - }; - } - } - - return unless @found; - - $found[-1]->{latest} = 1; - - my $match; - for my $try (sort { $b->{version_obj} cmp $a->{version_obj} } @found) { - if ($self->satisfy_version($module, $try->{version_obj}, $version)) { - local $self->{mirrors} = $self->{mirrors}; - unshift @{$self->{mirrors}}, 'http://backpan.perl.org' - unless $try->{latest}; - return $self->cpan_module($module, $try->{distfile}, $try->{version}); - } - } - - $self->diag_fail("Finding $module ($version) on cpanmetadb failed."); - return; - } - - - sub search_module { - my($self, $module, $version) = @_; - - if ($self->{mirror_index}) { - $self->mask_output( chat => "Searching $module on mirror index $self->{mirror_index} ...\n" ); - my $pkg = $self->search_mirror_index_file($self->{mirror_index}, $module, $version); - return $pkg if $pkg; - - unless ($self->{cascade_search}) { - $self->mask_output( diag_fail => "Finding $module ($version) on mirror index $self->{mirror_index} failed." ); - return; - } - } - - unless ($self->{mirror_only}) { - my $found = $self->search_database($module, $version); - return $found if $found; - } - - MIRROR: for my $mirror (@{ $self->{mirrors} }) { - $self->mask_output( chat => "Searching $module on mirror $mirror ...\n" ); - my $name = '02packages.details.txt.gz'; - my $uri = "$mirror/modules/$name"; - my $gz_file = $self->package_index_for($mirror) . '.gz'; - - unless ($self->{pkgs}{$uri}) { - $self->mask_output( chat => "Downloading index file $uri ...\n" ); - $self->mirror($uri, $gz_file); - $self->generate_mirror_index($mirror) or next MIRROR; - $self->{pkgs}{$uri} = "!!retrieved!!"; - } - - my $pkg = $self->search_mirror_index($mirror, $module, $version); - return $pkg if $pkg; - - $self->mask_output( diag_fail => "Finding $module ($version) on mirror $mirror failed." ); - } - - return; - } - - sub source_for { - my($self, $mirror) = @_; - $mirror =~ s/[^\w\.\-]+/%/g; - - my $dir = "$self->{home}/sources/$mirror"; - File::Path::mkpath([ $dir ], 0, 0777); - - return $dir; - } - - sub load_argv_from_fh { - my($self, $fh) = @_; - - my @argv; - while(defined(my $line = <$fh>)){ - chomp $line; - $line =~ s/#.+$//; # comment - $line =~ s/^\s+//; # trim spaces - $line =~ s/\s+$//; # trim spaces - - push @argv, split ' ', $line if $line; - } - return @argv; - } - - sub show_version { - my $self = shift; - - print "cpanm (App::cpanminus) version $VERSION ($0)\n"; - print "perl version $] ($^X)\n\n"; - - print " \%Config:\n"; - for my $key (qw( archname installsitelib installsitebin installman1dir installman3dir - sitearchexp sitelibexp vendorarch vendorlibexp archlibexp privlibexp )) { - print " $key=$Config{$key}\n" if $Config{$key}; - } - - print " \%ENV:\n"; - for my $key (grep /^PERL/, sort keys %ENV) { - print " $key=$ENV{$key}\n"; - } - - print " \@INC:\n"; - for my $inc (@INC) { - print " $inc\n" unless ref($inc) eq 'CODE'; - } - - return 1; - } - - sub show_help { - my $self = shift; - - if ($_[0]) { - print <splitdir($dir); - while (@dir) { - $dir = File::Spec->catdir(@dir); - if (-e $dir) { - return -w _; - } - pop @dir; - } - - return; - } - - sub maybe_abs { - my($self, $lib) = @_; - if ($lib eq '_' or $lib =~ /^~/ or File::Spec->file_name_is_absolute($lib)) { - return $lib; - } else { - return File::Spec->canonpath(File::Spec->catdir(Cwd::cwd(), $lib)); - } - } - - sub local_lib_target { - my($self, $root) = @_; - # local::lib 1.008025 changed the order of PERL_LOCAL_LIB_ROOT - (grep { $_ ne '' } split /\Q$Config{path_sep}/, $root)[0]; - } - - sub bootstrap_local_lib { - my $self = shift; - - # If -l is specified, use that. - if ($self->{local_lib}) { - return $self->setup_local_lib($self->{local_lib}); - } - - # PERL_LOCAL_LIB_ROOT is defined. Run as local::lib mode without overwriting ENV - if ($ENV{PERL_LOCAL_LIB_ROOT} && $ENV{PERL_MM_OPT}) { - return $self->setup_local_lib($self->local_lib_target($ENV{PERL_LOCAL_LIB_ROOT}), 1); - } - - # root, locally-installed perl or --sudo: don't care about install_base - return if $self->{sudo} or (_writable($Config{installsitelib}) and _writable($Config{installsitebin})); - - # local::lib is configured in the shell -- yay - if ($ENV{PERL_MM_OPT} and ($ENV{MODULEBUILDRC} or $ENV{PERL_MB_OPT})) { - return; - } - - $self->setup_local_lib; - - $self->diag(<module => $_ } @$config_deps; - - # M::B 0.38 and EUMM 6.58 for MYMETA - # EU::Install 1.46 for local::lib - my $reqs = CPAN::Meta::Requirements->from_string_hash({ - 'Module::Build' => '0.38', - 'ExtUtils::MakeMaker' => '6.58', - 'ExtUtils::Install' => '1.46', - }); - - if ($deps{"ExtUtils::MakeMaker"}) { - $deps{"ExtUtils::MakeMaker"}->merge_with($reqs); - } elsif ($deps{"Module::Build"}) { - $deps{"Module::Build"}->merge_with($reqs); - $deps{"ExtUtils::Install"} ||= App::cpanminus::Dependency->new("ExtUtils::Install", 0, 'configure'); - $deps{"ExtUtils::Install"}->merge_with($reqs); - } - - @$config_deps = values %deps; - } - - sub _core_only_inc { - my($self, $base) = @_; - require local::lib; - ( - local::lib->resolve_path(local::lib->install_base_arch_path($base)), - local::lib->resolve_path(local::lib->install_base_perl_path($base)), - (!$self->{exclude_vendor} ? grep {$_} @Config{qw(vendorarch vendorlibexp)} : ()), - @Config{qw(archlibexp privlibexp)}, - ); - } - - sub _diff { - my($self, $old, $new) = @_; - - my @diff; - my %old = map { $_ => 1 } @$old; - for my $n (@$new) { - push @diff, $n unless exists $old{$n}; - } - - @diff; - } - - sub _setup_local_lib_env { - my($self, $base) = @_; - - $self->diag(<setup_env_hash_for($base, 0); - } - - sub setup_local_lib { - my($self, $base, $no_env) = @_; - $base = undef if $base eq '_'; - - require local::lib; - { - local $0 = 'cpanm'; # so curl/wget | perl works - $base ||= "~/perl5"; - $base = local::lib->resolve_path($base); - if ($self->{self_contained}) { - my @inc = $self->_core_only_inc($base); - $self->{search_inc} = [ @inc ]; - } else { - $self->{search_inc} = [ - local::lib->install_base_arch_path($base), - local::lib->install_base_perl_path($base), - @INC, - ]; - } - $self->_setup_local_lib_env($base) unless $no_env; - $self->{local_lib} = $base; - } - } - - sub prompt_bool { - my($self, $mess, $def) = @_; - - my $val = $self->prompt($mess, $def); - return lc $val eq 'y'; - } - - sub prompt { - my($self, $mess, $def) = @_; - - my $isa_tty = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ; - my $dispdef = defined $def ? "[$def] " : " "; - $def = defined $def ? $def : ""; - - if (!$self->{prompt} || (!$isa_tty && eof STDIN)) { - return $def; - } - - local $|=1; - local $\; - my $ans; - eval { - local $SIG{ALRM} = sub { undef $ans; die "alarm\n" }; - print STDOUT "$mess $dispdef"; - alarm $self->{prompt_timeout} if $self->{prompt_timeout}; - $ans = ; - alarm 0; - }; - if ( defined $ans ) { - chomp $ans; - } else { # user hit ctrl-D or alarm timeout - print STDOUT "\n"; - } - - return (!defined $ans || $ans eq '') ? $def : $ans; - } - - sub diag_ok { - my($self, $msg) = @_; - chomp $msg; - $msg ||= "OK"; - if ($self->{in_progress}) { - $self->_diag("$msg\n"); - $self->{in_progress} = 0; - } - $self->log("-> $msg\n"); - } - - sub diag_fail { - my($self, $msg, $always) = @_; - chomp $msg; - if ($self->{in_progress}) { - $self->_diag("FAIL\n"); - $self->{in_progress} = 0; - } - - if ($msg) { - $self->_diag("! $msg\n", $always, 1); - $self->log("-> FAIL $msg\n"); - } - } - - sub diag_progress { - my($self, $msg) = @_; - chomp $msg; - $self->{in_progress} = 1; - $self->_diag("$msg ... "); - $self->log("$msg\n"); - } - - sub _diag { - my($self, $msg, $always, $error) = @_; - my $fh = $error ? *STDERR : *STDOUT; - print {$fh} $msg if $always or $self->{verbose} or !$self->{quiet}; - } - - sub diag { - my($self, $msg, $always) = @_; - $self->_diag($msg, $always); - $self->log($msg); - } - - sub chat { - my $self = shift; - print STDERR @_ if $self->{verbose}; - $self->log(@_); - } - - sub mask_output { - my $self = shift; - my $method = shift; - $self->$method( $self->mask_uri_passwords(@_) ); - } - - sub log { - my $self = shift; - open my $out, ">>$self->{log}"; - print $out @_; - } - - sub run { - my($self, $cmd) = @_; - - if (WIN32) { - $cmd = $self->shell_quote(@$cmd) if ref $cmd eq 'ARRAY'; - unless ($self->{verbose}) { - $cmd .= " >> " . $self->shell_quote($self->{log}) . " 2>&1"; - } - !system $cmd; - } else { - my $pid = fork; - if ($pid) { - waitpid $pid, 0; - return !$?; - } else { - $self->run_exec($cmd); - } - } - } - - sub run_exec { - my($self, $cmd) = @_; - - if (ref $cmd eq 'ARRAY') { - unless ($self->{verbose}) { - open my $logfh, ">>", $self->{log}; - open STDERR, '>&', $logfh; - open STDOUT, '>&', $logfh; - close $logfh; - } - exec @$cmd; - } else { - unless ($self->{verbose}) { - $cmd .= " >> " . $self->shell_quote($self->{log}) . " 2>&1"; - } - exec $cmd; - } - } - - sub run_timeout { - my($self, $cmd, $timeout) = @_; - return $self->run($cmd) if WIN32 || $self->{verbose} || !$timeout; - - my $pid = fork; - if ($pid) { - eval { - local $SIG{ALRM} = sub { die "alarm\n" }; - alarm $timeout; - waitpid $pid, 0; - alarm 0; - }; - if ($@ && $@ eq "alarm\n") { - $self->diag_fail("Timed out (> ${timeout}s). Use --verbose to retry."); - local $SIG{TERM} = 'IGNORE'; - kill TERM => 0; - waitpid $pid, 0; - return; - } - return !$?; - } elsif ($pid == 0) { - $self->run_exec($cmd); - } else { - $self->chat("! fork failed: falling back to system()\n"); - $self->run($cmd); - } - } - - sub append_args { - my($self, $cmd, $phase) = @_; - - if (my $args = $self->{build_args}{$phase}) { - $cmd = join ' ', $self->shell_quote(@$cmd), $args; - } - - $cmd; - } - - sub configure { - my($self, $cmd, $depth) = @_; - - # trick AutoInstall - local $ENV{PERL5_CPAN_IS_RUNNING} = local $ENV{PERL5_CPANPLUS_IS_RUNNING} = $$; - - # e.g. skip CPAN configuration on local::lib - local $ENV{PERL5_CPANM_IS_RUNNING} = $$; - - my $use_default = !$self->{interactive}; - local $ENV{PERL_MM_USE_DEFAULT} = $use_default; - - local $ENV{PERL_MM_OPT} = $ENV{PERL_MM_OPT}; - local $ENV{PERL_MB_OPT} = $ENV{PERL_MB_OPT}; - - # skip man page generation - unless ($self->{pod2man}) { - $ENV{PERL_MM_OPT} .= " INSTALLMAN1DIR=none INSTALLMAN3DIR=none"; - $ENV{PERL_MB_OPT} .= " --config installman1dir= --config installsiteman1dir= --config installman3dir= --config installsiteman3dir="; - } - - # Lancaster Consensus - if ($self->{pure_perl}) { - $ENV{PERL_MM_OPT} .= " PUREPERL_ONLY=1"; - $ENV{PERL_MB_OPT} .= " --pureperl-only"; - } - - local $ENV{PERL_USE_UNSAFE_INC} = 1 - unless exists $ENV{PERL_USE_UNSAFE_INC}; - - $cmd = $self->append_args($cmd, 'configure') if $depth == 0; - - local $self->{verbose} = $self->{verbose} || $self->{interactive}; - $self->run_timeout($cmd, $self->{configure_timeout}); - } - - sub build { - my($self, $cmd, $distname, $depth) = @_; - - local $ENV{PERL_MM_USE_DEFAULT} = !$self->{interactive}; - - local $ENV{PERL_USE_UNSAFE_INC} = 1 - unless exists $ENV{PERL_USE_UNSAFE_INC}; - - $cmd = $self->append_args($cmd, 'build') if $depth == 0; - - return 1 if $self->run_timeout($cmd, $self->{build_timeout}); - while (1) { - my $ans = lc $self->prompt("Building $distname failed.\nYou can s)kip, r)etry, e)xamine build log, or l)ook ?", "s"); - return if $ans eq 's'; - return $self->build($cmd, $distname, $depth) if $ans eq 'r'; - $self->show_build_log if $ans eq 'e'; - $self->look if $ans eq 'l'; - } - } - - sub test { - my($self, $cmd, $distname, $depth) = @_; - return 1 if $self->{notest}; - - # https://rt.cpan.org/Ticket/Display.html?id=48965#txn-1013385 - local $ENV{PERL_MM_USE_DEFAULT} = !$self->{interactive}; - - # https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md - local $ENV{NONINTERACTIVE_TESTING} = !$self->{interactive}; - - $cmd = $self->append_args($cmd, 'test') if $depth == 0; - - local $ENV{PERL_USE_UNSAFE_INC} = 1 - unless exists $ENV{PERL_USE_UNSAFE_INC}; - - return 1 if $self->run_timeout($cmd, $self->{test_timeout}); - if ($self->{force}) { - $self->diag_fail("Testing $distname failed but installing it anyway."); - return 1; - } else { - $self->diag_fail; - while (1) { - my $ans = lc $self->prompt("Testing $distname failed.\nYou can s)kip, r)etry, f)orce install, e)xamine build log, or l)ook ?", "s"); - return if $ans eq 's'; - return $self->test($cmd, $distname, $depth) if $ans eq 'r'; - return 1 if $ans eq 'f'; - $self->show_build_log if $ans eq 'e'; - $self->look if $ans eq 'l'; - } - } - } - - sub install { - my($self, $cmd, $uninst_opts, $depth) = @_; - - if ($depth == 0 && $self->{test_only}) { - return 1; - } - - local $ENV{PERL_USE_UNSAFE_INC} = 1 - unless exists $ENV{PERL_USE_UNSAFE_INC}; - - if ($self->{sudo}) { - unshift @$cmd, "sudo"; - } - - if ($self->{uninstall_shadows} && !$ENV{PERL_MM_OPT}) { - push @$cmd, @$uninst_opts; - } - - $cmd = $self->append_args($cmd, 'install') if $depth == 0; - - $self->run($cmd); - } - - sub look { - my $self = shift; - - my $shell = $ENV{SHELL}; - $shell ||= $ENV{COMSPEC} if WIN32; - if ($shell) { - my $cwd = Cwd::cwd; - $self->diag("Entering $cwd with $shell\n"); - system $shell; - } else { - $self->diag_fail("You don't seem to have a SHELL :/"); - } - } - - sub show_build_log { - my $self = shift; - - my @pagers = ( - $ENV{PAGER}, - (WIN32 ? () : ('less')), - 'more' - ); - my $pager; - while (@pagers) { - $pager = shift @pagers; - next unless $pager; - $pager = $self->which($pager); - next unless $pager; - last; - } - - if ($pager) { - # win32 'more' doesn't allow "more build.log", the < is required - system("$pager < $self->{log}"); - } - else { - $self->diag_fail("You don't seem to have a PAGER :/"); - } - } - - sub chdir { - my $self = shift; - Cwd::chdir(File::Spec->canonpath($_[0])) or die "$_[0]: $!"; - } - - sub configure_mirrors { - my $self = shift; - unless (@{$self->{mirrors}}) { - $self->{mirrors} = [ 'http://www.cpan.org' ]; - } - for (@{$self->{mirrors}}) { - s!^/!file:///!; - s!/$!!; - } - } - - sub self_upgrade { - my $self = shift; - $self->check_upgrade; - $self->{argv} = [ 'App::cpanminus' ]; - return; # continue - } - - sub install_module { - my($self, $module, $depth, $version) = @_; - - $self->check_libs; - - if ($self->{seen}{$module}++) { - # TODO: circular dependencies - $self->chat("Already tried $module. Skipping.\n"); - return 1; - } - - if ($self->{skip_satisfied}) { - my($ok, $local) = $self->check_module($module, $version || 0); - if ($ok) { - $self->diag("You have $module ($local)\n", 1); - return 1; - } - } - - my $dist = $self->resolve_name($module, $version); - unless ($dist) { - my $what = $module . ($version ? " ($version)" : ""); - $self->diag_fail("Couldn't find module or a distribution $what", 1); - return; - } - - if ($dist->{distvname} && $self->{seen}{$dist->{distvname}}++) { - $self->chat("Already tried $dist->{distvname}. Skipping.\n"); - return 1; - } - - if ($self->{cmd} eq 'info') { - print $self->format_dist($dist), "\n"; - return 1; - } - - $dist->{depth} = $depth; # ugly hack - - if ($dist->{module}) { - unless ($self->satisfy_version($dist->{module}, $dist->{module_version}, $version)) { - $self->diag("Found $dist->{module} $dist->{module_version} which doesn't satisfy $version.\n", 1); - return; - } - - # If a version is requested, it has to be the exact same version, otherwise, check as if - # it is the minimum version you need. - my $cmp = $version ? "==" : ""; - my $requirement = $dist->{module_version} ? "$cmp$dist->{module_version}" : 0; - my($ok, $local) = $self->check_module($dist->{module}, $requirement); - if ($self->{skip_installed} && $ok) { - $self->diag("$dist->{module} is up to date. ($local)\n", 1); - return 1; - } - } - - if ($dist->{dist} eq 'perl'){ - $self->diag("skipping $dist->{pathname}\n"); - return 1; - } - - $self->diag("--> Working on $module\n"); - - $dist->{dir} ||= $self->fetch_module($dist); - - unless ($dist->{dir}) { - $self->diag_fail("Failed to fetch distribution $dist->{distvname}", 1); - return; - } - - $self->chat("Entering $dist->{dir}\n"); - $self->chdir($self->{base}); - $self->chdir($dist->{dir}); - - if ($self->{cmd} eq 'look') { - $self->look; - return 1; - } - - return $self->build_stuff($module, $dist, $depth); - } - - sub uninstall_search_path { - my $self = shift; - - $self->{local_lib} - ? (local::lib->install_base_arch_path($self->{local_lib}), - local::lib->install_base_perl_path($self->{local_lib})) - : @Config{qw(installsitearch installsitelib)}; - } - - sub uninstall_module { - my ($self, $module) = @_; - - $self->check_libs; - - my @inc = $self->uninstall_search_path; - - my($metadata, $packlist) = $self->packlists_containing($module, \@inc); - unless ($packlist) { - $self->diag_fail(<uninstall_target($metadata, $packlist); - - $self->ask_permission($module, \@uninst_files) or return; - $self->uninstall_files(@uninst_files, $packlist); - - $self->diag("Successfully uninstalled $module\n", 1); - - return 1; - } - - sub packlists_containing { - my($self, $module, $inc) = @_; - - require Module::Metadata; - my $metadata = Module::Metadata->new_from_module($module, inc => $inc) - or return; - - my $packlist; - my $wanted = sub { - return unless $_ eq '.packlist' && -f $_; - for my $file ($self->unpack_packlist($File::Find::name)) { - $packlist ||= $File::Find::name if $file eq $metadata->filename; - } - }; - - { - require File::pushd; - my $pushd = File::pushd::pushd(); - my @search = grep -d $_, map File::Spec->catdir($_, 'auto'), @$inc; - File::Find::find($wanted, @search); - } - - return $metadata, $packlist; - } - - sub uninstall_target { - my($self, $metadata, $packlist) = @_; - - # If the module has a shadow install, or uses local::lib, then you can't just remove - # all files in .packlist since it might have shadows in there - if ($self->has_shadow_install($metadata) or $self->{local_lib}) { - grep $self->should_unlink($_), $self->unpack_packlist($packlist); - } else { - $self->unpack_packlist($packlist); - } - } - - sub has_shadow_install { - my($self, $metadata) = @_; - - # check if you have the module in site_perl *and* perl - my @shadow = grep defined, map Module::Metadata->new_from_module($metadata->name, inc => [$_]), @INC; - @shadow >= 2; - } - - sub should_unlink { - my($self, $file) = @_; - - # If local::lib is used, everything under the directory can be safely removed - # Otherwise, bin and man files might be shared with the shadows i.e. site_perl vs perl - # This is not 100% safe to keep the script there hoping to work with older version of .pm - # files in the shadow, but there's nothing you can do about it. - if ($self->{local_lib}) { - $file =~ /^\Q$self->{local_lib}\E/; - } else { - !(grep $file =~ /^\Q$_\E/, @Config{qw(installbin installscript installman1dir installman3dir)}); - } - } - - sub ask_permission { - my ($self, $module, $files) = @_; - - $self->diag("$module contains the following files:\n\n"); - for my $file (@$files) { - $self->diag(" $file\n"); - } - $self->diag("\n"); - - return 'force uninstall' if $self->{force}; - local $self->{prompt} = 1; - return $self->prompt_bool("Are you sure you want to uninstall $module?", 'y'); - } - - sub unpack_packlist { - my ($self, $packlist) = @_; - open my $fh, '<', $packlist or die "$packlist: $!"; - map { chomp; $_ } <$fh>; - } - - sub uninstall_files { - my ($self, @files) = @_; - - $self->diag("\n"); - - for my $file (@files) { - $self->diag("Unlink: $file\n"); - unlink $file or $self->diag_fail("$!: $file"); - } - - $self->diag("\n"); - - return 1; - } - - sub format_dist { - my($self, $dist) = @_; - - # TODO support --dist-format? - return "$dist->{cpanid}/$dist->{filename}"; - } - - sub trim { - local $_ = shift; - tr/\n/ /d; - s/^\s*|\s*$//g; - $_; - } - - sub fetch_module { - my($self, $dist) = @_; - - $self->chdir($self->{base}); - - for my $uri (@{$dist->{uris}}) { - $self->mask_output( diag_progress => "Fetching $uri" ); - - # Ugh, $dist->{filename} can contain sub directory - my $filename = $dist->{filename} || $uri; - my $name = File::Basename::basename($filename); - - my $cancelled; - my $fetch = sub { - my $file; - eval { - local $SIG{INT} = sub { $cancelled = 1; die "SIGINT\n" }; - $self->mirror($uri, $name); - $file = $name if -e $name; - }; - $self->diag("ERROR: " . trim("$@") . "\n", 1) if $@ && $@ ne "SIGINT\n"; - return $file; - }; - - my($try, $file); - while ($try++ < 3) { - $file = $fetch->(); - last if $cancelled or $file; - $self->mask_output( diag_fail => "Download $uri failed. Retrying ... "); - } - - if ($cancelled) { - $self->diag_fail("Download cancelled."); - return; - } - - unless ($file) { - $self->mask_output( diag_fail => "Failed to download $uri"); - next; - } - - $self->diag_ok; - $dist->{local_path} = File::Spec->rel2abs($name); - - my $dir = $self->unpack($file, $uri, $dist); - next unless $dir; # unpack failed - - if (my $save = $self->{save_dists}) { - # Only distros retrieved from CPAN have a pathname set - my $path = $dist->{pathname} ? "$save/authors/id/$dist->{pathname}" - : "$save/vendor/$file"; - $self->chat("Copying $name to $path\n"); - File::Path::mkpath([ File::Basename::dirname($path) ], 0, 0777); - File::Copy::copy($file, $path) or warn $!; - } - - return $dist, $dir; - } - } - - sub unpack { - my($self, $file, $uri, $dist) = @_; - - if ($self->{verify}) { - $self->verify_archive($file, $uri, $dist) or return; - } - - $self->chat("Unpacking $file\n"); - my $dir = $file =~ /\.zip/i ? $self->unzip($file) : $self->untar($file); - unless ($dir) { - $self->diag_fail("Failed to unpack $file: no directory"); - } - return $dir; - } - - sub verify_checksums_signature { - my($self, $chk_file) = @_; - - require Module::Signature; # no fatpack - - $self->chat("Verifying the signature of CHECKSUMS\n"); - - my $rv = eval { - local $SIG{__WARN__} = sub {}; # suppress warnings - my $v = Module::Signature::_verify($chk_file); - $v == Module::Signature::SIGNATURE_OK(); - }; - if ($rv) { - $self->chat("Verified OK!\n"); - } else { - $self->diag_fail("Verifying CHECKSUMS signature failed: $rv\n"); - return; - } - - return 1; - } - - sub verify_archive { - my($self, $file, $uri, $dist) = @_; - - unless ($dist->{cpanid}) { - $self->chat("Archive '$file' does not seem to be from PAUSE. Skip verification.\n"); - return 1; - } - - (my $mirror = $uri) =~ s!/authors/id.*$!!; - - (my $chksum_uri = $uri) =~ s!/[^/]*$!/CHECKSUMS!; - my $chk_file = $self->source_for($mirror) . "/$dist->{cpanid}.CHECKSUMS"; - $self->mask_output( diag_progress => "Fetching $chksum_uri" ); - $self->mirror($chksum_uri, $chk_file); - - unless (-e $chk_file) { - $self->diag_fail("Fetching $chksum_uri failed.\n"); - return; - } - - $self->diag_ok; - $self->verify_checksums_signature($chk_file) or return; - $self->verify_checksum($file, $chk_file); - } - - sub verify_checksum { - my($self, $file, $chk_file) = @_; - - $self->chat("Verifying the SHA1 for $file\n"); - - open my $fh, "<$chk_file" or die "$chk_file: $!"; - my $data = join '', <$fh>; - $data =~ s/\015?\012/\n/g; - - require Safe; # no fatpack - my $chksum = Safe->new->reval($data); - - if (!ref $chksum or ref $chksum ne 'HASH') { - $self->diag_fail("! Checksum file downloaded from $chk_file is broken.\n"); - return; - } - - if (my $sha = $chksum->{$file}{sha256}) { - my $hex = $self->sha1_for($file); - if ($hex eq $sha) { - $self->chat("Checksum for $file: Verified!\n"); - } else { - $self->diag_fail("Checksum mismatch for $file\n"); - return; - } - } else { - $self->chat("Checksum for $file not found in CHECKSUMS.\n"); - return; - } - } - - sub sha1_for { - my($self, $file) = @_; - - require Digest::SHA; # no fatpack - - open my $fh, "<", $file or die "$file: $!"; - my $dg = Digest::SHA->new(256); - my($data); - while (read($fh, $data, 4096)) { - $dg->add($data); - } - - return $dg->hexdigest; - } - - sub verify_signature { - my($self, $dist) = @_; - - $self->diag_progress("Verifying the SIGNATURE file"); - my $out = `$self->{cpansign} -v --skip 2>&1`; - $self->log($out); - - if ($out =~ /Signature verified OK/) { - $self->diag_ok("Verified OK"); - return 1; - } else { - $self->diag_fail("SIGNATURE verification for $dist->{filename} failed\n"); - return; - } - } - - sub resolve_name { - my($self, $module, $version) = @_; - - # Git - if ($module =~ /(?:^git:|\.git(?:@.+)?$)/) { - return $self->git_uri($module); - } - - # URL - if ($module =~ /^(ftp|https?|file):/) { - if ($module =~ m!authors/id/(.*)!) { - return $self->cpan_dist($1, $module); - } else { - return { uris => [ $module ] }; - } - } - - # Directory - if ($module =~ m!^[\./]! && -d $module) { - return { - source => 'local', - dir => Cwd::abs_path($module), - }; - } - - # File - if (-f $module) { - return { - source => 'local', - uris => [ "file://" . Cwd::abs_path($module) ], - }; - } - - # cpan URI - if ($module =~ s!^cpan:///distfile/!!) { - return $self->cpan_dist($module); - } - - # PAUSEID/foo - # P/PA/PAUSEID/foo - if ($module =~ m!^(?:[A-Z]/[A-Z]{2}/)?([A-Z]{2}[\-A-Z0-9]*/.*)$!) { - return $self->cpan_dist($1); - } - - # Module name - return $self->search_module($module, $version); - } - - sub cpan_module { - my($self, $module, $dist_file, $version) = @_; - - my $dist = $self->cpan_dist($dist_file); - $dist->{module} = $module; - $dist->{module_version} = $version if $version && $version ne 'undef'; - - return $dist; - } - - sub cpan_dist { - my($self, $dist, $url) = @_; - - $dist =~ s!^([A-Z]{2})!substr($1,0,1)."/".substr($1,0,2)."/".$1!e; - - require CPAN::DistnameInfo; - my $d = CPAN::DistnameInfo->new($dist); - - if ($url) { - $url = [ $url ] unless ref $url eq 'ARRAY'; - } else { - my $id = $d->cpanid; - my $fn = substr($id, 0, 1) . "/" . substr($id, 0, 2) . "/" . $id . "/" . $d->filename; - - my @mirrors = @{$self->{mirrors}}; - my @urls = map "$_/authors/id/$fn", @mirrors; - - $url = \@urls, - } - - return { - $d->properties, - source => 'cpan', - uris => $url, - }; - } - - sub git_uri { - my ($self, $uri) = @_; - - # similar to http://www.pip-installer.org/en/latest/logic.html#vcs-support - # git URL has to end with .git when you need to use pin @ commit/tag/branch - - ($uri, my $commitish) = split /(?<=\.git)@/i, $uri, 2; - - my $dir = File::Temp::tempdir(CLEANUP => 1); - - $self->mask_output( diag_progress => "Cloning $uri" ); - $self->run([ 'git', 'clone', $uri, $dir ]); - - unless (-e "$dir/.git") { - $self->diag_fail("Failed cloning git repository $uri", 1); - return; - } - - if ($commitish) { - require File::pushd; - my $dir = File::pushd::pushd($dir); - - unless ($self->run([ 'git', 'checkout', $commitish ])) { - $self->diag_fail("Failed to checkout '$commitish' in git repository $uri\n"); - return; - } - } - - $self->diag_ok; - - return { - source => 'local', - dir => $dir, - }; - } - - sub setup_module_build_patch { - my $self = shift; - - open my $out, ">$self->{base}/ModuleBuildSkipMan.pm" or die $!; - print $out <{search_inc} ||= do { - # strip lib/ and fatlib/ from search path when booted from dev - if (defined $::Bin) { - [grep !/^\Q$::Bin\E\/..\/(?:fat)?lib$/, @INC] - } else { - [@INC] - } - }; - } - - sub check_module { - my($self, $mod, $want_ver) = @_; - - require Module::Metadata; - my $meta = Module::Metadata->new_from_module($mod, inc => $self->search_inc) - or return 0, undef; - - my $version = $meta->version; - - # When -L is in use, the version loaded from 'perl' library path - # might be newer than (or actually wasn't core at) the version - # that is shipped with the current perl - if ($self->{self_contained} && $self->loaded_from_perl_lib($meta)) { - $version = $self->core_version_for($mod); - return 0, undef if $version && $version == -1; - } - - $self->{local_versions}{$mod} = $version; - - if ($self->is_deprecated($meta)){ - return 0, $version; - } elsif ($self->satisfy_version($mod, $version, $want_ver)) { - return 1, ($version || 'undef'); - } else { - return 0, $version; - } - } - - sub satisfy_version { - my($self, $mod, $version, $want_ver) = @_; - - $want_ver = '0' unless defined($want_ver) && length($want_ver); - - require CPAN::Meta::Requirements; - my $requirements = CPAN::Meta::Requirements->new; - $requirements->add_string_requirement($mod, $want_ver); - $requirements->accepts_module($mod, $version); - } - - sub unsatisfy_how { - my($self, $ver, $want_ver) = @_; - - if ($want_ver =~ /^[v0-9\.\_]+$/) { - return "$ver < $want_ver"; - } else { - return "$ver doesn't satisfy $want_ver"; - } - } - - sub is_deprecated { - my($self, $meta) = @_; - - my $deprecated = eval { - require Module::CoreList; # no fatpack - Module::CoreList::is_deprecated($meta->{module}); - }; - - return $deprecated && $self->loaded_from_perl_lib($meta); - } - - sub loaded_from_perl_lib { - my($self, $meta) = @_; - - require Config; - my @dirs = qw(archlibexp privlibexp); - if ($self->{self_contained} && ! $self->{exclude_vendor} && $Config{vendorarch}) { - unshift @dirs, qw(vendorarch vendorlibexp); - } - for my $dir (@dirs) { - my $confdir = $Config{$dir}; - if ($confdir eq substr($meta->filename, 0, length($confdir))) { - return 1; - } - } - - return; - } - - sub should_install { - my($self, $mod, $ver) = @_; - - $self->chat("Checking if you have $mod $ver ... "); - my($ok, $local) = $self->check_module($mod, $ver); - - if ($ok) { $self->chat("Yes ($local)\n") } - elsif ($local) { $self->chat("No (" . $self->unsatisfy_how($local, $ver) . ")\n") } - else { $self->chat("No\n") } - - return $mod unless $ok; - return; - } - - sub check_perl_version { - my($self, $version) = @_; - require CPAN::Meta::Requirements; - my $req = CPAN::Meta::Requirements->from_string_hash({ perl => $version }); - $req->accepts_module(perl => $]); - } - - sub install_deps { - my($self, $dir, $depth, @deps) = @_; - - my(@install, %seen, @fail); - for my $dep (@deps) { - next if $seen{$dep->module}; - if ($dep->module eq 'perl') { - if ($dep->is_requirement && !$self->check_perl_version($dep->version)) { - $self->diag("Needs perl @{[$dep->version]}, you have $]\n"); - push @fail, 'perl'; - } - } elsif ($self->should_install($dep->module, $dep->version)) { - push @install, $dep; - $seen{$dep->module} = 1; - } - } - - if (@install) { - $self->diag("==> Found dependencies: " . join(", ", map $_->module, @install) . "\n"); - } - - for my $dep (@install) { - $self->install_module($dep->module, $depth + 1, $dep->version); - } - - $self->chdir($self->{base}); - $self->chdir($dir) if $dir; - - if ($self->{scandeps}) { - return 1; # Don't check if dependencies are installed, since with --scandeps they aren't - } - my @not_ok = $self->unsatisfied_deps(@deps); - if (@not_ok) { - return 0, \@not_ok; - } else { - return 1; - } - } - - sub unsatisfied_deps { - my($self, @deps) = @_; - - require CPAN::Meta::Check; - require CPAN::Meta::Requirements; - - my $reqs = CPAN::Meta::Requirements->new; - for my $dep (grep $_->is_requirement, @deps) { - $reqs->add_string_requirement($dep->module => $dep->requires_version || '0'); - } - - my $ret = CPAN::Meta::Check::check_requirements($reqs, 'requires', $self->{search_inc}); - grep defined, values %$ret; - } - - sub install_deps_bailout { - my($self, $target, $dir, $depth, @deps) = @_; - - my($ok, $fail) = $self->install_deps($dir, $depth, @deps); - if (!$ok) { - $self->diag_fail("Installing the dependencies failed: " . join(", ", @$fail), 1); - unless ($self->prompt_bool("Do you want to continue building $target anyway?", "n")) { - $self->diag_fail("Bailing out the installation for $target.", 1); - return; - } - } - - return 1; - } - - sub build_stuff { - my($self, $stuff, $dist, $depth) = @_; - - if ($self->{verify} && -e 'SIGNATURE') { - $self->verify_signature($dist) or return; - } - - require CPAN::Meta; - - my($meta_file) = grep -f, qw(META.json META.yml); - if ($meta_file) { - $self->chat("Checking configure dependencies from $meta_file\n"); - $dist->{cpanmeta} = eval { CPAN::Meta->load_file($meta_file) }; - } elsif ($dist->{dist} && $dist->{version}) { - $self->chat("META.yml/json not found. Creating skeleton for it.\n"); - $dist->{cpanmeta} = CPAN::Meta->new({ name => $dist->{dist}, version => $dist->{version} }); - } - - $dist->{meta} = $dist->{cpanmeta} ? $dist->{cpanmeta}->as_struct : {}; - - my @config_deps; - - if ($dist->{cpanmeta}) { - push @config_deps, App::cpanminus::Dependency->from_prereqs( - $dist->{cpanmeta}->effective_prereqs, ['configure'], $self->{install_types}, - ); - } - - if (-e 'Build.PL' && !$self->should_use_mm($dist->{dist}) && !@config_deps) { - push @config_deps, App::cpanminus::Dependency->from_versions( - { 'Module::Build' => '0.38' }, 'configure', - ); - } - - $self->merge_with_cpanfile($dist, \@config_deps); - - $self->upgrade_toolchain(\@config_deps); - - my $target = $dist->{meta}{name} ? "$dist->{meta}{name}-$dist->{meta}{version}" : $dist->{dir}; - { - $self->install_deps_bailout($target, $dist->{dir}, $depth, @config_deps) - or return; - } - - $self->diag_progress("Configuring $target"); - - my $configure_state = $self->configure_this($dist, $depth); - $self->diag_ok($configure_state->{configured_ok} ? "OK" : "N/A"); - - if ($dist->{cpanmeta} && $dist->{source} eq 'cpan') { - $dist->{provides} = $dist->{cpanmeta}{provides} || $self->extract_packages($dist->{cpanmeta}, "."); - } - - # install direct 'test' dependencies for --installdeps, even with --notest - my $root_target = (($self->{installdeps} or $self->{showdeps}) and $depth == 0); - $dist->{want_phases} = $self->{notest} && !$root_target - ? [qw( build runtime )] : [qw( build test runtime )]; - - push @{$dist->{want_phases}}, 'develop' if $self->{with_develop} && $depth == 0; - push @{$dist->{want_phases}}, 'configure' if $self->{with_configure} && $depth == 0; - - my @deps = $self->find_prereqs($dist); - my $module_name = $self->find_module_name($configure_state) || $dist->{meta}{name}; - $module_name =~ s/-/::/g; - - if ($self->{showdeps}) { - for my $dep (@config_deps, @deps) { - print $dep->module, ($dep->version ? ("~".$dep->version) : ""), "\n"; - } - return 1; - } - - my $distname = $dist->{meta}{name} ? "$dist->{meta}{name}-$dist->{meta}{version}" : $stuff; - - my $walkup; - if ($self->{scandeps}) { - $walkup = $self->scandeps_append_child($dist); - } - - $self->install_deps_bailout($distname, $dist->{dir}, $depth, @deps) - or return; - - if ($self->{scandeps}) { - unless ($configure_state->{configured_ok}) { - my $diag = <{log} for details. - ! You might have to install the following modules first to get --scandeps working correctly. - DIAG - if (@config_deps) { - my @tree = @{$self->{scandeps_tree}}; - $diag .= "!\n" . join("", map "! * $_->[0]{module}\n", @tree[0..$#tree-1]) if @tree; - } - $self->diag("!\n$diag!\n", 1); - } - $walkup->(); - return 1; - } - - if ($self->{installdeps} && $depth == 0) { - if ($configure_state->{configured_ok}) { - $self->diag("<== Installed dependencies for $stuff. Finishing.\n"); - return 1; - } else { - $self->diag("! Configuring $distname failed. See $self->{log} for details.\n", 1); - return; - } - } - - my $installed; - if ($configure_state->{use_module_build} && -e 'Build' && -f _) { - $self->diag_progress("Building " . ($self->{notest} ? "" : "and testing ") . $distname); - $self->build([ $self->{perl}, "./Build" ], $distname, $depth) && - $self->test([ $self->{perl}, "./Build", "test" ], $distname, $depth) && - $self->install([ $self->{perl}, "./Build", "install" ], [ "--uninst", 1 ], $depth) && - $installed++; - } elsif ($self->{make} && -e 'Makefile') { - $self->diag_progress("Building " . ($self->{notest} ? "" : "and testing ") . $distname); - $self->build([ $self->{make} ], $distname, $depth) && - $self->test([ $self->{make}, "test" ], $distname, $depth) && - $self->install([ $self->{make}, "install" ], [ "UNINST=1" ], $depth) && - $installed++; - } else { - my $why; - my $configure_failed = $configure_state->{configured} && !$configure_state->{configured_ok}; - if ($configure_failed) { $why = "Configure failed for $distname." } - elsif ($self->{make}) { $why = "The distribution doesn't have a proper Makefile.PL/Build.PL" } - else { $why = "Can't configure the distribution. You probably need to have 'make'." } - - $self->diag_fail("$why See $self->{log} for details.", 1); - return; - } - - if ($installed && $self->{test_only}) { - $self->diag_ok; - $self->diag("Successfully tested $distname\n", 1); - } elsif ($installed) { - my $local = $self->{local_versions}{$dist->{module} || ''}; - my $version = $dist->{module_version} || $dist->{meta}{version} || $dist->{version}; - my $reinstall = $local && ($local eq $version); - my $action = $local && !$reinstall - ? $self->numify_ver($version) < $self->numify_ver($local) - ? "downgraded" - : "upgraded" - : undef; - - my $how = $reinstall ? "reinstalled $distname" - : $local ? "installed $distname ($action from $local)" - : "installed $distname" ; - my $msg = "Successfully $how"; - $self->diag_ok; - $self->diag("$msg\n", 1); - $self->{installed_dists}++; - $self->save_meta($stuff, $dist, $module_name, \@config_deps, \@deps); - return 1; - } else { - my $what = $self->{test_only} ? "Testing" : "Installing"; - $self->diag_fail("$what $stuff failed. See $self->{log} for details. Retry with --force to force install it.", 1); - return; - } - } - - sub perl_requirements { - my($self, @requires) = @_; - - my @perl; - for my $requires (grep defined, @requires) { - if (exists $requires->{perl}) { - push @perl, App::cpanminus::Dependency->new(perl => $requires->{perl}); - } - } - - return @perl; - } - - sub should_use_mm { - my($self, $dist) = @_; - - # Module::Build deps should use MakeMaker because that causes circular deps and fail - # Otherwise we should prefer Build.PL - my %should_use_mm = map { $_ => 1 } qw( version ExtUtils-ParseXS ExtUtils-Install ExtUtils-Manifest ); - - $should_use_mm{$dist}; - } - - sub configure_this { - my($self, $dist, $depth) = @_; - - # Short-circuit `cpanm --installdeps .` because it doesn't need to build the current dir - if (-e $self->{cpanfile_path} && $self->{installdeps} && $depth == 0) { - require Module::CPANfile; - $dist->{cpanfile} = eval { Module::CPANfile->load($self->{cpanfile_path}) }; - $self->diag_fail($@, 1) if $@; - return { - configured => 1, - configured_ok => !!$dist->{cpanfile}, - use_module_build => 0, - }; - } - - if ($self->{skip_configure}) { - my $eumm = -e 'Makefile'; - my $mb = -e 'Build' && -f _; - return { - configured => 1, - configured_ok => $eumm || $mb, - use_module_build => $mb, - }; - } - - my $state = {}; - - my $try_eumm = sub { - if (-e 'Makefile.PL') { - $self->chat("Running Makefile.PL\n"); - - # NOTE: according to Devel::CheckLib, most XS modules exit - # with 0 even if header files are missing, to avoid receiving - # tons of FAIL reports in such cases. So exit code can't be - # trusted if it went well. - if ($self->configure([ $self->{perl}, "Makefile.PL" ], $depth)) { - $state->{configured_ok} = -e 'Makefile'; - } - $state->{configured}++; - } - }; - - my $try_mb = sub { - if (-e 'Build.PL') { - $self->chat("Running Build.PL\n"); - if ($self->configure([ $self->{perl}, "Build.PL" ], $depth)) { - $state->{configured_ok} = -e 'Build' && -f _; - } - $state->{use_module_build}++; - $state->{configured}++; - } - }; - - my @try; - if ($dist->{dist} && $self->should_use_mm($dist->{dist})) { - @try = ($try_eumm, $try_mb); - } else { - @try = ($try_mb, $try_eumm); - } - - for my $try (@try) { - $try->(); - last if $state->{configured_ok}; - } - - unless ($state->{configured_ok}) { - while (1) { - my $ans = lc $self->prompt("Configuring $dist->{dist} failed.\nYou can s)kip, r)etry, e)xamine build log, or l)ook ?", "s"); - last if $ans eq 's'; - return $self->configure_this($dist, $depth) if $ans eq 'r'; - $self->show_build_log if $ans eq 'e'; - $self->look if $ans eq 'l'; - } - } - - return $state; - } - - sub find_module_name { - my($self, $state) = @_; - - return unless $state->{configured_ok}; - - if ($state->{use_module_build} && - -e "_build/build_params") { - my $params = do { open my $in, "_build/build_params"; $self->safe_eval(join "", <$in>) }; - return eval { $params->[2]{module_name} } || undef; - } elsif (-e "Makefile") { - open my $mf, "Makefile"; - while (<$mf>) { - if (/^\#\s+NAME\s+=>\s+(.*)/) { - return $self->safe_eval($1); - } - } - } - - return; - } - - sub list_files { - my $self = shift; - - if (-e 'MANIFEST') { - require ExtUtils::Manifest; - my $manifest = eval { ExtUtils::Manifest::manifind() } || {}; - return sort { lc $a cmp lc $b } keys %$manifest; - } else { - require File::Find; - my @files; - my $finder = sub { - my $name = $File::Find::name; - $name =~ s!\.[/\\]!!; - push @files, $name; - }; - File::Find::find($finder, "."); - return sort { lc $a cmp lc $b } @files; - } - } - - sub extract_packages { - my($self, $meta, $dir) = @_; - - my $try = sub { - my $file = shift; - return 0 if $file =~ m!^(?:x?t|inc|local|perl5|fatlib|_build)/!; - return 1 unless $meta->{no_index}; - return 0 if grep { $file =~ m!^$_/! } @{$meta->{no_index}{directory} || []}; - return 0 if grep { $file eq $_ } @{$meta->{no_index}{file} || []}; - return 1; - }; - - require Parse::PMFile; - - my @files = grep { /\.pm(?:\.PL)?$/ && $try->($_) } $self->list_files; - - my $provides = { }; - - for my $file (@files) { - my $parser = Parse::PMFile->new($meta, { UNSAFE => 1, ALLOW_DEV_VERSION => 1 }); - my $packages = $parser->parse($file); - - while (my($package, $meta) = each %$packages) { - $provides->{$package} ||= { - file => $meta->{infile}, - ($meta->{version} eq 'undef') ? () : (version => $meta->{version}), - }; - } - } - - return $provides; - } - - sub save_meta { - my($self, $module, $dist, $module_name, $config_deps, $build_deps) = @_; - - return unless $dist->{distvname} && $dist->{source} eq 'cpan'; - - my $base = ($ENV{PERL_MM_OPT} || '') =~ /INSTALL_BASE=/ - ? ($self->install_base($ENV{PERL_MM_OPT}) . "/lib/perl5") : $Config{sitelibexp}; - - my $provides = $dist->{provides}; - - File::Path::mkpath("blib/meta", 0, 0777); - - my $local = { - name => $module_name, - target => $module, - version => exists $provides->{$module_name} - ? ($provides->{$module_name}{version} || $dist->{version}) : $dist->{version}, - dist => $dist->{distvname}, - pathname => $dist->{pathname}, - provides => $provides, - }; - - require JSON::PP; - open my $fh, ">", "blib/meta/install.json" or die $!; - print $fh JSON::PP::encode_json($local); - - # Existence of MYMETA.* Depends on EUMM/M::B versions and CPAN::Meta - if (-e "MYMETA.json") { - File::Copy::copy("MYMETA.json", "blib/meta/MYMETA.json"); - } - - my @cmd = ( - ($self->{sudo} ? 'sudo' : ()), - $^X, - '-MExtUtils::Install=install', - '-e', - qq[install({ 'blib/meta' => '$base/$Config{archname}/.meta/$dist->{distvname}' })], - ); - $self->run(\@cmd); - } - - sub _merge_hashref { - my($self, @hashrefs) = @_; - - my %hash; - for my $h (@hashrefs) { - %hash = (%hash, %$h); - } - - return \%hash; - } - - sub install_base { - my($self, $mm_opt) = @_; - $mm_opt =~ /INSTALL_BASE=(\S+)/ and return $1; - die "Your PERL_MM_OPT doesn't contain INSTALL_BASE"; - } - - sub safe_eval { - my($self, $code) = @_; - eval $code; - } - - sub configure_features { - my($self, $dist, @features) = @_; - map $_->identifier, grep { $self->effective_feature($dist, $_) } @features; - } - - sub effective_feature { - my($self, $dist, $feature) = @_; - - if ($dist->{depth} == 0) { - my $value = $self->{features}{$feature->identifier}; - return $value if defined $value; - return 1 if $self->{features}{__all}; - } - - if ($self->{interactive}) { - require CPAN::Meta::Requirements; - - $self->diag("[@{[ $feature->description ]}]\n", 1); - - my $req = CPAN::Meta::Requirements->new; - for my $phase (@{$dist->{want_phases}}) { - for my $type (@{$self->{install_types}}) { - $req->add_requirements($feature->prereqs->requirements_for($phase, $type)); - } - } - - my $reqs = $req->as_string_hash; - my @missing; - for my $module (keys %$reqs) { - if ($self->should_install($module, $req->{$module})) { - push @missing, $module; - } - } - - if (@missing) { - my $howmany = @missing; - $self->diag("==> Found missing dependencies: " . join(", ", @missing) . "\n", 1); - local $self->{prompt} = 1; - return $self->prompt_bool("Install the $howmany optional module(s)?", "y"); - } - } - - return; - } - - sub find_prereqs { - my($self, $dist) = @_; - - my @deps = $self->extract_meta_prereqs($dist); - - if ($dist->{module} =~ /^Bundle::/i) { - push @deps, $self->bundle_deps($dist); - } - - $self->merge_with_cpanfile($dist, \@deps); - - return @deps; - } - - sub merge_with_cpanfile { - my($self, $dist, $deps) = @_; - - if ($self->{cpanfile_requirements} && !$dist->{cpanfile}) { - for my $dep (@$deps) { - $dep->merge_with($self->{cpanfile_requirements}); - } - } - } - - sub extract_meta_prereqs { - my($self, $dist) = @_; - - if ($dist->{cpanfile}) { - my @features = $self->configure_features($dist, $dist->{cpanfile}->features); - my $prereqs = $dist->{cpanfile}->prereqs_with(@features); - # TODO: creating requirements is useful even without cpanfile to detect conflicting prereqs - $self->{cpanfile_requirements} = $prereqs->merged_requirements($dist->{want_phases}, ['requires']); - return App::cpanminus::Dependency->from_prereqs($prereqs, $dist->{want_phases}, $self->{install_types}); - } - - require CPAN::Meta; - - my @deps; - my($meta_file) = grep -f, qw(MYMETA.json MYMETA.yml); - if ($meta_file) { - $self->chat("Checking dependencies from $meta_file ...\n"); - my $mymeta = eval { CPAN::Meta->load_file($meta_file, { lazy_validation => 1 }) }; - if ($mymeta) { - $dist->{meta}{name} = $mymeta->name; - $dist->{meta}{version} = $mymeta->version; - return $self->extract_prereqs($mymeta, $dist); - } - } - - if (-e '_build/prereqs') { - $self->chat("Checking dependencies from _build/prereqs ...\n"); - my $prereqs = do { open my $in, "_build/prereqs"; $self->safe_eval(join "", <$in>) }; - my $meta = CPAN::Meta->new( - { name => $dist->{meta}{name}, version => $dist->{meta}{version}, %$prereqs }, - { lazy_validation => 1 }, - ); - @deps = $self->extract_prereqs($meta, $dist); - } elsif (-e 'Makefile') { - $self->chat("Finding PREREQ from Makefile ...\n"); - open my $mf, "Makefile"; - while (<$mf>) { - if (/^\#\s+PREREQ_PM => \{\s*(.*?)\s*\}/) { - my @all; - my @pairs = split ', ', $1; - for (@pairs) { - my ($pkg, $v) = split '=>', $_; - push @all, [ $pkg, $v ]; - } - my $list = join ", ", map { "'$_->[0]' => $_->[1]" } @all; - my $prereq = $self->safe_eval("no strict; +{ $list }"); - push @deps, App::cpanminus::Dependency->from_versions($prereq) if $prereq; - last; - } - } - } - - return @deps; - } - - sub bundle_deps { - my($self, $dist) = @_; - - my $match; - if ($dist->{module}) { - $match = sub { - my $meta = Module::Metadata->new_from_file($_[0]); - $meta && ($meta->name eq $dist->{module}); - }; - } else { - $match = sub { 1 }; - } - - my @files; - File::Find::find({ - wanted => sub { - push @files, File::Spec->rel2abs($_) if /\.pm$/i && $match->($_); - }, - no_chdir => 1, - }, '.'); - - my @deps; - - for my $file (@files) { - open my $pod, "<", $file or next; - my $in_contents; - while (<$pod>) { - if (/^=head\d\s+CONTENTS/) { - $in_contents = 1; - } elsif (/^=/) { - $in_contents = 0; - } elsif ($in_contents) { - /^(\S+)\s*(\S+)?/ - and push @deps, App::cpanminus::Dependency->new($1, $self->maybe_version($2)); - } - } - } - - return @deps; - } - - sub maybe_version { - my($self, $string) = @_; - return $string && $string =~ /^\.?\d/ ? $string : undef; - } - - sub extract_prereqs { - my($self, $meta, $dist) = @_; - - my @features = $self->configure_features($dist, $meta->features); - my $prereqs = $self->soften_makemaker_prereqs($meta->effective_prereqs(\@features)->clone); - - return App::cpanminus::Dependency->from_prereqs($prereqs, $dist->{want_phases}, $self->{install_types}); - } - - # Workaround for Module::Install 1.04 creating a bogus (higher) MakeMaker requirement that it needs in build_requires - # Assuming MakeMaker requirement is already satisfied in configure_requires, there's no need to have higher version of - # MakeMaker in build/test anyway. https://github.com/miyagawa/cpanminus/issues/463 - sub soften_makemaker_prereqs { - my($self, $prereqs) = @_; - - return $prereqs unless -e "inc/Module/Install.pm"; - - for my $phase (qw( build test runtime )) { - my $reqs = $prereqs->requirements_for($phase, 'requires'); - if ($reqs->requirements_for_module('ExtUtils::MakeMaker')) { - $reqs->clear_requirement('ExtUtils::MakeMaker'); - $reqs->add_minimum('ExtUtils::MakeMaker' => 0); - } - } - - $prereqs; - } - - sub cleanup_workdirs { - my $self = shift; - - my $expire = time - 24 * 60 * 60 * $self->{auto_cleanup}; - my @targets; - - opendir my $dh, "$self->{home}/work"; - while (my $e = readdir $dh) { - next if $e !~ /^(\d+)\.\d+$/; # {UNIX time}.{PID} - my $time = $1; - if ($time < $expire) { - push @targets, "$self->{home}/work/$e"; - } - } - - if (@targets) { - if (@targets >= 64) { - $self->diag("Expiring " . scalar(@targets) . " work directories. This might take a while...\n"); - } else { - $self->chat("Expiring " . scalar(@targets) . " work directories.\n"); - } - File::Path::rmtree(\@targets, 0, 0); # safe = 0, since blib usually doesn't have write bits - } - } - - sub scandeps_append_child { - my($self, $dist) = @_; - - my $new_node = [ $dist, [] ]; - - my $curr_node = $self->{scandeps_current} || [ undef, $self->{scandeps_tree} ]; - push @{$curr_node->[1]}, $new_node; - - $self->{scandeps_current} = $new_node; - - return sub { $self->{scandeps_current} = $curr_node }; - } - - sub dump_scandeps { - my $self = shift; - - if ($self->{format} eq 'tree') { - $self->walk_down(sub { - my($dist, $depth) = @_; - if ($depth == 0) { - print "$dist->{distvname}\n"; - } else { - print " " x ($depth - 1); - print "\\_ $dist->{distvname}\n"; - } - }, 1); - } elsif ($self->{format} =~ /^dists?$/) { - $self->walk_down(sub { - my($dist, $depth) = @_; - print $self->format_dist($dist), "\n"; - }, 0); - } elsif ($self->{format} eq 'json') { - require JSON::PP; - print JSON::PP::encode_json($self->{scandeps_tree}); - } elsif ($self->{format} eq 'yaml') { - require YAML; # no fatpack - print YAML::Dump($self->{scandeps_tree}); - } else { - $self->diag("Unknown format: $self->{format}\n"); - } - } - - sub walk_down { - my($self, $cb, $pre) = @_; - $self->_do_walk_down($self->{scandeps_tree}, $cb, 0, $pre); - } - - sub _do_walk_down { - my($self, $children, $cb, $depth, $pre) = @_; - - # DFS - $pre determines when we call the callback - for my $node (@$children) { - $cb->($node->[0], $depth) if $pre; - $self->_do_walk_down($node->[1], $cb, $depth + 1, $pre); - $cb->($node->[0], $depth) unless $pre; - } - } - - sub DESTROY { - my $self = shift; - $self->{at_exit}->($self) if $self->{at_exit}; - } - - # Utils - - sub shell_quote { - my($self, @stuff) = @_; - if (WIN32) { - join ' ', map { /^${quote}.+${quote}$/ ? $_ : ($quote . $_ . $quote) } @stuff; - } else { - String::ShellQuote::shell_quote_best_effort(@stuff); - } - } - - sub which { - my($self, $name) = @_; - if (File::Spec->file_name_is_absolute($name)) { - if (-x $name && !-d _) { - return $name; - } - } - my $exe_ext = $Config{_exe}; - for my $dir (File::Spec->path) { - my $fullpath = File::Spec->catfile($dir, $name); - if ((-x $fullpath || -x ($fullpath .= $exe_ext)) && !-d _) { - if ($fullpath =~ /\s/) { - $fullpath = $self->shell_quote($fullpath); - } - return $fullpath; - } - } - return; - } - - sub get { - my($self, $uri) = @_; - if ($uri =~ /^file:/) { - $self->file_get($uri); - } else { - $self->{_backends}{get}->(@_); - } - } - - sub mirror { - my($self, $uri, $local) = @_; - if ($uri =~ /^file:/) { - $self->file_mirror($uri, $local); - } else { - $self->{_backends}{mirror}->(@_); - } - } - - sub untar { $_[0]->{_backends}{untar}->(@_) }; - sub unzip { $_[0]->{_backends}{unzip}->(@_) }; - - sub uri_to_file { - my($self, $uri) = @_; - - # file:///path/to/file -> /path/to/file - # file://C:/path -> C:/path - if ($uri =~ s!file:/+!!) { - $uri = "/$uri" unless $uri =~ m![a-zA-Z]:!; - } - - return $uri; - } - - sub file_get { - my($self, $uri) = @_; - my $file = $self->uri_to_file($uri); - open my $fh, "<$file" or return; - join '', <$fh>; - } - - sub file_mirror { - my($self, $uri, $path) = @_; - my $file = $self->uri_to_file($uri); - - my $source_mtime = (stat $file)[9]; - - # Don't mirror a file that's already there (like the index) - return 1 if -e $path && (stat $path)[9] >= $source_mtime; - - File::Copy::copy($file, $path); - - utime $source_mtime, $source_mtime, $path; - } - - sub has_working_lwp { - my($self, $mirrors) = @_; - my $https = grep /^https:/, @$mirrors; - eval { - require LWP::UserAgent; # no fatpack - LWP::UserAgent->VERSION(5.802); - require LWP::Protocol::https if $https; # no fatpack - 1; - }; - } - - sub init_tools { - my $self = shift; - - return if $self->{initialized}++; - - if ($self->{make} = $self->which($Config{make})) { - $self->chat("You have make $self->{make}\n"); - } - - # use --no-lwp if they have a broken LWP, to upgrade LWP - if ($self->{try_lwp} && $self->has_working_lwp($self->{mirrors})) { - $self->chat("You have LWP $LWP::VERSION\n"); - my $ua = sub { - LWP::UserAgent->new( - parse_head => 0, - env_proxy => 1, - agent => $self->agent, - timeout => 30, - @_, - ); - }; - $self->{_backends}{get} = sub { - my $self = shift; - my $res = $ua->()->request(HTTP::Request->new(GET => $_[0])); - return unless $res->is_success; - return $res->decoded_content; - }; - $self->{_backends}{mirror} = sub { - my $self = shift; - my $res = $ua->()->mirror(@_); - die $res->content if $res->code == 501; - $res->code; - }; - } elsif ($self->{try_wget} and my $wget = $self->which('wget')) { - $self->chat("You have $wget\n"); - my @common = ( - '--user-agent', $self->agent, - '--retry-connrefused', - ($self->{verbose} ? () : ('-q')), - ); - $self->{_backends}{get} = sub { - my($self, $uri) = @_; - $self->safeexec( my $fh, $wget, $uri, @common, '-O', '-' ) or die "wget $uri: $!"; - local $/; - <$fh>; - }; - $self->{_backends}{mirror} = sub { - my($self, $uri, $path) = @_; - $self->safeexec( my $fh, $wget, $uri, @common, '-O', $path ) or die "wget $uri: $!"; - local $/; - <$fh>; - }; - } elsif ($self->{try_curl} and my $curl = $self->which('curl')) { - $self->chat("You have $curl\n"); - my @common = ( - '--location', - '--user-agent', $self->agent, - ($self->{verbose} ? () : '-s'), - ); - $self->{_backends}{get} = sub { - my($self, $uri) = @_; - $self->safeexec( my $fh, $curl, @common, $uri ) or die "curl $uri: $!"; - local $/; - <$fh>; - }; - $self->{_backends}{mirror} = sub { - my($self, $uri, $path) = @_; - $self->safeexec( my $fh, $curl, @common, $uri, '-#', '-o', $path ) or die "curl $uri: $!"; - local $/; - <$fh>; - }; - } else { - require HTTP::Tiny; - $self->chat("Falling back to HTTP::Tiny $HTTP::Tiny::VERSION\n"); - my %common = ( - agent => $self->agent, - ); - $self->{_backends}{get} = sub { - my $self = shift; - my $res = HTTP::Tiny->new(%common)->get($_[0]); - return unless $res->{success}; - return $res->{content}; - }; - $self->{_backends}{mirror} = sub { - my $self = shift; - my $res = HTTP::Tiny->new(%common)->mirror(@_); - return $res->{status}; - }; - } - - my $tar = $self->which('tar'); - my $tar_ver; - my $maybe_bad_tar = sub { WIN32 || BAD_TAR || (($tar_ver = `$tar --version 2>/dev/null`) =~ /GNU.*1\.13/i) }; - - if ($tar && !$maybe_bad_tar->()) { - chomp $tar_ver; - $self->chat("You have $tar: $tar_ver\n"); - $self->{_backends}{untar} = sub { - my($self, $tarfile) = @_; - - my $xf = ($self->{verbose} ? 'v' : '')."xf"; - my $ar = $tarfile =~ /bz2$/ ? 'j' : 'z'; - - my($root, @others) = `$tar ${ar}tf $tarfile` - or return undef; - - FILE: { - chomp $root; - $root =~ s!^\./!!; - $root =~ s{^(.+?)/.*$}{$1}; - - if (!length($root)) { - # archive had ./ as the first entry, so try again - $root = shift(@others); - redo FILE if $root; - } - } - - system "$tar $ar$xf $tarfile"; - return $root if -d $root; - - $self->diag_fail("Bad archive: $tarfile"); - return undef; - } - } elsif ( $tar - and my $gzip = $self->which('gzip') - and my $bzip2 = $self->which('bzip2')) { - $self->chat("You have $tar, $gzip and $bzip2\n"); - $self->{_backends}{untar} = sub { - my($self, $tarfile) = @_; - - my $x = "x" . ($self->{verbose} ? 'v' : '') . "f -"; - my $ar = $tarfile =~ /bz2$/ ? $bzip2 : $gzip; - - my($root, @others) = `$ar -dc $tarfile | $tar tf -` - or return undef; - - FILE: { - chomp $root; - $root =~ s!^\./!!; - $root =~ s{^(.+?)/.*$}{$1}; - - if (!length($root)) { - # archive had ./ as the first entry, so try again - $root = shift(@others); - redo FILE if $root; - } - } - - system "$ar -dc $tarfile | $tar $x"; - return $root if -d $root; - - $self->diag_fail("Bad archive: $tarfile"); - return undef; - } - } elsif (eval { require Archive::Tar }) { # uses too much memory! - $self->chat("Falling back to Archive::Tar $Archive::Tar::VERSION\n"); - $self->{_backends}{untar} = sub { - my $self = shift; - my $t = Archive::Tar->new($_[0]); - my($root, @others) = $t->list_files; - FILE: { - $root =~ s!^\./!!; - $root =~ s{^(.+?)/.*$}{$1}; - - if (!length($root)) { - # archive had ./ as the first entry, so try again - $root = shift(@others); - redo FILE if $root; - } - } - $t->extract; - return -d $root ? $root : undef; - }; - } else { - $self->{_backends}{untar} = sub { - die "Failed to extract $_[1] - You need to have tar or Archive::Tar installed.\n"; - }; - } - - if (my $unzip = $self->which('unzip')) { - $self->chat("You have $unzip\n"); - $self->{_backends}{unzip} = sub { - my($self, $zipfile) = @_; - - my $opt = $self->{verbose} ? '' : '-q'; - my(undef, $root, @others) = `$unzip -t $zipfile` - or return undef; - FILE: { - chomp $root; - if ($root !~ s{^\s+testing:\s+([^/]+)/.*?\s+OK$}{$1}) { - $root = shift(@others); - redo FILE if $root; - } - } - - system "$unzip $opt $zipfile"; - return $root if -d $root; - - $self->diag_fail("Bad archive: [$root] $zipfile"); - return undef; - } - } else { - $self->{_backends}{unzip} = sub { - eval { require Archive::Zip } - or die "Failed to extract $_[1] - You need to have unzip or Archive::Zip installed.\n"; - my($self, $file) = @_; - my $zip = Archive::Zip->new(); - my $status; - $status = $zip->read($file); - $self->diag_fail("Read of file[$file] failed") - if $status != Archive::Zip::AZ_OK(); - my @members = $zip->members(); - for my $member ( @members ) { - my $af = $member->fileName(); - next if ($af =~ m!^(/|\.\./)!); - $status = $member->extractToFileNamed( $af ); - $self->diag_fail("Extracting of file[$af] from zipfile[$file failed") - if $status != Archive::Zip::AZ_OK(); - } - - my ($root) = $zip->membersMatching( qr<^[^/]+/$> ); - $root &&= $root->fileName; - return -d $root ? $root : undef; - }; - } - } - - sub safeexec { - my $self = shift; - my $rdr = $_[0] ||= Symbol::gensym(); - - if (WIN32) { - my $cmd = $self->shell_quote(@_[1..$#_]); - return open( $rdr, "$cmd |" ); - } - - if ( my $pid = open( $rdr, '-|' ) ) { - return $pid; - } - elsif ( defined $pid ) { - exec( @_[ 1 .. $#_ ] ); - exit 1; - } - else { - return; - } - } - - sub mask_uri_passwords { - my($self, @strings) = @_; - s{ (https?://) ([^:/]+) : [^@/]+ @ }{$1$2:********@}gx for @strings; - return @strings; - } - - 1; -APP_CPANMINUS_SCRIPT - -$fatpacked{"CPAN/DistnameInfo.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_DISTNAMEINFO'; - - package CPAN::DistnameInfo; - - $VERSION = "0.12"; - use strict; - - sub distname_info { - my $file = shift or return; - - my ($dist, $version) = $file =~ /^ - ((?:[-+.]*(?:[A-Za-z0-9]+|(?<=\D)_|_(?=\D))* - (?: - [A-Za-z](?=[^A-Za-z]|$) - | - \d(?=-) - )(? 6 and $1 & 1) or ($2 and $2 >= 50)) or $3; - } - elsif ($version =~ /\d\D\d+_\d/ or $version =~ /-TRIAL/) { - $dev = 1; - } - } - else { - $version = undef; - } - - ($dist, $version, $dev); - } - - sub new { - my $class = shift; - my $distfile = shift; - - $distfile =~ s,//+,/,g; - - my %info = ( pathname => $distfile ); - - ($info{filename} = $distfile) =~ s,^(((.*?/)?authors/)?id/)?([A-Z])/(\4[A-Z])/(\5[-A-Z0-9]*)/,, - and $info{cpanid} = $6; - - if ($distfile =~ m,([^/]+)\.(tar\.(?:g?z|bz2)|zip|tgz)$,i) { # support more ? - $info{distvname} = $1; - $info{extension} = $2; - } - - @info{qw(dist version beta)} = distname_info($info{distvname}); - $info{maturity} = delete $info{beta} ? 'developer' : 'released'; - - return bless \%info, $class; - } - - sub dist { shift->{dist} } - sub version { shift->{version} } - sub maturity { shift->{maturity} } - sub filename { shift->{filename} } - sub cpanid { shift->{cpanid} } - sub distvname { shift->{distvname} } - sub extension { shift->{extension} } - sub pathname { shift->{pathname} } - - sub properties { %{ $_[0] } } - - 1; - - __END__ - - =head1 NAME - - CPAN::DistnameInfo - Extract distribution name and version from a distribution filename - - =head1 SYNOPSIS - - my $pathname = "authors/id/G/GB/GBARR/CPAN-DistnameInfo-0.02.tar.gz"; - - my $d = CPAN::DistnameInfo->new($pathname); - - my $dist = $d->dist; # "CPAN-DistnameInfo" - my $version = $d->version; # "0.02" - my $maturity = $d->maturity; # "released" - my $filename = $d->filename; # "CPAN-DistnameInfo-0.02.tar.gz" - my $cpanid = $d->cpanid; # "GBARR" - my $distvname = $d->distvname; # "CPAN-DistnameInfo-0.02" - my $extension = $d->extension; # "tar.gz" - my $pathname = $d->pathname; # "authors/id/G/GB/GBARR/..." - - my %prop = $d->properties; - - =head1 DESCRIPTION - - Many online services that are centered around CPAN attempt to - associate multiple uploads by extracting a distribution name from - the filename of the upload. For most distributions this is easy as - they have used ExtUtils::MakeMaker or Module::Build to create the - distribution, which results in a uniform name. But sadly not all - uploads are created in this way. - - C uses heuristics that have been learnt by - L to extract the distribution name and - version from filenames and also report if the version is to be - treated as a developer release - - The constructor takes a single pathname, returning an object with the following methods - - =over - - =item cpanid - - If the path given looked like a CPAN authors directory path, then this will be the - the CPAN id of the author. - - =item dist - - The name of the distribution - - =item distvname - - The file name with any suffix and leading directory names removed - - =item filename - - If the path given looked like a CPAN authors directory path, then this will be the - path to the file relative to the detected CPAN author directory. Otherwise it is the path - that was passed in. - - =item maturity - - The maturity of the distribution. This will be either C or C - - =item extension - - The extension of the distribution, often used to denote the archive type (e.g. 'tar.gz') - - =item pathname - - The pathname that was passed to the constructor when creating the object. - - =item properties - - This will return a list of key-value pairs, suitable for assigning to a hash, - for the known properties. - - =item version - - The extracted version - - =back - - =head1 AUTHOR - - Graham Barr - - =head1 COPYRIGHT - - Copyright (c) 2003 Graham Barr. All rights reserved. This program is - free software; you can redistribute it and/or modify it under the same - terms as Perl itself. - - =cut - -CPAN_DISTNAMEINFO - -$fatpacked{"CPAN/Meta.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META'; - use 5.006; - use strict; - use warnings; - package CPAN::Meta; - - our $VERSION = '2.150005'; - - #pod =head1 SYNOPSIS - #pod - #pod use v5.10; - #pod use strict; - #pod use warnings; - #pod use CPAN::Meta; - #pod use Module::Load; - #pod - #pod my $meta = CPAN::Meta->load_file('META.json'); - #pod - #pod printf "testing requirements for %s version %s\n", - #pod $meta->name, - #pod $meta->version; - #pod - #pod my $prereqs = $meta->effective_prereqs; - #pod - #pod for my $phase ( qw/configure runtime build test/ ) { - #pod say "Requirements for $phase:"; - #pod my $reqs = $prereqs->requirements_for($phase, "requires"); - #pod for my $module ( sort $reqs->required_modules ) { - #pod my $status; - #pod if ( eval { load $module unless $module eq 'perl'; 1 } ) { - #pod my $version = $module eq 'perl' ? $] : $module->VERSION; - #pod $status = $reqs->accepts_module($module, $version) - #pod ? "$version ok" : "$version not ok"; - #pod } else { - #pod $status = "missing" - #pod }; - #pod say " $module ($status)"; - #pod } - #pod } - #pod - #pod =head1 DESCRIPTION - #pod - #pod Software distributions released to the CPAN include a F or, for - #pod older distributions, F, which describes the distribution, its - #pod contents, and the requirements for building and installing the distribution. - #pod The data structure stored in the F file is described in - #pod L. - #pod - #pod CPAN::Meta provides a simple class to represent this distribution metadata (or - #pod I), along with some helpful methods for interrogating that data. - #pod - #pod The documentation below is only for the methods of the CPAN::Meta object. For - #pod information on the meaning of individual fields, consult the spec. - #pod - #pod =cut - - use Carp qw(carp croak); - use CPAN::Meta::Feature; - use CPAN::Meta::Prereqs; - use CPAN::Meta::Converter; - use CPAN::Meta::Validator; - use Parse::CPAN::Meta 1.4414 (); - - BEGIN { *_dclone = \&CPAN::Meta::Converter::_dclone } - - #pod =head1 STRING DATA - #pod - #pod The following methods return a single value, which is the value for the - #pod corresponding entry in the distmeta structure. Values should be either undef - #pod or strings. - #pod - #pod =for :list - #pod * abstract - #pod * description - #pod * dynamic_config - #pod * generated_by - #pod * name - #pod * release_status - #pod * version - #pod - #pod =cut - - BEGIN { - my @STRING_READERS = qw( - abstract - description - dynamic_config - generated_by - name - release_status - version - ); - - no strict 'refs'; - for my $attr (@STRING_READERS) { - *$attr = sub { $_[0]{ $attr } }; - } - } - - #pod =head1 LIST DATA - #pod - #pod These methods return lists of string values, which might be represented in the - #pod distmeta structure as arrayrefs or scalars: - #pod - #pod =for :list - #pod * authors - #pod * keywords - #pod * licenses - #pod - #pod The C and C methods may also be called as C and - #pod C, respectively, to match the field name in the distmeta structure. - #pod - #pod =cut - - BEGIN { - my @LIST_READERS = qw( - author - keywords - license - ); - - no strict 'refs'; - for my $attr (@LIST_READERS) { - *$attr = sub { - my $value = $_[0]{ $attr }; - croak "$attr must be called in list context" - unless wantarray; - return @{ _dclone($value) } if ref $value; - return $value; - }; - } - } - - sub authors { $_[0]->author } - sub licenses { $_[0]->license } - - #pod =head1 MAP DATA - #pod - #pod These readers return hashrefs of arbitrary unblessed data structures, each - #pod described more fully in the specification: - #pod - #pod =for :list - #pod * meta_spec - #pod * resources - #pod * provides - #pod * no_index - #pod * prereqs - #pod * optional_features - #pod - #pod =cut - - BEGIN { - my @MAP_READERS = qw( - meta-spec - resources - provides - no_index - - prereqs - optional_features - ); - - no strict 'refs'; - for my $attr (@MAP_READERS) { - (my $subname = $attr) =~ s/-/_/; - *$subname = sub { - my $value = $_[0]{ $attr }; - return _dclone($value) if $value; - return {}; - }; - } - } - - #pod =head1 CUSTOM DATA - #pod - #pod A list of custom keys are available from the C method and - #pod particular keys may be retrieved with the C method. - #pod - #pod say $meta->custom($_) for $meta->custom_keys; - #pod - #pod If a custom key refers to a data structure, a deep clone is returned. - #pod - #pod =cut - - sub custom_keys { - return grep { /^x_/i } keys %{$_[0]}; - } - - sub custom { - my ($self, $attr) = @_; - my $value = $self->{$attr}; - return _dclone($value) if ref $value; - return $value; - } - - #pod =method new - #pod - #pod my $meta = CPAN::Meta->new($distmeta_struct, \%options); - #pod - #pod Returns a valid CPAN::Meta object or dies if the supplied metadata hash - #pod reference fails to validate. Older-format metadata will be up-converted to - #pod version 2 if they validate against the original stated specification. - #pod - #pod It takes an optional hashref of options. Valid options include: - #pod - #pod =over - #pod - #pod =item * - #pod - #pod lazy_validation -- if true, new will attempt to convert the given metadata - #pod to version 2 before attempting to validate it. This means than any - #pod fixable errors will be handled by CPAN::Meta::Converter before validation. - #pod (Note that this might result in invalid optional data being silently - #pod dropped.) The default is false. - #pod - #pod =back - #pod - #pod =cut - - sub _new { - my ($class, $struct, $options) = @_; - my $self; - - if ( $options->{lazy_validation} ) { - # try to convert to a valid structure; if succeeds, then return it - my $cmc = CPAN::Meta::Converter->new( $struct ); - $self = $cmc->convert( version => 2 ); # valid or dies - return bless $self, $class; - } - else { - # validate original struct - my $cmv = CPAN::Meta::Validator->new( $struct ); - unless ( $cmv->is_valid) { - die "Invalid metadata structure. Errors: " - . join(", ", $cmv->errors) . "\n"; - } - } - - # up-convert older spec versions - my $version = $struct->{'meta-spec'}{version} || '1.0'; - if ( $version == 2 ) { - $self = $struct; - } - else { - my $cmc = CPAN::Meta::Converter->new( $struct ); - $self = $cmc->convert( version => 2 ); - } - - return bless $self, $class; - } - - sub new { - my ($class, $struct, $options) = @_; - my $self = eval { $class->_new($struct, $options) }; - croak($@) if $@; - return $self; - } - - #pod =method create - #pod - #pod my $meta = CPAN::Meta->create($distmeta_struct, \%options); - #pod - #pod This is same as C, except that C and C fields - #pod will be generated if not provided. This means the metadata structure is - #pod assumed to otherwise follow the latest L. - #pod - #pod =cut - - sub create { - my ($class, $struct, $options) = @_; - my $version = __PACKAGE__->VERSION || 2; - $struct->{generated_by} ||= __PACKAGE__ . " version $version" ; - $struct->{'meta-spec'}{version} ||= int($version); - my $self = eval { $class->_new($struct, $options) }; - croak ($@) if $@; - return $self; - } - - #pod =method load_file - #pod - #pod my $meta = CPAN::Meta->load_file($distmeta_file, \%options); - #pod - #pod Given a pathname to a file containing metadata, this deserializes the file - #pod according to its file suffix and constructs a new C object, just - #pod like C. It will die if the deserialized version fails to validate - #pod against its stated specification version. - #pod - #pod It takes the same options as C but C defaults to - #pod true. - #pod - #pod =cut - - sub load_file { - my ($class, $file, $options) = @_; - $options->{lazy_validation} = 1 unless exists $options->{lazy_validation}; - - croak "load_file() requires a valid, readable filename" - unless -r $file; - - my $self; - eval { - my $struct = Parse::CPAN::Meta->load_file( $file ); - $self = $class->_new($struct, $options); - }; - croak($@) if $@; - return $self; - } - - #pod =method load_yaml_string - #pod - #pod my $meta = CPAN::Meta->load_yaml_string($yaml, \%options); - #pod - #pod This method returns a new CPAN::Meta object using the first document in the - #pod given YAML string. In other respects it is identical to C. - #pod - #pod =cut - - sub load_yaml_string { - my ($class, $yaml, $options) = @_; - $options->{lazy_validation} = 1 unless exists $options->{lazy_validation}; - - my $self; - eval { - my ($struct) = Parse::CPAN::Meta->load_yaml_string( $yaml ); - $self = $class->_new($struct, $options); - }; - croak($@) if $@; - return $self; - } - - #pod =method load_json_string - #pod - #pod my $meta = CPAN::Meta->load_json_string($json, \%options); - #pod - #pod This method returns a new CPAN::Meta object using the structure represented by - #pod the given JSON string. In other respects it is identical to C. - #pod - #pod =cut - - sub load_json_string { - my ($class, $json, $options) = @_; - $options->{lazy_validation} = 1 unless exists $options->{lazy_validation}; - - my $self; - eval { - my $struct = Parse::CPAN::Meta->load_json_string( $json ); - $self = $class->_new($struct, $options); - }; - croak($@) if $@; - return $self; - } - - #pod =method load_string - #pod - #pod my $meta = CPAN::Meta->load_string($string, \%options); - #pod - #pod If you don't know if a string contains YAML or JSON, this method will use - #pod L to guess. In other respects it is identical to - #pod C. - #pod - #pod =cut - - sub load_string { - my ($class, $string, $options) = @_; - $options->{lazy_validation} = 1 unless exists $options->{lazy_validation}; - - my $self; - eval { - my $struct = Parse::CPAN::Meta->load_string( $string ); - $self = $class->_new($struct, $options); - }; - croak($@) if $@; - return $self; - } - - #pod =method save - #pod - #pod $meta->save($distmeta_file, \%options); - #pod - #pod Serializes the object as JSON and writes it to the given file. The only valid - #pod option is C, which defaults to '2'. On Perl 5.8.1 or later, the file - #pod is saved with UTF-8 encoding. - #pod - #pod For C 2 (or higher), the filename should end in '.json'. L - #pod is the default JSON backend. Using another JSON backend requires L 2.5 or - #pod later and you must set the C<$ENV{PERL_JSON_BACKEND}> to a supported alternate - #pod backend like L. - #pod - #pod For C less than 2, the filename should end in '.yml'. - #pod L is used to generate an older metadata structure, which - #pod is serialized to YAML. CPAN::Meta::YAML is the default YAML backend. You may - #pod set the C<$ENV{PERL_YAML_BACKEND}> to a supported alternative backend, though - #pod this is not recommended due to subtle incompatibilities between YAML parsers on - #pod CPAN. - #pod - #pod =cut - - sub save { - my ($self, $file, $options) = @_; - - my $version = $options->{version} || '2'; - my $layer = $] ge '5.008001' ? ':utf8' : ''; - - if ( $version ge '2' ) { - carp "'$file' should end in '.json'" - unless $file =~ m{\.json$}; - } - else { - carp "'$file' should end in '.yml'" - unless $file =~ m{\.yml$}; - } - - my $data = $self->as_string( $options ); - open my $fh, ">$layer", $file - or die "Error opening '$file' for writing: $!\n"; - - print {$fh} $data; - close $fh - or die "Error closing '$file': $!\n"; - - return 1; - } - - #pod =method meta_spec_version - #pod - #pod This method returns the version part of the C entry in the distmeta - #pod structure. It is equivalent to: - #pod - #pod $meta->meta_spec->{version}; - #pod - #pod =cut - - sub meta_spec_version { - my ($self) = @_; - return $self->meta_spec->{version}; - } - - #pod =method effective_prereqs - #pod - #pod my $prereqs = $meta->effective_prereqs; - #pod - #pod my $prereqs = $meta->effective_prereqs( \@feature_identifiers ); - #pod - #pod This method returns a L object describing all the - #pod prereqs for the distribution. If an arrayref of feature identifiers is given, - #pod the prereqs for the identified features are merged together with the - #pod distribution's core prereqs before the CPAN::Meta::Prereqs object is returned. - #pod - #pod =cut - - sub effective_prereqs { - my ($self, $features) = @_; - $features ||= []; - - my $prereq = CPAN::Meta::Prereqs->new($self->prereqs); - - return $prereq unless @$features; - - my @other = map {; $self->feature($_)->prereqs } @$features; - - return $prereq->with_merged_prereqs(\@other); - } - - #pod =method should_index_file - #pod - #pod ... if $meta->should_index_file( $filename ); - #pod - #pod This method returns true if the given file should be indexed. It decides this - #pod by checking the C and C keys in the C property of - #pod the distmeta structure. Note that neither the version format nor - #pod C are considered. - #pod - #pod C<$filename> should be given in unix format. - #pod - #pod =cut - - sub should_index_file { - my ($self, $filename) = @_; - - for my $no_index_file (@{ $self->no_index->{file} || [] }) { - return if $filename eq $no_index_file; - } - - for my $no_index_dir (@{ $self->no_index->{directory} }) { - $no_index_dir =~ s{$}{/} unless $no_index_dir =~ m{/\z}; - return if index($filename, $no_index_dir) == 0; - } - - return 1; - } - - #pod =method should_index_package - #pod - #pod ... if $meta->should_index_package( $package ); - #pod - #pod This method returns true if the given package should be indexed. It decides - #pod this by checking the C and C keys in the C - #pod property of the distmeta structure. Note that neither the version format nor - #pod C are considered. - #pod - #pod =cut - - sub should_index_package { - my ($self, $package) = @_; - - for my $no_index_pkg (@{ $self->no_index->{package} || [] }) { - return if $package eq $no_index_pkg; - } - - for my $no_index_ns (@{ $self->no_index->{namespace} }) { - return if index($package, "${no_index_ns}::") == 0; - } - - return 1; - } - - #pod =method features - #pod - #pod my @feature_objects = $meta->features; - #pod - #pod This method returns a list of L objects, one for each - #pod optional feature described by the distribution's metadata. - #pod - #pod =cut - - sub features { - my ($self) = @_; - - my $opt_f = $self->optional_features; - my @features = map {; CPAN::Meta::Feature->new($_ => $opt_f->{ $_ }) } - keys %$opt_f; - - return @features; - } - - #pod =method feature - #pod - #pod my $feature_object = $meta->feature( $identifier ); - #pod - #pod This method returns a L object for the optional feature - #pod with the given identifier. If no feature with that identifier exists, an - #pod exception will be raised. - #pod - #pod =cut - - sub feature { - my ($self, $ident) = @_; - - croak "no feature named $ident" - unless my $f = $self->optional_features->{ $ident }; - - return CPAN::Meta::Feature->new($ident, $f); - } - - #pod =method as_struct - #pod - #pod my $copy = $meta->as_struct( \%options ); - #pod - #pod This method returns a deep copy of the object's metadata as an unblessed hash - #pod reference. It takes an optional hashref of options. If the hashref contains - #pod a C argument, the copied metadata will be converted to the version - #pod of the specification and returned. For example: - #pod - #pod my $old_spec = $meta->as_struct( {version => "1.4"} ); - #pod - #pod =cut - - sub as_struct { - my ($self, $options) = @_; - my $struct = _dclone($self); - if ( $options->{version} ) { - my $cmc = CPAN::Meta::Converter->new( $struct ); - $struct = $cmc->convert( version => $options->{version} ); - } - return $struct; - } - - #pod =method as_string - #pod - #pod my $string = $meta->as_string( \%options ); - #pod - #pod This method returns a serialized copy of the object's metadata as a character - #pod string. (The strings are B UTF-8 encoded.) It takes an optional hashref - #pod of options. If the hashref contains a C argument, the copied metadata - #pod will be converted to the version of the specification and returned. For - #pod example: - #pod - #pod my $string = $meta->as_string( {version => "1.4"} ); - #pod - #pod For C greater than or equal to 2, the string will be serialized as - #pod JSON. For C less than 2, the string will be serialized as YAML. In - #pod both cases, the same rules are followed as in the C method for choosing - #pod a serialization backend. - #pod - #pod The serialized structure will include a C entry giving - #pod the package and version used to serialize. Any existing key in the given - #pod C<$meta> object will be clobbered. - #pod - #pod =cut - - sub as_string { - my ($self, $options) = @_; - - my $version = $options->{version} || '2'; - - my $struct; - if ( $self->meta_spec_version ne $version ) { - my $cmc = CPAN::Meta::Converter->new( $self->as_struct ); - $struct = $cmc->convert( version => $version ); - } - else { - $struct = $self->as_struct; - } - - my ($data, $backend); - if ( $version ge '2' ) { - $backend = Parse::CPAN::Meta->json_backend(); - local $struct->{x_serialization_backend} = sprintf '%s version %s', - $backend, $backend->VERSION; - $data = $backend->new->pretty->canonical->encode($struct); - } - else { - $backend = Parse::CPAN::Meta->yaml_backend(); - local $struct->{x_serialization_backend} = sprintf '%s version %s', - $backend, $backend->VERSION; - $data = eval { no strict 'refs'; &{"$backend\::Dump"}($struct) }; - if ( $@ ) { - croak $backend->can('errstr') ? $backend->errstr : $@ - } - } - - return $data; - } - - # Used by JSON::PP, etc. for "convert_blessed" - sub TO_JSON { - return { %{ $_[0] } }; - } - - 1; - - # ABSTRACT: the distribution metadata for a CPAN dist - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta - the distribution metadata for a CPAN dist - - =head1 VERSION - - version 2.150005 - - =head1 SYNOPSIS - - use v5.10; - use strict; - use warnings; - use CPAN::Meta; - use Module::Load; - - my $meta = CPAN::Meta->load_file('META.json'); - - printf "testing requirements for %s version %s\n", - $meta->name, - $meta->version; - - my $prereqs = $meta->effective_prereqs; - - for my $phase ( qw/configure runtime build test/ ) { - say "Requirements for $phase:"; - my $reqs = $prereqs->requirements_for($phase, "requires"); - for my $module ( sort $reqs->required_modules ) { - my $status; - if ( eval { load $module unless $module eq 'perl'; 1 } ) { - my $version = $module eq 'perl' ? $] : $module->VERSION; - $status = $reqs->accepts_module($module, $version) - ? "$version ok" : "$version not ok"; - } else { - $status = "missing" - }; - say " $module ($status)"; - } - } - - =head1 DESCRIPTION - - Software distributions released to the CPAN include a F or, for - older distributions, F, which describes the distribution, its - contents, and the requirements for building and installing the distribution. - The data structure stored in the F file is described in - L. - - CPAN::Meta provides a simple class to represent this distribution metadata (or - I), along with some helpful methods for interrogating that data. - - The documentation below is only for the methods of the CPAN::Meta object. For - information on the meaning of individual fields, consult the spec. - - =head1 METHODS - - =head2 new - - my $meta = CPAN::Meta->new($distmeta_struct, \%options); - - Returns a valid CPAN::Meta object or dies if the supplied metadata hash - reference fails to validate. Older-format metadata will be up-converted to - version 2 if they validate against the original stated specification. - - It takes an optional hashref of options. Valid options include: - - =over - - =item * - - lazy_validation -- if true, new will attempt to convert the given metadata - to version 2 before attempting to validate it. This means than any - fixable errors will be handled by CPAN::Meta::Converter before validation. - (Note that this might result in invalid optional data being silently - dropped.) The default is false. - - =back - - =head2 create - - my $meta = CPAN::Meta->create($distmeta_struct, \%options); - - This is same as C, except that C and C fields - will be generated if not provided. This means the metadata structure is - assumed to otherwise follow the latest L. - - =head2 load_file - - my $meta = CPAN::Meta->load_file($distmeta_file, \%options); - - Given a pathname to a file containing metadata, this deserializes the file - according to its file suffix and constructs a new C object, just - like C. It will die if the deserialized version fails to validate - against its stated specification version. - - It takes the same options as C but C defaults to - true. - - =head2 load_yaml_string - - my $meta = CPAN::Meta->load_yaml_string($yaml, \%options); - - This method returns a new CPAN::Meta object using the first document in the - given YAML string. In other respects it is identical to C. - - =head2 load_json_string - - my $meta = CPAN::Meta->load_json_string($json, \%options); - - This method returns a new CPAN::Meta object using the structure represented by - the given JSON string. In other respects it is identical to C. - - =head2 load_string - - my $meta = CPAN::Meta->load_string($string, \%options); - - If you don't know if a string contains YAML or JSON, this method will use - L to guess. In other respects it is identical to - C. - - =head2 save - - $meta->save($distmeta_file, \%options); - - Serializes the object as JSON and writes it to the given file. The only valid - option is C, which defaults to '2'. On Perl 5.8.1 or later, the file - is saved with UTF-8 encoding. - - For C 2 (or higher), the filename should end in '.json'. L - is the default JSON backend. Using another JSON backend requires L 2.5 or - later and you must set the C<$ENV{PERL_JSON_BACKEND}> to a supported alternate - backend like L. - - For C less than 2, the filename should end in '.yml'. - L is used to generate an older metadata structure, which - is serialized to YAML. CPAN::Meta::YAML is the default YAML backend. You may - set the C<$ENV{PERL_YAML_BACKEND}> to a supported alternative backend, though - this is not recommended due to subtle incompatibilities between YAML parsers on - CPAN. - - =head2 meta_spec_version - - This method returns the version part of the C entry in the distmeta - structure. It is equivalent to: - - $meta->meta_spec->{version}; - - =head2 effective_prereqs - - my $prereqs = $meta->effective_prereqs; - - my $prereqs = $meta->effective_prereqs( \@feature_identifiers ); - - This method returns a L object describing all the - prereqs for the distribution. If an arrayref of feature identifiers is given, - the prereqs for the identified features are merged together with the - distribution's core prereqs before the CPAN::Meta::Prereqs object is returned. - - =head2 should_index_file - - ... if $meta->should_index_file( $filename ); - - This method returns true if the given file should be indexed. It decides this - by checking the C and C keys in the C property of - the distmeta structure. Note that neither the version format nor - C are considered. - - C<$filename> should be given in unix format. - - =head2 should_index_package - - ... if $meta->should_index_package( $package ); - - This method returns true if the given package should be indexed. It decides - this by checking the C and C keys in the C - property of the distmeta structure. Note that neither the version format nor - C are considered. - - =head2 features - - my @feature_objects = $meta->features; - - This method returns a list of L objects, one for each - optional feature described by the distribution's metadata. - - =head2 feature - - my $feature_object = $meta->feature( $identifier ); - - This method returns a L object for the optional feature - with the given identifier. If no feature with that identifier exists, an - exception will be raised. - - =head2 as_struct - - my $copy = $meta->as_struct( \%options ); - - This method returns a deep copy of the object's metadata as an unblessed hash - reference. It takes an optional hashref of options. If the hashref contains - a C argument, the copied metadata will be converted to the version - of the specification and returned. For example: - - my $old_spec = $meta->as_struct( {version => "1.4"} ); - - =head2 as_string - - my $string = $meta->as_string( \%options ); - - This method returns a serialized copy of the object's metadata as a character - string. (The strings are B UTF-8 encoded.) It takes an optional hashref - of options. If the hashref contains a C argument, the copied metadata - will be converted to the version of the specification and returned. For - example: - - my $string = $meta->as_string( {version => "1.4"} ); - - For C greater than or equal to 2, the string will be serialized as - JSON. For C less than 2, the string will be serialized as YAML. In - both cases, the same rules are followed as in the C method for choosing - a serialization backend. - - The serialized structure will include a C entry giving - the package and version used to serialize. Any existing key in the given - C<$meta> object will be clobbered. - - =head1 STRING DATA - - The following methods return a single value, which is the value for the - corresponding entry in the distmeta structure. Values should be either undef - or strings. - - =over 4 - - =item * - - abstract - - =item * - - description - - =item * - - dynamic_config - - =item * - - generated_by - - =item * - - name - - =item * - - release_status - - =item * - - version - - =back - - =head1 LIST DATA - - These methods return lists of string values, which might be represented in the - distmeta structure as arrayrefs or scalars: - - =over 4 - - =item * - - authors - - =item * - - keywords - - =item * - - licenses - - =back - - The C and C methods may also be called as C and - C, respectively, to match the field name in the distmeta structure. - - =head1 MAP DATA - - These readers return hashrefs of arbitrary unblessed data structures, each - described more fully in the specification: - - =over 4 - - =item * - - meta_spec - - =item * - - resources - - =item * - - provides - - =item * - - no_index - - =item * - - prereqs - - =item * - - optional_features - - =back - - =head1 CUSTOM DATA - - A list of custom keys are available from the C method and - particular keys may be retrieved with the C method. - - say $meta->custom($_) for $meta->custom_keys; - - If a custom key refers to a data structure, a deep clone is returned. - - =for Pod::Coverage TO_JSON abstract author authors custom custom_keys description dynamic_config - generated_by keywords license licenses meta_spec name no_index - optional_features prereqs provides release_status resources version - - =head1 BUGS - - Please report any bugs or feature using the CPAN Request Tracker. - Bugs can be submitted through the web interface at - L - - When submitting a bug or request, please include a test-file or a patch to an - existing test-file that illustrates the bug or desired feature. - - =head1 SEE ALSO - - =over 4 - - =item * - - L - - =item * - - L - - =back - - =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - - =head1 SUPPORT - - =head2 Bugs / Feature Requests - - Please report any bugs or feature requests through the issue tracker - at L. - You will be notified automatically of any progress on your issue. - - =head2 Source Code - - This is open source software. The code repository is available for - public review and contribution under the terms of the license. - - L - - git clone https://github.com/Perl-Toolchain-Gang/CPAN-Meta.git - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 CONTRIBUTORS - - =for stopwords Ansgar Burchardt Avar Arnfjord Bjarmason Christopher J. Madsen Chuck Adams Cory G Watson Damyan Ivanov Eric Wilhelm Graham Knop Gregor Hermann Karen Etheridge Kenichi Ishigaki Ken Williams Lars Dieckow Leon Timmermans majensen Mark Fowler Matt S Trout Michael G. Schwern mohawk2 moznion Niko Tyni Olaf Alders Olivier MenguĆ© Randy Sims Tomohiro Hosaka - - =over 4 - - =item * - - Ansgar Burchardt - - =item * - - Avar Arnfjord Bjarmason - - =item * - - Christopher J. Madsen - - =item * - - Chuck Adams - - =item * - - Cory G Watson - - =item * - - Damyan Ivanov - - =item * - - Eric Wilhelm - - =item * - - Graham Knop - - =item * - - Gregor Hermann - - =item * - - Karen Etheridge - - =item * - - Kenichi Ishigaki - - =item * - - Ken Williams - - =item * - - Lars Dieckow - - =item * - - Leon Timmermans - - =item * - - majensen - - =item * - - Mark Fowler - - =item * - - Matt S Trout - - =item * - - Michael G. Schwern - - =item * - - mohawk2 - - =item * - - moznion - - =item * - - Niko Tyni - - =item * - - Olaf Alders - - =item * - - Olivier MenguĆ© - - =item * - - Randy Sims - - =item * - - Tomohiro Hosaka - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # vim: ts=2 sts=2 sw=2 et : -CPAN_META - -$fatpacked{"CPAN/Meta/Check.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_CHECK'; - package CPAN::Meta::Check; - $CPAN::Meta::Check::VERSION = '0.012'; - use strict; - use warnings; - - use base 'Exporter'; - our @EXPORT = qw//; - our @EXPORT_OK = qw/check_requirements requirements_for verify_dependencies/; - our %EXPORT_TAGS = (all => [ @EXPORT, @EXPORT_OK ] ); - - use CPAN::Meta::Prereqs '2.132830'; - use CPAN::Meta::Requirements 2.121; - use Module::Metadata 1.000023; - - sub _check_dep { - my ($reqs, $module, $dirs) = @_; - - $module eq 'perl' and return ($reqs->accepts_module($module, $]) ? () : sprintf "Your Perl (%s) is not in the range '%s'", $], $reqs->requirements_for_module($module)); - - my $metadata = Module::Metadata->new_from_module($module, inc => $dirs); - return "Module '$module' is not installed" if not defined $metadata; - my $version = eval { $metadata->version }; - return "Missing version info for module '$module'" if $reqs->requirements_for_module($module) and not $version; - return sprintf 'Installed version (%s) of %s is not in range \'%s\'', $version, $module, $reqs->requirements_for_module($module) if not $reqs->accepts_module($module, $version || 0); - return; - } - - sub _check_conflict { - my ($reqs, $module, $dirs) = @_; - my $metadata = Module::Metadata->new_from_module($module, inc => $dirs); - return if not defined $metadata; - my $version = eval { $metadata->version }; - return "Missing version info for module '$module'" if not $version; - return sprintf 'Installed version (%s) of %s is in range \'%s\'', $version, $module, $reqs->requirements_for_module($module) if $reqs->accepts_module($module, $version); - return; - } - - sub requirements_for { - my ($meta, $phases, $type) = @_; - my $prereqs = ref($meta) eq 'CPAN::Meta' ? $meta->effective_prereqs : $meta; - return $prereqs->merged_requirements(ref($phases) ? $phases : [ $phases ], [ $type ]); - } - - sub check_requirements { - my ($reqs, $type, $dirs) = @_; - - return +{ - map { - $_ => $type ne 'conflicts' - ? scalar _check_dep($reqs, $_, $dirs) - : scalar _check_conflict($reqs, $_, $dirs) - } $reqs->required_modules - }; - } - - sub verify_dependencies { - my ($meta, $phases, $type, $dirs) = @_; - my $reqs = requirements_for($meta, $phases, $type); - my $issues = check_requirements($reqs, $type, $dirs); - return grep { defined } values %{ $issues }; - } - - 1; - - #ABSTRACT: Verify requirements in a CPAN::Meta object - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Check - Verify requirements in a CPAN::Meta object - - =head1 VERSION - - version 0.012 - - =head1 SYNOPSIS - - warn "$_\n" for verify_dependencies($meta, [qw/runtime build test/], 'requires'); - - =head1 DESCRIPTION - - This module verifies if requirements described in a CPAN::Meta object are present. - - =head1 FUNCTIONS - - =head2 check_requirements($reqs, $type, $incdirs) - - This function checks if all dependencies in C<$reqs> (a L object) are met, taking into account that 'conflicts' dependencies have to be checked in reverse. It returns a hash with the modules as keys and any problems as values; the value for a successfully found module will be undef. Modules are searched for in C<@$incdirs>, defaulting to C<@INC>. - - =head2 verify_dependencies($meta, $phases, $types, $incdirs) - - Check all requirements in C<$meta> for phases C<$phases> and type C<$type>. Modules are searched for in C<@$incdirs>, defaulting to C<@INC>. C<$meta> should be a L or L object. - - =head2 requirements_for($meta, $phases, $types) - - B<< This function is deprecated and may be removed at some point in the future, please use CPAN::Meta::Prereqs->merged_requirements instead. >> - - This function returns a unified L object for all C<$type> requirements for C<$phases>. C<$phases> may be either one (scalar) value or an arrayref of valid values as defined by the L. C<$type> must be a relationship as defined by the same spec. C<$meta> should be a L or L object. - - =head1 SEE ALSO - - =over 4 - - =item * L - - =item * L - - =for comment # vi:noet:sts=2:sw=2:ts=2 - - =back - - =head1 AUTHOR - - Leon Timmermans - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2012 by Leon Timmermans. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -CPAN_META_CHECK - -$fatpacked{"CPAN/Meta/Converter.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_CONVERTER'; - use 5.006; - use strict; - use warnings; - package CPAN::Meta::Converter; - - our $VERSION = '2.150005'; - - #pod =head1 SYNOPSIS - #pod - #pod my $struct = decode_json_file('META.json'); - #pod - #pod my $cmc = CPAN::Meta::Converter->new( $struct ); - #pod - #pod my $new_struct = $cmc->convert( version => "2" ); - #pod - #pod =head1 DESCRIPTION - #pod - #pod This module converts CPAN Meta structures from one form to another. The - #pod primary use is to convert older structures to the most modern version of - #pod the specification, but other transformations may be implemented in the - #pod future as needed. (E.g. stripping all custom fields or stripping all - #pod optional fields.) - #pod - #pod =cut - - use CPAN::Meta::Validator; - use CPAN::Meta::Requirements; - use Parse::CPAN::Meta 1.4400 (); - - # To help ExtUtils::MakeMaker bootstrap CPAN::Meta::Requirements on perls - # before 5.10, we fall back to the EUMM bundled compatibility version module if - # that's the only thing available. This shouldn't ever happen in a normal CPAN - # install of CPAN::Meta::Requirements, as version.pm will be picked up from - # prereqs and be available at runtime. - - BEGIN { - eval "use version ()"; ## no critic - if ( my $err = $@ ) { - eval "use ExtUtils::MakeMaker::version" or die $err; ## no critic - } - } - - # Perl 5.10.0 didn't have "is_qv" in version.pm - *_is_qv = version->can('is_qv') ? sub { $_[0]->is_qv } : sub { exists $_[0]->{qv} }; - - sub _dclone { - my $ref = shift; - - # if an object is in the data structure and doesn't specify how to - # turn itself into JSON, we just stringify the object. That does the - # right thing for typical things that might be there, like version objects, - # Path::Class objects, etc. - no warnings 'once'; - no warnings 'redefine'; - local *UNIVERSAL::TO_JSON = sub { "$_[0]" }; - - my $json = Parse::CPAN::Meta->json_backend()->new - ->utf8 - ->allow_blessed - ->convert_blessed; - $json->decode($json->encode($ref)) - } - - my %known_specs = ( - '2' => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec', - '1.4' => 'http://module-build.sourceforge.net/META-spec-v1.4.html', - '1.3' => 'http://module-build.sourceforge.net/META-spec-v1.3.html', - '1.2' => 'http://module-build.sourceforge.net/META-spec-v1.2.html', - '1.1' => 'http://module-build.sourceforge.net/META-spec-v1.1.html', - '1.0' => 'http://module-build.sourceforge.net/META-spec-v1.0.html' - ); - - my @spec_list = sort { $a <=> $b } keys %known_specs; - my ($LOWEST, $HIGHEST) = @spec_list[0,-1]; - - #--------------------------------------------------------------------------# - # converters - # - # called as $converter->($element, $field_name, $full_meta, $to_version) - # - # defined return value used for field - # undef return value means field is skipped - #--------------------------------------------------------------------------# - - sub _keep { $_[0] } - - sub _keep_or_one { defined($_[0]) ? $_[0] : 1 } - - sub _keep_or_zero { defined($_[0]) ? $_[0] : 0 } - - sub _keep_or_unknown { defined($_[0]) && length($_[0]) ? $_[0] : "unknown" } - - sub _generated_by { - my $gen = shift; - my $sig = __PACKAGE__ . " version " . (__PACKAGE__->VERSION || ""); - - return $sig unless defined $gen and length $gen; - return $gen if $gen =~ /\Q$sig/; - return "$gen, $sig"; - } - - sub _listify { ! defined $_[0] ? undef : ref $_[0] eq 'ARRAY' ? $_[0] : [$_[0]] } - - sub _prefix_custom { - my $key = shift; - $key =~ s/^(?!x_) # Unless it already starts with x_ - (?:x-?)? # Remove leading x- or x (if present) - /x_/ix; # and prepend x_ - return $key; - } - - sub _ucfirst_custom { - my $key = shift; - $key = ucfirst $key unless $key =~ /[A-Z]/; - return $key; - } - - sub _no_prefix_ucfirst_custom { - my $key = shift; - $key =~ s/^x_//; - return _ucfirst_custom($key); - } - - sub _change_meta_spec { - my ($element, undef, undef, $version) = @_; - return { - version => $version, - url => $known_specs{$version}, - }; - } - - my @open_source = ( - 'perl', - 'gpl', - 'apache', - 'artistic', - 'artistic_2', - 'lgpl', - 'bsd', - 'gpl', - 'mit', - 'mozilla', - 'open_source', - ); - - my %is_open_source = map {; $_ => 1 } @open_source; - - my @valid_licenses_1 = ( - @open_source, - 'unrestricted', - 'restrictive', - 'unknown', - ); - - my %license_map_1 = ( - ( map { $_ => $_ } @valid_licenses_1 ), - artistic2 => 'artistic_2', - ); - - sub _license_1 { - my ($element) = @_; - return 'unknown' unless defined $element; - if ( $license_map_1{lc $element} ) { - return $license_map_1{lc $element}; - } - else { - return 'unknown'; - } - } - - my @valid_licenses_2 = qw( - agpl_3 - apache_1_1 - apache_2_0 - artistic_1 - artistic_2 - bsd - freebsd - gfdl_1_2 - gfdl_1_3 - gpl_1 - gpl_2 - gpl_3 - lgpl_2_1 - lgpl_3_0 - mit - mozilla_1_0 - mozilla_1_1 - openssl - perl_5 - qpl_1_0 - ssleay - sun - zlib - open_source - restricted - unrestricted - unknown - ); - - # The "old" values were defined by Module::Build, and were often vague. I have - # made the decisions below based on reading Module::Build::API and how clearly - # it specifies the version of the license. - my %license_map_2 = ( - (map { $_ => $_ } @valid_licenses_2), - apache => 'apache_2_0', # clearly stated as 2.0 - artistic => 'artistic_1', # clearly stated as 1 - artistic2 => 'artistic_2', # clearly stated as 2 - gpl => 'open_source', # we don't know which GPL; punt - lgpl => 'open_source', # we don't know which LGPL; punt - mozilla => 'open_source', # we don't know which MPL; punt - perl => 'perl_5', # clearly Perl 5 - restrictive => 'restricted', - ); - - sub _license_2 { - my ($element) = @_; - return [ 'unknown' ] unless defined $element; - $element = [ $element ] unless ref $element eq 'ARRAY'; - my @new_list; - for my $lic ( @$element ) { - next unless defined $lic; - if ( my $new = $license_map_2{lc $lic} ) { - push @new_list, $new; - } - } - return @new_list ? \@new_list : [ 'unknown' ]; - } - - my %license_downgrade_map = qw( - agpl_3 open_source - apache_1_1 apache - apache_2_0 apache - artistic_1 artistic - artistic_2 artistic_2 - bsd bsd - freebsd open_source - gfdl_1_2 open_source - gfdl_1_3 open_source - gpl_1 gpl - gpl_2 gpl - gpl_3 gpl - lgpl_2_1 lgpl - lgpl_3_0 lgpl - mit mit - mozilla_1_0 mozilla - mozilla_1_1 mozilla - openssl open_source - perl_5 perl - qpl_1_0 open_source - ssleay open_source - sun open_source - zlib open_source - open_source open_source - restricted restrictive - unrestricted unrestricted - unknown unknown - ); - - sub _downgrade_license { - my ($element) = @_; - if ( ! defined $element ) { - return "unknown"; - } - elsif( ref $element eq 'ARRAY' ) { - if ( @$element > 1) { - if (grep { !$is_open_source{ $license_downgrade_map{lc $_} || 'unknown' } } @$element) { - return 'unknown'; - } - else { - return 'open_source'; - } - } - elsif ( @$element == 1 ) { - return $license_downgrade_map{lc $element->[0]} || "unknown"; - } - } - elsif ( ! ref $element ) { - return $license_downgrade_map{lc $element} || "unknown"; - } - return "unknown"; - } - - my $no_index_spec_1_2 = { - 'file' => \&_listify, - 'dir' => \&_listify, - 'package' => \&_listify, - 'namespace' => \&_listify, - }; - - my $no_index_spec_1_3 = { - 'file' => \&_listify, - 'directory' => \&_listify, - 'package' => \&_listify, - 'namespace' => \&_listify, - }; - - my $no_index_spec_2 = { - 'file' => \&_listify, - 'directory' => \&_listify, - 'package' => \&_listify, - 'namespace' => \&_listify, - ':custom' => \&_prefix_custom, - }; - - sub _no_index_1_2 { - my (undef, undef, $meta) = @_; - my $no_index = $meta->{no_index} || $meta->{private}; - return unless $no_index; - - # cleanup wrong format - if ( ! ref $no_index ) { - my $item = $no_index; - $no_index = { dir => [ $item ], file => [ $item ] }; - } - elsif ( ref $no_index eq 'ARRAY' ) { - my $list = $no_index; - $no_index = { dir => [ @$list ], file => [ @$list ] }; - } - - # common mistake: files -> file - if ( exists $no_index->{files} ) { - $no_index->{file} = delete $no_index->{files}; - } - # common mistake: modules -> module - if ( exists $no_index->{modules} ) { - $no_index->{module} = delete $no_index->{modules}; - } - return _convert($no_index, $no_index_spec_1_2); - } - - sub _no_index_directory { - my ($element, $key, $meta, $version) = @_; - return unless $element; - - # cleanup wrong format - if ( ! ref $element ) { - my $item = $element; - $element = { directory => [ $item ], file => [ $item ] }; - } - elsif ( ref $element eq 'ARRAY' ) { - my $list = $element; - $element = { directory => [ @$list ], file => [ @$list ] }; - } - - if ( exists $element->{dir} ) { - $element->{directory} = delete $element->{dir}; - } - # common mistake: files -> file - if ( exists $element->{files} ) { - $element->{file} = delete $element->{files}; - } - # common mistake: modules -> module - if ( exists $element->{modules} ) { - $element->{module} = delete $element->{modules}; - } - my $spec = $version == 2 ? $no_index_spec_2 : $no_index_spec_1_3; - return _convert($element, $spec); - } - - sub _is_module_name { - my $mod = shift; - return unless defined $mod && length $mod; - return $mod =~ m{^[A-Za-z][A-Za-z0-9_]*(?:::[A-Za-z0-9_]+)*$}; - } - - sub _clean_version { - my ($element) = @_; - return 0 if ! defined $element; - - $element =~ s{^\s*}{}; - $element =~ s{\s*$}{}; - $element =~ s{^\.}{0.}; - - return 0 if ! length $element; - return 0 if ( $element eq 'undef' || $element eq '' ); - - my $v = eval { version->new($element) }; - # XXX check defined $v and not just $v because version objects leak memory - # in boolean context -- dagolden, 2012-02-03 - if ( defined $v ) { - return _is_qv($v) ? $v->normal : $element; - } - else { - return 0; - } - } - - sub _bad_version_hook { - my ($v) = @_; - $v =~ s{^\s*}{}; - $v =~ s{\s*$}{}; - $v =~ s{[a-z]+$}{}; # strip trailing alphabetics - my $vobj = eval { version->new($v) }; - return defined($vobj) ? $vobj : version->new(0); # or give up - } - - sub _version_map { - my ($element) = @_; - return unless defined $element; - if ( ref $element eq 'HASH' ) { - # XXX turn this into CPAN::Meta::Requirements with bad version hook - # and then turn it back into a hash - my $new_map = CPAN::Meta::Requirements->new( - { bad_version_hook => \&_bad_version_hook } # punt - ); - while ( my ($k,$v) = each %$element ) { - next unless _is_module_name($k); - if ( !defined($v) || !length($v) || $v eq 'undef' || $v eq '' ) { - $v = 0; - } - # some weird, old META have bad yml with module => module - # so check if value is like a module name and not like a version - if ( _is_module_name($v) && ! version::is_lax($v) ) { - $new_map->add_minimum($k => 0); - $new_map->add_minimum($v => 0); - } - $new_map->add_string_requirement($k => $v); - } - return $new_map->as_string_hash; - } - elsif ( ref $element eq 'ARRAY' ) { - my $hashref = { map { $_ => 0 } @$element }; - return _version_map($hashref); # cleanup any weird stuff - } - elsif ( ref $element eq '' && length $element ) { - return { $element => 0 } - } - return; - } - - sub _prereqs_from_1 { - my (undef, undef, $meta) = @_; - my $prereqs = {}; - for my $phase ( qw/build configure/ ) { - my $key = "${phase}_requires"; - $prereqs->{$phase}{requires} = _version_map($meta->{$key}) - if $meta->{$key}; - } - for my $rel ( qw/requires recommends conflicts/ ) { - $prereqs->{runtime}{$rel} = _version_map($meta->{$rel}) - if $meta->{$rel}; - } - return $prereqs; - } - - my $prereqs_spec = { - configure => \&_prereqs_rel, - build => \&_prereqs_rel, - test => \&_prereqs_rel, - runtime => \&_prereqs_rel, - develop => \&_prereqs_rel, - ':custom' => \&_prefix_custom, - }; - - my $relation_spec = { - requires => \&_version_map, - recommends => \&_version_map, - suggests => \&_version_map, - conflicts => \&_version_map, - ':custom' => \&_prefix_custom, - }; - - sub _cleanup_prereqs { - my ($prereqs, $key, $meta, $to_version) = @_; - return unless $prereqs && ref $prereqs eq 'HASH'; - return _convert( $prereqs, $prereqs_spec, $to_version ); - } - - sub _prereqs_rel { - my ($relation, $key, $meta, $to_version) = @_; - return unless $relation && ref $relation eq 'HASH'; - return _convert( $relation, $relation_spec, $to_version ); - } - - - BEGIN { - my @old_prereqs = qw( - requires - configure_requires - recommends - conflicts - ); - - for ( @old_prereqs ) { - my $sub = "_get_$_"; - my ($phase,$type) = split qr/_/, $_; - if ( ! defined $type ) { - $type = $phase; - $phase = 'runtime'; - } - no strict 'refs'; - *{$sub} = sub { _extract_prereqs($_[2]->{prereqs},$phase,$type) }; - } - } - - sub _get_build_requires { - my ($data, $key, $meta) = @_; - - my $test_h = _extract_prereqs($_[2]->{prereqs}, qw(test requires)) || {}; - my $build_h = _extract_prereqs($_[2]->{prereqs}, qw(build requires)) || {}; - - my $test_req = CPAN::Meta::Requirements->from_string_hash($test_h); - my $build_req = CPAN::Meta::Requirements->from_string_hash($build_h); - - $test_req->add_requirements($build_req)->as_string_hash; - } - - sub _extract_prereqs { - my ($prereqs, $phase, $type) = @_; - return unless ref $prereqs eq 'HASH'; - return scalar _version_map($prereqs->{$phase}{$type}); - } - - sub _downgrade_optional_features { - my (undef, undef, $meta) = @_; - return unless exists $meta->{optional_features}; - my $origin = $meta->{optional_features}; - my $features = {}; - for my $name ( keys %$origin ) { - $features->{$name} = { - description => $origin->{$name}{description}, - requires => _extract_prereqs($origin->{$name}{prereqs},'runtime','requires'), - configure_requires => _extract_prereqs($origin->{$name}{prereqs},'runtime','configure_requires'), - build_requires => _extract_prereqs($origin->{$name}{prereqs},'runtime','build_requires'), - recommends => _extract_prereqs($origin->{$name}{prereqs},'runtime','recommends'), - conflicts => _extract_prereqs($origin->{$name}{prereqs},'runtime','conflicts'), - }; - for my $k (keys %{$features->{$name}} ) { - delete $features->{$name}{$k} unless defined $features->{$name}{$k}; - } - } - return $features; - } - - sub _upgrade_optional_features { - my (undef, undef, $meta) = @_; - return unless exists $meta->{optional_features}; - my $origin = $meta->{optional_features}; - my $features = {}; - for my $name ( keys %$origin ) { - $features->{$name} = { - description => $origin->{$name}{description}, - prereqs => _prereqs_from_1(undef, undef, $origin->{$name}), - }; - delete $features->{$name}{prereqs}{configure}; - } - return $features; - } - - my $optional_features_2_spec = { - description => \&_keep, - prereqs => \&_cleanup_prereqs, - ':custom' => \&_prefix_custom, - }; - - sub _feature_2 { - my ($element, $key, $meta, $to_version) = @_; - return unless $element && ref $element eq 'HASH'; - _convert( $element, $optional_features_2_spec, $to_version ); - } - - sub _cleanup_optional_features_2 { - my ($element, $key, $meta, $to_version) = @_; - return unless $element && ref $element eq 'HASH'; - my $new_data = {}; - for my $k ( keys %$element ) { - $new_data->{$k} = _feature_2( $element->{$k}, $k, $meta, $to_version ); - } - return unless keys %$new_data; - return $new_data; - } - - sub _optional_features_1_4 { - my ($element) = @_; - return unless $element; - $element = _optional_features_as_map($element); - for my $name ( keys %$element ) { - for my $drop ( qw/requires_packages requires_os excluded_os/ ) { - delete $element->{$name}{$drop}; - } - } - return $element; - } - - sub _optional_features_as_map { - my ($element) = @_; - return unless $element; - if ( ref $element eq 'ARRAY' ) { - my %map; - for my $feature ( @$element ) { - my (@parts) = %$feature; - $map{$parts[0]} = $parts[1]; - } - $element = \%map; - } - return $element; - } - - sub _is_urlish { defined $_[0] && $_[0] =~ m{\A[-+.a-z0-9]+:.+}i } - - sub _url_or_drop { - my ($element) = @_; - return $element if _is_urlish($element); - return; - } - - sub _url_list { - my ($element) = @_; - return unless $element; - $element = _listify( $element ); - $element = [ grep { _is_urlish($_) } @$element ]; - return unless @$element; - return $element; - } - - sub _author_list { - my ($element) = @_; - return [ 'unknown' ] unless $element; - $element = _listify( $element ); - $element = [ map { defined $_ && length $_ ? $_ : 'unknown' } @$element ]; - return [ 'unknown' ] unless @$element; - return $element; - } - - my $resource2_upgrade = { - license => sub { return _is_urlish($_[0]) ? _listify( $_[0] ) : undef }, - homepage => \&_url_or_drop, - bugtracker => sub { - my ($item) = @_; - return unless $item; - if ( $item =~ m{^mailto:(.*)$} ) { return { mailto => $1 } } - elsif( _is_urlish($item) ) { return { web => $item } } - else { return } - }, - repository => sub { return _is_urlish($_[0]) ? { url => $_[0] } : undef }, - ':custom' => \&_prefix_custom, - }; - - sub _upgrade_resources_2 { - my (undef, undef, $meta, $version) = @_; - return unless exists $meta->{resources}; - return _convert($meta->{resources}, $resource2_upgrade); - } - - my $bugtracker2_spec = { - web => \&_url_or_drop, - mailto => \&_keep, - ':custom' => \&_prefix_custom, - }; - - sub _repo_type { - my ($element, $key, $meta, $to_version) = @_; - return $element if defined $element; - return unless exists $meta->{url}; - my $repo_url = $meta->{url}; - for my $type ( qw/git svn/ ) { - return $type if $repo_url =~ m{\A$type}; - } - return; - } - - my $repository2_spec = { - web => \&_url_or_drop, - url => \&_url_or_drop, - type => \&_repo_type, - ':custom' => \&_prefix_custom, - }; - - my $resources2_cleanup = { - license => \&_url_list, - homepage => \&_url_or_drop, - bugtracker => sub { ref $_[0] ? _convert( $_[0], $bugtracker2_spec ) : undef }, - repository => sub { my $data = shift; ref $data ? _convert( $data, $repository2_spec ) : undef }, - ':custom' => \&_prefix_custom, - }; - - sub _cleanup_resources_2 { - my ($resources, $key, $meta, $to_version) = @_; - return unless $resources && ref $resources eq 'HASH'; - return _convert($resources, $resources2_cleanup, $to_version); - } - - my $resource1_spec = { - license => \&_url_or_drop, - homepage => \&_url_or_drop, - bugtracker => \&_url_or_drop, - repository => \&_url_or_drop, - ':custom' => \&_keep, - }; - - sub _resources_1_3 { - my (undef, undef, $meta, $version) = @_; - return unless exists $meta->{resources}; - return _convert($meta->{resources}, $resource1_spec); - } - - *_resources_1_4 = *_resources_1_3; - - sub _resources_1_2 { - my (undef, undef, $meta) = @_; - my $resources = $meta->{resources} || {}; - if ( $meta->{license_url} && ! $resources->{license} ) { - $resources->{license} = $meta->{license_url} - if _is_urlish($meta->{license_url}); - } - return unless keys %$resources; - return _convert($resources, $resource1_spec); - } - - my $resource_downgrade_spec = { - license => sub { return ref $_[0] ? $_[0]->[0] : $_[0] }, - homepage => \&_url_or_drop, - bugtracker => sub { return $_[0]->{web} }, - repository => sub { return $_[0]->{url} || $_[0]->{web} }, - ':custom' => \&_no_prefix_ucfirst_custom, - }; - - sub _downgrade_resources { - my (undef, undef, $meta, $version) = @_; - return unless exists $meta->{resources}; - return _convert($meta->{resources}, $resource_downgrade_spec); - } - - sub _release_status { - my ($element, undef, $meta) = @_; - return $element if $element && $element =~ m{\A(?:stable|testing|unstable)\z}; - return _release_status_from_version(undef, undef, $meta); - } - - sub _release_status_from_version { - my (undef, undef, $meta) = @_; - my $version = $meta->{version} || ''; - return ( $version =~ /_/ ) ? 'testing' : 'stable'; - } - - my $provides_spec = { - file => \&_keep, - version => \&_keep, - }; - - my $provides_spec_2 = { - file => \&_keep, - version => \&_keep, - ':custom' => \&_prefix_custom, - }; - - sub _provides { - my ($element, $key, $meta, $to_version) = @_; - return unless defined $element && ref $element eq 'HASH'; - my $spec = $to_version == 2 ? $provides_spec_2 : $provides_spec; - my $new_data = {}; - for my $k ( keys %$element ) { - $new_data->{$k} = _convert($element->{$k}, $spec, $to_version); - $new_data->{$k}{version} = _clean_version($element->{$k}{version}) - if exists $element->{$k}{version}; - } - return $new_data; - } - - sub _convert { - my ($data, $spec, $to_version, $is_fragment) = @_; - - my $new_data = {}; - for my $key ( keys %$spec ) { - next if $key eq ':custom' || $key eq ':drop'; - next unless my $fcn = $spec->{$key}; - if ( $is_fragment && $key eq 'generated_by' ) { - $fcn = \&_keep; - } - die "spec for '$key' is not a coderef" - unless ref $fcn && ref $fcn eq 'CODE'; - my $new_value = $fcn->($data->{$key}, $key, $data, $to_version); - $new_data->{$key} = $new_value if defined $new_value; - } - - my $drop_list = $spec->{':drop'}; - my $customizer = $spec->{':custom'} || \&_keep; - - for my $key ( keys %$data ) { - next if $drop_list && grep { $key eq $_ } @$drop_list; - next if exists $spec->{$key}; # we handled it - $new_data->{ $customizer->($key) } = $data->{$key}; - } - - return $new_data; - } - - #--------------------------------------------------------------------------# - # define converters for each conversion - #--------------------------------------------------------------------------# - - # each converts from prior version - # special ":custom" field is used for keys not recognized in spec - my %up_convert = ( - '2-from-1.4' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_2, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # CHANGED TO MANDATORY - 'dynamic_config' => \&_keep_or_one, - # ADDED MANDATORY - 'release_status' => \&_release_status, - # PRIOR OPTIONAL - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_upgrade_optional_features, - 'provides' => \&_provides, - 'resources' => \&_upgrade_resources_2, - # ADDED OPTIONAL - 'description' => \&_keep, - 'prereqs' => \&_prereqs_from_1, - - # drop these deprecated fields, but only after we convert - ':drop' => [ qw( - build_requires - configure_requires - conflicts - distribution_type - license_url - private - recommends - requires - ) ], - - # other random keys need x_ prefixing - ':custom' => \&_prefix_custom, - }, - '1.4-from-1.3' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_optional_features_1_4, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_4, - # ADDED OPTIONAL - 'configure_requires' => \&_keep, - - # drop these deprecated fields, but only after we convert - ':drop' => [ qw( - license_url - private - )], - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.3-from-1.2' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_3, - - # drop these deprecated fields, but only after we convert - ':drop' => [ qw( - license_url - private - )], - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.2-from-1.1' => { - # PRIOR MANDATORY - 'version' => \&_keep, - # CHANGED TO MANDATORY - 'license' => \&_license_1, - 'name' => \&_keep, - 'generated_by' => \&_generated_by, - # ADDED MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'meta-spec' => \&_change_meta_spec, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - # ADDED OPTIONAL - 'keywords' => \&_keep, - 'no_index' => \&_no_index_1_2, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'resources' => \&_resources_1_2, - - # drop these deprecated fields, but only after we convert - ':drop' => [ qw( - license_url - private - )], - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.1-from-1.0' => { - # CHANGED TO MANDATORY - 'version' => \&_keep, - # IMPLIED MANDATORY - 'name' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - # ADDED OPTIONAL - 'license_url' => \&_url_or_drop, - 'private' => \&_keep, - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - ); - - my %down_convert = ( - '1.4-from-2' => { - # MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_downgrade_license, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # OPTIONAL - 'build_requires' => \&_get_build_requires, - 'configure_requires' => \&_get_configure_requires, - 'conflicts' => \&_get_conflicts, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_downgrade_optional_features, - 'provides' => \&_provides, - 'recommends' => \&_get_recommends, - 'requires' => \&_get_requires, - 'resources' => \&_downgrade_resources, - - # drop these unsupported fields (after conversion) - ':drop' => [ qw( - description - prereqs - release_status - )], - - # custom keys will be left unchanged - ':custom' => \&_keep - }, - '1.3-from-1.4' => { - # MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_3, - - # drop these unsupported fields, but only after we convert - ':drop' => [ qw( - configure_requires - )], - - # other random keys are OK if already valid - ':custom' => \&_keep, - }, - '1.2-from-1.3' => { - # MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_1_2, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_3, - - # other random keys are OK if already valid - ':custom' => \&_keep, - }, - '1.1-from-1.2' => { - # MANDATORY - 'version' => \&_keep, - # IMPLIED MANDATORY - 'name' => \&_keep, - 'meta-spec' => \&_change_meta_spec, - # OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'private' => \&_keep, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - - # drop unsupported fields - ':drop' => [ qw( - abstract - author - provides - no_index - keywords - resources - )], - - # other random keys are OK if already valid - ':custom' => \&_keep, - }, - '1.0-from-1.1' => { - # IMPLIED MANDATORY - 'name' => \&_keep, - 'meta-spec' => \&_change_meta_spec, - 'version' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - - # other random keys are OK if already valid - ':custom' => \&_keep, - }, - ); - - my %cleanup = ( - '2' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_2, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # CHANGED TO MANDATORY - 'dynamic_config' => \&_keep_or_one, - # ADDED MANDATORY - 'release_status' => \&_release_status, - # PRIOR OPTIONAL - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_cleanup_optional_features_2, - 'provides' => \&_provides, - 'resources' => \&_cleanup_resources_2, - # ADDED OPTIONAL - 'description' => \&_keep, - 'prereqs' => \&_cleanup_prereqs, - - # drop these deprecated fields, but only after we convert - ':drop' => [ qw( - build_requires - configure_requires - conflicts - distribution_type - license_url - private - recommends - requires - ) ], - - # other random keys need x_ prefixing - ':custom' => \&_prefix_custom, - }, - '1.4' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_optional_features_1_4, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_4, - # ADDED OPTIONAL - 'configure_requires' => \&_keep, - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.3' => { - # PRIOR MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'meta-spec' => \&_change_meta_spec, - 'name' => \&_keep, - 'version' => \&_keep, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'keywords' => \&_keep, - 'no_index' => \&_no_index_directory, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - 'resources' => \&_resources_1_3, - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.2' => { - # PRIOR MANDATORY - 'version' => \&_keep, - # CHANGED TO MANDATORY - 'license' => \&_license_1, - 'name' => \&_keep, - 'generated_by' => \&_generated_by, - # ADDED MANDATORY - 'abstract' => \&_keep_or_unknown, - 'author' => \&_author_list, - 'meta-spec' => \&_change_meta_spec, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - # ADDED OPTIONAL - 'keywords' => \&_keep, - 'no_index' => \&_no_index_1_2, - 'optional_features' => \&_optional_features_as_map, - 'provides' => \&_provides, - 'resources' => \&_resources_1_2, - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.1' => { - # CHANGED TO MANDATORY - 'version' => \&_keep, - # IMPLIED MANDATORY - 'name' => \&_keep, - 'meta-spec' => \&_change_meta_spec, - # PRIOR OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - # ADDED OPTIONAL - 'license_url' => \&_url_or_drop, - 'private' => \&_keep, - - # other random keys are OK if already valid - ':custom' => \&_keep - }, - '1.0' => { - # IMPLIED MANDATORY - 'name' => \&_keep, - 'meta-spec' => \&_change_meta_spec, - 'version' => \&_keep, - # IMPLIED OPTIONAL - 'build_requires' => \&_version_map, - 'conflicts' => \&_version_map, - 'distribution_type' => \&_keep, - 'dynamic_config' => \&_keep_or_one, - 'generated_by' => \&_generated_by, - 'license' => \&_license_1, - 'recommends' => \&_version_map, - 'requires' => \&_version_map, - - # other random keys are OK if already valid - ':custom' => \&_keep, - }, - ); - - # for a given field in a spec version, what fields will it feed - # into in the *latest* spec (i.e. v2); meta-spec omitted because - # we always expect a meta-spec to be generated - my %fragments_generate = ( - '2' => { - 'abstract' => 'abstract', - 'author' => 'author', - 'generated_by' => 'generated_by', - 'license' => 'license', - 'name' => 'name', - 'version' => 'version', - 'dynamic_config' => 'dynamic_config', - 'release_status' => 'release_status', - 'keywords' => 'keywords', - 'no_index' => 'no_index', - 'optional_features' => 'optional_features', - 'provides' => 'provides', - 'resources' => 'resources', - 'description' => 'description', - 'prereqs' => 'prereqs', - }, - '1.4' => { - 'abstract' => 'abstract', - 'author' => 'author', - 'generated_by' => 'generated_by', - 'license' => 'license', - 'name' => 'name', - 'version' => 'version', - 'build_requires' => 'prereqs', - 'conflicts' => 'prereqs', - 'distribution_type' => 'distribution_type', - 'dynamic_config' => 'dynamic_config', - 'keywords' => 'keywords', - 'no_index' => 'no_index', - 'optional_features' => 'optional_features', - 'provides' => 'provides', - 'recommends' => 'prereqs', - 'requires' => 'prereqs', - 'resources' => 'resources', - 'configure_requires' => 'prereqs', - }, - ); - # this is not quite true but will work well enough - # as 1.4 is a superset of earlier ones - $fragments_generate{$_} = $fragments_generate{'1.4'} for qw/1.3 1.2 1.1 1.0/; - - #--------------------------------------------------------------------------# - # Code - #--------------------------------------------------------------------------# - - #pod =method new - #pod - #pod my $cmc = CPAN::Meta::Converter->new( $struct ); - #pod - #pod The constructor should be passed a valid metadata structure but invalid - #pod structures are accepted. If no meta-spec version is provided, version 1.0 will - #pod be assumed. - #pod - #pod Optionally, you can provide a C argument after C<$struct>: - #pod - #pod my $cmc = CPAN::Meta::Converter->new( $struct, default_version => "1.4" ); - #pod - #pod This is only needed when converting a metadata fragment that does not include a - #pod C field. - #pod - #pod =cut - - sub new { - my ($class,$data,%args) = @_; - - # create an attributes hash - my $self = { - 'data' => $data, - 'spec' => _extract_spec_version($data, $args{default_version}), - }; - - # create the object - return bless $self, $class; - } - - sub _extract_spec_version { - my ($data, $default) = @_; - my $spec = $data->{'meta-spec'}; - - # is meta-spec there and valid? - return( $default || "1.0" ) unless defined $spec && ref $spec eq 'HASH'; # before meta-spec? - - # does the version key look like a valid version? - my $v = $spec->{version}; - if ( defined $v && $v =~ /^\d+(?:\.\d+)?$/ ) { - return $v if defined $v && grep { $v eq $_ } keys %known_specs; # known spec - return $v+0 if defined $v && grep { $v == $_ } keys %known_specs; # 2.0 => 2 - } - - # otherwise, use heuristics: look for 1.x vs 2.0 fields - return "2" if exists $data->{prereqs}; - return "1.4" if exists $data->{configure_requires}; - return( $default || "1.2" ); # when meta-spec was first defined - } - - #pod =method convert - #pod - #pod my $new_struct = $cmc->convert( version => "2" ); - #pod - #pod Returns a new hash reference with the metadata converted to a different form. - #pod C will die if any conversion/standardization still results in an - #pod invalid structure. - #pod - #pod Valid parameters include: - #pod - #pod =over - #pod - #pod =item * - #pod - #pod C -- Indicates the desired specification version (e.g. "1.0", "1.1" ... "1.4", "2"). - #pod Defaults to the latest version of the CPAN Meta Spec. - #pod - #pod =back - #pod - #pod Conversion proceeds through each version in turn. For example, a version 1.2 - #pod structure might be converted to 1.3 then 1.4 then finally to version 2. The - #pod conversion process attempts to clean-up simple errors and standardize data. - #pod For example, if C is given as a scalar, it will converted to an array - #pod reference containing the item. (Converting a structure to its own version will - #pod also clean-up and standardize.) - #pod - #pod When data are cleaned and standardized, missing or invalid fields will be - #pod replaced with sensible defaults when possible. This may be lossy or imprecise. - #pod For example, some badly structured META.yml files on CPAN have prerequisite - #pod modules listed as both keys and values: - #pod - #pod requires => { 'Foo::Bar' => 'Bam::Baz' } - #pod - #pod These would be split and each converted to a prerequisite with a minimum - #pod version of zero. - #pod - #pod When some mandatory fields are missing or invalid, the conversion will attempt - #pod to provide a sensible default or will fill them with a value of 'unknown'. For - #pod example a missing or unrecognized C field will result in a C - #pod field of 'unknown'. Fields that may get an 'unknown' include: - #pod - #pod =for :list - #pod * abstract - #pod * author - #pod * license - #pod - #pod =cut - - sub convert { - my ($self, %args) = @_; - my $args = { %args }; - - my $new_version = $args->{version} || $HIGHEST; - my $is_fragment = $args->{is_fragment}; - - my ($old_version) = $self->{spec}; - my $converted = _dclone($self->{data}); - - if ( $old_version == $new_version ) { - $converted = _convert( $converted, $cleanup{$old_version}, $old_version, $is_fragment ); - unless ( $args->{is_fragment} ) { - my $cmv = CPAN::Meta::Validator->new( $converted ); - unless ( $cmv->is_valid ) { - my $errs = join("\n", $cmv->errors); - die "Failed to clean-up $old_version metadata. Errors:\n$errs\n"; - } - } - return $converted; - } - elsif ( $old_version > $new_version ) { - my @vers = sort { $b <=> $a } keys %known_specs; - for my $i ( 0 .. $#vers-1 ) { - next if $vers[$i] > $old_version; - last if $vers[$i+1] < $new_version; - my $spec_string = "$vers[$i+1]-from-$vers[$i]"; - $converted = _convert( $converted, $down_convert{$spec_string}, $vers[$i+1], $is_fragment ); - unless ( $args->{is_fragment} ) { - my $cmv = CPAN::Meta::Validator->new( $converted ); - unless ( $cmv->is_valid ) { - my $errs = join("\n", $cmv->errors); - die "Failed to downconvert metadata to $vers[$i+1]. Errors:\n$errs\n"; - } - } - } - return $converted; - } - else { - my @vers = sort { $a <=> $b } keys %known_specs; - for my $i ( 0 .. $#vers-1 ) { - next if $vers[$i] < $old_version; - last if $vers[$i+1] > $new_version; - my $spec_string = "$vers[$i+1]-from-$vers[$i]"; - $converted = _convert( $converted, $up_convert{$spec_string}, $vers[$i+1], $is_fragment ); - unless ( $args->{is_fragment} ) { - my $cmv = CPAN::Meta::Validator->new( $converted ); - unless ( $cmv->is_valid ) { - my $errs = join("\n", $cmv->errors); - die "Failed to upconvert metadata to $vers[$i+1]. Errors:\n$errs\n"; - } - } - } - return $converted; - } - } - - #pod =method upgrade_fragment - #pod - #pod my $new_struct = $cmc->upgrade_fragment; - #pod - #pod Returns a new hash reference with the metadata converted to the latest version - #pod of the CPAN Meta Spec. No validation is done on the result -- you must - #pod validate after merging fragments into a complete metadata document. - #pod - #pod Available since version 2.141170. - #pod - #pod =cut - - sub upgrade_fragment { - my ($self) = @_; - my ($old_version) = $self->{spec}; - my %expected = - map {; $_ => 1 } - grep { defined } - map { $fragments_generate{$old_version}{$_} } - keys %{ $self->{data} }; - my $converted = $self->convert( version => $HIGHEST, is_fragment => 1 ); - for my $key ( keys %$converted ) { - next if $key =~ /^x_/i || $key eq 'meta-spec'; - delete $converted->{$key} unless $expected{$key}; - } - return $converted; - } - - 1; - - # ABSTRACT: Convert CPAN distribution metadata structures - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Converter - Convert CPAN distribution metadata structures - - =head1 VERSION - - version 2.150005 - - =head1 SYNOPSIS - - my $struct = decode_json_file('META.json'); - - my $cmc = CPAN::Meta::Converter->new( $struct ); - - my $new_struct = $cmc->convert( version => "2" ); - - =head1 DESCRIPTION - - This module converts CPAN Meta structures from one form to another. The - primary use is to convert older structures to the most modern version of - the specification, but other transformations may be implemented in the - future as needed. (E.g. stripping all custom fields or stripping all - optional fields.) - - =head1 METHODS - - =head2 new - - my $cmc = CPAN::Meta::Converter->new( $struct ); - - The constructor should be passed a valid metadata structure but invalid - structures are accepted. If no meta-spec version is provided, version 1.0 will - be assumed. - - Optionally, you can provide a C argument after C<$struct>: - - my $cmc = CPAN::Meta::Converter->new( $struct, default_version => "1.4" ); - - This is only needed when converting a metadata fragment that does not include a - C field. - - =head2 convert - - my $new_struct = $cmc->convert( version => "2" ); - - Returns a new hash reference with the metadata converted to a different form. - C will die if any conversion/standardization still results in an - invalid structure. - - Valid parameters include: - - =over - - =item * - - C -- Indicates the desired specification version (e.g. "1.0", "1.1" ... "1.4", "2"). - Defaults to the latest version of the CPAN Meta Spec. - - =back - - Conversion proceeds through each version in turn. For example, a version 1.2 - structure might be converted to 1.3 then 1.4 then finally to version 2. The - conversion process attempts to clean-up simple errors and standardize data. - For example, if C is given as a scalar, it will converted to an array - reference containing the item. (Converting a structure to its own version will - also clean-up and standardize.) - - When data are cleaned and standardized, missing or invalid fields will be - replaced with sensible defaults when possible. This may be lossy or imprecise. - For example, some badly structured META.yml files on CPAN have prerequisite - modules listed as both keys and values: - - requires => { 'Foo::Bar' => 'Bam::Baz' } - - These would be split and each converted to a prerequisite with a minimum - version of zero. - - When some mandatory fields are missing or invalid, the conversion will attempt - to provide a sensible default or will fill them with a value of 'unknown'. For - example a missing or unrecognized C field will result in a C - field of 'unknown'. Fields that may get an 'unknown' include: - - =over 4 - - =item * - - abstract - - =item * - - author - - =item * - - license - - =back - - =head2 upgrade_fragment - - my $new_struct = $cmc->upgrade_fragment; - - Returns a new hash reference with the metadata converted to the latest version - of the CPAN Meta Spec. No validation is done on the result -- you must - validate after merging fragments into a complete metadata document. - - Available since version 2.141170. - - =head1 BUGS - - Please report any bugs or feature using the CPAN Request Tracker. - Bugs can be submitted through the web interface at - L - - When submitting a bug or request, please include a test-file or a patch to an - existing test-file that illustrates the bug or desired feature. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # vim: ts=2 sts=2 sw=2 et : -CPAN_META_CONVERTER - -$fatpacked{"CPAN/Meta/Feature.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_FEATURE'; - use 5.006; - use strict; - use warnings; - package CPAN::Meta::Feature; - - our $VERSION = '2.150005'; - - use CPAN::Meta::Prereqs; - - #pod =head1 DESCRIPTION - #pod - #pod A CPAN::Meta::Feature object describes an optional feature offered by a CPAN - #pod distribution and specified in the distribution's F (or F) - #pod file. - #pod - #pod For the most part, this class will only be used when operating on the result of - #pod the C or C methods on a L object. - #pod - #pod =method new - #pod - #pod my $feature = CPAN::Meta::Feature->new( $identifier => \%spec ); - #pod - #pod This returns a new Feature object. The C<%spec> argument to the constructor - #pod should be the same as the value of the C entry in the - #pod distmeta. It must contain entries for C and C. - #pod - #pod =cut - - sub new { - my ($class, $identifier, $spec) = @_; - - my %guts = ( - identifier => $identifier, - description => $spec->{description}, - prereqs => CPAN::Meta::Prereqs->new($spec->{prereqs}), - ); - - bless \%guts => $class; - } - - #pod =method identifier - #pod - #pod This method returns the feature's identifier. - #pod - #pod =cut - - sub identifier { $_[0]{identifier} } - - #pod =method description - #pod - #pod This method returns the feature's long description. - #pod - #pod =cut - - sub description { $_[0]{description} } - - #pod =method prereqs - #pod - #pod This method returns the feature's prerequisites as a L - #pod object. - #pod - #pod =cut - - sub prereqs { $_[0]{prereqs} } - - 1; - - # ABSTRACT: an optional feature provided by a CPAN distribution - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Feature - an optional feature provided by a CPAN distribution - - =head1 VERSION - - version 2.150005 - - =head1 DESCRIPTION - - A CPAN::Meta::Feature object describes an optional feature offered by a CPAN - distribution and specified in the distribution's F (or F) - file. - - For the most part, this class will only be used when operating on the result of - the C or C methods on a L object. - - =head1 METHODS - - =head2 new - - my $feature = CPAN::Meta::Feature->new( $identifier => \%spec ); - - This returns a new Feature object. The C<%spec> argument to the constructor - should be the same as the value of the C entry in the - distmeta. It must contain entries for C and C. - - =head2 identifier - - This method returns the feature's identifier. - - =head2 description - - This method returns the feature's long description. - - =head2 prereqs - - This method returns the feature's prerequisites as a L - object. - - =head1 BUGS - - Please report any bugs or feature using the CPAN Request Tracker. - Bugs can be submitted through the web interface at - L - - When submitting a bug or request, please include a test-file or a patch to an - existing test-file that illustrates the bug or desired feature. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # vim: ts=2 sts=2 sw=2 et : -CPAN_META_FEATURE - -$fatpacked{"CPAN/Meta/History.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_HISTORY'; - # vi:tw=72 - use 5.006; - use strict; - use warnings; - package CPAN::Meta::History; - - our $VERSION = '2.150005'; - - 1; - - # ABSTRACT: history of CPAN Meta Spec changes - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::History - history of CPAN Meta Spec changes - - =head1 VERSION - - version 2.150005 - - =head1 DESCRIPTION - - The CPAN Meta Spec has gone through several iterations. It was - originally written in HTML and later revised into POD (though published - in HTML generated from the POD). Fields were added, removed or changed, - sometimes by design and sometimes to reflect real-world usage after the - fact. - - This document reconstructs the history of the CPAN Meta Spec based on - change logs, repository commit messages and the published HTML files. - In some cases, particularly prior to version 1.2, the exact version - when certain fields were introduced or changed is inconsistent between - sources. When in doubt, the published HTML files for versions 1.0 to - 1.4 as they existed when version 2 was developed are used as the - definitive source. - - Starting with version 2, the specification document is part of the - CPAN-Meta distribution and will be published on CPAN as - L. - - Going forward, specification version numbers will be integers and - decimal portions will correspond to a release date for the CPAN::Meta - library. - - =head1 HISTORY - - =head2 Version 2 - - April 2010 - - =over - - =item * - - Revised spec examples as perl data structures rather than YAML - - =item * - - Switched to JSON serialization from YAML - - =item * - - Specified allowed version number formats - - =item * - - Replaced 'requires', 'build_requires', 'configure_requires', - 'recommends' and 'conflicts' with new 'prereqs' data structure divided - by I (configure, build, test, runtime, etc.) and I - (requires, recommends, suggests, conflicts) - - =item * - - Added support for 'develop' phase for requirements for maintaining - a list of authoring tools - - =item * - - Changed 'license' to a list and revised the set of valid licenses - - =item * - - Made 'dynamic_config' mandatory to reduce confusion - - =item * - - Changed 'resources' subkey 'repository' to a hash that clarifies - repository type, url for browsing and url for checkout - - =item * - - Changed 'resources' subkey 'bugtracker' to a hash for either web - or mailto resource - - =item * - - Changed specification of 'optional_features': - - =over - - =item * - - Added formal specification and usage guide instead of just example - - =item * - - Changed to use new prereqs data structure instead of individual keys - - =back - - =item * - - Clarified intended use of 'author' as generalized contact list - - =item * - - Added 'release_status' field to indicate stable, testing or unstable - status to provide hints to indexers - - =item * - - Added 'description' field for a longer description of the distribution - - =item * - - Formalized use of "x_" or "X_" for all custom keys not listed in the - official spec - - =back - - =head2 Version 1.4 - - June 2008 - - =over - - =item * - - Noted explicit support for 'perl' in prerequisites - - =item * - - Added 'configure_requires' prerequisite type - - =item * - - Changed 'optional_features' - - =over - - =item * - - Example corrected to show map of maps instead of list of maps - (though descriptive text said 'map' even in v1.3) - - =item * - - Removed 'requires_packages', 'requires_os' and 'excluded_os' - as valid subkeys - - =back - - =back - - =head2 Version 1.3 - - November 2006 - - =over - - =item * - - Added 'no_index' subkey 'directory' and removed 'dir' to match actual - usage in the wild - - =item * - - Added a 'repository' subkey to 'resources' - - =back - - =head2 Version 1.2 - - August 2005 - - =over - - =item * - - Re-wrote and restructured spec in POD syntax - - =item * - - Changed 'name' to be mandatory - - =item * - - Changed 'generated_by' to be mandatory - - =item * - - Changed 'license' to be mandatory - - =item * - - Added version range specifications for prerequisites - - =item * - - Added required 'abstract' field - - =item * - - Added required 'author' field - - =item * - - Added required 'meta-spec' field to define 'version' (and 'url') of the - CPAN Meta Spec used for metadata - - =item * - - Added 'provides' field - - =item * - - Added 'no_index' field and deprecated 'private' field. 'no_index' - subkeys include 'file', 'dir', 'package' and 'namespace' - - =item * - - Added 'keywords' field - - =item * - - Added 'resources' field with subkeys 'homepage', 'license', and - 'bugtracker' - - =item * - - Added 'optional_features' field as an alternate under 'recommends'. - Includes 'description', 'requires', 'build_requires', 'conflicts', - 'requires_packages', 'requires_os' and 'excluded_os' as valid subkeys - - =item * - - Removed 'license_uri' field - - =back - - =head2 Version 1.1 - - May 2003 - - =over - - =item * - - Changed 'version' to be mandatory - - =item * - - Added 'private' field - - =item * - - Added 'license_uri' field - - =back - - =head2 Version 1.0 - - March 2003 - - =over - - =item * - - Original release (in HTML format only) - - =item * - - Included 'name', 'version', 'license', 'distribution_type', 'requires', - 'recommends', 'build_requires', 'conflicts', 'dynamic_config', - 'generated_by' - - =back - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -CPAN_META_HISTORY - -$fatpacked{"CPAN/Meta/Merge.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_MERGE'; - use strict; - use warnings; - - package CPAN::Meta::Merge; - - our $VERSION = '2.150005'; - - use Carp qw/croak/; - use Scalar::Util qw/blessed/; - use CPAN::Meta::Converter 2.141170; - - sub _is_identical { - my ($left, $right) = @_; - return - (not defined $left and not defined $right) - # if either of these are references, we compare the serialized value - || (defined $left and defined $right and $left eq $right); - } - - sub _identical { - my ($left, $right, $path) = @_; - croak sprintf "Can't merge attribute %s: '%s' does not equal '%s'", join('.', @{$path}), $left, $right - unless _is_identical($left, $right); - return $left; - } - - sub _merge { - my ($current, $next, $mergers, $path) = @_; - for my $key (keys %{$next}) { - if (not exists $current->{$key}) { - $current->{$key} = $next->{$key}; - } - elsif (my $merger = $mergers->{$key}) { - $current->{$key} = $merger->($current->{$key}, $next->{$key}, [ @{$path}, $key ]); - } - elsif ($merger = $mergers->{':default'}) { - $current->{$key} = $merger->($current->{$key}, $next->{$key}, [ @{$path}, $key ]); - } - else { - croak sprintf "Can't merge unknown attribute '%s'", join '.', @{$path}, $key; - } - } - return $current; - } - - sub _uniq { - my %seen = (); - return grep { not $seen{$_}++ } @_; - } - - sub _set_addition { - my ($left, $right) = @_; - return [ +_uniq(@{$left}, @{$right}) ]; - } - - sub _uniq_map { - my ($left, $right, $path) = @_; - for my $key (keys %{$right}) { - if (not exists $left->{$key}) { - $left->{$key} = $right->{$key}; - } - # identical strings or references are merged identically - elsif (_is_identical($left->{$key}, $right->{$key})) { - 1; # do nothing - keep left - } - elsif (ref $left->{$key} eq 'HASH' and ref $right->{$key} eq 'HASH') { - $left->{$key} = _uniq_map($left->{$key}, $right->{$key}, [ @{$path}, $key ]); - } - else { - croak 'Duplication of element ' . join '.', @{$path}, $key; - } - } - return $left; - } - - sub _improvize { - my ($left, $right, $path) = @_; - my ($name) = reverse @{$path}; - if ($name =~ /^x_/) { - if (ref($left) eq 'ARRAY') { - return _set_addition($left, $right, $path); - } - elsif (ref($left) eq 'HASH') { - return _uniq_map($left, $right, $path); - } - else { - return _identical($left, $right, $path); - } - } - croak sprintf "Can't merge '%s'", join '.', @{$path}; - } - - sub _optional_features { - my ($left, $right, $path) = @_; - - for my $key (keys %{$right}) { - if (not exists $left->{$key}) { - $left->{$key} = $right->{$key}; - } - else { - for my $subkey (keys %{ $right->{$key} }) { - next if $subkey eq 'prereqs'; - if (not exists $left->{$key}{$subkey}) { - $left->{$key}{$subkey} = $right->{$key}{$subkey}; - } - else { - Carp::croak "Cannot merge two optional_features named '$key' with different '$subkey' values" - if do { no warnings 'uninitialized'; $left->{$key}{$subkey} ne $right->{$key}{$subkey} }; - } - } - - require CPAN::Meta::Prereqs; - $left->{$key}{prereqs} = - CPAN::Meta::Prereqs->new($left->{$key}{prereqs}) - ->with_merged_prereqs(CPAN::Meta::Prereqs->new($right->{$key}{prereqs})) - ->as_string_hash; - } - } - return $left; - } - - - my %default = ( - abstract => \&_identical, - author => \&_set_addition, - dynamic_config => sub { - my ($left, $right) = @_; - return $left || $right; - }, - generated_by => sub { - my ($left, $right) = @_; - return join ', ', _uniq(split(/, /, $left), split(/, /, $right)); - }, - license => \&_set_addition, - 'meta-spec' => { - version => \&_identical, - url => \&_identical - }, - name => \&_identical, - release_status => \&_identical, - version => \&_identical, - description => \&_identical, - keywords => \&_set_addition, - no_index => { map { ($_ => \&_set_addition) } qw/file directory package namespace/ }, - optional_features => \&_optional_features, - prereqs => sub { - require CPAN::Meta::Prereqs; - my ($left, $right) = map { CPAN::Meta::Prereqs->new($_) } @_[0,1]; - return $left->with_merged_prereqs($right)->as_string_hash; - }, - provides => \&_uniq_map, - resources => { - license => \&_set_addition, - homepage => \&_identical, - bugtracker => \&_uniq_map, - repository => \&_uniq_map, - ':default' => \&_improvize, - }, - ':default' => \&_improvize, - ); - - sub new { - my ($class, %arguments) = @_; - croak 'default version required' if not exists $arguments{default_version}; - my %mapping = %default; - my %extra = %{ $arguments{extra_mappings} || {} }; - for my $key (keys %extra) { - if (ref($mapping{$key}) eq 'HASH') { - $mapping{$key} = { %{ $mapping{$key} }, %{ $extra{$key} } }; - } - else { - $mapping{$key} = $extra{$key}; - } - } - return bless { - default_version => $arguments{default_version}, - mapping => _coerce_mapping(\%mapping, []), - }, $class; - } - - my %coderef_for = ( - set_addition => \&_set_addition, - uniq_map => \&_uniq_map, - identical => \&_identical, - improvize => \&_improvize, - ); - - sub _coerce_mapping { - my ($orig, $map_path) = @_; - my %ret; - for my $key (keys %{$orig}) { - my $value = $orig->{$key}; - if (ref($orig->{$key}) eq 'CODE') { - $ret{$key} = $value; - } - elsif (ref($value) eq 'HASH') { - my $mapping = _coerce_mapping($value, [ @{$map_path}, $key ]); - $ret{$key} = sub { - my ($left, $right, $path) = @_; - return _merge($left, $right, $mapping, [ @{$path} ]); - }; - } - elsif ($coderef_for{$value}) { - $ret{$key} = $coderef_for{$value}; - } - else { - croak "Don't know what to do with " . join '.', @{$map_path}, $key; - } - } - return \%ret; - } - - sub merge { - my ($self, @items) = @_; - my $current = {}; - for my $next (@items) { - if ( blessed($next) && $next->isa('CPAN::Meta') ) { - $next = $next->as_struct; - } - elsif ( ref($next) eq 'HASH' ) { - my $cmc = CPAN::Meta::Converter->new( - $next, default_version => $self->{default_version} - ); - $next = $cmc->upgrade_fragment; - } - else { - croak "Don't know how to merge '$next'"; - } - $current = _merge($current, $next, $self->{mapping}, []); - } - return $current; - } - - 1; - - # ABSTRACT: Merging CPAN Meta fragments - - - # vim: ts=2 sts=2 sw=2 et : - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Merge - Merging CPAN Meta fragments - - =head1 VERSION - - version 2.150005 - - =head1 SYNOPSIS - - my $merger = CPAN::Meta::Merge->new(default_version => "2"); - my $meta = $merger->merge($base, @additional); - - =head1 DESCRIPTION - - =head1 METHODS - - =head2 new - - This creates a CPAN::Meta::Merge object. It takes one mandatory named - argument, C, declaring the version of the meta-spec that must be - used for the merge. It can optionally take an C argument - that allows one to add additional merging functions for specific elements. - - =head2 merge(@fragments) - - Merge all C<@fragments> together. It will accept both CPAN::Meta objects and - (possibly incomplete) hashrefs of metadata. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -CPAN_META_MERGE - -$fatpacked{"CPAN/Meta/Prereqs.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_PREREQS'; - use 5.006; - use strict; - use warnings; - package CPAN::Meta::Prereqs; - - our $VERSION = '2.150005'; - - #pod =head1 DESCRIPTION - #pod - #pod A CPAN::Meta::Prereqs object represents the prerequisites for a CPAN - #pod distribution or one of its optional features. Each set of prereqs is - #pod organized by phase and type, as described in L. - #pod - #pod =cut - - use Carp qw(confess); - use Scalar::Util qw(blessed); - use CPAN::Meta::Requirements 2.121; - - #pod =method new - #pod - #pod my $prereq = CPAN::Meta::Prereqs->new( \%prereq_spec ); - #pod - #pod This method returns a new set of Prereqs. The input should look like the - #pod contents of the C field described in L, meaning - #pod something more or less like this: - #pod - #pod my $prereq = CPAN::Meta::Prereqs->new({ - #pod runtime => { - #pod requires => { - #pod 'Some::Module' => '1.234', - #pod ..., - #pod }, - #pod ..., - #pod }, - #pod ..., - #pod }); - #pod - #pod You can also construct an empty set of prereqs with: - #pod - #pod my $prereqs = CPAN::Meta::Prereqs->new; - #pod - #pod This empty set of prereqs is useful for accumulating new prereqs before finally - #pod dumping the whole set into a structure or string. - #pod - #pod =cut - - sub __legal_phases { qw(configure build test runtime develop) } - sub __legal_types { qw(requires recommends suggests conflicts) } - - # expect a prereq spec from META.json -- rjbs, 2010-04-11 - sub new { - my ($class, $prereq_spec) = @_; - $prereq_spec ||= {}; - - my %is_legal_phase = map {; $_ => 1 } $class->__legal_phases; - my %is_legal_type = map {; $_ => 1 } $class->__legal_types; - - my %guts; - PHASE: for my $phase (keys %$prereq_spec) { - next PHASE unless $phase =~ /\Ax_/i or $is_legal_phase{$phase}; - - my $phase_spec = $prereq_spec->{ $phase }; - next PHASE unless keys %$phase_spec; - - TYPE: for my $type (keys %$phase_spec) { - next TYPE unless $type =~ /\Ax_/i or $is_legal_type{$type}; - - my $spec = $phase_spec->{ $type }; - - next TYPE unless keys %$spec; - - $guts{prereqs}{$phase}{$type} = CPAN::Meta::Requirements->from_string_hash( - $spec - ); - } - } - - return bless \%guts => $class; - } - - #pod =method requirements_for - #pod - #pod my $requirements = $prereqs->requirements_for( $phase, $type ); - #pod - #pod This method returns a L object for the given - #pod phase/type combination. If no prerequisites are registered for that - #pod combination, a new CPAN::Meta::Requirements object will be returned, and it may - #pod be added to as needed. - #pod - #pod If C<$phase> or C<$type> are undefined or otherwise invalid, an exception will - #pod be raised. - #pod - #pod =cut - - sub requirements_for { - my ($self, $phase, $type) = @_; - - confess "requirements_for called without phase" unless defined $phase; - confess "requirements_for called without type" unless defined $type; - - unless ($phase =~ /\Ax_/i or grep { $phase eq $_ } $self->__legal_phases) { - confess "requested requirements for unknown phase: $phase"; - } - - unless ($type =~ /\Ax_/i or grep { $type eq $_ } $self->__legal_types) { - confess "requested requirements for unknown type: $type"; - } - - my $req = ($self->{prereqs}{$phase}{$type} ||= CPAN::Meta::Requirements->new); - - $req->finalize if $self->is_finalized; - - return $req; - } - - #pod =method with_merged_prereqs - #pod - #pod my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs ); - #pod - #pod my $new_prereqs = $prereqs->with_merged_prereqs( \@other_prereqs ); - #pod - #pod This method returns a new CPAN::Meta::Prereqs objects in which all the - #pod other prerequisites given are merged into the current set. This is primarily - #pod provided for combining a distribution's core prereqs with the prereqs of one of - #pod its optional features. - #pod - #pod The new prereqs object has no ties to the originals, and altering it further - #pod will not alter them. - #pod - #pod =cut - - sub with_merged_prereqs { - my ($self, $other) = @_; - - my @other = blessed($other) ? $other : @$other; - - my @prereq_objs = ($self, @other); - - my %new_arg; - - for my $phase ($self->__legal_phases) { - for my $type ($self->__legal_types) { - my $req = CPAN::Meta::Requirements->new; - - for my $prereq (@prereq_objs) { - my $this_req = $prereq->requirements_for($phase, $type); - next unless $this_req->required_modules; - - $req->add_requirements($this_req); - } - - next unless $req->required_modules; - - $new_arg{ $phase }{ $type } = $req->as_string_hash; - } - } - - return (ref $self)->new(\%new_arg); - } - - #pod =method merged_requirements - #pod - #pod my $new_reqs = $prereqs->merged_requirements( \@phases, \@types ); - #pod my $new_reqs = $prereqs->merged_requirements( \@phases ); - #pod my $new_reqs = $prereqs->merged_requirements(); - #pod - #pod This method joins together all requirements across a number of phases - #pod and types into a new L object. If arguments - #pod are omitted, it defaults to "runtime", "build" and "test" for phases - #pod and "requires" and "recommends" for types. - #pod - #pod =cut - - sub merged_requirements { - my ($self, $phases, $types) = @_; - $phases = [qw/runtime build test/] unless defined $phases; - $types = [qw/requires recommends/] unless defined $types; - - confess "merged_requirements phases argument must be an arrayref" - unless ref $phases eq 'ARRAY'; - confess "merged_requirements types argument must be an arrayref" - unless ref $types eq 'ARRAY'; - - my $req = CPAN::Meta::Requirements->new; - - for my $phase ( @$phases ) { - unless ($phase =~ /\Ax_/i or grep { $phase eq $_ } $self->__legal_phases) { - confess "requested requirements for unknown phase: $phase"; - } - for my $type ( @$types ) { - unless ($type =~ /\Ax_/i or grep { $type eq $_ } $self->__legal_types) { - confess "requested requirements for unknown type: $type"; - } - $req->add_requirements( $self->requirements_for($phase, $type) ); - } - } - - $req->finalize if $self->is_finalized; - - return $req; - } - - - #pod =method as_string_hash - #pod - #pod This method returns a hashref containing structures suitable for dumping into a - #pod distmeta data structure. It is made up of hashes and strings, only; there will - #pod be no Prereqs, CPAN::Meta::Requirements, or C objects inside it. - #pod - #pod =cut - - sub as_string_hash { - my ($self) = @_; - - my %hash; - - for my $phase ($self->__legal_phases) { - for my $type ($self->__legal_types) { - my $req = $self->requirements_for($phase, $type); - next unless $req->required_modules; - - $hash{ $phase }{ $type } = $req->as_string_hash; - } - } - - return \%hash; - } - - #pod =method is_finalized - #pod - #pod This method returns true if the set of prereqs has been marked "finalized," and - #pod cannot be altered. - #pod - #pod =cut - - sub is_finalized { $_[0]{finalized} } - - #pod =method finalize - #pod - #pod Calling C on a Prereqs object will close it for further modification. - #pod Attempting to make any changes that would actually alter the prereqs will - #pod result in an exception being thrown. - #pod - #pod =cut - - sub finalize { - my ($self) = @_; - - $self->{finalized} = 1; - - for my $phase (keys %{ $self->{prereqs} }) { - $_->finalize for values %{ $self->{prereqs}{$phase} }; - } - } - - #pod =method clone - #pod - #pod my $cloned_prereqs = $prereqs->clone; - #pod - #pod This method returns a Prereqs object that is identical to the original object, - #pod but can be altered without affecting the original object. Finalization does - #pod not survive cloning, meaning that you may clone a finalized set of prereqs and - #pod then modify the clone. - #pod - #pod =cut - - sub clone { - my ($self) = @_; - - my $clone = (ref $self)->new( $self->as_string_hash ); - } - - 1; - - # ABSTRACT: a set of distribution prerequisites by phase and type - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Prereqs - a set of distribution prerequisites by phase and type - - =head1 VERSION - - version 2.150005 - - =head1 DESCRIPTION - - A CPAN::Meta::Prereqs object represents the prerequisites for a CPAN - distribution or one of its optional features. Each set of prereqs is - organized by phase and type, as described in L. - - =head1 METHODS - - =head2 new - - my $prereq = CPAN::Meta::Prereqs->new( \%prereq_spec ); - - This method returns a new set of Prereqs. The input should look like the - contents of the C field described in L, meaning - something more or less like this: - - my $prereq = CPAN::Meta::Prereqs->new({ - runtime => { - requires => { - 'Some::Module' => '1.234', - ..., - }, - ..., - }, - ..., - }); - - You can also construct an empty set of prereqs with: - - my $prereqs = CPAN::Meta::Prereqs->new; - - This empty set of prereqs is useful for accumulating new prereqs before finally - dumping the whole set into a structure or string. - - =head2 requirements_for - - my $requirements = $prereqs->requirements_for( $phase, $type ); - - This method returns a L object for the given - phase/type combination. If no prerequisites are registered for that - combination, a new CPAN::Meta::Requirements object will be returned, and it may - be added to as needed. - - If C<$phase> or C<$type> are undefined or otherwise invalid, an exception will - be raised. - - =head2 with_merged_prereqs - - my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs ); - - my $new_prereqs = $prereqs->with_merged_prereqs( \@other_prereqs ); - - This method returns a new CPAN::Meta::Prereqs objects in which all the - other prerequisites given are merged into the current set. This is primarily - provided for combining a distribution's core prereqs with the prereqs of one of - its optional features. - - The new prereqs object has no ties to the originals, and altering it further - will not alter them. - - =head2 merged_requirements - - my $new_reqs = $prereqs->merged_requirements( \@phases, \@types ); - my $new_reqs = $prereqs->merged_requirements( \@phases ); - my $new_reqs = $prereqs->merged_requirements(); - - This method joins together all requirements across a number of phases - and types into a new L object. If arguments - are omitted, it defaults to "runtime", "build" and "test" for phases - and "requires" and "recommends" for types. - - =head2 as_string_hash - - This method returns a hashref containing structures suitable for dumping into a - distmeta data structure. It is made up of hashes and strings, only; there will - be no Prereqs, CPAN::Meta::Requirements, or C objects inside it. - - =head2 is_finalized - - This method returns true if the set of prereqs has been marked "finalized," and - cannot be altered. - - =head2 finalize - - Calling C on a Prereqs object will close it for further modification. - Attempting to make any changes that would actually alter the prereqs will - result in an exception being thrown. - - =head2 clone - - my $cloned_prereqs = $prereqs->clone; - - This method returns a Prereqs object that is identical to the original object, - but can be altered without affecting the original object. Finalization does - not survive cloning, meaning that you may clone a finalized set of prereqs and - then modify the clone. - - =head1 BUGS - - Please report any bugs or feature using the CPAN Request Tracker. - Bugs can be submitted through the web interface at - L - - When submitting a bug or request, please include a test-file or a patch to an - existing test-file that illustrates the bug or desired feature. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # vim: ts=2 sts=2 sw=2 et : -CPAN_META_PREREQS - -$fatpacked{"CPAN/Meta/Requirements.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_REQUIREMENTS'; - use strict; - use warnings; - package CPAN::Meta::Requirements; - # ABSTRACT: a set of version requirements for a CPAN dist - - our $VERSION = '2.133'; - - #pod =head1 SYNOPSIS - #pod - #pod use CPAN::Meta::Requirements; - #pod - #pod my $build_requires = CPAN::Meta::Requirements->new; - #pod - #pod $build_requires->add_minimum('Library::Foo' => 1.208); - #pod - #pod $build_requires->add_minimum('Library::Foo' => 2.602); - #pod - #pod $build_requires->add_minimum('Module::Bar' => 'v1.2.3'); - #pod - #pod $METAyml->{build_requires} = $build_requires->as_string_hash; - #pod - #pod =head1 DESCRIPTION - #pod - #pod A CPAN::Meta::Requirements object models a set of version constraints like - #pod those specified in the F or F files in CPAN distributions, - #pod and as defined by L; - #pod It can be built up by adding more and more constraints, and it will reduce them - #pod to the simplest representation. - #pod - #pod Logically impossible constraints will be identified immediately by thrown - #pod exceptions. - #pod - #pod =cut - - use Carp (); - - # To help ExtUtils::MakeMaker bootstrap CPAN::Meta::Requirements on perls - # before 5.10, we fall back to the EUMM bundled compatibility version module if - # that's the only thing available. This shouldn't ever happen in a normal CPAN - # install of CPAN::Meta::Requirements, as version.pm will be picked up from - # prereqs and be available at runtime. - - BEGIN { - eval "use version ()"; ## no critic - if ( my $err = $@ ) { - eval "use ExtUtils::MakeMaker::version" or die $err; ## no critic - } - } - - # Perl 5.10.0 didn't have "is_qv" in version.pm - *_is_qv = version->can('is_qv') ? sub { $_[0]->is_qv } : sub { exists $_[0]->{qv} }; - - # construct once, reuse many times - my $V0 = version->new(0); - - #pod =method new - #pod - #pod my $req = CPAN::Meta::Requirements->new; - #pod - #pod This returns a new CPAN::Meta::Requirements object. It takes an optional - #pod hash reference argument. Currently, only one key is supported: - #pod - #pod =for :list - #pod * C -- if provided, when a version cannot be parsed into - #pod a version object, this code reference will be called with the invalid - #pod version string as first argument, and the module name as second - #pod argument. It must return a valid version object. - #pod - #pod All other keys are ignored. - #pod - #pod =cut - - my @valid_options = qw( bad_version_hook ); - - sub new { - my ($class, $options) = @_; - $options ||= {}; - Carp::croak "Argument to $class\->new() must be a hash reference" - unless ref $options eq 'HASH'; - my %self = map {; $_ => $options->{$_}} @valid_options; - - return bless \%self => $class; - } - - # from version::vpp - sub _find_magic_vstring { - my $value = shift; - my $tvalue = ''; - require B; - my $sv = B::svref_2object(\$value); - my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef; - while ( $magic ) { - if ( $magic->TYPE eq 'V' ) { - $tvalue = $magic->PTR; - $tvalue =~ s/^v?(.+)$/v$1/; - last; - } - else { - $magic = $magic->MOREMAGIC; - } - } - return $tvalue; - } - - # safe if given an unblessed reference - sub _isa_version { - UNIVERSAL::isa( $_[0], 'UNIVERSAL' ) && $_[0]->isa('version') - } - - sub _version_object { - my ($self, $module, $version) = @_; - - my ($vobj, $err); - - if (not defined $version or (!ref($version) && $version eq '0')) { - return $V0; - } - elsif ( ref($version) eq 'version' || _isa_version($version) ) { - $vobj = $version; - } - else { - # hack around version::vpp not handling <3 character vstring literals - if ( $INC{'version/vpp.pm'} || $INC{'ExtUtils/MakeMaker/version/vpp.pm'} ) { - my $magic = _find_magic_vstring( $version ); - $version = $magic if length $magic; - } - eval { - local $SIG{__WARN__} = sub { die "Invalid version: $_[0]" }; - $vobj = version->new($version); - }; - if ( my $err = $@ ) { - my $hook = $self->{bad_version_hook}; - $vobj = eval { $hook->($version, $module) } - if ref $hook eq 'CODE'; - unless (eval { $vobj->isa("version") }) { - $err =~ s{ at .* line \d+.*$}{}; - die "Can't convert '$version': $err"; - } - } - } - - # ensure no leading '.' - if ( $vobj =~ m{\A\.} ) { - $vobj = version->new("0$vobj"); - } - - # ensure normal v-string form - if ( _is_qv($vobj) ) { - $vobj = version->new($vobj->normal); - } - - return $vobj; - } - - #pod =method add_minimum - #pod - #pod $req->add_minimum( $module => $version ); - #pod - #pod This adds a new minimum version requirement. If the new requirement is - #pod redundant to the existing specification, this has no effect. - #pod - #pod Minimum requirements are inclusive. C<$version> is required, along with any - #pod greater version number. - #pod - #pod This method returns the requirements object. - #pod - #pod =method add_maximum - #pod - #pod $req->add_maximum( $module => $version ); - #pod - #pod This adds a new maximum version requirement. If the new requirement is - #pod redundant to the existing specification, this has no effect. - #pod - #pod Maximum requirements are inclusive. No version strictly greater than the given - #pod version is allowed. - #pod - #pod This method returns the requirements object. - #pod - #pod =method add_exclusion - #pod - #pod $req->add_exclusion( $module => $version ); - #pod - #pod This adds a new excluded version. For example, you might use these three - #pod method calls: - #pod - #pod $req->add_minimum( $module => '1.00' ); - #pod $req->add_maximum( $module => '1.82' ); - #pod - #pod $req->add_exclusion( $module => '1.75' ); - #pod - #pod Any version between 1.00 and 1.82 inclusive would be acceptable, except for - #pod 1.75. - #pod - #pod This method returns the requirements object. - #pod - #pod =method exact_version - #pod - #pod $req->exact_version( $module => $version ); - #pod - #pod This sets the version required for the given module to I the given - #pod version. No other version would be considered acceptable. - #pod - #pod This method returns the requirements object. - #pod - #pod =cut - - BEGIN { - for my $type (qw(maximum exclusion exact_version)) { - my $method = "with_$type"; - my $to_add = $type eq 'exact_version' ? $type : "add_$type"; - - my $code = sub { - my ($self, $name, $version) = @_; - - $version = $self->_version_object( $name, $version ); - - $self->__modify_entry_for($name, $method, $version); - - return $self; - }; - - no strict 'refs'; - *$to_add = $code; - } - } - - # add_minimum is optimized compared to generated subs above because - # it is called frequently and with "0" or equivalent input - sub add_minimum { - my ($self, $name, $version) = @_; - - # stringify $version so that version->new("0.00")->stringify ne "0" - # which preserves the user's choice of "0.00" as the requirement - if (not defined $version or "$version" eq '0') { - return $self if $self->__entry_for($name); - Carp::confess("can't add new requirements to finalized requirements") - if $self->is_finalized; - - $self->{requirements}{ $name } = - CPAN::Meta::Requirements::_Range::Range->with_minimum($V0); - } - else { - $version = $self->_version_object( $name, $version ); - - $self->__modify_entry_for($name, 'with_minimum', $version); - } - return $self; - } - - #pod =method add_requirements - #pod - #pod $req->add_requirements( $another_req_object ); - #pod - #pod This method adds all the requirements in the given CPAN::Meta::Requirements object - #pod to the requirements object on which it was called. If there are any conflicts, - #pod an exception is thrown. - #pod - #pod This method returns the requirements object. - #pod - #pod =cut - - sub add_requirements { - my ($self, $req) = @_; - - for my $module ($req->required_modules) { - my $modifiers = $req->__entry_for($module)->as_modifiers; - for my $modifier (@$modifiers) { - my ($method, @args) = @$modifier; - $self->$method($module => @args); - }; - } - - return $self; - } - - #pod =method accepts_module - #pod - #pod my $bool = $req->accepts_module($module => $version); - #pod - #pod Given an module and version, this method returns true if the version - #pod specification for the module accepts the provided version. In other words, - #pod given: - #pod - #pod Module => '>= 1.00, < 2.00' - #pod - #pod We will accept 1.00 and 1.75 but not 0.50 or 2.00. - #pod - #pod For modules that do not appear in the requirements, this method will return - #pod true. - #pod - #pod =cut - - sub accepts_module { - my ($self, $module, $version) = @_; - - $version = $self->_version_object( $module, $version ); - - return 1 unless my $range = $self->__entry_for($module); - return $range->_accepts($version); - } - - #pod =method clear_requirement - #pod - #pod $req->clear_requirement( $module ); - #pod - #pod This removes the requirement for a given module from the object. - #pod - #pod This method returns the requirements object. - #pod - #pod =cut - - sub clear_requirement { - my ($self, $module) = @_; - - return $self unless $self->__entry_for($module); - - Carp::confess("can't clear requirements on finalized requirements") - if $self->is_finalized; - - delete $self->{requirements}{ $module }; - - return $self; - } - - #pod =method requirements_for_module - #pod - #pod $req->requirements_for_module( $module ); - #pod - #pod This returns a string containing the version requirements for a given module in - #pod the format described in L or undef if the given module has no - #pod requirements. This should only be used for informational purposes such as error - #pod messages and should not be interpreted or used for comparison (see - #pod L instead.) - #pod - #pod =cut - - sub requirements_for_module { - my ($self, $module) = @_; - my $entry = $self->__entry_for($module); - return unless $entry; - return $entry->as_string; - } - - #pod =method required_modules - #pod - #pod This method returns a list of all the modules for which requirements have been - #pod specified. - #pod - #pod =cut - - sub required_modules { keys %{ $_[0]{requirements} } } - - #pod =method clone - #pod - #pod $req->clone; - #pod - #pod This method returns a clone of the invocant. The clone and the original object - #pod can then be changed independent of one another. - #pod - #pod =cut - - sub clone { - my ($self) = @_; - my $new = (ref $self)->new; - - return $new->add_requirements($self); - } - - sub __entry_for { $_[0]{requirements}{ $_[1] } } - - sub __modify_entry_for { - my ($self, $name, $method, $version) = @_; - - my $fin = $self->is_finalized; - my $old = $self->__entry_for($name); - - Carp::confess("can't add new requirements to finalized requirements") - if $fin and not $old; - - my $new = ($old || 'CPAN::Meta::Requirements::_Range::Range') - ->$method($version); - - Carp::confess("can't modify finalized requirements") - if $fin and $old->as_string ne $new->as_string; - - $self->{requirements}{ $name } = $new; - } - - #pod =method is_simple - #pod - #pod This method returns true if and only if all requirements are inclusive minimums - #pod -- that is, if their string expression is just the version number. - #pod - #pod =cut - - sub is_simple { - my ($self) = @_; - for my $module ($self->required_modules) { - # XXX: This is a complete hack, but also entirely correct. - return if $self->__entry_for($module)->as_string =~ /\s/; - } - - return 1; - } - - #pod =method is_finalized - #pod - #pod This method returns true if the requirements have been finalized by having the - #pod C method called on them. - #pod - #pod =cut - - sub is_finalized { $_[0]{finalized} } - - #pod =method finalize - #pod - #pod This method marks the requirements finalized. Subsequent attempts to change - #pod the requirements will be fatal, I they would result in a change. If they - #pod would not alter the requirements, they have no effect. - #pod - #pod If a finalized set of requirements is cloned, the cloned requirements are not - #pod also finalized. - #pod - #pod =cut - - sub finalize { $_[0]{finalized} = 1 } - - #pod =method as_string_hash - #pod - #pod This returns a reference to a hash describing the requirements using the - #pod strings in the L specification. - #pod - #pod For example after the following program: - #pod - #pod my $req = CPAN::Meta::Requirements->new; - #pod - #pod $req->add_minimum('CPAN::Meta::Requirements' => 0.102); - #pod - #pod $req->add_minimum('Library::Foo' => 1.208); - #pod - #pod $req->add_maximum('Library::Foo' => 2.602); - #pod - #pod $req->add_minimum('Module::Bar' => 'v1.2.3'); - #pod - #pod $req->add_exclusion('Module::Bar' => 'v1.2.8'); - #pod - #pod $req->exact_version('Xyzzy' => '6.01'); - #pod - #pod my $hashref = $req->as_string_hash; - #pod - #pod C<$hashref> would contain: - #pod - #pod { - #pod 'CPAN::Meta::Requirements' => '0.102', - #pod 'Library::Foo' => '>= 1.208, <= 2.206', - #pod 'Module::Bar' => '>= v1.2.3, != v1.2.8', - #pod 'Xyzzy' => '== 6.01', - #pod } - #pod - #pod =cut - - sub as_string_hash { - my ($self) = @_; - - my %hash = map {; $_ => $self->{requirements}{$_}->as_string } - $self->required_modules; - - return \%hash; - } - - #pod =method add_string_requirement - #pod - #pod $req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206'); - #pod $req->add_string_requirement('Library::Foo' => v1.208); - #pod - #pod This method parses the passed in string and adds the appropriate requirement - #pod for the given module. A version can be a Perl "v-string". It understands - #pod version ranges as described in the L. For - #pod example: - #pod - #pod =over 4 - #pod - #pod =item 1.3 - #pod - #pod =item >= 1.3 - #pod - #pod =item <= 1.3 - #pod - #pod =item == 1.3 - #pod - #pod =item != 1.3 - #pod - #pod =item > 1.3 - #pod - #pod =item < 1.3 - #pod - #pod =item >= 1.3, != 1.5, <= 2.0 - #pod - #pod A version number without an operator is equivalent to specifying a minimum - #pod (C=>). Extra whitespace is allowed. - #pod - #pod =back - #pod - #pod =cut - - my %methods_for_op = ( - '==' => [ qw(exact_version) ], - '!=' => [ qw(add_exclusion) ], - '>=' => [ qw(add_minimum) ], - '<=' => [ qw(add_maximum) ], - '>' => [ qw(add_minimum add_exclusion) ], - '<' => [ qw(add_maximum add_exclusion) ], - ); - - sub add_string_requirement { - my ($self, $module, $req) = @_; - - unless ( defined $req && length $req ) { - $req = 0; - $self->_blank_carp($module); - } - - my $magic = _find_magic_vstring( $req ); - if (length $magic) { - $self->add_minimum($module => $magic); - return; - } - - my @parts = split qr{\s*,\s*}, $req; - - for my $part (@parts) { - my ($op, $ver) = $part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z}; - - if (! defined $op) { - $self->add_minimum($module => $part); - } else { - Carp::confess("illegal requirement string: $req") - unless my $methods = $methods_for_op{ $op }; - - $self->$_($module => $ver) for @$methods; - } - } - } - - #pod =method from_string_hash - #pod - #pod my $req = CPAN::Meta::Requirements->from_string_hash( \%hash ); - #pod my $req = CPAN::Meta::Requirements->from_string_hash( \%hash, \%opts ); - #pod - #pod This is an alternate constructor for a CPAN::Meta::Requirements - #pod object. It takes a hash of module names and version requirement - #pod strings and returns a new CPAN::Meta::Requirements object. As with - #pod add_string_requirement, a version can be a Perl "v-string". Optionally, - #pod you can supply a hash-reference of options, exactly as with the L - #pod method. - #pod - #pod =cut - - sub _blank_carp { - my ($self, $module) = @_; - Carp::carp("Undefined requirement for $module treated as '0'"); - } - - sub from_string_hash { - my ($class, $hash, $options) = @_; - - my $self = $class->new($options); - - for my $module (keys %$hash) { - my $req = $hash->{$module}; - unless ( defined $req && length $req ) { - $req = 0; - $class->_blank_carp($module); - } - $self->add_string_requirement($module, $req); - } - - return $self; - } - - ############################################################## - - { - package - CPAN::Meta::Requirements::_Range::Exact; - sub _new { bless { version => $_[1] } => $_[0] } - - sub _accepts { return $_[0]{version} == $_[1] } - - sub as_string { return "== $_[0]{version}" } - - sub as_modifiers { return [ [ exact_version => $_[0]{version} ] ] } - - sub _clone { - (ref $_[0])->_new( version->new( $_[0]{version} ) ) - } - - sub with_exact_version { - my ($self, $version) = @_; - - return $self->_clone if $self->_accepts($version); - - Carp::confess("illegal requirements: unequal exact version specified"); - } - - sub with_minimum { - my ($self, $minimum) = @_; - return $self->_clone if $self->{version} >= $minimum; - Carp::confess("illegal requirements: minimum above exact specification"); - } - - sub with_maximum { - my ($self, $maximum) = @_; - return $self->_clone if $self->{version} <= $maximum; - Carp::confess("illegal requirements: maximum below exact specification"); - } - - sub with_exclusion { - my ($self, $exclusion) = @_; - return $self->_clone unless $exclusion == $self->{version}; - Carp::confess("illegal requirements: excluded exact specification"); - } - } - - ############################################################## - - { - package - CPAN::Meta::Requirements::_Range::Range; - - sub _self { ref($_[0]) ? $_[0] : (bless { } => $_[0]) } - - sub _clone { - return (bless { } => $_[0]) unless ref $_[0]; - - my ($s) = @_; - my %guts = ( - (exists $s->{minimum} ? (minimum => version->new($s->{minimum})) : ()), - (exists $s->{maximum} ? (maximum => version->new($s->{maximum})) : ()), - - (exists $s->{exclusions} - ? (exclusions => [ map { version->new($_) } @{ $s->{exclusions} } ]) - : ()), - ); - - bless \%guts => ref($s); - } - - sub as_modifiers { - my ($self) = @_; - my @mods; - push @mods, [ add_minimum => $self->{minimum} ] if exists $self->{minimum}; - push @mods, [ add_maximum => $self->{maximum} ] if exists $self->{maximum}; - push @mods, map {; [ add_exclusion => $_ ] } @{$self->{exclusions} || []}; - return \@mods; - } - - sub as_string { - my ($self) = @_; - - return 0 if ! keys %$self; - - return "$self->{minimum}" if (keys %$self) == 1 and exists $self->{minimum}; - - my @exclusions = @{ $self->{exclusions} || [] }; - - my @parts; - - for my $pair ( - [ qw( >= > minimum ) ], - [ qw( <= < maximum ) ], - ) { - my ($op, $e_op, $k) = @$pair; - if (exists $self->{$k}) { - my @new_exclusions = grep { $_ != $self->{ $k } } @exclusions; - if (@new_exclusions == @exclusions) { - push @parts, "$op $self->{ $k }"; - } else { - push @parts, "$e_op $self->{ $k }"; - @exclusions = @new_exclusions; - } - } - } - - push @parts, map {; "!= $_" } @exclusions; - - return join q{, }, @parts; - } - - sub with_exact_version { - my ($self, $version) = @_; - $self = $self->_clone; - - Carp::confess("illegal requirements: exact specification outside of range") - unless $self->_accepts($version); - - return CPAN::Meta::Requirements::_Range::Exact->_new($version); - } - - sub _simplify { - my ($self) = @_; - - if (defined $self->{minimum} and defined $self->{maximum}) { - if ($self->{minimum} == $self->{maximum}) { - Carp::confess("illegal requirements: excluded all values") - if grep { $_ == $self->{minimum} } @{ $self->{exclusions} || [] }; - - return CPAN::Meta::Requirements::_Range::Exact->_new($self->{minimum}) - } - - Carp::confess("illegal requirements: minimum exceeds maximum") - if $self->{minimum} > $self->{maximum}; - } - - # eliminate irrelevant exclusions - if ($self->{exclusions}) { - my %seen; - @{ $self->{exclusions} } = grep { - (! defined $self->{minimum} or $_ >= $self->{minimum}) - and - (! defined $self->{maximum} or $_ <= $self->{maximum}) - and - ! $seen{$_}++ - } @{ $self->{exclusions} }; - } - - return $self; - } - - sub with_minimum { - my ($self, $minimum) = @_; - $self = $self->_clone; - - if (defined (my $old_min = $self->{minimum})) { - $self->{minimum} = (sort { $b cmp $a } ($minimum, $old_min))[0]; - } else { - $self->{minimum} = $minimum; - } - - return $self->_simplify; - } - - sub with_maximum { - my ($self, $maximum) = @_; - $self = $self->_clone; - - if (defined (my $old_max = $self->{maximum})) { - $self->{maximum} = (sort { $a cmp $b } ($maximum, $old_max))[0]; - } else { - $self->{maximum} = $maximum; - } - - return $self->_simplify; - } - - sub with_exclusion { - my ($self, $exclusion) = @_; - $self = $self->_clone; - - push @{ $self->{exclusions} ||= [] }, $exclusion; - - return $self->_simplify; - } - - sub _accepts { - my ($self, $version) = @_; - - return if defined $self->{minimum} and $version < $self->{minimum}; - return if defined $self->{maximum} and $version > $self->{maximum}; - return if defined $self->{exclusions} - and grep { $version == $_ } @{ $self->{exclusions} }; - - return 1; - } - } - - 1; - # vim: ts=2 sts=2 sw=2 et: - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Requirements - a set of version requirements for a CPAN dist - - =head1 VERSION - - version 2.133 - - =head1 SYNOPSIS - - use CPAN::Meta::Requirements; - - my $build_requires = CPAN::Meta::Requirements->new; - - $build_requires->add_minimum('Library::Foo' => 1.208); - - $build_requires->add_minimum('Library::Foo' => 2.602); - - $build_requires->add_minimum('Module::Bar' => 'v1.2.3'); - - $METAyml->{build_requires} = $build_requires->as_string_hash; - - =head1 DESCRIPTION - - A CPAN::Meta::Requirements object models a set of version constraints like - those specified in the F or F files in CPAN distributions, - and as defined by L; - It can be built up by adding more and more constraints, and it will reduce them - to the simplest representation. - - Logically impossible constraints will be identified immediately by thrown - exceptions. - - =head1 METHODS - - =head2 new - - my $req = CPAN::Meta::Requirements->new; - - This returns a new CPAN::Meta::Requirements object. It takes an optional - hash reference argument. Currently, only one key is supported: - - =over 4 - - =item * - - C -- if provided, when a version cannot be parsed into a version object, this code reference will be called with the invalid version string as first argument, and the module name as second argument. It must return a valid version object. - - =back - - All other keys are ignored. - - =head2 add_minimum - - $req->add_minimum( $module => $version ); - - This adds a new minimum version requirement. If the new requirement is - redundant to the existing specification, this has no effect. - - Minimum requirements are inclusive. C<$version> is required, along with any - greater version number. - - This method returns the requirements object. - - =head2 add_maximum - - $req->add_maximum( $module => $version ); - - This adds a new maximum version requirement. If the new requirement is - redundant to the existing specification, this has no effect. - - Maximum requirements are inclusive. No version strictly greater than the given - version is allowed. - - This method returns the requirements object. - - =head2 add_exclusion - - $req->add_exclusion( $module => $version ); - - This adds a new excluded version. For example, you might use these three - method calls: - - $req->add_minimum( $module => '1.00' ); - $req->add_maximum( $module => '1.82' ); - - $req->add_exclusion( $module => '1.75' ); - - Any version between 1.00 and 1.82 inclusive would be acceptable, except for - 1.75. - - This method returns the requirements object. - - =head2 exact_version - - $req->exact_version( $module => $version ); - - This sets the version required for the given module to I the given - version. No other version would be considered acceptable. - - This method returns the requirements object. - - =head2 add_requirements - - $req->add_requirements( $another_req_object ); - - This method adds all the requirements in the given CPAN::Meta::Requirements object - to the requirements object on which it was called. If there are any conflicts, - an exception is thrown. - - This method returns the requirements object. - - =head2 accepts_module - - my $bool = $req->accepts_module($module => $version); - - Given an module and version, this method returns true if the version - specification for the module accepts the provided version. In other words, - given: - - Module => '>= 1.00, < 2.00' - - We will accept 1.00 and 1.75 but not 0.50 or 2.00. - - For modules that do not appear in the requirements, this method will return - true. - - =head2 clear_requirement - - $req->clear_requirement( $module ); - - This removes the requirement for a given module from the object. - - This method returns the requirements object. - - =head2 requirements_for_module - - $req->requirements_for_module( $module ); - - This returns a string containing the version requirements for a given module in - the format described in L or undef if the given module has no - requirements. This should only be used for informational purposes such as error - messages and should not be interpreted or used for comparison (see - L instead.) - - =head2 required_modules - - This method returns a list of all the modules for which requirements have been - specified. - - =head2 clone - - $req->clone; - - This method returns a clone of the invocant. The clone and the original object - can then be changed independent of one another. - - =head2 is_simple - - This method returns true if and only if all requirements are inclusive minimums - -- that is, if their string expression is just the version number. - - =head2 is_finalized - - This method returns true if the requirements have been finalized by having the - C method called on them. - - =head2 finalize - - This method marks the requirements finalized. Subsequent attempts to change - the requirements will be fatal, I they would result in a change. If they - would not alter the requirements, they have no effect. - - If a finalized set of requirements is cloned, the cloned requirements are not - also finalized. - - =head2 as_string_hash - - This returns a reference to a hash describing the requirements using the - strings in the L specification. - - For example after the following program: - - my $req = CPAN::Meta::Requirements->new; - - $req->add_minimum('CPAN::Meta::Requirements' => 0.102); - - $req->add_minimum('Library::Foo' => 1.208); - - $req->add_maximum('Library::Foo' => 2.602); - - $req->add_minimum('Module::Bar' => 'v1.2.3'); - - $req->add_exclusion('Module::Bar' => 'v1.2.8'); - - $req->exact_version('Xyzzy' => '6.01'); - - my $hashref = $req->as_string_hash; - - C<$hashref> would contain: - - { - 'CPAN::Meta::Requirements' => '0.102', - 'Library::Foo' => '>= 1.208, <= 2.206', - 'Module::Bar' => '>= v1.2.3, != v1.2.8', - 'Xyzzy' => '== 6.01', - } - - =head2 add_string_requirement - - $req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206'); - $req->add_string_requirement('Library::Foo' => v1.208); - - This method parses the passed in string and adds the appropriate requirement - for the given module. A version can be a Perl "v-string". It understands - version ranges as described in the L. For - example: - - =over 4 - - =item 1.3 - - =item >= 1.3 - - =item <= 1.3 - - =item == 1.3 - - =item != 1.3 - - =item > 1.3 - - =item < 1.3 - - =item >= 1.3, != 1.5, <= 2.0 - - A version number without an operator is equivalent to specifying a minimum - (C=>). Extra whitespace is allowed. - - =back - - =head2 from_string_hash - - my $req = CPAN::Meta::Requirements->from_string_hash( \%hash ); - my $req = CPAN::Meta::Requirements->from_string_hash( \%hash, \%opts ); - - This is an alternate constructor for a CPAN::Meta::Requirements - object. It takes a hash of module names and version requirement - strings and returns a new CPAN::Meta::Requirements object. As with - add_string_requirement, a version can be a Perl "v-string". Optionally, - you can supply a hash-reference of options, exactly as with the L - method. - - =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - - =head1 SUPPORT - - =head2 Bugs / Feature Requests - - Please report any bugs or feature requests through the issue tracker - at L. - You will be notified automatically of any progress on your issue. - - =head2 Source Code - - This is open source software. The code repository is available for - public review and contribution under the terms of the license. - - L - - git clone https://github.com/dagolden/CPAN-Meta-Requirements.git - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 CONTRIBUTORS - - =for stopwords Ed J Karen Etheridge Leon Timmermans robario - - =over 4 - - =item * - - Ed J - - =item * - - Karen Etheridge - - =item * - - Leon Timmermans - - =item * - - robario - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -CPAN_META_REQUIREMENTS - -$fatpacked{"CPAN/Meta/Spec.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_SPEC'; - # XXX RULES FOR PATCHING THIS FILE XXX - # Patches that fix typos or formatting are acceptable. Patches - # that change semantics are not acceptable without prior approval - # by David Golden or Ricardo Signes. - - use 5.006; - use strict; - use warnings; - package CPAN::Meta::Spec; - - our $VERSION = '2.150005'; - - 1; - - # ABSTRACT: specification for CPAN distribution metadata - - - # vi:tw=72 - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Spec - specification for CPAN distribution metadata - - =head1 VERSION - - version 2.150005 - - =head1 SYNOPSIS - - my $distmeta = { - name => 'Module-Build', - abstract => 'Build and install Perl modules', - description => "Module::Build is a system for " - . "building, testing, and installing Perl modules. " - . "It is meant to ... blah blah blah ...", - version => '0.36', - release_status => 'stable', - author => [ - 'Ken Williams ', - 'Module-Build List ', # additional contact - ], - license => [ 'perl_5' ], - prereqs => { - runtime => { - requires => { - 'perl' => '5.006', - 'ExtUtils::Install' => '0', - 'File::Basename' => '0', - 'File::Compare' => '0', - 'IO::File' => '0', - }, - recommends => { - 'Archive::Tar' => '1.00', - 'ExtUtils::Install' => '0.3', - 'ExtUtils::ParseXS' => '2.02', - }, - }, - build => { - requires => { - 'Test::More' => '0', - }, - } - }, - resources => { - license => ['http://dev.perl.org/licenses/'], - }, - optional_features => { - domination => { - description => 'Take over the world', - prereqs => { - develop => { requires => { 'Genius::Evil' => '1.234' } }, - runtime => { requires => { 'Machine::Weather' => '2.0' } }, - }, - }, - }, - dynamic_config => 1, - keywords => [ qw/ toolchain cpan dual-life / ], - 'meta-spec' => { - version => '2', - url => 'https://metacpan.org/pod/CPAN::Meta::Spec', - }, - generated_by => 'Module::Build version 0.36', - }; - - =head1 DESCRIPTION - - This document describes version 2 of the CPAN distribution metadata - specification, also known as the "CPAN Meta Spec". - - Revisions of this specification for typo corrections and prose - clarifications may be issued as CPAN::Meta::Spec 2.I. These - revisions will never change semantics or add or remove specified - behavior. - - Distribution metadata describe important properties of Perl - distributions. Distribution building tools like Module::Build, - Module::Install, ExtUtils::MakeMaker or Dist::Zilla should create a - metadata file in accordance with this specification and include it with - the distribution for use by automated tools that index, examine, package - or install Perl distributions. - - =head1 TERMINOLOGY - - =over 4 - - =item distribution - - This is the primary object described by the metadata. In the context of - this document it usually refers to a collection of modules, scripts, - and/or documents that are distributed together for other developers to - use. Examples of distributions are C, C, - or C. - - =item module - - This refers to a reusable library of code contained in a single file. - Modules usually contain one or more packages and are often referred - to by the name of a primary package that can be mapped to the file - name. For example, one might refer to C instead of - F - - =item package - - This refers to a namespace declared with the Perl C statement. - In Perl, packages often have a version number property given by the - C<$VERSION> variable in the namespace. - - =item consumer - - This refers to code that reads a metadata file, deserializes it into a - data structure in memory, or interprets a data structure of metadata - elements. - - =item producer - - This refers to code that constructs a metadata data structure, - serializes into a bytestream and/or writes it to disk. - - =item must, should, may, etc. - - These terms are interpreted as described in IETF RFC 2119. - - =back - - =head1 DATA TYPES - - Fields in the L section describe data elements, each of - which has an associated data type as described herein. There are four - primitive types: Boolean, String, List and Map. Other types are - subtypes of primitives and define compound data structures or define - constraints on the values of a data element. - - =head2 Boolean - - A I is used to provide a true or false value. It B be - represented as a defined value. - - =head2 String - - A I is data element containing a non-zero length sequence of - Unicode characters, such as an ordinary Perl scalar that is not a - reference. - - =head2 List - - A I is an ordered collection of zero or more data elements. - Elements of a List may be of mixed types. - - Producers B represent List elements using a data structure which - unambiguously indicates that multiple values are possible, such as a - reference to a Perl array (an "arrayref"). - - Consumers expecting a List B consider a String as equivalent to a - List of length 1. - - =head2 Map - - A I is an unordered collection of zero or more data elements - ("values"), indexed by associated String elements ("keys"). The Map's - value elements may be of mixed types. - - =head2 License String - - A I is a subtype of String with a restricted set of - values. Valid values are described in detail in the description of - the L field. - - =head2 URL - - I is a subtype of String containing a Uniform Resource Locator or - Identifier. [ This type is called URL and not URI for historical reasons. ] - - =head2 Version - - A I is a subtype of String containing a value that describes - the version number of packages or distributions. Restrictions on format - are described in detail in the L section. - - =head2 Version Range - - The I type is a subtype of String. It describes a range - of Versions that may be present or installed to fulfill prerequisites. - It is specified in detail in the L section. - - =head1 STRUCTURE - - The metadata structure is a data element of type Map. This section - describes valid keys within the Map. - - Any keys not described in this specification document (whether top-level - or within compound data structures described herein) are considered - I and B begin with an "x" or "X" and be followed by an - underscore; i.e. they must match the pattern: C<< qr{\Ax_}i >>. If a - custom key refers to a compound data structure, subkeys within it do not - need an "x_" or "X_" prefix. - - Consumers of metadata may ignore any or all custom keys. All other keys - not described herein are invalid and should be ignored by consumers. - Producers must not generate or output invalid keys. - - For each key, an example is provided followed by a description. The - description begins with the version of spec in which the key was added - or in which the definition was modified, whether the key is I - or I and the data type of the corresponding data element. - These items are in parentheses, brackets and braces, respectively. - - If a data type is a Map or Map subtype, valid subkeys will be described - as well. - - Some fields are marked I. These are shown for historical - context and must not be produced in or consumed from any metadata structure - of version 2 or higher. - - =head2 REQUIRED FIELDS - - =head3 abstract - - Example: - - abstract => 'Build and install Perl modules' - - (Spec 1.2) [required] {String} - - This is a short description of the purpose of the distribution. - - =head3 author - - Example: - - author => [ 'Ken Williams ' ] - - (Spec 1.2) [required] {List of one or more Strings} - - This List indicates the person(s) to contact concerning the - distribution. The preferred form of the contact string is: - - contact-name - - This field provides a general contact list independent of other - structured fields provided within the L field, such as - C. The addressee(s) can be contacted for any purpose - including but not limited to (security) problems with the distribution, - questions about the distribution or bugs in the distribution. - - A distribution's original author is usually the contact listed within - this field. Co-maintainers, successor maintainers or mailing lists - devoted to the distribution may also be listed in addition to or instead - of the original author. - - =head3 dynamic_config - - Example: - - dynamic_config => 1 - - (Spec 2) [required] {Boolean} - - A boolean flag indicating whether a F or F (or - similar) must be executed to determine prerequisites. - - This field should be set to a true value if the distribution performs - some dynamic configuration (asking questions, sensing the environment, - etc.) as part of its configuration. This field should be set to a false - value to indicate that prerequisites included in metadata may be - considered final and valid for static analysis. - - Note: when this field is true, post-configuration prerequisites are not - guaranteed to bear any relation whatsoever to those stated in the metadata, - and relying on them doing so is an error. See also - L in the implementors' - notes. - - This field explicitly B indicate whether installation may be - safely performed without using a Makefile or Build file, as there may be - special files to install or custom installation targets (e.g. for - dual-life modules that exist on CPAN as well as in the Perl core). This - field only defines whether or not prerequisites are exactly as given in the - metadata. - - =head3 generated_by - - Example: - - generated_by => 'Module::Build version 0.36' - - (Spec 1.0) [required] {String} - - This field indicates the tool that was used to create this metadata. - There are no defined semantics for this field, but it is traditional to - use a string in the form "Generating::Package version 1.23" or the - author's name, if the file was generated by hand. - - =head3 license - - Example: - - license => [ 'perl_5' ] - - license => [ 'apache_2_0', 'mozilla_1_0' ] - - (Spec 2) [required] {List of one or more License Strings} - - One or more licenses that apply to some or all of the files in the - distribution. If multiple licenses are listed, the distribution - documentation should be consulted to clarify the interpretation of - multiple licenses. - - The following list of license strings are valid: - - string description - ------------- ----------------------------------------------- - agpl_3 GNU Affero General Public License, Version 3 - apache_1_1 Apache Software License, Version 1.1 - apache_2_0 Apache License, Version 2.0 - artistic_1 Artistic License, (Version 1) - artistic_2 Artistic License, Version 2.0 - bsd BSD License (three-clause) - freebsd FreeBSD License (two-clause) - gfdl_1_2 GNU Free Documentation License, Version 1.2 - gfdl_1_3 GNU Free Documentation License, Version 1.3 - gpl_1 GNU General Public License, Version 1 - gpl_2 GNU General Public License, Version 2 - gpl_3 GNU General Public License, Version 3 - lgpl_2_1 GNU Lesser General Public License, Version 2.1 - lgpl_3_0 GNU Lesser General Public License, Version 3.0 - mit MIT (aka X11) License - mozilla_1_0 Mozilla Public License, Version 1.0 - mozilla_1_1 Mozilla Public License, Version 1.1 - openssl OpenSSL License - perl_5 The Perl 5 License (Artistic 1 & GPL 1 or later) - qpl_1_0 Q Public License, Version 1.0 - ssleay Original SSLeay License - sun Sun Internet Standards Source License (SISSL) - zlib zlib License - - The following license strings are also valid and indicate other - licensing not described above: - - string description - ------------- ----------------------------------------------- - open_source Other Open Source Initiative (OSI) approved license - restricted Requires special permission from copyright holder - unrestricted Not an OSI approved license, but not restricted - unknown License not provided in metadata - - All other strings are invalid in the license field. - - =head3 meta-spec - - Example: - - 'meta-spec' => { - version => '2', - url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec', - } - - (Spec 1.2) [required] {Map} - - This field indicates the version of the CPAN Meta Spec that should be - used to interpret the metadata. Consumers must check this key as soon - as possible and abort further metadata processing if the meta-spec - version is not supported by the consumer. - - The following keys are valid, but only C is required. - - =over - - =item version - - This subkey gives the integer I of the CPAN Meta Spec against - which the document was generated. - - =item url - - This is a I of the metadata specification document corresponding to - the given version. This is strictly for human-consumption and should - not impact the interpretation of the document. - - For the version 2 spec, either of these are recommended: - - =over 4 - - =item * - - C - - =item * - - C - - =back - - =back - - =head3 name - - Example: - - name => 'Module-Build' - - (Spec 1.0) [required] {String} - - This field is the name of the distribution. This is often created by - taking the "main package" in the distribution and changing C<::> to - C<->, but the name may be completely unrelated to the packages within - the distribution. For example, L is distributed as part - of the distribution name "libwww-perl". - - =head3 release_status - - Example: - - release_status => 'stable' - - (Spec 2) [required] {String} - - This field provides the release status of this distribution. If the - C field contains an underscore character, then - C B be "stable." - - The C field B have one of the following values: - - =over - - =item stable - - This indicates an ordinary, "final" release that should be indexed by PAUSE - or other indexers. - - =item testing - - This indicates a "beta" release that is substantially complete, but has an - elevated risk of bugs and requires additional testing. The distribution - should not be installed over a stable release without an explicit request - or other confirmation from a user. This release status may also be used - for "release candidate" versions of a distribution. - - =item unstable - - This indicates an "alpha" release that is under active development, but has - been released for early feedback or testing and may be missing features or - may have serious bugs. The distribution should not be installed over a - stable release without an explicit request or other confirmation from a - user. - - =back - - Consumers B use this field to determine how to index the - distribution for CPAN or other repositories in addition to or in - replacement of heuristics based on version number or file name. - - =head3 version - - Example: - - version => '0.36' - - (Spec 1.0) [required] {Version} - - This field gives the version of the distribution to which the metadata - structure refers. - - =head2 OPTIONAL FIELDS - - =head3 description - - Example: - - description => "Module::Build is a system for " - . "building, testing, and installing Perl modules. " - . "It is meant to ... blah blah blah ...", - - (Spec 2) [optional] {String} - - A longer, more complete description of the purpose or intended use of - the distribution than the one provided by the C key. - - =head3 keywords - - Example: - - keywords => [ qw/ toolchain cpan dual-life / ] - - (Spec 1.1) [optional] {List of zero or more Strings} - - A List of keywords that describe this distribution. Keywords - B include whitespace. - - =head3 no_index - - Example: - - no_index => { - file => [ 'My/Module.pm' ], - directory => [ 'My/Private' ], - package => [ 'My::Module::Secret' ], - namespace => [ 'My::Module::Sample' ], - } - - (Spec 1.2) [optional] {Map} - - This Map describes any files, directories, packages, and namespaces that - are private to the packaging or implementation of the distribution and - should be ignored by indexing or search tools. Note that this is a list of - exclusions, and the spec does not define what to I - see - L in the implementors notes for more - information. - - Valid subkeys are as follows: - - =over - - =item file - - A I of relative paths to files. Paths B specified with - unix conventions. - - =item directory - - A I of relative paths to directories. Paths B specified - with unix conventions. - - [ Note: previous editions of the spec had C

instead of C ] - - =item package - - A I of package names. - - =item namespace - - A I of package namespaces, where anything below the namespace - must be ignored, but I the namespace itself. - - In the example above for C, C would - be ignored, but C would not. - - =back - - =head3 optional_features - - Example: - - optional_features => { - sqlite => { - description => 'Provides SQLite support', - prereqs => { - runtime => { - requires => { - 'DBD::SQLite' => '1.25' - } - } - } - } - } - - (Spec 2) [optional] {Map} - - This Map describes optional features with incremental prerequisites. - Each key of the C Map is a String used to identify - the feature and each value is a Map with additional information about - the feature. Valid subkeys include: - - =over - - =item description - - This is a String describing the feature. Every optional feature - should provide a description - - =item prereqs - - This entry is required and has the same structure as that of the - C> key. It provides a list of package requirements - that must be satisfied for the feature to be supported or enabled. - - There is one crucial restriction: the prereqs of an optional feature - B include C phase prereqs. - - =back - - Consumers B include optional features as prerequisites without - explicit instruction from users (whether via interactive prompting, - a function parameter or a configuration value, etc. ). - - If an optional feature is used by a consumer to add additional - prerequisites, the consumer should merge the optional feature - prerequisites into those given by the C key using the same - semantics. See L for details on - merging prerequisites. - - I Because there is currently no way for a - distribution to specify a dependency on an optional feature of another - dependency, the use of C is discouraged. Instead, - create a separate, installable distribution that ensures the desired - feature is available. For example, if C has a C feature, - release a separate C distribution that satisfies - requirements for the feature. - - =head3 prereqs - - Example: - - prereqs => { - runtime => { - requires => { - 'perl' => '5.006', - 'File::Spec' => '0.86', - 'JSON' => '2.16', - }, - recommends => { - 'JSON::XS' => '2.26', - }, - suggests => { - 'Archive::Tar' => '0', - }, - }, - build => { - requires => { - 'Alien::SDL' => '1.00', - }, - }, - test => { - recommends => { - 'Test::Deep' => '0.10', - }, - } - } - - (Spec 2) [optional] {Map} - - This is a Map that describes all the prerequisites of the distribution. - The keys are phases of activity, such as C, C, C - or C. Values are Maps in which the keys name the type of - prerequisite relationship such as C, C, or - C and the value provides a set of prerequisite relations. The - set of relations B be specified as a Map of package names to - version ranges. - - The full definition for this field is given in the L - section. - - =head3 provides - - Example: - - provides => { - 'Foo::Bar' => { - file => 'lib/Foo/Bar.pm', - version => '0.27_02', - }, - 'Foo::Bar::Blah' => { - file => 'lib/Foo/Bar/Blah.pm', - }, - 'Foo::Bar::Baz' => { - file => 'lib/Foo/Bar/Baz.pm', - version => '0.3', - }, - } - - (Spec 1.2) [optional] {Map} - - This describes all packages provided by this distribution. This - information is used by distribution and automation mechanisms like - PAUSE, CPAN, metacpan.org and search.cpan.org to build indexes saying in - which distribution various packages can be found. - - The keys of C are package names that can be found within - the distribution. If a package name key is provided, it must - have a Map with the following valid subkeys: - - =over - - =item file - - This field is required. It must contain a Unix-style relative file path - from the root of the distribution directory to a file that contains or - generates the package. It may be given as C or C - to claim a package for indexing without needing a C<*.pm>. - - =item version - - If it exists, this field must contains a I String for the - package. If the package does not have a C<$VERSION>, this field must - be omitted. - - =back - - =head3 resources - - Example: - - resources => { - license => [ 'http://dev.perl.org/licenses/' ], - homepage => 'http://sourceforge.net/projects/module-build', - bugtracker => { - web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta', - mailto => 'meta-bugs@example.com', - }, - repository => { - url => 'git://github.com/dagolden/cpan-meta.git', - web => 'http://github.com/dagolden/cpan-meta', - type => 'git', - }, - x_twitter => 'http://twitter.com/cpan_linked/', - } - - (Spec 2) [optional] {Map} - - This field describes resources related to this distribution. - - Valid subkeys include: - - =over - - =item homepage - - The official home of this project on the web. - - =item license - - A List of I's that relate to this distribution's license. As with the - top-level C field, distribution documentation should be consulted - to clarify the interpretation of multiple licenses provided here. - - =item bugtracker - - This entry describes the bug tracking system for this distribution. It - is a Map with the following valid keys: - - web - a URL pointing to a web front-end for the bug tracker - mailto - an email address to which bugs can be sent - - =item repository - - This entry describes the source control repository for this distribution. It - is a Map with the following valid keys: - - url - a URL pointing to the repository itself - web - a URL pointing to a web front-end for the repository - type - a lowercase string indicating the VCS used - - Because a url like C is ambiguous as to - type, producers should provide a C whenever a C key is given. - The C field should be the name of the most common program used - to work with the repository, e.g. C, C, C, C, - C or C. - - =back - - =head2 DEPRECATED FIELDS - - =head3 build_requires - - I<(Deprecated in Spec 2)> [optional] {String} - - Replaced by C - - =head3 configure_requires - - I<(Deprecated in Spec 2)> [optional] {String} - - Replaced by C - - =head3 conflicts - - I<(Deprecated in Spec 2)> [optional] {String} - - Replaced by C - - =head3 distribution_type - - I<(Deprecated in Spec 2)> [optional] {String} - - This field indicated 'module' or 'script' but was considered - meaningless, since many distributions are hybrids of several kinds of - things. - - =head3 license_uri - - I<(Deprecated in Spec 1.2)> [optional] {URL} - - Replaced by C in C - - =head3 private - - I<(Deprecated in Spec 1.2)> [optional] {Map} - - This field has been renamed to L. - - =head3 recommends - - I<(Deprecated in Spec 2)> [optional] {String} - - Replaced by C - - =head3 requires - - I<(Deprecated in Spec 2)> [optional] {String} - - Replaced by C - - =head1 VERSION NUMBERS - - =head2 Version Formats - - This section defines the Version type, used by several fields in the - CPAN Meta Spec. - - Version numbers must be treated as strings, not numbers. For - example, C<1.200> B be serialized as C<1.2>. Version - comparison should be delegated to the Perl L module, version - 0.80 or newer. - - Unless otherwise specified, version numbers B appear in one of two - formats: - - =over - - =item Decimal versions - - Decimal versions are regular "decimal numbers", with some limitations. - They B be non-negative and B begin and end with a digit. A - single underscore B be included, but B be between two digits. - They B use exponential notation ("1.23e-2"). - - version => '1.234' # OK - version => '1.23_04' # OK - - version => '1.23_04_05' # Illegal - version => '1.' # Illegal - version => '.1' # Illegal - - =item Dotted-integer versions - - Dotted-integer (also known as dotted-decimal) versions consist of - positive integers separated by full stop characters (i.e. "dots", - "periods" or "decimal points"). This are equivalent in format to Perl - "v-strings", with some additional restrictions on form. They must be - given in "normal" form, which has a leading "v" character and at least - three integer components. To retain a one-to-one mapping with decimal - versions, all components after the first B be restricted to the - range 0 to 999. The final component B be separated by an - underscore character instead of a period. - - version => 'v1.2.3' # OK - version => 'v1.2_3' # OK - version => 'v1.2.3.4' # OK - version => 'v1.2.3_4' # OK - version => 'v2009.10.31' # OK - - version => 'v1.2' # Illegal - version => '1.2.3' # Illegal - version => 'v1.2_3_4' # Illegal - version => 'v1.2009.10.31' # Not recommended - - =back - - =head2 Version Ranges - - Some fields (prereq, optional_features) indicate the particular - version(s) of some other module that may be required as a prerequisite. - This section details the Version Range type used to provide this - information. - - The simplest format for a Version Range is just the version - number itself, e.g. C<2.4>. This means that B version 2.4 - must be present. To indicate that B version of a prerequisite is - okay, even if the prerequisite doesn't define a version at all, use - the version C<0>. - - Alternatively, a version range B use the operators E (less than), - E= (less than or equal), E (greater than), E= (greater than - or equal), == (equal), and != (not equal). For example, the - specification C 2.0> means that any version of the prerequisite - less than 2.0 is suitable. - - For more complicated situations, version specifications B be AND-ed - together using commas. The specification C= 1.2, != 1.5, E - 2.0> indicates a version that must be B 1.2, B 2.0, - and B 1.5. - - =head1 PREREQUISITES - - =head2 Prereq Spec - - The C key in the top-level metadata and within - C define the relationship between a distribution and - other packages. The prereq spec structure is a hierarchical data - structure which divides prerequisites into I of activity in the - installation process and I that indicate how - prerequisites should be resolved. - - For example, to specify that C is C during the - C phase, this entry would appear in the distribution metadata: - - prereqs => { - test => { - requires => { - 'Data::Dumper' => '2.00' - } - } - } - - =head3 Phases - - Requirements for regular use must be listed in the C phase. - Other requirements should be listed in the earliest stage in which they - are required and consumers must accumulate and satisfy requirements - across phases before executing the activity. For example, C - requirements must also be available during the C phase. - - before action requirements that must be met - ---------------- -------------------------------- - perl Build.PL configure - perl Makefile.PL - - make configure, runtime, build - Build - - make test configure, runtime, build, test - Build test - - Consumers that install the distribution must ensure that - I requirements are also installed and may install - dependencies from other phases. - - after action requirements that must be met - ---------------- -------------------------------- - make install runtime - Build install - - =over - - =item configure - - The configure phase occurs before any dynamic configuration has been - attempted. Libraries required by the configure phase B be - available for use before the distribution building tool has been - executed. - - =item build - - The build phase is when the distribution's source code is compiled (if - necessary) and otherwise made ready for installation. - - =item test - - The test phase is when the distribution's automated test suite is run. - Any library that is needed only for testing and not for subsequent use - should be listed here. - - =item runtime - - The runtime phase refers not only to when the distribution's contents - are installed, but also to its continued use. Any library that is a - prerequisite for regular use of this distribution should be indicated - here. - - =item develop - - The develop phase's prereqs are libraries needed to work on the - distribution's source code as its author does. These tools might be - needed to build a release tarball, to run author-only tests, or to - perform other tasks related to developing new versions of the - distribution. - - =back - - =head3 Relationships - - =over - - =item requires - - These dependencies B be installed for proper completion of the - phase. - - =item recommends - - Recommended dependencies are I encouraged and should be - satisfied except in resource constrained environments. - - =item suggests - - These dependencies are optional, but are suggested for enhanced operation - of the described distribution. - - =item conflicts - - These libraries cannot be installed when the phase is in operation. - This is a very rare situation, and the C relationship should - be used with great caution, or not at all. - - =back - - =head2 Merging and Resolving Prerequisites - - Whenever metadata consumers merge prerequisites, either from different - phases or from C, they should merged in a way which - preserves the intended semantics of the prerequisite structure. Generally, - this means concatenating the version specifications using commas, as - described in the L section. - - Another subtle error that can occur in resolving prerequisites comes from - the way that modules in prerequisites are indexed to distribution files on - CPAN. When a module is deleted from a distribution, prerequisites calling - for that module could indicate an older distribution should be installed, - potentially overwriting files from a newer distribution. - - For example, as of Oct 31, 2009, the CPAN index file contained these - module-distribution mappings: - - Class::MOP 0.94 D/DR/DROLSKY/Class-MOP-0.94.tar.gz - Class::MOP::Class 0.94 D/DR/DROLSKY/Class-MOP-0.94.tar.gz - Class::MOP::Class::Immutable 0.04 S/ST/STEVAN/Class-MOP-0.36.tar.gz - - Consider the case where "Class::MOP" 0.94 is installed. If a - distribution specified "Class::MOP::Class::Immutable" as a prerequisite, - it could result in Class-MOP-0.36.tar.gz being installed, overwriting - any files from Class-MOP-0.94.tar.gz. - - Consumers of metadata B test whether prerequisites would result - in installed module files being "downgraded" to an older version and - B warn users or ignore the prerequisite that would cause such a - result. - - =head1 SERIALIZATION - - Distribution metadata should be serialized (as a hashref) as - JSON-encoded data and packaged with distributions as the file - F. - - In the past, the distribution metadata structure had been packed with - distributions as F, a file in the YAML Tiny format (for which, - see L). Tools that consume distribution metadata from disk - should be capable of loading F, but should prefer F - if both are found. - - =head1 NOTES FOR IMPLEMENTORS - - =head2 Extracting Version Numbers from Perl Modules - - To get the version number from a Perl module, consumers should use the - C<< MM->parse_version($file) >> method provided by - L or L. For example, for the - module given by C<$mod>, the version may be retrieved in one of the - following ways: - - # via ExtUtils::MakeMaker - my $file = MM->_installed_file_for_module($mod); - my $version = MM->parse_version($file) - - The private C<_installed_file_for_module> method may be replaced with - other methods for locating a module in C<@INC>. - - # via Module::Metadata - my $info = Module::Metadata->new_from_module($mod); - my $version = $info->version; - - If only a filename is available, the following approach may be used: - - # via Module::Build - my $info = Module::Metadata->new_from_file($file); - my $version = $info->version; - - =head2 Comparing Version Numbers - - The L module provides the most reliable way to compare version - numbers in all the various ways they might be provided or might exist - within modules. Given two strings containing version numbers, C<$v1> and - C<$v2>, they should be converted to C objects before using - ordinary comparison operators. For example: - - use version; - if ( version->new($v1) <=> version->new($v2) ) { - print "Versions are not equal\n"; - } - - If the only comparison needed is whether an installed module is of a - sufficiently high version, a direct test may be done using the string - form of C and the C function. For example, for module C<$mod> - and version prerequisite C<$prereq>: - - if ( eval "use $mod $prereq (); 1" ) { - print "Module $mod version is OK.\n"; - } - - If the values of C<$mod> and C<$prereq> have not been scrubbed, however, - this presents security implications. - - =head2 Prerequisites for dynamically configured distributions - - When C is true, it is an error to presume that the - prerequisites given in distribution metadata will have any relationship - whatsoever to the actual prerequisites of the distribution. - - In practice, however, one can generally expect such prerequisites to be - one of two things: - - =over 4 - - =item * - - The minimum prerequisites for the distribution, to which dynamic configuration will only add items - - =item * - - Whatever the distribution configured with on the releaser's machine at release time - - =back - - The second case often turns out to have identical results to the first case, - albeit only by accident. - - As such, consumers may use this data for informational analysis, but - presenting it to the user as canonical or relying on it as such is - invariably the height of folly. - - =head2 Indexing distributions a la PAUSE - - While no_index tells you what must be ignored when indexing, this spec holds - no opinion on how you should get your initial candidate list of things to - possibly index. For "normal" distributions you might consider simply indexing - the contents of lib/, but there are many fascinating oddities on CPAN and - many dists from the days when it was normal to put the main .pm file in the - root of the distribution archive - so PAUSE currently indexes all .pm and .PL - files that are not either (a) specifically excluded by no_index (b) in - C, C, or C directories, or common 'mistake' directories such as - C. - - Or: If you're trying to be PAUSE-like, make sure you skip C, C and - C as well as anything marked as no_index. - - Also remember: If the META file contains a provides field, you shouldn't be - indexing anything in the first place - just use that. - - =head1 SEE ALSO - - =over 4 - - =item * - - CPAN, L - - =item * - - JSON, L - - =item * - - YAML, L - - =item * - - L - - =item * - - L - - =item * - - L - - =item * - - L - - =item * - - L - - =back - - =head1 HISTORY - - Ken Williams wrote the original CPAN Meta Spec (also known as the - "META.yml spec") in 2003 and maintained it through several revisions - with input from various members of the community. In 2005, Randy - Sims redrafted it from HTML to POD for the version 1.2 release. Ken - continued to maintain the spec through version 1.4. - - In late 2009, David Golden organized the version 2 proposal review - process. David and Ricardo Signes drafted the final version 2 spec - in April 2010 based on the version 1.4 spec and patches contributed - during the proposal process. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -CPAN_META_SPEC - -$fatpacked{"CPAN/Meta/Validator.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_VALIDATOR'; - use 5.006; - use strict; - use warnings; - package CPAN::Meta::Validator; - - our $VERSION = '2.150005'; - - #pod =head1 SYNOPSIS - #pod - #pod my $struct = decode_json_file('META.json'); - #pod - #pod my $cmv = CPAN::Meta::Validator->new( $struct ); - #pod - #pod unless ( $cmv->is_valid ) { - #pod my $msg = "Invalid META structure. Errors found:\n"; - #pod $msg .= join( "\n", $cmv->errors ); - #pod die $msg; - #pod } - #pod - #pod =head1 DESCRIPTION - #pod - #pod This module validates a CPAN Meta structure against the version of the - #pod the specification claimed in the C field of the structure. - #pod - #pod =cut - - #--------------------------------------------------------------------------# - # This code copied and adapted from Test::CPAN::Meta - # by Barbie, for Miss Barbell Productions, - # L - #--------------------------------------------------------------------------# - - #--------------------------------------------------------------------------# - # Specification Definitions - #--------------------------------------------------------------------------# - - my %known_specs = ( - '1.4' => 'http://module-build.sourceforge.net/META-spec-v1.4.html', - '1.3' => 'http://module-build.sourceforge.net/META-spec-v1.3.html', - '1.2' => 'http://module-build.sourceforge.net/META-spec-v1.2.html', - '1.1' => 'http://module-build.sourceforge.net/META-spec-v1.1.html', - '1.0' => 'http://module-build.sourceforge.net/META-spec-v1.0.html' - ); - my %known_urls = map {$known_specs{$_} => $_} keys %known_specs; - - my $module_map1 = { 'map' => { ':key' => { name => \&module, value => \&exversion } } }; - - my $module_map2 = { 'map' => { ':key' => { name => \&module, value => \&version } } }; - - my $no_index_2 = { - 'map' => { file => { list => { value => \&string } }, - directory => { list => { value => \&string } }, - 'package' => { list => { value => \&string } }, - namespace => { list => { value => \&string } }, - ':key' => { name => \&custom_2, value => \&anything }, - } - }; - - my $no_index_1_3 = { - 'map' => { file => { list => { value => \&string } }, - directory => { list => { value => \&string } }, - 'package' => { list => { value => \&string } }, - namespace => { list => { value => \&string } }, - ':key' => { name => \&string, value => \&anything }, - } - }; - - my $no_index_1_2 = { - 'map' => { file => { list => { value => \&string } }, - dir => { list => { value => \&string } }, - 'package' => { list => { value => \&string } }, - namespace => { list => { value => \&string } }, - ':key' => { name => \&string, value => \&anything }, - } - }; - - my $no_index_1_1 = { - 'map' => { ':key' => { name => \&string, list => { value => \&string } }, - } - }; - - my $prereq_map = { - map => { - ':key' => { - name => \&phase, - 'map' => { - ':key' => { - name => \&relation, - %$module_map1, - }, - }, - } - }, - }; - - my %definitions = ( - '2' => { - # REQUIRED - 'abstract' => { mandatory => 1, value => \&string }, - 'author' => { mandatory => 1, list => { value => \&string } }, - 'dynamic_config' => { mandatory => 1, value => \&boolean }, - 'generated_by' => { mandatory => 1, value => \&string }, - 'license' => { mandatory => 1, list => { value => \&license } }, - 'meta-spec' => { - mandatory => 1, - 'map' => { - version => { mandatory => 1, value => \&version}, - url => { value => \&url }, - ':key' => { name => \&custom_2, value => \&anything }, - } - }, - 'name' => { mandatory => 1, value => \&string }, - 'release_status' => { mandatory => 1, value => \&release_status }, - 'version' => { mandatory => 1, value => \&version }, - - # OPTIONAL - 'description' => { value => \&string }, - 'keywords' => { list => { value => \&string } }, - 'no_index' => $no_index_2, - 'optional_features' => { - 'map' => { - ':key' => { - name => \&string, - 'map' => { - description => { value => \&string }, - prereqs => $prereq_map, - ':key' => { name => \&custom_2, value => \&anything }, - } - } - } - }, - 'prereqs' => $prereq_map, - 'provides' => { - 'map' => { - ':key' => { - name => \&module, - 'map' => { - file => { mandatory => 1, value => \&file }, - version => { value => \&version }, - ':key' => { name => \&custom_2, value => \&anything }, - } - } - } - }, - 'resources' => { - 'map' => { - license => { list => { value => \&url } }, - homepage => { value => \&url }, - bugtracker => { - 'map' => { - web => { value => \&url }, - mailto => { value => \&string}, - ':key' => { name => \&custom_2, value => \&anything }, - } - }, - repository => { - 'map' => { - web => { value => \&url }, - url => { value => \&url }, - type => { value => \&string }, - ':key' => { name => \&custom_2, value => \&anything }, - } - }, - ':key' => { value => \&string, name => \&custom_2 }, - } - }, - - # CUSTOM -- additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&custom_2, value => \&anything }, - }, - - '1.4' => { - 'meta-spec' => { - mandatory => 1, - 'map' => { - version => { mandatory => 1, value => \&version}, - url => { mandatory => 1, value => \&urlspec }, - ':key' => { name => \&string, value => \&anything }, - }, - }, - - 'name' => { mandatory => 1, value => \&string }, - 'version' => { mandatory => 1, value => \&version }, - 'abstract' => { mandatory => 1, value => \&string }, - 'author' => { mandatory => 1, list => { value => \&string } }, - 'license' => { mandatory => 1, value => \&license }, - 'generated_by' => { mandatory => 1, value => \&string }, - - 'distribution_type' => { value => \&string }, - 'dynamic_config' => { value => \&boolean }, - - 'requires' => $module_map1, - 'recommends' => $module_map1, - 'build_requires' => $module_map1, - 'configure_requires' => $module_map1, - 'conflicts' => $module_map2, - - 'optional_features' => { - 'map' => { - ':key' => { name => \&string, - 'map' => { description => { value => \&string }, - requires => $module_map1, - recommends => $module_map1, - build_requires => $module_map1, - conflicts => $module_map2, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - 'provides' => { - 'map' => { - ':key' => { name => \&module, - 'map' => { - file => { mandatory => 1, value => \&file }, - version => { value => \&version }, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - 'no_index' => $no_index_1_3, - 'private' => $no_index_1_3, - - 'keywords' => { list => { value => \&string } }, - - 'resources' => { - 'map' => { license => { value => \&url }, - homepage => { value => \&url }, - bugtracker => { value => \&url }, - repository => { value => \&url }, - ':key' => { value => \&string, name => \&custom_1 }, - } - }, - - # additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&string, value => \&anything }, - }, - - '1.3' => { - 'meta-spec' => { - mandatory => 1, - 'map' => { - version => { mandatory => 1, value => \&version}, - url => { mandatory => 1, value => \&urlspec }, - ':key' => { name => \&string, value => \&anything }, - }, - }, - - 'name' => { mandatory => 1, value => \&string }, - 'version' => { mandatory => 1, value => \&version }, - 'abstract' => { mandatory => 1, value => \&string }, - 'author' => { mandatory => 1, list => { value => \&string } }, - 'license' => { mandatory => 1, value => \&license }, - 'generated_by' => { mandatory => 1, value => \&string }, - - 'distribution_type' => { value => \&string }, - 'dynamic_config' => { value => \&boolean }, - - 'requires' => $module_map1, - 'recommends' => $module_map1, - 'build_requires' => $module_map1, - 'conflicts' => $module_map2, - - 'optional_features' => { - 'map' => { - ':key' => { name => \&string, - 'map' => { description => { value => \&string }, - requires => $module_map1, - recommends => $module_map1, - build_requires => $module_map1, - conflicts => $module_map2, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - 'provides' => { - 'map' => { - ':key' => { name => \&module, - 'map' => { - file => { mandatory => 1, value => \&file }, - version => { value => \&version }, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - - 'no_index' => $no_index_1_3, - 'private' => $no_index_1_3, - - 'keywords' => { list => { value => \&string } }, - - 'resources' => { - 'map' => { license => { value => \&url }, - homepage => { value => \&url }, - bugtracker => { value => \&url }, - repository => { value => \&url }, - ':key' => { value => \&string, name => \&custom_1 }, - } - }, - - # additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&string, value => \&anything }, - }, - - # v1.2 is misleading, it seems to assume that a number of fields where created - # within v1.1, when they were created within v1.2. This may have been an - # original mistake, and that a v1.1 was retro fitted into the timeline, when - # v1.2 was originally slated as v1.1. But I could be wrong ;) - '1.2' => { - 'meta-spec' => { - mandatory => 1, - 'map' => { - version => { mandatory => 1, value => \&version}, - url => { mandatory => 1, value => \&urlspec }, - ':key' => { name => \&string, value => \&anything }, - }, - }, - - - 'name' => { mandatory => 1, value => \&string }, - 'version' => { mandatory => 1, value => \&version }, - 'license' => { mandatory => 1, value => \&license }, - 'generated_by' => { mandatory => 1, value => \&string }, - 'author' => { mandatory => 1, list => { value => \&string } }, - 'abstract' => { mandatory => 1, value => \&string }, - - 'distribution_type' => { value => \&string }, - 'dynamic_config' => { value => \&boolean }, - - 'keywords' => { list => { value => \&string } }, - - 'private' => $no_index_1_2, - '$no_index' => $no_index_1_2, - - 'requires' => $module_map1, - 'recommends' => $module_map1, - 'build_requires' => $module_map1, - 'conflicts' => $module_map2, - - 'optional_features' => { - 'map' => { - ':key' => { name => \&string, - 'map' => { description => { value => \&string }, - requires => $module_map1, - recommends => $module_map1, - build_requires => $module_map1, - conflicts => $module_map2, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - 'provides' => { - 'map' => { - ':key' => { name => \&module, - 'map' => { - file => { mandatory => 1, value => \&file }, - version => { value => \&version }, - ':key' => { name => \&string, value => \&anything }, - } - } - } - }, - - 'resources' => { - 'map' => { license => { value => \&url }, - homepage => { value => \&url }, - bugtracker => { value => \&url }, - repository => { value => \&url }, - ':key' => { value => \&string, name => \&custom_1 }, - } - }, - - # additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&string, value => \&anything }, - }, - - # note that the 1.1 spec only specifies 'version' as mandatory - '1.1' => { - 'name' => { value => \&string }, - 'version' => { mandatory => 1, value => \&version }, - 'license' => { value => \&license }, - 'generated_by' => { value => \&string }, - - 'license_uri' => { value => \&url }, - 'distribution_type' => { value => \&string }, - 'dynamic_config' => { value => \&boolean }, - - 'private' => $no_index_1_1, - - 'requires' => $module_map1, - 'recommends' => $module_map1, - 'build_requires' => $module_map1, - 'conflicts' => $module_map2, - - # additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&string, value => \&anything }, - }, - - # note that the 1.0 spec doesn't specify optional or mandatory fields - # but we will treat version as mandatory since otherwise META 1.0 is - # completely arbitrary and pointless - '1.0' => { - 'name' => { value => \&string }, - 'version' => { mandatory => 1, value => \&version }, - 'license' => { value => \&license }, - 'generated_by' => { value => \&string }, - - 'license_uri' => { value => \&url }, - 'distribution_type' => { value => \&string }, - 'dynamic_config' => { value => \&boolean }, - - 'requires' => $module_map1, - 'recommends' => $module_map1, - 'build_requires' => $module_map1, - 'conflicts' => $module_map2, - - # additional user defined key/value pairs - # note we can only validate the key name, as the structure is user defined - ':key' => { name => \&string, value => \&anything }, - }, - ); - - #--------------------------------------------------------------------------# - # Code - #--------------------------------------------------------------------------# - - #pod =method new - #pod - #pod my $cmv = CPAN::Meta::Validator->new( $struct ) - #pod - #pod The constructor must be passed a metadata structure. - #pod - #pod =cut - - sub new { - my ($class,$data) = @_; - - # create an attributes hash - my $self = { - 'data' => $data, - 'spec' => eval { $data->{'meta-spec'}{'version'} } || "1.0", - 'errors' => undef, - }; - - # create the object - return bless $self, $class; - } - - #pod =method is_valid - #pod - #pod if ( $cmv->is_valid ) { - #pod ... - #pod } - #pod - #pod Returns a boolean value indicating whether the metadata provided - #pod is valid. - #pod - #pod =cut - - sub is_valid { - my $self = shift; - my $data = $self->{data}; - my $spec_version = $self->{spec}; - $self->check_map($definitions{$spec_version},$data); - return ! $self->errors; - } - - #pod =method errors - #pod - #pod warn( join "\n", $cmv->errors ); - #pod - #pod Returns a list of errors seen during validation. - #pod - #pod =cut - - sub errors { - my $self = shift; - return () unless(defined $self->{errors}); - return @{$self->{errors}}; - } - - #pod =begin :internals - #pod - #pod =head2 Check Methods - #pod - #pod =over - #pod - #pod =item * - #pod - #pod check_map($spec,$data) - #pod - #pod Checks whether a map (or hash) part of the data structure conforms to the - #pod appropriate specification definition. - #pod - #pod =item * - #pod - #pod check_list($spec,$data) - #pod - #pod Checks whether a list (or array) part of the data structure conforms to - #pod the appropriate specification definition. - #pod - #pod =item * - #pod - #pod =back - #pod - #pod =cut - - my $spec_error = "Missing validation action in specification. " - . "Must be one of 'map', 'list', or 'value'"; - - sub check_map { - my ($self,$spec,$data) = @_; - - if(ref($spec) ne 'HASH') { - $self->_error( "Unknown META specification, cannot validate." ); - return; - } - - if(ref($data) ne 'HASH') { - $self->_error( "Expected a map structure from string or file." ); - return; - } - - for my $key (keys %$spec) { - next unless($spec->{$key}->{mandatory}); - next if(defined $data->{$key}); - push @{$self->{stack}}, $key; - $self->_error( "Missing mandatory field, '$key'" ); - pop @{$self->{stack}}; - } - - for my $key (keys %$data) { - push @{$self->{stack}}, $key; - if($spec->{$key}) { - if($spec->{$key}{value}) { - $spec->{$key}{value}->($self,$key,$data->{$key}); - } elsif($spec->{$key}{'map'}) { - $self->check_map($spec->{$key}{'map'},$data->{$key}); - } elsif($spec->{$key}{'list'}) { - $self->check_list($spec->{$key}{'list'},$data->{$key}); - } else { - $self->_error( "$spec_error for '$key'" ); - } - - } elsif ($spec->{':key'}) { - $spec->{':key'}{name}->($self,$key,$key); - if($spec->{':key'}{value}) { - $spec->{':key'}{value}->($self,$key,$data->{$key}); - } elsif($spec->{':key'}{'map'}) { - $self->check_map($spec->{':key'}{'map'},$data->{$key}); - } elsif($spec->{':key'}{'list'}) { - $self->check_list($spec->{':key'}{'list'},$data->{$key}); - } else { - $self->_error( "$spec_error for ':key'" ); - } - - - } else { - $self->_error( "Unknown key, '$key', found in map structure" ); - } - pop @{$self->{stack}}; - } - } - - sub check_list { - my ($self,$spec,$data) = @_; - - if(ref($data) ne 'ARRAY') { - $self->_error( "Expected a list structure" ); - return; - } - - if(defined $spec->{mandatory}) { - if(!defined $data->[0]) { - $self->_error( "Missing entries from mandatory list" ); - } - } - - for my $value (@$data) { - push @{$self->{stack}}, $value || ""; - if(defined $spec->{value}) { - $spec->{value}->($self,'list',$value); - } elsif(defined $spec->{'map'}) { - $self->check_map($spec->{'map'},$value); - } elsif(defined $spec->{'list'}) { - $self->check_list($spec->{'list'},$value); - } elsif ($spec->{':key'}) { - $self->check_map($spec,$value); - } else { - $self->_error( "$spec_error associated with '$self->{stack}[-2]'" ); - } - pop @{$self->{stack}}; - } - } - - #pod =head2 Validator Methods - #pod - #pod =over - #pod - #pod =item * - #pod - #pod header($self,$key,$value) - #pod - #pod Validates that the header is valid. - #pod - #pod Note: No longer used as we now read the data structure, not the file. - #pod - #pod =item * - #pod - #pod url($self,$key,$value) - #pod - #pod Validates that a given value is in an acceptable URL format - #pod - #pod =item * - #pod - #pod urlspec($self,$key,$value) - #pod - #pod Validates that the URL to a META specification is a known one. - #pod - #pod =item * - #pod - #pod string_or_undef($self,$key,$value) - #pod - #pod Validates that the value is either a string or an undef value. Bit of a - #pod catchall function for parts of the data structure that are completely user - #pod defined. - #pod - #pod =item * - #pod - #pod string($self,$key,$value) - #pod - #pod Validates that a string exists for the given key. - #pod - #pod =item * - #pod - #pod file($self,$key,$value) - #pod - #pod Validate that a file is passed for the given key. This may be made more - #pod thorough in the future. For now it acts like \&string. - #pod - #pod =item * - #pod - #pod exversion($self,$key,$value) - #pod - #pod Validates a list of versions, e.g. '<= 5, >=2, ==3, !=4, >1, <6, 0'. - #pod - #pod =item * - #pod - #pod version($self,$key,$value) - #pod - #pod Validates a single version string. Versions of the type '5.8.8' and '0.00_00' - #pod are both valid. A leading 'v' like 'v1.2.3' is also valid. - #pod - #pod =item * - #pod - #pod boolean($self,$key,$value) - #pod - #pod Validates for a boolean value. Currently these values are '1', '0', 'true', - #pod 'false', however the latter 2 may be removed. - #pod - #pod =item * - #pod - #pod license($self,$key,$value) - #pod - #pod Validates that a value is given for the license. Returns 1 if an known license - #pod type, or 2 if a value is given but the license type is not a recommended one. - #pod - #pod =item * - #pod - #pod custom_1($self,$key,$value) - #pod - #pod Validates that the given key is in CamelCase, to indicate a user defined - #pod keyword and only has characters in the class [-_a-zA-Z]. In version 1.X - #pod of the spec, this was only explicitly stated for 'resources'. - #pod - #pod =item * - #pod - #pod custom_2($self,$key,$value) - #pod - #pod Validates that the given key begins with 'x_' or 'X_', to indicate a user - #pod defined keyword and only has characters in the class [-_a-zA-Z] - #pod - #pod =item * - #pod - #pod identifier($self,$key,$value) - #pod - #pod Validates that key is in an acceptable format for the META specification, - #pod for an identifier, i.e. any that matches the regular expression - #pod qr/[a-z][a-z_]/i. - #pod - #pod =item * - #pod - #pod module($self,$key,$value) - #pod - #pod Validates that a given key is in an acceptable module name format, e.g. - #pod 'Test::CPAN::Meta::Version'. - #pod - #pod =back - #pod - #pod =end :internals - #pod - #pod =cut - - sub header { - my ($self,$key,$value) = @_; - if(defined $value) { - return 1 if($value && $value =~ /^--- #YAML:1.0/); - } - $self->_error( "file does not have a valid YAML header." ); - return 0; - } - - sub release_status { - my ($self,$key,$value) = @_; - if(defined $value) { - my $version = $self->{data}{version} || ''; - if ( $version =~ /_/ ) { - return 1 if ( $value =~ /\A(?:testing|unstable)\z/ ); - $self->_error( "'$value' for '$key' is invalid for version '$version'" ); - } - else { - return 1 if ( $value =~ /\A(?:stable|testing|unstable)\z/ ); - $self->_error( "'$value' for '$key' is invalid" ); - } - } - else { - $self->_error( "'$key' is not defined" ); - } - return 0; - } - - # _uri_split taken from URI::Split by Gisle Aas, Copyright 2003 - sub _uri_split { - return $_[0] =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,; - } - - sub url { - my ($self,$key,$value) = @_; - if(defined $value) { - my ($scheme, $auth, $path, $query, $frag) = _uri_split($value); - unless ( defined $scheme && length $scheme ) { - $self->_error( "'$value' for '$key' does not have a URL scheme" ); - return 0; - } - unless ( defined $auth && length $auth ) { - $self->_error( "'$value' for '$key' does not have a URL authority" ); - return 0; - } - return 1; - } - $value ||= ''; - $self->_error( "'$value' for '$key' is not a valid URL." ); - return 0; - } - - sub urlspec { - my ($self,$key,$value) = @_; - if(defined $value) { - return 1 if($value && $known_specs{$self->{spec}} eq $value); - if($value && $known_urls{$value}) { - $self->_error( 'META specification URL does not match version' ); - return 0; - } - } - $self->_error( 'Unknown META specification' ); - return 0; - } - - sub anything { return 1 } - - sub string { - my ($self,$key,$value) = @_; - if(defined $value) { - return 1 if($value || $value =~ /^0$/); - } - $self->_error( "value is an undefined string" ); - return 0; - } - - sub string_or_undef { - my ($self,$key,$value) = @_; - return 1 unless(defined $value); - return 1 if($value || $value =~ /^0$/); - $self->_error( "No string defined for '$key'" ); - return 0; - } - - sub file { - my ($self,$key,$value) = @_; - return 1 if(defined $value); - $self->_error( "No file defined for '$key'" ); - return 0; - } - - sub exversion { - my ($self,$key,$value) = @_; - if(defined $value && ($value || $value =~ /0/)) { - my $pass = 1; - for(split(",",$value)) { $self->version($key,$_) or ($pass = 0); } - return $pass; - } - $value = '' unless(defined $value); - $self->_error( "'$value' for '$key' is not a valid version." ); - return 0; - } - - sub version { - my ($self,$key,$value) = @_; - if(defined $value) { - return 0 unless($value || $value =~ /0/); - return 1 if($value =~ /^\s*((<|<=|>=|>|!=|==)\s*)?v?\d+((\.\d+((_|\.)\d+)?)?)/); - } else { - $value = ''; - } - $self->_error( "'$value' for '$key' is not a valid version." ); - return 0; - } - - sub boolean { - my ($self,$key,$value) = @_; - if(defined $value) { - return 1 if($value =~ /^(0|1|true|false)$/); - } else { - $value = ''; - } - $self->_error( "'$value' for '$key' is not a boolean value." ); - return 0; - } - - my %v1_licenses = ( - 'perl' => 'http://dev.perl.org/licenses/', - 'gpl' => 'http://www.opensource.org/licenses/gpl-license.php', - 'apache' => 'http://apache.org/licenses/LICENSE-2.0', - 'artistic' => 'http://opensource.org/licenses/artistic-license.php', - 'artistic_2' => 'http://opensource.org/licenses/artistic-license-2.0.php', - 'lgpl' => 'http://www.opensource.org/licenses/lgpl-license.php', - 'bsd' => 'http://www.opensource.org/licenses/bsd-license.php', - 'gpl' => 'http://www.opensource.org/licenses/gpl-license.php', - 'mit' => 'http://opensource.org/licenses/mit-license.php', - 'mozilla' => 'http://opensource.org/licenses/mozilla1.1.php', - 'open_source' => undef, - 'unrestricted' => undef, - 'restrictive' => undef, - 'unknown' => undef, - ); - - my %v2_licenses = map { $_ => 1 } qw( - agpl_3 - apache_1_1 - apache_2_0 - artistic_1 - artistic_2 - bsd - freebsd - gfdl_1_2 - gfdl_1_3 - gpl_1 - gpl_2 - gpl_3 - lgpl_2_1 - lgpl_3_0 - mit - mozilla_1_0 - mozilla_1_1 - openssl - perl_5 - qpl_1_0 - ssleay - sun - zlib - open_source - restricted - unrestricted - unknown - ); - - sub license { - my ($self,$key,$value) = @_; - my $licenses = $self->{spec} < 2 ? \%v1_licenses : \%v2_licenses; - if(defined $value) { - return 1 if($value && exists $licenses->{$value}); - } else { - $value = ''; - } - $self->_error( "License '$value' is invalid" ); - return 0; - } - - sub custom_1 { - my ($self,$key) = @_; - if(defined $key) { - # a valid user defined key should be alphabetic - # and contain at least one capital case letter. - return 1 if($key && $key =~ /^[_a-z]+$/i && $key =~ /[A-Z]/); - } else { - $key = ''; - } - $self->_error( "Custom resource '$key' must be in CamelCase." ); - return 0; - } - - sub custom_2 { - my ($self,$key) = @_; - if(defined $key) { - return 1 if($key && $key =~ /^x_/i); # user defined - } else { - $key = ''; - } - $self->_error( "Custom key '$key' must begin with 'x_' or 'X_'." ); - return 0; - } - - sub identifier { - my ($self,$key) = @_; - if(defined $key) { - return 1 if($key && $key =~ /^([a-z][_a-z]+)$/i); # spec 2.0 defined - } else { - $key = ''; - } - $self->_error( "Key '$key' is not a legal identifier." ); - return 0; - } - - sub module { - my ($self,$key) = @_; - if(defined $key) { - return 1 if($key && $key =~ /^[A-Za-z0-9_]+(::[A-Za-z0-9_]+)*$/); - } else { - $key = ''; - } - $self->_error( "Key '$key' is not a legal module name." ); - return 0; - } - - my @valid_phases = qw/ configure build test runtime develop /; - sub phase { - my ($self,$key) = @_; - if(defined $key) { - return 1 if( length $key && grep { $key eq $_ } @valid_phases ); - return 1 if $key =~ /x_/i; - } else { - $key = ''; - } - $self->_error( "Key '$key' is not a legal phase." ); - return 0; - } - - my @valid_relations = qw/ requires recommends suggests conflicts /; - sub relation { - my ($self,$key) = @_; - if(defined $key) { - return 1 if( length $key && grep { $key eq $_ } @valid_relations ); - return 1 if $key =~ /x_/i; - } else { - $key = ''; - } - $self->_error( "Key '$key' is not a legal prereq relationship." ); - return 0; - } - - sub _error { - my $self = shift; - my $mess = shift; - - $mess .= ' ('.join(' -> ',@{$self->{stack}}).')' if($self->{stack}); - $mess .= " [Validation: $self->{spec}]"; - - push @{$self->{errors}}, $mess; - } - - 1; - - # ABSTRACT: validate CPAN distribution metadata structures - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::Validator - validate CPAN distribution metadata structures - - =head1 VERSION - - version 2.150005 - - =head1 SYNOPSIS - - my $struct = decode_json_file('META.json'); - - my $cmv = CPAN::Meta::Validator->new( $struct ); - - unless ( $cmv->is_valid ) { - my $msg = "Invalid META structure. Errors found:\n"; - $msg .= join( "\n", $cmv->errors ); - die $msg; - } - - =head1 DESCRIPTION - - This module validates a CPAN Meta structure against the version of the - the specification claimed in the C field of the structure. - - =head1 METHODS - - =head2 new - - my $cmv = CPAN::Meta::Validator->new( $struct ) - - The constructor must be passed a metadata structure. - - =head2 is_valid - - if ( $cmv->is_valid ) { - ... - } - - Returns a boolean value indicating whether the metadata provided - is valid. - - =head2 errors - - warn( join "\n", $cmv->errors ); - - Returns a list of errors seen during validation. - - =begin :internals - - =head2 Check Methods - - =over - - =item * - - check_map($spec,$data) - - Checks whether a map (or hash) part of the data structure conforms to the - appropriate specification definition. - - =item * - - check_list($spec,$data) - - Checks whether a list (or array) part of the data structure conforms to - the appropriate specification definition. - - =item * - - =back - - =head2 Validator Methods - - =over - - =item * - - header($self,$key,$value) - - Validates that the header is valid. - - Note: No longer used as we now read the data structure, not the file. - - =item * - - url($self,$key,$value) - - Validates that a given value is in an acceptable URL format - - =item * - - urlspec($self,$key,$value) - - Validates that the URL to a META specification is a known one. - - =item * - - string_or_undef($self,$key,$value) - - Validates that the value is either a string or an undef value. Bit of a - catchall function for parts of the data structure that are completely user - defined. - - =item * - - string($self,$key,$value) - - Validates that a string exists for the given key. - - =item * - - file($self,$key,$value) - - Validate that a file is passed for the given key. This may be made more - thorough in the future. For now it acts like \&string. - - =item * - - exversion($self,$key,$value) - - Validates a list of versions, e.g. '<= 5, >=2, ==3, !=4, >1, <6, 0'. - - =item * - - version($self,$key,$value) - - Validates a single version string. Versions of the type '5.8.8' and '0.00_00' - are both valid. A leading 'v' like 'v1.2.3' is also valid. - - =item * - - boolean($self,$key,$value) - - Validates for a boolean value. Currently these values are '1', '0', 'true', - 'false', however the latter 2 may be removed. - - =item * - - license($self,$key,$value) - - Validates that a value is given for the license. Returns 1 if an known license - type, or 2 if a value is given but the license type is not a recommended one. - - =item * - - custom_1($self,$key,$value) - - Validates that the given key is in CamelCase, to indicate a user defined - keyword and only has characters in the class [-_a-zA-Z]. In version 1.X - of the spec, this was only explicitly stated for 'resources'. - - =item * - - custom_2($self,$key,$value) - - Validates that the given key begins with 'x_' or 'X_', to indicate a user - defined keyword and only has characters in the class [-_a-zA-Z] - - =item * - - identifier($self,$key,$value) - - Validates that key is in an acceptable format for the META specification, - for an identifier, i.e. any that matches the regular expression - qr/[a-z][a-z_]/i. - - =item * - - module($self,$key,$value) - - Validates that a given key is in an acceptable module name format, e.g. - 'Test::CPAN::Meta::Version'. - - =back - - =end :internals - - =for Pod::Coverage anything boolean check_list custom_1 custom_2 exversion file - identifier license module phase relation release_status string string_or_undef - url urlspec version header check_map - - =head1 BUGS - - Please report any bugs or feature using the CPAN Request Tracker. - Bugs can be submitted through the web interface at - L - - When submitting a bug or request, please include a test-file or a patch to an - existing test-file that illustrates the bug or desired feature. - - =head1 AUTHORS - - =over 4 - - =item * - - David Golden - - =item * - - Ricardo Signes - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by David Golden and Ricardo Signes. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # vim: ts=2 sts=2 sw=2 et : -CPAN_META_VALIDATOR - -$fatpacked{"CPAN/Meta/YAML.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'CPAN_META_YAML'; - use 5.008001; # sane UTF-8 support - use strict; - use warnings; - package CPAN::Meta::YAML; # git description: v1.66-5-ge09e1ae - # XXX-INGY is 5.8.1 too old/broken for utf8? - # XXX-XDG Lancaster consensus was that it was sufficient until - # proven otherwise - $CPAN::Meta::YAML::VERSION = '0.016'; - ; # original $VERSION removed by Doppelgaenger - - ##################################################################### - # The CPAN::Meta::YAML API. - # - # These are the currently documented API functions/methods and - # exports: - - use Exporter; - our @ISA = qw{ Exporter }; - our @EXPORT = qw{ Load Dump }; - our @EXPORT_OK = qw{ LoadFile DumpFile freeze thaw }; - - ### - # Functional/Export API: - - sub Dump { - return CPAN::Meta::YAML->new(@_)->_dump_string; - } - - # XXX-INGY Returning last document seems a bad behavior. - # XXX-XDG I think first would seem more natural, but I don't know - # that it's worth changing now - sub Load { - my $self = CPAN::Meta::YAML->_load_string(@_); - if ( wantarray ) { - return @$self; - } else { - # To match YAML.pm, return the last document - return $self->[-1]; - } - } - - # XXX-INGY Do we really need freeze and thaw? - # XXX-XDG I don't think so. I'd support deprecating them. - BEGIN { - *freeze = \&Dump; - *thaw = \&Load; - } - - sub DumpFile { - my $file = shift; - return CPAN::Meta::YAML->new(@_)->_dump_file($file); - } - - sub LoadFile { - my $file = shift; - my $self = CPAN::Meta::YAML->_load_file($file); - if ( wantarray ) { - return @$self; - } else { - # Return only the last document to match YAML.pm, - return $self->[-1]; - } - } - - - ### - # Object Oriented API: - - # Create an empty CPAN::Meta::YAML object - # XXX-INGY Why do we use ARRAY object? - # NOTE: I get it now, but I think it's confusing and not needed. - # Will change it on a branch later, for review. - # - # XXX-XDG I don't support changing it yet. It's a very well-documented - # "API" of CPAN::Meta::YAML. I'd support deprecating it, but Adam suggested - # we not change it until YAML.pm's own OO API is established so that - # users only have one API change to digest, not two - sub new { - my $class = shift; - bless [ @_ ], $class; - } - - # XXX-INGY It probably doesn't matter, and it's probably too late to - # change, but 'read/write' are the wrong names. Read and Write - # are actions that take data from storage to memory - # characters/strings. These take the data to/from storage to native - # Perl objects, which the terms dump and load are meant. As long as - # this is a legacy quirk to CPAN::Meta::YAML it's ok, but I'd prefer not - # to add new {read,write}_* methods to this API. - - sub read_string { - my $self = shift; - $self->_load_string(@_); - } - - sub write_string { - my $self = shift; - $self->_dump_string(@_); - } - - sub read { - my $self = shift; - $self->_load_file(@_); - } - - sub write { - my $self = shift; - $self->_dump_file(@_); - } - - - - - ##################################################################### - # Constants - - # Printed form of the unprintable characters in the lowest range - # of ASCII characters, listed by ASCII ordinal position. - my @UNPRINTABLE = qw( - 0 x01 x02 x03 x04 x05 x06 a - b t n v f r x0E x0F - x10 x11 x12 x13 x14 x15 x16 x17 - x18 x19 x1A e x1C x1D x1E x1F - ); - - # Printable characters for escapes - my %UNESCAPES = ( - 0 => "\x00", z => "\x00", N => "\x85", - a => "\x07", b => "\x08", t => "\x09", - n => "\x0a", v => "\x0b", f => "\x0c", - r => "\x0d", e => "\x1b", '\\' => '\\', - ); - - # XXX-INGY - # I(ngy) need to decide if these values should be quoted in - # CPAN::Meta::YAML or not. Probably yes. - - # These 3 values have special meaning when unquoted and using the - # default YAML schema. They need quotes if they are strings. - my %QUOTE = map { $_ => 1 } qw{ - null true false - }; - - # The commented out form is simpler, but overloaded the Perl regex - # engine due to recursion and backtracking problems on strings - # larger than 32,000ish characters. Keep it for reference purposes. - # qr/\"((?:\\.|[^\"])*)\"/ - my $re_capture_double_quoted = qr/\"([^\\"]*(?:\\.[^\\"]*)*)\"/; - my $re_capture_single_quoted = qr/\'([^\']*(?:\'\'[^\']*)*)\'/; - # unquoted re gets trailing space that needs to be stripped - my $re_capture_unquoted_key = qr/([^:]+(?::+\S(?:[^:]*|.*?(?=:)))*)(?=\s*\:(?:\s+|$))/; - my $re_trailing_comment = qr/(?:\s+\#.*)?/; - my $re_key_value_separator = qr/\s*:(?:\s+(?:\#.*)?|$)/; - - - - - - ##################################################################### - # CPAN::Meta::YAML Implementation. - # - # These are the private methods that do all the work. They may change - # at any time. - - - ### - # Loader functions: - - # Create an object from a file - sub _load_file { - my $class = ref $_[0] ? ref shift : shift; - - # Check the file - my $file = shift or $class->_error( 'You did not specify a file name' ); - $class->_error( "File '$file' does not exist" ) - unless -e $file; - $class->_error( "'$file' is a directory, not a file" ) - unless -f _; - $class->_error( "Insufficient permissions to read '$file'" ) - unless -r _; - - # Open unbuffered with strict UTF-8 decoding and no translation layers - open( my $fh, "<:unix:encoding(UTF-8)", $file ); - unless ( $fh ) { - $class->_error("Failed to open file '$file': $!"); - } - - # flock if available (or warn if not possible for OS-specific reasons) - if ( _can_flock() ) { - flock( $fh, Fcntl::LOCK_SH() ) - or warn "Couldn't lock '$file' for reading: $!"; - } - - # slurp the contents - my $contents = eval { - use warnings FATAL => 'utf8'; - local $/; - <$fh> - }; - if ( my $err = $@ ) { - $class->_error("Error reading from file '$file': $err"); - } - - # close the file (release the lock) - unless ( close $fh ) { - $class->_error("Failed to close file '$file': $!"); - } - - $class->_load_string( $contents ); - } - - # Create an object from a string - sub _load_string { - my $class = ref $_[0] ? ref shift : shift; - my $self = bless [], $class; - my $string = $_[0]; - eval { - unless ( defined $string ) { - die \"Did not provide a string to load"; - } - - # Check if Perl has it marked as characters, but it's internally - # inconsistent. E.g. maybe latin1 got read on a :utf8 layer - if ( utf8::is_utf8($string) && ! utf8::valid($string) ) { - die \<<'...'; - Read an invalid UTF-8 string (maybe mixed UTF-8 and 8-bit character set). - Did you decode with lax ":utf8" instead of strict ":encoding(UTF-8)"? - ... - } - - # Ensure Unicode character semantics, even for 0x80-0xff - utf8::upgrade($string); - - # Check for and strip any leading UTF-8 BOM - $string =~ s/^\x{FEFF}//; - - # Check for some special cases - return $self unless length $string; - - # Split the file into lines - my @lines = grep { ! /^\s*(?:\#.*)?\z/ } - split /(?:\015{1,2}\012|\015|\012)/, $string; - - # Strip the initial YAML header - @lines and $lines[0] =~ /^\%YAML[: ][\d\.]+.*\z/ and shift @lines; - - # A nibbling parser - my $in_document = 0; - while ( @lines ) { - # Do we have a document header? - if ( $lines[0] =~ /^---\s*(?:(.+)\s*)?\z/ ) { - # Handle scalar documents - shift @lines; - if ( defined $1 and $1 !~ /^(?:\#.+|\%YAML[: ][\d\.]+)\z/ ) { - push @$self, - $self->_load_scalar( "$1", [ undef ], \@lines ); - next; - } - $in_document = 1; - } - - if ( ! @lines or $lines[0] =~ /^(?:---|\.\.\.)/ ) { - # A naked document - push @$self, undef; - while ( @lines and $lines[0] !~ /^---/ ) { - shift @lines; - } - $in_document = 0; - - # XXX The final '-+$' is to look for -- which ends up being an - # error later. - } elsif ( ! $in_document && @$self ) { - # only the first document can be explicit - die \"CPAN::Meta::YAML failed to classify the line '$lines[0]'"; - } elsif ( $lines[0] =~ /^\s*\-(?:\s|$|-+$)/ ) { - # An array at the root - my $document = [ ]; - push @$self, $document; - $self->_load_array( $document, [ 0 ], \@lines ); - - } elsif ( $lines[0] =~ /^(\s*)\S/ ) { - # A hash at the root - my $document = { }; - push @$self, $document; - $self->_load_hash( $document, [ length($1) ], \@lines ); - - } else { - # Shouldn't get here. @lines have whitespace-only lines - # stripped, and previous match is a line with any - # non-whitespace. So this clause should only be reachable via - # a perlbug where \s is not symmetric with \S - - # uncoverable statement - die \"CPAN::Meta::YAML failed to classify the line '$lines[0]'"; - } - } - }; - my $err = $@; - if ( ref $err eq 'SCALAR' ) { - $self->_error(${$err}); - } elsif ( $err ) { - $self->_error($err); - } - - return $self; - } - - sub _unquote_single { - my ($self, $string) = @_; - return '' unless length $string; - $string =~ s/\'\'/\'/g; - return $string; - } - - sub _unquote_double { - my ($self, $string) = @_; - return '' unless length $string; - $string =~ s/\\"/"/g; - $string =~ - s{\\([Nnever\\fartz0b]|x([0-9a-fA-F]{2}))} - {(length($1)>1)?pack("H2",$2):$UNESCAPES{$1}}gex; - return $string; - } - - # Load a YAML scalar string to the actual Perl scalar - sub _load_scalar { - my ($self, $string, $indent, $lines) = @_; - - # Trim trailing whitespace - $string =~ s/\s*\z//; - - # Explitic null/undef - return undef if $string eq '~'; - - # Single quote - if ( $string =~ /^$re_capture_single_quoted$re_trailing_comment\z/ ) { - return $self->_unquote_single($1); - } - - # Double quote. - if ( $string =~ /^$re_capture_double_quoted$re_trailing_comment\z/ ) { - return $self->_unquote_double($1); - } - - # Special cases - if ( $string =~ /^[\'\"!&]/ ) { - die \"CPAN::Meta::YAML does not support a feature in line '$string'"; - } - return {} if $string =~ /^{}(?:\s+\#.*)?\z/; - return [] if $string =~ /^\[\](?:\s+\#.*)?\z/; - - # Regular unquoted string - if ( $string !~ /^[>|]/ ) { - die \"CPAN::Meta::YAML found illegal characters in plain scalar: '$string'" - if $string =~ /^(?:-(?:\s|$)|[\@\%\`])/ or - $string =~ /:(?:\s|$)/; - $string =~ s/\s+#.*\z//; - return $string; - } - - # Error - die \"CPAN::Meta::YAML failed to find multi-line scalar content" unless @$lines; - - # Check the indent depth - $lines->[0] =~ /^(\s*)/; - $indent->[-1] = length("$1"); - if ( defined $indent->[-2] and $indent->[-1] <= $indent->[-2] ) { - die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"; - } - - # Pull the lines - my @multiline = (); - while ( @$lines ) { - $lines->[0] =~ /^(\s*)/; - last unless length($1) >= $indent->[-1]; - push @multiline, substr(shift(@$lines), length($1)); - } - - my $j = (substr($string, 0, 1) eq '>') ? ' ' : "\n"; - my $t = (substr($string, 1, 1) eq '-') ? '' : "\n"; - return join( $j, @multiline ) . $t; - } - - # Load an array - sub _load_array { - my ($self, $array, $indent, $lines) = @_; - - while ( @$lines ) { - # Check for a new document - if ( $lines->[0] =~ /^(?:---|\.\.\.)/ ) { - while ( @$lines and $lines->[0] !~ /^---/ ) { - shift @$lines; - } - return 1; - } - - # Check the indent level - $lines->[0] =~ /^(\s*)/; - if ( length($1) < $indent->[-1] ) { - return 1; - } elsif ( length($1) > $indent->[-1] ) { - die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"; - } - - if ( $lines->[0] =~ /^(\s*\-\s+)[^\'\"]\S*\s*:(?:\s+|$)/ ) { - # Inline nested hash - my $indent2 = length("$1"); - $lines->[0] =~ s/-/ /; - push @$array, { }; - $self->_load_hash( $array->[-1], [ @$indent, $indent2 ], $lines ); - - } elsif ( $lines->[0] =~ /^\s*\-\s*\z/ ) { - shift @$lines; - unless ( @$lines ) { - push @$array, undef; - return 1; - } - if ( $lines->[0] =~ /^(\s*)\-/ ) { - my $indent2 = length("$1"); - if ( $indent->[-1] == $indent2 ) { - # Null array entry - push @$array, undef; - } else { - # Naked indenter - push @$array, [ ]; - $self->_load_array( - $array->[-1], [ @$indent, $indent2 ], $lines - ); - } - - } elsif ( $lines->[0] =~ /^(\s*)\S/ ) { - push @$array, { }; - $self->_load_hash( - $array->[-1], [ @$indent, length("$1") ], $lines - ); - - } else { - die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"; - } - - } elsif ( $lines->[0] =~ /^\s*\-(\s*)(.+?)\s*\z/ ) { - # Array entry with a value - shift @$lines; - push @$array, $self->_load_scalar( - "$2", [ @$indent, undef ], $lines - ); - - } elsif ( defined $indent->[-2] and $indent->[-1] == $indent->[-2] ) { - # This is probably a structure like the following... - # --- - # foo: - # - list - # bar: value - # - # ... so lets return and let the hash parser handle it - return 1; - - } else { - die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"; - } - } - - return 1; - } - - # Load a hash - sub _load_hash { - my ($self, $hash, $indent, $lines) = @_; - - while ( @$lines ) { - # Check for a new document - if ( $lines->[0] =~ /^(?:---|\.\.\.)/ ) { - while ( @$lines and $lines->[0] !~ /^---/ ) { - shift @$lines; - } - return 1; - } - - # Check the indent level - $lines->[0] =~ /^(\s*)/; - if ( length($1) < $indent->[-1] ) { - return 1; - } elsif ( length($1) > $indent->[-1] ) { - die \"CPAN::Meta::YAML found bad indenting in line '$lines->[0]'"; - } - - # Find the key - my $key; - - # Quoted keys - if ( $lines->[0] =~ - s/^\s*$re_capture_single_quoted$re_key_value_separator// - ) { - $key = $self->_unquote_single($1); - } - elsif ( $lines->[0] =~ - s/^\s*$re_capture_double_quoted$re_key_value_separator// - ) { - $key = $self->_unquote_double($1); - } - elsif ( $lines->[0] =~ - s/^\s*$re_capture_unquoted_key$re_key_value_separator// - ) { - $key = $1; - $key =~ s/\s+$//; - } - elsif ( $lines->[0] =~ /^\s*\?/ ) { - die \"CPAN::Meta::YAML does not support a feature in line '$lines->[0]'"; - } - else { - die \"CPAN::Meta::YAML failed to classify line '$lines->[0]'"; - } - - if ( exists $hash->{$key} ) { - warn "CPAN::Meta::YAML found a duplicate key '$key' in line '$lines->[0]'"; - } - - # Do we have a value? - if ( length $lines->[0] ) { - # Yes - $hash->{$key} = $self->_load_scalar( - shift(@$lines), [ @$indent, undef ], $lines - ); - } else { - # An indent - shift @$lines; - unless ( @$lines ) { - $hash->{$key} = undef; - return 1; - } - if ( $lines->[0] =~ /^(\s*)-/ ) { - $hash->{$key} = []; - $self->_load_array( - $hash->{$key}, [ @$indent, length($1) ], $lines - ); - } elsif ( $lines->[0] =~ /^(\s*)./ ) { - my $indent2 = length("$1"); - if ( $indent->[-1] >= $indent2 ) { - # Null hash entry - $hash->{$key} = undef; - } else { - $hash->{$key} = {}; - $self->_load_hash( - $hash->{$key}, [ @$indent, length($1) ], $lines - ); - } - } - } - } - - return 1; - } - - - ### - # Dumper functions: - - # Save an object to a file - sub _dump_file { - my $self = shift; - - require Fcntl; - - # Check the file - my $file = shift or $self->_error( 'You did not specify a file name' ); - - my $fh; - # flock if available (or warn if not possible for OS-specific reasons) - if ( _can_flock() ) { - # Open without truncation (truncate comes after lock) - my $flags = Fcntl::O_WRONLY()|Fcntl::O_CREAT(); - sysopen( $fh, $file, $flags ); - unless ( $fh ) { - $self->_error("Failed to open file '$file' for writing: $!"); - } - - # Use no translation and strict UTF-8 - binmode( $fh, ":raw:encoding(UTF-8)"); - - flock( $fh, Fcntl::LOCK_EX() ) - or warn "Couldn't lock '$file' for reading: $!"; - - # truncate and spew contents - truncate $fh, 0; - seek $fh, 0, 0; - } - else { - open $fh, ">:unix:encoding(UTF-8)", $file; - } - - # serialize and spew to the handle - print {$fh} $self->_dump_string; - - # close the file (release the lock) - unless ( close $fh ) { - $self->_error("Failed to close file '$file': $!"); - } - - return 1; - } - - # Save an object to a string - sub _dump_string { - my $self = shift; - return '' unless ref $self && @$self; - - # Iterate over the documents - my $indent = 0; - my @lines = (); - - eval { - foreach my $cursor ( @$self ) { - push @lines, '---'; - - # An empty document - if ( ! defined $cursor ) { - # Do nothing - - # A scalar document - } elsif ( ! ref $cursor ) { - $lines[-1] .= ' ' . $self->_dump_scalar( $cursor ); - - # A list at the root - } elsif ( ref $cursor eq 'ARRAY' ) { - unless ( @$cursor ) { - $lines[-1] .= ' []'; - next; - } - push @lines, $self->_dump_array( $cursor, $indent, {} ); - - # A hash at the root - } elsif ( ref $cursor eq 'HASH' ) { - unless ( %$cursor ) { - $lines[-1] .= ' {}'; - next; - } - push @lines, $self->_dump_hash( $cursor, $indent, {} ); - - } else { - die \("Cannot serialize " . ref($cursor)); - } - } - }; - if ( ref $@ eq 'SCALAR' ) { - $self->_error(${$@}); - } elsif ( $@ ) { - $self->_error($@); - } - - join '', map { "$_\n" } @lines; - } - - sub _has_internal_string_value { - my $value = shift; - my $b_obj = B::svref_2object(\$value); # for round trip problem - return $b_obj->FLAGS & B::SVf_POK(); - } - - sub _dump_scalar { - my $string = $_[1]; - my $is_key = $_[2]; - # Check this before checking length or it winds up looking like a string! - my $has_string_flag = _has_internal_string_value($string); - return '~' unless defined $string; - return "''" unless length $string; - if (Scalar::Util::looks_like_number($string)) { - # keys and values that have been used as strings get quoted - if ( $is_key || $has_string_flag ) { - return qq['$string']; - } - else { - return $string; - } - } - if ( $string =~ /[\x00-\x09\x0b-\x0d\x0e-\x1f\x7f-\x9f\'\n]/ ) { - $string =~ s/\\/\\\\/g; - $string =~ s/"/\\"/g; - $string =~ s/\n/\\n/g; - $string =~ s/[\x85]/\\N/g; - $string =~ s/([\x00-\x1f])/\\$UNPRINTABLE[ord($1)]/g; - $string =~ s/([\x7f-\x9f])/'\x' . sprintf("%X",ord($1))/ge; - return qq|"$string"|; - } - if ( $string =~ /(?:^[~!@#%&*|>?:,'"`{}\[\]]|^-+$|\s|:\z)/ or - $QUOTE{$string} - ) { - return "'$string'"; - } - return $string; - } - - sub _dump_array { - my ($self, $array, $indent, $seen) = @_; - if ( $seen->{refaddr($array)}++ ) { - die \"CPAN::Meta::YAML does not support circular references"; - } - my @lines = (); - foreach my $el ( @$array ) { - my $line = (' ' x $indent) . '-'; - my $type = ref $el; - if ( ! $type ) { - $line .= ' ' . $self->_dump_scalar( $el ); - push @lines, $line; - - } elsif ( $type eq 'ARRAY' ) { - if ( @$el ) { - push @lines, $line; - push @lines, $self->_dump_array( $el, $indent + 1, $seen ); - } else { - $line .= ' []'; - push @lines, $line; - } - - } elsif ( $type eq 'HASH' ) { - if ( keys %$el ) { - push @lines, $line; - push @lines, $self->_dump_hash( $el, $indent + 1, $seen ); - } else { - $line .= ' {}'; - push @lines, $line; - } - - } else { - die \"CPAN::Meta::YAML does not support $type references"; - } - } - - @lines; - } - - sub _dump_hash { - my ($self, $hash, $indent, $seen) = @_; - if ( $seen->{refaddr($hash)}++ ) { - die \"CPAN::Meta::YAML does not support circular references"; - } - my @lines = (); - foreach my $name ( sort keys %$hash ) { - my $el = $hash->{$name}; - my $line = (' ' x $indent) . $self->_dump_scalar($name, 1) . ":"; - my $type = ref $el; - if ( ! $type ) { - $line .= ' ' . $self->_dump_scalar( $el ); - push @lines, $line; - - } elsif ( $type eq 'ARRAY' ) { - if ( @$el ) { - push @lines, $line; - push @lines, $self->_dump_array( $el, $indent + 1, $seen ); - } else { - $line .= ' []'; - push @lines, $line; - } - - } elsif ( $type eq 'HASH' ) { - if ( keys %$el ) { - push @lines, $line; - push @lines, $self->_dump_hash( $el, $indent + 1, $seen ); - } else { - $line .= ' {}'; - push @lines, $line; - } - - } else { - die \"CPAN::Meta::YAML does not support $type references"; - } - } - - @lines; - } - - - - ##################################################################### - # DEPRECATED API methods: - - # Error storage (DEPRECATED as of 1.57) - our $errstr = ''; - - # Set error - sub _error { - require Carp; - $errstr = $_[1]; - $errstr =~ s/ at \S+ line \d+.*//; - Carp::croak( $errstr ); - } - - # Retrieve error - my $errstr_warned; - sub errstr { - require Carp; - Carp::carp( "CPAN::Meta::YAML->errstr and \$CPAN::Meta::YAML::errstr is deprecated" ) - unless $errstr_warned++; - $errstr; - } - - - - - ##################################################################### - # Helper functions. Possibly not needed. - - - # Use to detect nv or iv - use B; - - # XXX-INGY Is flock CPAN::Meta::YAML's responsibility? - # Some platforms can't flock :-( - # XXX-XDG I think it is. When reading and writing files, we ought - # to be locking whenever possible. People (foolishly) use YAML - # files for things like session storage, which has race issues. - my $HAS_FLOCK; - sub _can_flock { - if ( defined $HAS_FLOCK ) { - return $HAS_FLOCK; - } - else { - require Config; - my $c = \%Config::Config; - $HAS_FLOCK = grep { $c->{$_} } qw/d_flock d_fcntl_can_lock d_lockf/; - require Fcntl if $HAS_FLOCK; - return $HAS_FLOCK; - } - } - - - # XXX-INGY Is this core in 5.8.1? Can we remove this? - # XXX-XDG Scalar::Util 1.18 didn't land until 5.8.8, so we need this - ##################################################################### - # Use Scalar::Util if possible, otherwise emulate it - - use Scalar::Util (); - BEGIN { - local $@; - if ( eval { Scalar::Util->VERSION(1.18); } ) { - *refaddr = *Scalar::Util::refaddr; - } - else { - eval <<'END_PERL'; - # Scalar::Util failed to load or too old - sub refaddr { - my $pkg = ref($_[0]) or return undef; - if ( !! UNIVERSAL::can($_[0], 'can') ) { - bless $_[0], 'Scalar::Util::Fake'; - } else { - $pkg = undef; - } - "$_[0]" =~ /0x(\w+)/; - my $i = do { no warnings 'portable'; hex $1 }; - bless $_[0], $pkg if defined $pkg; - $i; - } - END_PERL - } - } - - delete $CPAN::Meta::YAML::{refaddr}; - - 1; - - # XXX-INGY Doc notes I'm putting up here. Changing the doc when it's wrong - # but leaving grey area stuff up here. - # - # I would like to change Read/Write to Load/Dump below without - # changing the actual API names. - # - # It might be better to put Load/Dump API in the SYNOPSIS instead of the - # dubious OO API. - # - # null and bool explanations may be outdated. - - =pod - - =encoding UTF-8 - - =head1 NAME - - CPAN::Meta::YAML - Read and write a subset of YAML for CPAN Meta files - - =head1 VERSION - - version 0.016 - - =head1 SYNOPSIS - - use CPAN::Meta::YAML; - - # reading a META file - open $fh, "<:utf8", "META.yml"; - $yaml_text = do { local $/; <$fh> }; - $yaml = CPAN::Meta::YAML->read_string($yaml_text) - or die CPAN::Meta::YAML->errstr; - - # finding the metadata - $meta = $yaml->[0]; - - # writing a META file - $yaml_text = $yaml->write_string - or die CPAN::Meta::YAML->errstr; - open $fh, ">:utf8", "META.yml"; - print $fh $yaml_text; - - =head1 DESCRIPTION - - This module implements a subset of the YAML specification for use in reading - and writing CPAN metadata files like F and F. It should - not be used for any other general YAML parsing or generation task. - - NOTE: F (and F) files should be UTF-8 encoded. Users are - responsible for proper encoding and decoding. In particular, the C and - C methods do B support UTF-8 and should not be used. - - =head1 SUPPORT - - This module is currently derived from L by Adam Kennedy. If - there are bugs in how it parses a particular META.yml file, please file - a bug report in the YAML::Tiny bugtracker: - L - - =head1 SEE ALSO - - L, L, L - - =head1 AUTHORS - - =over 4 - - =item * - - Adam Kennedy - - =item * - - David Golden - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2010 by Adam Kennedy. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut - - __END__ - - - # ABSTRACT: Read and write a subset of YAML for CPAN Meta files - - -CPAN_META_YAML - -$fatpacked{"Exporter.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXPORTER'; - package Exporter; - - require 5.006; - - # Be lean. - #use strict; - #no strict 'refs'; - - our $Debug = 0; - our $ExportLevel = 0; - our $Verbose ||= 0; - our $VERSION = '5.70'; - our (%Cache); - - sub as_heavy { - require Exporter::Heavy; - # Unfortunately, this does not work if the caller is aliased as *name = \&foo - # Thus the need to create a lot of identical subroutines - my $c = (caller(1))[3]; - $c =~ s/.*:://; - \&{"Exporter::Heavy::heavy_$c"}; - } - - sub export { - goto &{as_heavy()}; - } - - sub import { - my $pkg = shift; - my $callpkg = caller($ExportLevel); - - if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { - *{$callpkg."::import"} = \&import; - return; - } - - # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( - my $exports = \@{"$pkg\::EXPORT"}; - # But, avoid creating things if they don't exist, which saves a couple of - # hundred bytes per package processed. - my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; - return export $pkg, $callpkg, @_ - if $Verbose or $Debug or $fail && @$fail > 1; - my $export_cache = ($Cache{$pkg} ||= {}); - my $args = @_ or @_ = @$exports; - - if ($args and not %$export_cache) { - s/^&//, $export_cache->{$_} = 1 - foreach (@$exports, @{"$pkg\::EXPORT_OK"}); - } - my $heavy; - # Try very hard not to use {} and hence have to enter scope on the foreach - # We bomb out of the loop with last as soon as heavy is set. - if ($args or $fail) { - ($heavy = (/\W/ or $args and not exists $export_cache->{$_} - or $fail and @$fail and $_ eq $fail->[0])) and last - foreach (@_); - } else { - ($heavy = /\W/) and last - foreach (@_); - } - return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; - local $SIG{__WARN__} = - sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; - # shortcut for the common case of no type character - *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; - } - - # Default methods - - sub export_fail { - my $self = shift; - @_; - } - - # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as - # *name = \&foo. Thus the need to create a lot of identical subroutines - # Otherwise we could have aliased them to export(). - - sub export_to_level { - goto &{as_heavy()}; - } - - sub export_tags { - goto &{as_heavy()}; - } - - sub export_ok_tags { - goto &{as_heavy()}; - } - - sub require_version { - goto &{as_heavy()}; - } - - 1; - __END__ - - =head1 NAME - - Exporter - Implements default import method for modules - - =head1 SYNOPSIS - - In module F: - - package YourModule; - require Exporter; - @ISA = qw(Exporter); - @EXPORT_OK = qw(munge frobnicate); # symbols to export on request - - or - - package YourModule; - use Exporter 'import'; # gives you Exporter's import() method directly - @EXPORT_OK = qw(munge frobnicate); # symbols to export on request - - In other files which wish to use C: - - use YourModule qw(frobnicate); # import listed symbols - frobnicate ($left, $right) # calls YourModule::frobnicate - - Take a look at L for some variants - you will like to use in modern Perl code. - - =head1 DESCRIPTION - - The Exporter module implements an C method which allows a module - to export functions and variables to its users' namespaces. Many modules - use Exporter rather than implementing their own C method because - Exporter provides a highly flexible interface, with an implementation optimised - for the common case. - - Perl automatically calls the C method when processing a - C statement for a module. Modules and C are documented - in L and L. Understanding the concept of - modules and how the C statement operates is important to - understanding the Exporter. - - =head2 How to Export - - The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of - symbols that are going to be exported into the users name space by - default, or which they can request to be exported, respectively. The - symbols can represent functions, scalars, arrays, hashes, or typeglobs. - The symbols must be given by full name with the exception that the - ampersand in front of a function is optional, e.g. - - @EXPORT = qw(afunc $scalar @array); # afunc is a function - @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc - - If you are only exporting function names it is recommended to omit the - ampersand, as the implementation is faster this way. - - =head2 Selecting What to Export - - Do B export method names! - - Do B export anything else by default without a good reason! - - Exports pollute the namespace of the module user. If you must export - try to use C<@EXPORT_OK> in preference to C<@EXPORT> and avoid short or - common symbol names to reduce the risk of name clashes. - - Generally anything not exported is still accessible from outside the - module using the C (or C<< $blessed_ref->method >>) - syntax. By convention you can use a leading underscore on names to - informally indicate that they are 'internal' and not for public use. - - (It is actually possible to get private functions by saying: - - my $subref = sub { ... }; - $subref->(@args); # Call it as a function - $obj->$subref(@args); # Use it as a method - - However if you use them for methods it is up to you to figure out - how to make inheritance work.) - - As a general rule, if the module is trying to be object oriented - then export nothing. If it's just a collection of functions then - C<@EXPORT_OK> anything but use C<@EXPORT> with caution. For function and - method names use barewords in preference to names prefixed with - ampersands for the export lists. - - Other module design guidelines can be found in L. - - =head2 How to Import - - In other files which wish to use your module there are three basic ways for - them to load your module and import its symbols: - - =over 4 - - =item C - - This imports all the symbols from YourModule's C<@EXPORT> into the namespace - of the C statement. - - =item C - - This causes perl to load your module but does not import any symbols. - - =item C - - This imports only the symbols listed by the caller into their namespace. - All listed symbols must be in your C<@EXPORT> or C<@EXPORT_OK>, else an error - occurs. The advanced export features of Exporter are accessed like this, - but with list entries that are syntactically distinct from symbol names. - - =back - - Unless you want to use its advanced features, this is probably all you - need to know to use Exporter. - - =head1 Advanced Features - - =head2 Specialised Import Lists - - If any of the entries in an import list begins with !, : or / then - the list is treated as a series of specifications which either add to - or delete from the list of names to import. They are processed left to - right. Specifications are in the form: - - [!]name This name only - [!]:DEFAULT All names in @EXPORT - [!]:tag All names in $EXPORT_TAGS{tag} anonymous list - [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match - - A leading ! indicates that matching names should be deleted from the - list of names to import. If the first specification is a deletion it - is treated as though preceded by :DEFAULT. If you just want to import - extra names in addition to the default set you will still need to - include :DEFAULT explicitly. - - e.g., F defines: - - @EXPORT = qw(A1 A2 A3 A4 A5); - @EXPORT_OK = qw(B1 B2 B3 B4 B5); - %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]); - - Note that you cannot use tags in @EXPORT or @EXPORT_OK. - - Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK. - - An application using Module can say something like: - - use Module qw(:DEFAULT :T2 !B3 A3); - - Other examples include: - - use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET); - use POSIX qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/); - - Remember that most patterns (using //) will need to be anchored - with a leading ^, e.g., C rather than C. - - You can say C to see how the - specifications are being processed and what is actually being imported - into modules. - - =head2 Exporting Without Using Exporter's import Method - - Exporter has a special method, 'export_to_level' which is used in situations - where you can't directly call Exporter's - import method. The export_to_level - method looks like: - - MyPackage->export_to_level( - $where_to_export, $package, @what_to_export - ); - - where C<$where_to_export> is an integer telling how far up the calling stack - to export your symbols, and C<@what_to_export> is an array telling what - symbols *to* export (usually this is C<@_>). The C<$package> argument is - currently unused. - - For example, suppose that you have a module, A, which already has an - import function: - - package A; - - @ISA = qw(Exporter); - @EXPORT_OK = qw($b); - - sub import - { - $A::b = 1; # not a very useful import method - } - - and you want to Export symbol C<$A::b> back to the module that called - package A. Since Exporter relies on the import method to work, via - inheritance, as it stands Exporter::import() will never get called. - Instead, say the following: - - package A; - @ISA = qw(Exporter); - @EXPORT_OK = qw($b); - - sub import - { - $A::b = 1; - A->export_to_level(1, @_); - } - - This will export the symbols one level 'above' the current package - ie: to - the program or module that used package A. - - Note: Be careful not to modify C<@_> at all before you call export_to_level - - or people using your package will get very unexplained results! - - =head2 Exporting Without Inheriting from Exporter - - By including Exporter in your C<@ISA> you inherit an Exporter's import() method - but you also inherit several other helper methods which you probably don't - want. To avoid this you can do: - - package YourModule; - use Exporter qw(import); - - which will export Exporter's own import() method into YourModule. - Everything will work as before but you won't need to include Exporter in - C<@YourModule::ISA>. - - Note: This feature was introduced in version 5.57 - of Exporter, released with perl 5.8.3. - - =head2 Module Version Checking - - The Exporter module will convert an attempt to import a number from a - module into a call to C<< $module_name->VERSION($value) >>. This can - be used to validate that the version of the module being used is - greater than or equal to the required version. - - For historical reasons, Exporter supplies a C method that - simply delegates to C. Originally, before C - existed, Exporter would call C. - - Since the C method treats the C<$VERSION> number as - a simple numeric value it will regard version 1.10 as lower than - 1.9. For this reason it is strongly recommended that you use numbers - with at least two decimal places, e.g., 1.09. - - =head2 Managing Unknown Symbols - - In some situations you may want to prevent certain symbols from being - exported. Typically this applies to extensions which have functions - or constants that may not exist on some systems. - - The names of any symbols that cannot be exported should be listed - in the C<@EXPORT_FAIL> array. - - If a module attempts to import any of these symbols the Exporter - will give the module an opportunity to handle the situation before - generating an error. The Exporter will call an export_fail method - with a list of the failed symbols: - - @failed_symbols = $module_name->export_fail(@failed_symbols); - - If the C method returns an empty list then no error is - recorded and all the requested symbols are exported. If the returned - list is not empty then an error is generated for each symbol and the - export fails. The Exporter provides a default C method which - simply returns the list unchanged. - - Uses for the C method include giving better error messages - for some symbols and performing lazy architectural checks (put more - symbols into C<@EXPORT_FAIL> by default and then take them out if someone - actually tries to use them and an expensive check shows that they are - usable on that platform). - - =head2 Tag Handling Utility Functions - - Since the symbols listed within C<%EXPORT_TAGS> must also appear in either - C<@EXPORT> or C<@EXPORT_OK>, two utility functions are provided which allow - you to easily add tagged sets of symbols to C<@EXPORT> or C<@EXPORT_OK>: - - %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); - - Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT - Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK - - Any names which are not tags are added to C<@EXPORT> or C<@EXPORT_OK> - unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags - names being silently added to C<@EXPORT> or C<@EXPORT_OK>. Future versions - may make this a fatal error. - - =head2 Generating Combined Tags - - If several symbol categories exist in C<%EXPORT_TAGS>, it's usually - useful to create the utility ":all" to simplify "use" statements. - - The simplest way to do this is: - - %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); - - # add all the other ":class" tags to the ":all" class, - # deleting duplicates - { - my %seen; - - push @{$EXPORT_TAGS{all}}, - grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS; - } - - F creates an ":all" tag which contains some (but not really - all) of its categories. That could be done with one small - change: - - # add some of the other ":class" tags to the ":all" class, - # deleting duplicates - { - my %seen; - - push @{$EXPORT_TAGS{all}}, - grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} - foreach qw/html2 html3 netscape form cgi internal/; - } - - Note that the tag names in C<%EXPORT_TAGS> don't have the leading ':'. - - =head2 Ced Constants - - Many modules make use of Cing for constant subroutines to - avoid having to compile and waste memory on rarely used values (see - L for details on constant subroutines). Calls to such - constant subroutines are not optimized away at compile time because - they can't be checked at compile time for constancy. - - Even if a prototype is available at compile time, the body of the - subroutine is not (it hasn't been Ced yet). perl needs to - examine both the C<()> prototype and the body of a subroutine at - compile time to detect that it can safely replace calls to that - subroutine with the constant value. - - A workaround for this is to call the constants once in a C block: - - package My ; - - use Socket ; - - foo( SO_LINGER ); ## SO_LINGER NOT optimized away; called at runtime - BEGIN { SO_LINGER } - foo( SO_LINGER ); ## SO_LINGER optimized away at compile time. - - This forces the C for C to take place before - SO_LINGER is encountered later in C package. - - If you are writing a package that Cs, consider forcing - an C for any constants explicitly imported by other packages - or which are usually used when your package is Cd. - - =head1 Good Practices - - =head2 Declaring C<@EXPORT_OK> and Friends - - When using C with the standard C and C - pragmas, the C keyword is needed to declare the package - variables C<@EXPORT_OK>, C<@EXPORT>, C<@ISA>, etc. - - our @ISA = qw(Exporter); - our @EXPORT_OK = qw(munge frobnicate); - - If backward compatibility for Perls under 5.6 is important, - one must write instead a C statement. - - use vars qw(@ISA @EXPORT_OK); - @ISA = qw(Exporter); - @EXPORT_OK = qw(munge frobnicate); - - =head2 Playing Safe - - There are some caveats with the use of runtime statements - like C and the assignment to package - variables, which can be very subtle for the unaware programmer. - This may happen for instance with mutually recursive - modules, which are affected by the time the relevant - constructions are executed. - - The ideal (but a bit ugly) way to never have to think - about that is to use C blocks. So the first part - of the L code could be rewritten as: - - package YourModule; - - use strict; - use warnings; - - our (@ISA, @EXPORT_OK); - BEGIN { - require Exporter; - @ISA = qw(Exporter); - @EXPORT_OK = qw(munge frobnicate); # symbols to export on request - } - - The C will assure that the loading of F - and the assignments to C<@ISA> and C<@EXPORT_OK> happen - immediately, leaving no room for something to get awry - or just plain wrong. - - With respect to loading C and inheriting, there - are alternatives with the use of modules like C and C. - - use base qw(Exporter); - # or - use parent qw(Exporter); - - Any of these statements are nice replacements for - C - with the same compile-time effect. The basic difference - is that C code interacts with declared C - while C is a streamlined version of the older - C code to just establish the IS-A relationship. - - For more details, see the documentation and code of - L and L. - - Another thorough remedy to that runtime - vs. compile-time trap is to use L, - which is a wrapper of Exporter that allows all - boilerplate code at a single gulp in the - use statement. - - use Exporter::Easy ( - OK => [ qw(munge frobnicate) ], - ); - # @ISA setup is automatic - # all assignments happen at compile time - - =head2 What Not to Export - - You have been warned already in L - to not export: - - =over 4 - - =item * - - method names (because you don't need to - and that's likely to not do what you want), - - =item * - - anything by default (because you don't want to surprise your users... - badly) - - =item * - - anything you don't need to (because less is more) - - =back - - There's one more item to add to this list. Do B - export variable names. Just because C lets you - do that, it does not mean you should. - - @EXPORT_OK = qw($svar @avar %hvar); # DON'T! - - Exporting variables is not a good idea. They can - change under the hood, provoking horrible - effects at-a-distance that are too hard to track - and to fix. Trust me: they are not worth it. - - To provide the capability to set/get class-wide - settings, it is best instead to provide accessors - as subroutines or class methods instead. - - =head1 SEE ALSO - - C is definitely not the only module with - symbol exporter capabilities. At CPAN, you may find - a bunch of them. Some are lighter. Some - provide improved APIs and features. Pick the one - that fits your needs. The following is - a sample list of such modules. - - Exporter::Easy - Exporter::Lite - Exporter::Renaming - Exporter::Tidy - Sub::Exporter / Sub::Installer - Perl6::Export / Perl6::Export::Attrs - - =head1 LICENSE - - This library is free software. You can redistribute it - and/or modify it under the same terms as Perl itself. - - =cut - - - -EXPORTER - -$fatpacked{"Exporter/Heavy.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXPORTER_HEAVY'; - package Exporter::Heavy; - - use strict; - no strict 'refs'; - - # On one line so MakeMaker will see it. - require Exporter; our $VERSION = $Exporter::VERSION; - - =head1 NAME - - Exporter::Heavy - Exporter guts - - =head1 SYNOPSIS - - (internal use only) - - =head1 DESCRIPTION - - No user-serviceable parts inside. - - =cut - - # - # We go to a lot of trouble not to 'require Carp' at file scope, - # because Carp requires Exporter, and something has to give. - # - - sub _rebuild_cache { - my ($pkg, $exports, $cache) = @_; - s/^&// foreach @$exports; - @{$cache}{@$exports} = (1) x @$exports; - my $ok = \@{"${pkg}::EXPORT_OK"}; - if (@$ok) { - s/^&// foreach @$ok; - @{$cache}{@$ok} = (1) x @$ok; - } - } - - sub heavy_export { - - # Save the old __WARN__ handler in case it was defined - my $oldwarn = $SIG{__WARN__}; - - # First make import warnings look like they're coming from the "use". - local $SIG{__WARN__} = sub { - # restore it back so proper stacking occurs - local $SIG{__WARN__} = $oldwarn; - my $text = shift; - if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) { - require Carp; - local $Carp::CarpLevel = 1; # ignore package calling us too. - Carp::carp($text); - } - else { - warn $text; - } - }; - local $SIG{__DIE__} = sub { - require Carp; - local $Carp::CarpLevel = 1; # ignore package calling us too. - Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT") - if $_[0] =~ /^Unable to create sub named "(.*?)::"/; - }; - - my($pkg, $callpkg, @imports) = @_; - my($type, $sym, $cache_is_current, $oops); - my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, - $Exporter::Cache{$pkg} ||= {}); - - if (@imports) { - if (!%$export_cache) { - _rebuild_cache ($pkg, $exports, $export_cache); - $cache_is_current = 1; - } - - if (grep m{^[/!:]}, @imports) { - my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; - my $tagdata; - my %imports; - my($remove, $spec, @names, @allexports); - # negated first item implies starting with default set: - unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/; - foreach $spec (@imports){ - $remove = $spec =~ s/^!//; - - if ($spec =~ s/^://){ - if ($spec eq 'DEFAULT'){ - @names = @$exports; - } - elsif ($tagdata = $tagsref->{$spec}) { - @names = @$tagdata; - } - else { - warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS]; - ++$oops; - next; - } - } - elsif ($spec =~ m:^/(.*)/$:){ - my $patn = $1; - @allexports = keys %$export_cache unless @allexports; # only do keys once - @names = grep(/$patn/, @allexports); # not anchored by default - } - else { - @names = ($spec); # is a normal symbol name - } - - warn "Import ".($remove ? "del":"add").": @names " - if $Exporter::Verbose; - - if ($remove) { - foreach $sym (@names) { delete $imports{$sym} } - } - else { - @imports{@names} = (1) x @names; - } - } - @imports = keys %imports; - } - - my @carp; - foreach $sym (@imports) { - if (!$export_cache->{$sym}) { - if ($sym =~ m/^\d/) { - $pkg->VERSION($sym); # inherit from UNIVERSAL - # If the version number was the only thing specified - # then we should act as if nothing was specified: - if (@imports == 1) { - @imports = @$exports; - last; - } - # We need a way to emulate 'use Foo ()' but still - # allow an easy version check: "use Foo 1.23, ''"; - if (@imports == 2 and !$imports[1]) { - @imports = (); - last; - } - } elsif ($sym !~ s/^&// || !$export_cache->{$sym}) { - # Last chance - see if they've updated EXPORT_OK since we - # cached it. - - unless ($cache_is_current) { - %$export_cache = (); - _rebuild_cache ($pkg, $exports, $export_cache); - $cache_is_current = 1; - } - - if (!$export_cache->{$sym}) { - # accumulate the non-exports - push @carp, - qq["$sym" is not exported by the $pkg module\n]; - $oops++; - } - } - } - } - if ($oops) { - require Carp; - Carp::croak("@{carp}Can't continue after import errors"); - } - } - else { - @imports = @$exports; - } - - my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"}, - $Exporter::FailCache{$pkg} ||= {}); - - if (@$fail) { - if (!%$fail_cache) { - # Build cache of symbols. Optimise the lookup by adding - # barewords twice... both with and without a leading &. - # (Technique could be applied to $export_cache at cost of memory) - my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail; - warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose; - @{$fail_cache}{@expanded} = (1) x @expanded; - } - my @failed; - foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$sym} } - if (@failed) { - @failed = $pkg->export_fail(@failed); - foreach $sym (@failed) { - require Carp; - Carp::carp(qq["$sym" is not implemented by the $pkg module ], - "on this architecture"); - } - if (@failed) { - require Carp; - Carp::croak("Can't continue after import errors"); - } - } - } - - warn "Importing into $callpkg from $pkg: ", - join(", ",sort @imports) if $Exporter::Verbose; - - foreach $sym (@imports) { - # shortcut for the common case of no type character - (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) - unless $sym =~ s/^(\W)//; - $type = $1; - no warnings 'once'; - *{"${callpkg}::$sym"} = - $type eq '&' ? \&{"${pkg}::$sym"} : - $type eq '$' ? \${"${pkg}::$sym"} : - $type eq '@' ? \@{"${pkg}::$sym"} : - $type eq '%' ? \%{"${pkg}::$sym"} : - $type eq '*' ? *{"${pkg}::$sym"} : - do { require Carp; Carp::croak("Can't export symbol: $type$sym") }; - } - } - - sub heavy_export_to_level - { - my $pkg = shift; - my $level = shift; - (undef) = shift; # XXX redundant arg - my $callpkg = caller($level); - $pkg->export($callpkg, @_); - } - - # Utility functions - - sub _push_tags { - my($pkg, $var, $syms) = @_; - my @nontag = (); - my $export_tags = \%{"${pkg}::EXPORT_TAGS"}; - push(@{"${pkg}::$var"}, - map { $export_tags->{$_} ? @{$export_tags->{$_}} - : scalar(push(@nontag,$_),$_) } - (@$syms) ? @$syms : keys %$export_tags); - if (@nontag and $^W) { - # This may change to a die one day - require Carp; - Carp::carp(join(", ", @nontag)." are not tags of $pkg"); - } - } - - sub heavy_require_version { - my($self, $wanted) = @_; - my $pkg = ref $self || $self; - return ${pkg}->VERSION($wanted); - } - - sub heavy_export_tags { - _push_tags((caller)[0], "EXPORT", \@_); - } - - sub heavy_export_ok_tags { - _push_tags((caller)[0], "EXPORT_OK", \@_); - } - - 1; -EXPORTER_HEAVY - -$fatpacked{"File/pushd.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_PUSHD'; - use strict; - use warnings; - - package File::pushd; - # ABSTRACT: change directory temporarily for a limited scope - our $VERSION = '1.009'; # VERSION - - our @EXPORT = qw( pushd tempd ); - our @ISA = qw( Exporter ); - - use Exporter; - use Carp; - use Cwd qw( getcwd abs_path ); - use File::Path qw( rmtree ); - use File::Temp qw(); - use File::Spec; - - use overload - q{""} => sub { File::Spec->canonpath( $_[0]->{_pushd} ) }, - fallback => 1; - - #--------------------------------------------------------------------------# - # pushd() - #--------------------------------------------------------------------------# - - sub pushd { - my ( $target_dir, $options ) = @_; - $options->{untaint_pattern} ||= qr{^([-+@\w./]+)$}; - - $target_dir = "." unless defined $target_dir; - croak "Can't locate directory $target_dir" unless -d $target_dir; - - my $tainted_orig = getcwd; - my $orig; - if ( $tainted_orig =~ $options->{untaint_pattern} ) { - $orig = $1; - } - else { - $orig = $tainted_orig; - } - - my $tainted_dest; - eval { $tainted_dest = $target_dir ? abs_path($target_dir) : $orig }; - croak "Can't locate absolute path for $target_dir: $@" if $@; - - my $dest; - if ( $tainted_dest =~ $options->{untaint_pattern} ) { - $dest = $1; - } - else { - $dest = $tainted_dest; - } - - if ( $dest ne $orig ) { - chdir $dest or croak "Can't chdir to $dest\: $!"; - } - - my $self = bless { - _pushd => $dest, - _original => $orig - }, - __PACKAGE__; - - return $self; - } - - #--------------------------------------------------------------------------# - # tempd() - #--------------------------------------------------------------------------# - - sub tempd { - my ($options) = @_; - my $dir; - eval { $dir = pushd( File::Temp::tempdir( CLEANUP => 0 ), $options ) }; - croak $@ if $@; - $dir->{_tempd} = 1; - return $dir; - } - - #--------------------------------------------------------------------------# - # preserve() - #--------------------------------------------------------------------------# - - sub preserve { - my $self = shift; - return 1 if !$self->{"_tempd"}; - if ( @_ == 0 ) { - return $self->{_preserve} = 1; - } - else { - return $self->{_preserve} = $_[0] ? 1 : 0; - } - } - - #--------------------------------------------------------------------------# - # DESTROY() - # Revert to original directory as object is destroyed and cleanup - # if necessary - #--------------------------------------------------------------------------# - - sub DESTROY { - my ($self) = @_; - my $orig = $self->{_original}; - chdir $orig if $orig; # should always be so, but just in case... - if ( $self->{_tempd} - && !$self->{_preserve} ) - { - # don't destroy existing $@ if there is no error. - my $err = do { - local $@; - eval { rmtree( $self->{_pushd} ) }; - $@; - }; - carp $err if $err; - } - } - - 1; - - =pod - - =encoding UTF-8 - - =head1 NAME - - File::pushd - change directory temporarily for a limited scope - - =head1 VERSION - - version 1.009 - - =head1 SYNOPSIS - - use File::pushd; - - chdir $ENV{HOME}; - - # change directory again for a limited scope - { - my $dir = pushd( '/tmp' ); - # working directory changed to /tmp - } - # working directory has reverted to $ENV{HOME} - - # tempd() is equivalent to pushd( File::Temp::tempdir ) - { - my $dir = tempd(); - } - - # object stringifies naturally as an absolute path - { - my $dir = pushd( '/tmp' ); - my $filename = File::Spec->catfile( $dir, "somefile.txt" ); - # gives /tmp/somefile.txt - } - - =head1 DESCRIPTION - - File::pushd does a temporary C that is easily and automatically - reverted, similar to C in some Unix command shells. It works by - creating an object that caches the original working directory. When the object - is destroyed, the destructor calls C to revert to the original working - directory. By storing the object in a lexical variable with a limited scope, - this happens automatically at the end of the scope. - - This is very handy when working with temporary directories for tasks like - testing; a function is provided to streamline getting a temporary - directory from L. - - For convenience, the object stringifies as the canonical form of the absolute - pathname of the directory entered. - - B: if you create multiple C objects in the same lexical scope, - their destruction order is not guaranteed and you might not wind up in the - directory you expect. - - =head1 USAGE - - use File::pushd; - - Using File::pushd automatically imports the C and C functions. - - =head2 pushd - - { - my $dir = pushd( $target_directory ); - } - - Caches the current working directory, calls C to change to the target - directory, and returns a File::pushd object. When the object is - destroyed, the working directory reverts to the original directory. - - The provided target directory can be a relative or absolute path. If - called with no arguments, it uses the current directory as its target and - returns to the current directory when the object is destroyed. - - If the target directory does not exist or if the directory change fails - for some reason, C will die with an error message. - - Can be given a hashref as an optional second argument. The only supported - option is C, which is used to untaint file paths involved. - It defaults to {qr{^(L<-+@\w./>+)$}}, which is reasonably restrictive (e.g. - it does not even allow spaces in the path). Change this to suit your - circumstances and security needs if running under taint mode. *Note*: you - must include the parentheses in the pattern to capture the untainted - portion of the path. - - =head2 tempd - - { - my $dir = tempd(); - } - - This function is like C but automatically creates and calls C to - a temporary directory created by L. Unlike normal L - cleanup which happens at the end of the program, this temporary directory is - removed when the object is destroyed. (But also see C.) A warning - will be issued if the directory cannot be removed. - - As with C, C will die if C fails. - - It may be given a single options hash that will be passed internally - to C. - - =head2 preserve - - { - my $dir = tempd(); - $dir->preserve; # mark to preserve at end of scope - $dir->preserve(0); # mark to delete at end of scope - } - - Controls whether a temporary directory will be cleaned up when the object is - destroyed. With no arguments, C sets the directory to be preserved. - With an argument, the directory will be preserved if the argument is true, or - marked for cleanup if the argument is false. Only C objects may be - marked for cleanup. (Target directories to C are always preserved.) - C returns true if the directory will be preserved, and false - otherwise. - - =head1 SEE ALSO - - =over 4 - - =item * - - L - - =back - - =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - - =head1 SUPPORT - - =head2 Bugs / Feature Requests - - Please report any bugs or feature requests through the issue tracker - at L. - You will be notified automatically of any progress on your issue. - - =head2 Source Code - - This is open source software. The code repository is available for - public review and contribution under the terms of the license. - - L - - git clone https://github.com/dagolden/File-pushd.git - - =head1 AUTHOR - - David Golden - - =head1 CONTRIBUTORS - - =over 4 - - =item * - - Diab Jerius - - =item * - - Graham Ollis - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is Copyright (c) 2014 by David A Golden. - - This is free software, licensed under: - - The Apache License, Version 2.0, January 2004 - - =cut - - __END__ - - - # vim: ts=4 sts=4 sw=4 et: -FILE_PUSHD - -$fatpacked{"HTTP/Tiny.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'HTTP_TINY'; - # vim: ts=4 sts=4 sw=4 et: - package HTTP::Tiny; - use strict; - use warnings; - # ABSTRACT: A small, simple, correct HTTP/1.1 client - - our $VERSION = '0.056'; - - use Carp (); - - #pod =method new - #pod - #pod $http = HTTP::Tiny->new( %attributes ); - #pod - #pod This constructor returns a new HTTP::Tiny object. Valid attributes include: - #pod - #pod =for :list - #pod * C — - #pod A user-agent string (defaults to 'HTTP-Tiny/$VERSION'). If C — ends in a space character, the default user-agent string is appended. - #pod * C — - #pod An instance of L — or equivalent class that supports the C and C methods - #pod * C — - #pod A hashref of default headers to apply to requests - #pod * C — - #pod The local IP address to bind to - #pod * C — - #pod Whether to reuse the last connection (if for the same scheme, host and port) (defaults to 1) - #pod * C — - #pod Maximum number of redirects allowed (defaults to 5) - #pod * C — - #pod Maximum response size in bytes (only when not using a data callback). If defined, responses larger than this will return an exception. - #pod * C — - #pod URL of a proxy server to use for HTTP connections (default is C<$ENV{http_proxy}> — if set) - #pod * C — - #pod URL of a proxy server to use for HTTPS connections (default is C<$ENV{https_proxy}> — if set) - #pod * C — - #pod URL of a generic proxy server for both HTTP and HTTPS connections (default is C<$ENV{all_proxy}> — if set) - #pod * C — - #pod List of domain suffixes that should not be proxied. Must be a comma-separated string or an array reference. (default is C<$ENV{no_proxy}> —) - #pod * C — - #pod Request timeout in seconds (default is 60) - #pod * C — - #pod A boolean that indicates whether to validate the SSL certificate of an C — - #pod connection (default is false) - #pod * C — - #pod A hashref of C — options to pass through to L - #pod - #pod Passing an explicit C for C, C or C will - #pod prevent getting the corresponding proxies from the environment. - #pod - #pod Exceptions from C, C or other errors will result in a - #pod pseudo-HTTP status code of 599 and a reason of "Internal Exception". The - #pod content field in the response will contain the text of the exception. - #pod - #pod The C parameter enables a persistent connection, but only to a - #pod single destination scheme, host and port. Also, if any connection-relevant - #pod attributes are modified, or if the process ID or thread ID change, the - #pod persistent connection will be dropped. If you want persistent connections - #pod across multiple destinations, use multiple HTTP::Tiny objects. - #pod - #pod See L for more on the C and C attributes. - #pod - #pod =cut - - my @attributes; - BEGIN { - @attributes = qw( - cookie_jar default_headers http_proxy https_proxy keep_alive - local_address max_redirect max_size proxy no_proxy timeout - SSL_options verify_SSL - ); - my %persist_ok = map {; $_ => 1 } qw( - cookie_jar default_headers max_redirect max_size - ); - no strict 'refs'; - no warnings 'uninitialized'; - for my $accessor ( @attributes ) { - *{$accessor} = sub { - @_ > 1 - ? do { - delete $_[0]->{handle} if !$persist_ok{$accessor} && $_[1] ne $_[0]->{$accessor}; - $_[0]->{$accessor} = $_[1] - } - : $_[0]->{$accessor}; - }; - } - } - - sub agent { - my($self, $agent) = @_; - if( @_ > 1 ){ - $self->{agent} = - (defined $agent && $agent =~ / $/) ? $agent . $self->_agent : $agent; - } - return $self->{agent}; - } - - sub new { - my($class, %args) = @_; - - my $self = { - max_redirect => 5, - timeout => 60, - keep_alive => 1, - verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default - no_proxy => $ENV{no_proxy}, - }; - - bless $self, $class; - - $class->_validate_cookie_jar( $args{cookie_jar} ) if $args{cookie_jar}; - - for my $key ( @attributes ) { - $self->{$key} = $args{$key} if exists $args{$key} - } - - $self->agent( exists $args{agent} ? $args{agent} : $class->_agent ); - - $self->_set_proxies; - - return $self; - } - - sub _set_proxies { - my ($self) = @_; - - # get proxies from %ENV only if not provided; explicit undef will disable - # getting proxies from the environment - - # generic proxy - if (! exists $self->{proxy} ) { - $self->{proxy} = $ENV{all_proxy} || $ENV{ALL_PROXY}; - } - - if ( defined $self->{proxy} ) { - $self->_split_proxy( 'generic proxy' => $self->{proxy} ); # validate - } - else { - delete $self->{proxy}; - } - - # http proxy - if (! exists $self->{http_proxy} ) { - # under CGI, bypass HTTP_PROXY as request sets it from Proxy header - local $ENV{HTTP_PROXY} if $ENV{REQUEST_METHOD}; - $self->{http_proxy} = $ENV{http_proxy} || $ENV{HTTP_PROXY} || $self->{proxy}; - } - - if ( defined $self->{http_proxy} ) { - $self->_split_proxy( http_proxy => $self->{http_proxy} ); # validate - $self->{_has_proxy}{http} = 1; - } - else { - delete $self->{http_proxy}; - } - - # https proxy - if (! exists $self->{https_proxy} ) { - $self->{https_proxy} = $ENV{https_proxy} || $ENV{HTTPS_PROXY} || $self->{proxy}; - } - - if ( $self->{https_proxy} ) { - $self->_split_proxy( https_proxy => $self->{https_proxy} ); # validate - $self->{_has_proxy}{https} = 1; - } - else { - delete $self->{https_proxy}; - } - - # Split no_proxy to array reference if not provided as such - unless ( ref $self->{no_proxy} eq 'ARRAY' ) { - $self->{no_proxy} = - (defined $self->{no_proxy}) ? [ split /\s*,\s*/, $self->{no_proxy} ] : []; - } - - return; - } - - #pod =method get|head|put|post|delete - #pod - #pod $response = $http->get($url); - #pod $response = $http->get($url, \%options); - #pod $response = $http->head($url); - #pod - #pod These methods are shorthand for calling C for the given method. The - #pod URL must have unsafe characters escaped and international domain names encoded. - #pod See C for valid options and a description of the response. - #pod - #pod The C field of the response will be true if the status code is 2XX. - #pod - #pod =cut - - for my $sub_name ( qw/get head put post delete/ ) { - my $req_method = uc $sub_name; - no strict 'refs'; - eval <<"HERE"; ## no critic - sub $sub_name { - my (\$self, \$url, \$args) = \@_; - \@_ == 2 || (\@_ == 3 && ref \$args eq 'HASH') - or Carp::croak(q/Usage: \$http->$sub_name(URL, [HASHREF])/ . "\n"); - return \$self->request('$req_method', \$url, \$args || {}); - } - HERE - } - - #pod =method post_form - #pod - #pod $response = $http->post_form($url, $form_data); - #pod $response = $http->post_form($url, $form_data, \%options); - #pod - #pod This method executes a C request and sends the key/value pairs from a - #pod form data hash or array reference to the given URL with a C of - #pod C. If data is provided as an array - #pod reference, the order is preserved; if provided as a hash reference, the terms - #pod are sorted on key and value for consistency. See documentation for the - #pod C method for details on the encoding. - #pod - #pod The URL must have unsafe characters escaped and international domain names - #pod encoded. See C for valid options and a description of the response. - #pod Any C header or content in the options hashref will be ignored. - #pod - #pod The C field of the response will be true if the status code is 2XX. - #pod - #pod =cut - - sub post_form { - my ($self, $url, $data, $args) = @_; - (@_ == 3 || @_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ . "\n"); - - my $headers = {}; - while ( my ($key, $value) = each %{$args->{headers} || {}} ) { - $headers->{lc $key} = $value; - } - delete $args->{headers}; - - return $self->request('POST', $url, { - %$args, - content => $self->www_form_urlencode($data), - headers => { - %$headers, - 'content-type' => 'application/x-www-form-urlencoded' - }, - } - ); - } - - #pod =method mirror - #pod - #pod $response = $http->mirror($url, $file, \%options) - #pod if ( $response->{success} ) { - #pod print "$file is up to date\n"; - #pod } - #pod - #pod Executes a C request for the URL and saves the response body to the file - #pod name provided. The URL must have unsafe characters escaped and international - #pod domain names encoded. If the file already exists, the request will include an - #pod C header with the modification timestamp of the file. You - #pod may specify a different C header yourself in the C<< - #pod $options->{headers} >> hash. - #pod - #pod The C field of the response will be true if the status code is 2XX - #pod or if the status code is 304 (unmodified). - #pod - #pod If the file was modified and the server response includes a properly - #pod formatted C header, the file modification time will - #pod be updated accordingly. - #pod - #pod =cut - - sub mirror { - my ($self, $url, $file, $args) = @_; - @_ == 3 || (@_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ . "\n"); - if ( -e $file and my $mtime = (stat($file))[9] ) { - $args->{headers}{'if-modified-since'} ||= $self->_http_date($mtime); - } - my $tempfile = $file . int(rand(2**31)); - - require Fcntl; - sysopen my $fh, $tempfile, Fcntl::O_CREAT()|Fcntl::O_EXCL()|Fcntl::O_WRONLY() - or Carp::croak(qq/Error: Could not create temporary file $tempfile for downloading: $!\n/); - binmode $fh; - $args->{data_callback} = sub { print {$fh} $_[0] }; - my $response = $self->request('GET', $url, $args); - close $fh - or Carp::croak(qq/Error: Caught error closing temporary file $tempfile: $!\n/); - - if ( $response->{success} ) { - rename $tempfile, $file - or Carp::croak(qq/Error replacing $file with $tempfile: $!\n/); - my $lm = $response->{headers}{'last-modified'}; - if ( $lm and my $mtime = $self->_parse_http_date($lm) ) { - utime $mtime, $mtime, $file; - } - } - $response->{success} ||= $response->{status} eq '304'; - unlink $tempfile; - return $response; - } - - #pod =method request - #pod - #pod $response = $http->request($method, $url); - #pod $response = $http->request($method, $url, \%options); - #pod - #pod Executes an HTTP request of the given method type ('GET', 'HEAD', 'POST', - #pod 'PUT', etc.) on the given URL. The URL must have unsafe characters escaped and - #pod international domain names encoded. - #pod - #pod If the URL includes a "user:password" stanza, they will be used for Basic-style - #pod authorization headers. (Authorization headers will not be included in a - #pod redirected request.) For example: - #pod - #pod $http->request('GET', 'http://Aladdin:open sesame@example.com/'); - #pod - #pod If the "user:password" stanza contains reserved characters, they must - #pod be percent-escaped: - #pod - #pod $http->request('GET', 'http://john%40example.com:password@example.com/'); - #pod - #pod A hashref of options may be appended to modify the request. - #pod - #pod Valid options are: - #pod - #pod =for :list - #pod * C — - #pod A hashref containing headers to include with the request. If the value for - #pod a header is an array reference, the header will be output multiple times with - #pod each value in the array. These headers over-write any default headers. - #pod * C — - #pod A scalar to include as the body of the request OR a code reference - #pod that will be called iteratively to produce the body of the request - #pod * C — - #pod A code reference that will be called if it exists to provide a hashref - #pod of trailing headers (only used with chunked transfer-encoding) - #pod * C — - #pod A code reference that will be called for each chunks of the response - #pod body received. - #pod - #pod The C header is generated from the URL in accordance with RFC 2616. It - #pod is a fatal error to specify C in the C option. Other headers - #pod may be ignored or overwritten if necessary for transport compliance. - #pod - #pod If the C option is a code reference, it will be called iteratively - #pod to provide the content body of the request. It should return the empty - #pod string or undef when the iterator is exhausted. - #pod - #pod If the C option is the empty string, no C or - #pod C headers will be generated. - #pod - #pod If the C option is provided, it will be called iteratively until - #pod the entire response body is received. The first argument will be a string - #pod containing a chunk of the response body, the second argument will be the - #pod in-progress response hash reference, as described below. (This allows - #pod customizing the action of the callback based on the C or C - #pod received prior to the content body.) - #pod - #pod The C method returns a hashref containing the response. The hashref - #pod will have the following keys: - #pod - #pod =for :list - #pod * C — - #pod Boolean indicating whether the operation returned a 2XX status code - #pod * C — - #pod URL that provided the response. This is the URL of the request unless - #pod there were redirections, in which case it is the last URL queried - #pod in a redirection chain - #pod * C — - #pod The HTTP status code of the response - #pod * C — - #pod The response phrase returned by the server - #pod * C — - #pod The body of the response. If the response does not have any content - #pod or if a data callback is provided to consume the response body, - #pod this will be the empty string - #pod * C — - #pod A hashref of header fields. All header field names will be normalized - #pod to be lower case. If a header is repeated, the value will be an arrayref; - #pod it will otherwise be a scalar string containing the value - #pod - #pod On an exception during the execution of the request, the C field will - #pod contain 599, and the C field will contain the text of the exception. - #pod - #pod =cut - - my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE OPTIONS TRACE/; - - sub request { - my ($self, $method, $url, $args) = @_; - @_ == 3 || (@_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n"); - $args ||= {}; # we keep some state in this during _request - - # RFC 2616 Section 8.1.4 mandates a single retry on broken socket - my $response; - for ( 0 .. 1 ) { - $response = eval { $self->_request($method, $url, $args) }; - last unless $@ && $idempotent{$method} - && $@ =~ m{^(?:Socket closed|Unexpected end)}; - } - - if (my $e = $@) { - # maybe we got a response hash thrown from somewhere deep - if ( ref $e eq 'HASH' && exists $e->{status} ) { - return $e; - } - - # otherwise, stringify it - $e = "$e"; - $response = { - url => $url, - success => q{}, - status => 599, - reason => 'Internal Exception', - content => $e, - headers => { - 'content-type' => 'text/plain', - 'content-length' => length $e, - } - }; - } - return $response; - } - - #pod =method www_form_urlencode - #pod - #pod $params = $http->www_form_urlencode( $data ); - #pod $response = $http->get("http://example.com/query?$params"); - #pod - #pod This method converts the key/value pairs from a data hash or array reference - #pod into a C string. The keys and values from the data - #pod reference will be UTF-8 encoded and escaped per RFC 3986. If a value is an - #pod array reference, the key will be repeated with each of the values of the array - #pod reference. If data is provided as a hash reference, the key/value pairs in the - #pod resulting string will be sorted by key and value for consistent ordering. - #pod - #pod =cut - - sub www_form_urlencode { - my ($self, $data) = @_; - (@_ == 2 && ref $data) - or Carp::croak(q/Usage: $http->www_form_urlencode(DATAREF)/ . "\n"); - (ref $data eq 'HASH' || ref $data eq 'ARRAY') - or Carp::croak("form data must be a hash or array reference\n"); - - my @params = ref $data eq 'HASH' ? %$data : @$data; - @params % 2 == 0 - or Carp::croak("form data reference must have an even number of terms\n"); - - my @terms; - while( @params ) { - my ($key, $value) = splice(@params, 0, 2); - if ( ref $value eq 'ARRAY' ) { - unshift @params, map { $key => $_ } @$value; - } - else { - push @terms, join("=", map { $self->_uri_escape($_) } $key, $value); - } - } - - return join("&", (ref $data eq 'ARRAY') ? (@terms) : (sort @terms) ); - } - - #pod =method can_ssl - #pod - #pod $ok = HTTP::Tiny->can_ssl; - #pod ($ok, $why) = HTTP::Tiny->can_ssl; - #pod ($ok, $why) = $http->can_ssl; - #pod - #pod Indicates if SSL support is available. When called as a class object, it - #pod checks for the correct version of L and L. - #pod When called as an object methods, if C is true or if C - #pod is set in C, it checks that a CA file is available. - #pod - #pod In scalar context, returns a boolean indicating if SSL is available. - #pod In list context, returns the boolean and a (possibly multi-line) string of - #pod errors indicating why SSL isn't available. - #pod - #pod =cut - - sub can_ssl { - my ($self) = @_; - - my($ok, $reason) = (1, ''); - - # Need IO::Socket::SSL 1.42 for SSL_create_ctx_callback - unless (eval {require IO::Socket::SSL; IO::Socket::SSL->VERSION(1.42)}) { - $ok = 0; - $reason .= qq/IO::Socket::SSL 1.42 must be installed for https support\n/; - } - - # Need Net::SSLeay 1.49 for MODE_AUTO_RETRY - unless (eval {require Net::SSLeay; Net::SSLeay->VERSION(1.49)}) { - $ok = 0; - $reason .= qq/Net::SSLeay 1.49 must be installed for https support\n/; - } - - # If an object, check that SSL config lets us get a CA if necessary - if ( ref($self) && ( $self->{verify_SSL} || $self->{SSL_options}{SSL_verify_mode} ) ) { - my $handle = HTTP::Tiny::Handle->new( - SSL_options => $self->{SSL_options}, - verify_SSL => $self->{verify_SSL}, - ); - unless ( eval { $handle->_find_CA_file; 1 } ) { - $ok = 0; - $reason .= "$@"; - } - } - - wantarray ? ($ok, $reason) : $ok; - } - - #--------------------------------------------------------------------------# - # private methods - #--------------------------------------------------------------------------# - - my %DefaultPort = ( - http => 80, - https => 443, - ); - - sub _agent { - my $class = ref($_[0]) || $_[0]; - (my $default_agent = $class) =~ s{::}{-}g; - return $default_agent . "/" . $class->VERSION; - } - - sub _request { - my ($self, $method, $url, $args) = @_; - - my ($scheme, $host, $port, $path_query, $auth) = $self->_split_url($url); - - my $request = { - method => $method, - scheme => $scheme, - host => $host, - port => $port, - host_port => ($port == $DefaultPort{$scheme} ? $host : "$host:$port"), - uri => $path_query, - headers => {}, - }; - - # We remove the cached handle so it is not reused in the case of redirect. - # If all is well, it will be recached at the end of _request. We only - # reuse for the same scheme, host and port - my $handle = delete $self->{handle}; - if ( $handle ) { - unless ( $handle->can_reuse( $scheme, $host, $port ) ) { - $handle->close; - undef $handle; - } - } - $handle ||= $self->_open_handle( $request, $scheme, $host, $port ); - - $self->_prepare_headers_and_cb($request, $args, $url, $auth); - $handle->write_request($request); - - my $response; - do { $response = $handle->read_response_header } - until (substr($response->{status},0,1) ne '1'); - - $self->_update_cookie_jar( $url, $response ) if $self->{cookie_jar}; - - if ( my @redir_args = $self->_maybe_redirect($request, $response, $args) ) { - $handle->close; - return $self->_request(@redir_args, $args); - } - - my $known_message_length; - if ($method eq 'HEAD' || $response->{status} =~ /^[23]04/) { - # response has no message body - $known_message_length = 1; - } - else { - my $data_cb = $self->_prepare_data_cb($response, $args); - $known_message_length = $handle->read_body($data_cb, $response); - } - - if ( $self->{keep_alive} - && $known_message_length - && $response->{protocol} eq 'HTTP/1.1' - && ($response->{headers}{connection} || '') ne 'close' - ) { - $self->{handle} = $handle; - } - else { - $handle->close; - } - - $response->{success} = substr( $response->{status}, 0, 1 ) eq '2'; - $response->{url} = $url; - return $response; - } - - sub _open_handle { - my ($self, $request, $scheme, $host, $port) = @_; - - my $handle = HTTP::Tiny::Handle->new( - timeout => $self->{timeout}, - SSL_options => $self->{SSL_options}, - verify_SSL => $self->{verify_SSL}, - local_address => $self->{local_address}, - keep_alive => $self->{keep_alive} - ); - - if ($self->{_has_proxy}{$scheme} && ! grep { $host =~ /\Q$_\E$/ } @{$self->{no_proxy}}) { - return $self->_proxy_connect( $request, $handle ); - } - else { - return $handle->connect($scheme, $host, $port); - } - } - - sub _proxy_connect { - my ($self, $request, $handle) = @_; - - my @proxy_vars; - if ( $request->{scheme} eq 'https' ) { - Carp::croak(qq{No https_proxy defined}) unless $self->{https_proxy}; - @proxy_vars = $self->_split_proxy( https_proxy => $self->{https_proxy} ); - if ( $proxy_vars[0] eq 'https' ) { - Carp::croak(qq{Can't proxy https over https: $request->{uri} via $self->{https_proxy}}); - } - } - else { - Carp::croak(qq{No http_proxy defined}) unless $self->{http_proxy}; - @proxy_vars = $self->_split_proxy( http_proxy => $self->{http_proxy} ); - } - - my ($p_scheme, $p_host, $p_port, $p_auth) = @proxy_vars; - - if ( length $p_auth && ! defined $request->{headers}{'proxy-authorization'} ) { - $self->_add_basic_auth_header( $request, 'proxy-authorization' => $p_auth ); - } - - $handle->connect($p_scheme, $p_host, $p_port); - - if ($request->{scheme} eq 'https') { - $self->_create_proxy_tunnel( $request, $handle ); - } - else { - # non-tunneled proxy requires absolute URI - $request->{uri} = "$request->{scheme}://$request->{host_port}$request->{uri}"; - } - - return $handle; - } - - sub _split_proxy { - my ($self, $type, $proxy) = @_; - - my ($scheme, $host, $port, $path_query, $auth) = eval { $self->_split_url($proxy) }; - - unless( - defined($scheme) && length($scheme) && length($host) && length($port) - && $path_query eq '/' - ) { - Carp::croak(qq{$type URL must be in format http[s]://[auth@]:/\n}); - } - - return ($scheme, $host, $port, $auth); - } - - sub _create_proxy_tunnel { - my ($self, $request, $handle) = @_; - - $handle->_assert_ssl; - - my $agent = exists($request->{headers}{'user-agent'}) - ? $request->{headers}{'user-agent'} : $self->{agent}; - - my $connect_request = { - method => 'CONNECT', - uri => "$request->{host}:$request->{port}", - headers => { - host => "$request->{host}:$request->{port}", - 'user-agent' => $agent, - } - }; - - if ( $request->{headers}{'proxy-authorization'} ) { - $connect_request->{headers}{'proxy-authorization'} = - delete $request->{headers}{'proxy-authorization'}; - } - - $handle->write_request($connect_request); - my $response; - do { $response = $handle->read_response_header } - until (substr($response->{status},0,1) ne '1'); - - # if CONNECT failed, throw the response so it will be - # returned from the original request() method; - unless (substr($response->{status},0,1) eq '2') { - die $response; - } - - # tunnel established, so start SSL handshake - $handle->start_ssl( $request->{host} ); - - return; - } - - sub _prepare_headers_and_cb { - my ($self, $request, $args, $url, $auth) = @_; - - for ($self->{default_headers}, $args->{headers}) { - next unless defined; - while (my ($k, $v) = each %$_) { - $request->{headers}{lc $k} = $v; - } - } - - if (exists $request->{headers}{'host'}) { - die(qq/The 'Host' header must not be provided as header option\n/); - } - - $request->{headers}{'host'} = $request->{host_port}; - $request->{headers}{'user-agent'} ||= $self->{agent}; - $request->{headers}{'connection'} = "close" - unless $self->{keep_alive}; - - if ( defined $args->{content} ) { - if (ref $args->{content} eq 'CODE') { - $request->{headers}{'content-type'} ||= "application/octet-stream"; - $request->{headers}{'transfer-encoding'} = 'chunked' - unless $request->{headers}{'content-length'} - || $request->{headers}{'transfer-encoding'}; - $request->{cb} = $args->{content}; - } - elsif ( length $args->{content} ) { - my $content = $args->{content}; - if ( $] ge '5.008' ) { - utf8::downgrade($content, 1) - or die(qq/Wide character in request message body\n/); - } - $request->{headers}{'content-type'} ||= "application/octet-stream"; - $request->{headers}{'content-length'} = length $content - unless $request->{headers}{'content-length'} - || $request->{headers}{'transfer-encoding'}; - $request->{cb} = sub { substr $content, 0, length $content, '' }; - } - $request->{trailer_cb} = $args->{trailer_callback} - if ref $args->{trailer_callback} eq 'CODE'; - } - - ### If we have a cookie jar, then maybe add relevant cookies - if ( $self->{cookie_jar} ) { - my $cookies = $self->cookie_jar->cookie_header( $url ); - $request->{headers}{cookie} = $cookies if length $cookies; - } - - # if we have Basic auth parameters, add them - if ( length $auth && ! defined $request->{headers}{authorization} ) { - $self->_add_basic_auth_header( $request, 'authorization' => $auth ); - } - - return; - } - - sub _add_basic_auth_header { - my ($self, $request, $header, $auth) = @_; - require MIME::Base64; - $request->{headers}{$header} = - "Basic " . MIME::Base64::encode_base64($auth, ""); - return; - } - - sub _prepare_data_cb { - my ($self, $response, $args) = @_; - my $data_cb = $args->{data_callback}; - $response->{content} = ''; - - if (!$data_cb || $response->{status} !~ /^2/) { - if (defined $self->{max_size}) { - $data_cb = sub { - $_[1]->{content} .= $_[0]; - die(qq/Size of response body exceeds the maximum allowed of $self->{max_size}\n/) - if length $_[1]->{content} > $self->{max_size}; - }; - } - else { - $data_cb = sub { $_[1]->{content} .= $_[0] }; - } - } - return $data_cb; - } - - sub _update_cookie_jar { - my ($self, $url, $response) = @_; - - my $cookies = $response->{headers}->{'set-cookie'}; - return unless defined $cookies; - - my @cookies = ref $cookies ? @$cookies : $cookies; - - $self->cookie_jar->add( $url, $_ ) for @cookies; - - return; - } - - sub _validate_cookie_jar { - my ($class, $jar) = @_; - - # duck typing - for my $method ( qw/add cookie_header/ ) { - Carp::croak(qq/Cookie jar must provide the '$method' method\n/) - unless ref($jar) && ref($jar)->can($method); - } - - return; - } - - sub _maybe_redirect { - my ($self, $request, $response, $args) = @_; - my $headers = $response->{headers}; - my ($status, $method) = ($response->{status}, $request->{method}); - if (($status eq '303' or ($status =~ /^30[1278]/ && $method =~ /^GET|HEAD$/)) - and $headers->{location} - and ++$args->{redirects} <= $self->{max_redirect} - ) { - my $location = ($headers->{location} =~ /^\//) - ? "$request->{scheme}://$request->{host_port}$headers->{location}" - : $headers->{location} ; - return (($status eq '303' ? 'GET' : $method), $location); - } - return; - } - - sub _split_url { - my $url = pop; - - # URI regex adapted from the URI module - my ($scheme, $host, $path_query) = $url =~ m<\A([^:/?#]+)://([^/?#]*)([^#]*)> - or die(qq/Cannot parse URL: '$url'\n/); - - $scheme = lc $scheme; - $path_query = "/$path_query" unless $path_query =~ m<\A/>; - - my $auth = ''; - if ( (my $i = index $host, '@') != -1 ) { - # user:pass@host - $auth = substr $host, 0, $i, ''; # take up to the @ for auth - substr $host, 0, 1, ''; # knock the @ off the host - - # userinfo might be percent escaped, so recover real auth info - $auth =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; - } - my $port = $host =~ s/:(\d*)\z// && length $1 ? $1 - : $scheme eq 'http' ? 80 - : $scheme eq 'https' ? 443 - : undef; - - return ($scheme, (length $host ? lc $host : "localhost") , $port, $path_query, $auth); - } - - # Date conversions adapted from HTTP::Date - my $DoW = "Sun|Mon|Tue|Wed|Thu|Fri|Sat"; - my $MoY = "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec"; - sub _http_date { - my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime($_[1]); - return sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT", - substr($DoW,$wday*4,3), - $mday, substr($MoY,$mon*4,3), $year+1900, - $hour, $min, $sec - ); - } - - sub _parse_http_date { - my ($self, $str) = @_; - require Time::Local; - my @tl_parts; - if ($str =~ /^[SMTWF][a-z]+, +(\d{1,2}) ($MoY) +(\d\d\d\d) +(\d\d):(\d\d):(\d\d) +GMT$/) { - @tl_parts = ($6, $5, $4, $1, (index($MoY,$2)/4), $3); - } - elsif ($str =~ /^[SMTWF][a-z]+, +(\d\d)-($MoY)-(\d{2,4}) +(\d\d):(\d\d):(\d\d) +GMT$/ ) { - @tl_parts = ($6, $5, $4, $1, (index($MoY,$2)/4), $3); - } - elsif ($str =~ /^[SMTWF][a-z]+ +($MoY) +(\d{1,2}) +(\d\d):(\d\d):(\d\d) +(?:[^0-9]+ +)?(\d\d\d\d)$/ ) { - @tl_parts = ($5, $4, $3, $2, (index($MoY,$1)/4), $6); - } - return eval { - my $t = @tl_parts ? Time::Local::timegm(@tl_parts) : -1; - $t < 0 ? undef : $t; - }; - } - - # URI escaping adapted from URI::Escape - # c.f. http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1 - # perl 5.6 ready UTF-8 encoding adapted from JSON::PP - my %escapes = map { chr($_) => sprintf("%%%02X", $_) } 0..255; - $escapes{' '}="+"; - my $unsafe_char = qr/[^A-Za-z0-9\-\._~]/; - - sub _uri_escape { - my ($self, $str) = @_; - if ( $] ge '5.008' ) { - utf8::encode($str); - } - else { - $str = pack("U*", unpack("C*", $str)) # UTF-8 encode a byte string - if ( length $str == do { use bytes; length $str } ); - $str = pack("C*", unpack("C*", $str)); # clear UTF-8 flag - } - $str =~ s/($unsafe_char)/$escapes{$1}/ge; - return $str; - } - - package - HTTP::Tiny::Handle; # hide from PAUSE/indexers - use strict; - use warnings; - - use Errno qw[EINTR EPIPE]; - use IO::Socket qw[SOCK_STREAM]; - - # PERL_HTTP_TINY_IPV4_ONLY is a private environment variable to force old - # behavior if someone is unable to boostrap CPAN from a new perl install; it is - # not intended for general, per-client use and may be removed in the future - my $SOCKET_CLASS = - $ENV{PERL_HTTP_TINY_IPV4_ONLY} ? 'IO::Socket::INET' : - eval { require IO::Socket::IP; IO::Socket::IP->VERSION(0.25) } ? 'IO::Socket::IP' : - 'IO::Socket::INET'; - - sub BUFSIZE () { 32768 } ## no critic - - my $Printable = sub { - local $_ = shift; - s/\r/\\r/g; - s/\n/\\n/g; - s/\t/\\t/g; - s/([^\x20-\x7E])/sprintf('\\x%.2X', ord($1))/ge; - $_; - }; - - my $Token = qr/[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/; - - sub new { - my ($class, %args) = @_; - return bless { - rbuf => '', - timeout => 60, - max_line_size => 16384, - max_header_lines => 64, - verify_SSL => 0, - SSL_options => {}, - %args - }, $class; - } - - sub connect { - @_ == 4 || die(q/Usage: $handle->connect(scheme, host, port)/ . "\n"); - my ($self, $scheme, $host, $port) = @_; - - if ( $scheme eq 'https' ) { - $self->_assert_ssl; - } - elsif ( $scheme ne 'http' ) { - die(qq/Unsupported URL scheme '$scheme'\n/); - } - $self->{fh} = $SOCKET_CLASS->new( - PeerHost => $host, - PeerPort => $port, - $self->{local_address} ? - ( LocalAddr => $self->{local_address} ) : (), - Proto => 'tcp', - Type => SOCK_STREAM, - Timeout => $self->{timeout}, - KeepAlive => !!$self->{keep_alive} - ) or die(qq/Could not connect to '$host:$port': $@\n/); - - binmode($self->{fh}) - or die(qq/Could not binmode() socket: '$!'\n/); - - $self->start_ssl($host) if $scheme eq 'https'; - - $self->{scheme} = $scheme; - $self->{host} = $host; - $self->{port} = $port; - $self->{pid} = $$; - $self->{tid} = _get_tid(); - - return $self; - } - - sub start_ssl { - my ($self, $host) = @_; - - # As this might be used via CONNECT after an SSL session - # to a proxy, we shut down any existing SSL before attempting - # the handshake - if ( ref($self->{fh}) eq 'IO::Socket::SSL' ) { - unless ( $self->{fh}->stop_SSL ) { - my $ssl_err = IO::Socket::SSL->errstr; - die(qq/Error halting prior SSL connection: $ssl_err/); - } - } - - my $ssl_args = $self->_ssl_args($host); - IO::Socket::SSL->start_SSL( - $self->{fh}, - %$ssl_args, - SSL_create_ctx_callback => sub { - my $ctx = shift; - Net::SSLeay::CTX_set_mode($ctx, Net::SSLeay::MODE_AUTO_RETRY()); - }, - ); - - unless ( ref($self->{fh}) eq 'IO::Socket::SSL' ) { - my $ssl_err = IO::Socket::SSL->errstr; - die(qq/SSL connection failed for $host: $ssl_err\n/); - } - } - - sub close { - @_ == 1 || die(q/Usage: $handle->close()/ . "\n"); - my ($self) = @_; - CORE::close($self->{fh}) - or die(qq/Could not close socket: '$!'\n/); - } - - sub write { - @_ == 2 || die(q/Usage: $handle->write(buf)/ . "\n"); - my ($self, $buf) = @_; - - if ( $] ge '5.008' ) { - utf8::downgrade($buf, 1) - or die(qq/Wide character in write()\n/); - } - - my $len = length $buf; - my $off = 0; - - local $SIG{PIPE} = 'IGNORE'; - - while () { - $self->can_write - or die(qq/Timed out while waiting for socket to become ready for writing\n/); - my $r = syswrite($self->{fh}, $buf, $len, $off); - if (defined $r) { - $len -= $r; - $off += $r; - last unless $len > 0; - } - elsif ($! == EPIPE) { - die(qq/Socket closed by remote server: $!\n/); - } - elsif ($! != EINTR) { - if ($self->{fh}->can('errstr')){ - my $err = $self->{fh}->errstr(); - die (qq/Could not write to SSL socket: '$err'\n /); - } - else { - die(qq/Could not write to socket: '$!'\n/); - } - - } - } - return $off; - } - - sub read { - @_ == 2 || @_ == 3 || die(q/Usage: $handle->read(len [, allow_partial])/ . "\n"); - my ($self, $len, $allow_partial) = @_; - - my $buf = ''; - my $got = length $self->{rbuf}; - - if ($got) { - my $take = ($got < $len) ? $got : $len; - $buf = substr($self->{rbuf}, 0, $take, ''); - $len -= $take; - } - - while ($len > 0) { - $self->can_read - or die(q/Timed out while waiting for socket to become ready for reading/ . "\n"); - my $r = sysread($self->{fh}, $buf, $len, length $buf); - if (defined $r) { - last unless $r; - $len -= $r; - } - elsif ($! != EINTR) { - if ($self->{fh}->can('errstr')){ - my $err = $self->{fh}->errstr(); - die (qq/Could not read from SSL socket: '$err'\n /); - } - else { - die(qq/Could not read from socket: '$!'\n/); - } - } - } - if ($len && !$allow_partial) { - die(qq/Unexpected end of stream\n/); - } - return $buf; - } - - sub readline { - @_ == 1 || die(q/Usage: $handle->readline()/ . "\n"); - my ($self) = @_; - - while () { - if ($self->{rbuf} =~ s/\A ([^\x0D\x0A]* \x0D?\x0A)//x) { - return $1; - } - if (length $self->{rbuf} >= $self->{max_line_size}) { - die(qq/Line size exceeds the maximum allowed size of $self->{max_line_size}\n/); - } - $self->can_read - or die(qq/Timed out while waiting for socket to become ready for reading\n/); - my $r = sysread($self->{fh}, $self->{rbuf}, BUFSIZE, length $self->{rbuf}); - if (defined $r) { - last unless $r; - } - elsif ($! != EINTR) { - if ($self->{fh}->can('errstr')){ - my $err = $self->{fh}->errstr(); - die (qq/Could not read from SSL socket: '$err'\n /); - } - else { - die(qq/Could not read from socket: '$!'\n/); - } - } - } - die(qq/Unexpected end of stream while looking for line\n/); - } - - sub read_header_lines { - @_ == 1 || @_ == 2 || die(q/Usage: $handle->read_header_lines([headers])/ . "\n"); - my ($self, $headers) = @_; - $headers ||= {}; - my $lines = 0; - my $val; - - while () { - my $line = $self->readline; - - if (++$lines >= $self->{max_header_lines}) { - die(qq/Header lines exceeds maximum number allowed of $self->{max_header_lines}\n/); - } - elsif ($line =~ /\A ([^\x00-\x1F\x7F:]+) : [\x09\x20]* ([^\x0D\x0A]*)/x) { - my ($field_name) = lc $1; - if (exists $headers->{$field_name}) { - for ($headers->{$field_name}) { - $_ = [$_] unless ref $_ eq "ARRAY"; - push @$_, $2; - $val = \$_->[-1]; - } - } - else { - $val = \($headers->{$field_name} = $2); - } - } - elsif ($line =~ /\A [\x09\x20]+ ([^\x0D\x0A]*)/x) { - $val - or die(qq/Unexpected header continuation line\n/); - next unless length $1; - $$val .= ' ' if length $$val; - $$val .= $1; - } - elsif ($line =~ /\A \x0D?\x0A \z/x) { - last; - } - else { - die(q/Malformed header line: / . $Printable->($line) . "\n"); - } - } - return $headers; - } - - sub write_request { - @_ == 2 || die(q/Usage: $handle->write_request(request)/ . "\n"); - my($self, $request) = @_; - $self->write_request_header(@{$request}{qw/method uri headers/}); - $self->write_body($request) if $request->{cb}; - return; - } - - my %HeaderCase = ( - 'content-md5' => 'Content-MD5', - 'etag' => 'ETag', - 'te' => 'TE', - 'www-authenticate' => 'WWW-Authenticate', - 'x-xss-protection' => 'X-XSS-Protection', - ); - - # to avoid multiple small writes and hence nagle, you can pass the method line or anything else to - # combine writes. - sub write_header_lines { - (@_ == 2 || @_ == 3 && ref $_[1] eq 'HASH') || die(q/Usage: $handle->write_header_lines(headers[,prefix])/ . "\n"); - my($self, $headers, $prefix_data) = @_; - - my $buf = (defined $prefix_data ? $prefix_data : ''); - while (my ($k, $v) = each %$headers) { - my $field_name = lc $k; - if (exists $HeaderCase{$field_name}) { - $field_name = $HeaderCase{$field_name}; - } - else { - $field_name =~ /\A $Token+ \z/xo - or die(q/Invalid HTTP header field name: / . $Printable->($field_name) . "\n"); - $field_name =~ s/\b(\w)/\u$1/g; - $HeaderCase{lc $field_name} = $field_name; - } - for (ref $v eq 'ARRAY' ? @$v : $v) { - $_ = '' unless defined $_; - $buf .= "$field_name: $_\x0D\x0A"; - } - } - $buf .= "\x0D\x0A"; - return $self->write($buf); - } - - # return value indicates whether message length was defined; this is generally - # true unless there was no content-length header and we just read until EOF. - # Other message length errors are thrown as exceptions - sub read_body { - @_ == 3 || die(q/Usage: $handle->read_body(callback, response)/ . "\n"); - my ($self, $cb, $response) = @_; - my $te = $response->{headers}{'transfer-encoding'} || ''; - my $chunked = grep { /chunked/i } ( ref $te eq 'ARRAY' ? @$te : $te ) ; - return $chunked - ? $self->read_chunked_body($cb, $response) - : $self->read_content_body($cb, $response); - } - - sub write_body { - @_ == 2 || die(q/Usage: $handle->write_body(request)/ . "\n"); - my ($self, $request) = @_; - if ($request->{headers}{'content-length'}) { - return $self->write_content_body($request); - } - else { - return $self->write_chunked_body($request); - } - } - - sub read_content_body { - @_ == 3 || @_ == 4 || die(q/Usage: $handle->read_content_body(callback, response, [read_length])/ . "\n"); - my ($self, $cb, $response, $content_length) = @_; - $content_length ||= $response->{headers}{'content-length'}; - - if ( defined $content_length ) { - my $len = $content_length; - while ($len > 0) { - my $read = ($len > BUFSIZE) ? BUFSIZE : $len; - $cb->($self->read($read, 0), $response); - $len -= $read; - } - return length($self->{rbuf}) == 0; - } - - my $chunk; - $cb->($chunk, $response) while length( $chunk = $self->read(BUFSIZE, 1) ); - - return; - } - - sub write_content_body { - @_ == 2 || die(q/Usage: $handle->write_content_body(request)/ . "\n"); - my ($self, $request) = @_; - - my ($len, $content_length) = (0, $request->{headers}{'content-length'}); - while () { - my $data = $request->{cb}->(); - - defined $data && length $data - or last; - - if ( $] ge '5.008' ) { - utf8::downgrade($data, 1) - or die(qq/Wide character in write_content()\n/); - } - - $len += $self->write($data); - } - - $len == $content_length - or die(qq/Content-Length mismatch (got: $len expected: $content_length)\n/); - - return $len; - } - - sub read_chunked_body { - @_ == 3 || die(q/Usage: $handle->read_chunked_body(callback, $response)/ . "\n"); - my ($self, $cb, $response) = @_; - - while () { - my $head = $self->readline; - - $head =~ /\A ([A-Fa-f0-9]+)/x - or die(q/Malformed chunk head: / . $Printable->($head) . "\n"); - - my $len = hex($1) - or last; - - $self->read_content_body($cb, $response, $len); - - $self->read(2) eq "\x0D\x0A" - or die(qq/Malformed chunk: missing CRLF after chunk data\n/); - } - $self->read_header_lines($response->{headers}); - return 1; - } - - sub write_chunked_body { - @_ == 2 || die(q/Usage: $handle->write_chunked_body(request)/ . "\n"); - my ($self, $request) = @_; - - my $len = 0; - while () { - my $data = $request->{cb}->(); - - defined $data && length $data - or last; - - if ( $] ge '5.008' ) { - utf8::downgrade($data, 1) - or die(qq/Wide character in write_chunked_body()\n/); - } - - $len += length $data; - - my $chunk = sprintf '%X', length $data; - $chunk .= "\x0D\x0A"; - $chunk .= $data; - $chunk .= "\x0D\x0A"; - - $self->write($chunk); - } - $self->write("0\x0D\x0A"); - $self->write_header_lines($request->{trailer_cb}->()) - if ref $request->{trailer_cb} eq 'CODE'; - return $len; - } - - sub read_response_header { - @_ == 1 || die(q/Usage: $handle->read_response_header()/ . "\n"); - my ($self) = @_; - - my $line = $self->readline; - - $line =~ /\A (HTTP\/(0*\d+\.0*\d+)) [\x09\x20]+ ([0-9]{3}) [\x09\x20]+ ([^\x0D\x0A]*) \x0D?\x0A/x - or die(q/Malformed Status-Line: / . $Printable->($line). "\n"); - - my ($protocol, $version, $status, $reason) = ($1, $2, $3, $4); - - die (qq/Unsupported HTTP protocol: $protocol\n/) - unless $version =~ /0*1\.0*[01]/; - - return { - status => $status, - reason => $reason, - headers => $self->read_header_lines, - protocol => $protocol, - }; - } - - sub write_request_header { - @_ == 4 || die(q/Usage: $handle->write_request_header(method, request_uri, headers)/ . "\n"); - my ($self, $method, $request_uri, $headers) = @_; - - return $self->write_header_lines($headers, "$method $request_uri HTTP/1.1\x0D\x0A"); - } - - sub _do_timeout { - my ($self, $type, $timeout) = @_; - $timeout = $self->{timeout} - unless defined $timeout && $timeout >= 0; - - my $fd = fileno $self->{fh}; - defined $fd && $fd >= 0 - or die(qq/select(2): 'Bad file descriptor'\n/); - - my $initial = time; - my $pending = $timeout; - my $nfound; - - vec(my $fdset = '', $fd, 1) = 1; - - while () { - $nfound = ($type eq 'read') - ? select($fdset, undef, undef, $pending) - : select(undef, $fdset, undef, $pending) ; - if ($nfound == -1) { - $! == EINTR - or die(qq/select(2): '$!'\n/); - redo if !$timeout || ($pending = $timeout - (time - $initial)) > 0; - $nfound = 0; - } - last; - } - $! = 0; - return $nfound; - } - - sub can_read { - @_ == 1 || @_ == 2 || die(q/Usage: $handle->can_read([timeout])/ . "\n"); - my $self = shift; - if ( ref($self->{fh}) eq 'IO::Socket::SSL' ) { - return 1 if $self->{fh}->pending; - } - return $self->_do_timeout('read', @_) - } - - sub can_write { - @_ == 1 || @_ == 2 || die(q/Usage: $handle->can_write([timeout])/ . "\n"); - my $self = shift; - return $self->_do_timeout('write', @_) - } - - sub _assert_ssl { - my($ok, $reason) = HTTP::Tiny->can_ssl(); - die $reason unless $ok; - } - - sub can_reuse { - my ($self,$scheme,$host,$port) = @_; - return 0 if - $self->{pid} != $$ - || $self->{tid} != _get_tid() - || length($self->{rbuf}) - || $scheme ne $self->{scheme} - || $host ne $self->{host} - || $port ne $self->{port} - || eval { $self->can_read(0) } - || $@ ; - return 1; - } - - # Try to find a CA bundle to validate the SSL cert, - # prefer Mozilla::CA or fallback to a system file - sub _find_CA_file { - my $self = shift(); - - if ( $self->{SSL_options}->{SSL_ca_file} ) { - unless ( -r $self->{SSL_options}->{SSL_ca_file} ) { - die qq/SSL_ca_file '$self->{SSL_options}->{SSL_ca_file}' not found or not readable\n/; - } - return $self->{SSL_options}->{SSL_ca_file}; - } - - return Mozilla::CA::SSL_ca_file() - if eval { require Mozilla::CA; 1 }; - - # cert list copied from golang src/crypto/x509/root_unix.go - foreach my $ca_bundle ( - "/etc/ssl/certs/ca-certificates.crt", # Debian/Ubuntu/Gentoo etc. - "/etc/pki/tls/certs/ca-bundle.crt", # Fedora/RHEL - "/etc/ssl/ca-bundle.pem", # OpenSUSE - "/etc/openssl/certs/ca-certificates.crt", # NetBSD - "/etc/ssl/cert.pem", # OpenBSD - "/usr/local/share/certs/ca-root-nss.crt", # FreeBSD/DragonFly - "/etc/pki/tls/cacert.pem", # OpenELEC - "/etc/certs/ca-certificates.crt", # Solaris 11.2+ - ) { - return $ca_bundle if -e $ca_bundle; - } - - die qq/Couldn't find a CA bundle with which to verify the SSL certificate.\n/ - . qq/Try installing Mozilla::CA from CPAN\n/; - } - - # for thread safety, we need to know thread id if threads are loaded - sub _get_tid { - no warnings 'reserved'; # for 'threads' - return threads->can("tid") ? threads->tid : 0; - } - - sub _ssl_args { - my ($self, $host) = @_; - - my %ssl_args; - - # This test reimplements IO::Socket::SSL::can_client_sni(), which wasn't - # added until IO::Socket::SSL 1.84 - if ( Net::SSLeay::OPENSSL_VERSION_NUMBER() >= 0x01000000 ) { - $ssl_args{SSL_hostname} = $host, # Sane SNI support - } - - if ($self->{verify_SSL}) { - $ssl_args{SSL_verifycn_scheme} = 'http'; # enable CN validation - $ssl_args{SSL_verifycn_name} = $host; # set validation hostname - $ssl_args{SSL_verify_mode} = 0x01; # enable cert validation - $ssl_args{SSL_ca_file} = $self->_find_CA_file; - } - else { - $ssl_args{SSL_verifycn_scheme} = 'none'; # disable CN validation - $ssl_args{SSL_verify_mode} = 0x00; # disable cert validation - } - - # user options override settings from verify_SSL - for my $k ( keys %{$self->{SSL_options}} ) { - $ssl_args{$k} = $self->{SSL_options}{$k} if $k =~ m/^SSL_/; - } - - return \%ssl_args; - } - - 1; - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - HTTP::Tiny - A small, simple, correct HTTP/1.1 client - - =head1 VERSION - - version 0.056 - - =head1 SYNOPSIS - - use HTTP::Tiny; - - my $response = HTTP::Tiny->new->get('http://example.com/'); - - die "Failed!\n" unless $response->{success}; - - print "$response->{status} $response->{reason}\n"; - - while (my ($k, $v) = each %{$response->{headers}}) { - for (ref $v eq 'ARRAY' ? @$v : $v) { - print "$k: $_\n"; - } - } - - print $response->{content} if length $response->{content}; - - =head1 DESCRIPTION - - This is a very simple HTTP/1.1 client, designed for doing simple - requests without the overhead of a large framework like L. - - It is more correct and more complete than L. It supports - proxies and redirection. It also correctly resumes after EINTR. - - If L 0.25 or later is installed, HTTP::Tiny will use it instead - of L for transparent support for both IPv4 and IPv6. - - Cookie support requires L or an equivalent class. - - =head1 METHODS - - =head2 new - - $http = HTTP::Tiny->new( %attributes ); - - This constructor returns a new HTTP::Tiny object. Valid attributes include: - - =over 4 - - =item * - - C — A user-agent string (defaults to 'HTTP-Tiny/$VERSION'). If C — ends in a space character, the default user-agent string is appended. - - =item * - - C — An instance of L — or equivalent class that supports the C and C methods - - =item * - - C — A hashref of default headers to apply to requests - - =item * - - C — The local IP address to bind to - - =item * - - C — Whether to reuse the last connection (if for the same scheme, host and port) (defaults to 1) - - =item * - - C — Maximum number of redirects allowed (defaults to 5) - - =item * - - C — Maximum response size in bytes (only when not using a data callback). If defined, responses larger than this will return an exception. - - =item * - - C — URL of a proxy server to use for HTTP connections (default is C<$ENV{http_proxy}> — if set) - - =item * - - C — URL of a proxy server to use for HTTPS connections (default is C<$ENV{https_proxy}> — if set) - - =item * - - C — URL of a generic proxy server for both HTTP and HTTPS connections (default is C<$ENV{all_proxy}> — if set) - - =item * - - C — List of domain suffixes that should not be proxied. Must be a comma-separated string or an array reference. (default is C<$ENV{no_proxy}> —) - - =item * - - C — Request timeout in seconds (default is 60) - - =item * - - C — A boolean that indicates whether to validate the SSL certificate of an C — connection (default is false) - - =item * - - C — A hashref of C — options to pass through to L - - =back - - Passing an explicit C for C, C or C will - prevent getting the corresponding proxies from the environment. - - Exceptions from C, C or other errors will result in a - pseudo-HTTP status code of 599 and a reason of "Internal Exception". The - content field in the response will contain the text of the exception. - - The C parameter enables a persistent connection, but only to a - single destination scheme, host and port. Also, if any connection-relevant - attributes are modified, or if the process ID or thread ID change, the - persistent connection will be dropped. If you want persistent connections - across multiple destinations, use multiple HTTP::Tiny objects. - - See L for more on the C and C attributes. - - =head2 get|head|put|post|delete - - $response = $http->get($url); - $response = $http->get($url, \%options); - $response = $http->head($url); - - These methods are shorthand for calling C for the given method. The - URL must have unsafe characters escaped and international domain names encoded. - See C for valid options and a description of the response. - - The C field of the response will be true if the status code is 2XX. - - =head2 post_form - - $response = $http->post_form($url, $form_data); - $response = $http->post_form($url, $form_data, \%options); - - This method executes a C request and sends the key/value pairs from a - form data hash or array reference to the given URL with a C of - C. If data is provided as an array - reference, the order is preserved; if provided as a hash reference, the terms - are sorted on key and value for consistency. See documentation for the - C method for details on the encoding. - - The URL must have unsafe characters escaped and international domain names - encoded. See C for valid options and a description of the response. - Any C header or content in the options hashref will be ignored. - - The C field of the response will be true if the status code is 2XX. - - =head2 mirror - - $response = $http->mirror($url, $file, \%options) - if ( $response->{success} ) { - print "$file is up to date\n"; - } - - Executes a C request for the URL and saves the response body to the file - name provided. The URL must have unsafe characters escaped and international - domain names encoded. If the file already exists, the request will include an - C header with the modification timestamp of the file. You - may specify a different C header yourself in the C<< - $options->{headers} >> hash. - - The C field of the response will be true if the status code is 2XX - or if the status code is 304 (unmodified). - - If the file was modified and the server response includes a properly - formatted C header, the file modification time will - be updated accordingly. - - =head2 request - - $response = $http->request($method, $url); - $response = $http->request($method, $url, \%options); - - Executes an HTTP request of the given method type ('GET', 'HEAD', 'POST', - 'PUT', etc.) on the given URL. The URL must have unsafe characters escaped and - international domain names encoded. - - If the URL includes a "user:password" stanza, they will be used for Basic-style - authorization headers. (Authorization headers will not be included in a - redirected request.) For example: - - $http->request('GET', 'http://Aladdin:open sesame@example.com/'); - - If the "user:password" stanza contains reserved characters, they must - be percent-escaped: - - $http->request('GET', 'http://john%40example.com:password@example.com/'); - - A hashref of options may be appended to modify the request. - - Valid options are: - - =over 4 - - =item * - - C — A hashref containing headers to include with the request. If the value for a header is an array reference, the header will be output multiple times with each value in the array. These headers over-write any default headers. - - =item * - - C — A scalar to include as the body of the request OR a code reference that will be called iteratively to produce the body of the request - - =item * - - C — A code reference that will be called if it exists to provide a hashref of trailing headers (only used with chunked transfer-encoding) - - =item * - - C — A code reference that will be called for each chunks of the response body received. - - =back - - The C header is generated from the URL in accordance with RFC 2616. It - is a fatal error to specify C in the C option. Other headers - may be ignored or overwritten if necessary for transport compliance. - - If the C option is a code reference, it will be called iteratively - to provide the content body of the request. It should return the empty - string or undef when the iterator is exhausted. - - If the C option is the empty string, no C or - C headers will be generated. - - If the C option is provided, it will be called iteratively until - the entire response body is received. The first argument will be a string - containing a chunk of the response body, the second argument will be the - in-progress response hash reference, as described below. (This allows - customizing the action of the callback based on the C or C - received prior to the content body.) - - The C method returns a hashref containing the response. The hashref - will have the following keys: - - =over 4 - - =item * - - C — Boolean indicating whether the operation returned a 2XX status code - - =item * - - C — URL that provided the response. This is the URL of the request unless there were redirections, in which case it is the last URL queried in a redirection chain - - =item * - - C — The HTTP status code of the response - - =item * - - C — The response phrase returned by the server - - =item * - - C — The body of the response. If the response does not have any content or if a data callback is provided to consume the response body, this will be the empty string - - =item * - - C — A hashref of header fields. All header field names will be normalized to be lower case. If a header is repeated, the value will be an arrayref; it will otherwise be a scalar string containing the value - - =back - - On an exception during the execution of the request, the C field will - contain 599, and the C field will contain the text of the exception. - - =head2 www_form_urlencode - - $params = $http->www_form_urlencode( $data ); - $response = $http->get("http://example.com/query?$params"); - - This method converts the key/value pairs from a data hash or array reference - into a C string. The keys and values from the data - reference will be UTF-8 encoded and escaped per RFC 3986. If a value is an - array reference, the key will be repeated with each of the values of the array - reference. If data is provided as a hash reference, the key/value pairs in the - resulting string will be sorted by key and value for consistent ordering. - - =head2 can_ssl - - $ok = HTTP::Tiny->can_ssl; - ($ok, $why) = HTTP::Tiny->can_ssl; - ($ok, $why) = $http->can_ssl; - - Indicates if SSL support is available. When called as a class object, it - checks for the correct version of L and L. - When called as an object methods, if C is true or if C - is set in C, it checks that a CA file is available. - - In scalar context, returns a boolean indicating if SSL is available. - In list context, returns the boolean and a (possibly multi-line) string of - errors indicating why SSL isn't available. - - =for Pod::Coverage SSL_options - agent - cookie_jar - default_headers - http_proxy - https_proxy - keep_alive - local_address - max_redirect - max_size - no_proxy - proxy - timeout - verify_SSL - - =head1 SSL SUPPORT - - Direct C connections are supported only if L 1.56 or - greater and L 1.49 or greater are installed. An exception will be - thrown if new enough versions of these modules are not installed or if the SSL - encryption fails. You can also use C utility function - that returns boolean to see if the required modules are installed. - - An C connection may be made via an C proxy that supports the CONNECT - command (i.e. RFC 2817). You may not proxy C via a proxy that itself - requires C to communicate. - - SSL provides two distinct capabilities: - - =over 4 - - =item * - - Encrypted communication channel - - =item * - - Verification of server identity - - =back - - B. - - Server identity verification is controversial and potentially tricky because it - depends on a (usually paid) third-party Certificate Authority (CA) trust model - to validate a certificate as legitimate. This discriminates against servers - with self-signed certificates or certificates signed by free, community-driven - CA's such as L. - - By default, HTTP::Tiny does not make any assumptions about your trust model, - threat level or risk tolerance. It just aims to give you an encrypted channel - when you need one. - - Setting the C attribute to a true value will make HTTP::Tiny verify - that an SSL connection has a valid SSL certificate corresponding to the host - name of the connection and that the SSL certificate has been verified by a CA. - Assuming you trust the CA, this will protect against a L. If you are - concerned about security, you should enable this option. - - Certificate verification requires a file containing trusted CA certificates. - If the L module is installed, HTTP::Tiny will use the CA file - included with it as a source of trusted CA's. (This means you trust Mozilla, - the author of Mozilla::CA, the CPAN mirror where you got Mozilla::CA, the - toolchain used to install it, and your operating system security, right?) - - If that module is not available, then HTTP::Tiny will search several - system-specific default locations for a CA certificate file: - - =over 4 - - =item * - - /etc/ssl/certs/ca-certificates.crt - - =item * - - /etc/pki/tls/certs/ca-bundle.crt - - =item * - - /etc/ssl/ca-bundle.pem - - =back - - An exception will be raised if C is true and no CA certificate file - is available. - - If you desire complete control over SSL connections, the C attribute - lets you provide a hash reference that will be passed through to - C, overriding any options set by HTTP::Tiny. For - example, to provide your own trusted CA file: - - SSL_options => { - SSL_ca_file => $file_path, - } - - The C attribute could also be used for such things as providing a - client certificate for authentication to a server or controlling the choice of - cipher used for the SSL connection. See L documentation for - details. - - =head1 PROXY SUPPORT - - HTTP::Tiny can proxy both C and C requests. Only Basic proxy - authorization is supported and it must be provided as part of the proxy URL: - C. - - HTTP::Tiny supports the following proxy environment variables: - - =over 4 - - =item * - - http_proxy or HTTP_PROXY - - =item * - - https_proxy or HTTPS_PROXY - - =item * - - all_proxy or ALL_PROXY - - =back - - If the C environment variable is set, then this might be a CGI - process and C would be set from the C header, which is a - security risk. If C is set, C (the upper case - variant only) is ignored. - - Tunnelling C over an C proxy using the CONNECT method is - supported. If your proxy uses C itself, you can not tunnel C - over it. - - Be warned that proxying an C connection opens you to the risk of a - man-in-the-middle attack by the proxy server. - - The C environment variable is supported in the format of a - comma-separated list of domain extensions proxy should not be used for. - - Proxy arguments passed to C will override their corresponding - environment variables. - - =head1 LIMITATIONS - - HTTP::Tiny is I with the - L: - - =over 4 - - =item * - - "Message Syntax and Routing" [RFC7230] - - =item * - - "Semantics and Content" [RFC7231] - - =item * - - "Conditional Requests" [RFC7232] - - =item * - - "Range Requests" [RFC7233] - - =item * - - "Caching" [RFC7234] - - =item * - - "Authentication" [RFC7235] - - =back - - It attempts to meet all "MUST" requirements of the specification, but does not - implement all "SHOULD" requirements. (Note: it was developed against the - earlier RFC 2616 specification and may not yet meet the revised RFC 7230-7235 - spec.) - - Some particular limitations of note include: - - =over - - =item * - - HTTP::Tiny focuses on correct transport. Users are responsible for ensuring - that user-defined headers and content are compliant with the HTTP/1.1 - specification. - - =item * - - Users must ensure that URLs are properly escaped for unsafe characters and that - international domain names are properly encoded to ASCII. See L, - L and L. - - =item * - - Redirection is very strict against the specification. Redirection is only - automatic for response codes 301, 302, 307 and 308 if the request method is - 'GET' or 'HEAD'. Response code 303 is always converted into a 'GET' - redirection, as mandated by the specification. There is no automatic support - for status 305 ("Use proxy") redirections. - - =item * - - There is no provision for delaying a request body using an C header. - Unexpected C<1XX> responses are silently ignored as per the specification. - - =item * - - Only 'chunked' C is supported. - - =item * - - There is no support for a Request-URI of '*' for the 'OPTIONS' request. - - =back - - Despite the limitations listed above, HTTP::Tiny is considered - feature-complete. New feature requests should be directed to - L. - - =head1 SEE ALSO - - =over 4 - - =item * - - L - Higher level UA features for HTTP::Tiny - - =item * - - L - HTTP::Tiny wrapper with L/L compatibility - - =item * - - L - Wrap L instance in HTTP::Tiny compatible interface - - =item * - - L - Required for IPv6 support - - =item * - - L - Required for SSL support - - =item * - - L - If HTTP::Tiny isn't enough for you, this is the "standard" way to do things - - =item * - - L - Required if you want to validate SSL certificates - - =item * - - L - Required for SSL support - - =back - - =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - - =head1 SUPPORT - - =head2 Bugs / Feature Requests - - Please report any bugs or feature requests through the issue tracker - at L. - You will be notified automatically of any progress on your issue. - - =head2 Source Code - - This is open source software. The code repository is available for - public review and contribution under the terms of the license. - - L - - git clone https://github.com/chansen/p5-http-tiny.git - - =head1 AUTHORS - - =over 4 - - =item * - - Christian Hansen - - =item * - - David Golden - - =back - - =head1 CONTRIBUTORS - - =for stopwords Alan Gardner Alessandro Ghedini Brad Gilbert Chris Nehren Weyl Claes Jakobsson Clinton Gormley Dean Pearce Edward Zborowski James Raspass Jeremy Mates Jess Robinson Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Olaf Alders Olivier MenguĆ© Petr PĆ­sař Sƶren Kornetzki Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook - - =over 4 - - =item * - - Alan Gardner - - =item * - - Alessandro Ghedini - - =item * - - Brad Gilbert - - =item * - - Chris Nehren - - =item * - - Chris Weyl - - =item * - - Claes Jakobsson - - =item * - - Clinton Gormley - - =item * - - Dean Pearce - - =item * - - Edward Zborowski - - =item * - - James Raspass - - =item * - - Jeremy Mates - - =item * - - Jess Robinson - - =item * - - Lukas Eklund - - =item * - - Martin J. Evans - - =item * - - Martin-Louis Bright - - =item * - - Mike Doherty - - =item * - - Olaf Alders - - =item * - - Olivier MenguĆ© - - =item * - - Petr PĆ­sař - - =item * - - Sƶren Kornetzki - - =item * - - Syohei YOSHIDA - - =item * - - Tatsuhiko Miyagawa - - =item * - - Tom Hukins - - =item * - - Tony Cook - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2015 by Christian Hansen. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -HTTP_TINY - -$fatpacked{"JSON/PP.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'JSON_PP'; - package JSON::PP; - - # JSON-2.0 - - use 5.005; - use strict; - use base qw(Exporter); - use overload (); - - use Carp (); - use B (); - #use Devel::Peek; - - $JSON::PP::VERSION = '2.27300'; - - @JSON::PP::EXPORT = qw(encode_json decode_json from_json to_json); - - # instead of hash-access, i tried index-access for speed. - # but this method is not faster than what i expected. so it will be changed. - - use constant P_ASCII => 0; - use constant P_LATIN1 => 1; - use constant P_UTF8 => 2; - use constant P_INDENT => 3; - use constant P_CANONICAL => 4; - use constant P_SPACE_BEFORE => 5; - use constant P_SPACE_AFTER => 6; - use constant P_ALLOW_NONREF => 7; - use constant P_SHRINK => 8; - use constant P_ALLOW_BLESSED => 9; - use constant P_CONVERT_BLESSED => 10; - use constant P_RELAXED => 11; - - use constant P_LOOSE => 12; - use constant P_ALLOW_BIGNUM => 13; - use constant P_ALLOW_BAREKEY => 14; - use constant P_ALLOW_SINGLEQUOTE => 15; - use constant P_ESCAPE_SLASH => 16; - use constant P_AS_NONBLESSED => 17; - - use constant P_ALLOW_UNKNOWN => 18; - - use constant OLD_PERL => $] < 5.008 ? 1 : 0; - - BEGIN { - my @xs_compati_bit_properties = qw( - latin1 ascii utf8 indent canonical space_before space_after allow_nonref shrink - allow_blessed convert_blessed relaxed allow_unknown - ); - my @pp_bit_properties = qw( - allow_singlequote allow_bignum loose - allow_barekey escape_slash as_nonblessed - ); - - # Perl version check, Unicode handling is enable? - # Helper module sets @JSON::PP::_properties. - if ($] < 5.008 ) { - my $helper = $] >= 5.006 ? 'JSON::PP::Compat5006' : 'JSON::PP::Compat5005'; - eval qq| require $helper |; - if ($@) { Carp::croak $@; } - } - - for my $name (@xs_compati_bit_properties, @pp_bit_properties) { - my $flag_name = 'P_' . uc($name); - - eval qq/ - sub $name { - my \$enable = defined \$_[1] ? \$_[1] : 1; - - if (\$enable) { - \$_[0]->{PROPS}->[$flag_name] = 1; - } - else { - \$_[0]->{PROPS}->[$flag_name] = 0; - } - - \$_[0]; - } - - sub get_$name { - \$_[0]->{PROPS}->[$flag_name] ? 1 : ''; - } - /; - } - - } - - - - # Functions - - my %encode_allow_method - = map {($_ => 1)} qw/utf8 pretty allow_nonref latin1 self_encode escape_slash - allow_blessed convert_blessed indent indent_length allow_bignum - as_nonblessed - /; - my %decode_allow_method - = map {($_ => 1)} qw/utf8 allow_nonref loose allow_singlequote allow_bignum - allow_barekey max_size relaxed/; - - - my $JSON; # cache - - sub encode_json ($) { # encode - ($JSON ||= __PACKAGE__->new->utf8)->encode(@_); - } - - - sub decode_json { # decode - ($JSON ||= __PACKAGE__->new->utf8)->decode(@_); - } - - # Obsoleted - - sub to_json($) { - Carp::croak ("JSON::PP::to_json has been renamed to encode_json."); - } - - - sub from_json($) { - Carp::croak ("JSON::PP::from_json has been renamed to decode_json."); - } - - - # Methods - - sub new { - my $class = shift; - my $self = { - max_depth => 512, - max_size => 0, - indent => 0, - FLAGS => 0, - fallback => sub { encode_error('Invalid value. JSON can only reference.') }, - indent_length => 3, - }; - - bless $self, $class; - } - - - sub encode { - return $_[0]->PP_encode_json($_[1]); - } - - - sub decode { - return $_[0]->PP_decode_json($_[1], 0x00000000); - } - - - sub decode_prefix { - return $_[0]->PP_decode_json($_[1], 0x00000001); - } - - - # accessor - - - # pretty printing - - sub pretty { - my ($self, $v) = @_; - my $enable = defined $v ? $v : 1; - - if ($enable) { # indent_length(3) for JSON::XS compatibility - $self->indent(1)->indent_length(3)->space_before(1)->space_after(1); - } - else { - $self->indent(0)->space_before(0)->space_after(0); - } - - $self; - } - - # etc - - sub max_depth { - my $max = defined $_[1] ? $_[1] : 0x80000000; - $_[0]->{max_depth} = $max; - $_[0]; - } - - - sub get_max_depth { $_[0]->{max_depth}; } - - - sub max_size { - my $max = defined $_[1] ? $_[1] : 0; - $_[0]->{max_size} = $max; - $_[0]; - } - - - sub get_max_size { $_[0]->{max_size}; } - - - sub filter_json_object { - $_[0]->{cb_object} = defined $_[1] ? $_[1] : 0; - $_[0]->{F_HOOK} = ($_[0]->{cb_object} or $_[0]->{cb_sk_object}) ? 1 : 0; - $_[0]; - } - - sub filter_json_single_key_object { - if (@_ > 1) { - $_[0]->{cb_sk_object}->{$_[1]} = $_[2]; - } - $_[0]->{F_HOOK} = ($_[0]->{cb_object} or $_[0]->{cb_sk_object}) ? 1 : 0; - $_[0]; - } - - sub indent_length { - if (!defined $_[1] or $_[1] > 15 or $_[1] < 0) { - Carp::carp "The acceptable range of indent_length() is 0 to 15."; - } - else { - $_[0]->{indent_length} = $_[1]; - } - $_[0]; - } - - sub get_indent_length { - $_[0]->{indent_length}; - } - - sub sort_by { - $_[0]->{sort_by} = defined $_[1] ? $_[1] : 1; - $_[0]; - } - - sub allow_bigint { - Carp::carp("allow_bigint() is obsoleted. use allow_bignum() insted."); - } - - ############################### - - ### - ### Perl => JSON - ### - - - { # Convert - - my $max_depth; - my $indent; - my $ascii; - my $latin1; - my $utf8; - my $space_before; - my $space_after; - my $canonical; - my $allow_blessed; - my $convert_blessed; - - my $indent_length; - my $escape_slash; - my $bignum; - my $as_nonblessed; - - my $depth; - my $indent_count; - my $keysort; - - - sub PP_encode_json { - my $self = shift; - my $obj = shift; - - $indent_count = 0; - $depth = 0; - - my $idx = $self->{PROPS}; - - ($ascii, $latin1, $utf8, $indent, $canonical, $space_before, $space_after, $allow_blessed, - $convert_blessed, $escape_slash, $bignum, $as_nonblessed) - = @{$idx}[P_ASCII .. P_SPACE_AFTER, P_ALLOW_BLESSED, P_CONVERT_BLESSED, - P_ESCAPE_SLASH, P_ALLOW_BIGNUM, P_AS_NONBLESSED]; - - ($max_depth, $indent_length) = @{$self}{qw/max_depth indent_length/}; - - $keysort = $canonical ? sub { $a cmp $b } : undef; - - if ($self->{sort_by}) { - $keysort = ref($self->{sort_by}) eq 'CODE' ? $self->{sort_by} - : $self->{sort_by} =~ /\D+/ ? $self->{sort_by} - : sub { $a cmp $b }; - } - - encode_error("hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)") - if(!ref $obj and !$idx->[ P_ALLOW_NONREF ]); - - my $str = $self->object_to_json($obj); - - $str .= "\n" if ( $indent ); # JSON::XS 2.26 compatible - - unless ($ascii or $latin1 or $utf8) { - utf8::upgrade($str); - } - - if ($idx->[ P_SHRINK ]) { - utf8::downgrade($str, 1); - } - - return $str; - } - - - sub object_to_json { - my ($self, $obj) = @_; - my $type = ref($obj); - - if($type eq 'HASH'){ - return $self->hash_to_json($obj); - } - elsif($type eq 'ARRAY'){ - return $self->array_to_json($obj); - } - elsif ($type) { # blessed object? - if (blessed($obj)) { - - return $self->value_to_json($obj) if ( $obj->isa('JSON::PP::Boolean') ); - - if ( $convert_blessed and $obj->can('TO_JSON') ) { - my $result = $obj->TO_JSON(); - if ( defined $result and ref( $result ) ) { - if ( refaddr( $obj ) eq refaddr( $result ) ) { - encode_error( sprintf( - "%s::TO_JSON method returned same object as was passed instead of a new one", - ref $obj - ) ); - } - } - - return $self->object_to_json( $result ); - } - - return "$obj" if ( $bignum and _is_bignum($obj) ); - return $self->blessed_to_json($obj) if ($allow_blessed and $as_nonblessed); # will be removed. - - encode_error( sprintf("encountered object '%s', but neither allow_blessed " - . "nor convert_blessed settings are enabled", $obj) - ) unless ($allow_blessed); - - return 'null'; - } - else { - return $self->value_to_json($obj); - } - } - else{ - return $self->value_to_json($obj); - } - } - - - sub hash_to_json { - my ($self, $obj) = @_; - my @res; - - encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)") - if (++$depth > $max_depth); - - my ($pre, $post) = $indent ? $self->_up_indent() : ('', ''); - my $del = ($space_before ? ' ' : '') . ':' . ($space_after ? ' ' : ''); - - for my $k ( _sort( $obj ) ) { - if ( OLD_PERL ) { utf8::decode($k) } # key for Perl 5.6 / be optimized - push @res, string_to_json( $self, $k ) - . $del - . ( $self->object_to_json( $obj->{$k} ) || $self->value_to_json( $obj->{$k} ) ); - } - - --$depth; - $self->_down_indent() if ($indent); - - return '{' . ( @res ? $pre : '' ) . ( @res ? join( ",$pre", @res ) . $post : '' ) . '}'; - } - - - sub array_to_json { - my ($self, $obj) = @_; - my @res; - - encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)") - if (++$depth > $max_depth); - - my ($pre, $post) = $indent ? $self->_up_indent() : ('', ''); - - for my $v (@$obj){ - push @res, $self->object_to_json($v) || $self->value_to_json($v); - } - - --$depth; - $self->_down_indent() if ($indent); - - return '[' . ( @res ? $pre : '' ) . ( @res ? join( ",$pre", @res ) . $post : '' ) . ']'; - } - - - sub value_to_json { - my ($self, $value) = @_; - - return 'null' if(!defined $value); - - my $b_obj = B::svref_2object(\$value); # for round trip problem - my $flags = $b_obj->FLAGS; - - return $value # as is - if $flags & ( B::SVp_IOK | B::SVp_NOK ) and !( $flags & B::SVp_POK ); # SvTYPE is IV or NV? - - my $type = ref($value); - - if(!$type){ - return string_to_json($self, $value); - } - elsif( blessed($value) and $value->isa('JSON::PP::Boolean') ){ - return $$value == 1 ? 'true' : 'false'; - } - elsif ($type) { - if ((overload::StrVal($value) =~ /=(\w+)/)[0]) { - return $self->value_to_json("$value"); - } - - if ($type eq 'SCALAR' and defined $$value) { - return $$value eq '1' ? 'true' - : $$value eq '0' ? 'false' - : $self->{PROPS}->[ P_ALLOW_UNKNOWN ] ? 'null' - : encode_error("cannot encode reference to scalar"); - } - - if ( $self->{PROPS}->[ P_ALLOW_UNKNOWN ] ) { - return 'null'; - } - else { - if ( $type eq 'SCALAR' or $type eq 'REF' ) { - encode_error("cannot encode reference to scalar"); - } - else { - encode_error("encountered $value, but JSON can only represent references to arrays or hashes"); - } - } - - } - else { - return $self->{fallback}->($value) - if ($self->{fallback} and ref($self->{fallback}) eq 'CODE'); - return 'null'; - } - - } - - - my %esc = ( - "\n" => '\n', - "\r" => '\r', - "\t" => '\t', - "\f" => '\f', - "\b" => '\b', - "\"" => '\"', - "\\" => '\\\\', - "\'" => '\\\'', - ); - - - sub string_to_json { - my ($self, $arg) = @_; - - $arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g; - $arg =~ s/\//\\\//g if ($escape_slash); - $arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg; - - if ($ascii) { - $arg = JSON_PP_encode_ascii($arg); - } - - if ($latin1) { - $arg = JSON_PP_encode_latin1($arg); - } - - if ($utf8) { - utf8::encode($arg); - } - - return '"' . $arg . '"'; - } - - - sub blessed_to_json { - my $reftype = reftype($_[1]) || ''; - if ($reftype eq 'HASH') { - return $_[0]->hash_to_json($_[1]); - } - elsif ($reftype eq 'ARRAY') { - return $_[0]->array_to_json($_[1]); - } - else { - return 'null'; - } - } - - - sub encode_error { - my $error = shift; - Carp::croak "$error"; - } - - - sub _sort { - defined $keysort ? (sort $keysort (keys %{$_[0]})) : keys %{$_[0]}; - } - - - sub _up_indent { - my $self = shift; - my $space = ' ' x $indent_length; - - my ($pre,$post) = ('',''); - - $post = "\n" . $space x $indent_count; - - $indent_count++; - - $pre = "\n" . $space x $indent_count; - - return ($pre,$post); - } - - - sub _down_indent { $indent_count--; } - - - sub PP_encode_box { - { - depth => $depth, - indent_count => $indent_count, - }; - } - - } # Convert - - - sub _encode_ascii { - join('', - map { - $_ <= 127 ? - chr($_) : - $_ <= 65535 ? - sprintf('\u%04x', $_) : sprintf('\u%x\u%x', _encode_surrogates($_)); - } unpack('U*', $_[0]) - ); - } - - - sub _encode_latin1 { - join('', - map { - $_ <= 255 ? - chr($_) : - $_ <= 65535 ? - sprintf('\u%04x', $_) : sprintf('\u%x\u%x', _encode_surrogates($_)); - } unpack('U*', $_[0]) - ); - } - - - sub _encode_surrogates { # from perlunicode - my $uni = $_[0] - 0x10000; - return ($uni / 0x400 + 0xD800, $uni % 0x400 + 0xDC00); - } - - - sub _is_bignum { - $_[0]->isa('Math::BigInt') or $_[0]->isa('Math::BigFloat'); - } - - - - # - # JSON => Perl - # - - my $max_intsize; - - BEGIN { - my $checkint = 1111; - for my $d (5..64) { - $checkint .= 1; - my $int = eval qq| $checkint |; - if ($int =~ /[eE]/) { - $max_intsize = $d - 1; - last; - } - } - } - - { # PARSE - - my %escapes = ( # by Jeremy Muhlich - b => "\x8", - t => "\x9", - n => "\xA", - f => "\xC", - r => "\xD", - '\\' => '\\', - '"' => '"', - '/' => '/', - ); - - my $text; # json data - my $at; # offset - my $ch; # 1chracter - my $len; # text length (changed according to UTF8 or NON UTF8) - # INTERNAL - my $depth; # nest counter - my $encoding; # json text encoding - my $is_valid_utf8; # temp variable - my $utf8_len; # utf8 byte length - # FLAGS - my $utf8; # must be utf8 - my $max_depth; # max nest nubmer of objects and arrays - my $max_size; - my $relaxed; - my $cb_object; - my $cb_sk_object; - - my $F_HOOK; - - my $allow_bigint; # using Math::BigInt - my $singlequote; # loosely quoting - my $loose; # - my $allow_barekey; # bareKey - - # $opt flag - # 0x00000001 .... decode_prefix - # 0x10000000 .... incr_parse - - sub PP_decode_json { - my ($self, $opt); # $opt is an effective flag during this decode_json. - - ($self, $text, $opt) = @_; - - ($at, $ch, $depth) = (0, '', 0); - - if ( !defined $text or ref $text ) { - decode_error("malformed JSON string, neither array, object, number, string or atom"); - } - - my $idx = $self->{PROPS}; - - ($utf8, $relaxed, $loose, $allow_bigint, $allow_barekey, $singlequote) - = @{$idx}[P_UTF8, P_RELAXED, P_LOOSE .. P_ALLOW_SINGLEQUOTE]; - - if ( $utf8 ) { - utf8::downgrade( $text, 1 ) or Carp::croak("Wide character in subroutine entry"); - } - else { - utf8::upgrade( $text ); - utf8::encode( $text ); - } - - $len = length $text; - - ($max_depth, $max_size, $cb_object, $cb_sk_object, $F_HOOK) - = @{$self}{qw/max_depth max_size cb_object cb_sk_object F_HOOK/}; - - if ($max_size > 1) { - use bytes; - my $bytes = length $text; - decode_error( - sprintf("attempted decode of JSON text of %s bytes size, but max_size is set to %s" - , $bytes, $max_size), 1 - ) if ($bytes > $max_size); - } - - # Currently no effect - # should use regexp - my @octets = unpack('C4', $text); - $encoding = ( $octets[0] and $octets[1]) ? 'UTF-8' - : (!$octets[0] and $octets[1]) ? 'UTF-16BE' - : (!$octets[0] and !$octets[1]) ? 'UTF-32BE' - : ( $octets[2] ) ? 'UTF-16LE' - : (!$octets[2] ) ? 'UTF-32LE' - : 'unknown'; - - white(); # remove head white space - - my $valid_start = defined $ch; # Is there a first character for JSON structure? - - my $result = value(); - - return undef if ( !$result && ( $opt & 0x10000000 ) ); # for incr_parse - - decode_error("malformed JSON string, neither array, object, number, string or atom") unless $valid_start; - - if ( !$idx->[ P_ALLOW_NONREF ] and !ref $result ) { - decode_error( - 'JSON text must be an object or array (but found number, string, true, false or null,' - . ' use allow_nonref to allow this)', 1); - } - - Carp::croak('something wrong.') if $len < $at; # we won't arrive here. - - my $consumed = defined $ch ? $at - 1 : $at; # consumed JSON text length - - white(); # remove tail white space - - if ( $ch ) { - return ( $result, $consumed ) if ($opt & 0x00000001); # all right if decode_prefix - decode_error("garbage after JSON object"); - } - - ( $opt & 0x00000001 ) ? ( $result, $consumed ) : $result; - } - - - sub next_chr { - return $ch = undef if($at >= $len); - $ch = substr($text, $at++, 1); - } - - - sub value { - white(); - return if(!defined $ch); - return object() if($ch eq '{'); - return array() if($ch eq '['); - return string() if($ch eq '"' or ($singlequote and $ch eq "'")); - return number() if($ch =~ /[0-9]/ or $ch eq '-'); - return word(); - } - - sub string { - my ($i, $s, $t, $u); - my $utf16; - my $is_utf8; - - ($is_valid_utf8, $utf8_len) = ('', 0); - - $s = ''; # basically UTF8 flag on - - if($ch eq '"' or ($singlequote and $ch eq "'")){ - my $boundChar = $ch; - - OUTER: while( defined(next_chr()) ){ - - if($ch eq $boundChar){ - next_chr(); - - if ($utf16) { - decode_error("missing low surrogate character in surrogate pair"); - } - - utf8::decode($s) if($is_utf8); - - return $s; - } - elsif($ch eq '\\'){ - next_chr(); - if(exists $escapes{$ch}){ - $s .= $escapes{$ch}; - } - elsif($ch eq 'u'){ # UNICODE handling - my $u = ''; - - for(1..4){ - $ch = next_chr(); - last OUTER if($ch !~ /[0-9a-fA-F]/); - $u .= $ch; - } - - # U+D800 - U+DBFF - if ($u =~ /^[dD][89abAB][0-9a-fA-F]{2}/) { # UTF-16 high surrogate? - $utf16 = $u; - } - # U+DC00 - U+DFFF - elsif ($u =~ /^[dD][c-fC-F][0-9a-fA-F]{2}/) { # UTF-16 low surrogate? - unless (defined $utf16) { - decode_error("missing high surrogate character in surrogate pair"); - } - $is_utf8 = 1; - $s .= JSON_PP_decode_surrogates($utf16, $u) || next; - $utf16 = undef; - } - else { - if (defined $utf16) { - decode_error("surrogate pair expected"); - } - - if ( ( my $hex = hex( $u ) ) > 127 ) { - $is_utf8 = 1; - $s .= JSON_PP_decode_unicode($u) || next; - } - else { - $s .= chr $hex; - } - } - - } - else{ - unless ($loose) { - $at -= 2; - decode_error('illegal backslash escape sequence in string'); - } - $s .= $ch; - } - } - else{ - - if ( ord $ch > 127 ) { - unless( $ch = is_valid_utf8($ch) ) { - $at -= 1; - decode_error("malformed UTF-8 character in JSON string"); - } - else { - $at += $utf8_len - 1; - } - - $is_utf8 = 1; - } - - if (!$loose) { - if ($ch =~ /[\x00-\x1f\x22\x5c]/) { # '/' ok - $at--; - decode_error('invalid character encountered while parsing JSON string'); - } - } - - $s .= $ch; - } - } - } - - decode_error("unexpected end of string while parsing JSON string"); - } - - - sub white { - while( defined $ch ){ - if($ch le ' '){ - next_chr(); - } - elsif($ch eq '/'){ - next_chr(); - if(defined $ch and $ch eq '/'){ - 1 while(defined(next_chr()) and $ch ne "\n" and $ch ne "\r"); - } - elsif(defined $ch and $ch eq '*'){ - next_chr(); - while(1){ - if(defined $ch){ - if($ch eq '*'){ - if(defined(next_chr()) and $ch eq '/'){ - next_chr(); - last; - } - } - else{ - next_chr(); - } - } - else{ - decode_error("Unterminated comment"); - } - } - next; - } - else{ - $at--; - decode_error("malformed JSON string, neither array, object, number, string or atom"); - } - } - else{ - if ($relaxed and $ch eq '#') { # correctly? - pos($text) = $at; - $text =~ /\G([^\n]*(?:\r\n|\r|\n|$))/g; - $at = pos($text); - next_chr; - next; - } - - last; - } - } - } - - - sub array { - my $a = $_[0] || []; # you can use this code to use another array ref object. - - decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)') - if (++$depth > $max_depth); - - next_chr(); - white(); - - if(defined $ch and $ch eq ']'){ - --$depth; - next_chr(); - return $a; - } - else { - while(defined($ch)){ - push @$a, value(); - - white(); - - if (!defined $ch) { - last; - } - - if($ch eq ']'){ - --$depth; - next_chr(); - return $a; - } - - if($ch ne ','){ - last; - } - - next_chr(); - white(); - - if ($relaxed and $ch eq ']') { - --$depth; - next_chr(); - return $a; - } - - } - } - - decode_error(", or ] expected while parsing array"); - } - - - sub object { - my $o = $_[0] || {}; # you can use this code to use another hash ref object. - my $k; - - decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)') - if (++$depth > $max_depth); - next_chr(); - white(); - - if(defined $ch and $ch eq '}'){ - --$depth; - next_chr(); - if ($F_HOOK) { - return _json_object_hook($o); - } - return $o; - } - else { - while (defined $ch) { - $k = ($allow_barekey and $ch ne '"' and $ch ne "'") ? bareKey() : string(); - white(); - - if(!defined $ch or $ch ne ':'){ - $at--; - decode_error("':' expected"); - } - - next_chr(); - $o->{$k} = value(); - white(); - - last if (!defined $ch); - - if($ch eq '}'){ - --$depth; - next_chr(); - if ($F_HOOK) { - return _json_object_hook($o); - } - return $o; - } - - if($ch ne ','){ - last; - } - - next_chr(); - white(); - - if ($relaxed and $ch eq '}') { - --$depth; - next_chr(); - if ($F_HOOK) { - return _json_object_hook($o); - } - return $o; - } - - } - - } - - $at--; - decode_error(", or } expected while parsing object/hash"); - } - - - sub bareKey { # doesn't strictly follow Standard ECMA-262 3rd Edition - my $key; - while($ch =~ /[^\x00-\x23\x25-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F]/){ - $key .= $ch; - next_chr(); - } - return $key; - } - - - sub word { - my $word = substr($text,$at-1,4); - - if($word eq 'true'){ - $at += 3; - next_chr; - return $JSON::PP::true; - } - elsif($word eq 'null'){ - $at += 3; - next_chr; - return undef; - } - elsif($word eq 'fals'){ - $at += 3; - if(substr($text,$at,1) eq 'e'){ - $at++; - next_chr; - return $JSON::PP::false; - } - } - - $at--; # for decode_error report - - decode_error("'null' expected") if ($word =~ /^n/); - decode_error("'true' expected") if ($word =~ /^t/); - decode_error("'false' expected") if ($word =~ /^f/); - decode_error("malformed JSON string, neither array, object, number, string or atom"); - } - - - sub number { - my $n = ''; - my $v; - - # According to RFC4627, hex or oct digts are invalid. - if($ch eq '0'){ - my $peek = substr($text,$at,1); - my $hex = $peek =~ /[xX]/; # 0 or 1 - - if($hex){ - decode_error("malformed number (leading zero must not be followed by another digit)"); - ($n) = ( substr($text, $at+1) =~ /^([0-9a-fA-F]+)/); - } - else{ # oct - ($n) = ( substr($text, $at) =~ /^([0-7]+)/); - if (defined $n and length $n > 1) { - decode_error("malformed number (leading zero must not be followed by another digit)"); - } - } - - if(defined $n and length($n)){ - if (!$hex and length($n) == 1) { - decode_error("malformed number (leading zero must not be followed by another digit)"); - } - $at += length($n) + $hex; - next_chr; - return $hex ? hex($n) : oct($n); - } - } - - if($ch eq '-'){ - $n = '-'; - next_chr; - if (!defined $ch or $ch !~ /\d/) { - decode_error("malformed number (no digits after initial minus)"); - } - } - - while(defined $ch and $ch =~ /\d/){ - $n .= $ch; - next_chr; - } - - if(defined $ch and $ch eq '.'){ - $n .= '.'; - - next_chr; - if (!defined $ch or $ch !~ /\d/) { - decode_error("malformed number (no digits after decimal point)"); - } - else { - $n .= $ch; - } - - while(defined(next_chr) and $ch =~ /\d/){ - $n .= $ch; - } - } - - if(defined $ch and ($ch eq 'e' or $ch eq 'E')){ - $n .= $ch; - next_chr; - - if(defined($ch) and ($ch eq '+' or $ch eq '-')){ - $n .= $ch; - next_chr; - if (!defined $ch or $ch =~ /\D/) { - decode_error("malformed number (no digits after exp sign)"); - } - $n .= $ch; - } - elsif(defined($ch) and $ch =~ /\d/){ - $n .= $ch; - } - else { - decode_error("malformed number (no digits after exp sign)"); - } - - while(defined(next_chr) and $ch =~ /\d/){ - $n .= $ch; - } - - } - - $v .= $n; - - if ($v !~ /[.eE]/ and length $v > $max_intsize) { - if ($allow_bigint) { # from Adam Sussman - require Math::BigInt; - return Math::BigInt->new($v); - } - else { - return "$v"; - } - } - elsif ($allow_bigint) { - require Math::BigFloat; - return Math::BigFloat->new($v); - } - - return 0+$v; - } - - - sub is_valid_utf8 { - - $utf8_len = $_[0] =~ /[\x00-\x7F]/ ? 1 - : $_[0] =~ /[\xC2-\xDF]/ ? 2 - : $_[0] =~ /[\xE0-\xEF]/ ? 3 - : $_[0] =~ /[\xF0-\xF4]/ ? 4 - : 0 - ; - - return unless $utf8_len; - - my $is_valid_utf8 = substr($text, $at - 1, $utf8_len); - - return ( $is_valid_utf8 =~ /^(?: - [\x00-\x7F] - |[\xC2-\xDF][\x80-\xBF] - |[\xE0][\xA0-\xBF][\x80-\xBF] - |[\xE1-\xEC][\x80-\xBF][\x80-\xBF] - |[\xED][\x80-\x9F][\x80-\xBF] - |[\xEE-\xEF][\x80-\xBF][\x80-\xBF] - |[\xF0][\x90-\xBF][\x80-\xBF][\x80-\xBF] - |[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF] - |[\xF4][\x80-\x8F][\x80-\xBF][\x80-\xBF] - )$/x ) ? $is_valid_utf8 : ''; - } - - - sub decode_error { - my $error = shift; - my $no_rep = shift; - my $str = defined $text ? substr($text, $at) : ''; - my $mess = ''; - my $type = $] >= 5.008 ? 'U*' - : $] < 5.006 ? 'C*' - : utf8::is_utf8( $str ) ? 'U*' # 5.6 - : 'C*' - ; - - for my $c ( unpack( $type, $str ) ) { # emulate pv_uni_display() ? - $mess .= $c == 0x07 ? '\a' - : $c == 0x09 ? '\t' - : $c == 0x0a ? '\n' - : $c == 0x0d ? '\r' - : $c == 0x0c ? '\f' - : $c < 0x20 ? sprintf('\x{%x}', $c) - : $c == 0x5c ? '\\\\' - : $c < 0x80 ? chr($c) - : sprintf('\x{%x}', $c) - ; - if ( length $mess >= 20 ) { - $mess .= '...'; - last; - } - } - - unless ( length $mess ) { - $mess = '(end of string)'; - } - - Carp::croak ( - $no_rep ? "$error" : "$error, at character offset $at (before \"$mess\")" - ); - - } - - - sub _json_object_hook { - my $o = $_[0]; - my @ks = keys %{$o}; - - if ( $cb_sk_object and @ks == 1 and exists $cb_sk_object->{ $ks[0] } and ref $cb_sk_object->{ $ks[0] } ) { - my @val = $cb_sk_object->{ $ks[0] }->( $o->{$ks[0]} ); - if (@val == 1) { - return $val[0]; - } - } - - my @val = $cb_object->($o) if ($cb_object); - if (@val == 0 or @val > 1) { - return $o; - } - else { - return $val[0]; - } - } - - - sub PP_decode_box { - { - text => $text, - at => $at, - ch => $ch, - len => $len, - depth => $depth, - encoding => $encoding, - is_valid_utf8 => $is_valid_utf8, - }; - } - - } # PARSE - - - sub _decode_surrogates { # from perlunicode - my $uni = 0x10000 + (hex($_[0]) - 0xD800) * 0x400 + (hex($_[1]) - 0xDC00); - my $un = pack('U*', $uni); - utf8::encode( $un ); - return $un; - } - - - sub _decode_unicode { - my $un = pack('U', hex shift); - utf8::encode( $un ); - return $un; - } - - # - # Setup for various Perl versions (the code from JSON::PP58) - # - - BEGIN { - - unless ( defined &utf8::is_utf8 ) { - require Encode; - *utf8::is_utf8 = *Encode::is_utf8; - } - - if ( $] >= 5.008 ) { - *JSON::PP::JSON_PP_encode_ascii = \&_encode_ascii; - *JSON::PP::JSON_PP_encode_latin1 = \&_encode_latin1; - *JSON::PP::JSON_PP_decode_surrogates = \&_decode_surrogates; - *JSON::PP::JSON_PP_decode_unicode = \&_decode_unicode; - } - - if ($] >= 5.008 and $] < 5.008003) { # join() in 5.8.0 - 5.8.2 is broken. - package JSON::PP; - require subs; - subs->import('join'); - eval q| - sub join { - return '' if (@_ < 2); - my $j = shift; - my $str = shift; - for (@_) { $str .= $j . $_; } - return $str; - } - |; - } - - - sub JSON::PP::incr_parse { - local $Carp::CarpLevel = 1; - ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_parse( @_ ); - } - - - sub JSON::PP::incr_skip { - ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_skip; - } - - - sub JSON::PP::incr_reset { - ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_reset; - } - - eval q{ - sub JSON::PP::incr_text : lvalue { - $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new; - - if ( $_[0]->{_incr_parser}->{incr_parsing} ) { - Carp::croak("incr_text can not be called when the incremental parser already started parsing"); - } - $_[0]->{_incr_parser}->{incr_text}; - } - } if ( $] >= 5.006 ); - - } # Setup for various Perl versions (the code from JSON::PP58) - - - ############################### - # Utilities - # - - BEGIN { - eval 'require Scalar::Util'; - unless($@){ - *JSON::PP::blessed = \&Scalar::Util::blessed; - *JSON::PP::reftype = \&Scalar::Util::reftype; - *JSON::PP::refaddr = \&Scalar::Util::refaddr; - } - else{ # This code is from Sclar::Util. - # warn $@; - eval 'sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) }'; - *JSON::PP::blessed = sub { - local($@, $SIG{__DIE__}, $SIG{__WARN__}); - ref($_[0]) ? eval { $_[0]->a_sub_not_likely_to_be_here } : undef; - }; - my %tmap = qw( - B::NULL SCALAR - B::HV HASH - B::AV ARRAY - B::CV CODE - B::IO IO - B::GV GLOB - B::REGEXP REGEXP - ); - *JSON::PP::reftype = sub { - my $r = shift; - - return undef unless length(ref($r)); - - my $t = ref(B::svref_2object($r)); - - return - exists $tmap{$t} ? $tmap{$t} - : length(ref($$r)) ? 'REF' - : 'SCALAR'; - }; - *JSON::PP::refaddr = sub { - return undef unless length(ref($_[0])); - - my $addr; - if(defined(my $pkg = blessed($_[0]))) { - $addr .= bless $_[0], 'Scalar::Util::Fake'; - bless $_[0], $pkg; - } - else { - $addr .= $_[0] - } - - $addr =~ /0x(\w+)/; - local $^W; - #no warnings 'portable'; - hex($1); - } - } - } - - - # shamely copied and modified from JSON::XS code. - - $JSON::PP::true = do { bless \(my $dummy = 1), "JSON::PP::Boolean" }; - $JSON::PP::false = do { bless \(my $dummy = 0), "JSON::PP::Boolean" }; - - sub is_bool { defined $_[0] and UNIVERSAL::isa($_[0], "JSON::PP::Boolean"); } - - sub true { $JSON::PP::true } - sub false { $JSON::PP::false } - sub null { undef; } - - ############################### - - package JSON::PP::Boolean; - - use overload ( - "0+" => sub { ${$_[0]} }, - "++" => sub { $_[0] = ${$_[0]} + 1 }, - "--" => sub { $_[0] = ${$_[0]} - 1 }, - fallback => 1, - ); - - - ############################### - - package JSON::PP::IncrParser; - - use strict; - - use constant INCR_M_WS => 0; # initial whitespace skipping - use constant INCR_M_STR => 1; # inside string - use constant INCR_M_BS => 2; # inside backslash - use constant INCR_M_JSON => 3; # outside anything, count nesting - use constant INCR_M_C0 => 4; - use constant INCR_M_C1 => 5; - - $JSON::PP::IncrParser::VERSION = '1.01'; - - my $unpack_format = $] < 5.006 ? 'C*' : 'U*'; - - sub new { - my ( $class ) = @_; - - bless { - incr_nest => 0, - incr_text => undef, - incr_parsing => 0, - incr_p => 0, - }, $class; - } - - - sub incr_parse { - my ( $self, $coder, $text ) = @_; - - $self->{incr_text} = '' unless ( defined $self->{incr_text} ); - - if ( defined $text ) { - if ( utf8::is_utf8( $text ) and !utf8::is_utf8( $self->{incr_text} ) ) { - utf8::upgrade( $self->{incr_text} ) ; - utf8::decode( $self->{incr_text} ) ; - } - $self->{incr_text} .= $text; - } - - - my $max_size = $coder->get_max_size; - - if ( defined wantarray ) { - - $self->{incr_mode} = INCR_M_WS unless defined $self->{incr_mode}; - - if ( wantarray ) { - my @ret; - - $self->{incr_parsing} = 1; - - do { - push @ret, $self->_incr_parse( $coder, $self->{incr_text} ); - - unless ( !$self->{incr_nest} and $self->{incr_mode} == INCR_M_JSON ) { - $self->{incr_mode} = INCR_M_WS if $self->{incr_mode} != INCR_M_STR; - } - - } until ( length $self->{incr_text} >= $self->{incr_p} ); - - $self->{incr_parsing} = 0; - - return @ret; - } - else { # in scalar context - $self->{incr_parsing} = 1; - my $obj = $self->_incr_parse( $coder, $self->{incr_text} ); - $self->{incr_parsing} = 0 if defined $obj; # pointed by Martin J. Evans - return $obj ? $obj : undef; # $obj is an empty string, parsing was completed. - } - - } - - } - - - sub _incr_parse { - my ( $self, $coder, $text, $skip ) = @_; - my $p = $self->{incr_p}; - my $restore = $p; - - my @obj; - my $len = length $text; - - if ( $self->{incr_mode} == INCR_M_WS ) { - while ( $len > $p ) { - my $s = substr( $text, $p, 1 ); - $p++ and next if ( 0x20 >= unpack($unpack_format, $s) ); - $self->{incr_mode} = INCR_M_JSON; - last; - } - } - - while ( $len > $p ) { - my $s = substr( $text, $p++, 1 ); - - if ( $s eq '"' ) { - if (substr( $text, $p - 2, 1 ) eq '\\' ) { - next; - } - - if ( $self->{incr_mode} != INCR_M_STR ) { - $self->{incr_mode} = INCR_M_STR; - } - else { - $self->{incr_mode} = INCR_M_JSON; - unless ( $self->{incr_nest} ) { - last; - } - } - } - - if ( $self->{incr_mode} == INCR_M_JSON ) { - - if ( $s eq '[' or $s eq '{' ) { - if ( ++$self->{incr_nest} > $coder->get_max_depth ) { - Carp::croak('json text or perl structure exceeds maximum nesting level (max_depth set too low?)'); - } - } - elsif ( $s eq ']' or $s eq '}' ) { - last if ( --$self->{incr_nest} <= 0 ); - } - elsif ( $s eq '#' ) { - while ( $len > $p ) { - last if substr( $text, $p++, 1 ) eq "\n"; - } - } - - } - - } - - $self->{incr_p} = $p; - - return if ( $self->{incr_mode} == INCR_M_STR and not $self->{incr_nest} ); - return if ( $self->{incr_mode} == INCR_M_JSON and $self->{incr_nest} > 0 ); - - return '' unless ( length substr( $self->{incr_text}, 0, $p ) ); - - local $Carp::CarpLevel = 2; - - $self->{incr_p} = $restore; - $self->{incr_c} = $p; - - my ( $obj, $tail ) = $coder->PP_decode_json( substr( $self->{incr_text}, 0, $p ), 0x10000001 ); - - $self->{incr_text} = substr( $self->{incr_text}, $p ); - $self->{incr_p} = 0; - - return $obj || ''; - } - - - sub incr_text { - if ( $_[0]->{incr_parsing} ) { - Carp::croak("incr_text can not be called when the incremental parser already started parsing"); - } - $_[0]->{incr_text}; - } - - - sub incr_skip { - my $self = shift; - $self->{incr_text} = substr( $self->{incr_text}, $self->{incr_c} ); - $self->{incr_p} = 0; - } - - - sub incr_reset { - my $self = shift; - $self->{incr_text} = undef; - $self->{incr_p} = 0; - $self->{incr_mode} = 0; - $self->{incr_nest} = 0; - $self->{incr_parsing} = 0; - } - - ############################### - - - 1; - __END__ - =pod - - =head1 NAME - - JSON::PP - JSON::XS compatible pure-Perl module. - - =head1 SYNOPSIS - - use JSON::PP; - - # exported functions, they croak on error - # and expect/generate UTF-8 - - $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref; - $perl_hash_or_arrayref = decode_json $utf8_encoded_json_text; - - # OO-interface - - $coder = JSON::PP->new->ascii->pretty->allow_nonref; - - $json_text = $json->encode( $perl_scalar ); - $perl_scalar = $json->decode( $json_text ); - - $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing - - # Note that JSON version 2.0 and above will automatically use - # JSON::XS or JSON::PP, so you should be able to just: - - use JSON; - - - =head1 VERSION - - 2.27300 - - L 2.27 (~2.30) compatible. - - =head1 NOTE - - JSON::PP had been inculded in JSON distribution (CPAN module). - It was a perl core module in Perl 5.14. - - =head1 DESCRIPTION - - This module is L compatible pure Perl module. - (Perl 5.8 or later is recommended) - - JSON::XS is the fastest and most proper JSON module on CPAN. - It is written by Marc Lehmann in C, so must be compiled and - installed in the used environment. - - JSON::PP is a pure-Perl module and has compatibility to JSON::XS. - - - =head2 FEATURES - - =over - - =item * correct unicode handling - - This module knows how to handle Unicode (depending on Perl version). - - See to L and L. - - - =item * round-trip integrity - - When you serialise a perl data structure using only data types supported - by JSON and Perl, the deserialised data structure is identical on the Perl - level. (e.g. the string "2.0" doesn't suddenly become "2" just because - it looks like a number). There I minor exceptions to this, read the - MAPPING section below to learn about those. - - - =item * strict checking of JSON correctness - - There is no guessing, no generating of illegal JSON texts by default, - and only JSON is accepted as input by default (the latter is a security feature). - But when some options are set, loose chcking features are available. - - =back - - =head1 FUNCTIONAL INTERFACE - - Some documents are copied and modified from L. - - =head2 encode_json - - $json_text = encode_json $perl_scalar - - Converts the given Perl data structure to a UTF-8 encoded, binary string. - - This function call is functionally identical to: - - $json_text = JSON::PP->new->utf8->encode($perl_scalar) - - =head2 decode_json - - $perl_scalar = decode_json $json_text - - The opposite of C: expects an UTF-8 (binary) string and tries - to parse that as an UTF-8 encoded JSON text, returning the resulting - reference. - - This function call is functionally identical to: - - $perl_scalar = JSON::PP->new->utf8->decode($json_text) - - =head2 JSON::PP::is_bool - - $is_boolean = JSON::PP::is_bool($scalar) - - Returns true if the passed scalar represents either JSON::PP::true or - JSON::PP::false, two constants that act like C<1> and C<0> respectively - and are also used to represent JSON C and C in Perl strings. - - =head2 JSON::PP::true - - Returns JSON true value which is blessed object. - It C JSON::PP::Boolean object. - - =head2 JSON::PP::false - - Returns JSON false value which is blessed object. - It C JSON::PP::Boolean object. - - =head2 JSON::PP::null - - Returns C. - - See L, below, for more information on how JSON values are mapped to - Perl. - - - =head1 HOW DO I DECODE A DATA FROM OUTER AND ENCODE TO OUTER - - This section supposes that your perl vresion is 5.8 or later. - - If you know a JSON text from an outer world - a network, a file content, and so on, - is encoded in UTF-8, you should use C or C module object - with C enable. And the decoded result will contain UNICODE characters. - - # from network - my $json = JSON::PP->new->utf8; - my $json_text = CGI->new->param( 'json_data' ); - my $perl_scalar = $json->decode( $json_text ); - - # from file content - local $/; - open( my $fh, '<', 'json.data' ); - $json_text = <$fh>; - $perl_scalar = decode_json( $json_text ); - - If an outer data is not encoded in UTF-8, firstly you should C it. - - use Encode; - local $/; - open( my $fh, '<', 'json.data' ); - my $encoding = 'cp932'; - my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE - - # or you can write the below code. - # - # open( my $fh, "<:encoding($encoding)", 'json.data' ); - # $unicode_json_text = <$fh>; - - In this case, C<$unicode_json_text> is of course UNICODE string. - So you B use C nor C module object with C enable. - Instead of them, you use C module object with C disable. - - $perl_scalar = $json->utf8(0)->decode( $unicode_json_text ); - - Or C and C: - - $perl_scalar = decode_json( encode( 'utf8', $unicode_json_text ) ); - # this way is not efficient. - - And now, you want to convert your C<$perl_scalar> into JSON data and - send it to an outer world - a network or a file content, and so on. - - Your data usually contains UNICODE strings and you want the converted data to be encoded - in UTF-8, you should use C or C module object with C enable. - - print encode_json( $perl_scalar ); # to a network? file? or display? - # or - print $json->utf8->encode( $perl_scalar ); - - If C<$perl_scalar> does not contain UNICODE but C<$encoding>-encoded strings - for some reason, then its characters are regarded as B for perl - (because it does not concern with your $encoding). - You B use C nor C module object with C enable. - Instead of them, you use C module object with C disable. - Note that the resulted text is a UNICODE string but no problem to print it. - - # $perl_scalar contains $encoding encoded string values - $unicode_json_text = $json->utf8(0)->encode( $perl_scalar ); - # $unicode_json_text consists of characters less than 0x100 - print $unicode_json_text; - - Or C all string values and C: - - $perl_scalar->{ foo } = decode( $encoding, $perl_scalar->{ foo } ); - # ... do it to each string values, then encode_json - $json_text = encode_json( $perl_scalar ); - - This method is a proper way but probably not efficient. - - See to L, L. - - - =head1 METHODS - - Basically, check to L or L. - - =head2 new - - $json = JSON::PP->new - - Rturns a new JSON::PP object that can be used to de/encode JSON - strings. - - All boolean flags described below are by default I. - - The mutators for flags all return the JSON object again and thus calls can - be chained: - - my $json = JSON::PP->new->utf8->space_after->encode({a => [1,2]}) - => {"a": [1, 2]} - - =head2 ascii - - $json = $json->ascii([$enable]) - - $enabled = $json->get_ascii - - If $enable is true (or missing), then the encode method will not generate characters outside - the code range 0..127. Any Unicode characters outside that range will be escaped using either - a single \uXXXX or a double \uHHHH\uLLLLL escape sequence, as per RFC4627. - (See to L). - - In Perl 5.005, there is no character having high value (more than 255). - See to L. - - If $enable is false, then the encode method will not escape Unicode characters unless - required by the JSON syntax or other flags. This results in a faster and more compact format. - - JSON::PP->new->ascii(1)->encode([chr 0x10401]) - => ["\ud801\udc01"] - - =head2 latin1 - - $json = $json->latin1([$enable]) - - $enabled = $json->get_latin1 - - If $enable is true (or missing), then the encode method will encode the resulting JSON - text as latin1 (or iso-8859-1), escaping any characters outside the code range 0..255. - - If $enable is false, then the encode method will not escape Unicode characters - unless required by the JSON syntax or other flags. - - JSON::XS->new->latin1->encode (["\x{89}\x{abc}"] - => ["\x{89}\\u0abc"] # (perl syntax, U+abc escaped, U+89 not) - - See to L. - - =head2 utf8 - - $json = $json->utf8([$enable]) - - $enabled = $json->get_utf8 - - If $enable is true (or missing), then the encode method will encode the JSON result - into UTF-8, as required by many protocols, while the decode method expects to be handled - an UTF-8-encoded string. Please note that UTF-8-encoded strings do not contain any - characters outside the range 0..255, they are thus useful for bytewise/binary I/O. - - (In Perl 5.005, any character outside the range 0..255 does not exist. - See to L.) - - In future versions, enabling this option might enable autodetection of the UTF-16 and UTF-32 - encoding families, as described in RFC4627. - - If $enable is false, then the encode method will return the JSON string as a (non-encoded) - Unicode string, while decode expects thus a Unicode string. Any decoding or encoding - (e.g. to UTF-8 or UTF-16) needs to be done yourself, e.g. using the Encode module. - - Example, output UTF-16BE-encoded JSON: - - use Encode; - $jsontext = encode "UTF-16BE", JSON::PP->new->encode ($object); - - Example, decode UTF-32LE-encoded JSON: - - use Encode; - $object = JSON::PP->new->decode (decode "UTF-32LE", $jsontext); - - - =head2 pretty - - $json = $json->pretty([$enable]) - - This enables (or disables) all of the C, C and - C flags in one call to generate the most readable - (or most compact) form possible. - - Equivalent to: - - $json->indent->space_before->space_after - - =head2 indent - - $json = $json->indent([$enable]) - - $enabled = $json->get_indent - - The default indent space length is three. - You can use C to change the length. - - =head2 space_before - - $json = $json->space_before([$enable]) - - $enabled = $json->get_space_before - - If C<$enable> is true (or missing), then the C method will add an extra - optional space before the C<:> separating keys from values in JSON objects. - - If C<$enable> is false, then the C method will not add any extra - space at those places. - - This setting has no effect when decoding JSON texts. - - Example, space_before enabled, space_after and indent disabled: - - {"key" :"value"} - - =head2 space_after - - $json = $json->space_after([$enable]) - - $enabled = $json->get_space_after - - If C<$enable> is true (or missing), then the C method will add an extra - optional space after the C<:> separating keys from values in JSON objects - and extra whitespace after the C<,> separating key-value pairs and array - members. - - If C<$enable> is false, then the C method will not add any extra - space at those places. - - This setting has no effect when decoding JSON texts. - - Example, space_before and indent disabled, space_after enabled: - - {"key": "value"} - - =head2 relaxed - - $json = $json->relaxed([$enable]) - - $enabled = $json->get_relaxed - - If C<$enable> is true (or missing), then C will accept some - extensions to normal JSON syntax (see below). C will not be - affected in anyway. I. I suggest only to use this option to - parse application-specific files written by humans (configuration files, - resource files etc.) - - If C<$enable> is false (the default), then C will only accept - valid JSON texts. - - Currently accepted extensions are: - - =over 4 - - =item * list items can have an end-comma - - JSON I array elements and key-value pairs with commas. This - can be annoying if you write JSON texts manually and want to be able to - quickly append elements, so this extension accepts comma at the end of - such items not just between them: - - [ - 1, - 2, <- this comma not normally allowed - ] - { - "k1": "v1", - "k2": "v2", <- this comma not normally allowed - } - - =item * shell-style '#'-comments - - Whenever JSON allows whitespace, shell-style comments are additionally - allowed. They are terminated by the first carriage-return or line-feed - character, after which more white-space and comments are allowed. - - [ - 1, # this comment not allowed in JSON - # neither this one... - ] - - =back - - =head2 canonical - - $json = $json->canonical([$enable]) - - $enabled = $json->get_canonical - - If C<$enable> is true (or missing), then the C method will output JSON objects - by sorting their keys. This is adding a comparatively high overhead. - - If C<$enable> is false, then the C method will output key-value - pairs in the order Perl stores them (which will likely change between runs - of the same script). - - This option is useful if you want the same data structure to be encoded as - the same JSON text (given the same overall settings). If it is disabled, - the same hash might be encoded differently even if contains the same data, - as key-value pairs have no inherent ordering in Perl. - - This setting has no effect when decoding JSON texts. - - If you want your own sorting routine, you can give a code referece - or a subroutine name to C. See to C. - - =head2 allow_nonref - - $json = $json->allow_nonref([$enable]) - - $enabled = $json->get_allow_nonref - - If C<$enable> is true (or missing), then the C method can convert a - non-reference into its corresponding string, number or null JSON value, - which is an extension to RFC4627. Likewise, C will accept those JSON - values instead of croaking. - - If C<$enable> is false, then the C method will croak if it isn't - passed an arrayref or hashref, as JSON texts must either be an object - or array. Likewise, C will croak if given something that is not a - JSON object or array. - - JSON::PP->new->allow_nonref->encode ("Hello, World!") - => "Hello, World!" - - =head2 allow_unknown - - $json = $json->allow_unknown ([$enable]) - - $enabled = $json->get_allow_unknown - - If $enable is true (or missing), then "encode" will *not* throw an - exception when it encounters values it cannot represent in JSON (for - example, filehandles) but instead will encode a JSON "null" value. - Note that blessed objects are not included here and are handled - separately by c. - - If $enable is false (the default), then "encode" will throw an - exception when it encounters anything it cannot encode as JSON. - - This option does not affect "decode" in any way, and it is - recommended to leave it off unless you know your communications - partner. - - =head2 allow_blessed - - $json = $json->allow_blessed([$enable]) - - $enabled = $json->get_allow_blessed - - If C<$enable> is true (or missing), then the C method will not - barf when it encounters a blessed reference. Instead, the value of the - B option will decide whether C (C - disabled or no C method found) or a representation of the - object (C enabled and C method found) is being - encoded. Has no effect on C. - - If C<$enable> is false (the default), then C will throw an - exception when it encounters a blessed object. - - =head2 convert_blessed - - $json = $json->convert_blessed([$enable]) - - $enabled = $json->get_convert_blessed - - If C<$enable> is true (or missing), then C, upon encountering a - blessed object, will check for the availability of the C method - on the object's class. If found, it will be called in scalar context - and the resulting scalar will be encoded instead of the object. If no - C method is found, the value of C will decide what - to do. - - The C method may safely call die if it wants. If C - returns other blessed objects, those will be handled in the same - way. C must take care of not causing an endless recursion cycle - (== crash) in this case. The name of C was chosen because other - methods called by the Perl core (== not by the user of the object) are - usually in upper case letters and to avoid collisions with the C - function or method. - - This setting does not yet influence C in any way. - - If C<$enable> is false, then the C setting will decide what - to do when a blessed object is found. - - =head2 filter_json_object - - $json = $json->filter_json_object([$coderef]) - - When C<$coderef> is specified, it will be called from C each - time it decodes a JSON object. The only argument passed to the coderef - is a reference to the newly-created hash. If the code references returns - a single scalar (which need not be a reference), this value - (i.e. a copy of that scalar to avoid aliasing) is inserted into the - deserialised data structure. If it returns an empty list - (NOTE: I C, which is a valid scalar), the original deserialised - hash will be inserted. This setting can slow down decoding considerably. - - When C<$coderef> is omitted or undefined, any existing callback will - be removed and C will not change the deserialised hash in any - way. - - Example, convert all JSON objects into the integer 5: - - my $js = JSON::PP->new->filter_json_object (sub { 5 }); - # returns [5] - $js->decode ('[{}]'); # the given subroutine takes a hash reference. - # throw an exception because allow_nonref is not enabled - # so a lone 5 is not allowed. - $js->decode ('{"a":1, "b":2}'); - - =head2 filter_json_single_key_object - - $json = $json->filter_json_single_key_object($key [=> $coderef]) - - Works remotely similar to C, but is only called for - JSON objects having a single key named C<$key>. - - This C<$coderef> is called before the one specified via - C, if any. It gets passed the single value in the JSON - object. If it returns a single value, it will be inserted into the data - structure. If it returns nothing (not even C but the empty list), - the callback from C will be called next, as if no - single-key callback were specified. - - If C<$coderef> is omitted or undefined, the corresponding callback will be - disabled. There can only ever be one callback for a given key. - - As this callback gets called less often then the C - one, decoding speed will not usually suffer as much. Therefore, single-key - objects make excellent targets to serialise Perl objects into, especially - as single-key JSON objects are as close to the type-tagged value concept - as JSON gets (it's basically an ID/VALUE tuple). Of course, JSON does not - support this in any way, so you need to make sure your data never looks - like a serialised Perl hash. - - Typical names for the single object key are C<__class_whatever__>, or - C<$__dollars_are_rarely_used__$> or C<}ugly_brace_placement>, or even - things like C<__class_md5sum(classname)__>, to reduce the risk of clashing - with real hashes. - - Example, decode JSON objects of the form C<< { "__widget__" => } >> - into the corresponding C<< $WIDGET{} >> object: - - # return whatever is in $WIDGET{5}: - JSON::PP - ->new - ->filter_json_single_key_object (__widget__ => sub { - $WIDGET{ $_[0] } - }) - ->decode ('{"__widget__": 5') - - # this can be used with a TO_JSON method in some "widget" class - # for serialisation to json: - sub WidgetBase::TO_JSON { - my ($self) = @_; - - unless ($self->{id}) { - $self->{id} = ..get..some..id..; - $WIDGET{$self->{id}} = $self; - } - - { __widget__ => $self->{id} } - } - - =head2 shrink - - $json = $json->shrink([$enable]) - - $enabled = $json->get_shrink - - In JSON::XS, this flag resizes strings generated by either - C or C to their minimum size possible. - It will also try to downgrade any strings to octet-form if possible. - - In JSON::PP, it is noop about resizing strings but tries - C to the returned string by C. - See to L. - - See to L - - =head2 max_depth - - $json = $json->max_depth([$maximum_nesting_depth]) - - $max_depth = $json->get_max_depth - - Sets the maximum nesting level (default C<512>) accepted while encoding - or decoding. If a higher nesting level is detected in JSON text or a Perl - data structure, then the encoder and decoder will stop and croak at that - point. - - Nesting level is defined by number of hash- or arrayrefs that the encoder - needs to traverse to reach a given point or the number of C<{> or C<[> - characters without their matching closing parenthesis crossed to reach a - given character in a string. - - If no argument is given, the highest possible setting will be used, which - is rarely useful. - - See L for more info on why this is useful. - - When a large value (100 or more) was set and it de/encodes a deep nested object/text, - it may raise a warning 'Deep recursion on subroutin' at the perl runtime phase. - - =head2 max_size - - $json = $json->max_size([$maximum_string_size]) - - $max_size = $json->get_max_size - - Set the maximum length a JSON text may have (in bytes) where decoding is - being attempted. The default is C<0>, meaning no limit. When C - is called on a string that is longer then this many bytes, it will not - attempt to decode the string but throw an exception. This setting has no - effect on C (yet). - - If no argument is given, the limit check will be deactivated (same as when - C<0> is specified). - - See L for more info on why this is useful. - - =head2 encode - - $json_text = $json->encode($perl_scalar) - - Converts the given Perl data structure (a simple scalar or a reference - to a hash or array) to its JSON representation. Simple scalars will be - converted into JSON string or number sequences, while references to arrays - become JSON arrays and references to hashes become JSON objects. Undefined - Perl values (e.g. C) become JSON C values. - References to the integers C<0> and C<1> are converted into C and C. - - =head2 decode - - $perl_scalar = $json->decode($json_text) - - The opposite of C: expects a JSON text and tries to parse it, - returning the resulting simple scalar or reference. Croaks on error. - - JSON numbers and strings become simple Perl scalars. JSON arrays become - Perl arrayrefs and JSON objects become Perl hashrefs. C becomes - C<1> (C), C becomes C<0> (C) and - C becomes C. - - =head2 decode_prefix - - ($perl_scalar, $characters) = $json->decode_prefix($json_text) - - This works like the C method, but instead of raising an exception - when there is trailing garbage after the first JSON object, it will - silently stop parsing there and return the number of characters consumed - so far. - - JSON->new->decode_prefix ("[1] the tail") - => ([], 3) - - =head1 INCREMENTAL PARSING - - Most of this section are copied and modified from L. - - In some cases, there is the need for incremental parsing of JSON texts. - This module does allow you to parse a JSON stream incrementally. - It does so by accumulating text until it has a full JSON object, which - it then can decode. This process is similar to using C - to see if a full JSON object is available, but is much more efficient - (and can be implemented with a minimum of method calls). - - This module will only attempt to parse the JSON text once it is sure it - has enough text to get a decisive result, using a very simple but - truly incremental parser. This means that it sometimes won't stop as - early as the full parser, for example, it doesn't detect parenthese - mismatches. The only thing it guarantees is that it starts decoding as - soon as a syntactically valid JSON text has been seen. This means you need - to set resource limits (e.g. C) to ensure the parser will stop - parsing in the presence if syntax errors. - - The following methods implement this incremental parser. - - =head2 incr_parse - - $json->incr_parse( [$string] ) # void context - - $obj_or_undef = $json->incr_parse( [$string] ) # scalar context - - @obj_or_empty = $json->incr_parse( [$string] ) # list context - - This is the central parsing function. It can both append new text and - extract objects from the stream accumulated so far (both of these - functions are optional). - - If C<$string> is given, then this string is appended to the already - existing JSON fragment stored in the C<$json> object. - - After that, if the function is called in void context, it will simply - return without doing anything further. This can be used to add more text - in as many chunks as you want. - - If the method is called in scalar context, then it will try to extract - exactly I JSON object. If that is successful, it will return this - object, otherwise it will return C. If there is a parse error, - this method will croak just as C would do (one can then use - C to skip the errornous part). This is the most common way of - using the method. - - And finally, in list context, it will try to extract as many objects - from the stream as it can find and return them, or the empty list - otherwise. For this to work, there must be no separators between the JSON - objects or arrays, instead they must be concatenated back-to-back. If - an error occurs, an exception will be raised as in the scalar context - case. Note that in this case, any previously-parsed JSON texts will be - lost. - - Example: Parse some JSON arrays/objects in a given string and return them. - - my @objs = JSON->new->incr_parse ("[5][7][1,2]"); - - =head2 incr_text - - $lvalue_string = $json->incr_text - - This method returns the currently stored JSON fragment as an lvalue, that - is, you can manipulate it. This I works when a preceding call to - C in I successfully returned an object. Under - all other circumstances you must not call this function (I mean it. - although in simple tests it might actually work, it I fail under - real world conditions). As a special exception, you can also call this - method before having parsed anything. - - This function is useful in two cases: a) finding the trailing text after a - JSON object or b) parsing multiple JSON objects separated by non-JSON text - (such as commas). - - $json->incr_text =~ s/\s*,\s*//; - - In Perl 5.005, C attribute is not available. - You must write codes like the below: - - $string = $json->incr_text; - $string =~ s/\s*,\s*//; - $json->incr_text( $string ); - - =head2 incr_skip - - $json->incr_skip - - This will reset the state of the incremental parser and will remove the - parsed text from the input buffer. This is useful after C - died, in which case the input buffer and incremental parser state is left - unchanged, to skip the text parsed so far and to reset the parse state. - - =head2 incr_reset - - $json->incr_reset - - This completely resets the incremental parser, that is, after this call, - it will be as if the parser had never parsed anything. - - This is useful if you want ot repeatedly parse JSON objects and want to - ignore any trailing data, which means you have to reset the parser after - each successful decode. - - See to L for examples. - - - =head1 JSON::PP OWN METHODS - - =head2 allow_singlequote - - $json = $json->allow_singlequote([$enable]) - - If C<$enable> is true (or missing), then C will accept - JSON strings quoted by single quotations that are invalid JSON - format. - - $json->allow_singlequote->decode({"foo":'bar'}); - $json->allow_singlequote->decode({'foo':"bar"}); - $json->allow_singlequote->decode({'foo':'bar'}); - - As same as the C option, this option may be used to parse - application-specific files written by humans. - - - =head2 allow_barekey - - $json = $json->allow_barekey([$enable]) - - If C<$enable> is true (or missing), then C will accept - bare keys of JSON object that are invalid JSON format. - - As same as the C option, this option may be used to parse - application-specific files written by humans. - - $json->allow_barekey->decode('{foo:"bar"}'); - - =head2 allow_bignum - - $json = $json->allow_bignum([$enable]) - - If C<$enable> is true (or missing), then C will convert - the big integer Perl cannot handle as integer into a L - object and convert a floating number (any) into a L. - - On the contary, C converts C objects and C - objects into JSON numbers with C enable. - - $json->allow_nonref->allow_blessed->allow_bignum; - $bigfloat = $json->decode('2.000000000000000000000000001'); - print $json->encode($bigfloat); - # => 2.000000000000000000000000001 - - See to L aboout the normal conversion of JSON number. - - =head2 loose - - $json = $json->loose([$enable]) - - The unescaped [\x00-\x1f\x22\x2f\x5c] strings are invalid in JSON strings - and the module doesn't allow to C to these (except for \x2f). - If C<$enable> is true (or missing), then C will accept these - unescaped strings. - - $json->loose->decode(qq|["abc - def"]|); - - See L. - - =head2 escape_slash - - $json = $json->escape_slash([$enable]) - - According to JSON Grammar, I (U+002F) is escaped. But default - JSON::PP (as same as JSON::XS) encodes strings without escaping slash. - - If C<$enable> is true (or missing), then C will escape slashes. - - =head2 indent_length - - $json = $json->indent_length($length) - - JSON::XS indent space length is 3 and cannot be changed. - JSON::PP set the indent space length with the given $length. - The default is 3. The acceptable range is 0 to 15. - - =head2 sort_by - - $json = $json->sort_by($function_name) - $json = $json->sort_by($subroutine_ref) - - If $function_name or $subroutine_ref are set, its sort routine are used - in encoding JSON objects. - - $js = $pc->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($obj); - # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); - - $js = $pc->sort_by('own_sort')->encode($obj); - # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); - - sub JSON::PP::own_sort { $JSON::PP::a cmp $JSON::PP::b } - - As the sorting routine runs in the JSON::PP scope, the given - subroutine name and the special variables C<$a>, C<$b> will begin - 'JSON::PP::'. - - If $integer is set, then the effect is same as C on. - - =head1 INTERNAL - - For developers. - - =over - - =item PP_encode_box - - Returns - - { - depth => $depth, - indent_count => $indent_count, - } - - - =item PP_decode_box - - Returns - - { - text => $text, - at => $at, - ch => $ch, - len => $len, - depth => $depth, - encoding => $encoding, - is_valid_utf8 => $is_valid_utf8, - }; - - =back - - =head1 MAPPING - - This section is copied from JSON::XS and modified to C. - JSON::XS and JSON::PP mapping mechanisms are almost equivalent. - - See to L. - - =head2 JSON -> PERL - - =over 4 - - =item object - - A JSON object becomes a reference to a hash in Perl. No ordering of object - keys is preserved (JSON does not preserver object key ordering itself). - - =item array - - A JSON array becomes a reference to an array in Perl. - - =item string - - A JSON string becomes a string scalar in Perl - Unicode codepoints in JSON - are represented by the same codepoints in the Perl string, so no manual - decoding is necessary. - - =item number - - A JSON number becomes either an integer, numeric (floating point) or - string scalar in perl, depending on its range and any fractional parts. On - the Perl level, there is no difference between those as Perl handles all - the conversion details, but an integer may take slightly less memory and - might represent more values exactly than floating point numbers. - - If the number consists of digits only, C will try to represent - it as an integer value. If that fails, it will try to represent it as - a numeric (floating point) value if that is possible without loss of - precision. Otherwise it will preserve the number as a string value (in - which case you lose roundtripping ability, as the JSON number will be - re-encoded toa JSON string). - - Numbers containing a fractional or exponential part will always be - represented as numeric (floating point) values, possibly at a loss of - precision (in which case you might lose perfect roundtripping ability, but - the JSON number will still be re-encoded as a JSON number). - - Note that precision is not accuracy - binary floating point values cannot - represent most decimal fractions exactly, and when converting from and to - floating point, C only guarantees precision up to but not including - the leats significant bit. - - When C is enable, the big integers - and the numeric can be optionally converted into L and - L objects. - - =item true, false - - These JSON atoms become C and C, - respectively. They are overloaded to act almost exactly like the numbers - C<1> and C<0>. You can check wether a scalar is a JSON boolean by using - the C function. - - print JSON::PP::true . "\n"; - => true - print JSON::PP::true + 1; - => 1 - - ok(JSON::true eq '1'); - ok(JSON::true == 1); - - C will install these missing overloading features to the backend modules. - - - =item null - - A JSON null atom becomes C in Perl. - - C returns C. - - =back - - - =head2 PERL -> JSON - - The mapping from Perl to JSON is slightly more difficult, as Perl is a - truly typeless language, so we can only guess which JSON type is meant by - a Perl value. - - =over 4 - - =item hash references - - Perl hash references become JSON objects. As there is no inherent ordering - in hash keys (or JSON objects), they will usually be encoded in a - pseudo-random order that can change between runs of the same program but - stays generally the same within a single run of a program. C - optionally sort the hash keys (determined by the I flag), so - the same datastructure will serialise to the same JSON text (given same - settings and version of JSON::XS), but this incurs a runtime overhead - and is only rarely useful, e.g. when you want to compare some JSON text - against another for equality. - - - =item array references - - Perl array references become JSON arrays. - - =item other references - - Other unblessed references are generally not allowed and will cause an - exception to be thrown, except for references to the integers C<0> and - C<1>, which get turned into C and C atoms in JSON. You can - also use C and C to improve readability. - - to_json [\0,JSON::PP::true] # yields [false,true] - - =item JSON::PP::true, JSON::PP::false, JSON::PP::null - - These special values become JSON true and JSON false values, - respectively. You can also use C<\1> and C<\0> directly if you want. - - JSON::PP::null returns C. - - =item blessed objects - - Blessed objects are not directly representable in JSON. See the - C and C methods on various options on - how to deal with this: basically, you can choose between throwing an - exception, encoding the reference as if it weren't blessed, or provide - your own serialiser method. - - See to L. - - =item simple scalars - - Simple Perl scalars (any scalar that is not a reference) are the most - difficult objects to encode: JSON::XS and JSON::PP will encode undefined scalars as - JSON C values, scalars that have last been used in a string context - before encoding as JSON strings, and anything else as number value: - - # dump as number - encode_json [2] # yields [2] - encode_json [-3.0e17] # yields [-3e+17] - my $value = 5; encode_json [$value] # yields [5] - - # used as string, so dump as string - print $value; - encode_json [$value] # yields ["5"] - - # undef becomes null - encode_json [undef] # yields [null] - - You can force the type to be a string by stringifying it: - - my $x = 3.1; # some variable containing a number - "$x"; # stringified - $x .= ""; # another, more awkward way to stringify - print $x; # perl does it for you, too, quite often - - You can force the type to be a number by numifying it: - - my $x = "3"; # some variable containing a string - $x += 0; # numify it, ensuring it will be dumped as a number - $x *= 1; # same thing, the choise is yours. - - You can not currently force the type in other, less obscure, ways. - - Note that numerical precision has the same meaning as under Perl (so - binary to decimal conversion follows the same rules as in Perl, which - can differ to other languages). Also, your perl interpreter might expose - extensions to the floating point numbers of your platform, such as - infinities or NaN's - these cannot be represented in JSON, and it is an - error to pass those in. - - =item Big Number - - When C is enable, - C converts C objects and C - objects into JSON numbers. - - - =back - - =head1 UNICODE HANDLING ON PERLS - - If you do not know about Unicode on Perl well, - please check L. - - =head2 Perl 5.8 and later - - Perl can handle Unicode and the JSON::PP de/encode methods also work properly. - - $json->allow_nonref->encode(chr hex 3042); - $json->allow_nonref->encode(chr hex 12345); - - Reuturns C<"\u3042"> and C<"\ud808\udf45"> respectively. - - $json->allow_nonref->decode('"\u3042"'); - $json->allow_nonref->decode('"\ud808\udf45"'); - - Returns UTF-8 encoded strings with UTF8 flag, regarded as C and C. - - Note that the versions from Perl 5.8.0 to 5.8.2, Perl built-in C was broken, - so JSON::PP wraps the C with a subroutine. Thus JSON::PP works slow in the versions. - - - =head2 Perl 5.6 - - Perl can handle Unicode and the JSON::PP de/encode methods also work. - - =head2 Perl 5.005 - - Perl 5.005 is a byte sementics world -- all strings are sequences of bytes. - That means the unicode handling is not available. - - In encoding, - - $json->allow_nonref->encode(chr hex 3042); # hex 3042 is 12354. - $json->allow_nonref->encode(chr hex 12345); # hex 12345 is 74565. - - Returns C and C, as C takes a value more than 255, it treats - as C<$value % 256>, so the above codes are equivalent to : - - $json->allow_nonref->encode(chr 66); - $json->allow_nonref->encode(chr 69); - - In decoding, - - $json->decode('"\u00e3\u0081\u0082"'); - - The returned is a byte sequence C<0xE3 0x81 0x82> for UTF-8 encoded - japanese character (C). - And if it is represented in Unicode code point, C. - - Next, - - $json->decode('"\u3042"'); - - We ordinary expect the returned value is a Unicode character C. - But here is 5.005 world. This is C<0xE3 0x81 0x82>. - - $json->decode('"\ud808\udf45"'); - - This is not a character C but bytes - C<0xf0 0x92 0x8d 0x85>. - - - =head1 TODO - - =over - - =item speed - - =item memory saving - - =back - - - =head1 SEE ALSO - - Most of the document are copied and modified from JSON::XS doc. - - L - - RFC4627 (L) - - =head1 AUTHOR - - Makamaka Hannyaharamitu, Emakamaka[at]cpan.orgE - - - =head1 COPYRIGHT AND LICENSE - - Copyright 2007-2014 by Makamaka Hannyaharamitu - - This library is free software; you can redistribute it and/or modify - it under the same terms as Perl itself. - - =cut -JSON_PP - -$fatpacked{"JSON/PP/Boolean.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'JSON_PP_BOOLEAN'; - =head1 NAME - - JSON::PP::Boolean - dummy module providing JSON::PP::Boolean - - =head1 SYNOPSIS - - # do not "use" yourself - - =head1 DESCRIPTION - - This module exists only to provide overload resolution for Storable and similar modules. See - L for more info about this class. - - =cut - - use JSON::PP (); - use strict; - - 1; - - =head1 AUTHOR - - This idea is from L written by Marc Lehmann - - =cut - -JSON_PP_BOOLEAN - -$fatpacked{"Module/CPANfile.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE'; - package Module::CPANfile; - use strict; - use warnings; - use Cwd; - use Carp (); - use Module::CPANfile::Environment; - use Module::CPANfile::Requirement; - - our $VERSION = '1.1000'; - - sub new { - my($class, $file) = @_; - bless {}, $class; - } - - sub load { - my($proto, $file) = @_; - - my $self = ref $proto ? $proto : $proto->new; - $self->parse($file || Cwd::abs_path('cpanfile')); - $self; - } - - sub save { - my($self, $path) = @_; - - open my $out, ">", $path or die "$path: $!"; - print {$out} $self->to_string; - } - - sub parse { - my($self, $file) = @_; - - my $code = do { - open my $fh, "<", $file or die "$file: $!"; - join '', <$fh>; - }; - - my $env = Module::CPANfile::Environment->new($file); - $env->parse($code) or die $@; - - $self->{_mirrors} = $env->mirrors; - $self->{_prereqs} = $env->prereqs; - } - - sub from_prereqs { - my($proto, $prereqs) = @_; - - my $self = $proto->new; - $self->{_prereqs} = Module::CPANfile::Prereqs->from_cpan_meta($prereqs); - - $self; - } - - sub mirrors { - my $self = shift; - $self->{_mirrors} || []; - } - - sub features { - my $self = shift; - map $self->feature($_), $self->{_prereqs}->identifiers; - } - - sub feature { - my($self, $identifier) = @_; - $self->{_prereqs}->feature($identifier); - } - - sub prereq { shift->prereqs } - - sub prereqs { - my $self = shift; - $self->{_prereqs}->as_cpan_meta; - } - - sub merged_requirements { - my $self = shift; - $self->{_prereqs}->merged_requirements; - } - - sub effective_prereqs { - my($self, $features) = @_; - $self->prereqs_with(@{$features || []}); - } - - sub prereqs_with { - my($self, @feature_identifiers) = @_; - - my $prereqs = $self->prereqs; - my @others = map { $self->feature($_)->prereqs } @feature_identifiers; - - $prereqs->with_merged_prereqs(\@others); - } - - sub prereq_specs { - my $self = shift; - $self->prereqs->as_string_hash; - } - - sub prereq_for_module { - my($self, $module) = @_; - $self->{_prereqs}->find($module); - } - - sub options_for_module { - my($self, $module) = @_; - my $prereq = $self->prereq_for_module($module) or return; - $prereq->requirement->options; - } - - sub merge_meta { - my($self, $file, $version) = @_; - - require CPAN::Meta; - - $version ||= $file =~ /\.yml$/ ? '1.4' : '2'; - - my $prereq = $self->prereqs; - - my $meta = CPAN::Meta->load_file($file); - my $prereqs_hash = $prereq->with_merged_prereqs($meta->effective_prereqs)->as_string_hash; - my $struct = { %{$meta->as_struct}, prereqs => $prereqs_hash }; - - CPAN::Meta->new($struct)->save($file, { version => $version }); - } - - sub _dump { - my $str = shift; - require Data::Dumper; - chomp(my $value = Data::Dumper->new([$str])->Terse(1)->Dump); - $value; - } - - sub to_string { - my($self, $include_empty) = @_; - - my $mirrors = $self->mirrors; - my $prereqs = $self->prereq_specs; - - my $code = ''; - $code .= $self->_dump_mirrors($mirrors); - $code .= $self->_dump_prereqs($prereqs, $include_empty); - - for my $feature ($self->features) { - $code .= sprintf "feature %s, %s => sub {\n", _dump($feature->{identifier}), _dump($feature->{description}); - $code .= $self->_dump_prereqs($feature->{spec}, $include_empty, 4); - $code .= "}\n\n"; - } - - $code =~ s/\n+$/\n/s; - $code; - } - - sub _dump_mirrors { - my($self, $mirrors) = @_; - - my $code = ""; - - for my $url (@$mirrors) { - $code .= "mirror '$url';\n"; - } - - $code =~ s/\n+$/\n/s; - $code; - } - - sub _dump_prereqs { - my($self, $prereqs, $include_empty, $base_indent) = @_; - - my $code = ''; - for my $phase (qw(runtime configure build test develop)) { - my $indent = $phase eq 'runtime' ? '' : ' '; - $indent = (' ' x ($base_indent || 0)) . $indent; - - my($phase_code, $requirements); - $phase_code .= "on $phase => sub {\n" unless $phase eq 'runtime'; - - for my $type (qw(requires recommends suggests conflicts)) { - for my $mod (sort keys %{$prereqs->{$phase}{$type}}) { - my $ver = $prereqs->{$phase}{$type}{$mod}; - $phase_code .= $ver eq '0' - ? "${indent}$type '$mod';\n" - : "${indent}$type '$mod', '$ver';\n"; - $requirements++; - } - } - - $phase_code .= "\n" unless $requirements; - $phase_code .= "};\n" unless $phase eq 'runtime'; - - $code .= $phase_code . "\n" if $requirements or $include_empty; - } - - $code =~ s/\n+$/\n/s; - $code; - } - - 1; - - __END__ - - =head1 NAME - - Module::CPANfile - Parse cpanfile - - =head1 SYNOPSIS - - use Module::CPANfile; - - my $file = Module::CPANfile->load("cpanfile"); - my $prereqs = $file->prereqs; # CPAN::Meta::Prereqs object - - my @features = $file->features; # CPAN::Meta::Feature objects - my $merged_prereqs = $file->prereqs_with(@identifiers); # CPAN::Meta::Prereqs - - $file->merge_meta('MYMETA.json'); - - =head1 DESCRIPTION - - Module::CPANfile is a tool to handle L format to load application - specific dependencies, not just for CPAN distributions. - - =head1 METHODS - - =over 4 - - =item load - - $file = Module::CPANfile->load; - $file = Module::CPANfile->load('cpanfile'); - - Load and parse a cpanfile. By default it tries to load C in - the current directory, unless you pass the path to its argument. - - =item from_prereqs - - $file = Module::CPANfile->from_prereqs({ - runtime => { requires => { DBI => '1.000' } }, - }); - - Creates a new Module::CPANfile object from prereqs hash you can get - via L's C, or L' - C. - - # read MYMETA, then feed the prereqs to create Module::CPANfile - my $meta = CPAN::Meta->load_file('MYMETA.json'); - my $file = Module::CPANfile->from_prereqs($meta->prereqs); - - # load cpanfile, then recreate it with round-trip - my $file = Module::CPANfile->load('cpanfile'); - $file = Module::CPANfile->from_prereqs($file->prereq_specs); - # or $file->prereqs->as_string_hash - - =item prereqs - - Returns L object out of the parsed cpanfile. - - =item prereq_specs - - Returns a hash reference that should be passed to C<< CPAN::Meta::Prereqs->new >>. - - =item features - - Returns a list of features available in the cpanfile as L. - - =item prereqs_with(@identifiers), effective_prereqs(\@identifiers) - - Returns L object, with merged prereqs for - features identified with the C<@identifiers>. - - =item to_string($include_empty) - - $file->to_string; - $file->to_string(1); - - Returns a canonical string (code) representation for cpanfile. Useful - if you want to convert L to a new cpanfile. - - # read MYMETA's prereqs and print cpanfile representation of it - my $meta = CPAN::Meta->load_file('MYMETA.json'); - my $file = Module::CPANfile->from_prereqs($meta->prereqs); - print $file->to_string; - - By default, it omits the phase where there're no modules - registered. If you pass the argument of a true value, it will print - them as well. - - =item save - - $file->save('cpanfile'); - - Saves the currently loaded prereqs as a new C by calling - C. Beware B. Taking a backup or giving - warnings to users is a caller's responsibility. - - # Read MYMETA.json and creates a new cpanfile - my $meta = CPAN::Meta->load_file('MYMETA.json'); - my $file = Module::CPANfile->from_prereqs($meta->prereqs); - $file->save('cpanfile'); - - =item merge_meta - - $file->merge_meta('META.yml'); - $file->merge_meta('MYMETA.json', '2.0'); - - Merge the effective prereqs with Meta specification loaded from the - given META file, using CPAN::Meta. You can specify the META spec - version in the second argument, which defaults to 1.4 in case the - given file is YAML, and 2 if it is JSON. - - =back - - =head1 AUTHOR - - Tatsuhiko Miyagawa - - =head1 SEE ALSO - - L, L, L - - =cut -MODULE_CPANFILE - -$fatpacked{"Module/CPANfile/Environment.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_ENVIRONMENT'; - package Module::CPANfile::Environment; - use strict; - use warnings; - use Module::CPANfile::Prereqs; - use Carp (); - - my @bindings = qw( - on requires recommends suggests conflicts - feature - osname - mirror - configure_requires build_requires test_requires author_requires - ); - - my $file_id = 1; - - sub new { - my($class, $file) = @_; - bless { - file => $file, - phase => 'runtime', # default phase - feature => undef, - features => {}, - prereqs => Module::CPANfile::Prereqs->new, - mirrors => [], - }, $class; - } - - sub bind { - my $self = shift; - my $pkg = caller; - - for my $binding (@bindings) { - no strict 'refs'; - *{"$pkg\::$binding"} = sub { $self->$binding(@_) }; - } - } - - sub parse { - my($self, $code) = @_; - - my $err; - { - local $@; - $file_id++; - $self->_evaluate(<bind } - - # line 1 "$self->{file}" - $code; - EVAL - $err = $@; - } - - if ($err) { die "Parsing $self->{file} failed: $err" }; - - return 1; - } - - sub _evaluate { - my $_environment = $_[0]; - eval $_[1]; - } - - sub prereqs { $_[0]->{prereqs} } - - sub mirrors { $_[0]->{mirrors} } - - # DSL goes from here - - sub on { - my($self, $phase, $code) = @_; - local $self->{phase} = $phase; - $code->(); - } - - sub feature { - my($self, $identifier, $description, $code) = @_; - - # shortcut: feature identifier => sub { ... } - if (@_ == 3 && ref($description) eq 'CODE') { - $code = $description; - $description = $identifier; - } - - unless (ref $description eq '' && ref $code eq 'CODE') { - Carp::croak("Usage: feature 'identifier', 'Description' => sub { ... }"); - } - - local $self->{feature} = $identifier; - $self->prereqs->add_feature($identifier, $description); - - $code->(); - } - - sub osname { die "TODO" } - - sub mirror { - my($self, $url) = @_; - push @{$self->{mirrors}}, $url; - } - - sub requirement_for { - my($self, $module, @args) = @_; - - my $requirement = 0; - $requirement = shift @args if @args % 2; - - return Module::CPANfile::Requirement->new( - name => $module, - version => $requirement, - @args, - ); - } - - sub requires { - my $self = shift; - $self->add_prereq(requires => @_); - } - - sub recommends { - my $self = shift; - $self->add_prereq(recommends => @_); - } - - sub suggests { - my $self = shift; - $self->add_prereq(suggests => @_); - } - - sub conflicts { - my $self = shift; - $self->add_prereq(conflicts => @_); - } - - sub add_prereq { - my($self, $type, $module, @args) = @_; - - $self->prereqs->add_prereq( - feature => $self->{feature}, - phase => $self->{phase}, - type => $type, - module => $module, - requirement => $self->requirement_for($module, @args), - ); - } - - # Module::Install compatible shortcuts - - sub configure_requires { - my($self, @args) = @_; - $self->on(configure => sub { $self->requires(@args) }); - } - - sub build_requires { - my($self, @args) = @_; - $self->on(build => sub { $self->requires(@args) }); - } - - sub test_requires { - my($self, @args) = @_; - $self->on(test => sub { $self->requires(@args) }); - } - - sub author_requires { - my($self, @args) = @_; - $self->on(develop => sub { $self->requires(@args) }); - } - - 1; - -MODULE_CPANFILE_ENVIRONMENT - -$fatpacked{"Module/CPANfile/Prereq.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_PREREQ'; - package Module::CPANfile::Prereq; - use strict; - - sub new { - my($class, %options) = @_; - bless \%options, $class; - } - - sub feature { $_[0]->{feature} } - sub phase { $_[0]->{phase} } - sub type { $_[0]->{type} } - sub module { $_[0]->{module} } - sub requirement { $_[0]->{requirement} } - - sub match_feature { - my($self, $identifier) = @_; - no warnings 'uninitialized'; - $self->feature eq $identifier; - } - - 1; -MODULE_CPANFILE_PREREQ - -$fatpacked{"Module/CPANfile/Prereqs.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_PREREQS'; - package Module::CPANfile::Prereqs; - use strict; - use Carp (); - use CPAN::Meta::Feature; - use Module::CPANfile::Prereq; - - sub from_cpan_meta { - my($class, $prereqs) = @_; - - my $self = $class->new; - - for my $phase (keys %$prereqs) { - for my $type (keys %{ $prereqs->{$phase} }) { - while (my($module, $requirement) = each %{ $prereqs->{$phase}{$type} }) { - $self->add_prereq( - phase => $phase, - type => $type, - module => $module, - requirement => Module::CPANfile::Requirement->new(name => $module, version => $requirement), - ); - } - } - } - - $self; - } - - sub new { - my $class = shift; - bless { - prereqs => [], - features => {}, - }, $class; - } - - sub add_feature { - my($self, $identifier, $description) = @_; - $self->{features}{$identifier} = { description => $description }; - } - - sub add_prereq { - my($self, %args) = @_; - $self->add( Module::CPANfile::Prereq->new(%args) ); - } - - sub add { - my($self, $prereq) = @_; - push @{$self->{prereqs}}, $prereq; - } - - sub as_cpan_meta { - my $self = shift; - $self->{cpanmeta} ||= $self->build_cpan_meta; - } - - sub build_cpan_meta { - my($self, $identifier) = @_; - - my $prereq_spec = {}; - $self->prereq_each($identifier, sub { - my $prereq = shift; - $prereq_spec->{$prereq->phase}{$prereq->type}{$prereq->module} = $prereq->requirement->version; - }); - - CPAN::Meta::Prereqs->new($prereq_spec); - } - - sub prereq_each { - my($self, $identifier, $code) = @_; - - for my $prereq (@{$self->{prereqs}}) { - next unless $prereq->match_feature($identifier); - $code->($prereq); - } - } - - sub merged_requirements { - my $self = shift; - - my $reqs = CPAN::Meta::Requirements->new; - for my $prereq (@{$self->{prereqs}}) { - $reqs->add_string_requirement($prereq->module, $prereq->requirement->version); - } - - $reqs; - } - - sub find { - my($self, $module) = @_; - - for my $prereq (@{$self->{prereqs}}) { - return $prereq if $prereq->module eq $module; - } - - return; - } - - sub identifiers { - my $self = shift; - keys %{$self->{features}}; - } - - sub feature { - my($self, $identifier) = @_; - - my $data = $self->{features}{$identifier} - or Carp::croak("Unknown feature '$identifier'"); - - my $prereqs = $self->build_cpan_meta($identifier); - - CPAN::Meta::Feature->new($identifier, { - description => $data->{description}, - prereqs => $prereqs->as_string_hash, - }); - } - - 1; -MODULE_CPANFILE_PREREQS - -$fatpacked{"Module/CPANfile/Requirement.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_CPANFILE_REQUIREMENT'; - package Module::CPANfile::Requirement; - use strict; - - sub new { - my ($class, %args) = @_; - - $args{version} ||= 0; - - bless +{ - name => delete $args{name}, - version => delete $args{version}, - options => \%args, - }, $class; - } - - sub name { $_[0]->{name} } - sub version { $_[0]->{version} } - - sub options { $_[0]->{options} } - - sub has_options { - keys %{$_[0]->{options}} > 0; - } - - 1; -MODULE_CPANFILE_REQUIREMENT - -$fatpacked{"Module/Metadata.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'MODULE_METADATA'; - # -*- mode: cperl; tab-width: 8; indent-tabs-mode: nil; basic-offset: 2 -*- - # vim:ts=8:sw=2:et:sta:sts=2 - package Module::Metadata; # git description: v1.000026-12-g9b12bf1 - - # Adapted from Perl-licensed code originally distributed with - # Module-Build by Ken Williams - - # This module provides routines to gather information about - # perl modules (assuming this may be expanded in the distant - # parrot future to look at other types of modules). - - sub __clean_eval { eval $_[0] } - use strict; - use warnings; - - our $VERSION = '1.000027'; - - use Carp qw/croak/; - use File::Spec; - BEGIN { - # Try really hard to not depend ony any DynaLoaded module, such as IO::File or Fcntl - eval { - require Fcntl; Fcntl->import('SEEK_SET'); 1; - } or *SEEK_SET = sub { 0 } - } - use version 0.87; - BEGIN { - if ($INC{'Log/Contextual.pm'}) { - require "Log/Contextual/WarnLogger.pm"; # Hide from AutoPrereqs - Log::Contextual->import('log_info', - '-default_logger' => Log::Contextual::WarnLogger->new({ env_prefix => 'MODULE_METADATA', }), - ); - } else { - *log_info = sub (&) { warn $_[0]->() }; - } - } - use File::Find qw(find); - - my $V_NUM_REGEXP = qr{v?[0-9._]+}; # crudely, a v-string or decimal - - my $PKG_FIRST_WORD_REGEXP = qr{ # the FIRST word in a package name - [a-zA-Z_] # the first word CANNOT start with a digit - (?: - [\w']? # can contain letters, digits, _, or ticks - \w # But, NO multi-ticks or trailing ticks - )* - }x; - - my $PKG_ADDL_WORD_REGEXP = qr{ # the 2nd+ word in a package name - \w # the 2nd+ word CAN start with digits - (?: - [\w']? # and can contain letters or ticks - \w # But, NO multi-ticks or trailing ticks - )* - }x; - - my $PKG_NAME_REGEXP = qr{ # match a package name - (?: :: )? # a pkg name can start with arisdottle - $PKG_FIRST_WORD_REGEXP # a package word - (?: - (?: :: )+ ### arisdottle (allow one or many times) - $PKG_ADDL_WORD_REGEXP ### a package word - )* # ^ zero, one or many times - (?: - :: # allow trailing arisdottle - )? - }x; - - my $PKG_REGEXP = qr{ # match a package declaration - ^[\s\{;]* # intro chars on a line - package # the word 'package' - \s+ # whitespace - ($PKG_NAME_REGEXP) # a package name - \s* # optional whitespace - ($V_NUM_REGEXP)? # optional version number - \s* # optional whitesapce - [;\{] # semicolon line terminator or block start (since 5.16) - }x; - - my $VARNAME_REGEXP = qr{ # match fully-qualified VERSION name - ([\$*]) # sigil - $ or * - ( - ( # optional leading package name - (?:::|\')? # possibly starting like just :: (a la $::VERSION) - (?:\w+(?:::|\'))* # Foo::Bar:: ... - )? - VERSION - )\b - }x; - - my $VERS_REGEXP = qr{ # match a VERSION definition - (?: - \(\s*$VARNAME_REGEXP\s*\) # with parens - | - $VARNAME_REGEXP # without parens - ) - \s* - =[^=~>] # = but not ==, nor =~, nor => - }x; - - sub new_from_file { - my $class = shift; - my $filename = File::Spec->rel2abs( shift ); - - return undef unless defined( $filename ) && -f $filename; - return $class->_init(undef, $filename, @_); - } - - sub new_from_handle { - my $class = shift; - my $handle = shift; - my $filename = shift; - return undef unless defined($handle) && defined($filename); - $filename = File::Spec->rel2abs( $filename ); - - return $class->_init(undef, $filename, @_, handle => $handle); - - } - - - sub new_from_module { - my $class = shift; - my $module = shift; - my %props = @_; - - $props{inc} ||= \@INC; - my $filename = $class->find_module_by_name( $module, $props{inc} ); - return undef unless defined( $filename ) && -f $filename; - return $class->_init($module, $filename, %props); - } - - { - - my $compare_versions = sub { - my ($v1, $op, $v2) = @_; - $v1 = version->new($v1) - unless UNIVERSAL::isa($v1,'version'); - - my $eval_str = "\$v1 $op \$v2"; - my $result = eval $eval_str; - log_info { "error comparing versions: '$eval_str' $@" } if $@; - - return $result; - }; - - my $normalize_version = sub { - my ($version) = @_; - if ( $version =~ /[=<>!,]/ ) { # logic, not just version - # take as is without modification - } - elsif ( ref $version eq 'version' ) { # version objects - $version = $version->is_qv ? $version->normal : $version->stringify; - } - elsif ( $version =~ /^[^v][^.]*\.[^.]+\./ ) { # no leading v, multiple dots - # normalize string tuples without "v": "1.2.3" -> "v1.2.3" - $version = "v$version"; - } - else { - # leave alone - } - return $version; - }; - - # separate out some of the conflict resolution logic - - my $resolve_module_versions = sub { - my $packages = shift; - - my( $file, $version ); - my $err = ''; - foreach my $p ( @$packages ) { - if ( defined( $p->{version} ) ) { - if ( defined( $version ) ) { - if ( $compare_versions->( $version, '!=', $p->{version} ) ) { - $err .= " $p->{file} ($p->{version})\n"; - } else { - # same version declared multiple times, ignore - } - } else { - $file = $p->{file}; - $version = $p->{version}; - } - } - $file ||= $p->{file} if defined( $p->{file} ); - } - - if ( $err ) { - $err = " $file ($version)\n" . $err; - } - - my %result = ( - file => $file, - version => $version, - err => $err - ); - - return \%result; - }; - - sub provides { - my $class = shift; - - croak "provides() requires key/value pairs \n" if @_ % 2; - my %args = @_; - - croak "provides() takes only one of 'dir' or 'files'\n" - if $args{dir} && $args{files}; - - croak "provides() requires a 'version' argument" - unless defined $args{version}; - - croak "provides() does not support version '$args{version}' metadata" - unless grep { $args{version} eq $_ } qw/1.4 2/; - - $args{prefix} = 'lib' unless defined $args{prefix}; - - my $p; - if ( $args{dir} ) { - $p = $class->package_versions_from_directory($args{dir}); - } - else { - croak "provides() requires 'files' to be an array reference\n" - unless ref $args{files} eq 'ARRAY'; - $p = $class->package_versions_from_directory($args{files}); - } - - # Now, fix up files with prefix - if ( length $args{prefix} ) { # check in case disabled with q{} - $args{prefix} =~ s{/$}{}; - for my $v ( values %$p ) { - $v->{file} = "$args{prefix}/$v->{file}"; - } - } - - return $p - } - - sub package_versions_from_directory { - my ( $class, $dir, $files ) = @_; - - my @files; - - if ( $files ) { - @files = @$files; - } else { - find( { - wanted => sub { - push @files, $_ if -f $_ && /\.pm$/; - }, - no_chdir => 1, - }, $dir ); - } - - # First, we enumerate all packages & versions, - # separating into primary & alternative candidates - my( %prime, %alt ); - foreach my $file (@files) { - my $mapped_filename = File::Spec::Unix->abs2rel( $file, $dir ); - my @path = split( /\//, $mapped_filename ); - (my $prime_package = join( '::', @path )) =~ s/\.pm$//; - - my $pm_info = $class->new_from_file( $file ); - - foreach my $package ( $pm_info->packages_inside ) { - next if $package eq 'main'; # main can appear numerous times, ignore - next if $package eq 'DB'; # special debugging package, ignore - next if grep /^_/, split( /::/, $package ); # private package, ignore - - my $version = $pm_info->version( $package ); - - $prime_package = $package if lc($prime_package) eq lc($package); - if ( $package eq $prime_package ) { - if ( exists( $prime{$package} ) ) { - croak "Unexpected conflict in '$package'; multiple versions found.\n"; - } else { - $mapped_filename = "$package.pm" if lc("$package.pm") eq lc($mapped_filename); - $prime{$package}{file} = $mapped_filename; - $prime{$package}{version} = $version if defined( $version ); - } - } else { - push( @{$alt{$package}}, { - file => $mapped_filename, - version => $version, - } ); - } - } - } - - # Then we iterate over all the packages found above, identifying conflicts - # and selecting the "best" candidate for recording the file & version - # for each package. - foreach my $package ( keys( %alt ) ) { - my $result = $resolve_module_versions->( $alt{$package} ); - - if ( exists( $prime{$package} ) ) { # primary package selected - - if ( $result->{err} ) { - # Use the selected primary package, but there are conflicting - # errors among multiple alternative packages that need to be - # reported - log_info { - "Found conflicting versions for package '$package'\n" . - " $prime{$package}{file} ($prime{$package}{version})\n" . - $result->{err} - }; - - } elsif ( defined( $result->{version} ) ) { - # There is a primary package selected, and exactly one - # alternative package - - if ( exists( $prime{$package}{version} ) && - defined( $prime{$package}{version} ) ) { - # Unless the version of the primary package agrees with the - # version of the alternative package, report a conflict - if ( $compare_versions->( - $prime{$package}{version}, '!=', $result->{version} - ) - ) { - - log_info { - "Found conflicting versions for package '$package'\n" . - " $prime{$package}{file} ($prime{$package}{version})\n" . - " $result->{file} ($result->{version})\n" - }; - } - - } else { - # The prime package selected has no version so, we choose to - # use any alternative package that does have a version - $prime{$package}{file} = $result->{file}; - $prime{$package}{version} = $result->{version}; - } - - } else { - # no alt package found with a version, but we have a prime - # package so we use it whether it has a version or not - } - - } else { # No primary package was selected, use the best alternative - - if ( $result->{err} ) { - log_info { - "Found conflicting versions for package '$package'\n" . - $result->{err} - }; - } - - # Despite possible conflicting versions, we choose to record - # something rather than nothing - $prime{$package}{file} = $result->{file}; - $prime{$package}{version} = $result->{version} - if defined( $result->{version} ); - } - } - - # Normalize versions. Can't use exists() here because of bug in YAML::Node. - # XXX "bug in YAML::Node" comment seems irrelevant -- dagolden, 2009-05-18 - for (grep defined $_->{version}, values %prime) { - $_->{version} = $normalize_version->( $_->{version} ); - } - - return \%prime; - } - } - - - sub _init { - my $class = shift; - my $module = shift; - my $filename = shift; - my %props = @_; - - my $handle = delete $props{handle}; - my( %valid_props, @valid_props ); - @valid_props = qw( collect_pod inc ); - @valid_props{@valid_props} = delete( @props{@valid_props} ); - warn "Unknown properties: @{[keys %props]}\n" if scalar( %props ); - - my %data = ( - module => $module, - filename => $filename, - version => undef, - packages => [], - versions => {}, - pod => {}, - pod_headings => [], - collect_pod => 0, - - %valid_props, - ); - - my $self = bless(\%data, $class); - - if ( not $handle ) { - my $filename = $self->{filename}; - open $handle, '<', $filename - or croak( "Can't open '$filename': $!" ); - - $self->_handle_bom($handle, $filename); - } - $self->_parse_fh($handle); - - unless($self->{module} and length($self->{module})) { - my ($v, $d, $f) = File::Spec->splitpath($self->{filename}); - if($f =~ /\.pm$/) { - $f =~ s/\..+$//; - my @candidates = grep /$f$/, @{$self->{packages}}; - $self->{module} = shift(@candidates); # punt - } - else { - if(grep /main/, @{$self->{packages}}) { - $self->{module} = 'main'; - } - else { - $self->{module} = $self->{packages}[0] || ''; - } - } - } - - $self->{version} = $self->{versions}{$self->{module}} - if defined( $self->{module} ); - - return $self; - } - - # class method - sub _do_find_module { - my $class = shift; - my $module = shift || croak 'find_module_by_name() requires a package name'; - my $dirs = shift || \@INC; - - my $file = File::Spec->catfile(split( /::/, $module)); - foreach my $dir ( @$dirs ) { - my $testfile = File::Spec->catfile($dir, $file); - return [ File::Spec->rel2abs( $testfile ), $dir ] - if -e $testfile and !-d _; # For stuff like ExtUtils::xsubpp - $testfile .= '.pm'; - return [ File::Spec->rel2abs( $testfile ), $dir ] - if -e $testfile; - } - return; - } - - # class method - sub find_module_by_name { - my $found = shift()->_do_find_module(@_) or return; - return $found->[0]; - } - - # class method - sub find_module_dir_by_name { - my $found = shift()->_do_find_module(@_) or return; - return $found->[1]; - } - - - # given a line of perl code, attempt to parse it if it looks like a - # $VERSION assignment, returning sigil, full name, & package name - sub _parse_version_expression { - my $self = shift; - my $line = shift; - - my( $sigil, $variable_name, $package); - if ( $line =~ /$VERS_REGEXP/o ) { - ( $sigil, $variable_name, $package) = $2 ? ( $1, $2, $3 ) : ( $4, $5, $6 ); - if ( $package ) { - $package = ($package eq '::') ? 'main' : $package; - $package =~ s/::$//; - } - } - - return ( $sigil, $variable_name, $package ); - } - - # Look for a UTF-8/UTF-16BE/UTF-16LE BOM at the beginning of the stream. - # If there's one, then skip it and set the :encoding layer appropriately. - sub _handle_bom { - my ($self, $fh, $filename) = @_; - - my $pos = tell $fh; - return unless defined $pos; - - my $buf = ' ' x 2; - my $count = read $fh, $buf, length $buf; - return unless defined $count and $count >= 2; - - my $encoding; - if ( $buf eq "\x{FE}\x{FF}" ) { - $encoding = 'UTF-16BE'; - } elsif ( $buf eq "\x{FF}\x{FE}" ) { - $encoding = 'UTF-16LE'; - } elsif ( $buf eq "\x{EF}\x{BB}" ) { - $buf = ' '; - $count = read $fh, $buf, length $buf; - if ( defined $count and $count >= 1 and $buf eq "\x{BF}" ) { - $encoding = 'UTF-8'; - } - } - - if ( defined $encoding ) { - if ( "$]" >= 5.008 ) { - binmode( $fh, ":encoding($encoding)" ); - } - } else { - seek $fh, $pos, SEEK_SET - or croak( sprintf "Can't reset position to the top of '$filename'" ); - } - - return $encoding; - } - - sub _parse_fh { - my ($self, $fh) = @_; - - my( $in_pod, $seen_end, $need_vers ) = ( 0, 0, 0 ); - my( @packages, %vers, %pod, @pod ); - my $package = 'main'; - my $pod_sect = ''; - my $pod_data = ''; - my $in_end = 0; - - while (defined( my $line = <$fh> )) { - my $line_num = $.; - - chomp( $line ); - - # From toke.c : any line that begins by "=X", where X is an alphabetic - # character, introduces a POD segment. - my $is_cut; - if ( $line =~ /^=([a-zA-Z].*)/ ) { - my $cmd = $1; - # Then it goes back to Perl code for "=cutX" where X is a non-alphabetic - # character (which includes the newline, but here we chomped it away). - $is_cut = $cmd =~ /^cut(?:[^a-zA-Z]|$)/; - $in_pod = !$is_cut; - } - - if ( $in_pod ) { - - if ( $line =~ /^=head[1-4]\s+(.+)\s*$/ ) { - push( @pod, $1 ); - if ( $self->{collect_pod} && length( $pod_data ) ) { - $pod{$pod_sect} = $pod_data; - $pod_data = ''; - } - $pod_sect = $1; - - } elsif ( $self->{collect_pod} ) { - $pod_data .= "$line\n"; - - } - - } elsif ( $is_cut ) { - - if ( $self->{collect_pod} && length( $pod_data ) ) { - $pod{$pod_sect} = $pod_data; - $pod_data = ''; - } - $pod_sect = ''; - - } else { - - # Skip after __END__ - next if $in_end; - - # Skip comments in code - next if $line =~ /^\s*#/; - - # Would be nice if we could also check $in_string or something too - if ($line eq '__END__') { - $in_end++; - next; - } - last if $line eq '__DATA__'; - - # parse $line to see if it's a $VERSION declaration - my( $version_sigil, $version_fullname, $version_package ) = - index($line, 'VERSION') >= 1 - ? $self->_parse_version_expression( $line ) - : (); - - if ( $line =~ /$PKG_REGEXP/o ) { - $package = $1; - my $version = $2; - push( @packages, $package ) unless grep( $package eq $_, @packages ); - $need_vers = defined $version ? 0 : 1; - - if ( not exists $vers{$package} and defined $version ){ - # Upgrade to a version object. - my $dwim_version = eval { _dwim_version($version) }; - croak "Version '$version' from $self->{filename} does not appear to be valid:\n$line\n\nThe fatal error was: $@\n" - unless defined $dwim_version; # "0" is OK! - $vers{$package} = $dwim_version; - } - - # VERSION defined with full package spec, i.e. $Module::VERSION - } elsif ( $version_fullname && $version_package ) { - push( @packages, $version_package ) unless grep( $version_package eq $_, @packages ); - $need_vers = 0 if $version_package eq $package; - - unless ( defined $vers{$version_package} && length $vers{$version_package} ) { - $vers{$version_package} = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line ); - } - - # first non-comment line in undeclared package main is VERSION - } elsif ( $package eq 'main' && $version_fullname && !exists($vers{main}) ) { - $need_vers = 0; - my $v = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line ); - $vers{$package} = $v; - push( @packages, 'main' ); - - # first non-comment line in undeclared package defines package main - } elsif ( $package eq 'main' && !exists($vers{main}) && $line =~ /\w/ ) { - $need_vers = 1; - $vers{main} = ''; - push( @packages, 'main' ); - - # only keep if this is the first $VERSION seen - } elsif ( $version_fullname && $need_vers ) { - $need_vers = 0; - my $v = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line ); - - unless ( defined $vers{$package} && length $vers{$package} ) { - $vers{$package} = $v; - } - } - } - } - - if ( $self->{collect_pod} && length($pod_data) ) { - $pod{$pod_sect} = $pod_data; - } - - $self->{versions} = \%vers; - $self->{packages} = \@packages; - $self->{pod} = \%pod; - $self->{pod_headings} = \@pod; - } - - { - my $pn = 0; - sub _evaluate_version_line { - my $self = shift; - my( $sigil, $variable_name, $line ) = @_; - - # We compile into a local sub because 'use version' would cause - # compiletime/runtime issues with local() - $pn++; # everybody gets their own package - my $eval = qq{ my \$dummy = q# Hide from _packages_inside() - #; package Module::Metadata::_version::p${pn}; - use version; - sub { - local $sigil$variable_name; - $line; - \$$variable_name - }; - }; - - $eval = $1 if $eval =~ m{^(.+)}s; - - local $^W; - # Try to get the $VERSION - my $vsub = __clean_eval($eval); - # some modules say $VERSION $Foo::Bar::VERSION, but Foo::Bar isn't - # installed, so we need to hunt in ./lib for it - if ( $@ =~ /Can't locate/ && -d 'lib' ) { - local @INC = ('lib',@INC); - $vsub = __clean_eval($eval); - } - warn "Error evaling version line '$eval' in $self->{filename}: $@\n" - if $@; - - (ref($vsub) eq 'CODE') or - croak "failed to build version sub for $self->{filename}"; - - my $result = eval { $vsub->() }; - # FIXME: $eval is not the right thing to print here - croak "Could not get version from $self->{filename} by executing:\n$eval\n\nThe fatal error was: $@\n" - if $@; - - # Upgrade it into a version object - my $version = eval { _dwim_version($result) }; - - # FIXME: $eval is not the right thing to print here - croak "Version '$result' from $self->{filename} does not appear to be valid:\n$eval\n\nThe fatal error was: $@\n" - unless defined $version; # "0" is OK! - - return $version; - } - } - - # Try to DWIM when things fail the lax version test in obvious ways - { - my @version_prep = ( - # Best case, it just works - sub { return shift }, - - # If we still don't have a version, try stripping any - # trailing junk that is prohibited by lax rules - sub { - my $v = shift; - $v =~ s{([0-9])[a-z-].*$}{$1}i; # 1.23-alpha or 1.23b - return $v; - }, - - # Activestate apparently creates custom versions like '1.23_45_01', which - # cause version.pm to think it's an invalid alpha. So check for that - # and strip them - sub { - my $v = shift; - my $num_dots = () = $v =~ m{(\.)}g; - my $num_unders = () = $v =~ m{(_)}g; - my $leading_v = substr($v,0,1) eq 'v'; - if ( ! $leading_v && $num_dots < 2 && $num_unders > 1 ) { - $v =~ s{_}{}g; - $num_unders = () = $v =~ m{(_)}g; - } - return $v; - }, - - # Worst case, try numifying it like we would have before version objects - sub { - my $v = shift; - no warnings 'numeric'; - return 0 + $v; - }, - - ); - - sub _dwim_version { - my ($result) = shift; - - return $result if ref($result) eq 'version'; - - my ($version, $error); - for my $f (@version_prep) { - $result = $f->($result); - $version = eval { version->new($result) }; - $error ||= $@ if $@; # capture first failure - last if defined $version; - } - - croak $error unless defined $version; - - return $version; - } - } - - ############################################################ - - # accessors - sub name { $_[0]->{module} } - - sub filename { $_[0]->{filename} } - sub packages_inside { @{$_[0]->{packages}} } - sub pod_inside { @{$_[0]->{pod_headings}} } - sub contains_pod { 0+@{$_[0]->{pod_headings}} } - - sub version { - my $self = shift; - my $mod = shift || $self->{module}; - my $vers; - if ( defined( $mod ) && length( $mod ) && - exists( $self->{versions}{$mod} ) ) { - return $self->{versions}{$mod}; - } else { - return undef; - } - } - - sub pod { - my $self = shift; - my $sect = shift; - if ( defined( $sect ) && length( $sect ) && - exists( $self->{pod}{$sect} ) ) { - return $self->{pod}{$sect}; - } else { - return undef; - } - } - - sub is_indexable { - my ($self, $package) = @_; - - my @indexable_packages = grep { $_ ne 'main' } $self->packages_inside; - - # check for specific package, if provided - return !! grep { $_ eq $package } @indexable_packages if $package; - - # otherwise, check for any indexable packages at all - return !! @indexable_packages; - } - - 1; - - =head1 NAME - - Module::Metadata - Gather package and POD information from perl module files - - =head1 SYNOPSIS - - use Module::Metadata; - - # information about a .pm file - my $info = Module::Metadata->new_from_file( $file ); - my $version = $info->version; - - # CPAN META 'provides' field for .pm files in a directory - my $provides = Module::Metadata->provides( - dir => 'lib', version => 2 - ); - - =head1 DESCRIPTION - - This module provides a standard way to gather metadata about a .pm file through - (mostly) static analysis and (some) code execution. When determining the - version of a module, the C<$VERSION> assignment is Ced, as is traditional - in the CPAN toolchain. - - =head1 CLASS METHODS - - =head2 C<< new_from_file($filename, collect_pod => 1) >> - - Constructs a C object given the path to a file. Returns - undef if the filename does not exist. - - C is a optional boolean argument that determines whether POD - data is collected and stored for reference. POD data is not collected by - default. POD headings are always collected. - - If the file begins by an UTF-8, UTF-16BE or UTF-16LE byte-order mark, then - it is skipped before processing, and the content of the file is also decoded - appropriately starting from perl 5.8. - - =head2 C<< new_from_handle($handle, $filename, collect_pod => 1) >> - - This works just like C, except that a handle can be provided - as the first argument. - - Note that there is no validation to confirm that the handle is a handle or - something that can act like one. Passing something that isn't a handle will - cause a exception when trying to read from it. The C argument is - mandatory or undef will be returned. - - You are responsible for setting the decoding layers on C<$handle> if - required. - - =head2 C<< new_from_module($module, collect_pod => 1, inc => \@dirs) >> - - Constructs a C object given a module or package name. - Returns undef if the module cannot be found. - - In addition to accepting the C argument as described above, - this method accepts a C argument which is a reference to an array of - directories to search for the module. If none are given, the default is - @INC. - - If the file that contains the module begins by an UTF-8, UTF-16BE or - UTF-16LE byte-order mark, then it is skipped before processing, and the - content of the file is also decoded appropriately starting from perl 5.8. - - =head2 C<< find_module_by_name($module, \@dirs) >> - - Returns the path to a module given the module or package name. A list - of directories can be passed in as an optional parameter, otherwise - @INC is searched. - - Can be called as either an object or a class method. - - =head2 C<< find_module_dir_by_name($module, \@dirs) >> - - Returns the entry in C<@dirs> (or C<@INC> by default) that contains - the module C<$module>. A list of directories can be passed in as an - optional parameter, otherwise @INC is searched. - - Can be called as either an object or a class method. - - =head2 C<< provides( %options ) >> - - This is a convenience wrapper around C - to generate a CPAN META C data structure. It takes key/value - pairs. Valid option keys include: - - =over - - =item version B<(required)> - - Specifies which version of the L should be used as - the format of the C output. Currently only '1.4' and '2' - are supported (and their format is identical). This may change in - the future as the definition of C changes. - - The C option is required. If it is omitted or if - an unsupported version is given, then C will throw an error. - - =item dir - - Directory to search recursively for F<.pm> files. May not be specified with - C. - - =item files - - Array reference of files to examine. May not be specified with C. - - =item prefix - - String to prepend to the C field of the resulting output. This defaults - to F, which is the common case for most CPAN distributions with their - F<.pm> files in F. This option ensures the META information has the - correct relative path even when the C or C arguments are - absolute or have relative paths from a location other than the distribution - root. - - =back - - For example, given C of 'lib' and C of 'lib', the return value - is a hashref of the form: - - { - 'Package::Name' => { - version => '0.123', - file => 'lib/Package/Name.pm' - }, - 'OtherPackage::Name' => ... - } - - =head2 C<< package_versions_from_directory($dir, \@files?) >> - - Scans C<$dir> for .pm files (unless C<@files> is given, in which case looks - for those files in C<$dir> - and reads each file for packages and versions, - returning a hashref of the form: - - { - 'Package::Name' => { - version => '0.123', - file => 'Package/Name.pm' - }, - 'OtherPackage::Name' => ... - } - - The C and C
packages are always omitted, as are any "private" - packages that have leading underscores in the namespace (e.g. - C) - - Note that the file path is relative to C<$dir> if that is specified. - This B be used directly for CPAN META C. See - the C method instead. - - =head2 C<< log_info (internal) >> - - Used internally to perform logging; imported from Log::Contextual if - Log::Contextual has already been loaded, otherwise simply calls warn. - - =head1 OBJECT METHODS - - =head2 C<< name() >> - - Returns the name of the package represented by this module. If there - is more than one package, it makes a best guess based on the - filename. If it's a script (i.e. not a *.pm) the package name is - 'main'. - - =head2 C<< version($package) >> - - Returns the version as defined by the $VERSION variable for the - package as returned by the C method if no arguments are - given. If given the name of a package it will attempt to return the - version of that package if it is specified in the file. - - =head2 C<< filename() >> - - Returns the absolute path to the file. - Note that this file may not actually exist on disk yet, e.g. if the module was read from an in-memory filehandle. - - =head2 C<< packages_inside() >> - - Returns a list of packages. Note: this is a raw list of packages - discovered (or assumed, in the case of C
). It is not - filtered for C, C
or private packages the way the - C method does. Invalid package names are not returned, - for example "Foo:Bar". Strange but valid package names are - returned, for example "Foo::Bar::", and are left up to the caller - on how to handle. - - =head2 C<< pod_inside() >> - - Returns a list of POD sections. - - =head2 C<< contains_pod() >> - - Returns true if there is any POD in the file. - - =head2 C<< pod($section) >> - - Returns the POD data in the given section. - - =head2 C<< is_indexable($package) >> or C<< is_indexable() >> - - Returns a boolean indicating whether the package (if provided) or any package - (otherwise) is eligible for indexing by PAUSE, the Perl Authors Upload Server. - Note This only checks for valid C declarations, and does not take any - ownership information into account. - - =head1 AUTHOR - - Original code from Module::Build::ModuleInfo by Ken Williams - , Randy W. Sims - - Released as Module::Metadata by Matt S Trout (mst) with - assistance from David Golden (xdg) . - - =head1 COPYRIGHT & LICENSE - - Original code Copyright (c) 2001-2011 Ken Williams. - Additional code Copyright (c) 2010-2011 Matt Trout and David Golden. - All rights reserved. - - This library is free software; you can redistribute it and/or - modify it under the same terms as Perl itself. - - =cut -MODULE_METADATA - -$fatpacked{"Parse/CPAN/Meta.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARSE_CPAN_META'; - use 5.008001; - use strict; - package Parse::CPAN::Meta; - # ABSTRACT: Parse META.yml and META.json CPAN metadata files - our $VERSION = '1.4414'; # VERSION - - use Exporter; - use Carp 'croak'; - - our @ISA = qw/Exporter/; - our @EXPORT_OK = qw/Load LoadFile/; - - sub load_file { - my ($class, $filename) = @_; - - my $meta = _slurp($filename); - - if ($filename =~ /\.ya?ml$/) { - return $class->load_yaml_string($meta); - } - elsif ($filename =~ /\.json$/) { - return $class->load_json_string($meta); - } - else { - $class->load_string($meta); # try to detect yaml/json - } - } - - sub load_string { - my ($class, $string) = @_; - if ( $string =~ /^---/ ) { # looks like YAML - return $class->load_yaml_string($string); - } - elsif ( $string =~ /^\s*\{/ ) { # looks like JSON - return $class->load_json_string($string); - } - else { # maybe doc-marker-free YAML - return $class->load_yaml_string($string); - } - } - - sub load_yaml_string { - my ($class, $string) = @_; - my $backend = $class->yaml_backend(); - my $data = eval { no strict 'refs'; &{"$backend\::Load"}($string) }; - croak $@ if $@; - return $data || {}; # in case document was valid but empty - } - - sub load_json_string { - my ($class, $string) = @_; - my $data = eval { $class->json_backend()->new->decode($string) }; - croak $@ if $@; - return $data || {}; - } - - sub yaml_backend { - if (! defined $ENV{PERL_YAML_BACKEND} ) { - _can_load( 'CPAN::Meta::YAML', 0.011 ) - or croak "CPAN::Meta::YAML 0.011 is not available\n"; - return "CPAN::Meta::YAML"; - } - else { - my $backend = $ENV{PERL_YAML_BACKEND}; - _can_load( $backend ) - or croak "Could not load PERL_YAML_BACKEND '$backend'\n"; - $backend->can("Load") - or croak "PERL_YAML_BACKEND '$backend' does not implement Load()\n"; - return $backend; - } - } - - sub json_backend { - if (! $ENV{PERL_JSON_BACKEND} or $ENV{PERL_JSON_BACKEND} eq 'JSON::PP') { - _can_load( 'JSON::PP' => 2.27103 ) - or croak "JSON::PP 2.27103 is not available\n"; - return 'JSON::PP'; - } - else { - _can_load( 'JSON' => 2.5 ) - or croak "JSON 2.5 is required for " . - "\$ENV{PERL_JSON_BACKEND} = '$ENV{PERL_JSON_BACKEND}'\n"; - return "JSON"; - } - } - - sub _slurp { - require Encode; - open my $fh, "<:raw", "$_[0]" ## no critic - or die "can't open $_[0] for reading: $!"; - my $content = do { local $/; <$fh> }; - $content = Encode::decode('UTF-8', $content, Encode::PERLQQ()); - return $content; - } - - sub _can_load { - my ($module, $version) = @_; - (my $file = $module) =~ s{::}{/}g; - $file .= ".pm"; - return 1 if $INC{$file}; - return 0 if exists $INC{$file}; # prior load failed - eval { require $file; 1 } - or return 0; - if ( defined $version ) { - eval { $module->VERSION($version); 1 } - or return 0; - } - return 1; - } - - # Kept for backwards compatibility only - # Create an object from a file - sub LoadFile ($) { - return Load(_slurp(shift)); - } - - # Parse a document from a string. - sub Load ($) { - require CPAN::Meta::YAML; - my $object = eval { CPAN::Meta::YAML::Load(shift) }; - croak $@ if $@; - return $object; - } - - 1; - - __END__ - - =pod - - =encoding UTF-8 - - =head1 NAME - - Parse::CPAN::Meta - Parse META.yml and META.json CPAN metadata files - - =head1 VERSION - - version 1.4414 - - =head1 SYNOPSIS - - ############################################# - # In your file - - --- - name: My-Distribution - version: 1.23 - resources: - homepage: "http://example.com/dist/My-Distribution" - - - ############################################# - # In your program - - use Parse::CPAN::Meta; - - my $distmeta = Parse::CPAN::Meta->load_file('META.yml'); - - # Reading properties - my $name = $distmeta->{name}; - my $version = $distmeta->{version}; - my $homepage = $distmeta->{resources}{homepage}; - - =head1 DESCRIPTION - - B is a parser for F and F files, using - L and/or L. - - B provides three methods: C, C, - and C. These will read and deserialize CPAN metafiles, and - are described below in detail. - - B provides a legacy API of only two functions, - based on the YAML functions of the same name. Wherever possible, - identical calling semantics are used. These may only be used with YAML sources. - - All error reporting is done with exceptions (die'ing). - - Note that META files are expected to be in UTF-8 encoding, only. When - converted string data, it must first be decoded from UTF-8. - - =begin Pod::Coverage - - - - - =end Pod::Coverage - - =head1 METHODS - - =head2 load_file - - my $metadata_structure = Parse::CPAN::Meta->load_file('META.json'); - - my $metadata_structure = Parse::CPAN::Meta->load_file('META.yml'); - - This method will read the named file and deserialize it to a data structure, - determining whether it should be JSON or YAML based on the filename. - The file will be read using the ":utf8" IO layer. - - =head2 load_yaml_string - - my $metadata_structure = Parse::CPAN::Meta->load_yaml_string($yaml_string); - - This method deserializes the given string of YAML and returns the first - document in it. (CPAN metadata files should always have only one document.) - If the source was UTF-8 encoded, the string must be decoded before calling - C. - - =head2 load_json_string - - my $metadata_structure = Parse::CPAN::Meta->load_json_string($json_string); - - This method deserializes the given string of JSON and the result. - If the source was UTF-8 encoded, the string must be decoded before calling - C. - - =head2 load_string - - my $metadata_structure = Parse::CPAN::Meta->load_string($some_string); - - If you don't know whether a string contains YAML or JSON data, this method - will use some heuristics and guess. If it can't tell, it assumes YAML. - - =head2 yaml_backend - - my $backend = Parse::CPAN::Meta->yaml_backend; - - Returns the module name of the YAML serializer. See L - for details. - - =head2 json_backend - - my $backend = Parse::CPAN::Meta->json_backend; - - Returns the module name of the JSON serializer. This will either - be L or L. Even if C is set, - this will return L as further delegation is handled by - the L module. See L for details. - - =head1 FUNCTIONS - - For maintenance clarity, no functions are exported by default. These functions - are available for backwards compatibility only and are best avoided in favor of - C. - - =head2 Load - - my @yaml = Parse::CPAN::Meta::Load( $string ); - - Parses a string containing a valid YAML stream into a list of Perl data - structures. - - =head2 LoadFile - - my @yaml = Parse::CPAN::Meta::LoadFile( 'META.yml' ); - - Reads the YAML stream from a file instead of a string. - - =head1 ENVIRONMENT - - =head2 PERL_JSON_BACKEND - - By default, L will be used for deserializing JSON data. If the - C environment variable exists, is true and is not - "JSON::PP", then the L module (version 2.5 or greater) will be loaded and - used to interpret C. If L is not installed or is too - old, an exception will be thrown. - - =head2 PERL_YAML_BACKEND - - By default, L will be used for deserializing YAML data. If - the C environment variable is defined, then it is interpreted - as a module to use for deserialization. The given module must be installed, - must load correctly and must implement the C function or an exception - will be thrown. - - =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - - =head1 SUPPORT - - =head2 Bugs / Feature Requests - - Please report any bugs or feature requests through the issue tracker - at L. - You will be notified automatically of any progress on your issue. - - =head2 Source Code - - This is open source software. The code repository is available for - public review and contribution under the terms of the license. - - L - - git clone https://github.com/Perl-Toolchain-Gang/Parse-CPAN-Meta.git - - =head1 AUTHORS - - =over 4 - - =item * - - Adam Kennedy - - =item * - - David Golden - - =back - - =head1 CONTRIBUTORS - - =over 4 - - =item * - - Graham Knop - - =item * - - Joshua ben Jore - - =item * - - Neil Bowers - - =item * - - Ricardo Signes - - =item * - - Steffen Mueller - - =back - - =head1 COPYRIGHT AND LICENSE - - This software is copyright (c) 2014 by Adam Kennedy and Contributors. - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -PARSE_CPAN_META - -$fatpacked{"Parse/PMFile.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARSE_PMFILE'; - package Parse::PMFile; - - sub __clean_eval { eval $_[0] } # needs to be here (RT#101273) - - use strict; - use warnings; - use Safe; - use JSON::PP (); - use Dumpvalue; - use version (); - use File::Spec (); - - our $VERSION = '0.36'; - our $VERBOSE = 0; - our $ALLOW_DEV_VERSION = 0; - our $FORK = 0; - our $UNSAFE = $] < 5.010000 ? 1 : 0; - - sub new { - my ($class, $meta, $opts) = @_; - bless {%{ $opts || {} }, META_CONTENT => $meta}, $class; - } - - # from PAUSE::pmfile::examine_fio - sub parse { - my ($self, $pmfile) = @_; - - $pmfile =~ s|\\|/|g; - - my($filemtime) = (stat $pmfile)[9]; - $self->{MTIME} = $filemtime; - $self->{PMFILE} = $pmfile; - - unless ($self->_version_from_meta_ok) { - my $version; - unless (eval { $version = $self->_parse_version; 1 }) { - $self->_verbose(1, "error with version in $pmfile: $@"); - return; - } - - $self->{VERSION} = $version; - if ($self->{VERSION} =~ /^\{.*\}$/) { - # JSON error message - } elsif ($self->{VERSION} =~ /[_\s]/ && !$self->{ALLOW_DEV_VERSION} && !$ALLOW_DEV_VERSION){ # ignore developer releases and "You suck!" - return; - } - } - - my($ppp) = $self->_packages_per_pmfile; - my @keys_ppp = $self->_filter_ppps(sort keys %$ppp); - $self->_verbose(1,"Will check keys_ppp[@keys_ppp]\n"); - - # - # Immediately after each package (pmfile) examined contact - # the database - # - - my ($package, %errors); - my %checked_in; - DBPACK: foreach $package (@keys_ppp) { - # this part is taken from PAUSE::package::examine_pkg - # and PAUSE::package::_pkg_name_insane - if ($package !~ /^\w[\w\:\']*\w?\z/ - || $package !~ /\w\z/ - || $package =~ /:/ && $package !~ /::/ - || $package =~ /\w:\w/ - || $package =~ /:::/ - ){ - $self->_verbose(1,"Package[$package] did not pass the ultimate sanity check"); - delete $ppp->{$package}; - next; - } - - if ($self->{USERID} && $self->{PERMISSIONS} && !$self->_perm_check($package)) { - delete $ppp->{$package}; - next; - } - - # Check that package name matches case of file name - { - my (undef, $module) = split m{/lib/}, $self->{PMFILE}, 2; - if ($module) { - $module =~ s{\.pm\z}{}; - $module =~ s{/}{::}g; - - if (lc $module eq lc $package && $module ne $package) { - # warn "/// $self->{PMFILE} vs. $module vs. $package\n"; - $errors{$package} = { - indexing_warning => "Capitalization of package ($package) does not match filename!", - infile => $self->{PMFILE}, - }; - } - } - } - - my $pp = $ppp->{$package}; - if ($pp->{version} && $pp->{version} =~ /^\{.*\}$/) { # JSON parser error - my $err = JSON::PP::decode_json($pp->{version}); - if ($err->{x_normalize}) { - $errors{$package} = { - normalize => $err->{version}, - infile => $pp->{infile}, - }; - $pp->{version} = "undef"; - } elsif ($err->{openerr}) { - $pp->{version} = "undef"; - $self->_verbose(1, - qq{Parse::PMFile was not able to - read the file. It issued the following error: C< $err->{r} >}, - ); - $errors{$package} = { - open => $err->{r}, - infile => $pp->{infile}, - }; - } else { - $pp->{version} = "undef"; - $self->_verbose(1, - qq{Parse::PMFile was not able to - parse the following line in that file: C< $err->{line} > - - Note: the indexer is running in a Safe compartement and cannot - provide the full functionality of perl in the VERSION line. It - is trying hard, but sometime it fails. As a workaround, please - consider writing a META.yml that contains a 'provides' - attribute or contact the CPAN admins to investigate (yet - another) workaround against "Safe" limitations.)}, - - ); - $errors{$package} = { - parse_version => $err->{line}, - infile => $err->{file}, - }; - } - } - - # Sanity checks - - for ( - $package, - $pp->{version}, - ) { - if (!defined || /^\s*$/ || /\s/){ # for whatever reason I come here - delete $ppp->{$package}; - next; # don't screw up 02packages - } - } - $checked_in{$package} = $ppp->{$package}; - } # end foreach package - - return (wantarray && %errors) ? (\%checked_in, \%errors) : \%checked_in; - } - - sub _perm_check { - my ($self, $package) = @_; - my $userid = $self->{USERID}; - my $module = $self->{PERMISSIONS}->module_permissions($package); - return 1 if !$module; # not listed yet - return 1 if defined $module->m && $module->m eq $userid; - return 1 if defined $module->f && $module->f eq $userid; - return 1 if defined $module->c && grep {$_ eq $userid} @{$module->c}; - return; - } - - # from PAUSE::pmfile; - sub _parse_version { - my $self = shift; - - use strict; - - my $pmfile = $self->{PMFILE}; - my $tmpfile = File::Spec->catfile(File::Spec->tmpdir, "ParsePMFile$$" . rand(1000)); - - my $pmcp = $pmfile; - for ($pmcp) { - s/([^\\](\\\\)*)@/$1\\@/g; # thanks to Raphael Manfredi for the - # solution to escape @s and \ - } - my($v); - { - - package main; # seems necessary - - # XXX: do we need to fork as PAUSE does? - # or, is alarm() just fine? - my $pid; - if ($self->{FORK} || $FORK) { - $pid = fork(); - die "Can't fork: $!" unless defined $pid; - } - if ($pid) { - waitpid($pid, 0); - if (open my $fh, '<', $tmpfile) { - $v = <$fh>; - } - } else { - # XXX Limit Resources too - - my($comp) = Safe->new; - my $eval = qq{ - local(\$^W) = 0; - Parse::PMFile::_parse_version_safely("$pmcp"); - }; - $comp->permit("entereval"); # for MBARBON/Module-Info-0.30.tar.gz - $comp->share("*Parse::PMFile::_parse_version_safely"); - $comp->share("*version::new"); - $comp->share("*version::numify"); - $comp->share_from('main', ['*version::', - '*charstar::', - '*Exporter::', - '*DynaLoader::']); - $comp->share_from('version', ['&qv']); - $comp->permit(":base_math"); # atan2 (Acme-Pi) - # $comp->permit("require"); # no strict! - $comp->deny(qw/enteriter iter unstack goto/); # minimum protection against Acme::BadExample - - version->import('qv') if $self->{UNSAFE} || $UNSAFE; - { - no strict; - $v = ($self->{UNSAFE} || $UNSAFE) ? eval $eval : $comp->reval($eval); - } - if ($@){ # still in the child process, out of Safe::reval - my $err = $@; - # warn ">>>>>>>err[$err]<<<<<<<<"; - if (ref $err) { - if ($err->{line} =~ /([\$*])([\w\:\']*)\bVERSION\b.*?\=(.*)/) { - local($^W) = 0; - my ($sigil, $vstr) = ($1, $3); - $self->_restore_overloaded_stuff(1) if $err->{line} =~ /use\s+version\b|version\->|qv\(/; - $v = ($self->{UNSAFE} || $UNSAFE) ? eval $vstr : $comp->reval($vstr); - $v = $$v if $sigil eq '*' && ref $v; - } - if ($@ or !$v) { - $self->_verbose(1, sprintf("reval failed: err[%s] for eval[%s]", - JSON::PP::encode_json($err), - $eval, - )); - $v = JSON::PP::encode_json($err); - } - } else { - $v = JSON::PP::encode_json({ openerr => $err }); - } - } - if (defined $v) { - $v = $v->numify if ref($v) =~ /^version(::vpp)?$/; - } else { - $v = ""; - } - if ($self->{FORK} || $FORK) { - open my $fh, '>:utf8', $tmpfile; - print $fh $v; - exit 0; - } else { - utf8::encode($v); - # undefine empty $v as if read from the tmpfile - $v = undef if defined $v && !length $v; - $comp->erase; - $self->_restore_overloaded_stuff; - } - } - } - unlink $tmpfile if ($self->{FORK} || $FORK) && -e $tmpfile; - - return $self->_normalize_version($v); - } - - sub _restore_overloaded_stuff { - my ($self, $used_version_in_safe) = @_; - return if $self->{UNSAFE} || $UNSAFE; - - no strict 'refs'; - no warnings 'redefine'; - - # version XS in CPAN - my $restored; - if ($INC{'version/vxs.pm'}) { - *{'version::(""'} = \&version::vxs::stringify; - *{'version::(0+'} = \&version::vxs::numify; - *{'version::(cmp'} = \&version::vxs::VCMP; - *{'version::(<=>'} = \&version::vxs::VCMP; - *{'version::(bool'} = \&version::vxs::boolean; - $restored = 1; - } - # version PP in CPAN - if ($INC{'version/vpp.pm'}) { - { - package # hide from PAUSE - charstar; - overload->import; - } - if (!$used_version_in_safe) { - package # hide from PAUSE - version::vpp; - overload->import; - } - unless ($restored) { - *{'version::(""'} = \&version::vpp::stringify; - *{'version::(0+'} = \&version::vpp::numify; - *{'version::(cmp'} = \&version::vpp::vcmp; - *{'version::(<=>'} = \&version::vpp::vcmp; - *{'version::(bool'} = \&version::vpp::vbool; - } - *{'version::vpp::(""'} = \&version::vpp::stringify; - *{'version::vpp::(0+'} = \&version::vpp::numify; - *{'version::vpp::(cmp'} = \&version::vpp::vcmp; - *{'version::vpp::(<=>'} = \&version::vpp::vcmp; - *{'version::vpp::(bool'} = \&version::vpp::vbool; - *{'charstar::(""'} = \&charstar::thischar; - *{'charstar::(0+'} = \&charstar::thischar; - *{'charstar::(++'} = \&charstar::increment; - *{'charstar::(--'} = \&charstar::decrement; - *{'charstar::(+'} = \&charstar::plus; - *{'charstar::(-'} = \&charstar::minus; - *{'charstar::(*'} = \&charstar::multiply; - *{'charstar::(cmp'} = \&charstar::cmp; - *{'charstar::(<=>'} = \&charstar::spaceship; - *{'charstar::(bool'} = \&charstar::thischar; - *{'charstar::(='} = \&charstar::clone; - $restored = 1; - } - # version in core - if (!$restored) { - *{'version::(""'} = \&version::stringify; - *{'version::(0+'} = \&version::numify; - *{'version::(cmp'} = \&version::vcmp; - *{'version::(<=>'} = \&version::vcmp; - *{'version::(bool'} = \&version::boolean; - } - } - - # from PAUSE::pmfile; - sub _packages_per_pmfile { - my $self = shift; - - my $ppp = {}; - my $pmfile = $self->{PMFILE}; - my $filemtime = $self->{MTIME}; - my $version = $self->{VERSION}; - - open my $fh, "<", "$pmfile" or return $ppp; - - local $/ = "\n"; - my $inpod = 0; - - PLINE: while (<$fh>) { - chomp; - my($pline) = $_; - $inpod = $pline =~ /^=(?!cut)/ ? 1 : - $pline =~ /^=cut/ ? 0 : $inpod; - next if $inpod; - next if substr($pline,0,4) eq "=cut"; - - $pline =~ s/\#.*//; - next if $pline =~ /^\s*$/; - if ($pline =~ /^__(?:END|DATA)__\b/ - and $pmfile !~ /\.PL$/ # PL files may well have code after __DATA__ - ){ - last PLINE; - } - - my $pkg; - my $strict_version; - - if ( - $pline =~ m{ - # (.*) # takes too much time if $pline is long - (? 128; - #restriction - $ppp->{$pkg}{parsed}++; - $ppp->{$pkg}{infile} = $pmfile; - if ($self->_simile($pmfile,$pkg)) { - $ppp->{$pkg}{simile} = $pmfile; - if ($self->_version_from_meta_ok) { - my $provides = $self->{META_CONTENT}{provides}; - if (exists $provides->{$pkg}) { - if (defined $provides->{$pkg}{version}) { - my $v = $provides->{$pkg}{version}; - if ($v =~ /[_\s]/ && !$self->{ALLOW_DEV_VERSION} && !$ALLOW_DEV_VERSION){ # ignore developer releases and "You suck!" - next PLINE; - } - - unless (eval { $version = $self->_normalize_version($v); 1 }) { - $self->_verbose(1, "error with version in $pmfile: $@"); - next; - - } - $ppp->{$pkg}{version} = $version; - } else { - $ppp->{$pkg}{version} = "undef"; - } - } - } else { - if (defined $strict_version){ - $ppp->{$pkg}{version} = $strict_version ; - } else { - $ppp->{$pkg}{version} = defined $version ? $version : ""; - } - no warnings; - if ($version eq 'undef') { - $ppp->{$pkg}{version} = $version unless defined $ppp->{$pkg}{version}; - } else { - $ppp->{$pkg}{version} = - $version - if $version - > $ppp->{$pkg}{version} || - $version - gt $ppp->{$pkg}{version}; - } - } - } else { # not simile - #### it comes later, it would be nonsense - #### to set to "undef". MM_Unix gives us - #### the best we can reasonably consider - $ppp->{$pkg}{version} = - $version - unless defined $ppp->{$pkg}{version} && - length($ppp->{$pkg}{version}); - } - $ppp->{$pkg}{filemtime} = $filemtime; - } else { - # $self->_verbose(2,"no pkg found"); - } - } - - close $fh; - $ppp; - } - - # from PAUSE::pmfile; - { - no strict; - sub _parse_version_safely { - my($parsefile) = @_; - my $result; - local *FH; - local $/ = "\n"; - open(FH,$parsefile) or die "Could not open '$parsefile': $!"; - my $inpod = 0; - while () { - $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod; - next if $inpod || /^\s*#/; - last if /^__(?:END|DATA)__\b/; # fails on quoted __END__ but this is rare -> __END__ in the middle of a line is rarer - chop; - - if (my ($ver) = /package \s+ \S+ \s+ (\S+) \s* [;{]/x) { - # XXX: should handle this better if version is bogus -- rjbs, - # 2014-03-16 - return $ver if version::is_lax($ver); - } - - # next unless /\$(([\w\:\']*)\bVERSION)\b.*\=/; - next unless /(?<=])\=(?![=>])/; - my $current_parsed_line = $_; - my $eval = qq{ - package # - ExtUtils::MakeMaker::_version; - - local $1$2; - \$$2=undef; do { - $_ - }; \$$2 - }; - local $^W = 0; - local $SIG{__WARN__} = sub {}; - $result = __clean_eval($eval); - # warn "current_parsed_line[$current_parsed_line]\$\@[$@]"; - if ($@ or !defined $result){ - die +{ - eval => $eval, - line => $current_parsed_line, - file => $parsefile, - err => $@, - }; - } - last; - } #; - close FH; - - $result = "undef" unless defined $result; - if ((ref $result) =~ /^version(?:::vpp)?\b/) { - $result = $result->numify; - } - return $result; - } - } - - # from PAUSE::pmfile; - sub _filter_ppps { - my($self,@ppps) = @_; - my @res; - - # very similar code is in PAUSE::dist::filter_pms - MANI: for my $ppp ( @ppps ) { - if ($self->{META_CONTENT}){ - my $no_index = $self->{META_CONTENT}{no_index} - || $self->{META_CONTENT}{private}; # backward compat - if (ref($no_index) eq 'HASH') { - my %map = ( - package => qr{\z}, - namespace => qr{::}, - ); - for my $k (qw(package namespace)) { - next unless my $v = $no_index->{$k}; - my $rest = $map{$k}; - if (ref $v eq "ARRAY") { - for my $ve (@$v) { - $ve =~ s|::$||; - if ($ppp =~ /^$ve$rest/){ - $self->_verbose(1,"Skipping ppp[$ppp] due to ve[$ve]"); - next MANI; - } else { - $self->_verbose(1,"NOT skipping ppp[$ppp] due to ve[$ve]"); - } - } - } else { - $v =~ s|::$||; - if ($ppp =~ /^$v$rest/){ - $self->_verbose(1,"Skipping ppp[$ppp] due to v[$v]"); - next MANI; - } else { - $self->_verbose(1,"NOT skipping ppp[$ppp] due to v[$v]"); - } - } - } - } else { - $self->_verbose(1,"No keyword 'no_index' or 'private' in META_CONTENT"); - } - } else { - # $self->_verbose(1,"no META_CONTENT"); # too noisy - } - push @res, $ppp; - } - $self->_verbose(1,"Result of filter_ppps: res[@res]"); - @res; - } - - # from PAUSE::pmfile; - sub _simile { - my($self,$file,$package) = @_; - # MakeMaker gives them the chance to have the file Simple.pm in - # this directory but have the package HTML::Simple in it. - # Afaik, they wouldn't be able to do so with deeper nested packages - $file =~ s|.*/||; - $file =~ s|\.pm(?:\.PL)?||; - my $ret = $package =~ m/\b\Q$file\E$/; - $ret ||= 0; - unless ($ret) { - # Apache::mod_perl_guide stuffs it into Version.pm - $ret = 1 if lc $file eq 'version'; - } - $self->_verbose(1,"Result of simile(): file[$file] package[$package] ret[$ret]\n"); - $ret; - } - - # from PAUSE::pmfile - sub _normalize_version { - my($self,$v) = @_; - $v = "undef" unless defined $v; - my $dv = Dumpvalue->new; - my $sdv = $dv->stringify($v,1); # second argument prevents ticks - $self->_verbose(1,"Result of normalize_version: sdv[$sdv]\n"); - - return $v if $v eq "undef"; - return $v if $v =~ /^\{.*\}$/; # JSON object - $v =~ s/^\s+//; - $v =~ s/\s+\z//; - if ($v =~ /_/) { - # XXX should pass something like EDEVELOPERRELEASE up e.g. - # SIXTEASE/XML-Entities-0.0306.tar.gz had nothing but one - # such modules and the mesage was not helpful that "nothing - # was found". - return $v ; - } - if (!version::is_lax($v)) { - return JSON::PP::encode_json({ x_normalize => 'version::is_lax failed', version => $v }); - } - # may warn "Integer overflow" - my $vv = eval { no warnings; version->new($v)->numify }; - if ($@) { - # warn "$v: $@"; - return JSON::PP::encode_json({ x_normalize => $@, version => $v }); - # return "undef"; - } - if ($vv eq $v) { - # the boring 3.14 - } else { - my $forced = $self->_force_numeric($v); - if ($forced eq $vv) { - } elsif ($forced =~ /^v(.+)/) { - # rare case where a v1.0.23 slipped in (JANL/w3mir-1.0.10.tar.gz) - $vv = version->new($1)->numify; - } else { - # warn "Unequal forced[$forced] and vv[$vv]"; - if ($forced == $vv) { - # the trailing zeroes would cause unnecessary havoc - $vv = $forced; - } - } - } - return $vv; - } - - # from PAUSE::pmfile; - sub _force_numeric { - my($self,$v) = @_; - $v = $self->_readable($v); - - if ( - $v =~ - /^(\+?)(\d*)(\.(\d*))?/ && - # "$2$4" ne '' - ( - defined $2 && length $2 - || - defined $4 && length $4 - ) - ) { - my $two = defined $2 ? $2 : ""; - my $three = defined $3 ? $3 : ""; - $v = "$two$three"; - } - # no else branch! We simply say, everything else is a string. - $v; - } - - # from PAUSE::dist - sub _version_from_meta_ok { - my($self) = @_; - return $self->{VERSION_FROM_META_OK} if exists $self->{VERSION_FROM_META_OK}; - my $c = $self->{META_CONTENT}; - - # If there's no provides hash, we can't get our module versions from the - # provides hash! -- rjbs, 2012-03-31 - return($self->{VERSION_FROM_META_OK} = 0) unless $c->{provides}; - - # Some versions of Module::Build geneated an empty provides hash. If we're - # *not* looking at a Module::Build-generated metafile, then it's okay. - my ($mb_v) = (defined $c->{generated_by} ? $c->{generated_by} : '') =~ /Module::Build version ([\d\.]+)/; - return($self->{VERSION_FROM_META_OK} = 1) unless $mb_v; - - # ??? I don't know why this is here. - return($self->{VERSION_FROM_META_OK} = 1) if $mb_v eq '0.250.0'; - - if ($mb_v >= 0.19 && $mb_v < 0.26 && ! keys %{$c->{provides}}) { - # RSAVAGE/Javascript-SHA1-1.01.tgz had an empty provides hash. Ron - # did not find the reason why this happened, but let's not go - # overboard, 0.26 seems a good threshold from the statistics: there - # are not many empty provides hashes from 0.26 up. - return($self->{VERSION_FROM_META_OK} = 0); - } - - # We're not in the suspect range of M::B versions. It's good to go. - return($self->{VERSION_FROM_META_OK} = 1); - } - - sub _verbose { - my($self,$level,@what) = @_; - warn @what if $level <= ((ref $self && $self->{VERBOSE}) || $VERBOSE); - } - - # all of the following methods are stripped from CPAN::Version - # (as of version 5.5001, bundled in CPAN 2.03), and slightly - # modified (ie. made private, as well as CPAN->debug(...) are - # replaced with $self->_verbose(9, ...).) - - # CPAN::Version::vcmp courtesy Jost Krieger - sub _vcmp { - my($self,$l,$r) = @_; - local($^W) = 0; - $self->_verbose(9, "l[$l] r[$r]"); - - return 0 if $l eq $r; # short circuit for quicker success - - for ($l,$r) { - s/_//g; - } - $self->_verbose(9, "l[$l] r[$r]"); - for ($l,$r) { - next unless tr/.// > 1 || /^v/; - s/^v?/v/; - 1 while s/\.0+(\d)/.$1/; # remove leading zeroes per group - } - $self->_verbose(9, "l[$l] r[$r]"); - if ($l=~/^v/ <=> $r=~/^v/) { - for ($l,$r) { - next if /^v/; - $_ = $self->_float2vv($_); - } - } - $self->_verbose(9, "l[$l] r[$r]"); - my $lvstring = "v0"; - my $rvstring = "v0"; - if ($] >= 5.006 - && $l =~ /^v/ - && $r =~ /^v/) { - $lvstring = $self->_vstring($l); - $rvstring = $self->_vstring($r); - $self->_verbose(9, sprintf "lv[%vd] rv[%vd]", $lvstring, $rvstring); - } - - return ( - ($l ne "undef") <=> ($r ne "undef") - || - $lvstring cmp $rvstring - || - $l <=> $r - || - $l cmp $r - ); - } - - sub _vgt { - my($self,$l,$r) = @_; - $self->_vcmp($l,$r) > 0; - } - - sub _vlt { - my($self,$l,$r) = @_; - $self->_vcmp($l,$r) < 0; - } - - sub _vge { - my($self,$l,$r) = @_; - $self->_vcmp($l,$r) >= 0; - } - - sub _vle { - my($self,$l,$r) = @_; - $self->_vcmp($l,$r) <= 0; - } - - sub _vstring { - my($self,$n) = @_; - $n =~ s/^v// or die "Parse::PMFile::_vstring() called with invalid arg [$n]"; - pack "U*", split /\./, $n; - } - - # vv => visible vstring - sub _float2vv { - my($self,$n) = @_; - my($rev) = int($n); - $rev ||= 0; - my($mantissa) = $n =~ /\.(\d{1,12})/; # limit to 12 digits to limit - # architecture influence - $mantissa ||= 0; - $mantissa .= "0" while length($mantissa)%3; - my $ret = "v" . $rev; - while ($mantissa) { - $mantissa =~ s/(\d{1,3})// or - die "Panic: length>0 but not a digit? mantissa[$mantissa]"; - $ret .= ".".int($1); - } - # warn "n[$n]ret[$ret]"; - $ret =~ s/(\.0)+/.0/; # v1.0.0 => v1.0 - $ret; - } - - sub _readable { - my($self,$n) = @_; - $n =~ /^([\w\-\+\.]+)/; - - return $1 if defined $1 && length($1)>0; - # if the first user reaches version v43, he will be treated as "+". - # We'll have to decide about a new rule here then, depending on what - # will be the prevailing versioning behavior then. - - if ($] < 5.006) { # or whenever v-strings were introduced - # we get them wrong anyway, whatever we do, because 5.005 will - # have already interpreted 0.2.4 to be "0.24". So even if he - # indexer sends us something like "v0.2.4" we compare wrongly. - - # And if they say v1.2, then the old perl takes it as "v12" - - $self->_verbose(9, "Suspicious version string seen [$n]\n"); - return $n; - } - my $better = sprintf "v%vd", $n; - $self->_verbose(9, "n[$n] better[$better]"); - return $better; - } - - 1; - - __END__ - - =head1 NAME - - Parse::PMFile - parses .pm file as PAUSE does - - =head1 SYNOPSIS - - use Parse::PMFile; - - my $parser = Parse::PMFile->new($metadata, {VERBOSE => 1}); - my $packages_info = $parser->parse($pmfile); - - # if you need info about invalid versions - my ($packages_info, $errors) = $parser->parse($pmfile); - - # to check permissions - my $parser = Parse::PMFile->new($metadata, { - USERID => 'ISHIGAKI', - PERMISSIONS => PAUSE::Permissions->new, - }); - - =head1 DESCRIPTION - - The most of the code of this module is taken from the PAUSE code as of April 2013 almost verbatim. Thus, the heart of this module should be quite stable. However, I made it not to use pipe ("-|") as well as I stripped database-related code. If you encounter any issue, that's most probably because of my modification. - - This module doesn't provide features to extract a distribution or parse meta files intentionally. - - =head1 METHODS - - =head2 new - - creates an object. You can also pass a hashref taken from META.yml etc, and an optional hashref. Options are: - - =over 4 - - =item ALLOW_DEV_VERSION - - Parse::PMFile usually ignores a version with an underscore as PAUSE does (because it's for a developer release, and should not be indexed). Set this option to true if you happen to need to keep such a version for better analysis. - - =item VERBOSE - - Set this to true if you need to know some details. - - =item FORK - - As of version 0.17, Parse::PMFile stops forking while parsing a version for better performance. Parse::PMFile should return the same result no matter how this option is set, but if you do care, set this to true to fork as PAUSE does. - - =item USERID, PERMISSIONS - - As of version 0.21, Parse::PMFile checks permissions of a package if both USERID and PERMISSIONS (which should be an instance of L) are provided. Unauthorized packages are removed. - - =item UNSAFE - - Parse::PMFile usually parses a module version in a Safe compartment. However, this approach doesn't work smoothly under older perls (prior to 5.10) plus some combinations of recent versions of Safe.pm (2.24 and above) and version.pm (0.9905 and above) for various reasons. As of version 0.27, Parse::PMFile simply uses C to parse a version under older perls. If you want it to use always C (even under recent perls), set this to true. - - =back - - =head2 parse - - takes a path to a .pm file, and returns a hash reference that holds information for package(s) found in the file. - - =head1 SEE ALSO - - L, L - - Most part of this module is derived from PAUSE and CPAN::Version. - - L - - L - - =head1 AUTHOR - - Andreas Koenig Eandreas.koenig@anima.deE - - Kenichi Ishigaki, Eishigaki@cpan.orgE - - =head1 COPYRIGHT AND LICENSE - - Copyright 1995 - 2013 by Andreas Koenig Eandk@cpan.orgE for most of the code. - - Copyright 2013 by Kenichi Ishigaki for some. - - This program is free software; you can redistribute it and/or - modify it under the same terms as Perl itself. - - =cut -PARSE_PMFILE - -$fatpacked{"String/ShellQuote.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'STRING_SHELLQUOTE'; - # $Id: ShellQuote.pm,v 1.11 2010-06-11 20:08:57 roderick Exp $ - # - # Copyright (c) 1997 Roderick Schertler. All rights reserved. This - # program is free software; you can redistribute it and/or modify it - # under the same terms as Perl itself. - - =head1 NAME - - String::ShellQuote - quote strings for passing through the shell - - =head1 SYNOPSIS - - $string = shell_quote @list; - $string = shell_quote_best_effort @list; - $string = shell_comment_quote $string; - - =head1 DESCRIPTION - - This module contains some functions which are useful for quoting strings - which are going to pass through the shell or a shell-like object. - - =over - - =cut - - package String::ShellQuote; - - use strict; - use vars qw($VERSION @ISA @EXPORT); - - require Exporter; - - $VERSION = '1.04'; - @ISA = qw(Exporter); - @EXPORT = qw(shell_quote shell_quote_best_effort shell_comment_quote); - - sub croak { - require Carp; - goto &Carp::croak; - } - - sub _shell_quote_backend { - my @in = @_; - my @err = (); - - if (0) { - require RS::Handy; - print RS::Handy::data_dump(\@in); - } - - return \@err, '' unless @in; - - my $ret = ''; - my $saw_non_equal = 0; - foreach (@in) { - if (!defined $_ or $_ eq '') { - $_ = "''"; - next; - } - - if (s/\x00//g) { - push @err, "No way to quote string containing null (\\000) bytes"; - } - - my $escape = 0; - - # = needs quoting when it's the first element (or part of a - # series of such elements), as in command position it's a - # program-local environment setting - - if (/=/) { - if (!$saw_non_equal) { - $escape = 1; - } - } - else { - $saw_non_equal = 1; - } - - if (m|[^\w!%+,\-./:=@^]|) { - $escape = 1; - } - - if ($escape - || (!$saw_non_equal && /=/)) { - - # ' -> '\'' - s/'/'\\''/g; - - # make multiple ' in a row look simpler - # '\'''\'''\'' -> '"'''"' - s|((?:'\\''){2,})|q{'"} . (q{'} x (length($1) / 4)) . q{"'}|ge; - - $_ = "'$_'"; - s/^''//; - s/''$//; - } - } - continue { - $ret .= "$_ "; - } - - chop $ret; - return \@err, $ret; - } - - =item B [I]... - - B quotes strings so they can be passed through the shell. - Each I is quoted so that the shell will pass it along as a - single argument and without further interpretation. If no Is - are given an empty string is returned. - - If any I can't be safely quoted B will B. - - =cut - - sub shell_quote { - my ($rerr, $s) = _shell_quote_backend @_; - - if (@$rerr) { - my %seen; - @$rerr = grep { !$seen{$_}++ } @$rerr; - my $s = join '', map { "shell_quote(): $_\n" } @$rerr; - chomp $s; - croak $s; - } - return $s; - } - - =item B [I]... - - This is like B, excpet if the string can't be safely quoted - it does the best it can and returns the result, instead of dying. - - =cut - - sub shell_quote_best_effort { - my ($rerr, $s) = _shell_quote_backend @_; - - return $s; - } - - =item B [I] - - B quotes the I so that it can safely be - included in a shell-style comment (the current algorithm is that a sharp - character is placed after any newlines in the string). - - This routine might be changed to accept multiple I arguments - in the future. I haven't done this yet because I'm not sure if the - Is should be joined with blanks ($") or nothing ($,). Cast - your vote today! Be sure to justify your answer. - - =cut - - sub shell_comment_quote { - return '' unless @_; - unless (@_ == 1) { - croak "Too many arguments to shell_comment_quote " - . "(got " . @_ . " expected 1)"; - } - local $_ = shift; - s/\n/\n#/g; - return $_; - } - - 1; - - __END__ - - =back - - =head1 EXAMPLES - - $cmd = 'fuser 2>/dev/null ' . shell_quote @files; - @pids = split ' ', `$cmd`; - - print CFG "# Configured by: ", - shell_comment_quote($ENV{LOGNAME}), "\n"; - - =head1 BUGS - - Only Bourne shell quoting is supported. I'd like to add other shells - (particularly cmd.exe), but I'm not familiar with them. It would be a - big help if somebody supplied the details. - - =head1 AUTHOR - - Roderick Schertler > - - =head1 SEE ALSO - - perl(1). - - =cut -STRING_SHELLQUOTE - -$fatpacked{"lib/core/only.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'LIB_CORE_ONLY'; - package lib::core::only; - - use strict; - use warnings FATAL => 'all'; - use Config; - - sub import { - @INC = @Config{qw(privlibexp archlibexp)}; - return - } - - =head1 NAME - - lib::core::only - Remove all non-core paths from @INC to avoid site/vendor dirs - - =head1 SYNOPSIS - - use lib::core::only; # now @INC contains only the two core directories - - To get only the core directories plus the ones for the local::lib in scope: - - $ perl -mlocal::lib -Mlib::core::only -Mlocal::lib=~/perl5 myscript.pl - - To attempt to do a self-contained build (but note this will not reliably - propagate into subprocesses, see the CAVEATS below): - - $ PERL5OPT='-mlocal::lib -Mlib::core::only -Mlocal::lib=~/perl5' cpan - - Please note that it is necessary to use C twice for this to work. - First so that C doesn't prevent C from loading - (it's not currently in core) and then again after C so that - the local paths are not removed. - - =head1 DESCRIPTION - - lib::core::only is simply a shortcut to say "please reduce my @INC to only - the core lib and archlib (architecture-specific lib) directories of this perl". - - You might want to do this to ensure a local::lib contains only the code you - need, or to test an L tree, or to avoid known - bad vendor packages. - - You might want to use this to try and install a self-contained tree of perl - modules. Be warned that that probably won't work (see L). - - This module was extracted from L's --self-contained - feature, and contains the only part that ever worked. I apologise to anybody - who thought anything else did. - - =head1 CAVEATS - - This does B propagate properly across perl invocations like local::lib's - stuff does. It can't. It's only a module import, so it B. - - If you want to cascade it across invocations, you can set the PERL5OPT - environment variable to '-Mlib::core::only' and it'll sort of work. But be - aware that taint mode ignores this, so some modules' build and test code - probably will as well. - - You also need to be aware that perl's command line options are not processed - in order - -I options take effect before -M options, so - - perl -Mlib::core::only -Ilib - - is unlike to do what you want - it's exactly equivalent to: - - perl -Mlib::core::only - - If you want to combine a core-only @INC with additional paths, you need to - add the additional paths using -M options and the L module: - - perl -Mlib::core::only -Mlib=lib - - # or if you're trying to test compiled code: - - perl -Mlib::core::only -Mblib - - For more information on the impossibility of sanely propagating this across - module builds without help from the build program, see - L - and for ways - to achieve the old --self-contained feature's results, look at - L's tree function, and at - L's --local-lib-contained feature. - - =head1 AUTHOR - - Matt S. Trout - - =head1 LICENSE - - This library is free software under the same terms as perl itself. - - =head1 COPYRIGHT - - (c) 2010 the lib::core::only L as specified above. - - =cut - - 1; -LIB_CORE_ONLY - -$fatpacked{"local/lib.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'LOCAL_LIB'; - package local::lib; - use 5.006; - use strict; - use warnings; - use Config; - - our $VERSION = '2.000015'; - $VERSION = eval $VERSION; - - BEGIN { - *_WIN32 = ($^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'symbian') - ? sub(){1} : sub(){0}; - # punt on these systems - *_USE_FSPEC = ($^O eq 'MacOS' || $^O eq 'VMS' || $INC{'File/Spec.pm'}) - ? sub(){1} : sub(){0}; - } - our $_DIR_JOIN = _WIN32 ? '\\' : '/'; - our $_DIR_SPLIT = (_WIN32 || $^O eq 'cygwin') ? qr{[\\/]} - : qr{/}; - our $_ROOT = _WIN32 ? do { - my $UNC = qr{[\\/]{2}[^\\/]+[\\/][^\\/]+}; - qr{^(?:$UNC|[A-Za-z]:|)$_DIR_SPLIT}; - } : qr{^/}; - our $_PERL; - - sub _cwd { - my $drive = shift; - if (!$_PERL) { - ($_PERL) = $^X =~ /(.+)/; # $^X is internal how could it be tainted?! - if (_is_abs($_PERL)) { - } - elsif (-x $Config{perlpath}) { - $_PERL = $Config{perlpath}; - } - else { - ($_PERL) = - map { /(.*)/ } - grep { -x $_ } - map { join($_DIR_JOIN, $_, $_PERL) } - split /\Q$Config{path_sep}\E/, $ENV{PATH}; - } - } - local @ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}; - my $cmd = $drive ? "eval { Cwd::getdcwd(q($drive)) }" - : 'getcwd'; - my $cwd = `"$_PERL" -MCwd -le "print $cmd"`; - chomp $cwd; - if (!length $cwd && $drive) { - $cwd = $drive; - } - $cwd =~ s/$_DIR_SPLIT?$/$_DIR_JOIN/; - $cwd; - } - - sub _catdir { - if (_USE_FSPEC) { - require File::Spec; - File::Spec->catdir(@_); - } - else { - my $dir = join($_DIR_JOIN, @_); - $dir =~ s{($_DIR_SPLIT)(?:\.?$_DIR_SPLIT)+}{$1}g; - $dir; - } - } - - sub _is_abs { - if (_USE_FSPEC) { - require File::Spec; - File::Spec->file_name_is_absolute($_[0]); - } - else { - $_[0] =~ $_ROOT; - } - } - - sub _rel2abs { - my ($dir, $base) = @_; - return $dir - if _is_abs($dir); - - $base = _WIN32 && $dir =~ s/^([A-Za-z]:)// ? _cwd("$1") - : $base ? $base - : _cwd; - return _catdir($base, $dir); - } - - sub import { - my ($class, @args) = @_; - push @args, @ARGV - if $0 eq '-'; - - my @steps; - my %opts; - my $shelltype; - - while (@args) { - my $arg = shift @args; - # check for lethal dash first to stop processing before causing problems - # the fancy dash is U+2212 or \xE2\x88\x92 - if ($arg =~ /\xE2\x88\x92/ or $arg =~ /āˆ’/) { - die <<'DEATH'; - WHOA THERE! It looks like you've got some fancy dashes in your commandline! - These are *not* the traditional -- dashes that software recognizes. You - probably got these by copy-pasting from the perldoc for this module as - rendered by a UTF8-capable formatter. This most typically happens on an OS X - terminal, but can happen elsewhere too. Please try again after replacing the - dashes with normal minus signs. - DEATH - } - elsif ($arg eq '--self-contained') { - die <<'DEATH'; - FATAL: The local::lib --self-contained flag has never worked reliably and the - original author, Mark Stosberg, was unable or unwilling to maintain it. As - such, this flag has been removed from the local::lib codebase in order to - prevent misunderstandings and potentially broken builds. The local::lib authors - recommend that you look at the lib::core::only module shipped with this - distribution in order to create a more robust environment that is equivalent to - what --self-contained provided (although quite possibly not what you originally - thought it provided due to the poor quality of the documentation, for which we - apologise). - DEATH - } - elsif( $arg =~ /^--deactivate(?:=(.*))?$/ ) { - my $path = defined $1 ? $1 : shift @args; - push @steps, ['deactivate', $path]; - } - elsif ( $arg eq '--deactivate-all' ) { - push @steps, ['deactivate_all']; - } - elsif ( $arg =~ /^--shelltype(?:=(.*))?$/ ) { - $shelltype = defined $1 ? $1 : shift @args; - } - elsif ( $arg eq '--no-create' ) { - $opts{no_create} = 1; - } - elsif ( $arg =~ /^--/ ) { - die "Unknown import argument: $arg"; - } - else { - push @steps, ['activate', $arg]; - } - } - if (!@steps) { - push @steps, ['activate', undef]; - } - - my $self = $class->new(%opts); - - for (@steps) { - my ($method, @args) = @$_; - $self = $self->$method(@args); - } - - if ($0 eq '-') { - print $self->environment_vars_string($shelltype); - exit 0; - } - else { - $self->setup_local_lib; - } - } - - sub new { - my $class = shift; - bless {@_}, $class; - } - - sub clone { - my $self = shift; - bless {%$self, @_}, ref $self; - } - - sub inc { $_[0]->{inc} ||= \@INC } - sub libs { $_[0]->{libs} ||= [ \'PERL5LIB' ] } - sub bins { $_[0]->{bins} ||= [ \'PATH' ] } - sub roots { $_[0]->{roots} ||= [ \'PERL_LOCAL_LIB_ROOT' ] } - sub extra { $_[0]->{extra} ||= {} } - sub no_create { $_[0]->{no_create} } - - my $_archname = $Config{archname}; - my $_version = $Config{version}; - my @_inc_version_list = reverse split / /, $Config{inc_version_list}; - my $_path_sep = $Config{path_sep}; - - sub _as_list { - my $list = shift; - grep length, map { - !(ref $_ && ref $_ eq 'SCALAR') ? $_ : ( - defined $ENV{$$_} ? split(/\Q$_path_sep/, $ENV{$$_}) - : () - ) - } ref $list ? @$list : $list; - } - sub _remove_from { - my ($list, @remove) = @_; - return @$list - if !@remove; - my %remove = map { $_ => 1 } @remove; - grep !$remove{$_}, _as_list($list); - } - - my @_lib_subdirs = ( - [$_version, $_archname], - [$_version], - [$_archname], - (@_inc_version_list ? \@_inc_version_list : ()), - [], - ); - - sub install_base_bin_path { - my ($class, $path) = @_; - return _catdir($path, 'bin'); - } - sub install_base_perl_path { - my ($class, $path) = @_; - return _catdir($path, 'lib', 'perl5'); - } - sub install_base_arch_path { - my ($class, $path) = @_; - _catdir($class->install_base_perl_path($path), $_archname); - } - - sub lib_paths_for { - my ($class, $path) = @_; - my $base = $class->install_base_perl_path($path); - return map { _catdir($base, @$_) } @_lib_subdirs; - } - - sub _mm_escape_path { - my $path = shift; - $path =~ s/\\/\\\\/g; - if ($path =~ s/ /\\ /g) { - $path = qq{"$path"}; - } - return $path; - } - - sub _mb_escape_path { - my $path = shift; - $path =~ s/\\/\\\\/g; - return qq{"$path"}; - } - - sub installer_options_for { - my ($class, $path) = @_; - return ( - PERL_MM_OPT => - defined $path ? "INSTALL_BASE="._mm_escape_path($path) : undef, - PERL_MB_OPT => - defined $path ? "--install_base "._mb_escape_path($path) : undef, - ); - } - - sub active_paths { - my ($self) = @_; - $self = ref $self ? $self : $self->new; - - return grep { - # screen out entries that aren't actually reflected in @INC - my $active_ll = $self->install_base_perl_path($_); - grep { $_ eq $active_ll } @{$self->inc}; - } _as_list($self->roots); - } - - - sub deactivate { - my ($self, $path) = @_; - $self = $self->new unless ref $self; - $path = $self->resolve_path($path); - $path = $self->normalize_path($path); - - my @active_lls = $self->active_paths; - - if (!grep { $_ eq $path } @active_lls) { - warn "Tried to deactivate inactive local::lib '$path'\n"; - return $self; - } - - my %args = ( - bins => [ _remove_from($self->bins, - $self->install_base_bin_path($path)) ], - libs => [ _remove_from($self->libs, - $self->install_base_perl_path($path)) ], - inc => [ _remove_from($self->inc, - $self->lib_paths_for($path)) ], - roots => [ _remove_from($self->roots, $path) ], - ); - - $args{extra} = { $self->installer_options_for($args{roots}[0]) }; - - $self->clone(%args); - } - - sub deactivate_all { - my ($self) = @_; - $self = $self->new unless ref $self; - - my @active_lls = $self->active_paths; - - my %args; - if (@active_lls) { - %args = ( - bins => [ _remove_from($self->bins, - map $self->install_base_bin_path($_), @active_lls) ], - libs => [ _remove_from($self->libs, - map $self->install_base_perl_path($_), @active_lls) ], - inc => [ _remove_from($self->inc, - map $self->lib_paths_for($_), @active_lls) ], - roots => [ _remove_from($self->roots, @active_lls) ], - ); - } - - $args{extra} = { $self->installer_options_for(undef) }; - - $self->clone(%args); - } - - sub activate { - my ($self, $path) = @_; - $self = $self->new unless ref $self; - $path = $self->resolve_path($path); - $self->ensure_dir_structure_for($path) - unless $self->no_create; - - $path = $self->normalize_path($path); - - my @active_lls = $self->active_paths; - - if (grep { $_ eq $path } @active_lls[1 .. $#active_lls]) { - $self = $self->deactivate($path); - } - - my %args; - if (!@active_lls || $active_lls[0] ne $path) { - %args = ( - bins => [ $self->install_base_bin_path($path), @{$self->bins} ], - libs => [ $self->install_base_perl_path($path), @{$self->libs} ], - inc => [ $self->lib_paths_for($path), @{$self->inc} ], - roots => [ $path, @{$self->roots} ], - ); - } - - $args{extra} = { $self->installer_options_for($path) }; - - $self->clone(%args); - } - - sub normalize_path { - my ($self, $path) = @_; - $path = ( Win32::GetShortPathName($path) || $path ) - if $^O eq 'MSWin32'; - return $path; - } - - sub build_environment_vars_for { - my $self = $_[0]->new->activate($_[1]); - $self->build_environment_vars; - } - sub build_activate_environment_vars_for { - my $self = $_[0]->new->activate($_[1]); - $self->build_environment_vars; - } - sub build_deactivate_environment_vars_for { - my $self = $_[0]->new->deactivate($_[1]); - $self->build_environment_vars; - } - sub build_deact_all_environment_vars_for { - my $self = $_[0]->new->deactivate_all; - $self->build_environment_vars; - } - sub build_environment_vars { - my $self = shift; - ( - PATH => join($_path_sep, _as_list($self->bins)), - PERL5LIB => join($_path_sep, _as_list($self->libs)), - PERL_LOCAL_LIB_ROOT => join($_path_sep, _as_list($self->roots)), - %{$self->extra}, - ); - } - - sub setup_local_lib_for { - my $self = $_[0]->new->activate($_[1]); - $self->setup_local_lib; - } - - sub setup_local_lib { - my $self = shift; - - # if Carp is already loaded, ensure Carp::Heavy is also loaded, to avoid - # $VERSION mismatch errors (Carp::Heavy loads Carp, so we do not need to - # check in the other direction) - require Carp::Heavy if $INC{'Carp.pm'}; - - $self->setup_env_hash; - @INC = @{$self->inc}; - } - - sub setup_env_hash_for { - my $self = $_[0]->new->activate($_[1]); - $self->setup_env_hash; - } - sub setup_env_hash { - my $self = shift; - my %env = $self->build_environment_vars; - for my $key (keys %env) { - if (defined $env{$key}) { - $ENV{$key} = $env{$key}; - } - else { - delete $ENV{$key}; - } - } - } - - sub print_environment_vars_for { - print $_[0]->environment_vars_string_for(@_[1..$#_]); - } - - sub environment_vars_string_for { - my $self = $_[0]->new->activate($_[1]); - $self->environment_vars_string; - } - sub environment_vars_string { - my ($self, $shelltype) = @_; - - $shelltype ||= $self->guess_shelltype; - - my $extra = $self->extra; - my @envs = ( - PATH => $self->bins, - PERL5LIB => $self->libs, - PERL_LOCAL_LIB_ROOT => $self->roots, - map { $_ => $extra->{$_} } sort keys %$extra, - ); - $self->_build_env_string($shelltype, \@envs); - } - - sub _build_env_string { - my ($self, $shelltype, $envs) = @_; - my @envs = @$envs; - - my $build_method = "build_${shelltype}_env_declaration"; - - my $out = ''; - while (@envs) { - my ($name, $value) = (shift(@envs), shift(@envs)); - if ( - ref $value - && @$value == 1 - && ref $value->[0] - && ref $value->[0] eq 'SCALAR' - && ${$value->[0]} eq $name) { - next; - } - $out .= $self->$build_method($name, $value); - } - my $wrap_method = "wrap_${shelltype}_output"; - if ($self->can($wrap_method)) { - return $self->$wrap_method($out); - } - return $out; - } - - sub build_bourne_env_declaration { - my ($class, $name, $args) = @_; - my $value = $class->_interpolate($args, '${%s}', qr/["\\\$!`]/, '\\%s'); - - if (!defined $value) { - return qq{unset $name;\n}; - } - - $value =~ s/(^|\G|$_path_sep)\$\{$name\}$_path_sep/$1\${$name}\${$name+$_path_sep}/g; - $value =~ s/$_path_sep\$\{$name\}$/\${$name+$_path_sep}\${$name}/; - - qq{${name}="$value"; export ${name};\n} - } - - sub build_csh_env_declaration { - my ($class, $name, $args) = @_; - my ($value, @vars) = $class->_interpolate($args, '${%s}', '"', '"\\%s"'); - if (!defined $value) { - return qq{unsetenv $name;\n}; - } - - my $out = ''; - for my $var (@vars) { - $out .= qq{if ! \$?$name setenv $name '';\n}; - } - - my $value_without = $value; - if ($value_without =~ s/(?:^|$_path_sep)\$\{$name\}(?:$_path_sep|$)//g) { - $out .= qq{if "\${$name}" != '' setenv $name "$value";\n}; - $out .= qq{if "\${$name}" == '' }; - } - $out .= qq{setenv $name "$value_without";\n}; - return $out; - } - - sub build_cmd_env_declaration { - my ($class, $name, $args) = @_; - my $value = $class->_interpolate($args, '%%%s%%', qr(%), '%s'); - if (!$value) { - return qq{\@set $name=\n}; - } - - my $out = ''; - my $value_without = $value; - if ($value_without =~ s/(?:^|$_path_sep)%$name%(?:$_path_sep|$)//g) { - $out .= qq{\@if not "%$name%"=="" set "$name=$value"\n}; - $out .= qq{\@if "%$name%"=="" }; - } - $out .= qq{\@set "$name=$value_without"\n}; - return $out; - } - - sub build_powershell_env_declaration { - my ($class, $name, $args) = @_; - my $value = $class->_interpolate($args, '$env:%s', '"', '`%s'); - - if (!$value) { - return qq{Remove-Item -ErrorAction 0 Env:\\$name;\n}; - } - - my $maybe_path_sep = qq{\$(if("\$env:$name"-eq""){""}else{"$_path_sep"})}; - $value =~ s/(^|\G|$_path_sep)\$env:$name$_path_sep/$1\$env:$name"+$maybe_path_sep+"/g; - $value =~ s/$_path_sep\$env:$name$/"+$maybe_path_sep+\$env:$name+"/; - - qq{\$env:$name = \$("$value");\n}; - } - sub wrap_powershell_output { - my ($class, $out) = @_; - return $out || " \n"; - } - - sub build_fish_env_declaration { - my ($class, $name, $args) = @_; - my $value = $class->_interpolate($args, '$%s', qr/[\\"' ]/, '\\%s'); - if (!defined $value) { - return qq{set -e $name;\n}; - } - $value =~ s/$_path_sep/ /g; - qq{set -x $name $value;\n}; - } - - sub _interpolate { - my ($class, $args, $var_pat, $escape, $escape_pat) = @_; - return - unless defined $args; - my @args = ref $args ? @$args : $args; - return - unless @args; - my @vars = map { $$_ } grep { ref $_ eq 'SCALAR' } @args; - my $string = join $_path_sep, map { - ref $_ eq 'SCALAR' ? sprintf($var_pat, $$_) : do { - s/($escape)/sprintf($escape_pat, $1)/ge; $_; - }; - } @args; - return wantarray ? ($string, \@vars) : $string; - } - - sub pipeline; - - sub pipeline { - my @methods = @_; - my $last = pop(@methods); - if (@methods) { - \sub { - my ($obj, @args) = @_; - $obj->${pipeline @methods}( - $obj->$last(@args) - ); - }; - } else { - \sub { - shift->$last(@_); - }; - } - } - - sub resolve_path { - my ($class, $path) = @_; - - $path = $class->${pipeline qw( - resolve_relative_path - resolve_home_path - resolve_empty_path - )}($path); - - $path; - } - - sub resolve_empty_path { - my ($class, $path) = @_; - if (defined $path) { - $path; - } else { - '~/perl5'; - } - } - - sub resolve_home_path { - my ($class, $path) = @_; - $path =~ /^~([^\/]*)/ or return $path; - my $user = $1; - my $homedir = do { - if (! length($user) && defined $ENV{HOME}) { - $ENV{HOME}; - } - else { - require File::Glob; - File::Glob::bsd_glob("~$user", File::Glob::GLOB_TILDE()); - } - }; - unless (defined $homedir) { - require Carp; require Carp::Heavy; - Carp::croak( - "Couldn't resolve homedir for " - .(defined $user ? $user : 'current user') - ); - } - $path =~ s/^~[^\/]*/$homedir/; - $path; - } - - sub resolve_relative_path { - my ($class, $path) = @_; - _rel2abs($path); - } - - sub ensure_dir_structure_for { - my ($class, $path) = @_; - unless (-d $path) { - warn "Attempting to create directory ${path}\n"; - } - require File::Basename; - my @dirs; - while(!-d $path) { - push @dirs, $path; - $path = File::Basename::dirname($path); - } - mkdir $_ for reverse @dirs; - return; - } - - sub guess_shelltype { - my $shellbin - = defined $ENV{SHELL} - ? ($ENV{SHELL} =~ /([\w.]+)$/)[-1] - : ( $^O eq 'MSWin32' && exists $ENV{'!EXITCODE'} ) - ? 'bash' - : ( $^O eq 'MSWin32' && $ENV{PROMPT} && $ENV{COMSPEC} ) - ? ($ENV{COMSPEC} =~ /([\w.]+)$/)[-1] - : ( $^O eq 'MSWin32' && !$ENV{PROMPT} ) - ? 'powershell.exe' - : 'sh'; - - for ($shellbin) { - return - /csh$/ ? 'csh' - : /fish/ ? 'fish' - : /command(?:\.com)?$/i ? 'cmd' - : /cmd(?:\.exe)?$/i ? 'cmd' - : /4nt(?:\.exe)?$/i ? 'cmd' - : /powershell(?:\.exe)?$/i ? 'powershell' - : 'bourne'; - } - } - - 1; - __END__ - - =encoding utf8 - - =head1 NAME - - local::lib - create and use a local lib/ for perl modules with PERL5LIB - - =head1 SYNOPSIS - - In code - - - use local::lib; # sets up a local lib at ~/perl5 - - use local::lib '~/foo'; # same, but ~/foo - - # Or... - use FindBin; - use local::lib "$FindBin::Bin/../support"; # app-local support library - - From the shell - - - # Install LWP and its missing dependencies to the '~/perl5' directory - perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)' - - # Just print out useful shell commands - $ perl -Mlocal::lib - PERL_MB_OPT='--install_base /home/username/perl5'; export PERL_MB_OPT; - PERL_MM_OPT='INSTALL_BASE=/home/username/perl5'; export PERL_MM_OPT; - PERL5LIB="/home/username/perl5/lib/perl5"; export PERL5LIB; - PATH="/home/username/perl5/bin:$PATH"; export PATH; - PERL_LOCAL_LIB_ROOT="/home/usename/perl5:$PERL_LOCAL_LIB_ROOT"; export PERL_LOCAL_LIB_ROOT; - - From a .bashrc file - - - [ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" - - =head2 The bootstrapping technique - - A typical way to install local::lib is using what is known as the - "bootstrapping" technique. You would do this if your system administrator - hasn't already installed local::lib. In this case, you'll need to install - local::lib in your home directory. - - Even if you do have administrative privileges, you will still want to set up your - environment variables, as discussed in step 4. Without this, you would still - install the modules into the system CPAN installation and also your Perl scripts - will not use the lib/ path you bootstrapped with local::lib. - - By default local::lib installs itself and the CPAN modules into ~/perl5. - - Windows users must also see L. - - =over 4 - - =item 1. - - Download and unpack the local::lib tarball from CPAN (search for "Download" - on the CPAN page about local::lib). Do this as an ordinary user, not as root - or administrator. Unpack the file in your home directory or in any other - convenient location. - - =item 2. - - Run this: - - perl Makefile.PL --bootstrap - - If the system asks you whether it should automatically configure as much - as possible, you would typically answer yes. - - In order to install local::lib into a directory other than the default, you need - to specify the name of the directory when you call bootstrap, as follows: - - perl Makefile.PL --bootstrap=~/foo - - =item 3. - - Run this: (local::lib assumes you have make installed on your system) - - make test && make install - - =item 4. - - Now we need to setup the appropriate environment variables, so that Perl - starts using our newly generated lib/ directory. If you are using bash or - any other Bourne shells, you can add this to your shell startup script this - way: - - echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bashrc - - If you are using C shell, you can do this as follows: - - /bin/csh - echo $SHELL - /bin/csh - echo 'eval `perl -I$HOME/perl5/lib/perl5 -Mlocal::lib`' >> ~/.cshrc - - If you passed to bootstrap a directory other than default, you also need to - give that as import parameter to the call of the local::lib module like this - way: - - echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)"' >>~/.bashrc - - After writing your shell configuration file, be sure to re-read it to get the - changed settings into your current shell's environment. Bourne shells use - C<. ~/.bashrc> for this, whereas C shells use C. - - =back - - If you're on a slower machine, or are operating under draconian disk space - limitations, you can disable the automatic generation of manpages from POD when - installing modules by using the C<--no-manpages> argument when bootstrapping: - - perl Makefile.PL --bootstrap --no-manpages - - To avoid doing several bootstrap for several Perl module environments on the - same account, for example if you use it for several different deployed - applications independently, you can use one bootstrapped local::lib - installation to install modules in different directories directly this way: - - cd ~/mydir1 - perl -Mlocal::lib=./ - eval $(perl -Mlocal::lib=./) ### To set the environment for this shell alone - printenv ### You will see that ~/mydir1 is in the PERL5LIB - perl -MCPAN -e install ... ### whatever modules you want - cd ../mydir2 - ... REPEAT ... - - When used in a C<.bashrc> file, it is recommended that you protect against - re-activating a directory in a sub-shell. This can be done by checking the - C<$SHLVL> variable as shown in synopsis. Without this, sub-shells created by - the user or other programs will override changes made to the parent shell's - environment. - - If you are working with several C environments, you may want to - remove some of them from the current environment without disturbing the others. - You can deactivate one environment like this (using bourne sh): - - eval $(perl -Mlocal::lib=--deactivate,~/path) - - which will generate and run the commands needed to remove C<~/path> from your - various search paths. Whichever environment was B will - remain the target for module installations. That is, if you activate - C<~/path_A> and then you activate C<~/path_B>, new modules you install will go - in C<~/path_B>. If you deactivate C<~/path_B> then modules will be installed - into C<~/pathA> -- but if you deactivate C<~/path_A> then they will still be - installed in C<~/pathB> because pathB was activated later. - - You can also ask C to clean itself completely out of the current - shell's environment with the C<--deactivate-all> option. - For multiple environments for multiple apps you may need to include a modified - version of the C<< use FindBin >> instructions in the "In code" sample above. - If you did something like the above, you have a set of Perl modules at C<< - ~/mydir1/lib >>. If you have a script at C<< ~/mydir1/scripts/myscript.pl >>, - you need to tell it where to find the modules you installed for it at C<< - ~/mydir1/lib >>. - - In C<< ~/mydir1/scripts/myscript.pl >>: - - use strict; - use warnings; - use local::lib "$FindBin::Bin/.."; ### points to ~/mydir1 and local::lib finds lib - use lib "$FindBin::Bin/../lib"; ### points to ~/mydir1/lib - - Put this before any BEGIN { ... } blocks that require the modules you installed. - - =head2 Differences when using this module under Win32 - - To set up the proper environment variables for your current session of - C, you can use this: - - C:\>perl -Mlocal::lib - set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5 - set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5 - set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5 - set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH% - - ### To set the environment for this shell alone - C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\tmp.bat - ### instead of $(perl -Mlocal::lib=./) - - If you want the environment entries to persist, you'll need to add them to the - Control Panel's System applet yourself or use L. - - The "~" is translated to the user's profile directory (the directory named for - the user under "Documents and Settings" (Windows XP or earlier) or "Users" - (Windows Vista or later)) unless $ENV{HOME} exists. After that, the home - directory is translated to a short name (which means the directory must exist) - and the subdirectories are created. - - =head3 PowerShell - - local::lib also supports PowerShell, and can be used with the - C cmdlet. - - Invoke-Expression "$(perl -Mlocal::lib)" - - =head1 RATIONALE - - The version of a Perl package on your machine is not always the version you - need. Obviously, the best thing to do would be to update to the version you - need. However, you might be in a situation where you're prevented from doing - this. Perhaps you don't have system administrator privileges; or perhaps you - are using a package management system such as Debian, and nobody has yet gotten - around to packaging up the version you need. - - local::lib solves this problem by allowing you to create your own directory of - Perl packages downloaded from CPAN (in a multi-user system, this would typically - be within your own home directory). The existing system Perl installation is - not affected; you simply invoke Perl with special options so that Perl uses the - packages in your own local package directory rather than the system packages. - local::lib arranges things so that your locally installed version of the Perl - packages takes precedence over the system installation. - - If you are using a package management system (such as Debian), you don't need to - worry about Debian and CPAN stepping on each other's toes. Your local version - of the packages will be written to an entirely separate directory from those - installed by Debian. - - =head1 DESCRIPTION - - This module provides a quick, convenient way of bootstrapping a user-local Perl - module library located within the user's home directory. It also constructs and - prints out for the user the list of environment variables using the syntax - appropriate for the user's current shell (as specified by the C - environment variable), suitable for directly adding to one's shell - configuration file. - - More generally, local::lib allows for the bootstrapping and usage of a - directory containing Perl modules outside of Perl's C<@INC>. This makes it - easier to ship an application with an app-specific copy of a Perl module, or - collection of modules. Useful in cases like when an upstream maintainer hasn't - applied a patch to a module of theirs that you need for your application. - - On import, local::lib sets the following environment variables to appropriate - values: - - =over 4 - - =item PERL_MB_OPT - - =item PERL_MM_OPT - - =item PERL5LIB - - =item PATH - - =item PERL_LOCAL_LIB_ROOT - - =back - - When possible, these will be appended to instead of overwritten entirely. - - These values are then available for reference by any code after import. - - =head1 CREATING A SELF-CONTAINED SET OF MODULES - - See L for one way to do this - but note that - there are a number of caveats, and the best approach is always to perform a - build against a clean perl (i.e. site and vendor as close to empty as possible). - - =head1 IMPORT OPTIONS - - Options are values that can be passed to the C import besides the - directory to use. They are specified as C - or C. - - =head2 --deactivate - - Remove the chosen path (or the default path) from the module search paths if it - was added by C, instead of adding it. - - =head2 --deactivate-all - - Remove all directories that were added to search paths by C from the - search paths. - - =head2 --shelltype - - Specify the shell type to use for output. By default, the shell will be - detected based on the environment. Should be one of: C, C, - C, or C. - - =head2 --no-create - - Prevents C from creating directories when activating dirs. This is - likely to cause issues on Win32 systems. - - =head1 CLASS METHODS - - =head2 ensure_dir_structure_for - - =over 4 - - =item Arguments: $path - - =item Return value: None - - =back - - Attempts to create the given path, and all required parent directories. Throws - an exception on failure. - - =head2 print_environment_vars_for - - =over 4 - - =item Arguments: $path - - =item Return value: None - - =back - - Prints to standard output the variables listed above, properly set to use the - given path as the base directory. - - =head2 build_environment_vars_for - - =over 4 - - =item Arguments: $path - - =item Return value: %environment_vars - - =back - - Returns a hash with the variables listed above, properly set to use the - given path as the base directory. - - =head2 setup_env_hash_for - - =over 4 - - =item Arguments: $path - - =item Return value: None - - =back - - Constructs the C<%ENV> keys for the given path, by calling - L. - - =head2 active_paths - - =over 4 - - =item Arguments: None - - =item Return value: @paths - - =back - - Returns a list of active C paths, according to the - C environment variable and verified against - what is really in C<@INC>. - - =head2 install_base_perl_path - - =over 4 - - =item Arguments: $path - - =item Return value: $install_base_perl_path - - =back - - Returns a path describing where to install the Perl modules for this local - library installation. Appends the directories C and C to the given - path. - - =head2 lib_paths_for - - =over 4 - - =item Arguments: $path - - =item Return value: @lib_paths - - =back - - Returns the list of paths perl will search for libraries, given a base path. - This includes the base path itself, the architecture specific subdirectory, and - perl version specific subdirectories. These paths may not all exist. - - =head2 install_base_bin_path - - =over 4 - - =item Arguments: $path - - =item Return value: $install_base_bin_path - - =back - - Returns a path describing where to install the executable programs for this - local library installation. Appends the directory C to the given path. - - =head2 installer_options_for - - =over 4 - - =item Arguments: $path - - =item Return value: %installer_env_vars - - =back - - Returns a hash of environment variables that should be set to cause - installation into the given path. - - =head2 resolve_empty_path - - =over 4 - - =item Arguments: $path - - =item Return value: $base_path - - =back - - Builds and returns the base path into which to set up the local module - installation. Defaults to C<~/perl5>. - - =head2 resolve_home_path - - =over 4 - - =item Arguments: $path - - =item Return value: $home_path - - =back - - Attempts to find the user's home directory. If installed, uses C - for this purpose. If no definite answer is available, throws an exception. - - =head2 resolve_relative_path - - =over 4 - - =item Arguments: $path - - =item Return value: $absolute_path - - =back - - Translates the given path into an absolute path. - - =head2 resolve_path - - =over 4 - - =item Arguments: $path - - =item Return value: $absolute_path - - =back - - Calls the following in a pipeline, passing the result from the previous to the - next, in an attempt to find where to configure the environment for a local - library installation: L, L, - L. Passes the given path argument to - L which then returns a result that is passed to - L, which then has its result passed to - L. The result of this final call is returned from - L. - - =head1 OBJECT INTERFACE - - =head2 new - - =over 4 - - =item Arguments: %attributes - - =item Return value: $local_lib - - =back - - Constructs a new C object, representing the current state of - C<@INC> and the relevant environment variables. - - =head1 ATTRIBUTES - - =head2 roots - - An arrayref representing active C directories. - - =head2 inc - - An arrayref representing C<@INC>. - - =head2 libs - - An arrayref representing the PERL5LIB environment variable. - - =head2 bins - - An arrayref representing the PATH environment variable. - - =head2 extra - - A hashref of extra environment variables (e.g. C and - C) - - =head2 no_create - - If set, C will not try to create directories when activating them. - - =head1 OBJECT METHODS - - =head2 clone - - =over 4 - - =item Arguments: %attributes - - =item Return value: $local_lib - - =back - - Constructs a new C object based on the existing one, overriding the - specified attributes. - - =head2 activate - - =over 4 - - =item Arguments: $path - - =item Return value: $new_local_lib - - =back - - Constructs a new instance with the specified path active. - - =head2 deactivate - - =over 4 - - =item Arguments: $path - - =item Return value: $new_local_lib - - =back - - Constructs a new instance with the specified path deactivated. - - =head2 deactivate_all - - =over 4 - - =item Arguments: None - - =item Return value: $new_local_lib - - =back - - Constructs a new instance with all C directories deactivated. - - =head2 environment_vars_string - - =over 4 - - =item Arguments: [ $shelltype ] - - =item Return value: $shell_env_string - - =back - - Returns a string to set up the C, meant to be run by a shell. - - =head2 build_environment_vars - - =over 4 - - =item Arguments: None - - =item Return value: %environment_vars - - =back - - Returns a hash with the variables listed above, properly set to use the - given path as the base directory. - - =head2 setup_env_hash - - =over 4 - - =item Arguments: None - - =item Return value: None - - =back - - Constructs the C<%ENV> keys for the given path, by calling - L. - - =head2 setup_local_lib - - Constructs the C<%ENV> hash using L, and set up C<@INC>. - - =head1 A WARNING ABOUT UNINST=1 - - Be careful about using local::lib in combination with "make install UNINST=1". - The idea of this feature is that will uninstall an old version of a module - before installing a new one. However it lacks a safety check that the old - version and the new version will go in the same directory. Used in combination - with local::lib, you can potentially delete a globally accessible version of a - module while installing the new version in a local place. Only combine "make - install UNINST=1" and local::lib if you understand these possible consequences. - - =head1 LIMITATIONS - - =over 4 - - =item * Directory names with spaces in them are not well supported by the perl - toolchain and the programs it uses. Pure-perl distributions should support - spaces, but problems are more likely with dists that require compilation. A - workaround you can do is moving your local::lib to a directory with spaces - B you installed all modules inside your local::lib bootstrap. But be - aware that you can't update or install CPAN modules after the move. - - =item * Rather basic shell detection. Right now anything with csh in its name is - assumed to be a C shell or something compatible, and everything else is assumed - to be Bourne, except on Win32 systems. If the C environment variable is - not set, a Bourne-compatible shell is assumed. - - =item * Kills any existing PERL_MM_OPT or PERL_MB_OPT. - - =item * Should probably auto-fixup CPAN config if not already done. - - =item * On VMS and MacOS Classic (pre-OS X), local::lib loads L. - This means any L version installed in the local::lib will be - ignored by scripts using local::lib. A workaround for this is using - C instead of using C directly. - - =item * Conflicts with L's C option. - C uses the C option, as it has more predictable and - sane behavior. If something attempts to use the C option when running - a F, L will refuse to run, as the two - options conflict. This can be worked around by temporarily unsetting the - C environment variable. - - =item * Conflicts with L's C<--prefix> option. Similar to the - previous limitation, but any C<--prefix> option specified will be ignored. - This can be worked around by temporarily unsetting the C - environment variable. - - =back - - Patches very much welcome for any of the above. - - =over 4 - - =item * On Win32 systems, does not have a way to write the created environment - variables to the registry, so that they can persist through a reboot. - - =back - - =head1 TROUBLESHOOTING - - If you've configured local::lib to install CPAN modules somewhere in to your - home directory, and at some point later you try to install a module with C, but it fails with an error like: C and buried within the install log is an - error saying C<'INSTALL_BASE' is not a known MakeMaker parameter name>, then - you've somehow lost your updated ExtUtils::MakeMaker module. - - To remedy this situation, rerun the bootstrapping procedure documented above. - - Then, run C - - Finally, re-run C and it should install without problems. - - =head1 ENVIRONMENT - - =over 4 - - =item SHELL - - =item COMSPEC - - local::lib looks at the user's C environment variable when printing out - commands to add to the shell configuration file. - - On Win32 systems, C is also examined. - - =back - - =head1 SEE ALSO - - =over 4 - - =item * L - - =back - - =head1 SUPPORT - - IRC: - - Join #local-lib on irc.perl.org. - - =head1 AUTHOR - - Matt S Trout http://www.shadowcat.co.uk/ - - auto_install fixes kindly sponsored by http://www.takkle.com/ - - =head1 CONTRIBUTORS - - Patches to correctly output commands for csh style shells, as well as some - documentation additions, contributed by Christopher Nehren . - - Doc patches for a custom local::lib directory, more cleanups in the english - documentation and a L contributed by - Torsten Raudssus . - - Hans Dieter Pearcey sent in some additional tests for ensuring - things will install properly, submitted a fix for the bug causing problems with - writing Makefiles during bootstrapping, contributed an example program, and - submitted yet another fix to ensure that local::lib can install and bootstrap - properly. Many, many thanks! - - pattern of Freenode IRC contributed the beginnings of the Troubleshooting - section. Many thanks! - - Patch to add Win32 support contributed by Curtis Jewell . - - Warnings for missing PATH/PERL5LIB (as when not running interactively) silenced - by a patch from Marco Emilio Poleggi. - - Mark Stosberg provided the code for the now deleted - '--self-contained' option. - - Documentation patches to make win32 usage clearer by - David Mertens (run4flat). - - Brazilian L and minor doc - patches contributed by Breno G. de Oliveira . - - Improvements to stacking multiple local::lib dirs and removing them from the - environment later on contributed by Andrew Rodland . - - Patch for Carp version mismatch contributed by Hakim Cassimally - . - - Rewrite of internals and numerous bug fixes and added features contributed by - Graham Knop . - - =head1 COPYRIGHT - - Copyright (c) 2007 - 2013 the local::lib L and L as - listed above. - - =head1 LICENSE - - This is free software; you can redistribute it and/or modify it under - the same terms as the Perl 5 programming language system itself. - - =cut -LOCAL_LIB - -$fatpacked{"parent.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'PARENT'; - package parent; - use strict; - use vars qw($VERSION); - $VERSION = '0.228'; - - sub import { - my $class = shift; - - my $inheritor = caller(0); - - if ( @_ and $_[0] eq '-norequire' ) { - shift @_; - } else { - for ( my @filename = @_ ) { - if ( $_ eq $inheritor ) { - warn "Class '$inheritor' tried to inherit from itself\n"; - }; - - s{::|'}{/}g; - require "$_.pm"; # dies if the file is not found - } - } - - { - no strict 'refs'; - push @{"$inheritor\::ISA"}, @_; - }; - }; - - "All your base are belong to us" - - __END__ - - =encoding utf8 - - =head1 NAME - - parent - Establish an ISA relationship with base classes at compile time - - =head1 SYNOPSIS - - package Baz; - use parent qw(Foo Bar); - - =head1 DESCRIPTION - - Allows you to both load one or more modules, while setting up inheritance from - those modules at the same time. Mostly similar in effect to - - package Baz; - BEGIN { - require Foo; - require Bar; - push @ISA, qw(Foo Bar); - } - - By default, every base class needs to live in a file of its own. - If you want to have a subclass and its parent class in the same file, you - can tell C not to load any modules by using the C<-norequire> switch: - - package Foo; - sub exclaim { "I CAN HAS PERL" } - - package DoesNotLoadFooBar; - use parent -norequire, 'Foo', 'Bar'; - # will not go looking for Foo.pm or Bar.pm - - This is equivalent to the following code: - - package Foo; - sub exclaim { "I CAN HAS PERL" } - - package DoesNotLoadFooBar; - push @DoesNotLoadFooBar::ISA, 'Foo', 'Bar'; - - This is also helpful for the case where a package lives within - a differently named file: - - package MyHash; - use Tie::Hash; - use parent -norequire, 'Tie::StdHash'; - - This is equivalent to the following code: - - package MyHash; - require Tie::Hash; - push @ISA, 'Tie::StdHash'; - - If you want to load a subclass from a file that C would - not consider an eligible filename (that is, it does not end in - either C<.pm> or C<.pmc>), use the following code: - - package MySecondPlugin; - require './plugins/custom.plugin'; # contains Plugin::Custom - use parent -norequire, 'Plugin::Custom'; - - =head1 DIAGNOSTICS - - =over 4 - - =item Class 'Foo' tried to inherit from itself - - Attempting to inherit from yourself generates a warning. - - package Foo; - use parent 'Foo'; - - =back - - =head1 HISTORY - - This module was forked from L to remove the cruft - that had accumulated in it. - - =head1 CAVEATS - - =head1 SEE ALSO - - L - - =head1 AUTHORS AND CONTRIBUTORS - - RafaĆ«l Garcia-Suarez, Bart Lateur, Max Maischein, Anno Siegel, Michael Schwern - - =head1 MAINTAINER - - Max Maischein C< corion@cpan.org > - - Copyright (c) 2007-10 Max Maischein C<< >> - Based on the idea of C, which was introduced with Perl 5.004_04. - - =head1 LICENSE - - This module is released under the same terms as Perl itself. - - =cut -PARENT - -$fatpacked{"version.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION'; - #!perl -w - package version; - - use 5.006002; - use strict; - use warnings::register; - if ($] >= 5.015) { - warnings::register_categories(qw/version/); - } - - use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv); - - $VERSION = 0.9912; - $CLASS = 'version'; - - # !!!!Delete this next block completely when adding to Perl core!!!! - { - local $SIG{'__DIE__'}; - if (1) { # always pretend there's no XS - eval "use version::vpp $VERSION"; # don't tempt fate - die "$@" if ( $@ ); - push @ISA, "version::vpp"; - local $^W; - *version::qv = \&version::vpp::qv; - *version::declare = \&version::vpp::declare; - *version::_VERSION = \&version::vpp::_VERSION; - *version::vcmp = \&version::vpp::vcmp; - *version::new = \&version::vpp::new; - *version::numify = \&version::vpp::numify; - *version::normal = \&version::vpp::normal; - if ($] >= 5.009000) { - no strict 'refs'; - *version::stringify = \&version::vpp::stringify; - *{'version::(""'} = \&version::vpp::stringify; - *{'version::(<=>'} = \&version::vpp::vcmp; - *version::parse = \&version::vpp::parse; - } - } - else { # use XS module - push @ISA, "version::vxs"; - local $^W; - *version::declare = \&version::vxs::declare; - *version::qv = \&version::vxs::qv; - *version::_VERSION = \&version::vxs::_VERSION; - *version::vcmp = \&version::vxs::VCMP; - *version::new = \&version::vxs::new; - *version::numify = \&version::vxs::numify; - *version::normal = \&version::vxs::normal; - if ($] >= 5.009000) { - no strict 'refs'; - *version::stringify = \&version::vxs::stringify; - *{'version::(""'} = \&version::vxs::stringify; - *{'version::(<=>'} = \&version::vxs::VCMP; - *version::parse = \&version::vxs::parse; - } - } - } - - # avoid using Exporter - require version::regex; - *version::is_lax = \&version::regex::is_lax; - *version::is_strict = \&version::regex::is_strict; - *LAX = \$version::regex::LAX; - *STRICT = \$version::regex::STRICT; - - sub import { - no strict 'refs'; - my ($class) = shift; - - # Set up any derived class - unless ($class eq $CLASS) { - local $^W; - *{$class.'::declare'} = \&{$CLASS.'::declare'}; - *{$class.'::qv'} = \&{$CLASS.'::qv'}; - } - - my %args; - if (@_) { # any remaining terms are arguments - map { $args{$_} = 1 } @_ - } - else { # no parameters at all on use line - %args = - ( - qv => 1, - 'UNIVERSAL::VERSION' => 1, - ); - } - - my $callpkg = caller(); - - if (exists($args{declare})) { - *{$callpkg.'::declare'} = - sub {return $class->declare(shift) } - unless defined(&{$callpkg.'::declare'}); - } - - if (exists($args{qv})) { - *{$callpkg.'::qv'} = - sub {return $class->qv(shift) } - unless defined(&{$callpkg.'::qv'}); - } - - if (exists($args{'UNIVERSAL::VERSION'})) { - local $^W; - *UNIVERSAL::VERSION - = \&{$CLASS.'::_VERSION'}; - } - - if (exists($args{'VERSION'})) { - *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'}; - } - - if (exists($args{'is_strict'})) { - *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'} - unless defined(&{$callpkg.'::is_strict'}); - } - - if (exists($args{'is_lax'})) { - *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'} - unless defined(&{$callpkg.'::is_lax'}); - } - } - - - 1; -VERSION - -$fatpacked{"version/regex.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION_REGEX'; - package version::regex; - - use strict; - - use vars qw($VERSION $CLASS $STRICT $LAX); - - $VERSION = 0.9912; - - #--------------------------------------------------------------------------# - # Version regexp components - #--------------------------------------------------------------------------# - - # Fraction part of a decimal version number. This is a common part of - # both strict and lax decimal versions - - my $FRACTION_PART = qr/\.[0-9]+/; - - # First part of either decimal or dotted-decimal strict version number. - # Unsigned integer with no leading zeroes (except for zero itself) to - # avoid confusion with octal. - - my $STRICT_INTEGER_PART = qr/0|[1-9][0-9]*/; - - # First part of either decimal or dotted-decimal lax version number. - # Unsigned integer, but allowing leading zeros. Always interpreted - # as decimal. However, some forms of the resulting syntax give odd - # results if used as ordinary Perl expressions, due to how perl treats - # octals. E.g. - # version->new("010" ) == 10 - # version->new( 010 ) == 8 - # version->new( 010.2) == 82 # "8" . "2" - - my $LAX_INTEGER_PART = qr/[0-9]+/; - - # Second and subsequent part of a strict dotted-decimal version number. - # Leading zeroes are permitted, and the number is always decimal. - # Limited to three digits to avoid overflow when converting to decimal - # form and also avoid problematic style with excessive leading zeroes. - - my $STRICT_DOTTED_DECIMAL_PART = qr/\.[0-9]{1,3}/; - - # Second and subsequent part of a lax dotted-decimal version number. - # Leading zeroes are permitted, and the number is always decimal. No - # limit on the numerical value or number of digits, so there is the - # possibility of overflow when converting to decimal form. - - my $LAX_DOTTED_DECIMAL_PART = qr/\.[0-9]+/; - - # Alpha suffix part of lax version number syntax. Acts like a - # dotted-decimal part. - - my $LAX_ALPHA_PART = qr/_[0-9]+/; - - #--------------------------------------------------------------------------# - # Strict version regexp definitions - #--------------------------------------------------------------------------# - - # Strict decimal version number. - - my $STRICT_DECIMAL_VERSION = - qr/ $STRICT_INTEGER_PART $FRACTION_PART? /x; - - # Strict dotted-decimal version number. Must have both leading "v" and - # at least three parts, to avoid confusion with decimal syntax. - - my $STRICT_DOTTED_DECIMAL_VERSION = - qr/ v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x; - - # Complete strict version number syntax -- should generally be used - # anchored: qr/ \A $STRICT \z /x - - $STRICT = - qr/ $STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION /x; - - #--------------------------------------------------------------------------# - # Lax version regexp definitions - #--------------------------------------------------------------------------# - - # Lax decimal version number. Just like the strict one except for - # allowing an alpha suffix or allowing a leading or trailing - # decimal-point - - my $LAX_DECIMAL_VERSION = - qr/ $LAX_INTEGER_PART (?: \. | $FRACTION_PART $LAX_ALPHA_PART? )? - | - $FRACTION_PART $LAX_ALPHA_PART? - /x; - - # Lax dotted-decimal version number. Distinguished by having either - # leading "v" or at least three non-alpha parts. Alpha part is only - # permitted if there are at least two non-alpha parts. Strangely - # enough, without the leading "v", Perl takes .1.2 to mean v0.1.2, - # so when there is no "v", the leading part is optional - - my $LAX_DOTTED_DECIMAL_VERSION = - qr/ - v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )? - | - $LAX_INTEGER_PART? $LAX_DOTTED_DECIMAL_PART{2,} $LAX_ALPHA_PART? - /x; - - # Complete lax version number syntax -- should generally be used - # anchored: qr/ \A $LAX \z /x - # - # The string 'undef' is a special case to make for easier handling - # of return values from ExtUtils::MM->parse_version - - $LAX = - qr/ undef | $LAX_DECIMAL_VERSION | $LAX_DOTTED_DECIMAL_VERSION /x; - - #--------------------------------------------------------------------------# - - # Preloaded methods go here. - sub is_strict { defined $_[0] && $_[0] =~ qr/ \A $STRICT \z /x } - sub is_lax { defined $_[0] && $_[0] =~ qr/ \A $LAX \z /x } - - 1; -VERSION_REGEX - -$fatpacked{"version/vpp.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'VERSION_VPP'; - package charstar; - # a little helper class to emulate C char* semantics in Perl - # so that prescan_version can use the same code as in C - - use overload ( - '""' => \&thischar, - '0+' => \&thischar, - '++' => \&increment, - '--' => \&decrement, - '+' => \&plus, - '-' => \&minus, - '*' => \&multiply, - 'cmp' => \&cmp, - '<=>' => \&spaceship, - 'bool' => \&thischar, - '=' => \&clone, - ); - - sub new { - my ($self, $string) = @_; - my $class = ref($self) || $self; - - my $obj = { - string => [split(//,$string)], - current => 0, - }; - return bless $obj, $class; - } - - sub thischar { - my ($self) = @_; - my $last = $#{$self->{string}}; - my $curr = $self->{current}; - if ($curr >= 0 && $curr <= $last) { - return $self->{string}->[$curr]; - } - else { - return ''; - } - } - - sub increment { - my ($self) = @_; - $self->{current}++; - } - - sub decrement { - my ($self) = @_; - $self->{current}--; - } - - sub plus { - my ($self, $offset) = @_; - my $rself = $self->clone; - $rself->{current} += $offset; - return $rself; - } - - sub minus { - my ($self, $offset) = @_; - my $rself = $self->clone; - $rself->{current} -= $offset; - return $rself; - } - - sub multiply { - my ($left, $right, $swapped) = @_; - my $char = $left->thischar(); - return $char * $right; - } - - sub spaceship { - my ($left, $right, $swapped) = @_; - unless (ref($right)) { # not an object already - $right = $left->new($right); - } - return $left->{current} <=> $right->{current}; - } - - sub cmp { - my ($left, $right, $swapped) = @_; - unless (ref($right)) { # not an object already - if (length($right) == 1) { # comparing single character only - return $left->thischar cmp $right; - } - $right = $left->new($right); - } - return $left->currstr cmp $right->currstr; - } - - sub bool { - my ($self) = @_; - my $char = $self->thischar; - return ($char ne ''); - } - - sub clone { - my ($left, $right, $swapped) = @_; - $right = { - string => [@{$left->{string}}], - current => $left->{current}, - }; - return bless $right, ref($left); - } - - sub currstr { - my ($self, $s) = @_; - my $curr = $self->{current}; - my $last = $#{$self->{string}}; - if (defined($s) && $s->{current} < $last) { - $last = $s->{current}; - } - - my $string = join('', @{$self->{string}}[$curr..$last]); - return $string; - } - - package version::vpp; - - use 5.006002; - use strict; - use warnings::register; - - use Config; - use vars qw($VERSION $CLASS @ISA $LAX $STRICT $WARN_CATEGORY); - $VERSION = 0.9912; - $CLASS = 'version::vpp'; - if ($] > 5.015) { - warnings::register_categories(qw/version/); - $WARN_CATEGORY = 'version'; - } else { - $WARN_CATEGORY = 'numeric'; - } - - require version::regex; - *version::vpp::is_strict = \&version::regex::is_strict; - *version::vpp::is_lax = \&version::regex::is_lax; - *LAX = \$version::regex::LAX; - *STRICT = \$version::regex::STRICT; - - use overload ( - '""' => \&stringify, - '0+' => \&numify, - 'cmp' => \&vcmp, - '<=>' => \&vcmp, - 'bool' => \&vbool, - '+' => \&vnoop, - '-' => \&vnoop, - '*' => \&vnoop, - '/' => \&vnoop, - '+=' => \&vnoop, - '-=' => \&vnoop, - '*=' => \&vnoop, - '/=' => \&vnoop, - 'abs' => \&vnoop, - ); - - sub import { - no strict 'refs'; - my ($class) = shift; - - # Set up any derived class - unless ($class eq $CLASS) { - local $^W; - *{$class.'::declare'} = \&{$CLASS.'::declare'}; - *{$class.'::qv'} = \&{$CLASS.'::qv'}; - } - - my %args; - if (@_) { # any remaining terms are arguments - map { $args{$_} = 1 } @_ - } - else { # no parameters at all on use line - %args = - ( - qv => 1, - 'UNIVERSAL::VERSION' => 1, - ); - } - - my $callpkg = caller(); - - if (exists($args{declare})) { - *{$callpkg.'::declare'} = - sub {return $class->declare(shift) } - unless defined(&{$callpkg.'::declare'}); - } - - if (exists($args{qv})) { - *{$callpkg.'::qv'} = - sub {return $class->qv(shift) } - unless defined(&{$callpkg.'::qv'}); - } - - if (exists($args{'UNIVERSAL::VERSION'})) { - no warnings qw/redefine/; - *UNIVERSAL::VERSION - = \&{$CLASS.'::_VERSION'}; - } - - if (exists($args{'VERSION'})) { - *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'}; - } - - if (exists($args{'is_strict'})) { - *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'} - unless defined(&{$callpkg.'::is_strict'}); - } - - if (exists($args{'is_lax'})) { - *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'} - unless defined(&{$callpkg.'::is_lax'}); - } - } - - my $VERSION_MAX = 0x7FFFFFFF; - - # implement prescan_version as closely to the C version as possible - use constant TRUE => 1; - use constant FALSE => 0; - - sub isDIGIT { - my ($char) = shift->thischar(); - return ($char =~ /\d/); - } - - sub isALPHA { - my ($char) = shift->thischar(); - return ($char =~ /[a-zA-Z]/); - } - - sub isSPACE { - my ($char) = shift->thischar(); - return ($char =~ /\s/); - } - - sub BADVERSION { - my ($s, $errstr, $error) = @_; - if ($errstr) { - $$errstr = $error; - } - return $s; - } - - sub prescan_version { - my ($s, $strict, $errstr, $sqv, $ssaw_decimal, $swidth, $salpha) = @_; - my $qv = defined $sqv ? $$sqv : FALSE; - my $saw_decimal = defined $ssaw_decimal ? $$ssaw_decimal : 0; - my $width = defined $swidth ? $$swidth : 3; - my $alpha = defined $salpha ? $$salpha : FALSE; - - my $d = $s; - - if ($qv && isDIGIT($d)) { - goto dotted_decimal_version; - } - - if ($d eq 'v') { # explicit v-string - $d++; - if (isDIGIT($d)) { - $qv = TRUE; - } - else { # degenerate v-string - # requires v1.2.3 - return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); - } - - dotted_decimal_version: - if ($strict && $d eq '0' && isDIGIT($d+1)) { - # no leading zeros allowed - return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)"); - } - - while (isDIGIT($d)) { # integer part - $d++; - } - - if ($d eq '.') - { - $saw_decimal++; - $d++; # decimal point - } - else - { - if ($strict) { - # require v1.2.3 - return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); - } - else { - goto version_prescan_finish; - } - } - - { - my $i = 0; - my $j = 0; - while (isDIGIT($d)) { # just keep reading - $i++; - while (isDIGIT($d)) { - $d++; $j++; - # maximum 3 digits between decimal - if ($strict && $j > 3) { - return BADVERSION($s,$errstr,"Invalid version format (maximum 3 digits between decimals)"); - } - } - if ($d eq '_') { - if ($strict) { - return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); - } - if ( $alpha ) { - return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)"); - } - $d++; - $alpha = TRUE; - } - elsif ($d eq '.') { - if ($alpha) { - return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)"); - } - $saw_decimal++; - $d++; - } - elsif (!isDIGIT($d)) { - last; - } - $j = 0; - } - - if ($strict && $i < 2) { - # requires v1.2.3 - return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); - } - } - } # end if dotted-decimal - else - { # decimal versions - my $j = 0; - # special $strict case for leading '.' or '0' - if ($strict) { - if ($d eq '.') { - return BADVERSION($s,$errstr,"Invalid version format (0 before decimal required)"); - } - if ($d eq '0' && isDIGIT($d+1)) { - return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)"); - } - } - - # and we never support negative version numbers - if ($d eq '-') { - return BADVERSION($s,$errstr,"Invalid version format (negative version number)"); - } - - # consume all of the integer part - while (isDIGIT($d)) { - $d++; - } - - # look for a fractional part - if ($d eq '.') { - # we found it, so consume it - $saw_decimal++; - $d++; - } - elsif (!$d || $d eq ';' || isSPACE($d) || $d eq '}') { - if ( $d == $s ) { - # found nothing - return BADVERSION($s,$errstr,"Invalid version format (version required)"); - } - # found just an integer - goto version_prescan_finish; - } - elsif ( $d == $s ) { - # didn't find either integer or period - return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); - } - elsif ($d eq '_') { - # underscore can't come after integer part - if ($strict) { - return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); - } - elsif (isDIGIT($d+1)) { - return BADVERSION($s,$errstr,"Invalid version format (alpha without decimal)"); - } - else { - return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)"); - } - } - elsif ($d) { - # anything else after integer part is just invalid data - return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); - } - - # scan the fractional part after the decimal point - if ($d && !isDIGIT($d) && ($strict || ! ($d eq ';' || isSPACE($d) || $d eq '}') )) { - # $strict or lax-but-not-the-end - return BADVERSION($s,$errstr,"Invalid version format (fractional part required)"); - } - - while (isDIGIT($d)) { - $d++; $j++; - if ($d eq '.' && isDIGIT($d-1)) { - if ($alpha) { - return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)"); - } - if ($strict) { - return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions must begin with 'v')"); - } - $d = $s; # start all over again - $qv = TRUE; - goto dotted_decimal_version; - } - if ($d eq '_') { - if ($strict) { - return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); - } - if ( $alpha ) { - return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)"); - } - if ( ! isDIGIT($d+1) ) { - return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)"); - } - $width = $j; - $d++; - $alpha = TRUE; - } - } - } - - version_prescan_finish: - while (isSPACE($d)) { - $d++; - } - - if ($d && !isDIGIT($d) && (! ($d eq ';' || $d eq '}') )) { - # trailing non-numeric data - return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); - } - if ($saw_decimal > 1 && ($d-1) eq '.') { - # no trailing period allowed - return BADVERSION($s,$errstr,"Invalid version format (trailing decimal)"); - } - - if (defined $sqv) { - $$sqv = $qv; - } - if (defined $swidth) { - $$swidth = $width; - } - if (defined $ssaw_decimal) { - $$ssaw_decimal = $saw_decimal; - } - if (defined $salpha) { - $$salpha = $alpha; - } - return $d; - } - - sub scan_version { - my ($s, $rv, $qv) = @_; - my $start; - my $pos; - my $last; - my $errstr; - my $saw_decimal = 0; - my $width = 3; - my $alpha = FALSE; - my $vinf = FALSE; - my @av; - - $s = new charstar $s; - - while (isSPACE($s)) { # leading whitespace is OK - $s++; - } - - $last = prescan_version($s, FALSE, \$errstr, \$qv, \$saw_decimal, - \$width, \$alpha); - - if ($errstr) { - # 'undef' is a special case and not an error - if ( $s ne 'undef') { - require Carp; - Carp::croak($errstr); - } - } - - $start = $s; - if ($s eq 'v') { - $s++; - } - $pos = $s; - - if ( $qv ) { - $$rv->{qv} = $qv; - } - if ( $alpha ) { - $$rv->{alpha} = $alpha; - } - if ( !$qv && $width < 3 ) { - $$rv->{width} = $width; - } - - while (isDIGIT($pos)) { - $pos++; - } - if (!isALPHA($pos)) { - my $rev; - - for (;;) { - $rev = 0; - { - # this is atoi() that delimits on underscores - my $end = $pos; - my $mult = 1; - my $orev; - - # the following if() will only be true after the decimal - # point of a version originally created with a bare - # floating point number, i.e. not quoted in any way - # - if ( !$qv && $s > $start && $saw_decimal == 1 ) { - $mult *= 100; - while ( $s < $end ) { - $orev = $rev; - $rev += $s * $mult; - $mult /= 10; - if ( (abs($orev) > abs($rev)) - || (abs($rev) > $VERSION_MAX )) { - warn("Integer overflow in version %d", - $VERSION_MAX); - $s = $end - 1; - $rev = $VERSION_MAX; - $vinf = 1; - } - $s++; - if ( $s eq '_' ) { - $s++; - } - } - } - else { - while (--$end >= $s) { - $orev = $rev; - $rev += $end * $mult; - $mult *= 10; - if ( (abs($orev) > abs($rev)) - || (abs($rev) > $VERSION_MAX )) { - warn("Integer overflow in version"); - $end = $s - 1; - $rev = $VERSION_MAX; - $vinf = 1; - } - } - } - } - - # Append revision - push @av, $rev; - if ( $vinf ) { - $s = $last; - last; - } - elsif ( $pos eq '.' ) { - $pos++; - if ($qv) { - # skip leading zeros - while ($pos eq '0') { - $pos++; - } - } - $s = $pos; - } - elsif ( $pos eq '_' && isDIGIT($pos+1) ) { - $s = ++$pos; - } - elsif ( $pos eq ',' && isDIGIT($pos+1) ) { - $s = ++$pos; - } - elsif ( isDIGIT($pos) ) { - $s = $pos; - } - else { - $s = $pos; - last; - } - if ( $qv ) { - while ( isDIGIT($pos) ) { - $pos++; - } - } - else { - my $digits = 0; - while ( ( isDIGIT($pos) || $pos eq '_' ) && $digits < 3 ) { - if ( $pos ne '_' ) { - $digits++; - } - $pos++; - } - } - } - } - if ( $qv ) { # quoted versions always get at least three terms - my $len = $#av; - # This for loop appears to trigger a compiler bug on OS X, as it - # loops infinitely. Yes, len is negative. No, it makes no sense. - # Compiler in question is: - # gcc version 3.3 20030304 (Apple Computer, Inc. build 1640) - # for ( len = 2 - len; len > 0; len-- ) - # av_push(MUTABLE_AV(sv), newSViv(0)); - # - $len = 2 - $len; - while ($len-- > 0) { - push @av, 0; - } - } - - # need to save off the current version string for later - if ( $vinf ) { - $$rv->{original} = "v.Inf"; - $$rv->{vinf} = 1; - } - elsif ( $s > $start ) { - $$rv->{original} = $start->currstr($s); - if ( $qv && $saw_decimal == 1 && $start ne 'v' ) { - # need to insert a v to be consistent - $$rv->{original} = 'v' . $$rv->{original}; - } - } - else { - $$rv->{original} = '0'; - push(@av, 0); - } - - # And finally, store the AV in the hash - $$rv->{version} = \@av; - - # fix RT#19517 - special case 'undef' as string - if ($s eq 'undef') { - $s += 5; - } - - return $s; - } - - sub new { - my $class = shift; - unless (defined $class or $#_ > 1) { - require Carp; - Carp::croak('Usage: version::new(class, version)'); - } - - my $self = bless ({}, ref ($class) || $class); - my $qv = FALSE; - - if ( $#_ == 1 ) { # must be CVS-style - $qv = TRUE; - } - my $value = pop; # always going to be the last element - - if ( ref($value) && eval('$value->isa("version")') ) { - # Can copy the elements directly - $self->{version} = [ @{$value->{version} } ]; - $self->{qv} = 1 if $value->{qv}; - $self->{alpha} = 1 if $value->{alpha}; - $self->{original} = ''.$value->{original}; - return $self; - } - - if ( not defined $value or $value =~ /^undef$/ ) { - # RT #19517 - special case for undef comparison - # or someone forgot to pass a value - push @{$self->{version}}, 0; - $self->{original} = "0"; - return ($self); - } - - - if (ref($value) =~ m/ARRAY|HASH/) { - require Carp; - Carp::croak("Invalid version format (non-numeric data)"); - } - - $value = _un_vstring($value); - - if ($Config{d_setlocale}) { - use POSIX qw/locale_h/; - use if $Config{d_setlocale}, 'locale'; - my $currlocale = setlocale(LC_ALL); - - # if the current locale uses commas for decimal points, we - # just replace commas with decimal places, rather than changing - # locales - if ( localeconv()->{decimal_point} eq ',' ) { - $value =~ tr/,/./; - } - } - - # exponential notation - if ( $value =~ /\d+.?\d*e[-+]?\d+/ ) { - $value = sprintf("%.9f",$value); - $value =~ s/(0+)$//; # trim trailing zeros - } - - my $s = scan_version($value, \$self, $qv); - - if ($s) { # must be something left over - warn("Version string '%s' contains invalid data; " - ."ignoring: '%s'", $value, $s); - } - - return ($self); - } - - *parse = \&new; - - sub numify { - my ($self) = @_; - unless (_verify($self)) { - require Carp; - Carp::croak("Invalid version object"); - } - my $width = $self->{width} || 3; - my $alpha = $self->{alpha} || ""; - my $len = $#{$self->{version}}; - my $digit = $self->{version}[0]; - my $string = sprintf("%d.", $digit ); - - if ($alpha and warnings::enabled()) { - warnings::warn($WARN_CATEGORY, 'alpha->numify() is lossy'); - } - - for ( my $i = 1 ; $i < $len ; $i++ ) { - $digit = $self->{version}[$i]; - if ( $width < 3 ) { - my $denom = 10**(3-$width); - my $quot = int($digit/$denom); - my $rem = $digit - ($quot * $denom); - $string .= sprintf("%0".$width."d_%d", $quot, $rem); - } - else { - $string .= sprintf("%03d", $digit); - } - } - - if ( $len > 0 ) { - $digit = $self->{version}[$len]; - if ( $alpha && $width == 3 ) { - $string .= "_"; - } - $string .= sprintf("%0".$width."d", $digit); - } - else # $len = 0 - { - $string .= sprintf("000"); - } - - return $string; - } - - sub normal { - my ($self) = @_; - unless (_verify($self)) { - require Carp; - Carp::croak("Invalid version object"); - } - my $alpha = $self->{alpha} || ""; - my $qv = $self->{qv} || ""; - - my $len = $#{$self->{version}}; - my $digit = $self->{version}[0]; - my $string = sprintf("v%d", $digit ); - - for ( my $i = 1 ; $i < $len ; $i++ ) { - $digit = $self->{version}[$i]; - $string .= sprintf(".%d", $digit); - } - - if ( $len > 0 ) { - $digit = $self->{version}[$len]; - if ( $alpha ) { - $string .= sprintf("_%0d", $digit); - } - else { - $string .= sprintf(".%0d", $digit); - } - } - - if ( $len <= 2 ) { - for ( $len = 2 - $len; $len != 0; $len-- ) { - $string .= sprintf(".%0d", 0); - } - } - - return $string; - } - - sub stringify { - my ($self) = @_; - unless (_verify($self)) { - require Carp; - Carp::croak("Invalid version object"); - } - return exists $self->{original} - ? $self->{original} - : exists $self->{qv} - ? $self->normal - : $self->numify; - } - - sub vcmp { - require UNIVERSAL; - my ($left,$right,$swap) = @_; - my $class = ref($left); - unless ( UNIVERSAL::isa($right, $class) ) { - $right = $class->new($right); - } - - if ( $swap ) { - ($left, $right) = ($right, $left); - } - unless (_verify($left)) { - require Carp; - Carp::croak("Invalid version object"); - } - unless (_verify($right)) { - require Carp; - Carp::croak("Invalid version format"); - } - my $l = $#{$left->{version}}; - my $r = $#{$right->{version}}; - my $m = $l < $r ? $l : $r; - my $lalpha = $left->is_alpha; - my $ralpha = $right->is_alpha; - my $retval = 0; - my $i = 0; - while ( $i <= $m && $retval == 0 ) { - $retval = $left->{version}[$i] <=> $right->{version}[$i]; - $i++; - } - - # tiebreaker for alpha with identical terms - if ( $retval == 0 - && $l == $r - && $left->{version}[$m] == $right->{version}[$m] - && ( $lalpha || $ralpha ) ) { - - if ( $lalpha && !$ralpha ) { - $retval = -1; - } - elsif ( $ralpha && !$lalpha) { - $retval = +1; - } - } - - # possible match except for trailing 0's - if ( $retval == 0 && $l != $r ) { - if ( $l < $r ) { - while ( $i <= $r && $retval == 0 ) { - if ( $right->{version}[$i] != 0 ) { - $retval = -1; # not a match after all - } - $i++; - } - } - else { - while ( $i <= $l && $retval == 0 ) { - if ( $left->{version}[$i] != 0 ) { - $retval = +1; # not a match after all - } - $i++; - } - } - } - - return $retval; - } - - sub vbool { - my ($self) = @_; - return vcmp($self,$self->new("0"),1); - } - - sub vnoop { - require Carp; - Carp::croak("operation not supported with version object"); - } - - sub is_alpha { - my ($self) = @_; - return (exists $self->{alpha}); - } - - sub qv { - my $value = shift; - my $class = $CLASS; - if (@_) { - $class = ref($value) || $value; - $value = shift; - } - - $value = _un_vstring($value); - $value = 'v'.$value unless $value =~ /(^v|\d+\.\d+\.\d)/; - my $obj = $CLASS->new($value); - return bless $obj, $class; - } - - *declare = \&qv; - - sub is_qv { - my ($self) = @_; - return (exists $self->{qv}); - } - - - sub _verify { - my ($self) = @_; - if ( ref($self) - && eval { exists $self->{version} } - && ref($self->{version}) eq 'ARRAY' - ) { - return 1; - } - else { - return 0; - } - } - - sub _is_non_alphanumeric { - my $s = shift; - $s = new charstar $s; - while ($s) { - return 0 if isSPACE($s); # early out - return 1 unless (isALPHA($s) || isDIGIT($s) || $s =~ /[.-]/); - $s++; - } - return 0; - } - - sub _un_vstring { - my $value = shift; - # may be a v-string - if ( length($value) >= 1 && $value !~ /[,._]/ - && _is_non_alphanumeric($value)) { - my $tvalue; - if ( $] >= 5.008_001 ) { - $tvalue = _find_magic_vstring($value); - $value = $tvalue if length $tvalue; - } - elsif ( $] >= 5.006_000 ) { - $tvalue = sprintf("v%vd",$value); - if ( $tvalue =~ /^v\d+(\.\d+)*$/ ) { - # must be a v-string - $value = $tvalue; - } - } - } - return $value; - } - - sub _find_magic_vstring { - my $value = shift; - my $tvalue = ''; - require B; - my $sv = B::svref_2object(\$value); - my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef; - while ( $magic ) { - if ( $magic->TYPE eq 'V' ) { - $tvalue = $magic->PTR; - $tvalue =~ s/^v?(.+)$/v$1/; - last; - } - else { - $magic = $magic->MOREMAGIC; - } - } - return $tvalue; - } - - sub _VERSION { - my ($obj, $req) = @_; - my $class = ref($obj) || $obj; - - no strict 'refs'; - if ( exists $INC{"$class.pm"} and not %{"$class\::"} and $] >= 5.008) { - # file but no package - require Carp; - Carp::croak( "$class defines neither package nor VERSION" - ."--version check failed"); - } - - my $version = eval "\$$class\::VERSION"; - if ( defined $version ) { - local $^W if $] <= 5.008; - $version = version::vpp->new($version); - } - - if ( defined $req ) { - unless ( defined $version ) { - require Carp; - my $msg = $] < 5.006 - ? "$class version $req required--this is only version " - : "$class does not define \$$class\::VERSION" - ."--version check failed"; - - if ( $ENV{VERSION_DEBUG} ) { - Carp::confess($msg); - } - else { - Carp::croak($msg); - } - } - - $req = version::vpp->new($req); - - if ( $req > $version ) { - require Carp; - if ( $req->is_qv ) { - Carp::croak( - sprintf ("%s version %s required--". - "this is only version %s", $class, - $req->normal, $version->normal) - ); - } - else { - Carp::croak( - sprintf ("%s version %s required--". - "this is only version %s", $class, - $req->stringify, $version->stringify) - ); - } - } - } - - return defined $version ? $version->stringify : undef; - } - - 1; #this line is important and will help the module return a true value -VERSION_VPP - -s/^ //mg for values %fatpacked; - -my $class = 'FatPacked::'.(0+\%fatpacked); -no strict 'refs'; -*{"${class}::files"} = sub { keys %{$_[0]} }; - -if ($] < 5.008) { - *{"${class}::INC"} = sub { - if (my $fat = $_[0]{$_[1]}) { - my $pos = 0; - my $last = length $fat; - return (sub { - return 0 if $pos == $last; - my $next = (1 + index $fat, "\n", $pos) || $last; - $_ .= substr $fat, $pos, $next - $pos; - $pos = $next; - return 1; - }); - } - }; -} - -else { - *{"${class}::INC"} = sub { - if (my $fat = $_[0]{$_[1]}) { - open my $fh, '<', \$fat - or die "FatPacker error loading $_[1] (could be a perl installation issue?)"; - return $fh; - } - return; - }; -} - -unshift @INC, bless \%fatpacked, $class; - } # END OF FATPACK CODE - - - -use strict; -use App::cpanminus::script; - - -unless (caller) { - my $app = App::cpanminus::script->new; - $app->parse_options(@ARGV); - exit $app->doit; -} - -__END__ - -=head1 NAME - -cpanm - get, unpack build and install modules from CPAN - -=head1 SYNOPSIS - - cpanm Test::More # install Test::More - cpanm MIYAGAWA/Plack-0.99_05.tar.gz # full distribution path - cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz # install from URL - cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz # install from a local file - cpanm --interactive Task::Kensho # Configure interactively - cpanm . # install from local directory - cpanm --installdeps . # install all the deps for the current directory - cpanm -L extlib Plack # install Plack and all non-core deps into extlib - cpanm --mirror http://cpan.cpantesters.org/ DBI # use the fast-syncing mirror - cpanm --from https://cpan.metacpan.org/ Plack # use only the HTTPS mirror - -=head1 COMMANDS - -=over 4 - -=item (arguments) - -Command line arguments can be either a module name, distribution file, -local file path, HTTP URL or git repository URL. Following commands -will all work as you expect. - - cpanm Plack - cpanm Plack/Request.pm - cpanm MIYAGAWA/Plack-1.0000.tar.gz - cpanm /path/to/Plack-1.0000.tar.gz - cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - cpanm git://github.com/plack/Plack.git - -Additionally, you can use the notation using C<~> and C<@> to specify -version for a given module. C<~> specifies the version requirement in -the L format, while C<@> pins the exact version, and -is a shortcut for C<~"== VERSION">. - - cpanm Plack~1.0000 # 1.0000 or later - cpanm Plack~">= 1.0000, < 2.0000" # latest of 1.xxxx - cpanm Plack@0.9990 # specific version. same as Plack~"== 0.9990" - -The version query including specific version or range will be sent to -L to search for previous releases. The query will search for -BackPAN archives by default, unless you specify C<--dev> option, in -which case, archived versions will be filtered out. - -For a git repository, you can specify a branch, tag, or commit SHA to -build. The default is C - - cpanm git://github.com/plack/Plack.git@1.0000 # tag - cpanm git://github.com/plack/Plack.git@devel # branch - -=item -i, --install - -Installs the modules. This is a default behavior and this is just a -compatibility option to make it work like L or L. - -=item --self-upgrade - -Upgrades itself. It's just an alias for: - - cpanm App::cpanminus - -=item --info - -Displays the distribution information in -C format in the standard out. - -=item --installdeps - -Installs the dependencies of the target distribution but won't build -itself. Handy if you want to try the application from a version -controlled repository such as git. - - cpanm --installdeps . - -=item --look - -Download and unpack the distribution and then open the directory with -your shell. Handy to poke around the source code or do manual -testing. - -=item -h, --help - -Displays the help message. - -=item -V, --version - -Displays the version number. - -=back - -=head1 OPTIONS - -You can specify the default options in C environment variable. - -=over 4 - -=item -f, --force - -Force install modules even when testing failed. - -=item -n, --notest - -Skip the testing of modules. Use this only when you just want to save -time for installing hundreds of distributions to the same perl and -architecture you've already tested to make sure it builds fine. - -Defaults to false, and you can say C<--no-notest> to override when it -is set in the default options in C. - -=item --test-only - -Run the tests only, and do not install the specified module or -distributions. Handy if you want to verify the new (or even old) -releases pass its unit tests without installing the module. - -Note that if you specify this option with a module or distribution -that has dependencies, these dependencies will be installed if you -don't currently have them. - -=item -S, --sudo - -Switch to the root user with C when installing modules. Use this -if you want to install modules to the system perl include path. - -Defaults to false, and you can say C<--no-sudo> to override when it is -set in the default options in C. - -=item -v, --verbose - -Makes the output verbose. It also enables the interactive -configuration. (See --interactive) - -=item -q, --quiet - -Makes the output even more quiet than the default. It only shows the -successful/failed dependencies to the output. - -=item -l, --local-lib - -Sets the L compatible path to install modules to. You -don't need to set this if you already configure the shell environment -variables using L, but this can be used to override that -as well. - -=item -L, --local-lib-contained - -Same with C<--local-lib> but with L<--self-contained> set. All -non-core dependencies will be installed even if they're already -installed. - -For instance, - - cpanm -L extlib Plack - -would install Plack and all of its non-core dependencies into the -directory C, which can be loaded from your application with: - - use local::lib '/path/to/extlib'; - -Note that this option does B reliably work with perl installations -supplied by operating system vendors that strips standard modules from perl, -such as RHEL, Fedora and CentOS, B you also install packages supplying -all the modules that have been stripped. For these systems you will probably -want to install the C meta-package which does just that. - -=item --self-contained - -When examining the dependencies, assume no non-core modules are -installed on the system. Handy if you want to bundle application -dependencies in one directory so you can distribute to other machines. - -=item --exclude-vendor - -Don't include modules installed under the 'vendor' paths when searching for -core modules when the C<--self-contained> flag is in effect. This restores -the behaviour from before version 1.7023 - -=item --mirror - -Specifies the base URL for the CPAN mirror to use, such as -C (you can omit the trailing slash). You -can specify multiple mirror URLs by repeating the command line option. - -You can use a local directory that has a CPAN mirror structure -(created by tools such as L or L) by using a special -URL scheme C. If the given URL begins with `/` (without any -scheme), it is considered as a file scheme as well. - - cpanm --mirror file:///path/to/mirror - cpanm --mirror ~/minicpan # Because shell expands ~ to /home/user - -Defaults to C. - -=item --mirror-only - -Download the mirror's 02packages.details.txt.gz index file instead of -querying the CPAN Meta DB. This will also effectively opt out sending -your local perl versions to backend database servers such as CPAN Meta -DB and MetaCPAN. - -Select this option if you are using a local mirror of CPAN, such as -minicpan when you're offline, or your own CPAN index (a.k.a darkpan). - -=item --from, -M - - cpanm -M https://cpan.metacpan.org/ - cpanm --from https://cpan.metacpan.org/ - -Use the given mirror URL and its index as the I source to search -and download modules from. - -It works similar to C<--mirror> and C<--mirror-only> combined, with a -small difference: unlike C<--mirror> which I the URL to the -list of mirrors, C<--from> (or C<-M> for short) uses the specified URL -as its I source to download index and modules from. This makes -the option always override the default mirror, which might have been -set via global options such as the one set by C -environment variable. - -B It might be useful if you name these options with your shell -aliases, like: - - alias minicpanm='cpanm --from ~/minicpan' - alias darkpan='cpanm --from http://mycompany.example.com/DPAN' - -=item --mirror-index - -B: Specifies the file path to C<02packages.details.txt> -for module search index. - -=item --cpanmetadb - -B: Specifies an alternate URI for CPAN MetaDB index lookups. - -=item --metacpan - -Prefers MetaCPAN API over CPAN MetaDB. - -=item --cpanfile - -B: Specified an alternate path for cpanfile to search for, -when C<--installdeps> command is in use. Defaults to C. - -=item --prompt - -Prompts when a test fails so that you can skip, force install, retry -or look in the shell to see what's going wrong. It also prompts when -one of the dependency failed if you want to proceed the installation. - -Defaults to false, and you can say C<--no-prompt> to override if it's -set in the default options in C. - -=item --dev - -B: search for a newer developer release as well. Defaults to false. - -=item --reinstall - -cpanm, when given a module name in the command line (i.e. C), checks the locally installed version first and skips if it is -already installed. This option makes it skip the check, so: - - cpanm --reinstall Plack - -would reinstall L even if your locally installed version is -latest, or even newer (which would happen if you install a developer -release from version control repositories). - -Defaults to false. - -=item --interactive - -Makes the configuration (such as C and C) -interactive, so you can answer questions in the distribution that -requires custom configuration or Task:: distributions. - -Defaults to false, and you can say C<--no-interactive> to override -when it's set in the default options in C. - -=item --pp, --pureperl - -Prefer Pure perl build of modules by setting C for -MakeMaker and C<--pureperl-only> for Build.PL based -distributions. Note that not all of the CPAN modules support this -convention yet. - -=item --with-recommends, --with-suggests - -B: Installs dependencies declared as C and -C respectively, per META spec. When these dependencies fail -to install, cpanm continues the installation, since they're just -recommendation/suggestion. - -Enabling this could potentially make a circular dependency for a few -modules on CPAN, when C adds a module that C -back the module in return. - -There's also C<--without-recommend> and C<--without-suggests> to -override the default decision made earlier in C. - -Defaults to false for both. - -=item --with-develop - -B: Installs develop phase dependencies in META files or -C when used with C<--installdeps>. Defaults to false. - -=item --with-configure - -B: Installs configure phase dependencies in C -when used with C<--installdeps>. Defaults to false. - -=item --with-feature, --without-feature, --with-all-features - -B: Specifies the feature to enable, if a module supports -optional features per META spec 2.0. - - cpanm --with-feature=opt_csv Spreadsheet::Read - -the features can also be interactively chosen when C<--interactive> -option is enabled. - -C<--with-all-features> enables all the optional features, and -C<--without-feature> can select a feature to disable. - -=item --configure-timeout, --build-timeout, --test-timeout - -Specify the timeout length (in seconds) to wait for the configure, -build and test process. Current default values are: 60 for configure, -3600 for build and 1800 for test. - -=item --configure-args, --build-args, --test-args, --install-args - -B: Pass arguments for configure/build/test/install -commands respectively, for a given module to install. - - cpanm DBD::mysql --configure-args="--cflags=... --libs=..." - -The argument is only enabled for the module passed as a command line -argument, not dependencies. - -=item --scandeps - -B: Scans the depencencies of given modules and output the -tree in a text format. (See C<--format> below for more options) - -Because this command doesn't actually install any distributions, it -will be useful that by typing: - - cpanm --scandeps Catalyst::Runtime - -you can make sure what modules will be installed. - -This command takes into account which modules you already have -installed in your system. If you want to see what modules will be -installed against a vanilla perl installation, you might want to -combine it with C<-L> option. - -=item --format - -B: Determines what format to display the scanned -dependency tree. Available options are C, C, C and -C. - -=over 8 - -=item tree - -Displays the tree in a plain text format. This is the default value. - -=item json, yaml - -Outputs the tree in a JSON or YAML format. L and L modules -need to be installed respectively. The output tree is represented as a -recursive tuple of: - - [ distribution, dependencies ] - -and the container is an array containing the root elements. Note that -there may be multiple root nodes, since you can give multiple modules -to the C<--scandeps> command. - -=item dists - -C is a special output format, where it prints the distribution -filename in the I after the dependency resolution, -like: - - GAAS/MIME-Base64-3.13.tar.gz - GAAS/URI-1.58.tar.gz - PETDANCE/HTML-Tagset-3.20.tar.gz - GAAS/HTML-Parser-3.68.tar.gz - GAAS/libwww-perl-5.837.tar.gz - -which means you can install these distributions in this order without -extra dependencies. When combined with C<-L> option, it will be useful -to replay installations on other machines. - -=back - -=item --save-dists - -Specifies the optional directory path to copy downloaded tarballs in -the CPAN mirror compatible directory structure -i.e. I - -If the distro tarball did not come from CPAN, for example from a local -file or from GitHub, then it will be saved under -I. - -=item --uninst-shadows - -Uninstalls the shadow files of the distribution that you're -installing. This eliminates the confusion if you're trying to install -core (dual-life) modules from CPAN against perl 5.10 or older, or -modules that used to be XS-based but switched to pure perl at some -version. - -If you run cpanm as root and use C or equivalent to -specify custom installation path, you SHOULD disable this option so -you won't accidentally uninstall dual-life modules from the core -include path. - -Defaults to true if your perl version is smaller than 5.12, and you -can disable that with C<--no-uninst-shadows>. - -B: Since version 1.3000 this flag is turned off by default for -perl newer than 5.12, since with 5.12 @INC contains site_perl directory -I the perl core library path, and uninstalling shadows is not -necessary anymore and does more harm by deleting files from the core -library path. - -=item --uninstall, -U - -Uninstalls a module from the library path. It finds a packlist for -given modules, and removes all the files included in the same -distribution. - -If you enable local::lib, it only removes files from the local::lib -directory. - -If you try to uninstall a module in C directory (i.e. core -module), an error will be thrown. - -A dialog will be prompted to confirm the files to be deleted. If you pass -C<-f> option as well, the dialog will be skipped and uninstallation -will be forced. - -=item --cascade-search - -B: Specifies whether to cascade search when you specify -multiple mirrors and a mirror doesn't have a module or has a lower -version of the module than requested. Defaults to false. - -=item --skip-installed - -Specifies whether a module given in the command line is skipped if its latest -version is already installed. Defaults to true. - -B: The C environment variable have to be correctly set -for this to work with modules installed using L, unless -you always use the C<-l> option. - -=item --skip-satisfied - -B: Specifies whether a module (and version) given in the -command line is skipped if it's already installed. - -If you run: - - cpanm --skip-satisfied CGI DBI~1.2 - -cpanm won't install them if you already have CGI (for whatever -versions) or have DBI with version higher than 1.2. It is similar to -C<--skip-installed> but while C<--skip-installed> checks if the -I version of CPAN is installed, C<--skip-satisfied> checks if -a requested version (or not, which means any version) is installed. - -Defaults to false. - -=item --verify - -Verify the integrity of distribution files retrieved from PAUSE using -CHECKSUMS and SIGNATURES (if found). Defaults to false. - -=item --report-perl-version - -Whether it reports the locally installed perl version to the various -web server as part of User-Agent. Defaults to true unless CI related -environment variables such as C, C or C -is enabled. You can disable it by using C<--no-report-perl-version>. - -=item --auto-cleanup - -Specifies the number of days in which cpanm's work directories -expire. Defaults to 7, which means old work directories will be -cleaned up in one week. - -You can set the value to C<0> to make cpan never cleanup those -directories. - -=item --man-pages - -Generates man pages for executables (man1) and libraries (man3). - -Defaults to true (man pages generated) unless C<-L|--local-lib-contained> -option is supplied in which case it's set to false. You can disable -it with C<--no-man-pages>. - -=item --lwp - -Uses L module to download stuff over HTTP. Defaults to true, and -you can say C<--no-lwp> to disable using LWP, when you want to upgrade -LWP from CPAN on some broken perl systems. - -=item --wget - -Uses GNU Wget (if available) to download stuff. Defaults to true, and -you can say C<--no-wget> to disable using Wget (versions of Wget older -than 1.9 don't support the C<--retry-connrefused> option used by cpanm). - -=item --curl - -Uses cURL (if available) to download stuff. Defaults to true, and -you can say C<--no-curl> to disable using cURL. - -Normally with C<--lwp>, C<--wget> and C<--curl> options set to true -(which is the default) cpanm tries L, Wget, cURL and L -(in that order) and uses the first one available. - -=back - -=head1 ENVIRONMENT VARIABLES - -=over 4 - -=item PERL_CPANM_HOME - -The directory cpanm should use to store downloads and build and test -modules. Defaults to the C<.cpanm> directory in your user's home -directory. - -=item PERL_CPANM_OPT - -If set, adds a set of default options to every cpanm command. These -options come first, and so are overridden by command-line options. - -=back - -=head1 SEE ALSO - -L - -=head1 COPYRIGHT - -Copyright 2010- Tatsuhiko Miyagawa. - -=head1 AUTHOR - -Tatsuhiko Miyagawa - -=cut diff --git a/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/MYMETA.json b/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/MYMETA.json deleted file mode 100644 index 6fc2afc4..00000000 --- a/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/MYMETA.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "abstract" : "get, unpack, build and install modules from CPAN", - "author" : [ - "- Tatsuhiko Miyagawa" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Milla version v1.0.18, Dist::Zilla version 6.009, CPAN::Meta::Converter version 2.150010", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "App-cpanminus", - "no_index" : { - "directory" : [ - "eg", - "examples", - "inc", - "share", - "t", - "xt" - ], - "file" : [ - "lib/App/cpanminus/fatscript.pm" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "0" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "0" - } - }, - "develop" : { - "recommends" : { - "Archive::Tar" : "0", - "Archive::Zip" : "0", - "Compress::Zlib" : "0", - "File::HomeDir" : "0", - "Module::Signature" : "0" - }, - "requires" : { - "App::FatPacker" : "0", - "CPAN::DistnameInfo" : "0", - "CPAN::Meta" : "2.132830", - "CPAN::Meta::Check" : "0", - "CPAN::Meta::Prereqs" : "0", - "CPAN::Meta::Requirements" : "0", - "CPAN::Meta::YAML" : "0", - "Capture::Tiny" : "0", - "Digest::SHA" : "0", - "Dist::Milla" : "v1.0.18", - "Exporter" : "5.63", - "File::Temp" : "0", - "File::pushd" : "0", - "Getopt::Long" : "0", - "HTTP::Tiny" : "0", - "JSON" : "0", - "JSON::PP" : "0", - "LWP::Simple" : "0", - "LWP::UserAgent" : "5.802", - "Module::CPANfile" : "0", - "Module::CoreList" : "0", - "Module::Install" : "0", - "Module::Metadata" : "0", - "Parse::CPAN::Meta" : "0", - "Parse::PMFile" : "0.26", - "Perl::Strip" : "0", - "String::ShellQuote" : "0", - "Test::More" : "0.90", - "Test::Pod" : "1.41", - "Test::Requires" : "0", - "Tie::File" : "0", - "YAML" : "0", - "YAML::Tiny" : "0", - "local::lib" : "0", - "version" : "0" - } - }, - "runtime" : { - "requires" : { - "perl" : "5.008001" - } - }, - "test" : { - "requires" : { - "Test::More" : "0" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "https://github.com/miyagawa/cpanminus/issues" - }, - "homepage" : "https://github.com/miyagawa/cpanminus", - "repository" : { - "type" : "git", - "url" : "https://github.com/miyagawa/cpanminus.git", - "web" : "https://github.com/miyagawa/cpanminus" - } - }, - "version" : "1.7044", - "x_contributors" : [ - "Aaron Moses ", - "Alessandro Ghedini ", - "Andrew Rodland ", - "Andy Jones ", - "andyjones ", - "Ash Berlin ", - "Ben Bullock ", - "Breno G. de Oliveira ", - "Brian Wightman ", - "cho45 ", - "Christian Walde ", - "chromatic ", - "Dagfinn Ilmari Mannsaker ", - "Dana M. Diederich ", - "Dave Goodell ", - "Dave Rolsky ", - "David Golden ", - "David Steinbrunner ", - "Doug Bell ", - "Eli Flanagan ", - "fREW Schmidt ", - "Fuji, Goro ", - "Gareth Kirwan ", - "gfx ", - "Graham Knop ", - "Graham Ollis ", - "ikasam_a ", - "Ingy dot Net ", - "Jan Dubois ", - "Jeffrey Ryan Thalhammer ", - "Jesse Luehrs ", - "J. Nick Koston ", - "jonallen ", - "Jonathan Scott Duff ", - "Kahlil (Kal) Hodgson ", - "Kenichi Ishigaki ", - "Kent Fredric ", - "kmx ", - "Larry Leszczynski ", - "lestrrat ", - "Masahiro Nagano ", - "Masayoshi Sekimura ", - "Matthew Horsfall ", - "Matt S Trout <>", - "Matt S Trout ", - "Michael G. Schwern ", - "motemen ", - "moznion ", - "Nicolas R ", - "Norman Nunley ", - "Olaf Alders ", - "Olivier Mengue ", - "Pedro Melo ", - "Rafal Pocztarski ", - "reezer ", - "Ricardo Signes ", - "robario ", - "Robert Buels ", - "Rob Hoelz ", - "Roman Jurkov ", - "Sebastian Riedel ", - "Shoichi Kaji ", - "Slaven Rezic ", - "Smylers ", - "Stoned Elipot ", - "Syohei YOSHIDA ", - "Tatsuhiko Miyagawa ", - "Tatsuhiko Miyagawa ", - "Thomas Sibley ", - "Tokuhiro Matsuno ", - "Tuure Laurinolli ", - "vti ", - "Vyacheslav Matyukhin ", - "xaicron ", - "Yann Kerherve ", - "yappo ", - "zebardy " - ], - "x_serialization_backend" : "JSON::PP version 2.27400_02" -} diff --git a/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/install.json b/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/install.json deleted file mode 100644 index 42c633e3..00000000 --- a/lib/site_perl/5.26.2/x86_64-linux/.meta/App-cpanminus-1.7044/install.json +++ /dev/null @@ -1 +0,0 @@ -{"provides":{"App::cpanminus":{"version":"1.7044","file":"lib/App/cpanminus.pm"}},"version":"1.7044","dist":"App-cpanminus-1.7044","target":"App::cpanminus","pathname":"M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz","name":"App::cpanminus"} \ No newline at end of file diff --git a/lib/site_perl/5.26.2/x86_64-linux/auto/App/cpanminus/.packlist b/lib/site_perl/5.26.2/x86_64-linux/auto/App/cpanminus/.packlist deleted file mode 100644 index df5fdfcb..00000000 --- a/lib/site_perl/5.26.2/x86_64-linux/auto/App/cpanminus/.packlist +++ /dev/null @@ -1,6 +0,0 @@ -/home/git/binary-com/perl/bin/cpanm -/home/git/binary-com/perl/lib/site_perl/5.26.2/App/cpanminus.pm -/home/git/binary-com/perl/lib/site_perl/5.26.2/App/cpanminus/fatscript.pm -/home/git/binary-com/perl/man/man1/cpanm.1 -/home/git/binary-com/perl/man/man3/App::cpanminus.3perl -/home/git/binary-com/perl/man/man3/App::cpanminus::fatscript.3perl