view release on metacpan or search on metacpan
inc/Devel/CheckLib.pm view on Meta::CPAN
321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
close
(
$ch
);
my
$exefile
= File::Temp::mktemp(
'assertlibXXXXXXXX'
) .
$Config
{_exe};
my
@sys_cmd
;
# FIXME: re-factor - almost identical code later when linking
if
(
$Config
{cc} eq
'cl'
) {
# Microsoft compiler
@sys_cmd
= (
@$cc
,
$cfile
,
"/Fe$exefile"
,
(
map
{
'/I'
.Win32::GetShortPathName(
$_
) }
@incpaths
),
"/link"
,
@$ld
,
split
(
' '
,
$Config
{libs}),
);
}
elsif
(
$Config
{cc} =~ /bcc32(\.exe)?/) {
# Borland
@sys_cmd
= (
@$cc
,
@$ld
,
(
map
{
"-I$_"
}
@incpaths
),
"-o$exefile"
,
$cfile
);
}
else
{
# Unix-ish: gcc, Sun, AIX (gcc, cc), ...
@sys_cmd
= (
@$cc
,
@$ld
,
$cfile
,
(
map
{
"-I$_"
}
@incpaths
),
"-o"
,
"$exefile"
);
}
warn
"# @sys_cmd\n"
if
$args
{debug};
my
$rv
=
$args
{debug} ?
system
(
@sys_cmd
) : _quiet_system(
@sys_cmd
);
push
@missing
,
$header
if
$rv
!= 0 || ! -x
$exefile
;
_cleanup_exe(
$exefile
);
unlink
$cfile
;
}
inc/Devel/CheckLib.pm view on Meta::CPAN
364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417my
$ofile
=
$cfile
;
$ofile
=~ s/\.c$/
$Config
{_o}/;
$ch
qq{#include <$_>\n}
foreach
(
@headers
);
$ch
"int main(int argc, char *argv[]) { "
.(
$args
{function} ||
'return 0;'
).
" }\n"
;
close
(
$ch
);
for
my
$lib
(
@libs
) {
my
$exefile
= File::Temp::mktemp(
'assertlibXXXXXXXX'
) .
$Config
{_exe};
my
@sys_cmd
;
if
(
$Config
{cc} eq
'cl'
) {
# Microsoft compiler
my
@libpath
=
map
{
q{/libpath:}
. Win32::GetShortPathName(
$_
)
}
@libpaths
;
# this is horribly sensitive to the order of arguments
@sys_cmd
= (
@$cc
,
$cfile
,
"${lib}.lib"
,
"/Fe$exefile"
,
(
map
{
'/I'
.Win32::GetShortPathName(
$_
) }
@incpaths
),
"/link"
,
@$ld
,
split
(
' '
,
$Config
{libs}),
(
map
{
'/libpath:'
.Win32::GetShortPathName(
$_
)}
@libpaths
),
);
}
elsif
(
$Config
{cc} eq
'CC/DECC'
) {
# VMS
}
elsif
(
$Config
{cc} =~ /bcc32(\.exe)?/) {
# Borland
@sys_cmd
= (
@$cc
,
@$ld
,
"-o$exefile"
,
(
map
{
"-I$_"
}
@incpaths
),
(
map
{
"-L$_"
}
@libpaths
),
"-l$lib"
,
$cfile
);
}
else
{
# Unix-ish
# gcc, Sun, AIX (gcc, cc)
@sys_cmd
= (
@$cc
,
@$ld
,
$cfile
,
"-o"
,
"$exefile"
,
(
map
{
"-I$_"
}
@incpaths
),
(
map
{
"-L$_"
}
@libpaths
),
"-l$lib"
,
);
}
warn
"# @sys_cmd\n"
if
$args
{debug};
local
$ENV
{LD_RUN_PATH} =
join
(
":"
,
@libpaths
).
":"
.
$ENV
{LD_RUN_PATH}
unless
$^O eq
'MSWin32'
;
local
$ENV
{PATH} =
join
(
";"
,
@libpaths
).
";"
.
$ENV
{PATH}
if
$^O eq
'MSWin32'
;
my
$rv
=
$args
{debug} ?
system
(
@sys_cmd
) : _quiet_system(
@sys_cmd
);
if
(
$rv
!= 0 || ! -x
$exefile
) {
push
@missing
,
$lib
;
}
inc/Devel/CheckLib.pm view on Meta::CPAN
424425426427428429430431432433434435436437438439440441442443444445446447448
else
{
if
(
$analyze_binary
) {
push
@wronganalysis
,
$lib
if
!
$analyze_binary
->(
$lib
,
$exefile
)
}
}
}
_cleanup_exe(
$exefile
);
}
unlink
$cfile
;
my
$miss_string
=
join
(
q{, }
,
map
{
qq{'$_'}
}
@missing
);
die
(
"Can't link/include C library $miss_string, aborting.\n"
)
if
@missing
;
my
$wrong_string
=
join
(
q{, }
,
map
{
qq{'$_'}
}
@wrongresult
);
die
(
"wrong result: $wrong_string\n"
)
if
@wrongresult
;
my
$analysis_string
=
join
(
q{, }
,
map
{
qq{'$_'}
}
@wronganalysis
);
die
(
"wrong analysis: $analysis_string"
)
if
@wronganalysis
;
}
sub
_cleanup_exe {
my
(
$exefile
) =
@_
;
my
$ofile
=
$exefile
;
$ofile
=~ s/
$Config
{_exe}$/
$Config
{_o}/;
# List of files to remove
my
@rmfiles
;
push
@rmfiles
,
$exefile
,
$ofile
,
"$exefile\.manifest"
;
inc/Module/Install.pm view on Meta::CPAN
417418419420421422423424425426427428429430431432433434435436# Perl versions (eg, 5.8.1).
sub
_version {
my
$s
=
shift
|| 0;
my
$d
=()=
$s
=~ /(\.)/g;
if
(
$d
>= 2 ) {
# Normalise multipart versions
$s
=~ s/(\.)(\d{1,3})/
sprintf
(
"$1%03d"
,$2)/eg;
}
$s
=~ s/^(\d+)\.?//;
my
$l
= $1 || 0;
my
@v
=
map
{
$_
.
'0'
x (3 -
length
$_
)
}
$s
=~ /(\d{1,3})\D?/g;
$l
=
$l
.
'.'
.
join
''
,
@v
if
@v
;
return
$l
+ 0;
}
sub
_cmp {
_version(
$_
[1]) <=> _version(
$_
[2]);
}
inc/Module/Install/Makefile.pm view on Meta::CPAN
183184185186187188189190191192193194195196197198199200201202203sub
_wanted_t {
}
sub
tests_recursive {
my
$self
=
shift
;
my
$dir
=
shift
||
't'
;
unless
( -d
$dir
) {
die
"tests_recursive dir '$dir' does not exist"
;
}
my
%tests
=
map
{
$_
=> 1 }
split
/ /, (
$self
->tests ||
''
);
File::Find::find(
sub
{ /\.t$/ and -f
$_
and
$tests
{
"$File::Find::dir/*.t"
} = 1 },
$dir
);
$self
->tests(
join
' '
,
sort
keys
%tests
);
}
sub
write
{
my
$self
=
shift
;
inc/Module/Install/Makefile.pm view on Meta::CPAN
249250251252253254255256257258259260261262263264265266267268269
my
@tests
=
split
' '
,
$self
->tests;
my
%seen
;
$args
->{test} = {
TESTS
=> (
join
' '
,
grep
{!
$seen
{
$_
}++}
@tests
),
};
}
elsif
(
$Module::Install::ExtraTests::use_extratests
) {
# Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness.
# So, just ignore our xt tests here.
}
elsif
( -d
'xt'
and (
$Module::Install::AUTHOR
or
$ENV
{RELEASE_TESTING}) ) {
$args
->{test} = {
TESTS
=>
join
(
' '
,
map
{
"$_/*.t"
}
grep
{ -d
$_
}
qw{ t xt }
),
};
}
if
( $] >= 5.005 ) {
$args
->{ABSTRACT} =
$self
->abstract;
$args
->{AUTHOR} =
join
', '
, @{
$self
->author || []};
}
if
(
$self
->makemaker(6.10) ) {
$args
->{NO_META} = 1;
#$args->{NO_MYMETA} = 1;
}
inc/Module/Install/Makefile.pm view on Meta::CPAN
272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305}
unless
(
$self
->is_admin ) {
delete
$args
->{SIGN};
}
if
(
$self
->makemaker(6.31) and
$self
->license ) {
$args
->{LICENSE} =
$self
->license;
}
my
$prereq
= (
$args
->{PREREQ_PM} ||= {});
%$prereq
= (
%$prereq
,
map
{
@$_
}
# flatten [module => version]
map
{
@$_
}
grep
$_
,
(
$self
->requires)
);
# Remove any reference to perl, PREREQ_PM doesn't support it
delete
$args
->{PREREQ_PM}->{perl};
# Merge both kinds of requires into BUILD_REQUIRES
my
$build_prereq
= (
$args
->{BUILD_REQUIRES} ||= {});
%$build_prereq
= (
%$build_prereq
,
map
{
@$_
}
# flatten [module => version]
map
{
@$_
}
grep
$_
,
(
$self
->configure_requires,
$self
->build_requires)
);
# Remove any reference to perl, BUILD_REQUIRES doesn't support it
delete
$args
->{BUILD_REQUIRES}->{perl};
# Delete bundled dists from prereq_pm, add it to Makefile DIR
my
$subdirs
= (
$args
->{DIR} || []);
if
(
$self
->bundles) {
inc/Module/Install/Makefile.pm view on Meta::CPAN
332333334335336337338339340341342343344345346347348349350351
if
(
$self
->makemaker(6.48) ) {
$args
->{MIN_PERL_VERSION} =
$perl_version
;
}
}
if
(
$self
->installdirs) {
warn
qq{old INSTALLDIRS (probably set by makemaker_args) is overriden by installdirs\n}
if
$args
->{INSTALLDIRS};
$args
->{INSTALLDIRS} =
$self
->installdirs;
}
my
%args
=
map
{
(
$_
=>
$args
->{
$_
} ) }
grep
{
defined
(
$args
->{
$_
} )
}
keys
%$args
;
my
$user_preop
=
delete
$args
{dist}->{PREOP};
if
(
my
$preop
=
$self
->admin->preop(
$user_preop
) ) {
foreach
my
$key
(
keys
%$preop
) {
$args
{dist}->{
$key
} =
$preop
->{
$key
};
}
}
inc/Module/Install/Metadata.pm view on Meta::CPAN
828384858687888990919293949596979899100101102
push
@{
$self
->{
values
}->{
$key
}},
@_
;
return
$self
;
};
}
foreach
my
$key
(
@resource_keys
) {
*$key
=
sub
{
my
$self
=
shift
;
unless
(
@_
) {
return
()
unless
$self
->{
values
}->{resources};
return
map
{
$_
->[1] }
grep
{
$_
->[0] eq
$key
}
@{
$self
->{
values
}->{resources} };
}
return
$self
->{
values
}->{resources}->{
$key
}
unless
@_
;
my
$uri
=
shift
or
die
(
"Did not provide a value to $key()"
);
$self
->resources(
$key
=>
$uri
);
return
1;
};
inc/Module/Install/Metadata.pm view on Meta::CPAN
106107108109110111112113114115116117118119120121122123124125126127128129130131
*$key
=
sub
{
my
$self
=
shift
;
return
$self
->{
values
}->{
$key
}
unless
@_
;
my
@added
;
while
(
@_
) {
my
$module
=
shift
or
last
;
my
$version
=
shift
|| 0;
push
@added
, [
$module
,
$version
];
}
push
@{
$self
->{
values
}->{
$key
} },
@added
;
return
map
{
@$_
}
@added
;
};
}
# Resource handling
my
%lc_resource
=
map
{
$_
=> 1 }
qw{
homepage
license
bugtracker
repository
}
;
sub
resources {
my
$self
=
shift
;
while
(
@_
) {
my
$name
=
shift
or
last
;
inc/Module/Install/Metadata.pm view on Meta::CPAN
258259260261262263264265266267268269270271272273274275276277278
# The user used ->feature like ->features by passing in the second
# argument as a reference. Accomodate for that.
$mods
=
$_
[0];
}
else
{
$mods
= \
@_
;
}
my
$count
= 0;
push
@$features
, (
$name
=> [
map
{
ref
(
$_
) ? (
ref
(
$_
) eq
'HASH'
) ?
%$_
:
@$_
:
$_
}
@$mods
]
);
return
@$features
;
}
sub
features {
my
$self
=
shift
;
inc/Module/Install/Metadata.pm view on Meta::CPAN
398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
([^\n]*)
|
=head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
.*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
([^\n]*)
/ixms) {
my
$author
= $1 || $2;
# XXX: ugly but should work anyway...
if
(
eval
"require Pod::Escapes; 1"
) {
# Pod::Escapes has a mapping table.
# It's in core of perl >= 5.9.3, and should be installed
# as one of the Pod::Simple's prereqs, which is a prereq
# of Pod::Text 3.x (see also below).
$author
=~ s{ E<( (\d+) | ([A-Za-z]+) )> }
{
defined
$2
?
chr
($2)
:
defined
$Pod::Escapes::Name2character_number
{$1}
?
chr
(
$Pod::Escapes::Name2character_number
{$1})
:
do
{
warn
"Unknown escape: E<$1>"
;
"E<$1>"
;
};
}gex;
}
elsif
(
eval
"require Pod::Text; 1"
&&
$Pod::Text::VERSION
< 3) {
# Pod::Text < 3.0 has yet another mapping table,
# though the table name of 2.x and 1.x are different.
# (1.x is in core of Perl < 5.6, 2.x is in core of
# Perl < 5.9.3)
my
$mapping
= (
$Pod::Text::VERSION
< 2)
? \
%Pod::Text::HTML_Escapes
: \
%Pod::Text::ESCAPES
;
$author
=~ s{ E<( (\d+) | ([A-Za-z]+) )> }
{
defined
$2
?
chr
($2)
:
defined
$mapping
->{$1}
?
$mapping
->{$1}
:
do
{
warn
"Unknown escape: E<$1>"
;
"E<$1>"
;
};
}gex;
}
else
{
$author
=~ s{E<lt>}{<}g;
$author
=~ s{E<gt>}{>}g;
}
inc/Module/Install/Metadata.pm view on Meta::CPAN
703704705706707708709710711712713714715716717718719720721722
# Load the advisory META.yml file
my
@yaml
= Parse::CPAN::Meta::LoadFile(
'META.yml'
);
my
$meta
=
$yaml
[0];
# Overwrite the non-configure dependency hashes
delete
$meta
->{requires};
delete
$meta
->{build_requires};
delete
$meta
->{recommends};
if
(
exists
$val
->{requires} ) {
$meta
->{requires} = {
map
{
@$_
} @{
$val
->{requires} } };
}
if
(
exists
$val
->{build_requires} ) {
$meta
->{build_requires} = {
map
{
@$_
} @{
$val
->{build_requires} } };
}
return
$meta
;
}
1;