[Pkg-tcltk-commits] r1439 - policy/trunk

sgolovan at alioth.debian.org sgolovan at alioth.debian.org
Wed Jul 31 12:42:06 UTC 2013


Author: sgolovan
Date: 2013-07-31 12:42:05 +0000 (Wed, 31 Jul 2013)
New Revision: 1439

Modified:
   policy/trunk/Makefile
   policy/trunk/tcltk-policy.sgml
Log:
[policy]
Adapted the Tcl/Tk policy to the upcoming changes in experimental (multiarch, rename of tcl-dev to libtcl-dev etc.).


Modified: policy/trunk/Makefile
===================================================================
--- policy/trunk/Makefile	2013-07-31 09:34:49 UTC (rev 1438)
+++ policy/trunk/Makefile	2013-07-31 12:42:05 UTC (rev 1439)
@@ -1,6 +1,6 @@
 #
 # Makefile
-# $Id: Makefile,v 1.2 2003/08/09 20:25:48 ukai Exp $
+# $Id$
 #
 
 %.txt: %.sgml
@@ -9,10 +9,18 @@
 %.html/index.html: %.sgml
 	LANG=C debiandoc2html $<
 
+%.pdf: %.sgml
+	LANG=C debiandoc2pdf $<
+
+all: txt pdf html
 txt text: tcltk-policy.txt
+pdf: tcltk-policy.pdf
 html: tcltk-policy.html/index.html
 
 clean:
-	-rm -f *.txt
+	-rm -f tcltk-policy.txt
+	-rm -f tcltk-policy.tpt
+	-rm -f tcltk-policy.pdf
+	-rm -rf tcltk-policy.html
 
-#
+.PHONY: txt text pdf html clean all


Property changes on: policy/trunk/Makefile
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Modified: policy/trunk/tcltk-policy.sgml
===================================================================
--- policy/trunk/tcltk-policy.sgml	2013-07-31 09:34:49 UTC (rev 1438)
+++ policy/trunk/tcltk-policy.sgml	2013-07-31 12:42:05 UTC (rev 1439)
@@ -1,19 +1,28 @@
+<!-- $Id$ -->
 <!DOCTYPE debiandoc system [
-<!ENTITY XY        "<var>X</var>.<var>Y</var>">
-<!ENTITY tclsh     "<package>tclsh</package>">
-<!ENTITY wish      "<package>wish</package>">
-<!ENTITY tcl       "<package>tcl</package>">
-<!ENTITY tcl-dev   "<package>tcl-dev</package>">
-<!ENTITY tcl-doc   "<package>tcl-doc</package>">
-<!ENTITY tclXY     "<package>tcl&XY;</package>">
-<!ENTITY tclXY-dev "<package>tcl&XY;-dev</package>">
-<!ENTITY tclXY-doc "<package>tcl&XY;-doc</package>">
-<!ENTITY tk        "<package>tk</package>">
-<!ENTITY tk-dev    "<package>tk-dev</package>">
-<!ENTITY tk-doc    "<package>tk-doc</package>">
-<!ENTITY tkXY      "<package>tk&XY;</package>">
-<!ENTITY tkXY-dev  "<package>tk&XY;-dev</package>">
-<!ENTITY tkXY-doc  "<package>tk&XY;-doc</package>">
+<!ENTITY XY           "<var>X</var>.<var>Y</var>">
+<!ENTITY tclsh        "<package>tclsh</package>">
+<!ENTITY wish         "<package>wish</package>">
+<!ENTITY tcl          "<package>tcl</package>">
+<!ENTITY libtcl       "<package>libtcl</package>">
+<!ENTITY libtcl-dev   "<package>libtcl-dev</package>">
+<!ENTITY tcl-doc      "<package>tcl-doc</package>">
+<!ENTITY tcl-dev      "<package>tcl-dev</package>">
+<!ENTITY tclXY        "<package>tcl&XY;</package>">
+<!ENTITY libtclXY     "<package>libtcl&XY;</package>">
+<!ENTITY libtclXY-dev "<package>libtcl&XY;-dev</package>">
+<!ENTITY tclXY-doc    "<package>tcl&XY;-doc</package>">
+<!ENTITY tclXY-dev    "<package>tcl&XY;-dev</package>">
+<!ENTITY tk           "<package>tk</package>">
+<!ENTITY libtk        "<package>libtk</package>">
+<!ENTITY libtk-dev    "<package>libtk-dev</package>">
+<!ENTITY tk-doc       "<package>tk-doc</package>">
+<!ENTITY tk-dev       "<package>tk-dev</package>">
+<!ENTITY tkXY         "<package>tk&XY;</package>">
+<!ENTITY libtkXY      "<package>libtk&XY;</package>">
+<!ENTITY libtkXY-dev  "<package>libtk&XY;-dev</package>">
+<!ENTITY tkXY-doc     "<package>tk&XY;-doc</package>">
+<!ENTITY tkXY-dev     "<package>tk&XY;-dev</package>">
 ]>
 <debiandoc>
  <book>
@@ -27,19 +36,19 @@
 	<name>Sergei Golovan</name>
 	<email>sgolovan at debian.org</email>
     </author>
-    <version>version 0.2.0</version>
+    <version>version 0.3.0</version>
 
     <abstract>
       This document describes the packaging of Tcl/Tk within the Debian
       distribution and the policy requirements for Tcl/Tk extensions
-      and packages. This policy has been defined during Lenny release
-      cycle, so pre-Lenny releases can violate this policy in one or 
+      and packages. This policy has been defined during Jessie release
+      cycle, so pre-Jessie releases can violate this policy in one or 
       more aspects. Backporters are warned.
     </abstract>
 
     <copyright>
       <copyrightsummary>
-        Copyright © 2007 Software in the Public Interest
+        Copyright © 2007-2013 Software in the Public Interest
       </copyrightsummary>
       <p>
 	  This manual is free software; you can redistribute it and/or
@@ -75,24 +84,26 @@
       <sect id="versions">
 	<heading>Versions</heading>
 	<p>
-	  At any given time, the virtual packages &tclsh; and
-	  &wish; are provided by all source package versions 
-	  of Tcl and Tk. So pseudo-default Tcl and Tk exist, but they are generally a choice
-	  of the administrator by means of <tt>update-alternatives</tt> use.
-	  Starting from Lenny release, proper default packages are also provided by
-	  the Debian <file>tcltk-defaults</file> source package,
+	  At any given time, the binary packages &tcl; and &tk; represent
+	  the current default Debian Tcl/Tk version. They contain Tcl and Tk shells
+	  <file>/usr/bin/tclsh</file> and <file>/usr/bin/wish</file> which are
+	  symlinks to the current default
+	  version binaries. For backward compatibility they provide the virtual
+	  packages &tclsh; and &wish; but it isn't recommended to refrence them
+	  in packages dependencies anymore. The packages &tcl; and &tk; are
+	  provided by the Debian <file>tcltk-defaults</file> source package,
 	  in order to manage modules and extensions packaging and upgrading better.
 	  Modules should preferably use those packages when appropriate 
 	  (i.e. they are either version independent
 	  or properly versioned to inhibit the use of a non compatible versions, 
 	  see <ref id="dependencies">), but it is
-	  not mandatory. This is consistent with the use of alternatives.
+	  not mandatory.
 	  The default packages are
 	  <example>
 	tcl
 	tk
-	tcl-dev
-	tk-dev
+	libtcl-dev
+	libtk-dev
 	tcl-doc
 	tk-doc
 	  </example>
@@ -102,7 +113,7 @@
 	  upstream release that can be integrated in the distribution. Starting
 	  from 8.0, Tcl and Tk share the same version numbering. The default packages
 	  depend on the appropriate versioned packages and provide useful additional
-	  symlinks and alternatives. Default packages versions follow upstream versions,
+	  symlinks. Default packages versions follow upstream versions,
 	  so that packages can use appropriate versioning constraints on them when
 	  it is needed.
 	</p>
@@ -112,10 +123,10 @@
 	  are needed by other packages, or as long as it seems
 	  reasonable to provide them.  (Note: For the scope of this
 	  document, Tcl/Tk versions mean the result of 'info tclversion' command, 
-	  i.e. Tcl/Tk 8.4 and 8.4.16 are subminor versions of
-	  the same Tcl/Tk version 8.4, but Tcl 8.5 and 8.3 are
+	  i.e. Tcl/Tk 8.5 and 8.5.14 are subminor versions of
+	  the same Tcl/Tk version 8.5, but Tcl 8.6 and 8.5 are
 	  indeed different versions. The patchlevel intends the result of 
-	  the 'info patchlevel' command, i.e. Tcl/Tk 8.4.16 and 8.4.15 have the
+	  the 'info patchlevel' command, i.e. Tcl/Tk 8.5.14 and 8.5.13 have the
 	  same version but different patchlevels).
 	</p>
         <p>In addition, unstable/development version of Tcl/Tk
@@ -145,24 +156,27 @@
 	<heading>Main packages</heading>
 	<p>
 	  For every Tcl/Tk versions provided in the distribution, the
-	  packages &tclXY;
-          and &tkXY;
-	  comprise a complete distribution for
-	  <em>deployment</em> of Tcl/Tk scripts and applications. The
-	  packages include the binaries
+	  packages &libtclXY; and &libtkXY; comprise a corresponding Tcl/Tk
+	  libraries, core modules and extensions of the upstream Tcl/Tk
+	  distribution. They provide infrastructure for embedding Tcl into
+	  external programs. Any such packages includes a <var>Provides:</var>
+	  item of the virtual package &libtcl; and a <var>Provides:</var> 
+	  item for the &libtk; virtual package.
+	</p>
+	<p>
+	  Also, the packages &tclXY; and &tkXY; ship the binaries
 	  <file>/usr/bin/tclsh&XY;</file>,
-	  <file>/usr/bin/wish&XY;</file> and
-	  core modules and extensions of the upstream Tcl/Tk distribution. 
-	  Any Tcl package includes a <var>Provides:</var> item of the virtual package 
-	  &tclsh; and any Tk package includes a <var>Provides:</var> 
-	  item for the &wish; virtual package.
-	  They also provide alternatives for files
+	  <file>/usr/bin/wish&XY;</file>.
+	  Starting from Jessie they don't provide alternatives for files
 	  <file>/usr/bin/tclsh</file> and
-	  <file>/usr/bin/wish</file>.
+	  <file>/usr/bin/wish</file>. If an applicaton uses one of those, it
+	  has to depend on &tcl; or &tk; package.
 	</p>
 	<p>
-	  Tools and files for the <em>development</em> of Tcl/Tk packages are split off in two
-	  separate packages &tclXY-dev; and &tkXY-dev;.
+	  Tools and files for the <em>development</em> of Tcl/Tk extensions are split off in two
+	  separate packages &libtclXY-dev; and &libtkXY-dev; (They provide virtual packages
+	  &tclXY-dev; and &tkXY-dev; for backward compatibility with older version of the
+	  policy).
 	  Documentation is provided separately in packages &tclXY-doc; and &tkXY-doc;.
 	</p>
       </sect>
@@ -173,15 +187,17 @@
           <heading>Interpreters Names</heading>
           <p>
 	    Tcl/Tk scripts depending on the default Tcl/Tk version (see <ref
-	    id="base">) or not depending on a specific Tcl/Tk version should
-	    use <file>tclsh</file> and/or <file>wish</file>(unversioned) 
-	    as the interpreter name.
+	    id="base">) or not depending on a specific Tcl/Tk version must
+	    use <file>tclsh</file> and/or <file>wish</file>
+	    (unversioned) as the interpreter name and must depend on &tcl; and/or
+	    &tk; package.
 	    </p>
           <p>
 	    Tcl/Tk scripts that only work with a specific Tcl/Tk version must
 	    explicitely use the versioned interpreter name
 	    (<file>tclsh&XY;</file> and/or <file>wish&XY;</file>)
-	    and must depend on the specific Tcl/Tk versioned package.
+	    and must depend on the specific Tcl/Tk versioned package (&tclXY;
+	    and/or &tkXY; respectively).
           </p>
         </sect1>
         <sect1 id="interpreter_loc">
@@ -201,13 +217,11 @@
 	    possibility to override the Debian Tcl interpreter, he
 	    may want to use <file>/usr/bin/env tclsh</file> or
 	    <file>/usr/bin/env tclsh&XY;</file>. The same consideration
-	    applies for Tk and the <file>wish</file> interpreter. Administrators could also
+	    applies for Tk and the <file>wish</file> interpreter.
+	    Starting from Jessie administrators no longer can
 	    override default versions of the interpreters 
-	    using <tt>update-alternatives</tt>,
-	    so maintainers must always consider that the default Tcl/Tk 
-	    interpreters could be altered by administrators, so packages
-	    should always require a compatible version to avoid issues,
-	    when appropriate.
+	    using <tt>update-alternatives</tt>, which provided some
+	    flexibility but caused confusion for program maintainers before.
 	  </p>
         </sect1>
       </sect>
@@ -216,12 +230,12 @@
         <heading>Tcl/Tk libraries</heading>
         <p>
          The Tcl and Tk libraries are provided by 
-	 &tclXY; and &tkXY; respectively.
+	 &libtclXY; and &libtkXY; respectively.
 	 These packages install
-	<file>/usr/lib/libtcl&XY;.so.<var>Z</var></file>
-         (soname is <tt>libtcl&XY;.so.<var>Z</var></tt>)
-         and <file>/usr/lib/libtk&XY;.so.<var>Z</var></file>
-	 (soname is <tt>libtk&XY;.so.<var>Z</var></tt>).
+	<file>/usr/lib/$(DEB_HOST_MULTIARCH)/libtcl&XY;.so</file>
+         (soname is <tt>libtcl&XY;.so</tt>)
+         and <file>/usr/lib/$(DEB_HOST_MULTIARCH)/libtk&XY;.so</file>
+	 (soname is <tt>libtk&XY;.so</tt>).
        </p>
       </sect>
 
@@ -229,11 +243,11 @@
         <heading>Tools/files for Development of Tcl/Tk modules and extensions</heading>
         <p>
           Some tools and files for development of Tcl/Tk modules and extensions are
-	  packaged as &tclXY-dev; and &tkXY-dev;.
+	  packaged as &libtclXY-dev; and &libtkXY-dev;.
 	  These packages provide header files as well as static and stub libraries.
 	  Header files are installed in <file>/usr/include/tcl&XY;</file>
 	  directory (for both Tcl and Tk).
-	  Default packages <tt>tcl-dev</tt> and <tt>tk-dev</tt> provide
+	  Default packages &libtcl-dev; and &libtk-dev; provide
 	  symlinks to the right versioned header files directory
 	  <example>
 	/usr/include/tcl -> /usr/include/tcl&XY;
@@ -244,6 +258,17 @@
         </p>
       </sect>
 
+      <sect id="multiarch">
+        <heading>Multiarch support</heading>
+        <p>
+         The Tcl and Tk libraries and development packages can be installed
+	 for several architectures simultaneously. They ship architecture
+	 dependent files in <file>/usr/lib/$(DEB_HOST_MULTIARCH)</file> directory.
+	 See also section <ref id="debian_oddities"> for information on how to package
+	 multiarchified Tcl/Tk extension.
+       </p>
+      </sect>
+
       <sect id="paths">
 	<heading>Auto_load Path</heading>
 	<p>
@@ -260,6 +285,7 @@
 	  <tag>Packaged modules and extensions:</tag>
 	  	<item>
 		 <example>
+	/usr/lib/tcltk/$(DEB_HOST_MULTIARCH) (architecture dependent files)
 	/usr/lib/tcltk (architecture dependent files)
 	/usr/share/tcltk (architecture independent files)
 		 </example>
@@ -326,21 +352,15 @@
 	<heading>Dependencies</heading>
 	<p>
 	  Packaged modules available for one particular version of Tcl/Tk must
-	  depend on the corresponding &tclXY; and/or &tkXY; package.
+	  depend on the corresponding &libtclXY; and/or &libtkXY; package if they don't
+	  contain Tcl/Tk scripts, and on &tclXY; and/or &tkXY; package if they do.
 	</p>
         <p>
 	  The recommended dependencies of version-independent packages are the following:
 	  If the package works in all available Tcl/Tk versions it should depend on
-	  &tcl; (>= &XY;) | &tclsh; or &tk; (>= &XY;) | &wish; (version in parentheses is optional).
-	  If the package works with current and future Tcl/Tk versions it should depend on
-	  the default packages &tcl; or &tk;.
-	  It is not recommended to use dependency on virtual packages &tclsh; and &wish; 
-	  because it would make transition to a newer default Tcl/Tk version less convenient,
-	  and because they cannot be used to express any versioning constraints (strict or relaxed).
-	  In one cases they still could be useful: an administrator could be interested in not installing
-	  the default Tcl/Tk versions and use a local package or some older version instead. The administrator
-	  can do that at his/her own risk, due to the missing version control, and in the hypothesis
-	  that modules and extensions are able to manage nicely unexpected versions.
+	  &libtcl; or &libtk; (&tcl; or &tk; if it includes Tcl/Tk scripts). If the package
+	  works for several Tcl/Tk versions (but not for all) it should depend on all
+	  of them alternatively (e.g. <package>libtcl8.5</package> | <package>libtcl8.4</package>).
 	</p>
       </sect>
 
@@ -353,8 +373,7 @@
 	  Programs that can run with any version of Tcl/Tk should be started
 	  with <tt>#!/usr/bin/tclsh</tt> or <tt>#!/usr/bin/wish</tt>.  
 	  They must also specify a dependency on default 
-	  packages &tcl; and/or &tk; with possible alternatives &tclsh; and/or
-	  &wish; virtual packages.
+	  packages &tcl; and/or &tk;.
 
 	  You're free to use <tt>#!/usr/bin/env tclsh</tt> and <tt>#!/usr/bin/env wish</tt>, 
 	  if you'd like to give the user a chance to override the Debian Tcl/Tk package with a
@@ -396,16 +415,16 @@
 	following packages (with or without additional package version 
 	relationships):
 	<example>
-	tcl-dev
-	tk-dev
-	tcl&XY;-dev
-	tk&XY;-dev
+	libtcl-dev
+	libtk-dev
+	libtcl&XY;-dev
+	libtk&XY;-dev
 	</example>
       </p>
       <p>
         For example, <package>tclreadline</package> build dependencies are the following:
 	<example>
-	Build-Depends: debhelper (>= 5.0.0), <var>tcl-dev</var>,
+	Build-Depends: debhelper (>= 5.0.0), <var>libtcl-dev</var>,
 	 libreadline5-dev, autotools-dev, quilt
 	</example>
       </p>
@@ -428,7 +447,7 @@
       <p>
 	Due to limitations of current autobuild daemon
 	it is forbidden to use build dependencies on the virtual packages
-	&tclsh; or &wish; only. These dependencies cannot guarantee consistent build environment,
+	&libtcl; or &libtk; only. These dependencies cannot guarantee consistent build environment,
 	so it is mandatory to prepend a preferred Tcl/Tk version before each of the virtual packages.
       </p>
     </appendix>
@@ -461,8 +480,9 @@
       Extensions using TEA with local copies of <file>tcl.m4</file>,
       or which use custom guesses about Tcl/Tk configuration could require explicit use of
       <example>
-	--with-tcl=/usr/share/tcltk/tcl&XY;
-	--with-tk=/usr/share/tcltk/tk&XY;
+	--with-tcl=/usr/lib/tcl&XY;
+	--with-tk=/usr/lib/tk&XY;
+	--with-tclincludes=/usr/include/tcl&XY;
       </example>
       or other custom hacks.
       </p>
@@ -479,11 +499,11 @@
 	Scripts can include a <file>package require ?-exact? Tcl X.Y</file> or 
 	<file>package require ?-exact? Tk X.Y</file>, for instance.
 	In those cases, use a versioned
-	dependency on one of the default packages (&tcl;, &tk;, &tcl-dev; or
-	&tk-dev;), e.g. &tcl; (>= &XY;).
+	dependency on one of the default packages (&tcl;, &tk;, &libtcl-dev; or
+	&libtk-dev;), e.g. &tcl; (>= &XY;).
 	That is recommend instead of versioned packages dependencies, which are anyway
 	supported for compatibility with past conventions. Note also that &tk;
-	depends on &tcl; and &tk-dev; depends on &tcl-dev;.
+	depends on &tcl; and &libtk-dev; depends on &libtcl-dev;.
 	</item>
 	<item>
 	Always install your package stuff in a per-package sub-directory of
@@ -491,22 +511,20 @@
 	shared library extensions) along with the needed index file (see <ref id="modules_loading">).
 	</item>
 	<item>
+	If your package supports multiarch install its index file into a subdirectory of
+	<file>/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)</file> directory. Tcl/Tk cannot determine
+	multiarch triplet in runtime, so package indices for different architectures must differ.
+	</item>
+	<item>
 	This policy customizes <var>auto_path</var> differently with respect to
-	generic upstream UNIX platforms, so that you should use preferably 
+	generic upstream UNIX platforms, so that you should use preferably
 	system provided <file>tcl.m4</file>. Occasionally 
 	that could either require custom hacks for non TEA-based building systems, or 
 	using <file>--with-tcl</file> or <file>--with-tk</file> argument for TEA scripts.
 	</item>
-	<item>
-	Current policy still allows administrators to change default <file>tclsh</file> and
-	<file>wish</file> interpreters to different versions. Your packaged modules
-	and extensions should always be able to cope with that, and eventually to complain and 
-	terminate nicely.
-	</item>
       </enumlist>
       </p>
     </appendix>
 
-
   </book>
 </debiandoc>


Property changes on: policy/trunk/tcltk-policy.sgml
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native




More information about the Pkg-tcltk-commits mailing list