summaryrefslogtreecommitdiff
path: root/new-infra/read-tpm-dump-tpl.pl
diff options
context:
space:
mode:
Diffstat (limited to 'new-infra/read-tpm-dump-tpl.pl')
-rwxr-xr-xnew-infra/read-tpm-dump-tpl.pl307
1 files changed, 307 insertions, 0 deletions
diff --git a/new-infra/read-tpm-dump-tpl.pl b/new-infra/read-tpm-dump-tpl.pl
new file mode 100755
index 00000000000..892b40a4529
--- /dev/null
+++ b/new-infra/read-tpm-dump-tpl.pl
@@ -0,0 +1,307 @@
+#!/usr/bin/perl
+#
+# tpm2deb-source.pl
+# machinery to create debian packages from TeX Live depot
+# (c) 2005, 2006 Norbert Preining
+#
+# $Id: tpm2deb-source.pl 2691 2007-04-16 09:42:22Z frank $
+#
+# configuration is done via the file tpm2deb.cfg
+#
+
+use strict;
+no strict 'refs';
+# use warnings;
+# no warnings 'uninitialized';
+
+my $opt_master;
+our $opt_debug;
+our $opt_nosrcpkg;
+our $opt_noremove;
+my $globalreclevel;
+my $oldsrcdir;
+my $datadump ;
+
+BEGIN {
+ my $upstream_modules = "/usr/share/tex-common/";
+ unshift (@INC, "./all/debian");
+ unshift (@INC, $upstream_modules);
+}
+
+my ($mydir,$mmydir);
+($mydir = $0) =~ s,/[^/]*$,,;
+if ($mydir eq $0) { $mydir = `pwd` ; chomp($mydir); }
+if (!($mydir =~ m,/.*,,)) { $mmydir = `pwd`; chomp($mmydir); $mydir = "$mmydir/$mydir" ; }
+
+
+# $opt_master = "./LocalTPM";
+$opt_debug = 0;
+$opt_nosrcpkg = 0;
+$opt_noremove = 0;
+$globalreclevel = 1;
+$oldsrcdir = "./src";
+$datadump = "tpm.data";
+
+use Getopt::Long;
+# use Data::Dumper;
+
+#use Strict;
+use File::Basename;
+use File::Copy;
+use File::Path;
+use File::Temp qw/ tempfile tempdir /;
+use Storable;
+## not needed, atm we are calling eperl binary use Parse::ePerl;
+#use XML::DOM;
+use Cwd;
+#use FileUtils qw(canon_dir cleandir make_link newpath member
+# normalize substitute_var_val dirname diff_list remove_list
+# rec_rmdir sync_dir walk_dir start_redirection stop_redirection);
+#use Tpm;
+#
+# Configuration for destination of files
+# DONT USER DOUBLE QUOTES; THESE VARIABLES HAVE TO GET REEVALUATED
+# AFTER $tmpdir IS SET!!
+#
+my $changelog = "";
+my $changelogversion = "";
+my $changelogextraversion = "";
+my $changelogrevision = "";
+my $changelogdistribution = "";
+my $allowed_dists = "(unstable|UNRELEASED|sarge-backports|etch-backports|stable-security|experimental)";
+
+
+our $Master;
+our %TpmData;
+
+$Master = `pwd`;
+chomp($Master);
+my $TpmGlobalPath = $Master;
+my $DataGlobalPath = $Master;
+
+unshift (@INC, "$Master/../Build/tools");
+File::Basename::fileparse_set_fstype('unix');
+
+
+use Getopt::Long;
+use File::Basename;
+use File::Copy;
+use File::Path;
+use File::Temp qw/ tempfile tempdir /;
+use Storable;
+use Cwd;
+use Tpm;
+
+our (%TeXLive);
+our (%Config,%TpmData);
+our %TexmfTreeOfType = ( "TLCore" => "texmf",
+ "Documentation" => "texmf-doc",
+ "Package" => "texmf-dist");
+our @TpmCategories = keys %TexmfTreeOfType;
+our %TypeOfTexmfTree = reverse %TexmfTreeOfType;
+
+# pre set $opt_master to ./LocalTPM which contains also the Tools dir
+# this is set in the main script, and changed with commandline option.
+# should it maybe be deleted here?
+
+my $opt_debug;
+my $opt_onlyscripts;
+
+sub populate_TpmData_from_dump {
+ my $datafile = $_[0];
+ my $tpmdataref = retrieve($datafile);
+ %TpmData = %{$tpmdataref};
+}
+
+sub load_collection_tpm_data {
+ # local functions
+ sub trim {
+ my ($str) = @_;
+ $str =~ s/^[\n\s]+//;
+ $str =~ s/[\n\s]+$//;
+ return $str;
+ }
+ sub get_requires {
+ my ($tpm,$type) = @_;
+ my %requires = $tpm->getHash("Requires");
+ my @keylist = keys %requires;
+ my @tlcorereqlist = ();
+ my @packagereqlist = ();
+ if ($type eq '') {
+ $type = "all";
+ }
+ foreach my $k (keys %requires) {
+ foreach my $e (@{$requires{$k}}) {
+ # manually exclude Windows-only packages
+ if ($e eq "bin-bzip2") {}
+ elsif ($e eq "bin-xpdf") {}
+ elsif ($e eq "bin-chktex") {}
+ elsif ($e eq "bin-ghostscript") {}
+ elsif ($e eq "bin-gzip") {}
+ elsif ($e eq "bin-jpeg2ps") {}
+ elsif ($e eq "bin-perl") {}
+ elsif ($e eq "bin-windvi") {}
+ elsif ($e eq "lib-freetype2") {}
+ elsif ($e eq "lib-gd") {}
+ elsif ($e eq "lib-geturl") {}
+ elsif ($e eq "lib-gnu") {}
+ elsif ($e eq "lib-gs") {}
+ elsif ($e eq "lib-jpeg") {}
+ elsif ($e eq "lib-md5") {}
+ elsif ($e eq "lib-png") {}
+ elsif ($e eq "lib-regex") {}
+ elsif ($e eq "lib-texmfmp") {}
+ elsif ($e eq "lib-tiff") {}
+ elsif ($e eq "lib-ttf") {}
+ elsif ($e eq "lib-xpdf") {}
+ elsif ($e eq "lib-xpm") {}
+ elsif ($e eq "lib-zlib") {}
+ elsif ($e =~ /^bin-(.*)$/) {
+ push @packagereqlist, "$k/$e";
+ }
+ elsif ($e =~ /^hyphen-(.*)$/){
+ push @packagereqlist, "$k/$e";
+ }
+ elsif ($k eq "TLCore") {
+ push @tlcorereqlist, "$k/$e";
+ } else {
+ push @packagereqlist, "$k/$e";
+ }
+ }
+ }
+ if ($type eq '' || $type eq 'all') {
+ my %foo;
+ $foo{'TLCore'} = \@tlcorereqlist;
+ $foo{'Package'} = \@packagereqlist;
+ #my @foo=(@tlcorereqlist,@packagereqlist);
+ #return(@foo);
+ return(\%foo);
+ } elsif ($type eq 'TLCore') {
+ return(@tlcorereqlist);
+ } elsif ($type eq 'Package') {
+ return(@packagereqlist);
+ } else {
+ die("Don't know this type: $type!\n");
+ }
+ }
+ # start of real function
+ print "Start loading tpm data ... \n";
+ foreach my $t ('TLCore', 'Documentation', 'Package') {
+ my $subtree = ${TexmfTreeOfType}{$t};
+ foreach my $f (<$Master/$subtree/tpm/*.tpm>) {
+ print "Working on $f\n";
+ my $shortn = basename($f);
+ $shortn =~ s,\.tpm$,,;
+ if (($t eq 'TLCore') && ($shortn =~ m/^scheme-/)) { next ; }
+ my $tpm = Tpm->new("$subtree/tpm/$shortn.tpm");
+ $TpmData{$t}{$shortn}{'BinFiles'} = [ $tpm->getFileList("BinFiles") ];
+ $TpmData{$t}{$shortn}{'DocFiles'} = [ $tpm->getFileList("DocFiles") ];
+ $TpmData{$t}{$shortn}{'RunFiles'} = [ $tpm->getFileList("RunFiles") ];
+ $TpmData{$t}{$shortn}{'SourceFiles'} = [ $tpm->getFileList("SourceFiles") ];
+ $TpmData{$t}{$shortn}{'RemoteFiles'} = [ $tpm->getFileList("RemoteFiles") ];
+ $TpmData{$t}{$shortn}{'Title'} = trim($tpm->getAttribute("Title"));
+ # print "got title $TpmData{$t}{$shortn}{'Title'}\n";
+ $TpmData{$t}{$shortn}{'Description'} = trim($tpm->getAttribute("Description"));
+ $TpmData{$t}{$shortn}{'License'} = trim($tpm->getAttribute("License"));
+ my @foo = $tpm->getList("Installation");
+ $TpmData{$t}{$shortn}{'Installation'} = \@foo ;
+ my $alldeps = get_requires($tpm,'all');
+ my @incs = @{$alldeps->{'Package'}};
+ my @deps = @{$alldeps->{'TLCore'}};
+ $TpmData{$t}{$shortn}{'Package'} = \@incs;
+ $TpmData{$t}{$shortn}{'TLCore'} = \@deps;
+ }
+ }
+ print " ... done\n";
+}
+
+sub dump_tpm_data {
+ print "Dumping TpmData\n\n";
+ #foreach my $t ('TLCore', 'Documentation', 'Package') {
+ foreach my $t ('Package') {
+ print "Dumping $t:\n";
+ my %foo = %{$TpmData{$t}};
+ foreach my $p (keys %foo) {
+ open (FOO,">tlptpm/$p.tlp") || die("Cannot open tlptpm/$p.tpmtlp!");
+ print FOO "name $p\n";
+ foreach my $foo (@{$TpmData{$t}{$p}{'Package'}}) {
+ print FOO "depend $foo\n";
+ }
+ foreach my $ex (@{$TpmData{$t}{$p}{'Installation'}}) {
+ my %foo = %{$ex};
+ print FOO "execute $foo{'function'} $foo{'mode'} $foo{'parameter'}\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'TLCore'}}) {
+ print FOO "depend $foo\n";
+ }
+ my @foo;
+ @foo = @{$TpmData{$t}{$p}{'DocFiles'}};
+ if ($#foo >= 0) {
+ print FOO "docfiles\n";
+ foreach my $foo (sort @foo) {
+ print FOO " $foo\n";
+ }
+ }
+ @foo = @{$TpmData{$t}{$p}{'SourceFiles'}};
+ if ($#foo >= 0) {
+ print FOO "srcfiles\n";
+ foreach my $foo (sort @foo) {
+ print FOO " $foo\n";
+ }
+ }
+ @foo = @{$TpmData{$t}{$p}{'BinFiles'}};
+ if ($#foo >= 0) {
+ print FOO "binfiles\n";
+ foreach my $foo (sort @foo) {
+ print FOO " $foo\n";
+ }
+ }
+ @foo = @{$TpmData{$t}{$p}{'RunFiles'}};
+ if ($#foo >= 1) {
+ print FOO "runfiles\n";
+ foreach my $foo (sort @foo) {
+ if ($foo =~ /.*\.tpm$/) { next; }
+ print FOO " $foo\n";
+ }
+ }
+ @foo = @{$TpmData{$t}{$p}{'RemoteFiles'}};
+ if ($#foo >= 0) {
+ print FOO "remotefiles\n";
+ foreach my $foo (sort @foo) {
+ print FOO " $foo\n";
+ }
+ }
+ close(FOO);
+ }
+ }
+}
+
+
+&main(@ARGV);
+
+1;
+
+# variables needed outside of main
+my $version;
+my $revision;
+my $extraversion;
+my $date;
+my $arch;
+my $shortl;
+
+sub main {
+ ${Tpm::MasterDir} = $TeXLive{'all'}{'tpm_global_path'};
+ $arch = "all";
+ ${Tpm::CurrentArch} = "i386-linux";
+ ${Tpm::MasterDir} = $Master;
+ load_collection_tpm_data();
+ dump_tpm_data();
+}
+
+
+### Local Variables:
+### perl-indent-level: 4
+### tab-width: 4
+### indent-tabs-mode: t
+### End:
+# vim:set tabstop=4: #