[Pkg-tcltk-devel] Providing/ maintaining xotcl extension
Stefan Sobernig
stefan.sobernig at wu-wien.ac.at
Mon Feb 25 11:24:02 UTC 2008
>> I think that it's a good idea to package xotcl for Debian.
>
>> Well, just create the package and I'll be glad to upload it into
>> Debian archive.
>
> Ok ... I will get my hands dirty and complete it as good as I can ...
I finally finished a first, close-to-ready version of an xotcl debian
distribution. Find the build/source at:
http://media.wu-wien.ac.at/download/debian
While being prepared for 1.5.6, I am awaiting the XOTcl 1.5.7 release to
complete the first release candidate to be filed with Debian.
Apart fromt waiting for the upstream release, a couple of questions
popped up in my mind. They are far from being critical to releasing the
packages, but why not tackling them at this point ...
1. SONAME of the xotcl extension/ shared library
I was wondering whether to comply with the Debian Policy clauses on
SONAMEs for "public libraries" is critical to a tcl extension such as
XOTcl and, if so, how to best realise compliance in the source package.
See http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html
"Public libraries" are those being linked against or being linkable (to
put it over-superficially short). In case of tcl extensions this is not
really the case/ a requirement, even if we talk about the xotcl c interface.
Why do I bother? Well, newer releases of dpkg_shlibdeps (shadowed by
dh_shlibdeps) are more strict and they report a warning if
deb-dependencies between packages (Depends:...) are checked for linking
dependencies. See
http://lists.debian.org/debian-devel-announce/2007/09/msg00004.html. So,
provided that I include Depends clauses in the xotcl-doc and xotcl-dev
sub-packages to xotcl, the SONAME libxotclx.x.x.so is reported as
linking dependency. however, libxotclx.x.x.so is missing the SONAME
prefix, e.g. libxotcl.x.x.x.so.1 or the like:
> dpkg-shlibdeps: warning: format of `NEEDED libxotcl1.5.6.so' not recognized
> dpkg-shlibdeps: warning: format of `NEEDED libxotcl1.5.6.so' not recognized
I verified in your source package repository at
http://svn.debian.org/viewsvn/pkg-tcltk/ to find some hints of your way
of proceeding. In the itcl case, you simply provide symlinks with a
proper SONAME prefix, i.e. "libitcl3.1.so.1" . However, I got the
impression that the SONAME should reflect the Debian package version,
e.g. ...-1, ...-2 etc., at least if I got the Debian Policy right in
this respect:
What do you suggest?
According to Raphaël Hertzog, the maintainer of dpkg-shlibdeps,
there are three paths to take (taken from:
http://www.mail-archive.com/debian-dpkg-bugs@lists.debian.org/msg05486.html)
> You have 3 solutions:
> - make sure that the lib has no SONAME so that it's identified by
> dpkg-shlibdeps as a private library
this would mean to rename the xotcl *.so, i.e. strip of the "lib" prefix.
> - add --ignore-missing-info to the dpkg-shlibdeps call (you can pass this via "dh_shlibdeps -- --ignore-missing-info")
this only works with newer dpkg-shlibdeps version (unstable/experimental)
> - add dependency information for this library (shlibs is not possible
> given that it has no version, however symbols files are possible)
i am not quite sure what this means in our case, i guess, providing a
symlink to the *.so file exporting an SONAME (?).
Anyway, these are just warnings, the build processes is not hindered by
those.
2. tcl/tk 8.5 modes of compatibility
XOTcl may come in various compat modes (snippet taken from XOTcl ChangeLog):
a) a native version for Tcl 8.4 (without compatibility layer)
b) a native version for Tcl 8.5
c) a version compiled for Tcl 8.4 with compatibility layer in tclsh8.4
d) a version compiled for Tcl 8.4 with compatibility layer in tclsh8.5
I checked the xotcl package binaries against your tcl8.4 and tcl8.5
builds and they work fine. However, as for the source package, I was
wondering whether there is some magic needed/ required to tell the build
system that xotcl might be build against 8.4/8.5 explicitly. Currently,
build dependencies are generic, i.e.
tcl-dev (>= 8.4), tk-dev (>= 8.4)
In principle this allows builds against 8.5, however, is there a
need/requirement to allow it explicitly, by branching on
DEB_BUILD_OPTIONS etc. in rules???
3. Possible naming clashes of arch-independent packages/extensions
(Debian Tcl/Tk Policy)
The packages are supposed to comply to the Debian Tcl/Tk Policy 0.2.0:
XOTcl comes with some Tcl packages/modules that are
architecture-independent/implemented in XOTcl/Tcl. Following
http://pkg-tcltk.alioth.debian.org/tcltk-policy.html/ch-tcltk.html#s-tcltk-dev,
I re-arranged the default distribution to place those in
/usr/share/tcltk/... . However, your policy is unclear in one respect
(or, to put it different: leaves it to the our discretion): The default
Tcl package require process only diggs immediate subdirectories of
auto_load paths (though one could hook into package unknown and provide
deeper recursion). Provided that all goes into /usr/share/tcltk this
might risk name collision of package directories (those containing
pkgIndex.tcl). Therefore, I (by convention) stick to the following
naming convention xotcl-<version>-<package_directory_name>. Hope, this
is fine. In principle, one could devise an intermediate directoriy, e.g.
"xotcl-<version>", but this would require amendments to the package
require process to go one step deeper ...
Thanks for your thoughts ...
All the best
//stefan
--
Stefan Sobernig
Institute for Information Systems and New Media
Vienna University of Economics
Augasse 2-6
A - 1090 Vienna
`- +43 - 1 - 31336 - 4878 [phone]
`- +43 - 1 - 31336 - 746 [fax]
`- stefan.sobernig at wu-wien.ac.at <mailto:stefan.sobernig at wu-wien.ac.at>
`- ss at thinkersfoot.net <mailto:ss at thinkersfoot.net>
More information about the Pkg-tcltk-devel
mailing list