[subversion-commit] SVN tetex commit + diffs: r492 - in tex-common/tags: . debian_version_0.15/scripts

Frank Küster frank at costa.debian.org
Fri Feb 3 19:09:43 UTC 2006


Author: frank
Date: 2006-02-03 19:09:43 +0000 (Fri, 03 Feb 2006)
New Revision: 492

Added:
   tex-common/tags/debian_version_0.15/
   tex-common/tags/debian_version_0.15/scripts/dh_installtex
Removed:
   tex-common/tags/debian_version_0.15/scripts/dh_installtex
Log:
tagging 0.15

Copied: tex-common/tags/debian_version_0.15 (from rev 490, tex-common/trunk)

Deleted: tex-common/tags/debian_version_0.15/scripts/dh_installtex
===================================================================
--- tex-common/trunk/scripts/dh_installtex	2006-02-03 18:50:13 UTC (rev 490)
+++ tex-common/tags/debian_version_0.15/scripts/dh_installtex	2006-02-03 19:09:43 UTC (rev 492)
@@ -1,492 +0,0 @@
-#!/usr/bin/perl -w
-
-=head1 NAME
-
-dh_installtex - register Type 1 fonts, languages, or formats with TeX
-
-=cut
-
-use strict;
-use Debian::Debhelper::Dh_Lib;
-
-=head1 SYNOPSIS
-
-B<dh_installtex>
-[S<I<debhelper options>>]
-[B<-n>]
-[B<--priority=>I<n>]
-[B<--flavor=>I<flavor>] 
-[B<map=MixedMap,>I<file.map>]
-[B<map=Map,>I<file.map>]
-[B<mapfile=>I<file.cfg>[=I<n>]]
-[B<language=>I<lang>,I<pattern>[,I<alternate>,...]]
-[B<languagefile=>I<file.cnf>[=I<n>]]
-[B<format=>I<format>,I<engine>,I<hyphenfile>,I<rest args>]
-[B<formatfile=>I<file.cnf>[=I<n>]
-
-=head1 DESCRIPTION
-
-dh_installtex is a debhelper program that is responsible for
-registering map files, new formats, and new languages with TeX.
-
-Your package should depend on tex-common so that the
-update-* commands are available. (This program adds that dependency to
-${misc:Depends}.)
-
-In each of the three cases you can use three different methods to
-specify what should be installed:
-
-1) B<Pre made config files:> These files can be specified with the
-different I<type>file= options, together with an optional priority.
-These files will be installed into /etc/texmf/I<configdir>/ for the
-respective type (for map files updmap.d, for language files language.d,
-and for format files fmt.d).
-
-Example:
-
-        dh_installtex mapfile=foo.cfg formatfile=debian/bar.cnf=42
-
-would install foo.cfg as /etc/texmf/updmap.d/10foo.cfg, and debian/bar.cnf
-as /etc/texmf/fmt.d/42bar.cnf.
-
-
-2) B<Directly on the cmd line:>
-You can specify maps, formats, and languages on the cmd line. The items
-are stored in the respective config file 10package
-
-Example:
-
-        dh_installtex map=Map,foo.map language=greek,grphyph4.tex,polygreek
-
-would install a file /etc/texmf/updmap.d/10package.cfg containing the lines
-
-        Map foo.map
-
-and a file /etc/texmf/language.d/10package.cnf containing the lines
-
-	greek grphyph4.tex
-	=polygreek
-
-3) B<Package files:>
-You create a file debian/package.maps or debian/maps,
-debian/package.languages or debian/languages, 
-debian/package.formats or debian/formats. These files are
-installed with default priority and the name of the package. Each of these
-files will be installed into the first package dh_installtex
-is told to act on. By default this is the first binary package in
-debian/control, but if you use -p, -i, or -a flags, it will be the first
-package specified by those flags.
-
-Example:
-
-        dh_installtex
-
-would install a present debian/package.maps file as
-/etc/texmf/updmap.d/10package.cfg.
-
-
-=head2 Mixing the different variants
-
-The command line items (Variant 2) are merged into the debian/package.maps 
-(debian/package.languages, debian/package.formats)
-file and the merged file is installed as 10package.cfg/cnf. If you specify
-an additional package.cfg/cnf (Variant 1) without a different priority than
-the default one on the cmd line, this will raise an error since both files
-would be installed as 10package.cfg/cnf. You can only specify 
-package.cfg/cnf without
-a different priority than the default one if no debian/package.maps nor
-any command line Map files are present.
-
-=head2 The pseudo-comment
-
-If the provided cfg files do not contain the pseudo-comment as described
-in the Debian TeX Policy, Font configuration, an additional header with
-explanation, warning and the pseudo-comment is added.
-
-This program automatically generates the postinst and postrm commands needed
-to register the fonts with TeX.  See L<dh_installdeb(1)> for an explanation
-of how this works.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-n>, B<--noscripts>
-
-Do not modify postinst/prerm scripts.
-
-=item B<--priority=>I<n>
-
-Set the default priority to I<n> instead of 10.
-
-=item B<--flavor=>I<flavor>
-
-This option will be used to switch additional options on. At the moment
-you can select for I<flavor> either B<map:config_for_active_maps> or
-B<map:config_for_all_maps>.
-B<map:config_for_active_maps> will create a file I<config.bar> for each active
-(i.e. uncommented) map in each of the cfg file generated by one of the
-three methods described above. These files are installed in
-/usr/share/texmf/dvips/config/.
-
-If you select B<map:config_for_all_maps> the script will generate I<config.bar>
-even for those map files which are present in a cfg file, but deactivated by a comment.
-
-The file I<config.bar> is used when called by `dvips -Pbar ...'. Thus it
-allows the activation of single map files even if they are not automatically
-activated via the updmap(-sys) mechanism.
-
-Default is I<not> to generate any config files.
-
-=head1 NOTES
-
-Note that this command is not idempotent. "dh_clean -k" should be called
-between invocations of this command, unless using the B<-n> option.
-Otherwise, it may cause multiple instances of the same text to be added
-to maintainer scripts.
-
-Please refer to the Debian TeX policy for details about fonts configuration
-for TeX by Debian packages.
-
-
-=cut
-
-init();
-
-
-
-#
-# GLOBAL VARIABLES
-#
-my $flavor;		
-my $mapdoconfig =  0;	# doconfig depending map/subflavor
-my $priority=10;	# priority with which files are installed
-my %cmdlineargs;
-my %cmdlinefiles;
-my %cmdlinefilespriority;
-
-#
-# definitions for the different flavors
-#
-# extension of package files debian/$package.formats and/or debian/formats etc
-my %pkgfileext = ( 
-	language	=> "languages", 
-	format 		=> "formats", 
-	map 		=> "maps" );
-# extension of the config files
-my %configfileext = ( 
-	language 	=> "cnf", 
-	format 		=> "cnf", 
-	map 		=> "cfg" );
-# comment char for magic header
-my %commentchar = ( 
-	language 	=> '%', 
-	format 		=> '#', 
-	map 		=> '#' );
-# directory under /etc/texmf/ where files are installed
-my %configdir = ( 
-	language 	=> "language.d", 
-	format 		=> "fmt.d", 
-	map 		=> "updmap.d" );
-# directory under /var/lib/tex-common where list files are installed
-my %managedir = ( 
-	language 	=> "language-cnf", 
-	format 		=> "fmtutil-cnf", 
-	map 		=> "fontmap-cfg" );
-#
-# dummy loop variables
-my $i;
-my $bn;
-my $pr;
-my $dofilen;
-
-# the magic header without comment chars
-my @magicheader = ( "You can change/add entries to this file and changes will be preserved", 
-"over upgrades, even if you have removed the main package prior",
-"(not if you purged it). You should leave the following pseudo comment",
-"present in the file!",
-"-_- DebPkgProvidedMaps -_-", "");
-
-#
-# collect data
-# for maps this is the list of map files depending on the doconfig value
-# for formats the list of formats to be generated
-sub collect_data {
-	my ($type,$dataref,$entry) = @_;
-	my $m;
-
-	if ($type eq "map") {
-		if ($m = extract_map($entry, $mapdoconfig)) { push @$dataref, $m; }
-	} elsif ($type eq "format") {
-		if ($m = extract_format($entry)) { push @$dataref, $m; }
-	}
-}
-
-sub extract_format {
-	my ($line) = @_;
-	print "DEBUG extract format line=...$line...\n";
-	if ($line =~ m/^[^\w#]*(\w+)*/) {
-		print "DEBUG extracted: ...$1...\n";
-		return $1;
-	}
-}
-
-sub extract_map {
-	my ($line,$mapdoconfig) = @_;
-	if ($mapdoconfig == 0) { return ""; }
-	if ($_ =~ m/^[[:space:]]*([#[:space:]]*)[[:space:]]*(Mixed)?Map[[:space:]]*(.*\.map)[[:space:]]*(#.*)?$/) {
-		my $comment = $1;
-		my $map = $3;
-		if (($comment eq "") || ($mapdoconfig == 2)) {
-			return $map;
-		}
-	}
-	return "";
-}
-
-#
-# build a line to be written to the config file
-# we get the argument as specified on the cmd line and have to reform
-# it properly for the respective flavor
-sub build_line {
-	my ($type,$line) = @_;
-	if ($type eq "map") {
-		if ($line =~ m/^(Map|MixedMap),(.*)$/) {
-			return("$1 $2");
-		} else {
-			error("$line is neither of the form Map,filename.map, MixedMap,filename.map.");
-		}
-	} elsif ($type eq "format") {
-		my ($format,$engine,$pat, at rest) = split(",",$line);
-		my $ret = "$format\t$engine\t$pat\t" . join(",", at rest);
-		return($ret);
-	} elsif ($type eq "language") {
-		my ($lang,$pat, at rest) = split(",",$line);
-		my $ret="$lang $pat\n";
-		foreach (@rest) {
-			$ret .= "=$_\n";
-		}
-		return($ret);
-	}
-}
-
-#
-# check wether a magic comment is already present
-sub magic_comment_present {
-	my ($fname) = @_;
-	my @args = ( "grep", "-q", "^[#%] -_- DebPkgProvidedMaps -_-", $fname );
-	if (system(@args) == 0) { return 1; }
-	return 0;
-}
-
-
-#
-#
-# START OF THE MAIN PROGRAM
-#
-#
-
-#
-# parse the cmd line and fill in the various hashes
-#
-foreach (@ARGV) {
-	if ((m/^(map)file=(.*\.cfg)(=([[:digit:]]+))?$/) ||
-	    (m/^(language)file=(.*\.cnf)(=([[:digit:]]+))?$/) ||
-	    (m/^(format)file=(.*\.cnf)(=([[:digit:]]+))?$/)) {
-		my $type=$1;
-		my $fn=$2;
-		my $pr=$priority;
-		if (defined($4)) {
-			$pr=$4;
-		}
-		$cmdlinefilespriority{$type}{$fn}=$pr;
-	} elsif (m/^(map|language|format)=(.*)$/) {
-		push @{$cmdlineargs{$1}}, $2;
-	} else {
-		error("Unrecognized argument: $_\n");
-	}
-}
-
-#
-#
-if (defined($dh{FLAVOR})) {
-	if ($dh{FLAVOR} eq "map:config_for_active_maps") {
-		$mapdoconfig = 1;
-	} elsif ($dh{FLAVOR} eq "map:config_for_all_maps") {
-		$mapdoconfig = 2;
-	} else {
-		error("Specified flavor $dh{FLAVOR} not supported.\nPlease see man page for supported flavors!\n");
-	}
-}
-
-if (defined($dh{PRIORITY}) && $dh{PRIORITY} ne '') {
-	$priority=$dh{PRIORITY};
-}
-
-
-foreach my $package (@{$dh{DOPACKAGES}}) {
-	# these variables should be local to the loop over packages
-	# as they vary with package
-	my $tmp=tmpdir($package);
-	my %pkgprovidedfilecontents;
-	my %data;
-	my @whattodo = ();
-
-	if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
-		# we do nothing here
-	} else {
-		# we have to clear all the cmd line arguments!
-		%cmdlinefilespriority = ();
-		%cmdlineargs = ();
-	}
-
-	foreach my $type ("map", "language", "format") {
-		my @cmdlineconfigfiles = ();
-		my @cmdlinearguments = ();
-		my $pkgprovidedfile = 0;
-		my $pkgfileoncmdline = 0;
-		my @listlines;
-		my $foo = pkgfile($package,$pkgfileext{$type});
-		if ($foo) {
-			open(FOO, "<$foo") || error("$foo cannot be opened.");
-			my @bar = <FOO>;
-			close(FOO);
-			$pkgprovidedfilecontents{$type} = \@bar;
-			$pkgprovidedfile = 1;
-		}
-		if (defined($cmdlinefilespriority{$type})) {
-			my %priorityhash = %{$cmdlinefilespriority{$type}};
-			@cmdlineconfigfiles = keys(%priorityhash);
-		}
-		if (defined($cmdlineargs{$type})) {
-			@cmdlinearguments = @{$cmdlineargs{$type}};
-		}
-		foreach $foo (@cmdlineconfigfiles) {
-			my $bn=basename($foo);
-			if ($bn eq "$package.$configfileext{$type}" && $cmdlinefilespriority{$type}{$foo} == $priority) {
-				$pkgfileoncmdline = 1;
-			}
-		}
-		if (!$pkgprovidedfile && ($#cmdlineconfigfiles < 0) && ($#cmdlinearguments < 0)) {
-			# we have nothing to do here, skip to the next one!
-			next;
-		}
-		push @whattodo, $type;
-		if ($pkgfileoncmdline && ($pkgprovidedfile || ($#cmdlinearguments >= 0))) {
-			error("This call would create multiple copies of $priority$package.$configfileext{$_}.\nPlease read the man page on how this should be fixed!\n");
-		}
-        	if ( ! -d "$tmp/etc/texmf/$configdir{$type}/") {
-			doit("install","-d","$tmp/etc/texmf/$configdir{$type}/");
-        	}
-		#
-		# the cmd line cfg files
-		#
-		foreach (@cmdlineconfigfiles) {
-			$bn=basename($_);
-			$pr=$cmdlinefilespriority{$type}{$_};
-			$dofilen = "$tmp/etc/texmf/$configdir{$type}/$pr$bn";
-			-r $dofilen &&
-				error("The config file $dofilen already exists! Cannot recreate it, please call dh_clean -k!");
-			open(CFGFILE, ">$dofilen") ||
-				error("Cannot open $dofilen for writing!");
-			verbose_print("Writing $dofilen");
-			if (!magic_comment_present($_)) {
-				print CFGFILE "$commentchar{$type} $pr$bn\n";
-				foreach $i (@magicheader) {
-					print CFGFILE "$commentchar{$type} $i\n";
-				}
-			}
-			open(FOO,"<$_") || error("Cannot open $_ for reading!");
-			while (<FOO>) { 
-				print CFGFILE $_; 
-				collect_data($type,\@{$data{$type}},$_);
-			}
-			close(FOO);
-			close(CFGFILE);
-			$bn =~ s/\.$configfileext{$type}$//;
-			push @listlines, "$pr$bn";
-		}
-		#
-		# now debian/package.maps and/or debian/maps formats languages
-		# merge in the cmd line arguments
-		#
-		if ($pkgprovidedfile || ($#cmdlinearguments >= 0)) {
-			$dofilen = "$tmp/etc/texmf/$configdir{$type}/$priority$package.$configfileext{$type}";
-			-r $dofilen && 
-				error("The config file $dofilen already exists! Cannot recreate it, please call dh_clean -k!");
-			open(CFGFILE, ">$dofilen") || 
-				error("Cannot open $dofilen for writing!");
-			verbose_print("Writing $dofilen");
-			if (($pkgprovidedfile && !magic_comment_present($pkgprovidedfile)) ||
-		    	    (!$pkgprovidedfile && ($#cmdlinearguments >= 0))) {
-				print CFGFILE "$commentchar{$type} $priority$package.$configfileext{$type}\n";
-				foreach (@magicheader) {
-					print CFGFILE "$commentchar{$type} $_\n";
-				}
-			}
-			foreach (@{$pkgprovidedfilecontents{$type}}) {
-				print CFGFILE "$_";
-				collect_data($type,\@{$data{$type}},$_);
-			}
-			foreach (@cmdlinearguments) {
-				my $foo =  build_line($type,$_);
-				print CFGFILE $foo,"\n";
-				collect_data($type,\@{$data{$type}},$foo);
-			}
-			close(CFGFILE);
-			push @listlines, "$priority$package";
-		}
-	
-        	if ( ! -d "$tmp/var/lib/tex-common/$managedir{$type}/") {
-        	    doit("install","-d","$tmp/var/lib/tex-common/$managedir{$type}/");
-        	}
-		$dofilen = "$tmp/var/lib/tex-common/$managedir{$type}/$package.list";
-		open(LISTFILE, ">>$dofilen")||
-			error("Cannot open $dofilen for writing/appending!");
-		verbose_print("Writing $dofilen");
-		foreach (@listlines) {
-			print LISTFILE "$_\n";
-		}
-		close(LISTFILE);
-
-		if ($type eq "map") {
-		    my @data = @{$data{"map"}};
-		    if ($#data >= 0) {
-			doit("install","-d","$tmp/usr/share/texmf/dvips/config/");
-		    }
-		    foreach $i (@data) {
-			my $f = $i;
-			$f =~ s/\.map$//;
-			$dofilen = "$tmp/usr/share/texmf/dvips/config/config.$f";
-			-r $dofilen &&
-			    error("The dvips config file $dofilen already exists!\nYou may have to call dh_clean -k!\n");
-			open(CNFFILE, ">$dofilen") ||
-			    error("Cannot open $dofilen for writing!");
-			verbose_print("Writing $dofilen");
-			print CNFFILE "p +$i\n";
-			close(CNFFILE);
-		    }
-		}
-	}
-
-	my @fmtdata = ();
-	if (defined($data{"format"})) {
-		@fmtdata = @{$data{"format"}};
-	}
-	if (! $dh{NOSCRIPTS}) {
-		autoscript($package, "postinst", "postinst-tex", "s/#FORMATS#/@fmtdata/; s/#WHATTODO#/@whattodo/");
-		autoscript($package, "postrm",   "postrm-tex", "s/#FORMATS#/@fmtdata/; s/#WHATTODO#/@whattodo/");
-	}
-
-	addsubstvar($package, "misc:Depends", "tex-common", ">= 0.7");
-}
-
-=head1 SEE ALSO
-
-L<debhelper(7)>
-
-=head1 AUTHOR
-
-Norbert Preining <preining at logic.at>
-
-=cut

Copied: tex-common/tags/debian_version_0.15/scripts/dh_installtex (from rev 491, tex-common/trunk/scripts/dh_installtex)




More information about the Pkg-tetex-commits mailing list