summaryrefslogtreecommitdiff
path: root/Master/tlpkg/archive/create-tlsrc-from-tpm.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/archive/create-tlsrc-from-tpm.pl')
-rwxr-xr-xMaster/tlpkg/archive/create-tlsrc-from-tpm.pl326
1 files changed, 326 insertions, 0 deletions
diff --git a/Master/tlpkg/archive/create-tlsrc-from-tpm.pl b/Master/tlpkg/archive/create-tlsrc-from-tpm.pl
new file mode 100755
index 00000000000..08d8fb8bc3c
--- /dev/null
+++ b/Master/tlpkg/archive/create-tlsrc-from-tpm.pl
@@ -0,0 +1,326 @@
+#!/usr/bin/env 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 $_tmp;
+
+my $opt_master;
+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";
+my $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;
+
+$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_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 ($shortn !~ m/^scheme-/) { next ; }
+ my $tpm = Tpm->new("$subtree/tpm/$shortn.tpm");
+ $TpmData{$t}{$shortn}{'BinPatterns'} = [ $tpm->getList("BinPatterns") ];
+ $TpmData{$t}{$shortn}{'DocPatterns'} = [ $tpm->getList("DocPatterns") ];
+ $TpmData{$t}{$shortn}{'RunPatterns'} = [ $tpm->getList("RunPatterns") ];
+ $TpmData{$t}{$shortn}{'SourcePatterns'} = [ $tpm->getList("SourcePatterns") ];
+ $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 create_tlsrc_files {
+ print "Creating tlsrc files TpmData\n\n";
+ #foreach my $t ('TLCore', 'Documentation', 'Package') {
+ foreach my $t ('TLCore', 'Documentation') {
+ print "Creating tlsrc for $t:\n";
+ my %foo = %{$TpmData{$t}};
+ foreach my $p (keys %foo) {
+ open (FOO,">tlsrc/$p.tlsrc") || die("Cannot open tlsrc/$p.tlsrc!");
+ print FOO "name $p\n";
+ print FOO "category $t\n";
+ if ($TpmData{$t}{$p}{'Title'} !~ /^[[:space:]]*$/) {
+ print FOO "shortdesc $TpmData{$t}{$p}{'Title'}\n";
+ }
+ $_tmp = "$TpmData{$t}{$p}{'Description'}";
+ if (defined($_tmp) && ($_tmp !~ /^[[:space:]]*$/)) {
+ $_tmp = "longdesc $_tmp";
+ write FOO;
+ }
+ #print FOO "longdesc $TpmData{$t}{$p}{'Description'}\n";
+ foreach my $foo (@{$TpmData{$t}{$p}{'Package'}}) {
+ print FOO "depend $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'TLCore'}}) {
+ print FOO "depend $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'SourcePatterns'}}) {
+ print FOO "SourcePatterns f $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'BinPatterns'}}) {
+ print FOO "binpatterns f $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'DocPatterns'}}) {
+ print FOO "docpatterns f $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'RunPatterns'}}) {
+ next if ($foo =~ /\.tpm$/);
+ print FOO "runpatterns f $foo\n";
+ }
+ foreach my $ex (@{$TpmData{$t}{$p}{'Installation'}}) {
+ my %foo = %{$ex};
+ print FOO "execute $foo{'function'} $foo{'mode'} $foo{'parameter'}\n";
+ }
+ close(FOO);
+ }
+ }
+ return (0);
+ foreach my $t ('Package') {
+ print "Creating tlsrc for $t:\n";
+ my %foo = %{$TpmData{$t}};
+ foreach my $p (keys %foo) {
+ open (FOO,">tlsrc/$p.tlsrc") || die("Cannot open tlsrc/$p.tlsrc!");
+ print FOO "name $p\n";
+ foreach my $foo (@{$TpmData{$t}{$p}{'Package'}}) {
+ print FOO "depend $foo\n";
+ }
+ foreach my $foo (@{$TpmData{$t}{$p}{'TLCore'}}) {
+ 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";
+ }
+ 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();
+ create_tlsrc_files();
+}
+
+#####################################
+#
+# Formats
+#
+format FOO =
+^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$_tmp
+ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$_tmp
+.
+
+### Local Variables:
+### perl-indent-level: 4
+### tab-width: 4
+### indent-tabs-mode: t
+### End:
+# vim:set tabstop=4: #