diff options
Diffstat (limited to 'nixpkgs/pkgs/development/perl-modules')
62 files changed, 3424 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/perl-modules/Alien-FFI-dont-download.patch b/nixpkgs/pkgs/development/perl-modules/Alien-FFI-dont-download.patch new file mode 100644 index 000000000000..ba79c8c0eb28 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Alien-FFI-dont-download.patch @@ -0,0 +1,29 @@ +diff --git a/alienfile b/alienfile +index 18d6b42..5ccf296 100644 +--- a/alienfile ++++ b/alienfile +@@ -11,12 +11,6 @@ plugin 'PkgConfig' => 'libffi'; + + share { + +- plugin 'Download::GitHub' => ( +- github_user => 'libffi', +- github_repo => 'libffi', +- asset => 1, +- ); +- + plugin 'Build::Autoconf' => (); + + my $configure = '--disable-shared --enable-static --disable-builddir'; +diff --git a/t/00_diag.t b/t/00_diag.t +index 51dd784..2bc314c 100644 +--- a/t/00_diag.t ++++ b/t/00_diag.t +@@ -13,7 +13,6 @@ $modules{$_} = $_ for qw( + Alien::Base + Alien::Build + Alien::Build::MM +- Alien::Build::Plugin::Download::GitHub + Alien::Build::Plugin::Probe::Vcpkg + Capture::Tiny + ExtUtils::MakeMaker diff --git a/nixpkgs/pkgs/development/perl-modules/ArchiveLibarchive-set-findlib-path.patch b/nixpkgs/pkgs/development/perl-modules/ArchiveLibarchive-set-findlib-path.patch new file mode 100644 index 000000000000..47bc8ee9dc56 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/ArchiveLibarchive-set-findlib-path.patch @@ -0,0 +1,25 @@ +diff --git a/lib/Archive/Libarchive/Lib.pm b/lib/Archive/Libarchive/Lib.pm +index 3fcbcf4..214df7a 100644 +--- a/lib/Archive/Libarchive/Lib.pm ++++ b/lib/Archive/Libarchive/Lib.pm +@@ -3,7 +3,7 @@ package Archive::Libarchive::Lib; + use strict; + use warnings; + use 5.020; +-use FFI::CheckLib 0.30 qw( find_lib_or_die ); ++use FFI::CheckLib qw( find_lib_or_die ); + use Encode qw( decode ); + use experimental qw( signatures ); + +index 3fcbcf4..718caed 100644 +--- a/lib/Archive/Libarchive/Lib.pm ++++ b/lib/Archive/Libarchive/Lib.pm +@@ -23,7 +23,7 @@ L<Archive::Libarchive>. + + sub lib + { +- $ENV{ARCHIVE_LIBARCHIVE_LIB_DLL} // find_lib_or_die( lib => 'archive', symbol => ['archive_read_free','archive_write_free','archive_free'], alien => ['Alien::Libarchive3'] ); ++ $ENV{ARCHIVE_LIBARCHIVE_LIB_DLL} // find_lib_or_die( lib => 'archive', symbol => ['archive_read_free','archive_write_free','archive_free'], libpath => '@@libarchive@@' ); + } + + sub ffi diff --git a/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/default.nix b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/default.nix new file mode 100644 index 000000000000..516b6d014c5a --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/default.nix @@ -0,0 +1,66 @@ +{ + BioPerl, + IOString, + buildPerlModule, + fetchFromGitHub, + fetchpatch, + fetchurl, + kent, + lib, + libmysqlclient, + libpng, + openssl, + perl +}: + +buildPerlModule rec { + pname = "Bio-BigFile"; + version = "1.07"; + + src = fetchurl { + url = "mirror://cpan/authors/id/L/LD/LDS/Bio-BigFile-${version}.tar.gz"; + sha256 = "277b66ce8acbdd52399e2c5a0cf4e3bd5c74c12b94877cd383d0c4c97740d16d"; + }; + + # Only kent 335 works with Bio-BigFile, see + # - official documentation: https://www.ensembl.org/info/docs/tools/vep/script/vep_download.html#bigfile + # - one of the developer's answer: https://github.com/Ensembl/ensembl-vep/issues/1412 + # BioBigfile needs the environment variable KENT_SRC to find kent + KENT_SRC = kent.overrideAttrs (old: rec { + pname = "kent"; + version = "335"; + + src = fetchFromGitHub { + owner = "ucscGenomeBrowser"; + repo = "kent"; + rev = "v${version}_base"; + sha256 = "1455dwzpaq4hyhcqj3fpwgq5a39kp46qarfbr6ms6l2lz583r083"; + }; + + patches = [ + # Fix for linking error with zlib. Adding zlib as a dependency is not enough + ./kent-utils.patch + # Vendoring upstream patch (not merged in uscsGenomeBrowser/kent) + ./kent-316e4fd40f53c96850128fd65097a42623d1e736.patch + ]; + }); + + + buildInputs = [ + BioPerl + IOString + libpng + libmysqlclient + openssl + ]; + + # Ensure compatibility with GCC-11 (compilation fails if -Wno-format-security) + hardeningDisable = [ "format" ]; + + meta = with lib; { + homepage = "https://metacpan.org/dist/Bio-BigFile"; + description = "Manipulate Jim Kent's BigWig and BigBed index files for genomic features"; + license = licenses.artistic2; + maintainers = with maintainers; [ apraga ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-316e4fd40f53c96850128fd65097a42623d1e736.patch b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-316e4fd40f53c96850128fd65097a42623d1e736.patch new file mode 100644 index 000000000000..42d122a8b0f7 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-316e4fd40f53c96850128fd65097a42623d1e736.patch @@ -0,0 +1,25 @@ +From 316e4fd40f53c96850128fd65097a42623d1e736 Mon Sep 17 00:00:00 2001 +From: Marcel Bargull <marcel.bargull@udo.edu> +Date: Sat, 27 Mar 2021 16:23:34 +0100 +Subject: [PATCH] Fix linking Clang 11 compiled objects + +With Clang 11 htmlRecover from lib/htmshell.h is picked up as a +definition, not just declaration of the jmp_buf. As such both +lib/htmshell.c and hg/lib/cart.c export two symbols with the same name. +--- + src/inc/htmshell.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/inc/htmshell.h b/src/inc/htmshell.h +index 9d85f45b936..dd586db761c 100644 +--- a/src/inc/htmshell.h ++++ b/src/inc/htmshell.h +@@ -160,7 +160,7 @@ void htmlBadVar(char *varName); + void htmlImage(char *fileName, int width, int height); + /* Display centered image file. */ + +-jmp_buf htmlRecover; /* Error recovery jump. Exposed for cart's use. */ ++extern jmp_buf htmlRecover; /* Error recovery jump. Exposed for cart's use. */ + + void htmlVaWarn(char *format, va_list args); + /* Write an error message. (Generally you just call warn() or errAbort(). diff --git a/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-utils.patch b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-utils.patch new file mode 100644 index 000000000000..0c1db4d6c66c --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Bio-BigFile/kent-utils.patch @@ -0,0 +1,27 @@ +--- ./src/utils/bigWigCat/makefile 2023-03-27 14:03:01.585896516 +0000 ++++ ./src/utils/bigWigCat/makefile 2023-03-27 14:03:27.716180479 +0000 +@@ -1,3 +1,4 @@ + kentSrc = ../.. + A = bigWigCat + include $(kentSrc)/inc/userApp.mk ++L += -lz + +--- ./src/utils/pslLiftSubrangeBlat/makefile 1970-01-01 00:00:01.000000000 +0000 ++++ ./src/utils/pslLiftSubrangeBlat/makefile 2023-03-27 14:36:59.044600213 +0000 +@@ -3,7 +3,7 @@ + preMyLibs += ../../lib/$(MACHTYPE)/jkhgap.a + include $(kentSrc)/inc/userApp.mk + HG_INC += -I../../hg/inc +-L += $(MYSQLLIBS) -lm ++L += $(MYSQLLIBS) -lm -lz + + test:: + cd tests && ${MAKE} test + +--- ./src/utils/bigWigCorrelate/makefile 2023-03-27 14:36:23.117545553 +0000 ++++ ./src/utils/bigWigCorrelate/makefile 2023-03-27 14:36:33.854328176 +0000 +@@ -1,3 +1,4 @@ + kentSrc = ../.. + A = bigWigCorrelate + include $(kentSrc)/inc/userApp.mk ++L += -lz diff --git a/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/default.nix b/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/default.nix new file mode 100644 index 000000000000..237a4be03614 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/default.nix @@ -0,0 +1,36 @@ +{ lib, buildPerlPackage, fetchFromGitHub }: + +buildPerlPackage rec { + pname = "BioExtAlign"; + version = "1.5.1"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "bioperl"; + repo = "bioperl-ext"; + rev = "bioperl-ext-release-${lib.replaceStrings ["."] ["-"] version}"; + sha256 = "sha256-+0tZ6q3PFem8DWa2vq+njOLmjDvMB0JhD0FGk00lVMA="; + }; + + patches = [ ./fprintf.patch ]; + + # Do not install other Bio-ext packages + preConfigure = '' + cd Bio/Ext/Align + ''; + + # Disable tests as it requires Bio::Tools::Align which is in a different directory + buildPhase = '' + make + ''; + + meta = { + homepage = "https://github.com/bioperl/bioperl-ext"; + description = "Write Perl Subroutines in Other Programming Languages"; + longDescription = '' + Part of BioPerl Extensions (BioPerl-Ext) distribution, a collection of Bioperl C-compiled extensions. + ''; + license = with lib.licenses; [ artistic1 ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/fprintf.patch b/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/fprintf.patch new file mode 100644 index 000000000000..f62004a9a338 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Bio-Ext-Align/fprintf.patch @@ -0,0 +1,13 @@ +diff --git a/libs/dpalign.c b/libs/dpalign.c +index 0e07b67..0eab932 100644 +--- a/Bio/Ext/Align/libs/dpalign.c ++++ b/Bio/Ext/Align/libs/dpalign.c +@@ -40,7 +40,7 @@ int blosum62[24][24] = { + void + dpAlign_fatal(char * s) + { +- fprintf(stderr, s); ++ fputs(stderr, s); + exit(-1); + } + diff --git a/nixpkgs/pkgs/development/perl-modules/CSSDOM-replace-apostrophe.patch b/nixpkgs/pkgs/development/perl-modules/CSSDOM-replace-apostrophe.patch new file mode 100644 index 000000000000..54bc7f8dd3b9 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/CSSDOM-replace-apostrophe.patch @@ -0,0 +1,1412 @@ +commit 7dda09313a63c4c64563f582844d7b04302d94bd +Author: Yves Orton <demerphq@gmail.com> +Date: Wed Feb 22 13:28:01 2023 +0100 + + Replace apostrophe with :: as package separator + + In 5.37.9 this is deprecated, and in 5.40 it will be forbidden + +diff --git a/lib/CSS/DOM/Parser.pm b/lib/CSS/DOM/Parser.pm +index 473992c..d688f19 100644 +--- a/lib/CSS/DOM/Parser.pm ++++ b/lib/CSS/DOM/Parser.pm +@@ -369,7 +369,7 @@ sub _parse_at_rule { for (shift) { for my $tokens (shift) { + + $selector =~ s/s\z// and pop @selector; + +- require CSS'DOM'Rule; ++ require CSS::DOM::Rule; + (my $rule = new CSS::DOM::Rule $_[0]||()) + ->_set_tokens( + $selector,\@selector +@@ -413,7 +413,7 @@ sub _parse_at_rule { for (shift) { for my $tokens (shift) { + my ($types,@tokens) = ("\@$1",$at,splice @$tokens,0,$+[0]); + $types =~ /"/ and return; # ignore rules w/invalid strings + $types =~ s/s\z// and pop @tokens; +- require CSS'DOM'Rule; ++ require CSS::DOM::Rule; + (my $rule = new CSS::DOM::Rule $_[0]||()) + ->_set_tokens( + $types, \@tokens +diff --git a/lib/CSS/DOM/PropertyParser.pm b/lib/CSS/DOM/PropertyParser.pm +index 258158f..76b0d99 100644 +--- a/lib/CSS/DOM/PropertyParser.pm ++++ b/lib/CSS/DOM/PropertyParser.pm +@@ -6,8 +6,8 @@ use warnings; no warnings qw 'utf8 parenthesis'; + use strict; + + use constant 1.03 (); # multiple +-use CSS::DOM'Constants ':primitive', ':value'; +-use CSS'DOM'Util<unescape unescape_str unescape_url>; ++use CSS::DOM::Constants ':primitive', ':value'; ++use CSS::DOM::Util<unescape unescape_str unescape_url>; + + use constant old_perl => $] < 5.01; + { no strict 'refs'; delete ${__PACKAGE__.'::'}{old_perl} } +@@ -19,7 +19,7 @@ use constant old_perl => $] < 5.01; + use constant naughty_perl => 0+$] eq 5.01; + { no strict 'refs'; delete ${__PACKAGE__.'::'}{naughty_perl} } + +-*s2c = *CSS'DOM'Constants'SuffixToConst; ++*s2c = *CSS::DOM::Constants::SuffixToConst; + our %s2c; + + our %compiled; # compiled formats +@@ -60,7 +60,7 @@ sub clone { + # exists &dclone or require Storable, "Storable"->import('dclone'); + # return dclone($_[0]); + require Clone; +- return Clone'clone($_[0]); ++ return Clone::clone($_[0]); + } + + # Declare the variables that the re-evals use. Some nasty hacker went and +@@ -202,7 +202,7 @@ sub _make_arg_list { + my($stypes,$stokens) = _space_out($types, $tokens); + my $css = join "", @$stokens; + if(@_ == 1) { # list property +- my $list = shift @'_; ++ my $list = shift @_; + my $sep = @$list <= 1 ? '' : do { + my $range_start = $$list[0][4]; + my $range_end = $$list[1][4] - length($$list[1][4]) - 1; +@@ -301,7 +301,7 @@ sub _make_arg_list { + + sub _space_out { + my($types,$tokens) = @_; +-Carp'cluck() if ref $tokens ne 'ARRAY'; ++Carp::cluck() if ref $tokens ne 'ARRAY'; + $tokens = [@$tokens]; + my @posses; + $types =~ s/(?<=[^(f])(?![),]|\z)/ +@@ -328,7 +328,7 @@ sub _prep_val { + } + else { + require CSS::DOM::Parser; +- ($types, $tokens) = CSS::DOM::Parser'tokenise($_[0]); ++ ($types, $tokens) = CSS::DOM::Parser::tokenise($_[0]); + } + + # strip out all whitespace tokens +diff --git a/lib/CSS/DOM/Rule.pm b/lib/CSS/DOM/Rule.pm +index 921efb0..666fb08 100644 +--- a/lib/CSS/DOM/Rule.pm ++++ b/lib/CSS/DOM/Rule.pm +@@ -46,7 +46,7 @@ sub _parse { # This method parses the code passed to it and checks to see + # the rule data from the new rule. + my $self = shift; + require CSS::DOM::Parser; +- my $new_rule = CSS::DOM::Parser'parse_statement(shift) ++ my $new_rule = CSS::DOM::Parser::parse_statement(shift) + || die CSS::DOM::Exception->new(SYNTAX_ERR, $@); + + ref $new_rule eq ref $self or die CSS::DOM::Exception->new( +diff --git a/lib/CSS/DOM/Rule/Import.pm b/lib/CSS/DOM/Rule/Import.pm +index 1afdcdc..75c8505 100644 +--- a/lib/CSS/DOM/Rule/Import.pm ++++ b/lib/CSS/DOM/Rule/Import.pm +@@ -45,7 +45,7 @@ sub cssText { + sub href { + my $self =shift; + $self->[hrfe] ||= do { +- require CSS'DOM'Parser; ++ require CSS::DOM::Parser; + if($self->[urlt][00] eq 'u') { + # ~~~ I probably ought to put things like this in a + # Parser::token_val function. +@@ -53,10 +53,10 @@ sub href { + $url =~ s/^url\([ \t\r\n\f]*//; + $url =~ s/[ \t\r\n\f]*\)\z//; + $url =~ s/^['"]// and chop $url; +- CSS'DOM'Parser'unescape($url); ++ CSS::DOM::Parser::unescape($url); + } + else { +- CSS'DOM'Parser'unescape( ++ CSS::DOM::Parser::unescape( + substr $$self[urlt][1], 1, -1 + ) + } +diff --git a/lib/CSS/DOM/Rule/Style.pm b/lib/CSS/DOM/Rule/Style.pm +index dfa7501..54da057 100644 +--- a/lib/CSS/DOM/Rule/Style.pm ++++ b/lib/CSS/DOM/Rule/Style.pm +@@ -93,8 +93,8 @@ sub _selector_matches { # ~~~ Does this work with initial space in the selector? + + # tokenise if necessary + unless(ref $self->[selc]) { +- require CSS'DOM'Parser; +- $self->[selc] = [ CSS'DOM'tokenise($self->[selc]) ]; ++ require CSS::DOM::Parser; ++ $self->[selc] = [ CSS::DOM::tokenise($self->[selc]) ]; + } + + # parse selector tokens if necessary +@@ -130,7 +130,7 @@ sub _selector_matches { # ~~~ Does this work with initial space in the selector? + + # ids: + if($types =~ s/^#//) { +- push @subsel, '#', CSS'DOM'Util'unescape( substr shift @tokens, 1 ), ++ push @subsel, '#', CSS::DOM::Util::unescape( substr shift @tokens, 1 ), + undef; + } + +@@ -138,12 +138,12 @@ sub _selector_matches { # ~~~ Does this work with initial space in the selector? + elsif($types =~ /^di/ && $tokens[0] eq '.') { + $types =~ s/^..//; shift @tokens; + push @subsel, '~', 'class', +- CSS'DOM'Util'unescape( shift @tokens ); ++ CSS::DOM::Util::unescape( shift @tokens ); + } + + # pseudo-elems and classes + elsif($types =~ s/^(::?)i//) { +- push @subsel, $1,lc CSS'DOM'Util'unescape($tokens[length $1]), undef; ++ push @subsel, $1,lc CSS::DOM::Util::unescape($tokens[length $1]), undef; + splice @tokens, 0, $+[0]; + } + +@@ -151,14 +151,14 @@ sub _selector_matches { # ~~~ Does this work with initial space in the selector? + elsif($types =~ s/^:fi\)//) { + push @subsel, + ':', +- lc CSS'DOM'Util'unescape(substr $tokens[1], 0, -1), +- lc CSS'DOM'Util'unescape($tokens[2]); ++ lc CSS::DOM::Util::unescape(substr $tokens[1], 0, -1), ++ lc CSS::DOM::Util::unescape($tokens[2]); + splice @tokens, 0, 4; + } + + # [attr] + elsif($types =~ s/^\[i]//) { +- push @subsel, '=', lc CSS'DOM'Util'unescape($tokens[1]), undef; ++ push @subsel, '=', lc CSS::DOM::Util::unescape($tokens[1]), undef; + splice @tokens, 0, 3; + } + +@@ -166,16 +166,16 @@ sub _selector_matches { # ~~~ Does this work with initial space in the selector? + elsif($types =~ /^\[id']/ && $tokens[2] eq '=') { + $types =~ s/^.{5}//; + push @subsel, '=', +- lc CSS'DOM'Util'unescape($tokens[1]), +- CSS'DOM'Util'unescape_str($tokens[3]); ++ lc CSS::DOM::Util::unescape($tokens[1]), ++ CSS::DOM::Util::unescape_str($tokens[3]); + splice @tokens, 0, 5; + } + + # [attr~='value'], [attr|='value'] + elsif($types =~ s/^\[i[~|]']//) { + push @subsel, $tokens[2], +- lc CSS'DOM'Util'unescape($tokens[1]), +- CSS'DOM'Util'unescape_str($tokens[3]); ++ lc CSS::DOM::Util::unescape($tokens[1]), ++ CSS::DOM::Util::unescape_str($tokens[3]); + splice @tokens, 0, 5; + } + +diff --git a/lib/CSS/DOM/Style.pm b/lib/CSS/DOM/Style.pm +index 47d1291..b42b8db 100644 +--- a/lib/CSS/DOM/Style.pm ++++ b/lib/CSS/DOM/Style.pm +@@ -171,9 +171,9 @@ sub setProperty { + # short-circuit for the common case + length $value or $self->removeProperty($name),return; + +- require CSS'DOM'Parser; +- my @tokens = eval { CSS'DOM'Parser'tokenise_value($value); } +- or die CSS::DOM'Exception->new( SYNTAX_ERR, $@); ++ require CSS::DOM::Parser; ++ my @tokens = eval { CSS::DOM::Parser::tokenise_value($value); } ++ or die CSS::DOM::Exception->new( SYNTAX_ERR, $@); + + # check for whitespace/comment assignment + $tokens[0] =~ /^s+\z/ and $self->removeProperty($name),return; +diff --git a/lib/CSS/DOM/Value.pm b/lib/CSS/DOM/Value.pm +index 45f89e9..83b04e7 100644 +--- a/lib/CSS/DOM/Value.pm ++++ b/lib/CSS/DOM/Value.pm +@@ -7,9 +7,9 @@ use strict; + + use Carp; + use CSS::DOM::Constants; +-use CSS'DOM'Exception 'NO_MODIFICATION_ALLOWED_ERR'; ++use CSS::DOM::Exception 'NO_MODIFICATION_ALLOWED_ERR'; + use Exporter 5.57 'import'; +-use Scalar'Util < weaken reftype >; ++use Scalar::Util < weaken reftype >; + + use constant 1.03 our $_const = { + type => 0, +@@ -46,11 +46,11 @@ sub cssText { + ? $self->[valu] : 'inherit' + if defined wantarray; + if(@_) { +- die new CSS'DOM'Exception ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + "Unowned value objects cannot be modified" + unless my $owner = $self->[ownr]; +- die new CSS'DOM'Exception ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + "CSS::DOM::Value objects that do not know to which " + ."property they belong cannot be modified" +diff --git a/lib/CSS/DOM/Value/List.pm b/lib/CSS/DOM/Value/List.pm +index 85f5ef5..e681fa2 100644 +--- a/lib/CSS/DOM/Value/List.pm ++++ b/lib/CSS/DOM/Value/List.pm +@@ -2,8 +2,8 @@ package CSS::DOM::Value::List; + + $VERSION = '0.17'; + +-use CSS'DOM'Constants <CSS_VALUE_LIST NO_MODIFICATION_ALLOWED_ERR>; +-use Scalar'Util 'weaken'; ++use CSS::DOM::Constants <CSS_VALUE_LIST NO_MODIFICATION_ALLOWED_ERR>; ++use Scalar::Util 'weaken'; + + # Object of this class are hashes, with the following keys: + # c: CSS code +@@ -14,7 +14,7 @@ use Scalar'Util 'weaken'; + + sub DOES { + return 1 if $_[1] eq 'CSS::DOM::Value'; +- goto &UNIVERSAL'DOES if defined &UNIVERSAL'DOES; ++ goto &UNIVERSAL::DOES if defined &UNIVERSAL::DOES; + } + + use overload +@@ -37,14 +37,14 @@ sub cssText { + if(defined wantarray) {{ + if(!defined $$self{c} || grep ref ne 'ARRAY', @{$$self{v}}) { + @{$$self{v}} or $old = 'none', last; +- require CSS'DOM'Value'Primitive; ++ require CSS::DOM::Value::Primitive; + my @args; my $index = 0; + for(@{$$self{v}}) { + next unless ref eq 'ARRAY'; + @args or @args = ( + (owner => property => @$self{<o p>})[0,2,1,3], index => $index + ); +- $_ = new CSS'DOM'Value'Primitive @$_, @args; ++ $_ = new CSS::DOM::Value::Primitive @$_, @args; + } + no warnings 'uninitialized'; + $old = join length $$self{s} ? $$self{s} : ' ', +@@ -53,11 +53,11 @@ sub cssText { + else { $old = $$self{c} } + }} + if(@_) { # assignment +- die new CSS'DOM'Exception ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + "Unowned value objects cannot be modified" + unless my $owner = $self->{o}; +- die new CSS'DOM'Exception ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + "CSS::DOM::Value objects that do not know to which " + ."property they belong cannot be modified" +@@ -67,8 +67,8 @@ sub cssText { + my @arsg + = $owner->property_parser->match($prop, $_[0]) + ) { +- require CSS'DOM'Value; +- CSS'DOM'Value::_apply_args_to_self($self,$owner,$prop,@arsg); ++ require CSS::DOM::Value; ++ CSS::DOM::Value::_apply_args_to_self($self,$owner,$prop,@arsg); + } + + if(my $mh = $owner->modification_handler) { +@@ -89,8 +89,8 @@ sub item { + defined or return; + ref eq 'ARRAY' or return exit die return $_; + +- require CSS'DOM'Value'Primitive; +- return $_ = new CSS'DOM'Value'Primitive ++ require CSS::DOM::Value::Primitive; ++ return $_ = new CSS::DOM::Value::Primitive + @$_, + (owner => property => @$self{<o p>})[0,2,1,3], + index => $index; +diff --git a/lib/CSS/DOM/Value/Primitive.pm b/lib/CSS/DOM/Value/Primitive.pm +index 2ce0e9d..2046ff4 100644 +--- a/lib/CSS/DOM/Value/Primitive.pm ++++ b/lib/CSS/DOM/Value/Primitive.pm +@@ -17,7 +17,7 @@ use Exporter 5.57 'import'; + + sub DOES { + return 1 if $_[1] eq 'CSS::DOM::Value'; +- goto &UNIVERSAL'DOES if defined &UNIVERSAL'DOES; ++ goto &UNIVERSAL::DOES if defined &UNIVERSAL::DOES; + } + + use constant 1.03 our $_const = { # Don’t conflict with the superclass! +@@ -203,8 +203,8 @@ sub cssText { + }} + } + if(@_) { +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + "Unowned value objects cannot be modified" + unless my $owner = $self->[ownr]; +@@ -213,15 +213,15 @@ sub cssText { + # deal with formats + if(my $format = $$self[form]) { + if(!our $parser) { +- require CSS'DOM'PropertyParser; ++ require CSS::DOM::PropertyParser; + add_property{ +- $parser = new CSS'DOM'PropertyParser ++ $parser = new CSS::DOM::PropertyParser + } _=>our $prop_spec = {}; + } + our $prop_spec->{format} = $format; + if(my @args = match { our $parser } _=> shift) { +- require CSS'DOM'Value; +- CSS'DOM'Value'_apply_args_to_self( ++ require CSS::DOM::Value; ++ CSS::DOM::Value::_apply_args_to_self( + $self, $owner, $prop, + @args, format => $format, + ); +@@ -231,8 +231,8 @@ sub cssText { + # This is never reached, at least not when CSS::DOM’s mod- + # ules call the constructor: + elsif(!defined $prop) { +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception + NO_MODIFICATION_ALLOWED_ERR, + ref($self) . " objects that do not know to which " + ."property they belong cannot be modified" +@@ -263,8 +263,8 @@ sub cssText { + $index+1..$length-1 + ), + ); +- require CSS'DOM'Value; +- CSS'DOM'Value'_load_if_necessary($arsg[1]); ++ require CSS::DOM::Value; ++ CSS::DOM::Value::_load_if_necessary($arsg[1]); + my $list = $arsg[1]->new( + owner => $owner, + property => $prop, +@@ -284,8 +284,8 @@ sub cssText { + my @arsg + = $owner->property_parser->match($prop, $_[0]) + ) { +- require CSS'DOM'Value; +- CSS'DOM'Value'_apply_args_to_self( ++ require CSS::DOM::Value; ++ CSS::DOM::Value::_apply_args_to_self( + $self, $owner, $prop, @arsg + ); + } +@@ -341,10 +341,10 @@ sub cssValueType { CSS::DOM::Value::CSS_PRIMITIVE_VALUE } + sub primitiveType { shift->[type] } + + sub setFloatValue { +- my ($self,$type,$val) = @'_; ++ my ($self,$type,$val) = @_; + +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception INVALID_ACCESS_ERR, "Invalid value type" ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception INVALID_ACCESS_ERR, "Invalid value type" + if $type == CSS_UNKNOWN || $type == CSS_COUNTER + || $type == CSS_RECT || $type == CSS_RGBCOLOR || $type == CSS_DIMENSION; + +@@ -352,8 +352,8 @@ sub setFloatValue { + # using this API. + no warnings 'numeric'; + $self->cssText(my $css = _serialise($type, $val)); +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception INVALID_ACCESS_ERR, "Invalid value: $css" ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception INVALID_ACCESS_ERR, "Invalid value: $css" + if $self->cssText ne $css; + _: + } +@@ -364,8 +364,8 @@ sub getFloatValue { + # There are more types that are numbers than are not, so we + # invert our list. + my $type = $self->[type]; +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception INVALID_ACCESS_ERR, "Not a numeric value" ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception INVALID_ACCESS_ERR, "Not a numeric value" + if $type == CSS_UNKNOWN || $type == CSS_STRING || $type == CSS_URI + || $type == CSS_IDENT || $type == CSS_ATTR || $type == CSS_COUNTER + || $type == CSS_RECT || $type == CSS_RGBCOLOR; +@@ -380,8 +380,8 @@ sub getStringValue { + my $self = shift; + + my $type = $self->[type]; +- require CSS'DOM'Exception, +- die new CSS'DOM'Exception INVALID_ACCESS_ERR, "Not a string value" ++ require CSS::DOM::Exception, ++ die new CSS::DOM::Exception INVALID_ACCESS_ERR, "Not a string value" + unless $type == CSS_STRING || $type == CSS_URI + || $type == CSS_IDENT || $type == CSS_ATTR; + +diff --git a/t/CSS2Properties.t b/t/CSS2Properties.t +index 315321b..13fc438 100644 +--- a/t/CSS2Properties.t ++++ b/t/CSS2Properties.t +@@ -3,8 +3,8 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; +-sub tests'import { $tests += pop if @_ > 1 }; ++sub tests::VERSION { $tests += pop }; ++sub tests::import { $tests += pop if @_ > 1 }; + use Test::More; + plan tests => $tests; + +diff --git a/t/CSSCharsetRule.t b/t/CSSCharsetRule.t +index 92a8e74..fc3dba5 100644 +--- a/t/CSSCharsetRule.t ++++ b/t/CSSCharsetRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -13,7 +13,7 @@ use_ok 'CSS::DOM::Rule::Charset',; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse( ++ my $ss = CSS::DOM::parse( + '@charset "utf-8";' + ) + )-> cssRules->[0]; +diff --git a/t/CSSFontFaceRule.t b/t/CSSFontFaceRule.t +index 9f4879e..abd5b6c 100644 +--- a/t/CSSFontFaceRule.t ++++ b/t/CSSFontFaceRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -13,7 +13,7 @@ use_ok 'CSS::DOM::Rule::FontFace',; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse( ++ my $ss = CSS::DOM::parse( + '@font-face { font-family: "foo";src:url(bar) }' + ) + )-> cssRules->[0]; +diff --git a/t/CSSImportRule.t b/t/CSSImportRule.t +index 6ec65ef..c8a6a51 100644 +--- a/t/CSSImportRule.t ++++ b/t/CSSImportRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -15,7 +15,7 @@ use_ok 'CSS::DOM::Rule::Import'; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse( ++ my $ss = CSS::DOM::parse( + '@import "foo.css" tv, screen' + ) + )-> cssRules->[0]; +@@ -95,7 +95,7 @@ use tests 5; # styleSheet + 'foo.css' => '@import "bar.css"', + 'bar.css' => 'a { color: blue }', + ); +- is CSS'DOM'parse('@import "foo.css',url_fetcher=>sub{$urls{$_[0]}}) ++ is CSS::DOM::parse('@import "foo.css',url_fetcher=>sub{$urls{$_[0]}}) + ->cssRules->[0]->styleSheet + ->cssRules->[0]->styleSheet + ->cssRules->[0]->style->color, +diff --git a/t/CSSMediaRule.t b/t/CSSMediaRule.t +index fffa7fb..9d01698 100644 +--- a/t/CSSMediaRule.t ++++ b/t/CSSMediaRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -15,7 +15,7 @@ use_ok 'CSS::DOM::Rule::Media'; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse( ++ my $ss = CSS::DOM::parse( + '@media print { body { background: none } }' + ) + )-> cssRules->[0]; +@@ -133,4 +133,4 @@ use tests 4; # deleteRule + cmp_ok $@, '==', CSS::DOM::Exception::INDEX_SIZE_ERR, + 'error raised by deleteRule'; + +-} +\ No newline at end of file ++} +diff --git a/t/CSSPageRule.t b/t/CSSPageRule.t +index 108923e..764e1a1 100644 +--- a/t/CSSPageRule.t ++++ b/t/CSSPageRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -14,7 +14,7 @@ use_ok 'CSS::DOM::Rule::Page',; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse( '@page:first{ margin-top: 3in }') ++ my $ss = CSS::DOM::parse( '@page:first{ margin-top: 3in }') + )-> cssRules->[0]; + + use tests 1; # isa +diff --git a/t/CSSPrimitiveValue.t b/t/CSSPrimitiveValue.t +index 5b30046..ad378f7 100644 +--- a/t/CSSPrimitiveValue.t ++++ b/t/CSSPrimitiveValue.t +@@ -4,8 +4,8 @@ use strict; use warnings; + no warnings<utf8 parenthesis regexp once qw bareword syntax>; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; +-sub tests'import { $tests += pop if @_ > 1 }; ++sub tests::VERSION { $tests += pop }; ++sub tests::import { $tests += pop if @_ > 1 }; + use Test::More; + plan tests => $tests; + +@@ -441,9 +441,9 @@ for(CSS::DOM::Value::Primitive->new( + # ------------------------------------------ + # Tests for setFloatValue and setStringValue + +-use CSS'DOM'Style; ++use CSS::DOM::Style; + require CSS::DOM::PropertyParser; +-my $s = new CSS'DOM'Style ++my $s = new CSS::DOM::Style + property_parser => $CSS::DOM::PropertyParser::Default; + + for my $meth ('setFloatValue' ,'setStringValue'){ +diff --git a/t/CSSRule.t b/t/CSSRule.t +index b33007c..582eb04 100644 +--- a/t/CSSRule.t ++++ b/t/CSSRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -24,7 +24,7 @@ use tests 7; # constants + + + require CSS::DOM; +-my $ss = CSS::DOM'parse( 'a{text-decoration: none} p { margin: 0 }'); ++my $ss = CSS::DOM::parse( 'a{text-decoration: none} p { margin: 0 }'); + my $rule = cssRules $ss ->[0]; + + use tests 1; # isa +diff --git a/t/CSSRuleList.t b/t/CSSRuleList.t +index bc2bfaf..5cee6f6 100644 +--- a/t/CSSRuleList.t ++++ b/t/CSSRuleList.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/CSSStyleDeclaration-setProperty.t b/t/CSSStyleDeclaration-setProperty.t +index cceb993..d0615b7 100644 +--- a/t/CSSStyleDeclaration-setProperty.t ++++ b/t/CSSStyleDeclaration-setProperty.t +@@ -7,7 +7,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/CSSStyleDeclaration.t b/t/CSSStyleDeclaration.t +index 57bfe98..7bcc370 100644 +--- a/t/CSSStyleDeclaration.t ++++ b/t/CSSStyleDeclaration.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis regexp once qw'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -26,7 +26,7 @@ use tests 3; # first make sure we can use it without loading CSS::DOM + + + require CSS::DOM; +-my $ss = CSS::DOM'parse ('a{text-decoration: none} p { margin: 0 }'); ++my $ss = CSS::DOM::parse ('a{text-decoration: none} p { margin: 0 }'); + my $rule = cssRules $ss ->[0]; + my $decl = $rule->style; + +@@ -105,7 +105,7 @@ like $decl->cssText, qr/color: blue !very\\ important/, + + use tests 4; # length + { +- my $decl = new CSS'DOM'Style; ++ my $decl = new CSS::DOM::Style; + is eval { $decl->length }, 0, # This used to die [RT #54810] + 'length when no properties have been added'; # (fixed in 0.09). + $decl = CSS::DOM::Style::parse( +diff --git a/t/CSSStyleRule.t b/t/CSSStyleRule.t +index 024012b..fb550da 100644 +--- a/t/CSSStyleRule.t ++++ b/t/CSSStyleRule.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -14,7 +14,7 @@ use_ok 'CSS::DOM::Rule::Style',; + + require CSS::DOM; + my $rule = ( +- my $ss = CSS::DOM'parse('a{text-decoration: none} p { margin: 0 }') ++ my $ss = CSS::DOM::parse('a{text-decoration: none} p { margin: 0 }') + )-> cssRules->[0]; + + use tests 1; # isa +diff --git a/t/CSSStyleSheet-insertRule.t b/t/CSSStyleSheet-insertRule.t +index 3302966..94b3ee7 100644 +--- a/t/CSSStyleSheet-insertRule.t ++++ b/t/CSSStyleSheet-insertRule.t +@@ -7,7 +7,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -19,4 +19,3 @@ ok eval{$ss->insertRule('a{ color: red }',0);1}, + 'insertRule on empty style sheet doesn\'t die'; + # At one point during development, it did die because it was call- + # ing methods on CSS::DOM::RuleParser which hadn’t been loaded. +- +diff --git a/t/CSSStyleSheet.t b/t/CSSStyleSheet.t +index ab82e6a..40b3edf 100644 +--- a/t/CSSStyleSheet.t ++++ b/t/CSSStyleSheet.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -30,7 +30,7 @@ use tests 3; # (_set_)ownerRule + + use tests 2; # cssRules + { +- $ss = CSS::DOM'parse( 'a{text-decoration: none} p { margin: 0 }'); ++ $ss = CSS::DOM::parse( 'a{text-decoration: none} p { margin: 0 }'); + is +()=$ss->cssRules, 2, 'cssRules in list context'; + isa_ok my $rules = cssRules $ss, 'CSS::DOM::RuleList', + 'cssRules in scalar context'; +@@ -38,7 +38,7 @@ use tests 2; # cssRules + + use tests 11; # insertRule + { +- $ss = CSS::DOM'parse ('a{text-decoration: none} p { margin: 0 }'); ++ $ss = CSS::DOM::parse ('a{text-decoration: none} p { margin: 0 }'); + + is $ss->insertRule('b { font-weight: bold }', 0), 0, + 'retval of insertRule'; +@@ -70,7 +70,7 @@ use tests 11; # insertRule + + use tests 4; # deleteRule + { +- $ss = CSS::DOM'parse ('a{text-decoration: none} p { margin: 0 } ++ $ss = CSS::DOM::parse ('a{text-decoration: none} p { margin: 0 } + i {}'); + is +()=$ss->deleteRule(1), 0, 'retval of deleteRule'; + is_deeply [map $_->selectorText, $ss->cssRules], [qw/ a i /], +@@ -82,4 +82,4 @@ use tests 4; # deleteRule + cmp_ok $@, '==', CSS::DOM::Exception::INDEX_SIZE_ERR, + 'error raised by deleteRule'; + +-} +\ No newline at end of file ++} +diff --git a/t/CSSValue-prim-cssText.t b/t/CSSValue-prim-cssText.t +index 09f657b..b19836a 100644 +--- a/t/CSSValue-prim-cssText.t ++++ b/t/CSSValue-prim-cssText.t +@@ -6,7 +6,7 @@ + use strict; use warnings; no warnings qw 'qw regexp once utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/CSSValue.t b/t/CSSValue.t +index 5fad855..f5a04d0 100644 +--- a/t/CSSValue.t ++++ b/t/CSSValue.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'qw regexp once utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -38,7 +38,7 @@ isa_ok +CSS::DOM::Value->new(type => &CSS_CUSTOM, value => "top left"), + + require CSS::DOM::Style; + require CSS::DOM::PropertyParser; +-my $s = new CSS'DOM'Style ++my $s = new CSS::DOM::Style + property_parser => my $spec = $CSS::DOM::PropertyParser::Default; + + # The default parser has no properties with a simple string, attr or +diff --git a/t/CSSValueList.t b/t/CSSValueList.t +index 1805209..25c1bec 100644 +--- a/t/CSSValueList.t ++++ b/t/CSSValueList.t +@@ -3,17 +3,17 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +-use CSS'DOM'Constants ':primitive'; +-use CSS'DOM'Value'List; ++use CSS::DOM::Constants ':primitive'; ++use CSS::DOM::Value::List; + + use tests 1; # DOES +-ok +CSS'DOM'Value'List->DOES('CSS::DOM::Value'), 'DOES'; ++ok +CSS::DOM::Value::List->DOES('CSS::DOM::Value'), 'DOES'; + +-my $v = new CSS'DOM'Value'List values => [ ++my $v = new CSS::DOM::Value::List values => [ + [ type => CSS_STRING, value => 'sphed' ], + [ type => CSS_STRING, value => 'flit' ], + ]; +diff --git a/t/MediaList.t b/t/MediaList.t +index 3092c62..0888d61 100644 +--- a/t/MediaList.t ++++ b/t/MediaList.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/RGBColor.t b/t/RGBColor.t +index 3758529..12d2938 100644 +--- a/t/RGBColor.t ++++ b/t/RGBColor.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/Rect.t b/t/Rect.t +index e7f83a4..ea8f046 100644 +--- a/t/Rect.t ++++ b/t/Rect.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -25,4 +25,4 @@ use tests 4; + is $v->left->cssText, '4cm', 'left'; + } + +-# ~~~ test for modifications of the cssText property +\ No newline at end of file ++# ~~~ test for modifications of the cssText property +diff --git a/t/StyleSheet.t b/t/StyleSheet.t +index a4469fb..e84e7d4 100644 +--- a/t/StyleSheet.t ++++ b/t/StyleSheet.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -55,7 +55,7 @@ use tests 1; # (set_)href + + use tests 1; # title + { +- sub foo'attr { return shift->{+shift} } ++ sub foo::attr { return shift->{+shift} } + $ss->set_ownerNode(my $foo = bless {title => 'tilde'}, 'foo'); + is $ss->title, 'tilde', 'title'; + } +diff --git a/t/StyleSheetList.t b/t/StyleSheetList.t +index 8e8c7cf..745f894 100644 +--- a/t/StyleSheetList.t ++++ b/t/StyleSheetList.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/charset.t b/t/charset.t +index eed053e..1666157 100644 +--- a/t/charset.t ++++ b/t/charset.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/css-dom-interface.t b/t/css-dom-interface.t +index 41bca29..76e5f2f 100644 +--- a/t/css-dom-interface.t ++++ b/t/css-dom-interface.t +@@ -6,7 +6,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/css-dom-style.t b/t/css-dom-style.t +index f852f6f..9a6582f 100644 +--- a/t/css-dom-style.t ++++ b/t/css-dom-style.t +@@ -6,13 +6,13 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + + use tests 4; # modification_handler + require CSS::DOM::Style; +-my $style = CSS::DOM::Style'parse('margin-top: 2px'); ++my $style = CSS::DOM::Style::parse('margin-top: 2px'); + $style->modification_handler(sub { ++$}; ${{} .= shift}); + $style->cssText('margin-bottom: 600%'); + is $}, 1, 'cssText triggers mod hander'; +@@ -25,4 +25,3 @@ is $}, 3, 'AUTOLOAD triggers the handler'; + # ~~~ We also needs tests for modification_handler triggered by: + # • removeProperty + # • modifications to CSSValue objects and their sub-objects (RGBColor etc +- +diff --git a/t/css-dom-util.t b/t/css-dom-util.t +index 5dbef09..554cd1b 100644 +--- a/t/css-dom-util.t ++++ b/t/css-dom-util.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +diff --git a/t/css-dom.t b/t/css-dom.t +index e36a046..d43d458 100644 +--- a/t/css-dom.t ++++ b/t/css-dom.t +@@ -3,7 +3,7 @@ + use strict; use warnings; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -28,7 +28,7 @@ use tests 1; # compute_style + local $SIG{__WARN__} = sub { $w .= shift }; + require CSS::DOM::Style; + my $elem = bless{ +- style => CSS'DOM'Style'parse('color:red'), tagName => 'p', ++ style => CSS::DOM::Style::parse('color:red'), tagName => 'p', + }, MyElem=>; + CSS::DOM::compute_style(element => $elem); + is $w, undef, 'no warnings for style belonging to element itself'; +diff --git a/t/parser-rules.t b/t/parser-rules.t +index 16cb536..7387caf 100644 +--- a/t/parser-rules.t ++++ b/t/parser-rules.t +@@ -8,7 +8,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -35,7 +35,7 @@ use tests 2; # miscellaneous CSS::DOM::parse stuff + + use tests 7; # <!-- --> + { +- my $sheet = CSS'DOM'parse ' ++ my $sheet = CSS::DOM::parse ' + <!-- /* --> /* /**/ + @at-rule {/*<!--*/ } <!-- + --> +@@ -46,9 +46,9 @@ use tests 7; # <!-- --> + '@at-rule {/*<!--*/ }' . "\n" . + "{ style: rule }\n", + '<!-- -->'; +- CSS'DOM'parse 'a { --> }'; ++ CSS::DOM::parse 'a { --> }'; + ok $@, 'invalid -->'; +- CSS'DOM'parse 'a { <!-- }'; ++ CSS::DOM::parse 'a { <!-- }'; + ok $@, 'invalid <!--'; + ok !eval{$sheet->insertRule('--> a { }');1}, + 'invalid --> before statement'; +@@ -62,7 +62,7 @@ use tests 7; # <!-- --> + + use tests 5; # single statement parser + { +- my $sheet = new CSS'DOM; ++ my $sheet = new CSS::DOM; + $sheet->insertRule('phoo { bar : baz} ',0); + isa_ok cssRules$sheet->[0], 'CSS::DOM::Rule::Style', + 'ruleset created by insertRule'; +@@ -79,36 +79,36 @@ use tests 5; # single statement parser + + use tests 9; # styledecl parser + { +- my $style = CSS'DOM'Style'parse ' foo : bar '; ++ my $style = CSS::DOM::Style::parse ' foo : bar '; + is $style->cssText, 'foo: bar', 'style parser'; +- CSS'DOM'Style'parse 'foo: bar}'; ++ CSS::DOM::Style::parse 'foo: bar}'; + ok $@, 'style parser chokes on }'; +- is CSS'DOM'Style'parse ' ; ;;;;;foo : bar ;;;; ; ',->cssText, ++ is CSS::DOM::Style::parse ' ; ;;;;;foo : bar ;;;; ; ',->cssText, + 'foo: bar', 'style wit extra semicolons'; +- is CSS'DOM'Style'parse 'foo:bar',->cssText, ++ is CSS::DOM::Style::parse 'foo:bar',->cssText, + 'foo: bar', 'style with no space'; +- is CSS'DOM'Style'parse 'foo:bar;;;baz:bonk;;',->cssText, ++ is CSS::DOM::Style::parse 'foo:bar;;;baz:bonk;;',->cssText, + 'foo: bar; baz: bonk', + 'style with no space & extra semicolons'; +- is CSS'DOM'Style'parse 'foo:bar;;;!baz:bonk;;',->cssText, ++ is CSS::DOM::Style::parse 'foo:bar;;;!baz:bonk;;',->cssText, + 'foo: bar', + 'style with delimiter+ident for property name'; +- is CSS'DOM'Style'parse '\70\41 dding:0;;;;;',->cssText, ++ is CSS::DOM::Style::parse '\70\41 dding:0;;;;;',->cssText, + 'padding: 0', + 'style with escaped property name'; + +- is CSS'DOM'Style'parse '\a\z\A\Z\)\a a :bar', ++ is CSS::DOM::Style::parse '\a\z\A\Z\)\a a :bar', + ->getPropertyValue("\nz\nZ)\na"), 'bar', + 'style with both kinds of ident escapes'; + + { package Phoo; use overload '""'=>sub{'foo:bar'}} +- is CSS'DOM'Style'parse(bless [], 'Phoo')->cssText, 'foo: bar', ++ is CSS::DOM::Style::parse(bless [], 'Phoo')->cssText, 'foo: bar', + '::Style::parse\'s force stringification'; + } + + use tests 121; # @media + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@media print{a{color:blue}}',0); + isa_ok $rule=pop@{$sheet->cssRules}, 'CSS::DOM::Rule::Media', +@@ -464,7 +464,7 @@ use tests 121; # @media + is $rule->cssText, "\@meDIa { }\n", + 'serialised empty unclosed fake @meDIa rule w/ws'; + +- $sheet = CSS'DOM'parse ' ++ $sheet = CSS::DOM::parse ' + @media print { a { color: blue } "stuff"} + td { padding: 0 } + '; +@@ -496,7 +496,7 @@ use tests 121; # @media + + use tests 1; # bracket closure + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@unknown {(rect([',0); + is +($rule=pop@{$sheet->cssRules})->cssText, +@@ -506,7 +506,7 @@ use tests 1; # bracket closure + + use tests 14; # @page + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@page{color:blue}',0); + is +($rule=pop@{$sheet->cssRules})->type, PAGE_RULE, +@@ -553,7 +553,7 @@ use tests 14; # @page + + use tests 6; # unrecognised at-rules + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@unknown \ / \ / :-P {...}',0); + is +($rule=pop@{$sheet->cssRules})->type, UNKNOWN_RULE, +@@ -579,7 +579,7 @@ use tests 6; # unrecognised at-rules + + use tests 6; # ruselet pasrer + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('a{text-decoration:none;color:blue}',0); + is +($rule=pop@{$sheet->cssRules})->type, STYLE_RULE, +@@ -605,7 +605,7 @@ use tests 6; # ruselet pasrer + + use tests 1; # invaldi strings + { +- my $sheet = CSS'DOM'parse q* ++ my $sheet = CSS::DOM::parse q* + p { + color: green; + font-family: 'Courier New Times +@@ -634,51 +634,51 @@ use tests 1; # invaldi strings + + use tests 10; # invalid closing brackets + { +- is CSS'DOM'parse q" @eotetet ]" =>-> cssRules->length,0, ++ is CSS::DOM::parse q" @eotetet ]" =>-> cssRules->length,0, + 'invalid closing bracket in unknown rule'; + ok $@, '$@ is set by invalid closing bracket in unknown rule'; +- is CSS'DOM'parse q" @media { ]" =>-> cssRules->length, 0, ++ is CSS::DOM::parse q" @media { ]" =>-> cssRules->length, 0, + 'invalid closing bracket in media rule'; + ok $@, '$@ is set by invalid closing bracket in media rule'; +- is CSS'DOM'parse q" @page { ]" =>-> cssRules->length, 0, ++ is CSS::DOM::parse q" @page { ]" =>-> cssRules->length, 0, + 'invalid closing bracket in page rule'; + ok $@, '$@ is set by invalid closing bracket in page rule'; +- is CSS'DOM'parse q" page ( ]" =>-> cssRules->length, 0, ++ is CSS::DOM::parse q" page ( ]" =>-> cssRules->length, 0, + 'invalid closing bracket in selector'; + ok $@, '$@ is set by invalid closing bracket in selector'; +- is CSS'DOM'parse q" a { (}" =>-> cssRules->length, 0, ++ is CSS::DOM::parse q" a { (}" =>-> cssRules->length, 0, + 'invalid closing bracket in style declaration'; + ok $@, '$@ is set by invalid closing bracket in selector'; + } + + use tests 14; # invalid [\@;] + { +- is CSS'DOM'parse q" @eotetet @aa ]" =>-> cssRules->length,0, ++ is CSS::DOM::parse q" @eotetet @aa ]" =>-> cssRules->length,0, + 'invalid @ in unknown rule'; + ok $@, '$@ is set by invalid @ in unknown rule'; +- is CSS'DOM'parse q" @eotetet aa (;" =>-> cssRules->length,0, ++ is CSS::DOM::parse q" @eotetet aa (;" =>-> cssRules->length,0, + 'invalid ; in unknown rule'; + ok $@, '$@ is set by invalid ; in unknown rule'; +- is CSS'DOM'parse q" @media {(; { " =>-> cssRules->length,0, ++ is CSS::DOM::parse q" @media {(; { " =>-> cssRules->length,0, + 'invalid ; in media rule'; + ok $@, '$@ is set by invalid ; in media rule'; +- is CSS'DOM'parse q" @page { (;fooo" =>-> cssRules->length,0, ++ is CSS::DOM::parse q" @page { (;fooo" =>-> cssRules->length,0, + 'invalid ; in page rule'; + ok $@, '$@ is set by invalid ; in page rule'; +- is CSS'DOM'parse q" page @oo " =>-> cssRules->length,0, ++ is CSS::DOM::parse q" page @oo " =>-> cssRules->length,0, + 'invalid @ in selector'; + ok $@, '$@ is set by invalid @ in selector'; +- is CSS'DOM'parse q" page ;( " =>-> cssRules->length,0, ++ is CSS::DOM::parse q" page ;( " =>-> cssRules->length,0, + 'invalid ; in selector'; + ok $@, '$@ is set by invalid ; in selector'; +- is CSS'DOM'parse q" a { ( ;( " =>-> cssRules->length,0, ++ is CSS::DOM::parse q" a { ( ;( " =>-> cssRules->length,0, + 'invalid ; in style declaration'; + ok $@, '$@ is set by invalid ; in style declaration'; + } + + use tests 14; # @import + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@import"foo.css"print,screen;',0); + is +($rule=pop@{$sheet->cssRules})->type, IMPORT_RULE, +@@ -722,7 +722,7 @@ use tests 14; # @import + + use tests 8; # @font-face + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@font-face{color:blue}',0); + is +($rule=pop@{$sheet->cssRules})->type, FONT_FACE_RULE, +@@ -751,7 +751,7 @@ use tests 8; # @font-face + + use tests 13; # @charset + { +- my $sheet = new CSS'DOM; my $rule; ++ my $sheet = new CSS::DOM; my $rule; + + $sheet->insertRule('@charset "utf-8";',0); + is +($rule=pop@{$sheet->cssRules})->type, CHARSET_RULE, +@@ -799,4 +799,3 @@ use tests 13; # @charset + is +($rule=pop@{$sheet->cssRules})->type, UNKNOWN_RULE, + '@charset w/space b4 ; is an unknown rule'; + } +- +diff --git a/t/parser-tokens.t b/t/parser-tokens.t +index 9c0fae3..d6a42b7 100644 +--- a/t/parser-tokens.t ++++ b/t/parser-tokens.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -37,7 +37,7 @@ for('_', 'a'..'z', 'A'.."Z", map(chr,0x80..0x100) ,"\x{2003}","\x{3000}"){ + { + my $style = CSS::DOM::Style::parse("--a: 65"); + is $style->cssText, '', 'identifier can\'t begin with --'; +- $style = CSS'DOM'Style'parse"-0b:-0b"; ++ $style = CSS::DOM::Style::parse"-0b:-0b"; + is $style->cssText, '', 'nor with -0'; + } + +@@ -49,7 +49,7 @@ use tests 8; # strings + . q/\'\"/; + my $expect = + qq/ \x{10ffff}f-_abcABC}}}}}}}}\xff\x{2003}\x{100}\t'"/; +- my $rule = new CSS::DOM::Rule'Import; ++ my $rule = new CSS::DOM::Rule::Import; + + $rule->cssText('@import ' . "'$nasty_escaped_string'"); + is $rule->href, $expect, "'...'"; +@@ -80,7 +80,7 @@ use tests 8; # strings + + use tests 23; # urls + { +- my $rule = new CSS'DOM'Rule::Import; ++ my $rule = new CSS::DOM::Rule::Import; + + $rule->cssText('@import url(!$#%&][\\\}|{*~foo/bar.gif)'); + is $rule->href, '!$#%&][\}|{*~foo/bar.gif', 'unquoted url'; +@@ -118,7 +118,7 @@ use tests 23; # urls + is $rule->href, "\x{2000}\x{2000}\n 0 )\tz", + 'double-quoted url with escapes'; + +- my $style = new CSS'DOM'Style; ++ my $style = new CSS::DOM::Style; + + $style->name('url(foo'); + is $style->name, 'url(foo)', 'unquoted, unterminated url'; +@@ -179,7 +179,7 @@ use tests 3; # spaces and comments + "name:valu /*eeeee " + ); + is $style->name, 'valu', 'another ws /**/ test'; +- $style = CSS'DOM'Style'parse( "name: /*\n*/valu"); ++ $style = CSS::DOM::Style::parse( "name: /*\n*/valu"); + is $style->name, 'valu', 'multiline comments'; + } + +@@ -187,27 +187,27 @@ use tests 3; # spaces and comments + + use tests 6; # <!-- --> + { +- my $sheet = CSS'DOM'parse ' <!--{ name: value }--> @media print{}'; ++ my $sheet = CSS::DOM::parse ' <!--{ name: value }--> @media print{}'; + is join('',map cssText$_,cssRules$sheet), + "{ name: value }\n\@media print {\n}\n", + 'ignored <!-- -->'; +- is CSS'DOM'parse"{}{name: <!-- value; n:v}" =>-> ++ is CSS::DOM::parse"{}{name: <!-- value; n:v}" =>-> + cssRules->length, + 1, + 'invalid <!--'; + ok $@, '$@ after invalid <!--'; +- is CSS'DOM'parse"{}{name: --> value; n:v}" =>-> ++ is CSS::DOM::parse"{}{name: --> value; n:v}" =>-> + cssRules->length, + 1, + 'invalid -->'; + ok $@, '$@ after invalid -->'; +- is CSS'DOM'Style'parse"name:'<!--value-->",->name, ++ is CSS::DOM::Style::parse"name:'<!--value-->",->name, + "'<!--value-->'", '<!-- --> in a string'; + } + + use tests 1; # miscellaneous tokens + { +- my $sheet = CSS'DOM'parse '@foo ()[~=:,./+-]{[("\"'; ++ my $sheet = CSS::DOM::parse '@foo ()[~=:,./+-]{[("\"'; + is $sheet->cssRules->[0]->cssText, + '@foo ()[~=:,./+-]{[("\"")]}'. "\n", + 'miscellaneous tokens' +diff --git a/t/property-parser.t b/t/property-parser.t +index 6423b39..f785054 100644 +--- a/t/property-parser.t ++++ b/t/property-parser.t +@@ -3,7 +3,7 @@ + use strict; use warnings; no warnings qw 'utf8 parenthesis regexp once qw'; + our $tests; + BEGIN { ++$INC{'tests.pm'} } +-sub tests'VERSION { $tests += pop }; ++sub tests::VERSION { $tests += pop }; + use Test::More; + plan tests => $tests; + +@@ -18,11 +18,11 @@ isa_ok my $parser = CSS::DOM::PropertyParser->new, + + use tests 4; # clone + my $clone = (my $css21 = $CSS::DOM::PropertyParser::CSS21)->clone; +-isn't $clone, $css21, 'clone at the first level'; +-isn't $clone->get_property('background-position'), ++isnt $clone, $css21, 'clone at the first level'; ++isnt $clone->get_property('background-position'), + $css21->get_property('background-position'), + 'clone clones individual property specs'; +-isn't ++isnt + $clone->get_property('border-color')->{properties} + {'border-top-color'}, + $css21->get_property('border-color')->{properties} +@@ -1314,17 +1314,17 @@ use tests 2; # parsing colours + { # Tests for problems with colours in cygwin’s perl (broken in 0.08; fixed + # in 0.09) and for bugs temporarily introduced while those problems were + # being addressed. +- my $p = new CSS'DOM'PropertyParser; ++ my $p = new CSS::DOM::PropertyParser; + $p->add_property( + 'colours' => { + format => '<colour>+', + }, + ); +- my $s = CSS'DOM'Style'parse( ++ my $s = CSS::DOM::Style::parse( + "colours: rgb(0,0,0) rgb(1,1,1)", + property_parser => $p + ); +- use CSS'DOM'Constants 'CSS_CUSTOM'; ++ use CSS::DOM::Constants 'CSS_CUSTOM'; + is $s->getPropertyCSSValue('colours')->cssValueType, CSS_CUSTOM, + 'quantified <colour>s'; + $p->add_property( +@@ -1346,18 +1346,18 @@ use tests 1; # backtracking with list properties + # local ${$whatever}[0] localises one element. But it actually + # replaces the array temporarily with a new one, which cannot + # work with references. +- my $p = new CSS'DOM'PropertyParser; ++ my $p = new CSS::DOM::PropertyParser; + $p->add_property( + 'foo' => { + format => '[(foo)|(foo),]+', # [(foo),?]+ does not trigger the bug + list => 1, + }, + ); +- my $s = CSS'DOM'Style'parse( ++ my $s = CSS::DOM::Style::parse( + "foo: foo, foo", + property_parser => $p + ); +- use CSS'DOM'Constants 'CSS_VALUE_LIST'; ++ use CSS::DOM::Constants 'CSS_VALUE_LIST'; + is_deeply [map cssText $_, @{$s->getPropertyCSSValue('foo')}],[('foo')x2], + 'backtracking does not preserve existing captures'; + } diff --git a/nixpkgs/pkgs/development/perl-modules/CatalystAuthenticationStoreHtpasswd-test-replace-DES-hash-with-bcrypt.patch b/nixpkgs/pkgs/development/perl-modules/CatalystAuthenticationStoreHtpasswd-test-replace-DES-hash-with-bcrypt.patch new file mode 100644 index 000000000000..f3ce028ca59a --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/CatalystAuthenticationStoreHtpasswd-test-replace-DES-hash-with-bcrypt.patch @@ -0,0 +1,12 @@ +Replaces the legacy DES crypt hash used in tests with a stronger +bcrypt function, as crypt() in pkgs.perl no longer supports DES + +# htpasswd -nbB mufasa "Circle of Life" + +diff --git a/t/lib/TestApp/htpasswd b/t/lib/TestApp/htpasswd +index 6cec784..91e5375 100644 +--- a/t/lib/TestApp/htpasswd ++++ b/t/lib/TestApp/htpasswd +@@ -1 +1 @@ +-mufasa:Y7hn4ncIVPOuI ++mufasa:$2y$05$.KPC4Gja9L5AxJATDQBzs.lCHkm49l/9dcoyPcJg0JhyIvsD6Gqza diff --git a/nixpkgs/pkgs/development/perl-modules/CatalystXScriptServerStarman-fork-arg.patch b/nixpkgs/pkgs/development/perl-modules/CatalystXScriptServerStarman-fork-arg.patch new file mode 100644 index 000000000000..af7dc0db7e51 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/CatalystXScriptServerStarman-fork-arg.patch @@ -0,0 +1,11 @@ +diff --git a/lib/CatalystX/Script/Server/Starman.pm b/lib/CatalystX/Script/Server/Starman.pm +index 670bd74..7b3bd2e 100644 +--- a/lib/CatalystX/Script/Server/Starman.pm ++++ b/lib/CatalystX/Script/Server/Starman.pm +@@ -9,5 +9,5 @@ our $VERSION = '0.02'; + + extends 'Catalyst::Script::Server'; + +-has '+fork' => ( default => 1, init_arg => undef ); ++has '+fork' => ( default => 1 ); + diff --git a/nixpkgs/pkgs/development/perl-modules/DBD-SQLite/external-sqlite.patch b/nixpkgs/pkgs/development/perl-modules/DBD-SQLite/external-sqlite.patch new file mode 100644 index 000000000000..5aafa461d943 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/DBD-SQLite/external-sqlite.patch @@ -0,0 +1,11 @@ +--- a/Makefile.PL 2016-04-21 15:44:34.000000000 +0200 ++++ b/Makefile.PL 2017-10-31 11:04:28.389959946 +0100 +@@ -129,7 +129,7 @@ + # a system sqlite is also sophisticated enough to have a patching system + # that can change the if ( 0 ) to if ( 1 ) + my ($sqlite_local, $sqlite_base, $sqlite_lib, $sqlite_inc); +-if ( 0 ) { ++if ( 1 ) { + require File::Spec; + if ( $sqlite_base = (grep(/SQLITE_LOCATION=.*/, @ARGV))[0] ) { + $sqlite_base =~ /=(.*)/; diff --git a/nixpkgs/pkgs/development/perl-modules/Data-Clone-fix-apostrophe-package-separator.patch b/nixpkgs/pkgs/development/perl-modules/Data-Clone-fix-apostrophe-package-separator.patch new file mode 100644 index 000000000000..4d2bef16c9c4 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Data-Clone-fix-apostrophe-package-separator.patch @@ -0,0 +1,26 @@ +https://github.com/gfx/p5-Data-Clone/pull/3 + +From 43102a83d15aedc61e5904eb5a6dab33c3c02b40 Mon Sep 17 00:00:00 2001 +From: Yves Orton <demerphq@gmail.com> +Date: Thu, 9 Feb 2023 16:24:45 +0100 +Subject: [PATCH] t/07_stack.t - isn't is deprecated, use isnt instead + +As of 5.37.8 use of apostrophe for a package separator is deprecated, +and in 5.40 it will be removed entirely. Switch to isnt() instead +of isn't(). +--- + t/07_stack.t | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/t/07_stack.t b/t/07_stack.t +index 165e6a5..a750366 100644 +--- a/t/07_stack.t ++++ b/t/07_stack.t +@@ -17,6 +17,6 @@ use Data::Clone; + + my $before = bless [], Bar::; + my $after = clone($before); +-isn't $after, $before, 'stack reallocation during callback'; ++isnt $after, $before, 'stack reallocation during callback'; + + done_testing; \ No newline at end of file diff --git a/nixpkgs/pkgs/development/perl-modules/Data-UUID-CVE-2013-4184.patch b/nixpkgs/pkgs/development/perl-modules/Data-UUID-CVE-2013-4184.patch new file mode 100644 index 000000000000..731e2eeb0dff --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Data-UUID-CVE-2013-4184.patch @@ -0,0 +1,214 @@ +Eliminate use of state/node files in temp directory, which are a security concern due to insecure writing of State/Node files in a temporary directory, with predictable filenames, with a possible symlink attack. + +Fixes CVE-2013-4184 + +https://github.com/bleargh45/Data-UUID/pull/40 by Graham TerMarsch @bleargh45 + + +diff --git a/Makefile.PL b/Makefile.PL +index 4ca26af..fb1a0f0 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -89,30 +89,14 @@ WriteMakefile( + + CONFIGURE => sub { + my %opt; +- GetOptions(\%opt, 's|state-storage-directory:s', 'd|default-umask:s', +- 'help|?', 'man') or pod2usage(2); ++ GetOptions(\%opt, 'help|?', 'man') or pod2usage(2); + pod2usage(1) if $opt{help}; + pod2usage(-verbose => 2) if $opt{man}; + + print "Configured options (run perl Makefile.PL --help for how to change this):\n"; + +- my $d = File::Spec->tmpdir; +- $d = $opt{s} || $d; +- print "\tUUID state storage: $d\n"; +- $d =~ s/\\/\\\\/g if $^O eq 'MSWin32'; +- +- my $m = '0007'; +- unless ($^O eq 'MSWin32') { +- $m = $opt{d} || $m; +- print "\tdefault umask: $m\n"; +- } +- +- chmod(0666, sprintf("%s/%s", $d, ".UUID_NODEID")); +- chmod(0666, sprintf("%s/%s", $d, ".UUID_STATE")); + return { +- DEFINE => '-D_STDIR=' . shell_quote(c_quote($d)) +- . ' -D' . shell_quote("__$Config{osname}__") +- . ' -D_DEFAULT_UMASK=' . shell_quote($m) ++ DEFINE => ' -D' . shell_quote("__$Config{osname}__") + }; + } + ); +@@ -127,11 +111,9 @@ Makefile.PL - configure Makefile for Data::UUID + + perl Makefile.PL [options] [EU::MM options] + +-perl Makefile.PL -s=/var/local/lib/data-uuid -d=0007 ++perl Makefile.PL + + Options: +- --state-storage-directory directory for storing library state information +- --default-umask umask for files in the state storage directory + --help brief help message + --man full documentation + +@@ -141,18 +123,6 @@ Options can be abbreviated, see L<Getopt::Long/"Case and abbreviations">. + + =over + +-=item --state-storage-directory +- +-Optional. Takes a string that is interpreted as directory for storing library +-state information. Default is c:/tmp/ on Windows if it already exists, or the +-operating system's temporary directory (see tmpdir in L<File::Spec/"METHODS">), +-or /var/tmp as fallback. +- +-=item --default-umask +- +-Optional. Takes a string that is interpreted as umask for the files in the state +-storage directory. Default is 0007. This is ignored on Windows. +- + =item --help + + Print a brief help message and exits. +@@ -165,10 +135,7 @@ Prints the manual page and exits. + + =head1 DESCRIPTION + +-B<Makefile.PL> writes the Makefile for the Data::UUID library. It is configured +-with the options L</"--state-storage-directory"> and L</"--default-umask">. +-Unless given, default values are used. In any case the values are printed for +-confirmation. ++B<Makefile.PL> writes the Makefile for the Data::UUID library. + + Additionally, the usual EU::MM options are processed, see + L<ExtUtils::MakeMaker/"Using Attributes and Parameters">. +diff --git a/README b/README +index 8aaa1c2..34d53a5 100644 +--- a/README ++++ b/README +@@ -23,15 +23,6 @@ To install this module type the following: + make test + make install + +-NOTE: This module is designed to save its state information in a permanent +-storage location. The installation script (i.e. Makefile.PL) prompts for +-a directory name to use as a storage location for state file and defaults +-this directory to "/var/tmp" if no directory name is provided. +-The installation script will not accept names of directories that do not +-exist, however, it will take the locations, which the installing user +-has no write permissions to. In this case, the state information will not be +-saved, which will maximize the chances of generating duplicate UUIDs. +- + COPYRIGHT AND LICENCE + + Copyright (C) 2001, Alexander Golomshtok +diff --git a/UUID.h b/UUID.h +index dc5ea28..11d6e13 100644 +--- a/UUID.h ++++ b/UUID.h +@@ -44,23 +44,6 @@ + #include <process.h> + #endif + +-#if !defined _STDIR +-# define _STDIR "/var/tmp" +-#endif +-#if !defined _DEFAULT_UMASK +-# define _DEFAULT_UMASK 0007 +-#endif +- +-#define UUID_STATE ".UUID_STATE" +-#define UUID_NODEID ".UUID_NODEID" +-#if defined __mingw32__ || (defined _WIN32 && !defined(__cygwin__)) || defined _MSC_VER +-#define UUID_STATE_NV_STORE _STDIR"\\"UUID_STATE +-#define UUID_NODEID_NV_STORE _STDIR"\\"UUID_NODEID +-#else +-#define UUID_STATE_NV_STORE _STDIR"/"UUID_STATE +-#define UUID_NODEID_NV_STORE _STDIR"/"UUID_NODEID +-#endif +- + #define UUIDS_PER_TICK 1024 + #ifdef _MSC_VER + #define I64(C) C##i64 +@@ -134,7 +117,6 @@ typedef struct _uuid_state_t { + typedef struct _uuid_context_t { + uuid_state_t state; + uuid_node_t nodeid; +- perl_uuid_time_t next_save; + } uuid_context_t; + + static void format_uuid_v1( +diff --git a/UUID.xs b/UUID.xs +index c3496a8..8191727 100644 +--- a/UUID.xs ++++ b/UUID.xs +@@ -356,29 +356,11 @@ PREINIT: + UV one = 1; + CODE: + RETVAL = (uuid_context_t *)PerlMemShared_malloc(sizeof(uuid_context_t)); +- if ((fd = fopen(UUID_STATE_NV_STORE, "rb"))) { +- fread(&(RETVAL->state), sizeof(uuid_state_t), 1, fd); +- fclose(fd); +- get_current_time(×tamp); +- RETVAL->next_save = timestamp; +- } +- if ((fd = fopen(UUID_NODEID_NV_STORE, "rb"))) { +- pid_t *hate = (pid_t *) &(RETVAL->nodeid); +- fread(&(RETVAL->nodeid), sizeof(uuid_node_t), 1, fd ); +- fclose(fd); +- +- *hate += getpid(); +- } else { ++ + get_random_info(seed); + seed[0] |= 0x80; + memcpy(&(RETVAL->nodeid), seed, sizeof(uuid_node_t)); +- mask = umask(_DEFAULT_UMASK); +- if ((fd = fopen(UUID_NODEID_NV_STORE, "wb"))) { +- fwrite(&(RETVAL->nodeid), sizeof(uuid_node_t), 1, fd); +- fclose(fd); +- }; +- umask(mask); +- } ++ + errno = 0; + #if DU_THREADSAFE + MUTEX_LOCK(&instances_mutex); +@@ -415,17 +397,6 @@ PPCODE: + self->state.node = self->nodeid; + self->state.ts = timestamp; + self->state.cs = clockseq; +- if (timestamp > self->next_save ) { +- mask = umask(_DEFAULT_UMASK); +- if((fd = fopen(UUID_STATE_NV_STORE, "wb"))) { +- LOCK(fd); +- fwrite(&(self->state), sizeof(uuid_state_t), 1, fd); +- UNLOCK(fd); +- fclose(fd); +- } +- umask(mask); +- self->next_save = timestamp + (10 * 10 * 1000 * 1000); +- } + ST(0) = make_ret(uuid, ix); + XSRETURN(1); + +@@ -585,14 +556,6 @@ CODE: + MUTEX_UNLOCK(&instances_mutex); + if (count == 0) { + #endif +- mask = umask(_DEFAULT_UMASK); +- if ((fd = fopen(UUID_STATE_NV_STORE, "wb"))) { +- LOCK(fd); +- fwrite(&(self->state), sizeof(uuid_state_t), 1, fd); +- UNLOCK(fd); +- fclose(fd); +- }; +- umask(mask); + PerlMemShared_free(self); + #if DU_THREADSAFE + } + diff --git a/nixpkgs/pkgs/development/perl-modules/Device-OUI-1.04-hash.patch b/nixpkgs/pkgs/development/perl-modules/Device-OUI-1.04-hash.patch new file mode 100644 index 000000000000..6133ab674756 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Device-OUI-1.04-hash.patch @@ -0,0 +1,11 @@ +--- Device-OUI-1.04/lib/Device/OUI.pm.orig 2009-03-07 02:23:17.000000000 +0000 ++++ Device-OUI-1.04/lib/Device/OUI.pm 2016-08-09 08:19:00.642799675 +0100 +@@ -54,7 +54,7 @@ + for my $x ( keys %hash ) { + if ( not defined $hash{ $x } ) { $hash{ $x } = '' } + } +- return $handle->{ $oui } = join( "\0", %hash ); ++ return $handle->{ $oui } = join( "\0", map {$_,$hash{$_}} sort keys %hash ); + } elsif ( my $x = $handle->{ $oui } ) { + return { split( "\0", $x ) }; + } diff --git a/nixpkgs/pkgs/development/perl-modules/Exception-Base-remove-smartmatch-when-5.38.0.patch b/nixpkgs/pkgs/development/perl-modules/Exception-Base-remove-smartmatch-when-5.38.0.patch new file mode 100644 index 000000000000..00fd4b7e0c69 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Exception-Base-remove-smartmatch-when-5.38.0.patch @@ -0,0 +1,20 @@ +smartmatch deprecated in perl-5.37.10 + +Patch by @pghmcfc from +https://github.com/dex4er/perl-Exception-Base/issues/5#issuecomment-1637075218 + +diff --git a/t/tlib/Exception/BaseTest.pm b/t/tlib/Exception/BaseTest.pm +index d590d12..e531ed7 100644 +--- a/t/tlib/Exception/BaseTest.pm ++++ b/t/tlib/Exception/BaseTest.pm +@@ -569,8 +569,9 @@ sub test_overload { + $self->assert_matches(qr/String at /, $obj); + + # smart matching for Perl 5.10 +- if ($] >= 5.010) { ++ # Deprecation warning added in 5.37.10 ++ if ($] >= 5.010 && $] < 5.037010) { + no if $] >= 5.018, warnings => 'experimental::smartmatch'; + eval q{ + $self->assert_num_equals(1, 'String' ~~ $obj); + diff --git a/nixpkgs/pkgs/development/perl-modules/ExtUtils-Constant-fix-indirect-method-call-in-test.patch b/nixpkgs/pkgs/development/perl-modules/ExtUtils-Constant-fix-indirect-method-call-in-test.patch new file mode 100644 index 000000000000..dbca37a75f76 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/ExtUtils-Constant-fix-indirect-method-call-in-test.patch @@ -0,0 +1,31 @@ +https://rt.cpan.org/Public/Bug/Display.html?id=132995 + +From 94b5fc74c3d7ed835e83bac40632962af32f5b30 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilmari@ilmari.org> +Date: Mon, 13 Jul 2020 22:08:45 +0100 +Subject: [PATCH] Fix indirect method call in ExtUtils::Constant test + +It puts both "use $];" and "bootstrap $package \$VERSION;" in the +generated test module, which is going to break if we ever remove +`indirect` from the current feature bundle. + +Fix by making the method call direct instead. +--- + t/Constant.t | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/t/Constant.t b/t/Constant.t +index d6b45668da..526a32c779 100644 +--- a/t/Constant.t ++++ b/t/Constant.t +@@ -435,7 +435,7 @@ EOT + print FH ");\n"; + # Print the AUTOLOAD subroutine ExtUtils::Constant generated for us + print FH autoload ($package, $]); +- print FH "bootstrap $package \$VERSION;\n1;\n__END__\n"; ++ print FH "$package->bootstrap(\$VERSION);\n1;\n__END__\n"; + close FH or die "close $pm: $!\n"; + + ################ test.pl +-- +2.26.2 \ No newline at end of file diff --git a/nixpkgs/pkgs/development/perl-modules/Google-ProtocolBuffers-multiline-comments.patch b/nixpkgs/pkgs/development/perl-modules/Google-ProtocolBuffers-multiline-comments.patch new file mode 100644 index 000000000000..6b634d0d2424 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Google-ProtocolBuffers-multiline-comments.patch @@ -0,0 +1,12 @@ +diff -Naur Google-ProtocolBuffers-0.08-orig/lib/Google/ProtocolBuffers/Compiler.pm Google-ProtocolBuffers-0.08/lib/Google/ProtocolBuffers/Compiler.pm +--- Google-ProtocolBuffers-0.08-orig/lib/Google/ProtocolBuffers/Compiler.pm 2008-10-23 13:46:01.000000000 -0400 ++++ Google-ProtocolBuffers-0.08/lib/Google/ProtocolBuffers/Compiler.pm 2013-01-16 13:52:09.855063997 -0500 +@@ -16,7 +16,7 @@ + + my $grammar = <<'END_OF_GRAMMAR'; + +-proto : <skip: qr! (?: //.*\n | \s+ )* !x> ++proto : <skip: qr! (?: //.*?\n | \s+ | /\*.*?\*/\s* )* !xs> + ## list of top level declarations. + ## Skip empty declarations and ";". + (message | extend | enum | import | package | option | service | syntax | ";")(s) /\Z/ diff --git a/nixpkgs/pkgs/development/perl-modules/Gtk2-fix-incompatible-pointer-conversion.patch b/nixpkgs/pkgs/development/perl-modules/Gtk2-fix-incompatible-pointer-conversion.patch new file mode 100644 index 000000000000..1ac68ee19d01 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Gtk2-fix-incompatible-pointer-conversion.patch @@ -0,0 +1,86 @@ +diff -ur a/gdk.typemap b/gdk.typemap +--- a/gdk.typemap 2017-05-21 15:02:54.000000000 -0400 ++++ b/gdk.typemap 2023-11-03 13:17:43.717890172 -0400 +@@ -23,6 +23,7 @@ + TYPEMAP + + # can be either a pointer or an integer, this handles both cases ++uintptr_t T_UV + GdkNativeWindow T_UV + + # GdkBitmap doesn't get its own type id, but needs to be treated separately. +diff -ur a/xs/GdkDnd.xs b/xs/GdkDnd.xs +--- a/xs/GdkDnd.xs 2017-05-21 15:02:54.000000000 -0400 ++++ b/xs/GdkDnd.xs 2023-11-03 13:23:22.478329089 -0400 +@@ -142,12 +142,12 @@ + void + gdk_drag_get_protocol_for_display (class, display, xid) + GdkDisplay *display +- guint32 xid ++ uintptr_t xid + PREINIT: + GdkDragProtocol protocol; +- guint32 ret; ++ uintptr_t ret; + PPCODE: +- ret = gdk_drag_get_protocol_for_display (display, xid, &protocol); ++ ret = (uintptr_t)gdk_drag_get_protocol_for_display (display, INT2PTR(GdkNativeWindow, xid), &protocol); + XPUSHs (sv_2mortal (newSVuv (ret))); + XPUSHs (sv_2mortal (ret + ? newSVGdkDragProtocol (protocol) +@@ -184,12 +184,12 @@ + =cut + void + gdk_drag_get_protocol (class, xid) +- guint32 xid ++ uintptr_t xid + PREINIT: + GdkDragProtocol protocol; +- guint32 ret; ++ uintptr_t ret; + PPCODE: +- ret = gdk_drag_get_protocol (xid, &protocol); ++ ret = (uintptr_t)gdk_drag_get_protocol (INT2PTR(GdkNativeWindow, xid), &protocol); + XPUSHs (sv_2mortal (newSVuv (ret))); + XPUSHs (sv_2mortal (newSVGdkDragProtocol (protocol))); + +diff -ur a/xs/GdkSelection.xs b/xs/GdkSelection.xs +--- a/xs/GdkSelection.xs 2017-05-21 15:02:54.000000000 -0400 ++++ b/xs/GdkSelection.xs 2023-11-03 13:26:58.976888906 -0400 +@@ -147,7 +147,7 @@ + ## void gdk_selection_send_notify (guint32 requestor, GdkAtom selection, GdkAtom target, GdkAtom property, guint32 time_) + void + gdk_selection_send_notify (class, requestor, selection, target, property, time_) +- guint32 requestor ++ GdkNativeWindow requestor + GdkAtom selection + GdkAtom target + GdkAtom property +@@ -161,7 +161,7 @@ + void + gdk_selection_send_notify_for_display (class, display, requestor, selection, target, property, time_) + GdkDisplay *display +- guint32 requestor ++ GdkNativeWindow requestor + GdkAtom selection + GdkAtom target + GdkAtom property +diff -ur a/xs/GtkWindow.xs b/xs/GtkWindow.xs +--- a/xs/GtkWindow.xs 2017-05-21 15:02:54.000000000 -0400 ++++ b/xs/GtkWindow.xs 2023-11-03 13:32:53.673168678 -0400 +@@ -581,13 +581,13 @@ + void + gtk_window_remove_embedded_xid (window, xid) + GtkWindow * window +- guint xid ++ GdkNativeWindow xid + + ## void gtk_window_add_embedded_xid (GtkWindow *window, guint xid) + void + gtk_window_add_embedded_xid (window, xid) + GtkWindow * window +- guint xid ++ GdkNativeWindow xid + + ##void gtk_window_reshow_with_initial_size (GtkWindow *window) + void diff --git a/nixpkgs/pkgs/development/perl-modules/Hailo-fix-test-gld.patch b/nixpkgs/pkgs/development/perl-modules/Hailo-fix-test-gld.patch new file mode 100644 index 000000000000..24e45ac0c1ff --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Hailo-fix-test-gld.patch @@ -0,0 +1,28 @@ +commit ce474dbca0c95c06a85a3a329fcdbcc97b8ad317 +Author: Stig Palmquist <git@stig.io> +Date: 2023-11-21 13:27:46 +0100 + + Fix t/shell.t compat with Getopt-Long-Descriptive 0.106 + +diff --git a/t/command/shell.t b/t/command/shell.t +index ebd67d8..a09afd2 100644 +--- a/t/command/shell.t ++++ b/t/command/shell.t +@@ -28,7 +28,7 @@ run_ok( $app, [ '--no-help' ], "Don't help me" ); + cmp_ok($return, '==', 1, 'Exit status is correct'); + like($stderr, qr/^$/s, 'no stderr'); + like($stdout, qr{usage: hailo}, 'Got usage header'); +- like($stdout, qr{progress\s+Display progress}, 'Got --progress'); ++ like($stdout, qr{progress\s*(?:\(or -p\))?\s+Display progress}, 'Got --progress'); + like($stdout, qr{files are assumed to be UTF-8 encoded}, 'Got UTF-8 note'); + unlike($stdout, qr{examples:}, "no examples on normal output"); + } +@@ -75,7 +75,7 @@ run_ok( $app, [ '--no-help' ], "Don't help me" ); + like($stderr, qr/^$/s, 'no stderr'); + like($stdout, qr/Unknown option: blah-blah-blah/, 'Unknown option'); + like($stdout, qr{usage: hailo}, 'Got usage header'); +- like($stdout, qr{progress\s+Display progress}, 'Got --progress'); ++ like($stdout, qr{progress\s*(?:\(or -p\))?\s+Display progress}, 'Got --progress'); + like($stdout, qr{files are assumed to be UTF-8 encoded}, 'Got UTF-8 note'); + unlike($stdout, qr{examples:}, "no examples on error"); + diff --git a/nixpkgs/pkgs/development/perl-modules/IO-Tty-fix-makefile.patch b/nixpkgs/pkgs/development/perl-modules/IO-Tty-fix-makefile.patch new file mode 100644 index 000000000000..65c6d238bdb3 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/IO-Tty-fix-makefile.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile.PL b/Makefile.PL +index eaf47e0..32766d7 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -146,7 +146,7 @@ extern "C" + /* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ + char $f (); +-char (*f) (); ++char f; + + #ifdef F77_DUMMY_MAIN + # ifdef __cplusplus diff --git a/nixpkgs/pkgs/development/perl-modules/MNI/default.nix b/nixpkgs/pkgs/development/perl-modules/MNI/default.nix new file mode 100644 index 000000000000..067a08f5e5a1 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/MNI/default.nix @@ -0,0 +1,24 @@ +{ fetchFromGitHub, buildPerlPackage, lib }: + +buildPerlPackage { + pname = "MNI-Perllib"; + version = "2012-04-13"; + + src = fetchFromGitHub { + owner = "BIC-MNI"; + repo = "mni-perllib"; + rev = "b908472b4390180ea5d19a121ac5edad6ed88d83"; + sha256 = "0vk99pwgbard62k63386r7dpnm3h435jdqywr4xqfq7p04dz6kyb"; + }; + + patches = [ ./no-stdin.patch ]; + + doCheck = false; # TODO: almost all tests fail ... is this a real problem? + + meta = { + description = "MNI MINC perllib (not used much anymore)"; + homepage = "https://github.com/BIC-MNI/mni-perllib"; + license = with lib.licenses; [ artistic1 gpl1Plus ]; + maintainers = with lib.maintainers; [ bcdarwin ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/MNI/no-stdin.patch b/nixpkgs/pkgs/development/perl-modules/MNI/no-stdin.patch new file mode 100644 index 000000000000..1e9e791257e7 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/MNI/no-stdin.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile.PL b/Makefile.PL +index 9f2039a..12d699c 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -213,7 +213,7 @@ TEXT + } # &MY::postamble + + +-query_subs; ++#query_subs; + + my $f; + WriteMakefile diff --git a/nixpkgs/pkgs/development/perl-modules/MouseX-Getopt-gld-tests.patch b/nixpkgs/pkgs/development/perl-modules/MouseX-Getopt-gld-tests.patch new file mode 100644 index 000000000000..6ca6e8309462 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/MouseX-Getopt-gld-tests.patch @@ -0,0 +1,143 @@ +From c1d1eed00099af8d858536b659864b7ccea41974 Mon Sep 17 00:00:00 2001 +From: Paul Howarth <paul@city-fan.org> +Date: Sat, 13 Mar 2021 17:46:57 +0000 +Subject: [PATCH 1/2] Update for Getopt-Long-Descriptive 0.106 + +GLD is now outputting text with wrapping depending on the terminal +width. This update is enough to get the tests to pass when running +within "expect", which provides a PTY. It's almost certainly not +enough for general use. +--- + t/104_override_usage.t | 8 ++++++++ + t/107_no_auto_help.t | 2 +- + t/109_help_flag.t | 2 +- + t/110_sort_usage_by_attr_order.t | 12 ++++++++++++ + 4 files changed, 22 insertions(+), 2 deletions(-) + +diff --git a/t/104_override_usage.t b/t/104_override_usage.t +index bc45029..6641540 100644 +--- a/t/104_override_usage.t ++++ b/t/104_override_usage.t +@@ -61,9 +61,17 @@ use Test::Exception; + \t--foo INT A foo + } + : ++ $Getopt::Long::Descriptive::VERSION < 0.106 ? + qq{usage: 104_override_usage.t [-?] [long options...] + \t-? --[no-]usage --[no-]help Prints this usage information. + \t--foo INT A foo ++} ++ : ++ qq{usage: 104_override_usage.t [-?] [long options...] ++\t--[no-]help (or -?) Prints ++\t this usage information. ++\t aka --usage ++\t--foo INT A foo + } + + ]; +diff --git a/t/107_no_auto_help.t b/t/107_no_auto_help.t +index 27f87f5..103df43 100644 +--- a/t/107_no_auto_help.t ++++ b/t/107_no_auto_help.t +@@ -60,7 +60,7 @@ END { + warning_like { + throws_ok { Class->new_with_options } + #usage: 107_no_auto_help.t [-?] [long options...] +- qr/^usage: [\d\w]+\Q.t [-?] [long options...]\E.\s+\Q-? --\E(\[no-\])?usage --(\[no-\])?\Qhelp\E\s+\QPrints this usage information.\E.\s+--configfile/ms, ++ qr/^usage: [\d\w]+\Q.t [-?] [long options...]\E.\s+(\Q-? --\E(\[no-\])?usage )?--(\[no-\])?\Qhelp\E(\Q (or -?)\E)?\s+\QPrints this usage information.\E.(\s+\Qaka --usage\E.)?\s+--configfile/ms, + 'usage information looks good'; + } + qr/^Specified configfile \'this_value_unimportant\' does not exist, is empty, or is not readable$/, +diff --git a/t/109_help_flag.t b/t/109_help_flag.t +index 8c658e2..58dbca6 100644 +--- a/t/109_help_flag.t ++++ b/t/109_help_flag.t +@@ -40,7 +40,7 @@ foreach my $args ( ['--help'], ['--usage'], ['--?'], ['-?'] ) + local @ARGV = @$args; + + throws_ok { MyClass->new_with_options() } +- qr/^usage: (?:[\d\w]+)\Q.t [-?] [long options...]\E.^\t\Q-? --\E(\[no-\])?usage --(\[no-\])?help\s+\QPrints this usage information.\E$/ms, ++ qr/^usage: (?:[\d\w]+)\Q.t [-?] [long options...]\E.^\s+(\Q-? --\E(\[no-\])?usage )?--(\[no-\])?help(\Q (or -?)\E)?\s+Prints ?(.\s+)?\Qthis usage information.\E.(\s+\Qaka --usage\E.)?$/ms, + 'Help request detected; usage information properly printed'; + } + +diff --git a/t/110_sort_usage_by_attr_order.t b/t/110_sort_usage_by_attr_order.t +index e7dd177..7ec0c99 100644 +--- a/t/110_sort_usage_by_attr_order.t ++++ b/t/110_sort_usage_by_attr_order.t +@@ -64,6 +64,18 @@ usage: 110_sort_usage_by_attr_order.t [-?] [long options...] + --baz STR Documentation for "baz" + USAGE + } ++if ( $Getopt::Long::Descriptive::VERSION >= 0.106 ) ++{ ++$expected = <<'USAGE'; ++usage: 110_sort_usage_by_attr_order.t [-?] [long options...] ++ --[no-]help (or -?) Prints ++ this usage information. ++ aka --usage ++ --foo STR Documentation for "foo" ++ --bar STR Documentation for "bar" ++ --baz STR Documentation for "baz" ++USAGE ++} + $expected =~ s/^[ ]{4}/\t/xmsg; + is($obj->usage->text, $expected, 'Usage text has nicely sorted options'); + + +From 45ae6aaabc5413e985860fbfcc8da3bdc929a054 Mon Sep 17 00:00:00 2001 +From: Paul Howarth <paul@city-fan.org> +Date: Mon, 15 Mar 2021 10:43:14 +0000 +Subject: [PATCH 2/2] Update for Getopt-Long-Descriptive 0.107 + +GLD's use of Term::ReadKey has been reverted, so this update should now +work reliably. Use with GLD 0.106 is not supported. +--- + t/104_override_usage.t | 6 +++--- + t/110_sort_usage_by_attr_order.t | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/t/104_override_usage.t b/t/104_override_usage.t +index 6641540..f7c6a31 100644 +--- a/t/104_override_usage.t ++++ b/t/104_override_usage.t +@@ -61,15 +61,15 @@ use Test::Exception; + \t--foo INT A foo + } + : +- $Getopt::Long::Descriptive::VERSION < 0.106 ? ++ # Note: Getopt::Long::Descriptive 0.106 not supported ++ $Getopt::Long::Descriptive::VERSION < 0.107 ? + qq{usage: 104_override_usage.t [-?] [long options...] + \t-? --[no-]usage --[no-]help Prints this usage information. + \t--foo INT A foo + } + : + qq{usage: 104_override_usage.t [-?] [long options...] +-\t--[no-]help (or -?) Prints +-\t this usage information. ++\t--[no-]help (or -?) Prints this usage information. + \t aka --usage + \t--foo INT A foo + } +diff --git a/t/110_sort_usage_by_attr_order.t b/t/110_sort_usage_by_attr_order.t +index 7ec0c99..16cdaa1 100644 +--- a/t/110_sort_usage_by_attr_order.t ++++ b/t/110_sort_usage_by_attr_order.t +@@ -64,12 +64,12 @@ usage: 110_sort_usage_by_attr_order.t [-?] [long options...] + --baz STR Documentation for "baz" + USAGE + } +-if ( $Getopt::Long::Descriptive::VERSION >= 0.106 ) ++# Note: Getopt::Long::Descriptive 0.106 not supported ++if ( $Getopt::Long::Descriptive::VERSION >= 0.107 ) + { + $expected = <<'USAGE'; + usage: 110_sort_usage_by_attr_order.t [-?] [long options...] +- --[no-]help (or -?) Prints +- this usage information. ++ --[no-]help (or -?) Prints this usage information. + aka --usage + --foo STR Documentation for "foo" + --bar STR Documentation for "bar" diff --git a/nixpkgs/pkgs/development/perl-modules/Mozilla-LDAP/default.nix b/nixpkgs/pkgs/development/perl-modules/Mozilla-LDAP/default.nix new file mode 100644 index 000000000000..6c3d01a34629 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Mozilla-LDAP/default.nix @@ -0,0 +1,18 @@ +{ lib, fetchurl, openldap, buildPerlPackage }: + +buildPerlPackage rec { + pname = "Mozilla-Ldap"; + version = "1.5.3"; + USE_OPENLDAP = 1; + LDAPSDKDIR = openldap.dev; + LDAPSDKLIBDIR = "${openldap.out}/lib"; + src = fetchurl { + url = "https://ftp.mozilla.org/pub/directory/perldap/releases/${version}/src/perl-mozldap-${version}.tar.gz"; + sha256 = "0s0albdw0zvg3w37s7is7gddr4mqwicjxxsy400n1p96l7ipnw4x"; + }; + meta = { + description = "Mozilla's ldap client library"; + homepage = "https://metacpan.org/release/perldap"; + license = with lib.licenses; [ mpl20 lgpl21Plus gpl2Plus ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/Paranoid-blessed-path.patch b/nixpkgs/pkgs/development/perl-modules/Paranoid-blessed-path.patch new file mode 100644 index 000000000000..99bd69730741 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Paranoid-blessed-path.patch @@ -0,0 +1,22 @@ +diff '--color=auto' -ur Paranoid-2.10/lib/Paranoid.pm Paranoid-2.10-patched/lib/Paranoid.pm +--- Paranoid-2.10/lib/Paranoid.pm 2022-03-08 10:01:04.000000000 +0100 ++++ Paranoid-2.10-patched/lib/Paranoid.pm 2023-10-20 16:57:54.025754755 +0200 +@@ -47,7 +47,7 @@ + %EXPORT_TAGS = ( all => [@EXPORT_OK], ); + + use constant PTRUE_ZERO => '0 but true'; +-use constant DEFAULT_PATH => '/bin:/sbin:/usr/bin:/usr/sbin'; ++use constant DEFAULT_PATH => '__BLESSED_PATH__'; + + ##################################################################### + # +diff '--color=auto' -ur Paranoid-2.10/t/01_init_core.t Paranoid-2.10-patched/t/01_init_core.t +--- Paranoid-2.10/t/01_init_core.t 2022-01-24 10:30:20.000000000 +0100 ++++ Paranoid-2.10-patched/t/01_init_core.t 2023-10-20 16:58:16.856288407 +0200 +@@ -35,5 +35,4 @@ + ok( psecureEnv('/bin:/sbin'), 'psecureEnv 1' ); + is( $ENV{PATH}, '/bin:/sbin', 'Validated PATH' ); + ok( psecureEnv(), 'psecureEnv 2' ); +-is( $ENV{PATH}, '/bin:/sbin:/usr/bin:/usr/sbin', 'Validated PATH' ); +- ++is( $ENV{PATH}, '__BLESSED_PATH__', 'Validated PATH' ); diff --git a/nixpkgs/pkgs/development/perl-modules/Percona-Toolkit/default.nix b/nixpkgs/pkgs/development/perl-modules/Percona-Toolkit/default.nix new file mode 100644 index 000000000000..6a115732e710 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Percona-Toolkit/default.nix @@ -0,0 +1,32 @@ +{ lib, fetchFromGitHub, buildPerlPackage, shortenPerlShebang +, DBDmysql, DBI, IOSocketSSL, TermReadKey +}: + +buildPerlPackage rec { + pname = "Percona-Toolkit"; + version = "3.2.0"; + + src = fetchFromGitHub { + owner = "percona"; + repo = "percona-toolkit"; + rev = "v${version}"; + sha256 = "084ldpskvlfm32lfss5qqzm5y9b8hf029aa4i5pcnzgb53xaxkqx"; + }; + + outputs = [ "out" ]; + + nativeBuildInputs = [ shortenPerlShebang ]; + + buildInputs = [ DBDmysql DBI IOSocketSSL TermReadKey ]; + + postInstall = '' + shortenPerlShebang $(grep -l "/bin/env perl" $out/bin/*) + ''; + + meta = { + description = "Collection of advanced command-line tools to perform a variety of MySQL and system tasks"; + homepage = "https://www.percona.com/software/database-tools/percona-toolkit"; + license = with lib.licenses; [ gpl2Only ]; + maintainers = with lib.maintainers; [ izorkin ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/Plack-test-replace-DES-hash-with-bcrypt.patch b/nixpkgs/pkgs/development/perl-modules/Plack-test-replace-DES-hash-with-bcrypt.patch new file mode 100644 index 000000000000..4f9918a5eeae --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Plack-test-replace-DES-hash-with-bcrypt.patch @@ -0,0 +1,12 @@ +Replaces the legacy DES crypt hash used in tests with a stronger +bcrypt function, as crypt() in pkgs.perl no longer supports DES + +# htpasswd -nbB admin s3cr3t + +diff --git a/t/Plack-Middleware/htpasswd b/t/Plack-Middleware/htpasswd +index b597da8..f80461d 100644 +--- a/t/Plack-Middleware/htpasswd ++++ b/t/Plack-Middleware/htpasswd +@@ -1,1 +1,1 @@ +-admin:6iSeSVcVHgNQw ++admin:$2y$05$qO4lTUQMcE5mU6KI0t7j9uCjcTkpf6sAp0cv6oZiemD0MI8keeKPa diff --git a/nixpkgs/pkgs/development/perl-modules/Po4a/default.nix b/nixpkgs/pkgs/development/perl-modules/Po4a/default.nix new file mode 100644 index 000000000000..38569204f5a8 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Po4a/default.nix @@ -0,0 +1,67 @@ +{ stdenv, lib, fetchurl, docbook_xsl, docbook_xsl_ns, gettext, libxslt, glibcLocales, docbook_xml_dtd_412, docbook_sgml_dtd_41, opensp, bash +, perl, buildPerlPackage, ModuleBuild, TextWrapI18N, LocaleGettext, TermReadKey, SGMLSpm, UnicodeLineBreak, PodParser, YAMLTiny +, fetchpatch, writeShellScriptBin +}: + +buildPerlPackage rec { + pname = "po4a"; + version = "0.62"; + src = fetchurl { + url = "https://github.com/mquinson/po4a/releases/download/v${version}/po4a-${version}.tar.gz"; + sha256 = "0eb510a66f59de68cf7a205342036cc9fc08b39334b91f1456421a5f3359e68b"; + }; + patches = [ + (fetchpatch { + # make devdoc output reproducible + # https://github.com/mquinson/po4a/pull/387 + url = "https://github.com/mquinson/po4a/commit/df7433b58f6570558d44b6aac885c2a8f7862e51.patch"; + sha256 = "9MVkYiItR2P3PBCUc4OhEOUHQuLqTWUYtYlZ3L8miC8="; + }) + ]; + + strictDeps = true; + nativeBuildInputs = + # the tests for the tex-format use kpsewhich -- texlive's file finding utility. + # We don't want to depend on texlive here, so we replace it with a minimal + # shellscript that suffices for the tests in t/fmt/tex/, i.e. it looks up + # article.cls to an existing file, but doesn't find article-wrong.cls. + let kpsewhich-stub = writeShellScriptBin "kpsewhich" + ''[[ $1 = "article.cls" ]] && echo /dev/null''; + in + [ gettext libxslt docbook_xsl docbook_xsl_ns ModuleBuild docbook_xml_dtd_412 docbook_sgml_dtd_41 opensp kpsewhich-stub glibcLocales ]; + propagatedBuildInputs = lib.optional (!stdenv.hostPlatform.isMusl) TextWrapI18N ++ [ LocaleGettext SGMLSpm UnicodeLineBreak PodParser YAMLTiny ]; + # TODO: TermReadKey was temporarily removed from propagatedBuildInputs to unfreeze the build + buildInputs = [ bash ]; + LC_ALL = "en_US.UTF-8"; + SGML_CATALOG_FILES = "${docbook_xml_dtd_412}/xml/dtd/docbook/catalog.xml"; + preConfigure = '' + touch Makefile.PL + export PERL_MB_OPT="--install_base=$out --prefix=$out" + ''; + buildPhase = "perl Build.PL --install_base=$out --install_path=\"lib=$out/${perl.libPrefix}\"; ./Build build"; + + # Disabling tests on musl + # Void linux package have investigated the failure and tracked it down to differences in gettext behavior. They decided to disable tests. + # https://github.com/void-linux/void-packages/pull/34029#issuecomment-973267880 + # Alpine packagers have not worried about running the tests until now: + # https://git.alpinelinux.org/aports/tree/main/po4a/APKBUILD#n11 + # + # Disabling tests on Darwin until https://github.com/NixOS/nixpkgs/issues/236560 is resolved. + doCheck = (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isDarwin); + + checkPhase = '' + export SGML_CATALOG_FILES=${docbook_sgml_dtd_41}/sgml/dtd/docbook-4.1/docbook.cat + ./Build test + ''; + installPhase = '' + ./Build install + for f in $out/bin/*; do + substituteInPlace $f --replace "#! /usr/bin/env perl" "#!${perl}/bin/perl" + done + ''; + meta = { + description = "Tools for helping translation of documentation"; + homepage = "https://po4a.org"; + license = with lib.licenses; [ gpl2Only ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/Socket6-sv_undef.patch b/nixpkgs/pkgs/development/perl-modules/Socket6-sv_undef.patch new file mode 100644 index 000000000000..3ed4b61b6d3e --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/Socket6-sv_undef.patch @@ -0,0 +1,18 @@ +diff --git a/Socket6.xs b/Socket6.xs +index 05c791c..058e9d9 100644 +--- a/Socket6.xs ++++ b/Socket6.xs +@@ -105,10 +105,6 @@ const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT; + #define HAVE_INET_PTON 1 + #endif + +-#ifndef HAVE_PL_SV_UNDEF +-#define PL_sv_undef sv_undef +-#endif +- + static int + not_here(char *s) + { +-- +2.16.3 + diff --git a/nixpkgs/pkgs/development/perl-modules/TextBibTeX-use-lib.patch b/nixpkgs/pkgs/development/perl-modules/TextBibTeX-use-lib.patch new file mode 100644 index 000000000000..e5490ad6f118 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/TextBibTeX-use-lib.patch @@ -0,0 +1,11 @@ +--- a/Build.PL ++++ b/Build.PL +@@ -88,7 +88,7 @@ if ( $^O =~ /mswin32/i ) { + } + } + else { +- if ( $Config{archname} =~ /^x86_64|^ppc64|^s390x|^aarch64|^riscv64/ ) { ++ if ( 0 ) { + $libdir =~ s/\bbin\b/lib64/; + if ( !-d $libdir ) { + my $test = $libdir; diff --git a/nixpkgs/pkgs/development/perl-modules/WWW-YoutubeViewer/default.nix b/nixpkgs/pkgs/development/perl-modules/WWW-YoutubeViewer/default.nix new file mode 100644 index 000000000000..6ab6233fc700 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/WWW-YoutubeViewer/default.nix @@ -0,0 +1,32 @@ +{ stdenv, lib, fetchFromGitHub, buildPerlPackage, shortenPerlShebang, LWP, LWPProtocolHttps, DataDump, JSON }: + +buildPerlPackage rec { + pname = "WWW-YoutubeViewer"; + version = "3.7.9"; + + src = fetchFromGitHub { + owner = "trizen"; + repo = "youtube-viewer"; + rev = version; + sha256 = "16p0sa91h0zpqdpqmy348g6b9qj5f6qrbzrljn157vk00cg6mx18"; + }; + + nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang; + propagatedBuildInputs = [ + LWP + LWPProtocolHttps + DataDump + JSON + ]; + postInstall = lib.optionalString stdenv.isDarwin '' + shortenPerlShebang $out/bin/youtube-viewer + ''; + + meta = with lib; { + description = "A lightweight application for searching and streaming videos from YouTube"; + homepage = "https://github.com/trizen/youtube-viewer"; + license = with licenses; [ artistic2 ]; + maintainers = with maintainers; [ woffs ]; + mainProgram = "youtube-viewer"; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/XML-LibXML-clang16.patch b/nixpkgs/pkgs/development/perl-modules/XML-LibXML-clang16.patch new file mode 100644 index 000000000000..9a19e32bc401 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/XML-LibXML-clang16.patch @@ -0,0 +1,47 @@ +From 8751785951fbde48ffa16a476da3e4adb2bbcde5 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 16 Jan 2023 18:50:10 -0800 +Subject: [PATCH] libxml-mm: Fix function prototypes in function pointers + +This is now detected with latest clang16+ + +Fixes +error: incompatible function pointer types passing 'void (void *, void *, xmlChar *)' (aka 'void (void *, void *, unsigned char *)') to parameter of type 'xmlHashScanner' (aka 'void (*)(void *, void *, const unsigned char *)') [-Wincompatible-function-pointer-types] + xmlHashScan(r, PmmRegistryDumpHashScanner, NULL); + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + perl-libxml-mm.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/perl-libxml-mm.c b/perl-libxml-mm.c +index a3e78a2..ec2b5ea 100644 +--- a/perl-libxml-mm.c ++++ b/perl-libxml-mm.c +@@ -121,7 +121,7 @@ PmmFreeHashTable(xmlHashTablePtr table) + extern SV* PROXY_NODE_REGISTRY_MUTEX; + + /* Utility method used by PmmDumpRegistry */ +-void PmmRegistryDumpHashScanner(void * payload, void * data, xmlChar * name) ++void PmmRegistryDumpHashScanner(void * payload, void * data, const xmlChar * name) + { + LocalProxyNodePtr lp = (LocalProxyNodePtr) payload; + ProxyNodePtr node = (ProxyNodePtr) lp->proxy; +@@ -215,7 +215,7 @@ PmmRegisterProxyNode(ProxyNodePtr proxy) + /* PP: originally this was static inline void, but on AIX the compiler + did not chew it, so I'm removing the inline */ + static void +-PmmRegistryHashDeallocator(void *payload, xmlChar *name) ++PmmRegistryHashDeallocator(void *payload, const xmlChar *name) + { + Safefree((LocalProxyNodePtr) payload); + } +@@ -279,7 +279,7 @@ PmmRegistryREFCNT_dec(ProxyNodePtr proxy) + * internal, used by PmmCloneProxyNodes + */ + void * +-PmmRegistryHashCopier(void *payload, xmlChar *name) ++PmmRegistryHashCopier(void *payload, const xmlChar *name) + { + ProxyNodePtr proxy = ((LocalProxyNodePtr) payload)->proxy; + LocalProxyNodePtr lp; diff --git a/nixpkgs/pkgs/development/perl-modules/alien-sdl.patch b/nixpkgs/pkgs/development/perl-modules/alien-sdl.patch new file mode 100644 index 000000000000..b00f7dcce819 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/alien-sdl.patch @@ -0,0 +1,30 @@ +diff --git a/inc/My/Builder/Unix.pm b/inc/My/Builder/Unix.pm +index 15291d5..5c5ab24 100644 +--- a/inc/My/Builder/Unix.pm ++++ b/inc/My/Builder/Unix.pm +@@ -48,7 +48,7 @@ sub get_additional_libs { + + sub can_build_binaries_from_sources { + my $self = shift; +- return 1; # yes we can ++ return 0; # no we can't + } + + sub build_binaries { +diff --git a/t/004_get_header_version.t b/t/004_get_header_version.t +index d4146ff..27f53ea 100644 +--- a/t/004_get_header_version.t ++++ b/t/004_get_header_version.t +@@ -1,8 +1,11 @@ + # t/004_config.t + +-use Test::More tests => 1; ++use Test::More; + use Alien::SDL; + ++Test::More::plan( skip_all => 'NixOS doesn\'t have SDL headers in this location' ); ++ ++ + like( Alien::SDL->get_header_version('SDL_version.h'), qr/([0-9]+\.)*[0-9]+/, "Testing SDL_version.h" ); + #like( Alien::SDL->get_header_version('SDL_net.h'), qr/([0-9]+\.)*[0-9]+/, "Testing SDL_net.h" ); + #like( Alien::SDL->get_header_version('SDL_image.h'), qr/([0-9]+\.)*[0-9]+/, "Testing SDL_image.h" ); diff --git a/nixpkgs/pkgs/development/perl-modules/boost-geometry-utils-fix-oom.patch b/nixpkgs/pkgs/development/perl-modules/boost-geometry-utils-fix-oom.patch new file mode 100644 index 000000000000..cbcce3819896 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/boost-geometry-utils-fix-oom.patch @@ -0,0 +1,34 @@ +From a46f0e41056b48a56c572fe8884d4b5104a8343e Mon Sep 17 00:00:00 2001 +From: Niko Tyni <ntyni@debian.org> +Date: Sun, 29 Jun 2014 21:51:15 +0300 +Subject: [PATCH] multi_linestring2perl: only extend the array if needed + +When the size is 0, we end up extending the stack with +a negative value. As of Perl 5.19.4, more precisely + http://perl5.git.perl.org/perl.git/commit/fc16c3924bd6aa054f21ad5445fecf9b7f39dc36 +this ends up allocating memory for 4G-1 elements. + +See Dave Mitchell's comments on perl5-porters: + Message-ID: <20140522115758.GX15438@iabyn.com> + http://marc.info/?l=perl5-porters&m=140075990913228&w=2 +--- + src/mline2av.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/mline2av.h b/src/mline2av.h +index e4b3fc2..d7bacee 100644 +--- a/src/mline2av.h ++++ b/src/mline2av.h +@@ -9,7 +9,8 @@ multi_linestring2perl(pTHX_ const multi_linestring& mls) + { + AV* av = newAV(); + const unsigned int size = mls.size(); +- av_extend(av, size-1); ++ if (size > 0) ++ av_extend(av, size-1); + + for (int i = 0; i < size; i++) { + AV* lineav = newAV(); +-- +2.0.0 + diff --git a/nixpkgs/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch b/nixpkgs/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch new file mode 100644 index 000000000000..06207a8b7334 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch @@ -0,0 +1,37 @@ +Send an ETag header, and honour the If-None-Match request header + +diff -ru -x '*~' Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm +--- Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm 2012-05-04 18:49:30.000000000 +0200 ++++ Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm 2013-02-25 22:57:18.667150181 +0100 +@@ -187,16 +187,27 @@ + my $type = $c->_ext_to_type( $full_path ); + my $stat = stat $full_path; + +- $c->res->headers->content_type( $type ); +- $c->res->headers->content_length( $stat->size ); +- $c->res->headers->last_modified( $stat->mtime ); + # Tell Firefox & friends its OK to cache, even over SSL: +- $c->res->headers->header('Cache-control' => 'public'); ++ #$c->res->headers->header('Cache-control' => 'public'); ++ ++ $c->res->headers->last_modified( $stat->mtime ); + # Optionally, set a fixed expiry time: + if ($config->{expires}) { + $c->res->headers->expires(time() + $config->{expires}); + } + ++ if ($config->{send_etag}) { ++ my $etag = '"' . $stat->mtime . '-' . $stat->ino . '-'. $stat->size . '"'; ++ $c->res->headers->header('ETag' => $etag); ++ if (($c->req->header('If-None-Match') // "") eq $etag) { ++ $c->res->status(304); ++ return 1; ++ } ++ } ++ ++ $c->res->headers->content_type( $type ); ++ $c->res->headers->content_length( $stat->size ); ++ + my $fh = IO::File->new( $full_path, 'r' ); + if ( defined $fh ) { + binmode $fh; diff --git a/nixpkgs/pkgs/development/perl-modules/crypt-openpgp-remove-impure-keygen-tests.patch b/nixpkgs/pkgs/development/perl-modules/crypt-openpgp-remove-impure-keygen-tests.patch new file mode 100644 index 000000000000..70dc0826276b --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/crypt-openpgp-remove-impure-keygen-tests.patch @@ -0,0 +1,30 @@ +diff --git a/t/13-keygen.t b/t/13-keygen.t +index f430ffb..2050624 100644 +--- a/t/13-keygen.t ++++ b/t/13-keygen.t +@@ -1,5 +1,5 @@ + use strict; +-use Test::More tests => 29; ++use Test::More tests => 25; + + use Crypt::OpenPGP; + use Crypt::OpenPGP::Message; +@@ -26,9 +26,6 @@ for my $type ( qw( RSA DSA ) ) { + isa_ok $pub->key, 'Crypt::OpenPGP::Certificate'; + isa_ok $sec->key, 'Crypt::OpenPGP::Certificate'; + +- is $pub->key->key_id, $sec->key->key_id, +- 'public key_id matches secret key_id'; +- + is $pub->primary_uid, $id, 'primary_uid matches'; + + is $pub->key->key->size, $bits, 'keysize (in bits) matches for pubkey'; +@@ -47,8 +44,6 @@ for my $type ( qw( RSA DSA ) ) { + isa_ok $pieces[1], 'Crypt::OpenPGP::UserID'; + isa_ok $pieces[2], 'Crypt::OpenPGP::Signature'; + +- is $pieces[0]->key_id, $sec->key->key_id, +- 'serialized public key_id matches secret key_id'; + } + + { diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/filtered-requirements.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/filtered-requirements.sh new file mode 100755 index 000000000000..2e3509d68c12 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/filtered-requirements.sh @@ -0,0 +1,18 @@ +#! /bin/sh + +source lib-cache.sh; + +print_reqs() { + module_name="$1"; + + ./requirements.sh "$1"| while read; do + if let "$(./source-download-link.sh "${REPLY}" | wc -c)" && [ perl != "$REPLY" ]; then + echo "$REPLY"; + fi; + done; +} + +module_name="$1"; +module_basename="${module_name//::/-}"; + +cached_output print_reqs "$module_basename" "$module_name" "pure.deps"; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/full-requirements.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/full-requirements.sh new file mode 100755 index 000000000000..91218f36f609 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/full-requirements.sh @@ -0,0 +1,21 @@ +#! /bin/sh + +source lib-cache.sh; + +print_requirements () { + module_name="$1"; + + ./requirements.sh "$module_name" | while read; do + echo "$REPLY"; + print_reqs_cache "$REPLY"; + done | sort | uniq +}; + +print_reqs_cache () { + module_name="$1"; + module_basename="${module_name//::/-}"; + + cached_output print_requirements "$module_basename" "$module_name" "full.deps"; +}; + +print_reqs_cache "$@"; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/grab-url.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/grab-url.sh new file mode 100755 index 000000000000..8935cad8cefe --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/grab-url.sh @@ -0,0 +1,19 @@ +#! /bin/sh + +source lib-cache.sh + +get_file() { + url="$1"; + + if [ -n "$url" ]; then + curl "$1"; + else + echo -n; + fi; +} + +url="$1"; +name="$2"; +name=${name:-$(basename "$url")} + +cached_output get_file "${name%%.*}" "$url" "${name#*.}" diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/lib-cache.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/lib-cache.sh new file mode 100644 index 000000000000..65095144bcd6 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/lib-cache.sh @@ -0,0 +1,18 @@ + +# First argument: command to run +# Second argument: cache name +# Third argument: argument to command +# Fourth argument: cache type +cached_output () { + cmd="$1"; + basename="$2"; + arg="$3"; + ext="$4"; + + if ! [ -e "cache-${ext//./-}/${basename}.${ext}" ]; then + mkdir -p "cache-${ext//./-}"; + $cmd $arg > "cache-${ext//./-}/${basename}.${ext}"; + fi; + + cat "cache-${ext//./-}/${basename}.${ext}"; +} diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/make-clean-dir.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/make-clean-dir.sh new file mode 100755 index 000000000000..996cb92e6958 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/make-clean-dir.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +rm -rf test; +mkdir test; +for i in *.sh; do ln -s ../$i test; done; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/requirements.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/requirements.sh new file mode 100755 index 000000000000..19b24c55a8ee --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/requirements.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +source lib-cache.sh; + +module_name="$1"; +module_basename="${1//::/-}"; + +print_requirements () { + module_name="$1"; + + ./retrieve-meta-yaml.sh "$module_name" | + sed -re '1,/^requires:/d; /^[a-z]/,$d; s@^\s*@@; s@:\s.*@@'; + ./retrieve-meta-yaml.sh "$module_name" | + sed -re '1,/^build_requires:/d; /^[a-z]/,$d; s@^\s*@@; s@:\s.*@@'; +}; + +cached_output print_requirements "$module_basename" "$module_name" "direct.deps"; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-file-link.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-file-link.sh new file mode 100755 index 000000000000..c8ec5df11b7d --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-file-link.sh @@ -0,0 +1,14 @@ +#! /bin/sh + +module_basename="$1"; +file_name="$2"; + +version_regexp="${module_basename}(-[0-9.a-z]+){0,1}"; +author_regexp="[A-Z0-9]+"; + +./retrieve-modulepage.sh "$module_basename" | + egrep "[<]a href=\"[a-z0-9/]*/(${author_regexp}/){0,1}${version_regexp}/${file_name}" | + sed -re "s@.*href=\"@@; s@\".*@@" | + sed -re 's@^/@http://search.cpan.org/@'; + +echo "$link_line"; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-meta-yaml.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-meta-yaml.sh new file mode 100755 index 000000000000..3b162ebe693f --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-meta-yaml.sh @@ -0,0 +1,16 @@ +#! /bin/sh + +source lib-cache.sh; + +print_meta_yaml () { + module_name="$1"; + module_basename="${module_name//::/-}"; + + ./grab-url.sh "$(./retrieve-file-link.sh "$module_basename" "META.yml")" \ + "${module_basename}.meta.yml"; +}; + +module_name="$1"; +module_basename="${module_name//::/-}"; + +cached_output print_meta_yaml "$module_basename" "$module_name" meta.yaml; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-modulepage.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-modulepage.sh new file mode 100755 index 000000000000..866dfa13f944 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/retrieve-modulepage.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +module_basename="$1"; + +./grab-url.sh "http://search.cpan.org/dist/$module_basename/" "$module_basename".html; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/source-download-link.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/source-download-link.sh new file mode 100755 index 000000000000..779d131961f0 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/source-download-link.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +source lib-cache.sh; + +module_name="$1"; +module_basename="${module_name//::/-}"; + +write_link() { + module_basename="$1"; + + ./retrieve-modulepage.sh "$module_basename" | + grep -A 2 "This Release" | + grep href | + sed -re 's/.*href="//; s/".*//; s@^/@http://search.cpan.org/@'; +} + +cached_output write_link "$module_basename" "$module_basename" src.link; diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/usage.txt b/nixpkgs/pkgs/development/perl-modules/expression-generator/usage.txt new file mode 100644 index 000000000000..1aa0737afdbd --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/usage.txt @@ -0,0 +1,10 @@ +/path/to/write-nix-expression.sh Group::Module::Submodule + +It will output Nix assignment formatted for placing into +all-packages.nix amongst all the perl packages, like perlAlgorithmDiff. +Actually it will grab distribution unit Group-Module-Submodule via +search.cpan.org, and make some effort to write correct dependencies. +If among requirements there are some that have empty META.yml, or if +any of requirements acannot be installed by just getting distribution +unit whose name can be guessed by replacing :: with -, manual editing +will be needed. diff --git a/nixpkgs/pkgs/development/perl-modules/expression-generator/write-nix-expression.sh b/nixpkgs/pkgs/development/perl-modules/expression-generator/write-nix-expression.sh new file mode 100755 index 000000000000..9f5cdb9142eb --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/expression-generator/write-nix-expression.sh @@ -0,0 +1,34 @@ +#! /bin/sh + +cd $(dirname $0); + +source lib-cache.sh; + +print_expression () { + module_name="$1"; + module_basename="${module_name//::/-}"; + module_compressedname="perl${module_name//::/}"; + sourcelink="$(./source-download-link.sh "${module_name}")"; + version_name="${sourcelink%.tar.*}"; + version_name="${version_name##*/}"; + dependencies="$(./filtered-requirements.sh "$module_name" | sed -e 's/^/perl/; s/:://g' | xargs)"; + source_hash=$(nix-prefetch-url "$sourcelink" 2>/dev/null); + + cat <<EOF + + ${module_compressedname} = import ../development/perl-modules/generic perl { + name = "${version_name}"; + src = fetchurl { + url = ${sourcelink}; + sha256 = "$source_hash"; + }; + propagatedBuildInputs = [${dependencies}]; + }; + +EOF +}; + +module_name="$1"; +module_basename="${module_name//::/-}"; + +cached_output print_expression "$module_basename" "$module_name" "nix"; diff --git a/nixpkgs/pkgs/development/perl-modules/generic/builder.sh b/nixpkgs/pkgs/development/perl-modules/generic/builder.sh new file mode 100644 index 000000000000..4da9f7a98212 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/generic/builder.sh @@ -0,0 +1,37 @@ +if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi +source $stdenv/setup + +PERL5LIB="$PERL5LIB${PERL5LIB:+:}$out/lib/perl5/site_perl" + +perlFlags= +for i in $(IFS=:; echo $PERL5LIB); do + perlFlags="$perlFlags -I$i" +done + +oldPreConfigure="$preConfigure" +preConfigure() { + + eval "$oldPreConfigure" + + find . | while read fn; do + if test -f "$fn"; then + first=$(dd if="$fn" count=2 bs=1 2> /dev/null) + if test "$first" = "#!"; then + echo "patching $fn..." + sed -i "$fn" -e "s|^#\!\(.*\bperl\b.*\)$|#\!\1$perlFlags|" + fi + fi + done + + perl Makefile.PL PREFIX=$out INSTALLDIRS=site $makeMakerFlags PERL=$(type -P perl) FULLPERL=\"$fullperl/bin/perl\" +} + +if test -n "$perlPreHook"; then + eval "$perlPreHook" +fi + +genericBuild + +if test -n "$perlPostHook"; then + eval "$perlPostHook" +fi diff --git a/nixpkgs/pkgs/development/perl-modules/generic/default.nix b/nixpkgs/pkgs/development/perl-modules/generic/default.nix new file mode 100644 index 000000000000..e7afedf5d63c --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/generic/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv, perl, toPerlModule }: + +{ buildInputs ? [] +, nativeBuildInputs ? [] +, outputs ? [ "out" "devdoc" ] +, src ? null + +# enabling or disabling does nothing for perl packages so set it explicitly +# to false to not change hashes when enableParallelBuildingByDefault is enabled +, enableParallelBuilding ? false + +, doCheck ? true +, checkTarget ? "test" + +# Prevent CPAN downloads. +, PERL_AUTOINSTALL ? "--skipdeps" + +# From http://wiki.cpantesters.org/wiki/CPANAuthorNotes: "allows +# authors to skip certain tests (or include certain tests) when +# the results are not being monitored by a human being." +, AUTOMATED_TESTING ? true + +# current directory (".") is removed from @INC in Perl 5.26 but many old libs rely on it +# https://metacpan.org/pod/release/XSAWYERX/perl-5.26.0/pod/perldelta.pod#Removal-of-the-current-directory-%28%22.%22%29-from-@INC +, PERL_USE_UNSAFE_INC ? "1" + +, env ? {} + +, ... +}@attrs: + +lib.throwIf (attrs ? name) "buildPerlPackage: `name` (\"${attrs.name}\") is deprecated, use `pname` and `version` instead" + +(let + defaultMeta = { + homepage = "https://metacpan.org/dist/${attrs.pname}"; + inherit (perl.meta) platforms; + }; + + package = stdenv.mkDerivation (attrs // { + name = "perl${perl.version}-${attrs.pname}-${attrs.version}"; + + builder = ./builder.sh; + + buildInputs = buildInputs ++ [ perl ]; + nativeBuildInputs = nativeBuildInputs ++ (if stdenv.buildPlatform != stdenv.hostPlatform then [ perl.mini ] else [ perl ]); + + inherit outputs src doCheck checkTarget enableParallelBuilding; + env = { + inherit PERL_AUTOINSTALL AUTOMATED_TESTING PERL_USE_UNSAFE_INC; + fullperl = perl.__spliced.buildHost or perl; + } // env; + + meta = defaultMeta // (attrs.meta or { }); + }); + +in toPerlModule package) diff --git a/nixpkgs/pkgs/development/perl-modules/ham/default.nix b/nixpkgs/pkgs/development/perl-modules/ham/default.nix new file mode 100644 index 000000000000..8d1fce1ab897 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/ham/default.nix @@ -0,0 +1,49 @@ +{ lib +, buildPerlPackage +, fetchFromGitHub +, makeWrapper +, openssh +, GitRepository +, URI +, XMLParser +}: + +buildPerlPackage { + pname = "ham-unstable"; + version = "2023-10-06"; + + src = fetchFromGitHub { + owner = "kernkonzept"; + repo = "ham"; + rev = "90d104ce481ee8f9b770be4b37d97f34eef5f82f"; + hash = "sha256-DeHH7k9K7CmQW6eOyf8TCV/HNYS30oFnI1b8ztBDk/o="; + }; + + outputs = [ "out" ]; + + nativeBuildInputs = [ makeWrapper ]; + propagatedBuildInputs = [ openssh GitRepository URI XMLParser ]; + + preConfigure = '' + patchShebangs . + touch Makefile.PL + rm -f Makefile + ''; + + installPhase = '' + mkdir -p $out/lib $out/bin + cp -r . $out/lib/ham + + makeWrapper $out/lib/ham/ham $out/bin/ham --argv0 ham \ + --prefix PATH : ${openssh}/bin + ''; + + meta = with lib; { + description = "A tool to manage big projects consisting of multiple loosely-coupled git repositories"; + homepage = "https://github.com/kernkonzept/ham"; + license = licenses.bsd2; + maintainers = with maintainers; [ aw ]; + mainProgram = "ham"; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/lwp-protocol-https-cert-file.patch b/nixpkgs/pkgs/development/perl-modules/lwp-protocol-https-cert-file.patch new file mode 100644 index 000000000000..3b6156d3a7c7 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/lwp-protocol-https-cert-file.patch @@ -0,0 +1,14 @@ +diff --git a/lib/LWP/Protocol/https.pm b/lib/LWP/Protocol/https.pm +index 645e828..7098f64 100644 +--- a/lib/LWP/Protocol/https.pm ++++ b/lib/LWP/Protocol/https.pm +@@ -29,6 +29,9 @@ sub _extra_sock_opts + } + } + if ($ssl_opts{SSL_verify_mode}) { ++ if ($ENV{NIX_SSL_CERT_FILE}) { ++ $ssl_opts{SSL_ca_file} //= $ENV{NIX_SSL_CERT_FILE}; ++ } + unless (exists $ssl_opts{SSL_ca_file} || exists $ssl_opts{SSL_ca_path}) { + if ($Net::HTTPS::SSL_SOCKET_CLASS eq 'IO::Socket::SSL' + && defined &IO::Socket::SSL::default_ca diff --git a/nixpkgs/pkgs/development/perl-modules/maatkit/default.nix b/nixpkgs/pkgs/development/perl-modules/maatkit/default.nix new file mode 100644 index 000000000000..d6945083f634 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/maatkit/default.nix @@ -0,0 +1,43 @@ +{buildPerlPackage, lib, fetchurl, DBDmysql}: + +buildPerlPackage { + pname = "maatkit"; + version = "7540"; + + src = fetchurl { + url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/maatkit/maatkit-7540.tar.gz"; + sha256 = "1a7rxrddkrsfxb2wj01ha91ld0vapfkqcy8j9p08l76zz2l8p2v1"; + }; + + outputs = [ "out" ]; + + buildInputs = [ DBDmysql ] ; + + preConfigure = '' + find . | while read fn; do + if test -f "$fn"; then + first=$(dd if="$fn" count=2 bs=1 2> /dev/null) + if test "$first" = "#!"; then + sed < "$fn" > "$fn".tmp \ + -e "s|^#\!\(.*[/\ ]perl.*\)$|#\!$perl/bin/perl $perlFlags|" + if test -x "$fn"; then chmod +x "$fn".tmp; fi + mv "$fn".tmp "$fn" + fi + fi + done + '' ; + + meta = with lib; { + description = "Database toolkit"; + longDescription = '' + You can use Maatkit to prove replication is working correctly, fix + corrupted data, automate repetitive tasks, speed up your servers, and + much more. + + In addition to MySQL, there is support for PostgreSQL, Memcached, and a + growing variety of other databases and technologies. + ''; + license = licenses.gpl2Plus; + homepage = "http://www.maatkit.org/"; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/module-pluggable.patch b/nixpkgs/pkgs/development/perl-modules/module-pluggable.patch new file mode 100644 index 000000000000..51a029c106b9 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/module-pluggable.patch @@ -0,0 +1,27 @@ +diff -ru Module-Pluggable-4.8/lib/Module/Pluggable/Object.pm Module-Pluggable-4.8-new/lib/Module/Pluggable/Object.pm +--- Module-Pluggable-4.8/lib/Module/Pluggable/Object.pm 2013-05-28 01:30:06.000000000 +0200 ++++ Module-Pluggable-4.8-new/lib/Module/Pluggable/Object.pm 2013-06-02 23:24:52.704125205 +0200 +@@ -180,12 +180,13 @@ + my $sp = catdir($dir, (split /::/, $searchpath)); + + # if it doesn't exist or it's not a dir then skip it +- next unless ( -e $sp && -d _ ); # Use the cached stat the second time ++ next unless ( -d $sp ); + + my @files = $self->find_files($sp); + + # foreach one we've found + foreach my $file (@files) { ++ + # untaint the file; accept .pm only + next unless ($file) = ($file =~ /(.*$file_regex)$/); + # parse the file to get the name +@@ -314,7 +315,7 @@ + (my $path = $File::Find::name) =~ s#^\\./##; + push @files, $path; + } +- }, $search_path ); ++ }, "$search_path/." ); + } + #chdir $cwd; + return @files; diff --git a/nixpkgs/pkgs/development/perl-modules/net-amazon-mechanicalturk.patch b/nixpkgs/pkgs/development/perl-modules/net-amazon-mechanicalturk.patch new file mode 100644 index 000000000000..dde13b9b0fca --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/net-amazon-mechanicalturk.patch @@ -0,0 +1,65 @@ +From http://daveviner.blogspot.com/2009/12/amazon-mechanical-turk-perl-library.html +http://www.vinertech.com/patches/net-amazon-mechanicalturk.patch + +diff -rubB Net-Amazon-MechanicalTurk-1.01/lib/Net/Amazon/MechanicalTurk/ModuleUtil.pm Net-Amazon-MechanicalTurk-1.01/lib/Net/Amazon/MechanicalTurk/ModuleUtil.pm +--- Net-Amazon-MechanicalTurk-1.01/lib/Net/Amazon/MechanicalTurk/ModuleUtil.pm 2007-08-13 11:38:53.000000000 -0700 ++++ Net-Amazon-MechanicalTurk-1.01/lib/Net/Amazon/MechanicalTurk/ModuleUtil.pm 2009-12-13 16:37:49.000000000 -0800 +@@ -29,17 +29,21 @@ + } + + sub packageExists { +- my ($class, $package) = @_; ++ my ($class, $package, $moduleFile) = @_; ++ ++ if (defined($moduleFile) && exists($INC{$moduleFile})) { ++ return 1; ++ } + # Symbol table black magic + no strict 'refs'; +- return defined %{*{"${package}::"}}; ++ return scalar(keys(%{*{"${package}::"}})); + } + + sub require { + my ($class, $module) = @_; +- if (!$class->packageExists($module)) { + my $moduleFile = $module . ".pm"; + $moduleFile =~ s/::/\//g; ++ if (!$class->packageExists($module, $moduleFile)) { + require $moduleFile; + } + } +diff -rubB Net-Amazon-MechanicalTurk-1.01/t/73-datagenerator-dbi.t Net-Amazon-MechanicalTurk-1.01/t/73-datagenerator-dbi.t +--- Net-Amazon-MechanicalTurk-1.01/t/73-datagenerator-dbi.t 2007-08-13 11:38:56.000000000 -0700 ++++ Net-Amazon-MechanicalTurk-1.01/t/73-datagenerator-dbi.t 2009-12-13 16:55:30.000000000 -0800 +@@ -8,10 +8,10 @@ + + eval { + require DBI; +- require DBD::SQLite2; ++ require DBD::SQLite; + }; + if ($@) { +- plan skip_all => "SQLite2 not installed."; ++ plan skip_all => "SQLite not installed."; + } + else { + plan tests => 2; +@@ -21,7 +21,7 @@ + #----------------------- + my $dbfile = "t/data/test.db"; + unlink($dbfile) if (-f $dbfile); +-my $dbh = DBI->connect("dbi:SQLite2:dbname=${dbfile}","","", { ++my $dbh = DBI->connect("dbi:SQLite:dbname=${dbfile}","","", { + RaiseError => 1, + AutoCommit => 1 + }); +@@ -42,7 +42,7 @@ + foreach my $id (1..30) { + $sth->execute($id, rand(), scalar localtime()); + } +- ++$sth->finish(); + + # Actual test + #---------------------- diff --git a/nixpkgs/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt b/nixpkgs/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt new file mode 100644 index 000000000000..42df14c40960 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt @@ -0,0 +1,5 @@ +GLUT=20801 +VERSION=3.0 Mesa 10.2.6 +VENDOR=Intel Open Source Technology Center +RENDERER=Mesa DRI Intel(R) Ivybridge Mobile +EXTENSIONS=GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_polygon_offset GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_3DFX_texture_compression_FXT1 GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_S3_s3tc GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_compression_s3tc GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_ATI_envmap_bumpmap GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_depth_clamp GL_APPLE_packed_pixels GL_APPLE_vertex_array_object GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_NV_primitive_restart GL_ARB_depth_clamp GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_color_buffer_float GL_ARB_pixel_buffer_object GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_rectangle GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_packed_depth_stencil GL_APPLE_object_purgeable GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_gpu_program_parameters GL_EXT_texture_array GL_EXT_texture_integer GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_OES_EGL_image GL_AMD_performance_monitor GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_map_buffer_range GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_NV_conditional_render GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_ARB_ES2_compatibility GL_ARB_blend_func_extended GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_texture_lod GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_ARB_get_program_binary GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_conservative_depth GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_shader_atomic_counters GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_transform_feedback GL_AMD_shader_trinary_minmax GL_ARB_ES3_compatibility GL_ARB_clear_buffer_object GL_ARB_invalidate_subdata GL_ARB_texture_query_levels GL_ARB_texture_storage_multisample GL_ARB_texture_view GL_ARB_vertex_attrib_binding GL_KHR_debug GL_ARB_buffer_storage GL_ARB_multi_bind GL_ARB_texture_mirror_clamp_to_edge GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_shader_integer_mix GL_INTEL_performance_query diff --git a/nixpkgs/pkgs/development/perl-modules/perl-opengl.patch b/nixpkgs/pkgs/development/perl-modules/perl-opengl.patch new file mode 100644 index 000000000000..a44dc4f2e42d --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/perl-opengl.patch @@ -0,0 +1,57 @@ +diff --git a/Makefile.PL b/Makefile.PL +index 55c485c..8501c02 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -124,14 +124,7 @@ if ($^O eq 'MSWin32' || $IS_W32API) + # Look for available libs + our @libdirs = qw + { +- -L/usr/lib +- -L/usr/lib/i386-linux-gnu +- -L/usr/X11R6/lib +- -L/opt/X11/lib +- -L/usr/local/lib +- -L/usr/openwin/lib +- -L/opt/csw/lib +- -L/usr/local/freeglut/lib ++ @@libpaths@@ + }; + + our @check_libs = qw +@@ -764,7 +759,6 @@ sub get_extensions + my $exc_file = 'gl_exclude.h'; + unlink($exc_file) if (-e $exc_file); + my $glv_file = 'utils/glversion.txt'; +- unlink($glv_file) if (-e $glv_file); + + # Only run the rest if GLUT is installed + print "Testing GLUT version\n" if ($verbose); +@@ -817,7 +811,7 @@ sub get_extensions + $make_ver = ";make -f Makefile " . (length($lib) ? "GLUT_LIB=$lib " : "") . (length($def) ? "GLUT_DEF=$def " : ""); + print "glversion: '$make_ver'\n" if $verbose>1; + } +- my $exec = 'cd utils'."$make_ver clean".$make_ver; ++ my $exec = 'cd utils'.$make_ver; + print "glversion: $exec\n" if ($verbose); + my $stat = `$exec`; + print "\n$stat\n\n" if ($verbose); +diff --git a/utils/Makefile b/utils/Makefile +index 910dcaf..1b1ac57 100644 +--- a/utils/Makefile ++++ b/utils/Makefile +@@ -21,14 +21,13 @@ EXTRALIBS=-lGLU -lXi -lXmu -lXext -lX11 -lm + all: glversion.txt + + glversion.txt: glversion +- ./glversion > glversion.txt ++ echo "skipping build of glversion.txt" + + glversion: glversion.o + ${LINK} glversion.o ${LDFLAGS} ${EXTRALIBS} -o glversion + chmod u+x glversion + + clean: +- rm -f glversion.txt + rm -f glversion + rm -f glversion.o + diff --git a/nixpkgs/pkgs/development/perl-modules/sdl-modern-perl.patch b/nixpkgs/pkgs/development/perl-modules/sdl-modern-perl.patch new file mode 100644 index 000000000000..c97eeb034486 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/sdl-modern-perl.patch @@ -0,0 +1,64 @@ +From d734d03862d7dcc776bd2fa3ba662cdd5879b32e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com> +Date: Wed, 12 Jul 2023 17:55:27 +0200 +Subject: [PATCH] Adapt to perl 5.37.1 + +Perl 5.37.1 removed a deprecated sv_nv() macro and SDL fails to build +with Perl 5.38.0: + +lib/SDLx/Controller/Interface.xs:60:26: error: implicit declaration of function 'sv_nv' + 60 | out->dv_x = sv_nv(temp); + | ^~~~~ + +Users are advised to use SvNVx() macro instead. SvNVx() seems to have been +available all the time (it predates a commit from 1993-10-07). + +This patch does that. + +https://github.com/PerlGameDev/SDL/issues/303 +--- + src/SDLx/Controller/Interface.xs | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/SDLx/Controller/Interface.xs b/src/SDLx/Controller/Interface.xs +index 3dc202b7..d326c885 100644 +--- a/src/SDLx/Controller/Interface.xs ++++ b/src/SDLx/Controller/Interface.xs +@@ -57,15 +57,15 @@ void evaluate(SDLx_Interface *obj, SDLx_Derivative *out, SDLx_State *initial, fl + + SV *temp; + temp = av_pop(accel); +- out->dv_x = sv_nv(temp); ++ out->dv_x = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dv_y = sv_nv(temp); ++ out->dv_y = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dang_v = sv_nv(temp); ++ out->dang_v = SvNVx(temp); + SvREFCNT_dec(temp); + + SvREFCNT_dec((SV *)accel); +@@ -90,15 +90,15 @@ void evaluate_dt(SDLx_Interface *obj, SDLx_Derivative *out, SDLx_State *initial, + + SV *temp; + temp = av_pop(accel); +- out->dv_x = sv_nv(temp); ++ out->dv_x = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dv_y = sv_nv(temp); ++ out->dv_y = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dang_v = sv_nv(temp); ++ out->dang_v = SvNVx(temp); + SvREFCNT_dec(temp); + + SvREFCNT_dec((SV *)accel); diff --git a/nixpkgs/pkgs/development/perl-modules/strip-nondeterminism/default.nix b/nixpkgs/pkgs/development/perl-modules/strip-nondeterminism/default.nix new file mode 100644 index 000000000000..3dac3868e664 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/strip-nondeterminism/default.nix @@ -0,0 +1,68 @@ +{ lib +, stdenv +, file +, fetchFromGitLab +, buildPerlPackage +, ArchiveZip +, ArchiveCpio +, SubOverride +, shortenPerlShebang +}: + +buildPerlPackage rec { + pname = "strip-nondeterminism"; + version = "1.13.1"; + + outputs = [ "out" "dev" ]; # no "devdoc" + + src = fetchFromGitLab { + owner = "reproducible-builds"; + repo = "strip-nondeterminism"; + domain = "salsa.debian.org"; + rev = version; + sha256 = "czx9UhdgTsQSfDNo1mMOXCM/3/nuNe+cPZeyy2xdnKs="; + }; + + strictDeps = true; + nativeBuildInputs = lib.optionals stdenv.isDarwin [ shortenPerlShebang ]; + buildInputs = [ + ArchiveZip + ArchiveCpio + SubOverride + ]; + + postPatch = '' + substituteInPlace lib/File/StripNondeterminism.pm \ + --replace "exec('file'" "exec('${lib.getExe file}'" + ''; + + + postBuild = '' + patchShebangs ./bin + ''; + + postInstall = '' + # we don’t need the debhelper script + rm $out/bin/dh_strip_nondeterminism + rm $out/share/man/man1/dh_strip_nondeterminism.1 + '' + lib.optionalString stdenv.isDarwin '' + shortenPerlShebang $out/bin/strip-nondeterminism + ''; + + installCheckPhase = '' + runHook preInstallCheck + ($out/bin/strip-nondeterminism --help 2>&1 | grep -q "verbose") || (echo "'$out/bin/strip-nondeterminism --help' failed" && exit 1) + runHook postInstallCheck + ''; + + # running shortenPerlShebang in postBuild results in non-functioning binary 'exec format error' + doCheck = !stdenv.isDarwin; + doInstallCheck = true; + + meta = with lib; { + description = "A Perl module for stripping bits of non-deterministic information"; + homepage = "https://reproducible-builds.org/"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ pSub artturin ]; + }; +} diff --git a/nixpkgs/pkgs/development/perl-modules/tk-configure-implicit-int-fix.patch b/nixpkgs/pkgs/development/perl-modules/tk-configure-implicit-int-fix.patch new file mode 100644 index 000000000000..215bf864cfe4 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/tk-configure-implicit-int-fix.patch @@ -0,0 +1,11 @@ +--- a/JPEG/jpeg/configure 2013-11-15 18:50:03.000000000 -0500 ++++ b/JPEG/jpeg/configure 2023-09-05 23:36:12.675151164 -0400 +@@ -623,7 +623,7 @@ + cat > conftest.$ac_ext <<EOF + #line 625 "configure" + #include "confdefs.h" +-main(){return(0);} ++int main(){return(0);} + EOF + if { (eval echo configure:629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes diff --git a/nixpkgs/pkgs/development/perl-modules/xml-grove-utf8.patch b/nixpkgs/pkgs/development/perl-modules/xml-grove-utf8.patch new file mode 100644 index 000000000000..d0b913090be4 --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/xml-grove-utf8.patch @@ -0,0 +1,10 @@ +--- XML-Grove-0.46alpha/t/grove.t 2008-07-22 14:47:27.000000000 +0200 ++++ XML-Grove-0.46alpha/t/grove.t 2008-07-22 14:46:42.000000000 +0200 +@@ -13,6 +13,7 @@ use XML::Parser::PerlSAX; + use XML::Grove::Builder; + use XML::Grove::AsString; + use XML::Grove::AsCanonXML; ++use utf8; + + $loaded = 1; + print "ok 1\n"; diff --git a/nixpkgs/pkgs/development/perl-modules/xml-parser-0001-HACK-Assumes-Expat-paths-are-good.patch b/nixpkgs/pkgs/development/perl-modules/xml-parser-0001-HACK-Assumes-Expat-paths-are-good.patch new file mode 100644 index 000000000000..add6d9df3b7f --- /dev/null +++ b/nixpkgs/pkgs/development/perl-modules/xml-parser-0001-HACK-Assumes-Expat-paths-are-good.patch @@ -0,0 +1,45 @@ +From e996904128653c67b04ddbdb1e10cef158098957 Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel <samuel@dionne-riel.com> +Date: Fri, 6 Dec 2019 23:00:51 -0500 +Subject: [PATCH] [HACK]: Assumes Expat paths are good. + +The `check_lib` check fails with the cross-compilation build platform's +Perl, since apparently `mktemp` is missing... + +Even then, side-stepping the issue, it seems it is not actually enough +to work, as the compilation fails. +--- + Makefile.PL | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/Makefile.PL b/Makefile.PL +index 505d1df..fc38b76 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -29,12 +29,17 @@ foreach (@ARGV) { + @ARGV = @replacement_args; + + unless ( +- check_lib( # fill in what you prompted the user for here +- lib => [qw(expat)], +- header => ['expat.h'], +- incpath => $expat_incpath, +- ( $expat_libpath ? ( libpath => $expat_libpath ) : () ), +- ) ++ #check_lib( # fill in what you prompted the user for here ++ # lib => [qw(expat)], ++ # header => ['expat.h'], ++ # incpath => $expat_incpath, ++ # ( $expat_libpath ? ( libpath => $expat_libpath ) : () ), ++ #) ++ # The check_lib implementation fails horribly with cross-compilation. ++ # We are giving known good paths to expat. ++ # And in all cases, the previous behaviour of not actually failing ++ # seemed to work just fine :/. ++ false + ) { + warn <<'Expat_Not_Installed;'; + +-- +2.23.0 + |