[projects/distfiles] move reading 'sources' file to separate sub
glen
glen at pld-linux.org
Mon Dec 3 15:11:46 CET 2012
commit 1db641df2385f84ad613ef1ce09f63259c80fc1d
Author: Elan Ruusamäe <glen at delfi.ee>
Date: Mon Dec 3 16:11:34 2012 +0200
move reading 'sources' file to separate sub
specparser.pl | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
---
diff --git a/specparser.pl b/specparser.pl
index 1709c8e..e865609 100755
--- a/specparser.pl
+++ b/specparser.pl
@@ -20,7 +20,7 @@ my $spec;
my $base_spec;
my @spec;
my @sources;
-my $sources;
+my $sources_file;
my %patchset;
sub print_source($$$);
@@ -137,18 +137,28 @@ sub preparse_spec($) # {{{
shift @spec;
} # }}}
-sub process_patchset($) {
- my $macros = shift;
- return unless %patchset or $sources;
+# read in 'sources' file
+sub read_sources_file() {
+ return () unless $sources_file and -e $sources_file;
- # parse sources file
- my %files;
- open(my $fh, '<', $sources) or die $!;
+ our %files;
+ return \%files if %files;
+
+ open(my $fh, '<', $sources_file) or die $!;
while (<$fh>) {
chomp;
next unless my ($hash, $filename) = /^([a-f0-9]{32})\s+\*?(.+)$/;
$files{$filename} = $hash;
}
+ return \%files;
+}
+
+sub process_patchset($) {
+ my $macros = shift;
+ return unless %patchset;
+
+ # parse sources file
+ my $checksums = read_sources_file() or return;
# print out patchset entries which source md5 is present in source file
my $start = expand($patchset{start}, $macros);
@@ -157,7 +167,7 @@ sub process_patchset($) {
for (my $i = $start; $i <= $end; $i++) {
my $url = sprintf($pattern, $i);
my ($basename) = $url =~ m{/([^/]+$)};
- my $hash = $files{$basename} or next;
+ my $hash = $checksums->{$basename} or next;
print_source "patchset $i", $hash, $url;
}
}
@@ -314,8 +324,7 @@ sub add_md5_to_print($) # {{{
} # }}}
next_spec(shift);
-$sources = shift if @ARGV;
-undef $sources if $sources and not -e $sources;
+$sources_file = shift if @ARGV;
preparse_spec($spec);
add_md5_to_print($spec);
cont( \@spec, { "nil" => "" } );
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/projects/distfiles.git/commitdiff/1db641df2385f84ad613ef1ce09f63259c80fc1d
More information about the pld-cvs-commit
mailing list