9ce10eb3b1
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
102 lines
3.3 KiB
Perl
102 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();
|