[subversion-commit] SVN tetex-base commit + diffs: r1108 - tetex-base/trunk/debian

Frank Küster frank at costa.debian.org
Fri Mar 24 17:24:51 UTC 2006


Author: frank
Date: 2006-03-24 17:24:50 +0000 (Fri, 24 Mar 2006)
New Revision: 1108

Modified:
   tetex-base/trunk/debian/tpm2licenses-new.pl
Log:
tpm2licenses-new.pl now also works for texlive (and still for tetex, yeah!)

Modified: tetex-base/trunk/debian/tpm2licenses-new.pl
===================================================================
--- tetex-base/trunk/debian/tpm2licenses-new.pl	2006-03-24 09:18:01 UTC (rev 1107)
+++ tetex-base/trunk/debian/tpm2licenses-new.pl	2006-03-24 17:24:50 UTC (rev 1108)
@@ -73,7 +73,7 @@
     die "Unknown Debian package: $debian_package." unless
 	( $debian_package =~ /^tetex-base$/ || 
 	  $debian_package =~ /^tetex-src$/  ||
-	  $debian_package =~ /^texlive$/ );
+	  $debian_package =~ /^texlive-base$/ );
 };
 
 my $TpmGlobalPath = $Master;
@@ -146,6 +146,9 @@
 chdir($startdir);
 File::Basename::fileparse_set_fstype('unix');
 
+my @TpmList;
+create_tpmlist();
+
 list_licenses();
 
 1;
@@ -157,9 +160,46 @@
 my $node;
 my $printfiles = '';
 
+sub create_tpmlist {
 
+  if 	( $debian_package =~ /^tetex-/ ) {
+    foreach (<$TpmDirGlob >) {push(@TpmList,$_)};
+  };
+
+  if 	( $debian_package =~ /^texlive-/ ) {
+    my $cfgfile = "../../" . $debian_package . ".tpm4licenses.cfg";
+    my @cfgLines;
+    open CFGFILE, $cfgfile;
+    while (<CFGFILE>) {
+      # this could go into one line (next if...) if only Emacs would grok it...
+      if (m/^#/) { 
+	  next ; 
+	}
+      chomp;
+      push(@cfgLines,$_);
+    };
+    for (@cfgLines) {
+      my $tpmFullname;
+      if ( -f "texmf/tpm/" . $_ ) {
+	$tpmFullname = "texmf/tpm/" . $_
+      }
+      elsif ( -f "texmf-dist/tpm/" . $_ ) {
+	$tpmFullname = "texmf-dist/tpm/" . $_
+      }
+      elsif ( -f "texmf-doc/tpm/" . $_ ) {
+	$tpmFullname = "texmf-doc/tpm/" . $_
+      }
+      else {
+	print STDERR "Could not find $_\n";
+	exit 1;
+      };
+      push(@TpmList,$tpmFullname);
+    };
+  }; #end texlive
+};
+
 sub list_licenses {
-   foreach $LocalTPM (<$TpmDirGlob >) {
+   foreach $LocalTPM (@TpmList) {
       $licline = "";
       $bn = &basename($LocalTPM,".tpm");
       if (defined($Tpm2Catalogue{$bn})) {
@@ -246,38 +286,56 @@
     my @DocFiles = split(/\n/m,$DocFiles{"text"});
 
     for ($debian_package) {
-	if ( /^texlive$/ ) { 1 };
+      my @texmfPath;
+	if ( /^texlive/ ) { 
+	  @texmfPath = ("texmf","texmf-dist","texmf-doc");
+	  foreach ($RunFiles{"text"}, $DocFiles{"text"}, $SourceFiles{"text"}) {
+		my @filelist = split(/\n/m,$_);
+		next if (! @filelist);
+		foreach (@filelist) {CheckFileExistence($_,\@texmfPath)};
+	    };
+
+	    MergeDirectories(\@RunFiles,\@texmfPath);
+	    MergeDirectories(\@DocFiles,\@texmfPath) if (@DocFiles);
+	    MergeDirectories(\@SourceFiles,\@texmfPath) if (@SourceFiles);
+	    print $pkg_header . "\n @RunFiles @DocFiles @SourceFiles";
+	};
 	if ( /^tetex-base$/ ) {
+   	    @texmfPath = (".");
 	    foreach ($RunFiles{"text"}, $DocFiles{"text"}) {
 		my @filelist = split(/\n/m,$_);
 		next if (! @filelist);
-		foreach (@filelist) {CheckFileExistence($_)};
+		foreach (@filelist) {CheckFileExistence($_,\@texmfPath)};
 	    };
 
-	    MergeDirectories(\@RunFiles);
-	    MergeDirectories(\@DocFiles) if (@DocFiles);
+	    MergeDirectories(\@RunFiles,\@texmfPath);
+	    MergeDirectories(\@DocFiles,\@texmfPath) if (@DocFiles);
 	    print $pkg_header . "\n @RunFiles @DocFiles";
 	};
 	if ( /^tetex-src$/ ) {
-	    foreach (\$SourceFiles{"text"}) {
-		my @filelist = split(/\n/m,${$_});
-		foreach (@filelist) {CheckFileExistence($_)};
+   	    @texmfPath = (".");
+	    foreach ($SourceFiles{"text"}) {
+		my @filelist = split(/\n/m,$_);
+		foreach (@filelist) {CheckFileExistence($_,\@texmfPath)};
 	    };
 
-	    MergeDirectories(\@SourceFiles);
+	    MergeDirectories(\@SourceFiles,\@texmfPath);
 	    print $pkg_header . "\n @SourceFiles \n" unless (! @SourceFiles);
 	};
     };
 }
 
 sub CheckFileExistence {
-    my $file = $_[0];
-    $file =~ s@^source@${sourceDir}source@;
-    print STDERR "$file: Does not exist!\n" if ! -f $file;
+    my ($file, at texmfPath) = ($_[0],@{$_[1]});
+    my $found = 0;
+    foreach my $texmfDir (@texmfPath) {
+      -f $texmfDir . "/" . $file && ($found =1);
+    };
+    print STDERR "$file: Does not exist!\n" if ! $found;
 }
 
 sub MergeDirectories {
-    my $filelist = $_[0]; # $filelist is actually a pointer
+    my ($filelist, at texmfPath) = ($_[0],@{$_[1]}); # $filelist is actually a pointer
     
     # create a list of dirnames, and remove duplicates
     my @dirnames = map {dirname($_) } @{$filelist};
@@ -288,31 +346,40 @@
     my %SearchHash;
     %SearchHash = map { $_, 1 } @{$filelist} ;
 
-
     my %DirComplete = map { $_, 1 } @dirnames;
     for (@dirnames) {
 	my $dirname = $_;
-	my @InstalledFiles = `find $dirname -maxdepth 1 -type f | grep -v tetex` 
-	    or die "calling find to find installed files failed.";
+	my $fullDir;
+	my $rootDir;
+	for (@texmfPath) {
+	  if ( -d ( $_ . "/" . $dirname )) { 
+	    $rootDir = $_;
+	    $fullDir =  ( $_ . "/" . $dirname );
+	  };
+	};
+	$fullDir or die "This should not happen: no directory $dirname, nowhere.";
+	my  @InstalledFiles = `find $fullDir -maxdepth 1 -type f 2>/dev/null | grep -v tetex` 
+	      or die "Calling find for $dirname, expanded to $fullDir, failed.";
 	for (@InstalledFiles) {
-	    chomp;
-	    $DirComplete{$dirname} = 0 unless $SearchHash{$_};
+	  chomp;
+	  s@^$rootDir/@@;
+	  $DirComplete{$dirname} = 0 unless $SearchHash{$_};
 	};
 	if ( $DirComplete{$dirname} ) {
-	    for (@{$filelist} ) {
-		# replace the file by its directory name
-		s@$dirname/.*@$dirname/*@;
-	    };
+	  for (@{$filelist} ) {
+	    # replace the file by its directory name
+	    s@$dirname/.*@$dirname/*@;
+	  };
 	};
 # 	print STDERR "Directory $_ is $DirComplete{$dirname}\n";
-    };
+      };
 
     # now the complete directories occur multiple times, remove duplicates again
     %UniqueHash = map { ("$_\n" , 1) } @{$filelist} ;
     @{$filelist} = keys %UniqueHash;
+    
+  }
 
-}
-
 #   foreach $LocalTPM (<./texmf-doc/tpm/*.tpm>) {
 #      my $dat = $parser->parsefile($LocalTPM);
 #      if (defined($dat->getElementsByTagName("TPM:License")) &&




More information about the Pkg-tetex-commits mailing list