summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-03-06 00:56:36 +0000
committerKarl Berry <karl@freefriends.org>2011-03-06 00:56:36 +0000
commit6c3b1b3b55d858db3797bb0c390e6069f7a7110c (patch)
tree6cd3aef6667deefc3bb8828e54e40b9917404be1 /Master
parente3846b2d038c95de01c83cac9c00af5ff62c9c93 (diff)
first cut at supporting biber (still incomplete),
and outputting to Build as well as Master. git-svn-id: svn://tug.org/texlive/trunk@21612 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds112
1 files changed, 83 insertions, 29 deletions
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 2dd557eb481..2162113dfe0 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -35,10 +35,10 @@ $INSTALL = "install -D -m 664";
$| = 1;
select ((select (STDERR), $| = 1)[0]);
-$startdir = getcwd(); # where we start from (raw dir)
+$RAW_DIR = getcwd(); # where we start from (raw dir)
chdir "../tmp.cooked" || die "chdir(../tmp.cooked) failed: $!";
-$TDS = getcwd(); # locate destination dir
-chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
+$COOKED_TOP = getcwd(); # output (cooked) directory paren
+chdir $RAW_DIR || die "chdir($RAW_DIR) failed: $!"; # back to raw
$Master = "$mydir/../..";
@@ -128,7 +128,6 @@ $Master = "$mydir/../..";
'bgreek', "&MAKEcopy",
'bib2ml', "die 'skipping, no self-locate?, etc.'",
'bib2xhtml', "die 'skipping, requires PDF::API2'",
- 'biber', "die 'skipping, arch-dependent perl, etc.'",
'bibextract', "die 'skipping, hardwires nawk cmd name'",
'biblatex-chicago', "&MAKEflatten",
'biblatex-contrib', "die 'skipping, use subdir'",
@@ -840,6 +839,7 @@ $Master = "$mydir/../..";
'amstex' => '&POSTamstex',
'apalike' => '&POSTapalike',
'babelbib' => '&POSTbabelbib',
+ 'biber' => '&POSTbiber',
'bibtex' => '&POSTbibtex',
'context-games' => '&POSTcontext_games',
'coordsys' => '&POSTcoordsys',
@@ -1500,6 +1500,7 @@ $standardsource='\.(c|drv|dtx|fea|fdd|ins|sfd)$|configure.*|install-sh';
'apl', ".*", # just get everything, seems simplest
'arabxetex', 'NULL', # keep dtx with others, why not
'bbold', $standardsource . '|fonttabl.sty',
+ 'biber', '.*', # get everything, lots to do in post
'bigints', 'NULL',
'blacklettert1', '\.dtx|\.ins|\.pl|Makefile',
'carlisle', '\.dtx|\.ins|ltxtable\.tex',
@@ -1969,7 +1970,7 @@ $standardclean = '\.head|\.tmp|\.dvi|\.log|\.out|\.aux|\.toc|\.lof|\.lot'
'xskak' => 'xskak.pdf', # no source
);
-#
+# (main program)
# Read from config file to make local adjustments to above.
readconfig();
@@ -1994,10 +1995,18 @@ for (@ARGV) {
@x = split(/\//,$packagedir);
$package = pop (@x);
- $DEST_TREE = $specialdest{$package} || $standarddest;
+ my $COOKED_PKG = "$COOKED_TOP/$package"; # output directory
+
+ if ($package eq "biber") {
+ $BUILDDEST = "$COOKED_PKG/Build/source";
+ $TOPDEST = "$COOKED_PKG/Master";
+ } else {
+ $BUILDDEST = "oops, no builddest should be needed?";
+ $TOPDEST = $COOKED_PKG; # that is, Master
+ }
- $TOPDEST = "$TDS/$package";
- $DEST = "$TOPDEST/$DEST_TREE";
+ my $dest_tree = $specialdest{$package} || $standarddest; # usually texmf-dist
+ $DEST = "$TOPDEST/$dest_tree"; # goes to Master/texmf-dist or whatever
$insrunner = $specialinsrunner{$package} || $standardinsrunner;
@@ -2018,7 +2027,7 @@ for (@ARGV) {
&donormal;
}
- &xchdir ($startdir);
+ &xchdir ($RAW_DIR);
}
@@ -2031,7 +2040,7 @@ sub set_dir_defaults
my ($ctan_dir) = @_;
my $guess = "";
- if ($ctan_dir =~ m!/tex-archive/biblio/bibtex!) {
+ if ($ctan_dir =~ m!/tex-archive/biblio/bib!) {
$standarddocfmt = $standardsourcefmt = "bibtex";
$guess = "$standarddocfmt for docfmt/srcfmt";
@@ -2228,12 +2237,12 @@ sub donormal
print "doing donormal($ctrl)...\n";
# check for tds-ready packages
- if ( -e "$startdir/$packagedir/TDS_READY" ) {
+ if ( -e "$RAW_DIR/$packagedir/TDS_READY" ) {
print "using TDS_READY tree\n";
- &SYSTEM ("$RM $startdir/$packagedir/TDS_READY");
+ &SYSTEM ("$RM $RAW_DIR/$packagedir/TDS_READY");
&SYSTEM ("mkdir -p $DEST");
&xchdir ($DEST);
- &SYSTEM ("$CP -r $startdir/$packagedir/* .");
+ &SYSTEM ("$CP -r $RAW_DIR/$packagedir/* .");
my @docdirs = glob ("doc/*/*/");
if ($moreclean{$package} && @docdirs) {
@@ -2556,7 +2565,7 @@ sub rundvi {
&runjob("bibtex $FileBase");
&runjob("TEXMFLOCAL=. $TEX '\\nonstopmode\\input $FileBase$Filesuffix'");
if ($Filesuffix eq ".drv" || $Filesuffix eq ".dtx" ) {
- &runjob("$CP $startdir/gind.ist .");
+ &runjob("$CP $RAW_DIR/gind.ist .");
&runjob("makeindex -s gind.ist $FileBase");
unlink "gind.ist";
} else {
@@ -2726,8 +2735,8 @@ sub runfonts {
sub MAKEflatten
{
# don't to this in a tds-ready tree...
- -e "$startdir/$packagedir/TDS_READY"
- && die "$0: using MAKEflatten with TDS_READY tree $startdir/$packagedir.\n";
+ -e "$RAW_DIR/$packagedir/TDS_READY"
+ && die "$0: using MAKEflatten with TDS_READY tree $RAW_DIR/$packagedir.\n";
&setup;
&xchdir ("$DEST/doc/$whichdocformat/$package");
@@ -3660,19 +3669,6 @@ sub MAKExmltex
&runjob("$CP manual* *xml test* *txt $DEST/doc/xmltex/base");
}
-sub MAKEbase {
- &SYSTEM("mkdir -p $DEST/tex/latex/base");
- &SYSTEM("mkdir -p $DEST/doc/latex/base");
- &SYSTEM("mkdir -p $DEST/doc/latex/base");
- if (-f "$packagedir/00Contents" ) { unlink "$packagedir/00Contents" ; }
- &SYSTEM("$CP -r $packagedir/* $DEST/doc/latex/base");
- chdir($packagedir) || die ("ERROR: cannot open directory");
- $package="base";
- $DEST="$TDS/ltxbase/texmf-dist";
- print "!$whichformat $packagedir ($package) -> $DEST\n";
- &donormal;
- }
-
sub MAKEfancyvrb {
&setup;
chdir("$DEST/doc/latex/$package");
@@ -4079,6 +4075,64 @@ sub POSTbabelbib {
&SYSTEM ("cd $DEST && $MV texmf/* . && rmdir texmf");
}
+sub POSTbiber {
+ print "POST$package - move doc, unpack and install binaries\n";
+ # we've started with everything under source/.
+ &xchdir ("$DEST/source/bibtex/biber")
+
+ # move doc pdf.
+ &SYSTEM ("$MV doc/*.pdf $DOCDIR/");
+
+ # biber uses different platform names.
+ my %tl_platform = (
+ "MSWIN" => "win32",
+ "darwin_x86_64" => "x86_64-darwin",
+ "linux_x86_32" => "i386-linux",
+ "linux_x86_64" => "x86_64-linux",
+ );
+
+ # handle the prebuilt binaries, which are zipped or tarred.
+ &xchdir ("binaries");
+ for my $archive (sort (<*.*>)) {
+ my $unarchiver = &find_unarchiver ($archive);
+ &SYSTEM ("$unarchiver $archive");
+ #
+ # each .tar.gz unpacks into a single file named biber,
+ # .zip unpacks into biber.exe.
+ my $biber_binary = "biber";
+ $biber_binary .= ".exe" if $archive =~ /MSWIN/i;
+ #
+ # Put the executable in the appropriate (a) Master bin directory
+ # and (b) Build source directory.
+ (my $biber_platform = $archive) =~ s/.*-(.*?)\..*/$1/;
+ my $tl_platform = $tl_platform{$biber_platform};
+ #
+ my $bindir = "$TOPDEST/bin/$tl_platform";
+ &SYSTEM ("mkdir -p $bindir");
+ &SYSTEM ("$CP $biber_binary $bindir/");
+ #
+ my $builddir = "$BUILDDEST/utils/biber/";
+ &SYSTEM ("mkdir -p $builddir");
+ &SYSTEM ("$MV $biber_binary $builddir/$biber_binary.$tl_platform");
+ }
+ &xchdir ("..");
+ &SYSTEM ("$RM -r binaries");
+}
+
+sub find_unarchiver {
+ my ($archive) = @_;
+ my $ret;
+
+ if ($archive =~ /\.tar\.gz$/) {
+ $ret = "tar xf";
+ } elsif ($archive =~ /\.zip$/) {
+ $ret = "unzip -q";
+ } else {
+ die "do not know unarchiver for $archive";
+ }
+ return $ret;
+}
+
sub POSTbibtex {
print "POST$package - switch to base/\n";
&SYSTEM ("cd $DEST && $MV bibtex/bst/bibtex bibtex/bst/base");