[Pkg-tcltk-devel] Bug#1101146: tdom: Consider enabling build for Tcl 9.0
Sergei Golovan
sgolovan at debian.org
Sun Mar 23 20:13:38 GMT 2025
Source: tdom
Version: 0.9.5.1-2
Severity: normal
Tags: patch
Dear Maintainer,
Please, consider enabling build of tDom for Tcl 9.0 which is already
in unstable and testing, so the more extensions support Tcl 9.0 the
better.
I've created a branch on salsa: https://salsa.debian.org/tcltk-team/tdom/-/tree/tcl9?ref_type=heads
The main change is in debian/rules: code which configures/builds all
three extensions is now wrapped by a loop on Tcl versions (9.0 and 8.6).
Actual build happens in debian/9.0 and debian/8.6 subdirectories.
It's worth menitioning that one test fails for tDom under Tcl 9 for me:
parsing of a very long string fails with an out of memory error (this
test doesn't run for Tcl 8.6). I guess it's not too bad to allow tDom
with this failed test to the Debian archive, but it definitely needs
to be investigated.
Also, I did not adapt the autopkgtest code to Tcl 9 yet.
For convenience, I've attached the diff between the current
debian/latest and tcl9 branches here.
-- System Information:
Debian Release: 12.10
APT prefers stable-security
APT policy: (500, 'stable-security'), (500, 'proposed-updates'), (500, 'stable'), (1, 'experimental'), (1, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.12.9+bpo-amd64 (SMP w/24 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
-- no debconf information
-------------- next part --------------
diff --git a/debian/changelog b/debian/changelog
index 60d37f7..60a9d0e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,9 @@ tdom (0.9.5.1-3) UNRELEASED; urgency=medium
[ Hector Romojaro ]
* Remove build-stamp and debian/rules cleanup
+ [ Sergei Golovan ]
+ * Build two sets of libraries, one for Tcl 8.6 and another for Tcl 9.0.
+
-- Hector Romojaro <hector.romojaro at gmail.com> Fri, 28 Feb 2025 15:08:48 +0100
tdom (0.9.5.1-2) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index e3d3168..8e394b1 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: libs
Priority: optional
Maintainer: Tcl/Tk Debian Packagers <pkg-tcltk-devel at lists.alioth.debian.org>
Uploaders: Hector Romojaro <hector.romojaro at gmail.com>, Stefan Sobernig <stefan.sobernig at wu-wien.ac.at>
-Build-Depends: debhelper (>= 13), tcl-dev, libexpat1-dev, libgumbo-dev, pkgconf, debhelper-compat (= 13)
+Build-Depends: debhelper (>= 13), tcl-dev, tcl8.6-dev, tcl9.0-dev, libexpat1-dev, libgumbo-dev, pkgconf, debhelper-compat (= 13)
Rules-Requires-Root: no
Standards-Version: 4.7.2
Homepage: http://tdom.org/
@@ -14,6 +14,7 @@ Package: tdom
Architecture: any
Multi-Arch: same
Depends: ${tclsh:Depends}, ${shlibs:Depends}, ${misc:Depends}
+Provides: tcl-tdom (= ${binary:Version}), tcl8.6-tdom (= ${binary:Version}), tcl9.0-tdom (= ${binary:Version})
Description: fast XML/DOM/XPath/XSLT/HTML/JSON extension for Tcl written in C
tDOM takes advantage of Expat, the XML parser from James Clark,
including namespace and DTD support. It includes a modified version
diff --git a/debian/rules b/debian/rules
index fe976f3..a580c4a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -3,6 +3,8 @@
#export DH_VERBOSE=1
#export DH_OPTIONS=-v
+TCLVERSIONS = 9.0 8.6
+
# Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
@@ -25,70 +27,102 @@ DEV=$(CURDIR)/debian/tdom-dev
ARCH_DEPENDENT=$(CURDIR)/debian/tdom/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)
STUB_LIBDIR=/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)/tdom$(VERSION)
+override_dh_autoreconf:
+ [ -f configure.backup ] || cp configure configure.backup
+ dh_autoreconf
+
override_dh_auto_configure:
+ for v in $(TCLVERSIONS) ; do \
+ mkdir -p debian/$$v ; \
+ done
#
- # Configure tDOM
+ # Configure tDOM"
#
- ( cd unix ; ../configure --host=$(DEB_HOST_GNU_TYPE) \
+ for v in $(TCLVERSIONS) ; do \
+ mkdir -p debian/$$v/unix ; \
+ ( cd debian/$$v/unix ; \
+ ../../../configure --host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=$(CURDIR)/debian/tdom/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
- --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/ \
+ --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$$v \
--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
--enable-threads \
--includedir=$(DEV)/usr/include/tdom \
--with-expat=/usr \
- --enable-html5 )
+ --enable-html5 ) ; \
+ done
#
# Configure tnc extension
#
- ( cd extensions/tnc ; ./configure \
+ for v in $(TCLVERSIONS) ; do \
+ mkdir -p debian/$$v/extensions/tnc ; \
+ ( cd debian/$$v/extensions/tnc ; \
+ ../../../../extensions/tnc/configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=$(CURDIR)/debian/tdom/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
- --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/ \
+ --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$$v \
--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
--enable-threads \
- --includedir=$(DEV)/usr/include/tdom )
+ --includedir=$(DEV)/usr/include/tdom ) ; \
+ done
#
# Configure tdomhtml extension
#
- ( cd extensions/tdomhtml ; ./configure \
+ for v in $(TCLVERSIONS) ; do \
+ mkdir -p debian/$$v/extensions/tdomhtml ; \
+ ( cd debian/$$v/extensions/tdomhtml ; \
+ ../../../../extensions/tdomhtml/configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=$(CURDIR)/debian/tdom/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
- --includedir=$(DEV)/usr/include/tdom )
+ --includedir=$(DEV)/usr/include/tdom ) ; \
+ done
override_dh_auto_build:
#
# Build tDOM and extensions
#
- ( cd unix ; $(MAKE) )
- ( cd extensions/tnc ; $(MAKE) )
- ( cd extensions/tdomhtml ; $(MAKE) )
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/unix ; $(MAKE) ) ; \
+ done
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/extensions/tnc ; $(MAKE) ) ; \
+ done
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/extensions/tdomhtml ; $(MAKE) ) ; \
+ done
override_dh_clean:
#
# Cleanup
#
- -( cd unix; [ ! -f Makefile ] || $(MAKE) distclean; )
- -( cd extensions/tnc; [ ! -f Makefile ] || $(MAKE) distclean; )
- -( cd extensions/tdomhtml; [ ! -f Makefile ] || $(MAKE) distclean; )
+ for v in $(TCLVERSIONS) ; do \
+ rm -rf debian/$$v ; \
+ done
+ [ ! -f configure.backup ] || mv configure.backup configure
dh_clean config.log config.status config.cache config.guess config.sub
override_dh_auto_install:
#
# Install the package into debian/tdom.
#
- ( cd unix/ ; $(MAKE) install )
- ( cd extensions/tnc ; $(MAKE) install )
- ( cd extensions/tdomhtml ; $(MAKE) install)
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/unix ; $(MAKE) install ) ; \
+ done
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/extensions/tnc ; $(MAKE) install ) ; \
+ done
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/extensions/tdomhtml ; $(MAKE) install) ; \
+ done
#
# Remove >empty< man page for tdomhtml extension (note, there is no
# --without-man target available)
@@ -122,9 +156,9 @@ override_dh_auto_install:
#
# Wrapper for tdomConfig on /usr/lib/$(DEB_HOST_MULTIARCH)
#
- sed -i "s/TDOM_VERSION/$(VERSION)/" $(CURDIR)/debian/tdomConfig.sh
install -d -m 755 $(DEV)/usr/lib/$(DEB_HOST_MULTIARCH)
- install $(CURDIR)/debian/tdomConfig.sh $(DEV)/usr/lib/$(DEB_HOST_MULTIARCH)/
+ sed "s/TDOM_VERSION/$(VERSION)/" $(CURDIR)/debian/tdomConfig.sh \
+ >$(DEV)/usr/lib/$(DEB_HOST_MULTIARCH)/tdomConfig.sh
#
# Move tDOM stub library
#
@@ -139,5 +173,7 @@ override_dh_installdeb:
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
- (cd unix/; $(MAKE) test)
+ for v in $(TCLVERSIONS) ; do \
+ ( cd debian/$$v/unix ; $(MAKE) test) ; \
+ done
endif
More information about the Pkg-tcltk-devel
mailing list