Synchronize Tcl and binary package versions
Update on 2024-Apr-13 -- Removed Gitlab references
Github makes it easier for me to provide binary package releases along with my source code.
Update on 2024-Mar-23 -- Moving to Github
Development has moved to Github.
The first thing I realized when I started to use
tcladu was the need for
convenience functions. For example, combinations of write_device
and read_device
should be combined into a query
command for
convenience. And it would be nice for those kind of commands to be in
the same tcladu
package. So I started to write some Tcl, and I
realized I didn't really know how to manage the package version with
this high-level addition.
The tcladu.so
binary already provides the tcladu
namespace and
package version. I set this version in a makefile that also drives
testing, so I'd really like the makefile/binary package version to be
the source of truth. So I need to extract that package version in the
convenience code. It turns out that there's a
package command
for this. These links are to Tcl 9.0 documentation, but my usage doesn't
care.
Adding these lines
load ./tcladu.so
set version [package present tcladu]
package provide tcladu $version
...to the tcladu.tcl
source file synchronizes the Tcl and binary
source versions. I can then package this up with
pkg_mkIndex -verbose . tcladu.so tcladu.tcl
...using the pkg_mkIndex command. This produces the pkgIndex.tcl
script distributed with the package source files:
package ifneeded tcladu 1.1.0 [list load [file join $dir tcladu.so]]\n[list source [file join $dir tcladu.tcl]]
...where you can see the combination of sourcing and loading done to make the package available. These convenience functions are coming in tcladu version 1.1.0
.
Image by Freepik