#!/usr/bin/perl
eval
{
} or
do
{
die
"error: Missing Module::Build module, cannot proceed.\n"
;
};
if
(-e
'Build.PL.in'
) {
die
"error: This is an in-tree build, not a proper perl distribution.\n"
.
"To create one please configure normally and then run 'make dist'.\n"
;
}
my
$class
= Module::Build->subclass(
class
=>
'Module::Build::Dpkg'
,
code
=>
q{
require Config;
require IPC::Cmd;
sub find_command {
my (@alts) = @_;
foreach my $cmd (@alts) {
my $pathname = IPC::Cmd::can_run($cmd);
return $pathname if defined $pathname;
}
die
"error: cannot find any of @alts\n"
;
}
sub
subst {
my
(
$self
,
$file
) =
@_
;
my
$path
=
$self
->install_path();
my
$version
=
$self
->dist_version();
my
$progmake
= find_command(
qw(gmake make)
);
my
$progpatch
= find_command(
qw(gpatch patch)
);
my
$progtar
= find_command(
qw(gtar tar)
);
unlink
"blib/$file"
or
die
"error: cannot remove blib/$file: $!\n"
;
open
my
$fhin
,
'<'
,
$file
or
die
"error: cannot open $file: $!\n"
;
open
my
$fhout
,
'>'
,
"blib/$file"
or
die
"error: cannot create blib/$file: $!\n"
;
while
(<
$fhin
>) {
s{
our
\
$PROGVERSION
= .*;}{
our
\
$PROGVERSION
=
'$version'
;};
s{
our
\
$PROGMAKE
= .*;}{
our
\
$PROGMAKE
=
'$progmake'
;};
s{
our
\
$PROGPATCH
= .*;}{
our
\
$PROGPATCH
=
'$progpatch'
;};
s{
our
\
$PROGTAR
= .*;}{
our
\
$PROGTAR
=
'$progtar'
;};
s{
our
\
$CONFDIR
= .*;}{
our
\
$CONFDIR
=
'$path->{conf}'
;};
s{
our
\
$DATADIR
= .*;}{
our
\
$DATADIR
=
'$path->{data}'
;};
s{
our
\
$ADMINDIR
= .*;}{
our
\
$ADMINDIR
=
'$path->{admin}'
;};
s{
our
\
$LIBDIR
= .*;}{
our
\
$LIBDIR
=
'$path->{libexec}'
;};
print
{
$fhout
}
$_
;
}
close
$fhout
or
die
"error: cannot write blib/$file: $!\n"
;
close
$fhin
;
}
sub
ACTION_build {
my
$self
=
shift
;
$self
->SUPER::ACTION_build;
$self
->subst(
'lib/Dpkg.pm'
);
}
sub
ACTION_test {
my
$self
=
shift
;
local
$ENV
{LC_ALL} =
'C'
;
local
$ENV
{PERL} =
$Config::Config
{perlpath} || $^X ||
'perl'
;
local
$ENV
{DPKG_TEST_MODE} =
'cpan'
;
local
$ENV
{DPKG_DATADIR} =
'data'
;
local
$ENV
{DPKG_ORIGINS_DIR} =
't/origins'
;
local
$ENV
{DEB_BUILD_ARCH} =
'amd64'
;
$self
->SUPER::ACTION_test;
}
},
);
my
$build
=
$class
->new(
dist_name
=>
'Dpkg'
,
dist_abstract
=>
'Debian Package Manager Perl modules'
,
dist_version
=>
'1.22.18'
,
dist_author
=>
'Dpkg Developers <debian-dpkg@lists.debian.org>'
,
license
=>
'GPL_2'
,
release_status
=> 1 ?
'stable'
:
'testing'
,
module_name
=>
'Dpkg'
,
meta_merge
=> {
'meta-spec'
=> {
version
=> 2,
},
prereqs
=> {
configure
=> {
recommends
=> {
'Module::Signature'
=> 0,
},
},
test
=> {
recommends
=> {
'Test::Pod'
=> 0,
'Test::Strict'
=> 0,
},
},
develop
=> {
recommends
=> {
'Test::MinimumVersion'
=> 0,
'Test::Perl::Critic'
=> 0,
'Test::Pod::Coverage'
=> 0,
'Test::Spelling'
=> 0,
'Test::Synopsis'
=> 0,
},
},
},
resources
=> {
repository
=> {
type
=>
'git'
,
},
bugtracker
=> {
},
},
keywords
=> [
qw(dpkg debian perl)
],
},
sign
=> 1,
dynamic_config
=> 0,
configure_requires
=> {
'Module::Build'
=>
'0.4004'
,
},
test_requires
=> {
'TAP::Harness'
=> 0,
'Test::More'
=> 0,
},
recommends
=> {
'Algorithm::Merge'
=> 0,
'File::FcntlLock'
=> 0,
'Locale::gettext'
=> 0,
},
requires
=> {
'perl'
=>
'5.32.1'
,
},
data_files
=> {
map
{
$_
=>
$_
}
glob
'data/*'
},
install_path
=> {
conf
=>
'/etc/dpkg'
,
data
=>
'/usr/share/dpkg'
,
admin
=>
'/var/lib/dpkg'
,
libexec
=>
'/usr/lib/dpkg'
,
},
);
$build
->add_build_element(
'data'
);
$build
->create_build_script();