Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
best-practical
rt-extension-formtools
Commits
ff152347
Commit
ff152347
authored
Apr 10, 2009
by
Kevin Falcone
Browse files
* bump version, we've certainly churned it a lot
parent
10fa7581
Changes
10
Hide whitespace changes
Inline
Side-by-side
inc/Module/Install.pm
View file @
ff152347
...
...
@@ -30,7 +30,11 @@ BEGIN {
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
$VERSION
=
'
0.70
';
$VERSION
=
'
0.78
';
*
inc::Module::Install::
VERSION
=
*VERSION
;
@
inc::Module::Install::
ISA
=
__PACKAGE__
;
}
...
...
@@ -81,7 +85,7 @@ END_DIE
# Build.PL was formerly supported, but no longer is due to excessive
# difficulty in implementing every single feature twice.
if
(
$
0
=~
/Build.PL$/i
or
-
f
'
Build.PL
'
)
{
die
<<
"
END_DIE
"
}
if
(
$
0
=~
/Build.PL$/i
)
{
die
<<
"
END_DIE
"
}
Module::
Install
no
longer
supports
Build
.
PL
.
...
...
@@ -95,14 +99,20 @@ END_DIE
# To save some more typing in Module::Install installers, every...
# use inc::Module::Install
# ...also acts as an implicit use strict.
$^H
|=
strict::
bits
(
qw(refs subs vars)
);
use
Cwd
();
use
File::
Find
();
use
File::
Path
();
use
FindBin
;
*
inc::Module::Install::
VERSION
=
*VERSION
;
@
inc::Module::Install::
ISA
=
__PACKAGE__
;
sub
autoload
{
my
$self
=
shift
;
my
$who
=
$self
->
_caller
;
...
...
@@ -115,8 +125,10 @@ sub autoload {
goto
&$code
unless
$cwd
eq
$pwd
;
}
$$sym
=~
/([^:]+)$/
or
die
"
Cannot autoload
$who
-
$sym
";
unshift
@
_
,
(
$self
,
$
1
);
goto
&
{
$self
->
can
('
call
')}
unless
uc
(
$
1
)
eq
$
1
;
unless
(
uc
(
$
1
)
eq
$
1
)
{
unshift
@
_
,
(
$self
,
$
1
);
goto
&
{
$self
->
can
('
call
')};
}
};
}
...
...
@@ -145,8 +157,7 @@ sub import {
}
sub
preload
{
my
(
$self
)
=
@_
;
my
$self
=
shift
;
unless
(
$self
->
{
extensions
}
)
{
$self
->
load_extensions
(
"
$self
->{prefix}/
$self
->{path}
",
$self
...
...
@@ -202,6 +213,7 @@ sub new {
$args
{
path
}
=~
s!::!/!g
;
}
$args
{
file
}
||=
"
$args
{base}/
$args
{prefix}/
$args
{path}.pm
";
$args
{
wrote
}
=
0
;
bless
(
\
%args
,
$class
);
}
...
...
@@ -238,7 +250,7 @@ END_DIE
sub
load_extensions
{
my
(
$self
,
$path
,
$top
)
=
@_
;
unless
(
grep
{
lc
$_
eq
lc
$self
->
{
prefix
}
}
@INC
)
{
unless
(
grep
{
!
ref
$_
and
lc
$_
eq
lc
$self
->
{
prefix
}
}
@INC
)
{
unshift
@INC
,
$self
->
{
prefix
};
}
...
...
@@ -277,9 +289,9 @@ sub find_extensions {
# correctly. Otherwise, root through the file to locate the case-preserved
# version of the package name.
if
(
$subpath
eq
lc
(
$subpath
)
||
$subpath
eq
uc
(
$subpath
)
)
{
open
PKGFILE
,
"
<
$subpath
.pm
"
or
die
"
find_extensions: Can't open
$subpath
.pm: $!
"
;
my
$in_pod
=
0
;
while
(
<
PKGFILE
>
)
{
my
$content
=
Module::Install::
_read
(
$subpath
.
'
.pm
')
;
my
$in_pod
=
0
;
foreach
(
split
//
,
$content
)
{
$in_pod
=
1
if
/^=\w/
;
$in_pod
=
0
if
/^=cut/
;
next
if
(
$in_pod
||
/^=cut/
);
# skip pod text
...
...
@@ -289,7 +301,6 @@ sub find_extensions {
last
;
}
}
close
PKGFILE
;
}
push
@found
,
[
$file
,
$pkg
];
...
...
@@ -298,6 +309,13 @@ sub find_extensions {
@found
;
}
#####################################################################
# Utility Functions
sub
_caller
{
my
$depth
=
0
;
my
$call
=
caller
(
$depth
);
...
...
@@ -308,6 +326,44 @@ sub _caller {
return
$call
;
}
sub
_read
{
local
*FH
;
open
FH
,
"
<
$_
[0]
"
or
die
"
open(
$_
[0]): $!
";
my
$str
=
do
{
local
$/
;
<
FH
>
};
close
FH
or
die
"
close(
$_
[0]): $!
";
return
$str
;
}
sub
_write
{
local
*FH
;
open
FH
,
"
>
$_
[0]
"
or
die
"
open(
$_
[0]): $!
";
foreach
(
1
..
$
#_ ) { print FH $_[$_] or die "print($_[0]): $!" }
close
FH
or
die
"
close(
$_
[0]): $!
";
}
# _version is for processing module versions (eg, 1.03_05) not
# Perl versions (eg, 5.8.1).
sub
_version
($)
{
my
$s
=
shift
||
0
;
$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
;
}
# Cloned from Params::Util::_CLASS
sub
_CLASS
($)
{
(
defined
$_
[
0
]
and
!
ref
$_
[
0
]
and
$_
[
0
]
=~
m/^[^\W\d]\w*(?:::\w+)*$/s
)
?
$_
[
0
]
:
undef
;
}
1
;
# Copyright 2008 Adam Kennedy.
# Copyright 2008
- 2009
Adam Kennedy.
inc/Module/Install/Base.pm
View file @
ff152347
#line 1
package
Module::Install::
Base
;
$VERSION
=
'
0.7
0
';
$VERSION
=
'
0.7
8
';
# Suspend handler for "redefined" warnings
BEGIN
{
...
...
@@ -45,6 +45,8 @@ sub admin {
$_
[
0
]
->
_top
->
{
admin
}
or
Module::Install::Base::
FakeAdmin
->
new
;
}
#line 101
sub
is_admin
{
$_
[
0
]
->
admin
->
VERSION
;
}
...
...
@@ -67,4 +69,4 @@ BEGIN {
1
;
#line 1
38
#line 1
46
inc/Module/Install/Can.pm
View file @
ff152347
...
...
@@ -11,7 +11,7 @@ use ExtUtils::MakeMaker ();
use
vars
qw{$VERSION $ISCORE @ISA}
;
BEGIN
{
$VERSION
=
'
0.7
0
';
$VERSION
=
'
0.7
8
';
$ISCORE
=
1
;
@ISA
=
qw{Module::Install::Base}
;
}
...
...
@@ -39,6 +39,7 @@ sub can_run {
return
$_cmd
if
(
-
x
$_cmd
or
$_cmd
=
MM
->
maybe_command
(
$_cmd
));
for
my
$dir
((
split
/$Config::Config{path_sep}/
,
$ENV
{
PATH
}),
'
.
')
{
next
if
$dir
eq
'';
my
$abs
=
File::
Spec
->
catfile
(
$dir
,
$_
[
1
]);
return
$abs
if
(
-
x
$abs
or
$abs
=
MM
->
maybe_command
(
$abs
));
}
...
...
@@ -79,4 +80,4 @@ if ( $^O eq 'cygwin' ) {
__END__
#line 15
7
#line 15
8
inc/Module/Install/Fetch.pm
View file @
ff152347
...
...
@@ -6,20 +6,20 @@ use Module::Install::Base;
use
vars
qw{$VERSION $ISCORE @ISA}
;
BEGIN
{
$VERSION
=
'
0.7
0
';
$VERSION
=
'
0.7
8
';
$ISCORE
=
1
;
@ISA
=
qw{Module::Install::Base}
;
}
sub
get_file
{
my
(
$self
,
%args
)
=
@_
;
my
(
$scheme
,
$host
,
$path
,
$file
)
=
my
(
$scheme
,
$host
,
$path
,
$file
)
=
$args
{
url
}
=~
m|^(\w+)://([^/]+)(.+)/(.+)|
or
return
;
if
(
$scheme
eq
'
http
'
and
!
eval
{
require
LWP::
Simple
;
1
}
)
{
$args
{
url
}
=
$args
{
ftp_url
}
or
(
warn
("
LWP support unavailable!
\n
"),
return
);
(
$scheme
,
$host
,
$path
,
$file
)
=
(
$scheme
,
$host
,
$path
,
$file
)
=
$args
{
url
}
=~
m|^(\w+)://([^/]+)(.+)/(.+)|
or
return
;
}
...
...
inc/Module/Install/Makefile.pm
View file @
ff152347
...
...
@@ -7,7 +7,7 @@ use ExtUtils::MakeMaker ();
use
vars
qw{$VERSION
$ISCORE
@ISA};
BEGIN
{
$VERSION
=
'0.7
0
'
;
$VERSION
=
'0.7
8
'
;
$ISCORE
=
1
;
@ISA = qw{Module
::
Install::Base};
}
...
...
@@ -36,9 +36,9 @@ sub prompt {
sub
makemaker_args
{
my
$self
=
shift
;
my
$args
=
(
$self
->
{
makemaker_args
}
||=
{})
;
%
$args
=
(
%
$args
, @_
)
if
@_
;
$args;
my
$args
=
(
$self
->
{
makemaker_args
}
||=
{}
)
;
%
$args
=
(
%
$args
, @_
)
;
return
$args;
}
# For mm args that take multiple space-seperated args,
...
...
@@ -63,18 +63,18 @@ sub build_subdirs {
sub
clean_files
{
my
$self
=
shift
;
my
$clean
=
$self
->makemaker_args->
{
clean
}
||=
{}
;
%
$clean
=
(
%$clean,
FILES
=>
join
(
' '
,
grep
length
,
$clean
->
{
FILES
}
, @_
)
,
%
$clean
=
(
%$clean,
FILES
=>
join
' '
,
grep
{
length
$_
}
(
$clean
->
{
FILES
}
||
()
, @_
)
,
);
}
sub
realclean_files
{
my
$self
=
shift
;
my
$self
=
shift
;
my
$realclean
=
$self
->makemaker_args->
{
realclean
}
||=
{}
;
%
$realclean
=
(
%$realclean,
FILES
=>
join
(
' '
,
grep
length
,
$realclean
->
{
FILES
}
, @_
)
,
%
$realclean
=
(
%$realclean,
FILES
=>
join
' '
,
grep
{
length
$_
}
(
$realclean
->
{
FILES
}
||
()
, @_
)
,
);
}
...
...
@@ -116,13 +116,19 @@ sub write {
# Make sure we have a new enough
require ExtUtils
::
MakeMaker;
$self
->configure_requires
(
'ExtUtils::MakeMaker'
=>
$ExtUtils
::MakeMaker::VERSION
)
;
# Generate the
# MakeMaker can complain about module versions that include
# an underscore, even though its own version may contain one!
# Hence the funny regexp to get rid of it. See RT #35800
# for details.
$self->configure_requires( 'ExtUtils
::
MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(
\d
+
\.\d
+)/ );
# Generate the
my
$args
=
$self
->makemaker_args
;
$args->
{DISTNAME}
=
$self
->name
;
$args->
{NAME}
=
$self
->module_name
||
$self
->name
||
$self
->determine_NAME
(
$args
)
;
$args->
{VERSION}
=
$self
->version
||
$self
->determine_VERSION
(
$args
)
;
$args->
{NAME}
=
$self
->module_name
||
$self
->name
;
$args->
{VERSION}
=
$self
->version
;
$args->{NAME} =~ s/-/
::
/g;
if
(
$self
->tests
)
{
$args
->
{
test
}
=
{
TESTS
=>
$self
->tests
}
;
...
...
@@ -175,7 +181,9 @@ sub write {
my
$user_preop
=
delete
$args
{
dist
}
->
{
PREOP
}
;
if
(my
$preop
=
$self
->admin->preop
(
$user_preop
))
{
$args{dist}
=
$preop
;
foreach
my
$key
(
keys
%$preop
)
{
$args{dist}->
{$key}
=
$preop
->
{
$key
}
;
}
}
my $mm = ExtUtils
::
MakeMaker::WriteMakefile(%args);
...
...
@@ -188,7 +196,7 @@ sub fix_up_makefile {
my
$top_class
=
ref
(
$self
->_top
)
||
''
;
my
$top_version
=
$self
->_top->VERSION
||
''
;
my
$preamble
=
$self
->preamble
my
$preamble
=
$self
->preamble
?
"# Preamble by $top_class $top_version\n"
.
$self->preamble
:
''
;
...
...
@@ -242,4 +250,4 @@ sub postamble {
__END__
#line 37
1
#line 37
9
inc/Module/Install/Metadata.pm
View file @
ff152347
...
...
@@ -6,25 +6,43 @@ use Module::Install::Base;
use
vars
qw{$VERSION $ISCORE @ISA}
;
BEGIN
{
$VERSION
=
'
0.7
0
';
$VERSION
=
'
0.7
8
';
$ISCORE
=
1
;
@ISA
=
qw{Module::Install::Base}
;
}
my
@scalar_keys
=
qw{
name module_name abstract author version license
distribution_type perl_version tests installdirs
name
module_name
abstract
author
version
distribution_type
tests
installdirs
}
;
my
@tuple_keys
=
qw{
configure_requires build_requires requires recommends bundles
configure_requires
build_requires
requires
recommends
bundles
resources
}
;
sub
Meta
{
shift
}
sub
Meta_ScalarKeys
{
@scalar_keys
}
sub
Meta_TupleKeys
{
@tuple_keys
}
my
@resource_keys
=
qw{
homepage
bugtracker
repository
}
;
sub
Meta
{
shift
}
sub
Meta_ScalarKeys
{
@scalar_keys
}
sub
Meta_TupleKeys
{
@tuple_keys
}
sub
Meta_ResourceKeys
{
@resource_keys
}
foreach
my
$key
(
@scalar_keys
)
{
foreach
my
$key
(
@scalar_keys
)
{
*$key
=
sub
{
my
$self
=
shift
;
return
$self
->
{
values
}{
$key
}
if
defined
wantarray
and
!
@_
;
...
...
@@ -33,33 +51,100 @@ foreach my $key (@scalar_keys) {
};
}
foreach
my
$key
(
@tupl
e_keys
)
{
foreach
my
$key
(
@resourc
e_keys
)
{
*$key
=
sub
{
my
$self
=
shift
;
return
$self
->
{
values
}{
$key
}
unless
@_
;
my
@rv
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
if
(
$module
eq
'
perl
'
)
{
$version
=~
s{^(\d+)\.(\d+)\.(\d+)}
{$1 + $2/1_000 + $3/1_000_000}e
;
$self
->
perl_version
(
$version
);
next
;
}
my
$rv
=
[
$module
,
$version
];
push
@rv
,
$rv
;
unless
(
@
_
)
{
return
()
unless
$self
->
{
values
}{
resources
};
return
map
{
$_
->
[
1
]
}
grep
{
$_
->
[
0
]
eq
$key
}
@
{
$self
->
{
values
}{
resources
}
};
}
push
@
{
$self
->
{
values
}{
$key
}
},
@rv
;
@rv
;
return
$self
->
{
values
}{
resources
}{
$key
}
unless
@_
;
my
$uri
=
shift
or
die
(
"
Did not provide a value to
$key
()
"
);
$self
->
resources
(
$key
=>
$uri
);
return
1
;
};
}
sub
requires
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
push
@
{
$self
->
{
values
}{
requires
}
},
[
$module
,
$version
];
}
$self
->
{
values
}{
requires
};
}
sub
build_requires
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
push
@
{
$self
->
{
values
}{
build_requires
}
},
[
$module
,
$version
];
}
$self
->
{
values
}{
build_requires
};
}
sub
configure_requires
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
push
@
{
$self
->
{
values
}{
configure_requires
}
},
[
$module
,
$version
];
}
$self
->
{
values
}{
configure_requires
};
}
sub
recommends
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
push
@
{
$self
->
{
values
}{
recommends
}
},
[
$module
,
$version
];
}
$self
->
{
values
}{
recommends
};
}
sub
bundles
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$module
=
shift
or
last
;
my
$version
=
shift
||
0
;
push
@
{
$self
->
{
values
}{
bundles
}
},
[
$module
,
$version
];
}
$self
->
{
values
}{
bundles
};
}
# Resource handling
my
%lc_resource
=
map
{
$_
=>
1
}
qw{
homepage
license
bugtracker
repository
}
;
sub
resources
{
my
$self
=
shift
;
while
(
@
_
)
{
my
$name
=
shift
or
last
;
my
$value
=
shift
or
next
;
if
(
$name
eq
lc
$name
and
!
$lc_resource
{
$name
}
)
{
die
("
Unsupported reserved lowercase resource '
$name
'
");
}
$self
->
{
values
}{
resources
}
||=
[]
;
push
@
{
$self
->
{
values
}{
resources
}
},
[
$name
,
$value
];
}
$self
->
{
values
}{
resources
};
}
# Aliases for build_requires that will have alternative
# meanings in some future version of META.yml.
sub
test_requires
{
shift
->
build_requires
(
@
_
)
}
sub
install_requires
{
shift
->
build_requires
(
@
_
)
}
sub
test_requires
{
shift
->
build_requires
(
@
_
)
}
sub
install_requires
{
shift
->
build_requires
(
@
_
)
}
# Aliases for installdirs options
sub
install_as_core
{
$_
[
0
]
->
installdirs
('
perl
')
}
...
...
@@ -69,45 +154,91 @@ sub install_as_vendor { $_[0]->installdirs('vendor') }
sub
sign
{
my
$self
=
shift
;
return
$self
->
{
'
values
'
}{
'
sign
'
}
if
defined
wantarray
and
!
@_
;
$self
->
{
'
values
'
}{
'
sign
'
}
=
(
@
_
?
$_
[
0
]
:
1
);
return
$self
->
{
values
}{
sign
}
if
defined
wantarray
and
!
@_
;
$self
->
{
values
}{
sign
}
=
(
@
_
?
$_
[
0
]
:
1
);
return
$self
;
}
sub
dynamic_config
{
my
$self
=
shift
;
unless
(
@
_
)
{
warn
"
You MUST provide an explicit true/false value to dynamic_config
, skipping
\n
";
warn
"
You MUST provide an explicit true/false value to dynamic_config
\n
";
return
$self
;
}
$self
->
{'
values
'}{'
dynamic_config
'}
=
$_
[
0
]
?
1
:
0
;
return
$self
;
$self
->
{
values
}{
dynamic_config
}
=
$_
[
0
]
?
1
:
0
;
return
1
;
}
sub
perl_version
{
my
$self
=
shift
;
return
$self
->
{
values
}{
perl_version
}
unless
@_
;
my
$version
=
shift
or
die
(
"
Did not provide a value to perl_version()
"
);
# Convert triple-part versions (eg, 5.6.1 or 5.8.9) to
# numbers (eg, 5.006001 or 5.008009).
# Also, convert double-part versions (eg, 5.8)
$version
=~
s/^(\d+)\.(\d+)(?:\.(\d+))?$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/
e
;
$version
=~
s/_.+$//
;
$version
=
$version
+
0
;
# Numify
unless
(
$version
>=
5.005
)
{
die
"
Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)
\n
";
}
$self
->
{
values
}{
perl_version
}
=
$version
;
return
1
;
}
sub
license
{
my
$self
=
shift
;
return
$self
->
{
values
}{
license
}
unless
@_
;
my
$license
=
shift
or
die
(
'
Did not provide a value to license()
'
);
$self
->
{
values
}{
license
}
=
$license
;
# Automatically fill in license URLs
if
(
$license
eq
'
perl
'
)
{
$self
->
resources
(
license
=>
'
http://dev.perl.org/licenses/
'
);
}
return
1
;
}
sub
all_from
{
my
(
$self
,
$file
)
=
@_
;
unless
(
defined
(
$file
)
)
{
my
$name
=
$self
->
name
or
die
"
all_from called with no args without setting name() first
";
my
$name
=
$self
->
name
or
die
(
"
all_from called with no args without setting name() first
"
);
$file
=
join
('
/
',
'
lib
',
split
(
/-/
,
$name
))
.
'
.pm
';
$file
=~
s{.*/}{}
unless
-
e
$file
;
die
"
all_from: cannot find
$file
from
$name
"
unless
-
e
$file
;
unless
(
-
e
$file
)
{
die
("
all_from cannot find
$file
from
$name
");
}
}
unless
(
-
f
$file
)
{
die
("
The path '
$file
' does not exist, or is not a file
");
}
# Some methods pull from POD instead of code.
# If there is a matching .pod, use that instead
my
$pod
=
$file
;
$pod
=~
s/\.pm$/.pod/i
;
$pod
=
$file
unless
-
e
$pod
;
# Pull the different values
$self
->
name_from
(
$file
)
unless
$self
->
name
;
$self
->
version_from
(
$file
)
unless
$self
->
version
;
$self
->
perl_version_from
(
$file
)
unless
$self
->
perl_version
;
$self
->
author_from
(
$pod
)
unless
$self
->
author
;
$self
->
license_from
(
$pod
)
unless
$self
->
license
;
$self
->
abstract_from
(
$pod
)
unless
$self
->
abstract
;
# The remaining probes read from POD sections; if the file
# has an accompanying .pod, use that instead
my
$pod
=
$file
;
if
(
$pod
=~
s/\.pm$/.pod/i
and
-
e
$pod
)
{
$file
=
$pod
;
}
$self
->
author_from
(
$file
)
unless
$self
->
author
;
$self
->
license_from
(
$file
)
unless
$self
->
license
;
$self
->
abstract_from
(
$file
)
unless
$self
->
abstract
;
return
1
;
}
sub
provides
{
...
...
@@ -169,8 +300,8 @@ sub features {
while
(
my
(
$name
,
$mods
)
=
splice
(
@
_
,
0
,
2
)
)
{
$self
->
feature
(
$name
,
@$mods
);
}
return
$self
->
{
values
}
->
{
features
}
?
@
{
$self
->
{
values
}
->
{
features
}
}
return
$self
->
{
values
}{
features
}
?
@
{
$self
->
{
values
}{
features
}
}
:
();
}