[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