[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