diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-16 00:05:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-16 00:05:12 +0000 |
commit | 70f7efeb5c9965a63a4143ad1c1f473585dc364c (patch) | |
tree | bf734c5c492ca5491ffaeb2192cdb9b32f42f726 /Build/source/mswin32/newbuild.pl | |
parent | f896f9e413c0dc0d4178846634963c84505e5029 (diff) |
mswin32/
git-svn-id: svn://tug.org/texlive/trunk@1482 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/mswin32/newbuild.pl')
-rw-r--r-- | Build/source/mswin32/newbuild.pl | 386 |
1 files changed, 386 insertions, 0 deletions
diff --git a/Build/source/mswin32/newbuild.pl b/Build/source/mswin32/newbuild.pl new file mode 100644 index 00000000000..8b8549f3afa --- /dev/null +++ b/Build/source/mswin32/newbuild.pl @@ -0,0 +1,386 @@ +## newbuild.pl: prepare a TeXLive build -*- Perl -*- +## +## Copyright (C) 2002 Fabrice Popineau <Fabrice.Popineau@supelec.fr> +## derived from the MiKTeX newbuild.pl perl script +## +## This file is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; either version 2, or (at your +## option) any later version. +## +## This file is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this file; if not, write to the Free Software +## Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +## USA. + +use strict; +use Cwd; +use File::Path; +use File::Basename; +use Getopt::Long; +use File::DosGlob 'glob'; + +my $texlivesrcdir; +my $major_version_number; +my $minor_version_number; +my $version_string; +my $patch_number_str; +my $mscver; +my $opt_prefix; +my $opt_help; +my $opt_alpha; +my $opt_beta; +my $opt_offical; +my $opt_debug; +my $opt_tmdir; +my $opt_snapshot; +my $opt_official; +my $release_motto; +my $build_label; +my $build_special_str; +my $build_number; +my $state; +my $beta_number; +my $alpha_number; +my $build_date_str; +my $builder_name_str; +my $computer_name_str; +my $build_date; +my $patch_number; + +&main; +exit (0); + +############################################################################### +## help +############################################################################### + +sub help +{ + print <<EOF; +Usage: newbuild [OPTIONS] + --alpha initialize an alpha build + --beta initialize a beta build + --debug initialize a debug build + --help display this help text and exit + --official initialize an official build + --prefix=DIR install all files in DIR + --tmdir=DIR where Total Texlive is installed + --snapshot initialize a snapshot build +EOF +} + +############################################################################### +## make_version_h +############################################################################### + +sub make_version_h +{ + $version_string = $major_version_number; + + if ($minor_version_number > 0) + { + $version_string .= ".$minor_version_number"; + } + + $version_string .= $patch_number_str; + + if ($build_special_str) + { + $version_string .= " $build_special_str"; + } + + if ($state == 1) + { + $version_string .= " (snapshot build $build_number)"; + } + elsif ($state == 2) + { + $version_string .= " beta $beta_number"; + } + elsif ($state == 3) + { + $version_string .= " alpha $alpha_number"; + } + elsif ($state == 4) + { + $version_string .= " (debug build $build_number)"; + } + + my $version_h_filename = $texlivesrcdir . "./texlive-version.h"; + + open (VERSION_H, ">$version_h_filename"); + + print VERSION_H <<EOF; +/* Made by newbuild.pl; DO NOT EDIT !!! -*- C -*- */ +#ifndef VERSION__9C077E32_49F9_4a99_9A1F_3E4C4DB17C7D__INCLUDED_H_ +#define VERSION__9C077E32_49F9_4a99_9A1F_3E4C4DB17C7D__INCLUDED_H_ +#define TEXLIVE_PRODUCTNAME_STR "TeXLive" +#define TEXLIVE_COMPANYNAME_STR "TeX Users Group" +#define TEXLIVE_BUILD_COMMENT_STR "Build $build_number ($build_label); build date: $build_date_str; machine: $computer_name_str" +#define TEXLIVE_BUILD_DATE $build_date +#define TEXLIVE_BUILDERNAME_STR "$builder_name_str" +#define TEXLIVE_PRIVATEBUILD_STR "Built by $builder_name_str" +#define TEXLIVE_MAJOR_VERSION $major_version_number +#define TEXLIVE_MINOR_VERSION $minor_version_number +#define TEXLIVE_BETA_NUMBER $beta_number +#define TEXLIVE_BETA_NUMBER_STR "$beta_number" +#define TEXLIVE_ALPHA_NUMBER $alpha_number +#define TEXLIVE_ALPHA_NUMBER_STR "$alpha_number" +#define TEXLIVE_PATCH_NUMBER $patch_number +#define TEXLIVE_PATCH_NUMBER_STR "$patch_number_str" +#define TEXLIVE_BUILD_LABEL "$build_label" +#define TEXLIVE_BUILD_NUMBER $build_number +#define TEXLIVE_BUILD_SPECIAL_STR "$build_special_str" +#define TEXLIVE_MAJOR_VERSION_STR "$major_version_number" +#define TEXLIVE_MINOR_VERSION_STR "$minor_version_number" +#define TEXLIVE_BETA_VERSION_STR "$beta_number" +#define TEXLIVE_ALPHA_VERSION_STR "$alpha_number" +#define TEXLIVE_BUILD_NUMBER_STR "$build_number" +#define TEXLIVE_RELEASE_STATE $state +#define TEXLIVE_RELEASE_MOTTO_STR "$release_motto" +#define TEXLIVE_PRODUCTVERSION_STR "$version_string" +#define TEXLIVE_LIBRARYPREFIX_STR "tl$major_version_number$minor_version_number" +#ifndef TEXLIVE_LEGALCOPYRIGHT_STR +#define TEXLIVE_LEGALCOPYRIGHT_STR "Copyright (C) 1996-2003 Fabrice Popineau and the TeX Users Group" +#endif +#ifndef TEXLIVE_LEGALTRADEMARKS_STR +#define TEXLIVE_LEGALTRADEMARKS_STR "" +#endif +#endif +EOF + + close (VERSION_H); +} + +############################################################################### +## update_tpm_files +############################################################################### + +sub update_tpm_files +{ +# my $x; +# foreach $x (glob "tpm\\*.tpm") +# { +# open TPM, $x; +# open TPM_NEW, ">$x.new"; +# while (<TPM>) +# { +# s-<TPM:Version>.*</TPM:Version>-<TPM:Version>$version_string</TPM:Version>-; +# s-<TPM:Date>.*</TPM:Date>-<TPM:Date>$build_date_str</TPM:Date>-; +# print TPM_NEW $_; +# } +# close TPM_NEW; +# close TPM; +# unlink $x; +# rename "$x.new", $x; +# } +} + +############################################################################### +## mscver +############################################################################### + +sub mscver +{ + open MSCVER, ">mscver.c"; + print MSCVER <<EOF; +#include <stdio.h> +void main (void) { printf ("%d", _MSC_VER); } +EOF + close MSCVER; + system "cl /nologo mscver.c"; + $mscver = `mscver`; + unlink ("mscver.c"); + unlink ("mscver.obj"); + unlink ("mscver.exe"); +} + +############################################################################### +## write_paths_ini +############################################################################### + +# sub write_paths_ini +# { +# system "nmake -f texlive.mak configure" +# } + +############################################################################### +## main +############################################################################### + +sub main +{ + unless (GetOptions("alpha" => \$opt_alpha, + "beta" => \$opt_beta, + "help" => \$opt_help, + "official" => \$opt_official, + "prefix=s" => \$opt_prefix, + "tmdir=s" => \$opt_tmdir, + "debug" => \$opt_debug, + "snapshot" => \$opt_snapshot)) + { + print STDERR "Try `newbuild --help'"; + exit (1); + } + + if ($opt_help) + { + help (); + exit (0); + } + + my($ss,$mm,$hh,$mday,$mon,$year) = localtime(); + + $builder_name_str = $ENV{"USERNAME"}; + $computer_name_str = $ENV{"COMPUTERNAME"}; + + my $new_state = -1; + $new_state = 4 if ($opt_debug); + $new_state = 3 if ($opt_alpha); + $new_state = 2 if ($opt_beta); + $new_state = 1 if ($opt_snapshot); + $new_state = 0 if ($opt_official); + + $texlivesrcdir = &dirname(cwd()) . "/texk/msvc"; + + $texlivesrcdir =~ s:/:\\:g; + + my $texlive_inc_filename = $texlivesrcdir . "/texlive.inc"; + + die "$texlive_inc_filename does not exist" unless (-e $texlive_inc_filename); + open (TEXLIVE_INC, $texlive_inc_filename); + + open (TMPFILE, ">xxx"); + $state = -1; + my $last_state = -1; + + mscver (); + + my $timestamp = sprintf("%02d/%02d/%02d %02d:%02d:%02d %s", + $year, $mon+1, $mday, $hh, $mm, $ss, + $ENV{"USERNAME"}); + + while (<TEXLIVE_INC>) + { + if (/^state = ([01234])/) + { + $state = $1; + $state = $new_state if ($new_state >= 0); + print TMPFILE "state = $state\n"; + } + elsif (/^alpha_number = ([0-9]+)/) + { + $alpha_number = $1; + print TMPFILE "alpha_number = $alpha_number\n"; + } + elsif (/^beta_number = ([0-9]+)/) + { + $beta_number = $1; + print TMPFILE "beta_number = $beta_number\n"; + } + elsif (/^release_motto = (.*)/) + { + $release_motto = $1; + print TMPFILE $_; + } + elsif (/^build_label = ([A-Za-z0-9_-]+)/) + { + $build_label = $1; + print TMPFILE $_; + } + elsif (/^build_special_str = ([A-Za-z0-9 ]+)/) + { + $build_special_str = $1; + print TMPFILE $_; + } + elsif (/^(build_number = )([0-9]+)/) + { + $build_number = $2 + 1; + print TMPFILE $1, $build_number, "\n"; + } + elsif (/^build_date = /) + { + $build_date = time (); + print TMPFILE $&, $build_date, "\n"; + } + elsif (/^build_date_str = /) + { + $build_date_str = localtime (); + print TMPFILE $&, $build_date_str . "\n"; + } + elsif (/^texlivesrcdir = /) + { + print TMPFILE $&, $texlivesrcdir . "\n"; + } + elsif (/^prefix = /) + { + if (length($opt_prefix) > 0) + { + print TMPFILE $&, $opt_prefix . "\n"; + } + else + { + print TMPFILE $&, $ENV{"HOMEDRIVE"} . "\\texmf\n"; + } + } + elsif (/^tmdir = /) + { + if (length($opt_tmdir) > 0) + { + print TMPFILE $&, "$opt_tmdir\n"; + } + else + { + print TMPFILE $&, "\$(prefix)\n"; + } + } + elsif (/^mscver = /) + { + print TMPFILE $&, $mscver . "\n"; + } + else + { + if (/^major_version_number = ([0-9]+)/) + { + $major_version_number = $1; + } + elsif (/^minor_version_number = ([0-9]+)/) + { + $minor_version_number = $1; + } + elsif (/^patch_number = ([0-9]+)/) + { + $patch_number = $1; + } + elsif (/^patch_number_str = ([a-z])/) + { + $patch_number_str = $1 + } + else + { + s/Time-stamp:[ \t]+\"(.+)\"/Time-stamp: \"$timestamp\"/; + } + print TMPFILE; + } + } + + close (TEXLIVE_INC); + close (TMPFILE); + unlink ($texlive_inc_filename); + rename ("xxx", $texlive_inc_filename); + + make_version_h (); + + update_tpm_files (); + +# if ($opt_tmdir && $opt_prefix) +# { +# write_paths_ini (); +# } +} |