diff options
Diffstat (limited to 'system/stow/merge.diff')
-rw-r--r-- | system/stow/merge.diff | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/system/stow/merge.diff b/system/stow/merge.diff deleted file mode 100644 index 1ee166872d..0000000000 --- a/system/stow/merge.diff +++ /dev/null @@ -1,73 +0,0 @@ -Avoid using Hash::Merge. - -stow 2.3.0 added external dependencies on Hash::Merge and Clone::Choose, which -makes bootstrapping awkward. It's not actually using most of Hash::Merge's -features, so replace it with a specialised merge routine. - -diff -x config.guess -x config.log -x config.status -x config.sub -ru tmp/stow-2.3.0/Build.PL work/stow-2.3.0/Build.PL ---- tmp/stow-2.3.0/Build.PL 2019-06-28 23:51:12.000000000 +0100 -+++ work/stow-2.3.0/Build.PL 2019-06-29 12:05:59.195616482 +0100 -@@ -60,8 +60,6 @@ - 'perl' => '5.006', - 'Carp' => 0, - 'IO::File' => 0, -- 'Hash::Merge' => 0, -- 'Clone' => 0, - }, - script_files => [ 'bin/stow', 'bin/chkstow' ], - all_from => 'lib/Stow.pm.in', -diff -x config.guess -x config.log -x config.status -x config.sub -ru tmp/stow-2.3.0/bin/stow.in work/stow-2.3.0/bin/stow.in ---- tmp/stow-2.3.0/bin/stow.in 2019-06-28 23:33:58.000000000 +0100 -+++ work/stow-2.3.0/bin/stow.in 2019-06-29 12:25:50.098558041 +0100 -@@ -457,16 +457,12 @@ - - use POSIX qw(getcwd); - use Getopt::Long qw(GetOptionsFromArray); -+use Scalar::Util qw(reftype); - - @USE_LIB_PMDIR@ - use Stow; - use Stow::Util qw(parent error); - --# Need to avoid Storable backend, since it can't deal with regexps: --# https://rt.perl.org/Public/Bug/Display.html?id=50608 --use Clone::Choose qw(:Clone); --use Hash::Merge qw(merge); -- - my $ProgramName = $0; - $ProgramName =~ s{.*/}{}; - -@@ -530,17 +526,27 @@ - - # Merge .stowrc and command line options. - # Preference is given to cli options. -- # rc options come first in merged arrays. -- # cli options overwrite conflicting rc options. -- Hash::Merge::set_behavior('RIGHT_PRECEDENT'); -- my $options = merge($rc_options, $cli_options); -+ my %options = %$rc_options; -+ foreach my $option (keys %$cli_options) { -+ my $rc_value = $rc_options->{$option}; -+ my $cli_value = $cli_options->{$option}; -+ my $type = reftype($cli_value); -+ -+ if (defined $type && $type eq 'ARRAY' && defined $rc_value) { -+ # rc options come first in merged arrays. -+ $options{$option} = [@{$rc_value}, @{$cli_value}]; -+ } else { -+ # cli options overwrite conflicting rc options. -+ $options{$option} = $cli_value; -+ } -+ } - - # Run checks on the merged options. -- sanitize_path_options($options); -+ sanitize_path_options(\%options); - check_packages($pkgs_to_unstow, $pkgs_to_stow); - - # Return merged and processed options. -- return ($options, $pkgs_to_unstow, $pkgs_to_stow); -+ return (\%options, $pkgs_to_unstow, $pkgs_to_stow); - } - - #===== SUBROUTINE =========================================================== |