stow/Build.PL
Adam Spiers 9ce10eb3b1 Remove dependencies on Hash::Merge and Clone::Choose
stow 2.3.0 added external runtime dependencies on Hash::Merge and
Clone::Choose. Historically stow hasn't had runtime dependencies other
than Perl itself, which is a useful property if you're managing the
installation of Perl using stow; the bootstrapping instructions in
stow's manual would need updating to describe how to install these two
modules (and any dependencies they have now or in the future) as well.

However, Hash::Merge is much more general than stow actually needs, so
replace the merge() call with a few lines of equivalent code -- this
avoids the external dependencies, and is clearer than the merge()
call.

Many thanks to Adam Sampson for this patch:

https://lists.gnu.org/archive/html/bug-stow/2019-06/msg00001.html
2019-06-29 13:42:19 +01:00

103 lines
3.3 KiB
Perl

# This file is part of GNU Stow.
#
# GNU Stow is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GNU Stow is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see https://www.gnu.org/licenses/.
use strict;
use warnings;
use Module::Build;
# These are required by the test suite.
use lib "t";
use lib "bin";
my $build = Module::Build->new(
module_name => 'Stow',
keywords => [ qw/stow symlink software package management install/ ],
license => 'gpl',
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
# https://rt.cpan.org/Ticket/Display.html?id=71502
# 'meta-spec' => {
# version => '2.0',
# url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec',
# },
meta_add => {
resources => {
license => 'http://www.gnu.org/licenses/gpl-2.0.html' ,
homepage => 'https://savannah.gnu.org/projects/stow',
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
# https://rt.cpan.org/Ticket/Display.html?id=71502
# bugtracker => {
# web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Stow',
# mailto => 'stow-devel@gnu.org',
# },
#bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Stow',
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
# https://rt.cpan.org/Ticket/Display.html?id=71502
# repository => {
# url => 'git://git.savannah.gnu.org/stow.git',
# web => 'https://savannah.gnu.org/git/?group=stow',
# type => 'git',
# },
repository => 'git://git.savannah.gnu.org/stow.git',
},
},
requires => {
'perl' => '5.006',
'Carp' => 0,
'IO::File' => 0,
},
script_files => [ 'bin/stow', 'bin/chkstow' ],
all_from => 'lib/Stow.pm.in',
configure_requires => {
'Module::Build' => 0,
},
build_requires => {
'Test::More' => 0,
'Test::Output' => 0,
'IO::Scalar' => 0,
},
);
if (system('grep', '-q', '^use lib ', 'bin/stow') >> 8 == 0) {
die <<'EOF';
ERROR: bin/stow contains 'use lib' line which could interfere
with CPAN-style installation via Module::Build. To avoid this,
you should run ./configure with parameters which result in
--with-pmdir's value being in Perl's built-in @INC, and then run
'make' (NOT 'make install') to regenerate bin/stow, e.g.
eval `perl -V:siteprefix`
./configure --prefix=$siteprefix && make
or
./configure --with-pmdir=`PERL5LIB= perl -le 'print $INC[0]'` && make
Then re-run this script.
Note that these parameters are chosen purely to regenerate
bin/stow without a 'use lib' line, so don't run 'make install'
while Stow is configured in this way unless you really want an
installation using these parameters.
EOF
}
$build->create_build_script();