diff options
author | Nicholas Clark <nick@ccl4.org> | 2011-12-17 11:32:54 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2011-12-19 13:55:19 +0100 |
commit | 449e2f794bd454dce291b0a7192232fe882f1318 (patch) | |
tree | 0d41532afaf6eda2ab0259f0cc446be3fafc7a68 /Porting/pod_lib.pl | |
parent | 524b493266cc54d7a692b52997e57235d9fdeabe (diff) | |
download | perl-449e2f794bd454dce291b0a7192232fe882f1318.tar.gz |
Move the pod de-duplication logic from buildtoc to pod_lib.pl
is_duplicate_pod() moves. register_duplicate_pod() can be inlined into
get_pod_metadata().
Diffstat (limited to 'Porting/pod_lib.pl')
-rw-r--r-- | Porting/pod_lib.pl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Porting/pod_lib.pl b/Porting/pod_lib.pl index 25e33d58bc..3676953db6 100644 --- a/Porting/pod_lib.pl +++ b/Porting/pod_lib.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl -w use strict; +use Digest::MD5 'md5'; # make it clearer when we haven't run to completion, as we can be quite # noisy when things are working ok @@ -36,6 +37,16 @@ sub write_or_die { close $fh or die "Can't close $filename: $!"; } +my (%Lengths, %MD5s); + +sub is_duplicate_pod { + my $file = shift; + # We are a file in lib. Are we a duplicate? + # Don't bother calculating the MD5 if there's no interesting file of + # this length. + return $Lengths{-s $file} && $MD5s{md5(slurp_or_die($file))}; +} + sub get_pod_metadata { # Do we expect to find generated pods on disk? my $permit_missing_generated = shift; @@ -116,6 +127,15 @@ sub get_pod_metadata { } my_die "Unknown flag found in section line: $_" if length $flags; my ($leafname) = $podname =~ m!([^/]+)$!; + + if ($leafname ne $podname) { + # We are a dual-life perl*.pod file, which will have be copied + # to lib/ by the build process, and hence also found there. + # These are the only pod files that might become duplicated. + ++$Lengths{-s $filename}; + ++$MD5s{md5(slurp_or_die($filename))}; + } + push @{$state{master}}, [\%flags, $podname, $filename, $desc, $leafname]; } elsif (/^$/) { |