summaryrefslogtreecommitdiff
path: root/Master/tlpkg/archive/tlpsrc2container
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-10-28 23:50:25 +0000
committerNorbert Preining <preining@logic.at>2008-10-28 23:50:25 +0000
commit395b98a9ece78fb75fe68b8182a4992f83cabef4 (patch)
tree6a62ffc661fbfe5d5ece732be7ada05ae5ae39fa /Master/tlpkg/archive/tlpsrc2container
parent477195e9a79a9f1339a0eb0f5f27116a3e41086d (diff)
move some scripts to tlpkg/archive
git-svn-id: svn://tug.org/texlive/trunk@11096 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/archive/tlpsrc2container')
-rwxr-xr-xMaster/tlpkg/archive/tlpsrc2container176
1 files changed, 176 insertions, 0 deletions
diff --git a/Master/tlpkg/archive/tlpsrc2container b/Master/tlpkg/archive/tlpsrc2container
new file mode 100755
index 00000000000..d79e365840c
--- /dev/null
+++ b/Master/tlpkg/archive/tlpsrc2container
@@ -0,0 +1,176 @@
+#!/usr/bin/env perl
+# $Id$
+# create container file(s) for all tlpsrc arguments
+#
+# Copyright 2007, 2008 Norbert Preining
+# This file is licensed under the GNU General Public License version 2
+# or any later version.
+
+BEGIN {
+ $^W = 1;
+ chomp ($mydir = `dirname $0`);
+ unshift (@INC, "$mydir/..");
+}
+
+use strict;
+
+use TeXLive::TLPSRC;
+use TeXLive::TLPOBJ;
+use TeXLive::TLTREE;
+use TeXLive::TLUtils;
+use Cwd;
+use Getopt::Long;
+use Pod::Usage;
+use File::Path;
+
+
+my $opt_all = 0;
+chomp (my $opt_master = `cd $::mydir/../.. && pwd`);
+my $opt_catalogue = "";
+my $opt_type = "zip";
+my $opt_outputdir = "./zip";
+my $help = 0;
+
+TeXLive::TLUtils::process_logging_options();
+
+GetOptions(
+ "all!" => \$opt_all,
+ "master=s" => \$opt_master, # location of the tree
+ "catalogue=s" => \$opt_catalogue, # location of the TeX Catalogue
+ "outputdir=s" => \$opt_outputdir,
+ "type=s" => \$opt_type,
+ "help|?" => \$help) or pod2usage(1);
+
+pod2usage(-exitstatus => 0, -verbose => 2) if $help;
+
+exit(&main ());
+
+sub main
+{
+ if (! -d "$opt_master") {
+ die "$0: Master $opt_master not a directory, goodbye.\n";
+ }
+
+ if (! -d "$opt_outputdir") {
+ mkpath("$opt_outputdir") or die "Cannot mkdir $opt_outputdir!";
+ }
+ # we have an relative zipdir, so we have to make it absolute
+ my $cwd = &getcwd;
+ if ("$opt_outputdir" !~ m@^/@) {
+ $opt_outputdir = "$cwd/$opt_outputdir";
+ }
+
+ my $tlc = undef;
+ if (! -d $opt_catalogue) {
+ info("$0: -c /Cat/a/logue not given, continuing without it.\n");
+ } else {
+ require TeXLive::TeXCatalogue; # not at compile time, for now anyway.
+ info("$0: reading TeX Catalogue tree $opt_catalogue ...\n");
+ $tlc = TeXLive::TeXCatalogue->new( "location" => $opt_catalogue );
+ }
+
+ # if we're regenerating the whole thing, get all our tlpsrc files.
+ if ($opt_all) {
+ my $tlpsrc_dir = "$opt_master/tlpkg/tlpsrc";
+ chdir ($tlpsrc_dir) || die "chdir($tlpsrc_dir) failed: $!";
+ @ARGV = glob ("*.tlpsrc");
+ }
+
+ info("$0: reading Master tree $opt_master ...\n");
+ my $tltree = TeXLive::TLTREE->new( "svnroot" => $opt_master );
+ $tltree->init_from_svn;
+
+ my $last = "";
+ my $src_count = 0;
+ foreach my $f (@ARGV) {
+ if ($opt_all) { # progress report
+ my $first = lc (substr ($f, 0, 1));
+ if ($first ne $last) {
+ print STDERR "$first ";
+ $last = $first;
+ }
+ $src_count++;
+ }
+ my $tlsrc = new TeXLive::TLPSRC;
+ $tlsrc->from_file($f);
+ my $tlp = $tlsrc->make_tlpobj($tltree);
+
+ if ($tlc) {
+ # merge TeX Catalogue information
+ $tlp->update_from_catalogue ($tlc);
+ }
+
+ $tlp->make_container($opt_type,$opt_master,$opt_outputdir);
+ }
+ warn "\n";
+
+ return 0;
+}
+
+__END__
+
+=head1 NAME
+
+tlpsrc2container - create container file(s) from tlpsrc files
+
+=head1 SYNOPSIS
+
+tlpsrc2container [OPTION]... [TLPSRC]...
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-all>
+Generate container files for all .tlpsrc files in C<Master/tlpkg/tlpsrc/*.tlpsrc>.
+
+=item B<-outputdir> I<outputdir>
+The location where created container files are placed, defaults to ./zip.
+
+=item B<-master> I<Master_dir>
+The location given by B<-master> must point to a valid svn repository
+of TeX Live Master direcory. Defaults to C<../..> of C<$0>.
+
+=item B<-catalogue> I<Catalogue_dir>
+The location given by B<-catalogue> must point to a valid TeX Catalogue.
+No default value. If given, the included tlpobj files will contain information
+gathered from the TeX Catalogue.
+
+=item B<-type> I<zip|lzma>
+Specifies the type of container to be used. C<zip> generates zip files,
+while C<lzma> generates .tar.lzma files.
+
+=back
+
+The standard options C<-help> and C<-debug> are also accepted.
+See the tlpfiles documentation for details.
+
+
+=head1 DESCRIPTION
+
+To distribute packages over the network and on installation media the
+packages are wrapped into container files. These container are either
+simple zip files or tar.lzma file containing all the files of the package.
+
+B<tlpsrc2container> converts TeX Live Package Source files (tlpsrc) into
+container files containing all the files in the package.
+
+If a TeX Catalogue hierarchy is specified, additional information from
+the catalogue are merged into the database (see L<TeXLive::TLPOBJ> for
+the list of included information from the TeX Catalogue).
+
+
+=head1 AUTHORS AND COPYRIGHT
+
+This script and its documentation were written for the TeX Live
+distribution (L<http://tug.org/texlive>) and both are licensed under the
+GNU General Public License Version 2 or later.
+
+=cut
+
+### Local Variables:
+### perl-indent-level: 2
+### tab-width: 2
+### indent-tabs-mode: nil
+### End:
+# vim:set tabstop=2 expandtab: #