From 53624bcd2bbc6fd91c7a487b0703ddf427e312de Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Fri, 17 Jan 2020 00:27:01 +0100 Subject: switch from md5sum to Digest::MD5 performance & memory usage are similar It helps gaining support on more platforms for CPAN testers, especially for urpmi This show that maybe creating an helper in a support module wouldn't hurt... --- Makefile.PL | 1 + NEWS | 2 ++ gendistrib | 16 ++++++++++++---- genhdlist2 | 12 +++++++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 69938ba..a5a0053 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -37,6 +37,7 @@ WriteMakefile( INC => '', LIBS => [ '' ], PREREQ_PM => { + 'Digest::MD5' => '0', 'ExtUtils::MakeMaker' => '0', 'Getopt::Long' => '0', 'List::Util' => '1.33', diff --git a/NEWS b/NEWS index 3e45abf..cae65a2 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +- switch from md5sum to Digest::MD5 thus improving urpmi test coverage + Version 7.11 - 13 January 2020, by Thierry Vignaud - cpan_testers: diff --git a/gendistrib b/gendistrib index 52766ca..e045750 100755 --- a/gendistrib +++ b/gendistrib @@ -3,6 +3,7 @@ (our $VERSION) = q(Id: gendistrib 20724 2006-11-30 13:13:27Z rafael ) =~ /(\d+)/; use strict; +use Cwd; use MDV::Distribconf::Build; use Getopt::Long; @@ -184,11 +185,18 @@ if (grep { !$_->{noneedrebuild} } @hdlists) { # this MD5SUM is mostly obsolete, but is still needed up to 2007.1 # (and even on cooker for existing urpmi.cfg) require File::Glob; - my $md5sum1 = `cd $destinfodir ; /usr/bin/md5sum hdlist_*` if glob("$destinfodir/hdlist_*"); - my $md5sum2 = `cd $destinfodir ; /usr/bin/md5sum synthesis*` if glob("$destinfodir/synthesis*"); + require Digest::MD5; + my $md5sum; + my $cwd = getcwd(); + chdir($destinfodir); + foreach my $fn (glob("hdlist_*"), glob("synthesis*")) { + open(my $fh, '<', $fn) or die "Can't open '$fn': $!"; + binmode($fh); + $md5sum .= Digest::MD5->new->addfile($fh)->hexdigest . " $fn\n"; + } + chdir($cwd); open my $md5sumfh, '>', "$destinfodir/MD5SUM" or die "Can't create $destinfodir/MD5SUM: $!\n"; - print $md5sumfh $md5sum1 if $md5sum1; - print $md5sumfh $md5sum2 if $md5sum2; + print $md5sumfh $md5sum if $md5sum; } print STDERR "Calculating size of medias\n" unless $nooutput; diff --git a/genhdlist2 b/genhdlist2 index c7b98d3..04c95b7 100755 --- a/genhdlist2 +++ b/genhdlist2 @@ -2,6 +2,7 @@ our ($VERSION) = q(Id: genhdlist2 20460 2006-11-23 13:19:11Z pixel ) =~ /(\d+\.\d+)/; +use Cwd; use URPM; use List::Util 'any'; use MDV::Packdrakeng; @@ -427,8 +428,17 @@ sub generate_versioned_media_info { sub generate_md5sum { my ($media_info_dir, $media_info_files) = @_; + require Digest::MD5; print "updating $media_info_dir/MD5SUM\n" if $verbose >= 0; - my $m = `cd '$media_info_dir' ; /usr/bin/md5sum @$media_info_files`; + my $cwd = getcwd(); + chdir($media_info_dir); + my $m; + foreach my $fn (@$media_info_files) { + open(my $fh, '<', $fn) or die "Can't open '$fn': $!"; + binmode($fh); + $m .= Digest::MD5->new->addfile($fh)->hexdigest . " $fn\n"; + } + chdir($cwd); unlink "$media_info_dir/MD5SUM"; # ensure no hard link is used open(my $f, '>', "$media_info_dir/MD5SUM") or die "Can't write MD5SUM: $!\n"; print $f $m; -- cgit v1.2.1