From f41621432fbf15ff8f8e51eaa978bf394b171953 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Fri, 28 Apr 2023 17:04:20 +0200 Subject: [PATCH 01/12] perl: 5.36.0 -> 5.38.0 - perl538: init at 5.38.0 - perl536: 5.36.0 -> 5.36.1 - perl-cross: c8760457 -> 1.5 - perl: perl536 -> perl538 - perlPackages: perl536Packages -> perl538Packages - perldevel: 5.37.0 -> 5.38.0 - perl534: remove - patch: Add conditional no-sys-dirs patch for 5.38.0 - patch: Only apply HTTP-Tiny patch for 5.36.1, as it is fixed in 5.38.0 - patch: Set `USE_ZLIB_NG=False` for Compress::Raw::Zlib --- .../development/interpreters/perl/default.nix | 20 +- .../interpreters/perl/intepreter.nix | 21 +- .../perl/no-sys-dirs-5.38.0.patch | 256 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 8 +- 4 files changed, 281 insertions(+), 24 deletions(-) create mode 100644 pkgs/development/interpreters/perl/no-sys-dirs-5.38.0.patch diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix index 3c57d8a2b690..a2f9862083c9 100644 --- a/pkgs/development/interpreters/perl/default.nix +++ b/pkgs/development/interpreters/perl/default.nix @@ -58,18 +58,18 @@ let in rec { # Maint version - perl534 = callPackage ./intepreter.nix { - self = perl534; - version = "5.34.1"; - sha256 = "sha256-NXlRpJGwuhzjYRJjki/ux4zNWB3dwkpEawM+JazyQqE="; + perl536 = callPackage ./intepreter.nix { + self = perl536; + version = "5.36.1"; + sha256 = "sha256-aCA2Zdjs4CmI/HfckvzLspeoOku0uNB1WEQvl42lTME="; inherit passthruFun; }; # Maint version - perl536 = callPackage ./intepreter.nix { - self = perl536; - version = "5.36.0"; - sha256 = "sha256-4mCFr4rDlvYq3YpTPDoOqMhJfYNvBok0esWr17ek4Ao="; + perl538 = callPackage ./intepreter.nix { + self = perl538; + version = "5.38.0"; + sha256 = "sha256-IT71gInS8sly6jU1F9xg7DZW8FDcwCdmbhGLUIQj5Rc="; inherit passthruFun; }; @@ -77,8 +77,8 @@ in rec { perldevel = callPackage ./intepreter.nix { self = perldevel; perlAttr = "perldevel"; - version = "5.37.0"; - sha256 = "sha256-8RQO6gtH+WmghqzRafbqAH1MhKv/vJCcvysi7/+T9XI="; + version = "5.38.0"; + sha256 = "sha256-IT71gInS8sly6jU1F9xg7DZW8FDcwCdmbhGLUIQj5Rc="; inherit passthruFun; }; } diff --git a/pkgs/development/interpreters/perl/intepreter.nix b/pkgs/development/interpreters/perl/intepreter.nix index be869c2a4e3f..47f58a9223bf 100644 --- a/pkgs/development/interpreters/perl/intepreter.nix +++ b/pkgs/development/interpreters/perl/intepreter.nix @@ -63,13 +63,13 @@ stdenv.mkDerivation (rec { disallowedReferences = [ stdenv.cc ]; patches = - [ - # Do not look in /usr etc. for dependencies. - ./no-sys-dirs-5.31.patch + # Enable TLS/SSL verification in HTTP::Tiny by default + lib.optional (lib.versionOlder version "5.38.0") ./http-tiny-verify-ssl-by-default.patch + + # Do not look in /usr etc. for dependencies. + ++ lib.optional (lib.versionOlder version "5.38.0") ./no-sys-dirs-5.31.patch + ++ lib.optional (lib.versionAtLeast version "5.38.0") ./no-sys-dirs-5.38.0.patch - # Enable TLS/SSL verification in HTTP::Tiny by default - ./http-tiny-verify-ssl-by-default.patch - ] ++ lib.optional stdenv.isSunOS ./ld-shared.patch ++ lib.optionals stdenv.isDarwin [ ./cpp-precomp.patch ./sw_vers.patch ] ++ lib.optional crossCompiling ./MakeMaker-cross.patch; @@ -123,7 +123,7 @@ stdenv.mkDerivation (rec { dontAddPrefix = !crossCompiling; - enableParallelBuilding = !crossCompiling; + enableParallelBuilding = false; # perl includes the build date, the uname of the build system and the # username of the build user in some files. @@ -150,6 +150,7 @@ stdenv.mkDerivation (rec { LIB = ${zlib.out}/lib OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT + USE_ZLIB_NG = False EOF '' + lib.optionalString stdenv.isDarwin '' substituteInPlace hints/darwin.sh --replace "env MACOSX_DEPLOYMENT_TARGET=10.3" "" @@ -232,14 +233,14 @@ stdenv.mkDerivation (rec { priority = 6; # in `buildEnv' (including the one inside `perl.withPackages') the library files will have priority over files in `perl` }; } // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) rec { - crossVersion = "c876045741f5159318085d2737b0090f35a842ca"; # June 5, 2022 + crossVersion = "1.5"; # Jul 03, 2023 perl-cross-src = fetchFromGitHub { - name = "perl-cross-unstable-${crossVersion}"; + name = "perl-cross-${crossVersion}"; owner = "arsv"; repo = "perl-cross"; rev = crossVersion; - sha256 = "sha256-m9UCoTQgXBxSgk9Q1Zv6wl3Qnd0aZm/jEPXkcMKti8U="; + sha256 = "sha256-9nRFJinZUWUSpXXyyIVmhRLQ1B5LB3UmN2iAckmem58="; }; depsBuildBuild = [ buildPackages.stdenv.cc makeWrapper ]; diff --git a/pkgs/development/interpreters/perl/no-sys-dirs-5.38.0.patch b/pkgs/development/interpreters/perl/no-sys-dirs-5.38.0.patch new file mode 100644 index 000000000000..c959730d1420 --- /dev/null +++ b/pkgs/development/interpreters/perl/no-sys-dirs-5.38.0.patch @@ -0,0 +1,256 @@ +diff --git a/Configure b/Configure +index e261cb9548..3bbbc4b9df 100755 +--- a/Configure ++++ b/Configure +@@ -108,15 +108,7 @@ if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' 2>&1 ) 2>&1 >/dev/null ; th + fi + + : Proper PATH setting +-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin' +-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" +-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" +-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" +-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" +-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" +-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" +-paths="$paths /sbin /usr/sbin /usr/libexec" +-paths="$paths /system/gnu_library/bin" ++paths='' + + for p in $paths + do +@@ -1455,8 +1447,7 @@ groupstype='' + i_whoami='' + : Possible local include directories to search. + : Set locincpth to "" in a hint file to defeat local include searches. +-locincpth="/usr/local/include /opt/local/include /usr/gnu/include" +-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" ++locincpth="" + : + : no include file wanted by default + inclwanted='' +@@ -1470,17 +1461,12 @@ DEBUGGING='' + archobjs='' + libnames='' + : change the next line if compiling for Xenix/286 on Xenix/386 +-xlibpth='/usr/lib/386 /lib/386' ++xlibpth='' + : Possible local library directories to search. +-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" +-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" ++loclibpth="" + + : general looking path for locating libraries +-glibpth="/lib /usr/lib $xlibpth" +-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" +-test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" +-test -f /shlib/libc.so && glibpth="/shlib $glibpth" +-test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" ++glibpth="" + + : Private path used by Configure to find libraries. Its value + : is prepended to libpth. This variable takes care of special +@@ -1515,8 +1501,6 @@ libswanted="cl pthread socket bind inet ndbm gdbm dbm db malloc dl ld" + libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD" + : We probably want to search /usr/shlib before most other libraries. + : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. +-glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` +-glibpth="/usr/shlib $glibpth" + : Do not use vfork unless overridden by a hint file. + usevfork=false + +@@ -2581,7 +2565,6 @@ uname + zip + " + pth=`echo $PATH | sed -e "s/$p_/ /g"` +-pth="$pth $sysroot/lib $sysroot/usr/lib" + for file in $loclist; do + eval xxx=\$$file + case "$xxx" in +@@ -5023,7 +5006,7 @@ esac + : Set private lib path + case "$plibpth" in + '') if ./mips; then +- plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib" ++ plibpth="$incpath/usr/lib" + fi;; + esac + case "$libpth" in +@@ -8860,13 +8843,8 @@ esac + echo " " + case "$sysman" in + '') +- syspath='/usr/share/man/man1 /usr/man/man1' +- syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1" +- syspath="$syspath /usr/man/u_man/man1" +- syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1" +- syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1" +- syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1" +- sysman=`./loc . /usr/man/man1 $syspath` ++ syspath='' ++ sysman='' + ;; + esac + if $test -d "$sysman"; then +@@ -21500,9 +21478,10 @@ $rm_try tryp + case "$full_ar" in + '') full_ar=$ar ;; + esac ++full_ar=ar + + : Store the full pathname to the sed program for use in the C program +-full_sed=$sed ++full_sed=sed + + : see what type gids are declared as in the kernel + echo " " +diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL +index ae647d5f06..9a05d66592 100644 +--- a/ext/Errno/Errno_pm.PL ++++ b/ext/Errno/Errno_pm.PL +@@ -135,12 +135,7 @@ sub get_files { + if ($dep =~ /(\S+errno\.h)/) { + push(@file, $1); + } +- } elsif ($^O eq 'linux' && +- $Config{gccversion} ne '' && +- $Config{gccversion} !~ /intel/i && +- # might be using, say, Intel's icc +- $linux_errno_h +- ) { ++ } elsif (0) { + push(@file, $linux_errno_h); + } elsif ($^O eq 'haiku') { + # hidden in a special place +diff --git a/hints/freebsd.sh b/hints/freebsd.sh +index 4d26835e99..c6d365d84d 100644 +--- a/hints/freebsd.sh ++++ b/hints/freebsd.sh +@@ -127,21 +127,21 @@ case "$osvers" in + objformat=`/usr/bin/objformat` + if [ x$objformat = xaout ]; then + if [ -e /usr/lib/aout ]; then +- libpth="/usr/lib/aout /usr/local/lib /usr/lib" +- glibpth="/usr/lib/aout /usr/local/lib /usr/lib" ++ libpth="" ++ glibpth="" + fi + lddlflags='-Bshareable' + else +- libpth="/usr/lib /usr/local/lib" +- glibpth="/usr/lib /usr/local/lib" ++ libpth="" ++ glibpth="" + ldflags="-Wl,-E " + lddlflags="-shared " + fi + cccdlflags='-DPIC -fPIC' + ;; + *) +- libpth="/usr/lib /usr/local/lib" +- glibpth="/usr/lib /usr/local/lib" ++ libpth="" ++ glibpth="" + ldflags="-Wl,-E " + lddlflags="-shared " + cccdlflags='-DPIC -fPIC' +diff --git a/hints/linux.sh b/hints/linux.sh +index e1508c7509..5a187c583a 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -150,28 +150,6 @@ case "$optimize" in + ;; + esac + +-# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries +-# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us +-# where to look. We don't want gcc's own libraries, however, so we +-# filter those out. +-# This could be conditional on Ubuntu, but other distributions may +-# follow suit, and this scheme seems to work even on rather old gcc's. +-# This unconditionally uses gcc because even if the user is using another +-# compiler, we still need to find the math library and friends, and I don't +-# know how other compilers will cope with that situation. +-# Morever, if the user has their own gcc earlier in $PATH than the system gcc, +-# we don't want its libraries. So we try to prefer the system gcc +-# Still, as an escape hatch, allow Configure command line overrides to +-# plibpth to bypass this check. +-if [ -x /usr/bin/gcc ] ; then +- gcc=/usr/bin/gcc +-# clang also provides -print-search-dirs +-elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then +- gcc=${cc:-cc} +-else +- gcc=gcc +-fi +- + case "$plibpth" in + '') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | + cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` +@@ -208,32 +186,6 @@ case "$usequadmath" in + ;; + esac + +-case "$libc" in +-'') +-# If you have glibc, then report the version for ./myconfig bug reporting. +-# (Configure doesn't need to know the specific version since it just uses +-# gcc to load the library for all tests.) +-# We don't use __GLIBC__ and __GLIBC_MINOR__ because they +-# are insufficiently precise to distinguish things like +-# libc-2.0.6 and libc-2.0.7. +- for p in $plibpth +- do +- for trylib in libc.so.6 libc.so +- do +- if $test -e $p/$trylib; then +- libc=`ls -l $p/$trylib | awk '{print $NF}'` +- if $test "X$libc" != X; then +- break +- fi +- fi +- done +- if $test "X$libc" != X; then +- break +- fi +- done +- ;; +-esac +- + if ${sh:-/bin/sh} -c exit; then + echo '' + echo 'You appear to have a working bash. Good.' +@@ -311,33 +263,6 @@ sparc*) + ;; + esac + +-# SuSE8.2 has /usr/lib/libndbm* which are ld scripts rather than +-# true libraries. The scripts cause binding against static +-# version of -lgdbm which is a bad idea. So if we have 'nm' +-# make sure it can read the file +-# NI-S 2003/08/07 +-case "$nm" in +- '') ;; +- *) +- for p in $plibpth +- do +- if $test -r $p/libndbm.so; then +- if $nm $p/libndbm.so >/dev/null 2>&1 ; then +- echo 'Your shared -lndbm seems to be a real library.' +- _libndbm_real=1 +- break +- fi +- fi +- done +- if $test "X$_libndbm_real" = X; then +- echo 'Your shared -lndbm is not a real library.' +- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` +- shift +- libswanted="$*" +- fi +- ;; +-esac +- + # Linux on Synology. + if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then + # Tested on Synology DS213 and DS413 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5e42f2c0f946..765731096d0e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25500,14 +25500,14 @@ with pkgs; ### DEVELOPMENT / PERL MODULES perlInterpreters = import ../development/interpreters/perl { inherit callPackage; }; - inherit (perlInterpreters) perl534 perl536 perldevel; + inherit (perlInterpreters) perl536 perl538 perldevel; - perl534Packages = recurseIntoAttrs perl534.pkgs; perl536Packages = recurseIntoAttrs perl536.pkgs; + perl538Packages = recurseIntoAttrs perl538.pkgs; perldevelPackages = perldevel.pkgs; - perl = perl536; - perlPackages = perl536Packages; + perl = perl538; + perlPackages = perl538Packages; ack = perlPackages.ack; From 5173b569f5de95ac902e809f71d04e69062884e9 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 10:40:03 +0200 Subject: [PATCH 02/12] unit: add perl538 as default, remove perl534 --- pkgs/servers/http/unit/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/http/unit/default.nix b/pkgs/servers/http/unit/default.nix index e1f41f2f6b6b..3eecd652ada3 100644 --- a/pkgs/servers/http/unit/default.nix +++ b/pkgs/servers/http/unit/default.nix @@ -3,8 +3,8 @@ , withPython3 ? true, python3, ncurses , withPHP81 ? true, php81 , withPHP82 ? false, php82 -, withPerl534 ? false, perl534 -, withPerl536 ? true, perl536 +, withPerl536 ? false, perl536 +, withPerl538 ? true, perl538 , withPerldevel ? false, perldevel , withRuby_3_0 ? false, ruby_3_0 , withRuby_3_1 ? true, ruby_3_1 @@ -46,8 +46,8 @@ in stdenv.mkDerivation rec { ++ optionals withPython3 [ python3 ncurses ] ++ optional withPHP81 php81-unit ++ optional withPHP82 php82-unit - ++ optional withPerl534 perl534 ++ optional withPerl536 perl536 + ++ optional withPerl538 perl538 ++ optional withPerldevel perldevel ++ optional withRuby_3_0 ruby_3_0 ++ optional withRuby_3_1 ruby_3_1 @@ -70,8 +70,8 @@ in stdenv.mkDerivation rec { ${optionalString withPython3 "./configure python --module=python3 --config=python3-config --lib-path=${python3}/lib"} ${optionalString withPHP81 "./configure php --module=php81 --config=${php81-unit.unwrapped.dev}/bin/php-config --lib-path=${php81-unit}/lib"} ${optionalString withPHP82 "./configure php --module=php81 --config=${php82-unit.unwrapped.dev}/bin/php-config --lib-path=${php82-unit}/lib"} - ${optionalString withPerl534 "./configure perl --module=perl534 --perl=${perl534}/bin/perl"} ${optionalString withPerl536 "./configure perl --module=perl536 --perl=${perl536}/bin/perl"} + ${optionalString withPerl538 "./configure perl --module=perl538 --perl=${perl538}/bin/perl"} ${optionalString withPerldevel "./configure perl --module=perldev --perl=${perldevel}/bin/perl"} ${optionalString withRuby_3_0 "./configure ruby --module=ruby30 --ruby=${ruby_3_0}/bin/ruby"} ${optionalString withRuby_3_1 "./configure ruby --module=ruby31 --ruby=${ruby_3_1}/bin/ruby"} From ae7c95e55c106aa6b2f98d21b871bc3491865917 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 10:40:45 +0200 Subject: [PATCH 03/12] slimserver: replace perl534Packages with perlPackages --- pkgs/servers/slimserver/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/slimserver/default.nix b/pkgs/servers/slimserver/default.nix index 4a98e2a436e1..f561eec0bac8 100644 --- a/pkgs/servers/slimserver/default.nix +++ b/pkgs/servers/slimserver/default.nix @@ -5,14 +5,14 @@ , lib , makeWrapper , monkeysAudio -, perl534Packages +, perlPackages , sox , stdenv , wavpack , zlib }: -perl534Packages.buildPerlPackage rec { +perlPackages.buildPerlPackage rec { pname = "slimserver"; version = "8.3.1"; @@ -25,7 +25,7 @@ perl534Packages.buildPerlPackage rec { nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ perl534Packages.CryptOpenSSLRSA perl534Packages.IOSocketSSL ]; + buildInputs = [ perlPackages.CryptOpenSSLRSA perlPackages.IOSocketSSL ]; prePatch = '' rm -rf Bin From c7387bbc8a2df93530dfade5aae2e99796c38804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Mon, 10 Apr 2023 22:19:25 +0200 Subject: [PATCH 04/12] perl.mini: fix modules for compatibility with miniperl Added compatibility for - CPAN::Meta - JSON::PP - Data::Dumper --- .../interpreters/perl/MakeMaker-cross.patch | 17 -- .../development/interpreters/perl/cross.patch | 250 ++++++++++++++++++ .../interpreters/perl/intepreter.nix | 2 +- 3 files changed, 251 insertions(+), 18 deletions(-) delete mode 100644 pkgs/development/interpreters/perl/MakeMaker-cross.patch create mode 100644 pkgs/development/interpreters/perl/cross.patch diff --git a/pkgs/development/interpreters/perl/MakeMaker-cross.patch b/pkgs/development/interpreters/perl/MakeMaker-cross.patch deleted file mode 100644 index 40626c51f9bd..000000000000 --- a/pkgs/development/interpreters/perl/MakeMaker-cross.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -Naur a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm ---- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2017-06-30 17:03:20.000000000 -0400 -+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2018-02-28 10:06:37.031237946 -0500 -@@ -1267,7 +1267,12 @@ - my $value = shift; - return $value if $UNDER_CORE; - my $tvalue = ''; -- require B; -+ eval { -+ require B; -+ }; -+ if ($@) { -+ return $tvalue; -+ } - my $sv = B::svref_2object(\$value); - my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef; - while ( $magic ) { diff --git a/pkgs/development/interpreters/perl/cross.patch b/pkgs/development/interpreters/perl/cross.patch new file mode 100644 index 000000000000..e0f05ede90d0 --- /dev/null +++ b/pkgs/development/interpreters/perl/cross.patch @@ -0,0 +1,250 @@ +From: =?UTF-8?q?Christian=20K=C3=B6gler?= +Date: Mon, 10 Apr 2023 22:12:24 +0200 +Subject: [PATCH] miniperl compatible modules + +CPAN::Meta +ExtUtils::MakeMaker +JSON::PP +Data::Dumper + +Updated for perl v5.38.0 by stig@stig.io + +--- + +diff --git a/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm b/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm +index b0e83b0d2d..dab4907704 100644 +--- a/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm ++++ b/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm +@@ -86,21 +86,7 @@ sub new { + # 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; ++ return version::->parse($value)->stringify; + } + + # safe if given an unblessed reference +diff --git a/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm b/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm +index 746abd63bc..c55d7cd2d0 100644 +--- a/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm ++++ b/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm +@@ -1,6 +1,7 @@ + use 5.008001; # sane UTF-8 support + use strict; + use warnings; ++no warnings 'experimental::builtin'; + package CPAN::Meta::YAML; # git description: v1.68-2-gcc5324e + # XXX-INGY is 5.8.1 too old/broken for utf8? + # XXX-XDG Lancaster consensus was that it was sufficient until +@@ -650,27 +651,29 @@ sub _dump_string { + join '', map { "$_\n" } @lines; + } + +-sub _has_internal_string_value { ++# taken from cpan/JSON-PP/lib/JSON/PP.pm ++sub _looks_like_number { + my $value = shift; +- my $b_obj = B::svref_2object(\$value); # for round trip problem +- return $b_obj->FLAGS & B::SVf_POK(); ++ no warnings 'numeric'; ++ # if the utf8 flag is on, it almost certainly started as a string ++ return if utf8::is_utf8($value); ++ # detect numbers ++ # string & "" -> "" ++ # number & "" -> 0 (with warning) ++ # nan and inf can detect as numbers, so check with * 0 ++ return unless length((my $dummy = "") & $value); ++ return unless 0 + $value eq $value; ++ return 1 if $value * 0 == 0; ++ return -1; # inf/nan + } + + 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 (_looks_like_number($string)) { ++ return qq['$string']; + } + if ( $string =~ /[\x00-\x09\x0b-\x0d\x0e-\x1f\x7f-\x9f\'\n]/ ) { + $string =~ s/\\/\\\\/g; +@@ -800,9 +803,6 @@ sub 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 +@@ -822,35 +822,8 @@ sub _can_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 +- } ++ *refaddr = *builtin::refaddr; + } + + delete $CPAN::Meta::YAML::{refaddr}; +diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm +index 3604eae402..991f69d275 100644 +--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm ++++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm +@@ -1,12 +1,13 @@ + use strict; + use warnings; ++no warnings 'experimental::builtin'; + + package CPAN::Meta::Merge; + + our $VERSION = '2.150010'; + + use Carp qw/croak/; +-use Scalar::Util qw/blessed/; ++use builtin qw/blessed/; + use CPAN::Meta::Converter 2.141170; + + sub _is_identical { +diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm +index d4e93fd8a5..809da68d02 100644 +--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm ++++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm +@@ -1,6 +1,7 @@ + use 5.006; + use strict; + use warnings; ++no warnings 'experimental::builtin'; + package CPAN::Meta::Prereqs; + + our $VERSION = '2.150010'; +@@ -14,7 +15,6 @@ our $VERSION = '2.150010'; + #pod =cut + + use Carp qw(confess); +-use Scalar::Util qw(blessed); + use CPAN::Meta::Requirements 2.121; + + #pod =method new +@@ -168,7 +168,12 @@ sub types_in { + sub with_merged_prereqs { + my ($self, $other) = @_; + +- my @other = blessed($other) ? $other : @$other; ++ eval 'require Scalar::Util'; ++ my @other = unless($@){ ++ Scalar::Util::blessed($other) ? $other : @$other; ++ }else{ ++ builtin::blessed($other) ? $other : @$other; ++ } + + my @prereq_objs = ($self, @other); + +diff --git a/cpan/JSON-PP/lib/JSON/PP.pm b/cpan/JSON-PP/lib/JSON/PP.pm +index fc8fcbc8f0..cda7b90c65 100644 +--- a/cpan/JSON-PP/lib/JSON/PP.pm ++++ b/cpan/JSON-PP/lib/JSON/PP.pm +@@ -4,6 +4,7 @@ package JSON::PP; + + use 5.008; + use strict; ++no warnings 'experimental::builtin'; + + use Exporter (); + BEGIN { our @ISA = ('Exporter') } +diff --git a/dist/Data-Dumper/Dumper.pm b/dist/Data-Dumper/Dumper.pm +index bb6d3caedb..0c2fde4743 100644 +--- a/dist/Data-Dumper/Dumper.pm ++++ b/dist/Data-Dumper/Dumper.pm +@@ -11,6 +11,7 @@ package Data::Dumper; + + use strict; + use warnings; ++no warnings 'experimental::builtin'; + + #$| = 1; + +@@ -125,8 +126,7 @@ sub new { + # Packed numeric addresses take less memory. Plus pack is faster than sprintf + + sub format_refaddr { +- require Scalar::Util; +- pack "J", Scalar::Util::refaddr(shift); ++ pack "J", builtin::refaddr(shift); + }; + + # +@@ -282,9 +282,8 @@ sub _dump { + warn "WARNING(Freezer method call failed): $@" if $@; + } + +- require Scalar::Util; +- my $realpack = Scalar::Util::blessed($val); +- my $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val; ++ my $realpack = builtin::blessed($val); ++ my $realtype = $realpack ? builtin::reftype($val) : ref $val; + $id = format_refaddr($val); + + # Note: By this point $name is always defined and of non-zero length. +@@ -576,7 +575,7 @@ sub _dump { + # here generates a different result. So there are actually "three" different + # implementations of Data::Dumper (kind of sort of) but we only test two. + elsif (!defined &_vstring +- and ref $ref eq 'VSTRING' || eval{Scalar::Util::isvstring($val)}) { ++ and ref $ref eq 'VSTRING') { + $out .= sprintf "v%vd", $val; + } + # \d here would treat "1\x{660}" as a safe decimal number diff --git a/pkgs/development/interpreters/perl/intepreter.nix b/pkgs/development/interpreters/perl/intepreter.nix index 47f58a9223bf..69c38b0df712 100644 --- a/pkgs/development/interpreters/perl/intepreter.nix +++ b/pkgs/development/interpreters/perl/intepreter.nix @@ -72,7 +72,7 @@ stdenv.mkDerivation (rec { ++ lib.optional stdenv.isSunOS ./ld-shared.patch ++ lib.optionals stdenv.isDarwin [ ./cpp-precomp.patch ./sw_vers.patch ] - ++ lib.optional crossCompiling ./MakeMaker-cross.patch; + ++ lib.optional crossCompiling ./cross.patch; # This is not done for native builds because pwd may need to come from # bootstrap tools when building bootstrap perl. From c865c30a00d1efc9b5d17eb40168ec910cf399f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sat, 15 Apr 2023 16:14:49 +0200 Subject: [PATCH 05/12] perlPackages.ModuleBuild: fix cross-compilation --- pkgs/top-level/perl-packages.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 3311de6b9de9..5722603dc1e3 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -15405,6 +15405,20 @@ with self; { url = "mirror://cpan/authors/id/L/LE/LEONT/Module-Build-0.4231.tar.gz"; hash = "sha256-fg9MaSwXQMGshOoU1+o9i8eYsvsmwJh3Ip4E9DCytxc="; }; + postConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + # for unknown reason, the first run of Build fails + ./Build || true + ''; + postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + # remove version check since miniperl uses a stub of File::Temp, which do not provide a version: + # https://github.com/arsv/perl-cross/blob/master/cnf/stub/File/Temp.pm + sed -i '/File::Temp/d' \ + Build.PL + + # fix discover perl function, it can not handle a wrapped perl + sed -i "s,\$self->_discover_perl_interpreter,'$(type -p perl)',g" \ + lib/Module/Build/Base.pm + ''; meta = { description = "Build and install Perl modules"; license = with lib.licenses; [ artistic1 gpl1Plus ]; From c16e61489710cf9f89650bc750464348a243ae48 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:07:16 +0200 Subject: [PATCH 06/12] perlPackages.BKeywords: 1.24 -> 1.26 --- pkgs/top-level/perl-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 5722603dc1e3..16d12704ff66 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -1705,10 +1705,10 @@ with self; { BKeywords = buildPerlPackage rec { pname = "B-Keywords"; - version = "1.24"; + version = "1.26"; src = fetchurl { - url = "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-1.24.tar.gz"; - hash = "sha256-pc9rsoXQbRfO4id4O3I7snQhP9QVOl3uMR0kDhFpYG4="; + url = "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-1.26.tar.gz"; + hash = "sha256-LaoVXS8mf7De3Yf4pMT7VmOHn8EGUXse4lg1Pvh67TQ="; }; meta = { description = "Lists of reserved barewords and symbol names"; From 4da042f5171b1b21bfb54efd40792b119b6b8f84 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:17:05 +0200 Subject: [PATCH 07/12] perlPackages.MIMECharset: 1.012.2 -> 1.013.1 --- pkgs/top-level/perl-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 16d12704ff66..69c4bcc8c317 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -15158,10 +15158,10 @@ with self; { MIMECharset = buildPerlPackage { pname = "MIME-Charset"; - version = "1.012.2"; + version = "1.013.1"; src = fetchurl { - url = "mirror://cpan/authors/id/N/NE/NEZUMI/MIME-Charset-1.012.2.tar.gz"; - hash = "sha256-h4x3nAJWxZFma9BsDN5MDXgg7uuY/RGDCCrumh57HRM="; + url = "mirror://cpan/authors/id/N/NE/NEZUMI/MIME-Charset-1.013.1.tar.gz"; + hash = "sha256-G7em4MDSUfI9bmC/hMmt78W3TuxYR1v+5NORB+YIcPA="; }; meta = { description = "Charset Information for MIME"; From b99636d903bc38194136bd8d3dd53b4649df8aa1 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:21:53 +0200 Subject: [PATCH 08/12] perlPackages.TestSimple13: 1.302183 -> 1.302195 --- pkgs/top-level/perl-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 69c4bcc8c317..1d0e391dd0c3 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -24938,10 +24938,10 @@ with self; { TestSimple13 = buildPerlPackage { pname = "Test-Simple"; - version = "1.302183"; + version = "1.302195"; src = fetchurl { - url = "mirror://cpan/authors/id/E/EX/EXODIST/Test-Simple-1.302183.tar.gz"; - hash = "sha256-mgO9pexCCuqWkrZQQ39NW1dPpQX91/9gzbXz7ANBBv8="; + url = "mirror://cpan/authors/id/E/EX/EXODIST/Test-Simple-1.302195.tar.gz"; + hash = "sha256-s5C7I1kuC5Rsla27PDCxG8Y0ooayhHvmEa2SnFfjmmw="; }; meta = { description = "Basic utilities for writing tests"; From 6ab63f9acb8b2f0e3e8cbe234a7c1b1f7d241ee3 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:22:17 +0200 Subject: [PATCH 09/12] perlPackages.TestTrap: 0.3.4 -> 0.3.5 --- pkgs/top-level/perl-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 1d0e391dd0c3..ebe071689b6c 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -25925,10 +25925,10 @@ with self; { TestTrap = buildPerlModule { pname = "Test-Trap"; - version = "0.3.4"; + version = "0.3.5"; src = fetchurl { - url = "mirror://cpan/authors/id/E/EB/EBHANSSEN/Test-Trap-v0.3.4.tar.gz"; - hash = "sha256-CwRlbzO2yW2o7sTP/lKGFQtOS14pkdOINoaxCRAQWuI="; + url = "mirror://cpan/authors/id/E/EB/EBHANSSEN/Test-Trap-v0.3.5.tar.gz"; + hash = "sha256-VPmQFlYrWx1yEQEA8fK+Q3F4zfhDdvSV/9A3bx1+y5o="; }; propagatedBuildInputs = [ DataDump ]; meta = { From 984dc4c0484ad726e8ceeaf3b752cdc8afba8cfd Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:23:42 +0200 Subject: [PATCH 10/12] perlPackages.TestWithoutModule: 0.20 -> 0.21 --- pkgs/top-level/perl-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index ebe071689b6c..7a6c517b7f44 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -25165,10 +25165,10 @@ with self; { TestWithoutModule = buildPerlPackage { pname = "Test-Without-Module"; - version = "0.20"; + version = "0.21"; src = fetchurl { - url = "mirror://cpan/authors/id/C/CO/CORION/Test-Without-Module-0.20.tar.gz"; - hash = "sha256-jprrfDKmxtC4qTEU2yqMBychJzqdmi3U+cqGz9KKpSQ="; + url = "mirror://cpan/authors/id/C/CO/CORION/Test-Without-Module-0.21.tar.gz"; + hash = "sha256-PN6vraxIU+vq/miTRtVV2l36PPqdTITj5ee/7lC+7EY="; }; meta = { description = "Test fallback behaviour in absence of modules"; From 5e8767c9458bbf8380a98b0738173d7f991a23c3 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Thu, 6 Jul 2023 13:29:29 +0200 Subject: [PATCH 11/12] perlPackages.Test2Harness: 1.000042 -> 1.000152 --- pkgs/top-level/perl-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 7a6c517b7f44..8e85be0d1cc4 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -23529,10 +23529,10 @@ with self; { Test2Harness = buildPerlPackage { pname = "Test2-Harness"; - version = "1.000042"; + version = "1.000152"; src = fetchurl { - url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Harness-1.000042.tar.gz"; - hash = "sha256-qvIxporxpv/WoRGIh1/PVy43PkPIKFlFInudaHtD2y0="; + url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Harness-1.000152.tar.gz"; + hash = "sha256-iIqWAdvTPuuaSTcdZmK7JE8Ad/QJlM4gvJClvlSRqls="; }; checkPhase = '' @@ -23540,7 +23540,7 @@ with self; { ./scripts/yath test -j $NIX_BUILD_CORES ''; - propagatedBuildInputs = [ DataUUID Importer LongJump ScopeGuard TermTable Test2PluginMemUsage Test2PluginUUID Test2Suite gotofile ]; + propagatedBuildInputs = [ DataUUID Importer LongJump ScopeGuard TermTable Test2PluginMemUsage Test2PluginUUID Test2Suite YAMLTiny gotofile ]; meta = { description = "A new and improved test harness with better Test2 integration"; license = with lib.licenses; [ artistic1 gpl1Plus ]; From fd94d3ff348685ffc84da8f7a8ab378f243c226a Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Fri, 7 Jul 2023 00:12:28 +0200 Subject: [PATCH 12/12] perlPackages.XSParseKeyword: 0.25 -> 0.34 --- pkgs/top-level/perl-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 8e85be0d1cc4..c5f4933e8cb2 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -27924,12 +27924,12 @@ with self; { XSParseKeyword = buildPerlModule { pname = "XS-Parse-Keyword"; - version = "0.25"; + version = "0.34"; src = fetchurl { - url = "mirror://cpan/authors/id/P/PE/PEVANS/XS-Parse-Keyword-0.25.tar.gz"; - hash = "sha256-9e2zDPfH8iDQxsMdwetVQDKECpnHwpgxT1zD/vZscsc="; + url = "mirror://cpan/authors/id/P/PE/PEVANS/XS-Parse-Keyword-0.34.tar.gz"; + hash = "sha256-EDPdtAmSTZ1Cs4MEodeXRaBDSrxrBJHrErbIu5bx1sE="; }; - buildInputs = [ ExtUtilsCChecker ]; + buildInputs = [ ExtUtilsCChecker Test2Suite ]; perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC"; meta = { description = "XS functions to assist in parsing keyword syntax";