[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Debian tcl/tk policy: where to put shared libs?


I need some help packaging Tcl language bindings for ITK [1].  I've
read the policy (in package tcl-doc) but I'm not sure whether
I'm doing the right thing.

I am essentially tcl illiterate, so please explain things in full.
Examples help.

ITK generates about 9 shared libs and 4 .tcl files, including a
pkgIndex.tcl.  I'm only building for the default version of tcl right
now, so I created a package tcl8.4-insighttoolkit3 and installed the
tcl files into /usr/share/tcltk/tcl8.4/insighttoolkit3.  Does that
sound right?

Now: where do the shared libs go?  If this is covered in the policy, I
have missed it.  I decided to put them into /usr/lib.

The pkgIndex.tcl file contains the following

  proc ConfigureTclPackage {libName version} {
    set libPrefix "lib"
    set libPath "[file dirname [file dirname [info script]]]"
    set libExt [info sharedlibextension]
    set libFile [file join $libPath "$libPrefix$libName$libExt"]
    set package [string tolower $libName]

    package ifneeded $package $version "
      namespace eval ::itk::loader {
        set curDir \[pwd\]
        cd {$libPath}
        if {\[catch { load \"$libFile\" } errorMessage \]} { puts \$errorMessage }
        cd \$curDir

With some puts-style debugging (as mentioned, I'm tcl illiterate), I
concluded that this snippet is expecting the shared libs in the parent
directory of that containing pkgIndex.tcl; i.e. libPath is set to
/usr/share/tcltk/tcl8.4.  Is this common practice or is it an upstream
quirk?  It doesn't strike me as a good idea to put shared objects into

My current plan is simply to patch this to read

    set libPath "/usr/lib"

But that just as well could be "/usr/lib/tcltk/...." or somesuch.
Hence my question about where to put shared libs.

Any additional insights or pointers are most welcome.  This is
my first attempt at packaging Tcl bindings.


[1] http://packages.qa.debian.org/i/insighttoolkit.html
The Tcl bindings are not yet present; it will be a new package
appearing with version 3.6.0.

P.S. I searched in vain for a debian-tcl mailing list, so I'm sending
this to debian-devel as well as the two names listed in the Tcl/Tk
policy package and the pkg-tcltk-devel list.  If this is not the right
place, please advise and do feel free to forward this email to the
right place.

Attachment: signature.asc
Description: Digital signature

Reply to: