[Pkg-tcltk-commits] r1567 - in tcltk-defaults/branches/experimental: . debian
sgolovan at alioth.debian.org
sgolovan at alioth.debian.org
Thu Feb 20 17:14:20 UTC 2014
Author: sgolovan
Date: 2014-02-20 17:14:20 +0000 (Thu, 20 Feb 2014)
New Revision: 1567
Modified:
tcltk-defaults/branches/experimental/debian/changelog
tcltk-defaults/branches/experimental/debian/tcl.preinst
tcltk-defaults/branches/experimental/debian/tk.preinst
tcltk-defaults/branches/experimental/tcltk-policy.sgml
Log:
[tcltk-defaults]
* Added new substitution variables ${tclXY:Depends} and ${tkXY:Depends}
to tcltk-depends script.
* Fixed version comparison in tcl.prerm and tk.prerm.
* Updated the Debian Tcl/Tk policy.
Modified: tcltk-defaults/branches/experimental/debian/changelog
===================================================================
--- tcltk-defaults/branches/experimental/debian/changelog 2014-02-12 09:32:46 UTC (rev 1566)
+++ tcltk-defaults/branches/experimental/debian/changelog 2014-02-20 17:14:20 UTC (rev 1567)
@@ -1,9 +1,11 @@
-tcltk-defaults (8.6.0+7) UNRELEASED; urgency=low
+tcltk-defaults (8.6.0+7) experimental; urgency=low
* Added new substitution variables ${tclXY:Depends} and ${tkXY:Depends}
to tcltk-depends script.
+ * Fixed version comparison in tcl.prerm and tk.prerm.
+ * Updated the Debian Tcl/Tk policy.
- -- Sergei Golovan <sgolovan at debian.org> Fri, 04 Oct 2013 17:29:33 +0400
+ -- Sergei Golovan <sgolovan at debian.org> Thu, 20 Feb 2014 21:13:23 +0400
tcltk-defaults (8.6.0+6) experimental; urgency=low
Modified: tcltk-defaults/branches/experimental/debian/tcl.preinst
===================================================================
--- tcltk-defaults/branches/experimental/debian/tcl.preinst 2014-02-12 09:32:46 UTC (rev 1566)
+++ tcltk-defaults/branches/experimental/debian/tcl.preinst 2014-02-20 17:14:20 UTC (rev 1567)
@@ -5,7 +5,7 @@
case "$1" in
install|upgrade)
# Currently the alternatives mechanism is not used
- if dpkg --compare-versions "$2" lt-nl "8.6.0-2"; then
+ if dpkg --compare-versions "$2" lt-nl "8.6.0+2"; then
update-alternatives --remove-all tclsh || true
fi
;;
Modified: tcltk-defaults/branches/experimental/debian/tk.preinst
===================================================================
--- tcltk-defaults/branches/experimental/debian/tk.preinst 2014-02-12 09:32:46 UTC (rev 1566)
+++ tcltk-defaults/branches/experimental/debian/tk.preinst 2014-02-20 17:14:20 UTC (rev 1567)
@@ -5,7 +5,7 @@
case "$1" in
install|upgrade)
# Currently the alternatives mechanism is not used
- if dpkg --compare-versions "$2" lt-nl "8.6.0-2"; then
+ if dpkg --compare-versions "$2" lt-nl "8.6.0+2"; then
update-alternatives --remove-all wish || true
fi
;;
Modified: tcltk-defaults/branches/experimental/tcltk-policy.sgml
===================================================================
--- tcltk-defaults/branches/experimental/tcltk-policy.sgml 2014-02-12 09:32:46 UTC (rev 1566)
+++ tcltk-defaults/branches/experimental/tcltk-policy.sgml 2014-02-20 17:14:20 UTC (rev 1567)
@@ -1,19 +1,24 @@
+<!-- $Id: tcltk-policy.sgml 1562 2014-02-08 20:28:02Z sgolovan $ -->
<!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 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 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 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 tkXY-doc "<package>tk&XY;-doc</package>">
+<!ENTITY tkXY-dev "<package>tk&XY;-dev</package>">
]>
<debiandoc>
<book>
@@ -27,19 +32,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,18 +80,20 @@
<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 reference 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
@@ -102,7 +109,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 +119,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,23 +152,24 @@
<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 application 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
+ Tools and files for the <em>development</em> of Tcl/Tk extensions are split off in two
separate packages &tclXY-dev; and &tkXY-dev;.
Documentation is provided separately in packages &tclXY-doc; and &tkXY-doc;.
</p>
@@ -173,15 +181,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
+ explicitly 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 +211,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 +224,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>
@@ -233,7 +241,7 @@
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 &tcl-dev; and &tk-dev; provide
symlinks to the right versioned header files directory
<example>
/usr/include/tcl -> /usr/include/tcl&XY;
@@ -244,6 +252,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 +279,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 +346,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 +367,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
@@ -405,8 +418,8 @@
<p>
For example, <package>tclreadline</package> build dependencies are the following:
<example>
- Build-Depends: debhelper (>= 5.0.0), <var>tcl-dev</var>,
- libreadline5-dev, autotools-dev, quilt
+ Build-Depends: debhelper (>= 8.0.0), dpkg-dev (>= 1.16.1~), <var>tcl-dev</var>,
+ libreadline5-dev, autotools-dev
</example>
</p>
<p>
@@ -421,14 +434,14 @@
<p>
For example, <package>tcllib</package> build dependencies are the following:
<example>
- Build-Depends: debhelper (>= 5.0.0), quilt
+ Build-Depends: debhelper (>= 8.9.7)
Build-Depends-Indep: <var>tcl</var>
</example>
</p>
<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 +474,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>
@@ -491,22 +505,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>
More information about the Pkg-tcltk-commits
mailing list