Download raw body.
textproc/tdom for Tcl 8 and 9
A linkable lib type port.
Build for Tcl 8 and 9.
diff -Nurp /usr/ports/textproc/tdom/Makefile ./Makefile
--- /usr/ports/textproc/tdom/Makefile Sat Nov 15 07:30:26 2025
+++ ./Makefile Fri Aug 7 11:56:38 2026
@@ -1,10 +1,14 @@
-COMMENT = fast XML/DOM/XPath/XSLT/HTML/JSON extension for Tcl
+COMMENT = fast XML/DOM/XPath/XSLT/HTML/JSON extension for Tcl ${MODTCL_COMMENT}
+REVISION = 0
+
V = 0.9.6
VER = ${V:S/.//g}
DISTNAME = tdom-${V}
-SHARED_LIBS = tdom${VER} 0.0
+
+SHARED_LIBS = ${MODTCL_EXTLIB}tdom${VER} 0.0
+
CATEGORIES = textproc
HOMEPAGE = http://www.tdom.org/
MAINTAINER = Stuart Cassoff <stwo@users.sourceforge.net>
@@ -18,7 +22,6 @@ EXTRACT_SUFX = -src.tgz
WANTLIB = expat
MODULES = lang/tcl
-MODTCL_VERSION = 8.6
BUILD_DEPENDS = ${MODTCL_BUILD_DEPENDS}
RUN_DEPENDS = ${MODTCL_RUN_DEPENDS}
@@ -26,22 +29,48 @@ RUN_DEPENDS = ${MODTCL_RUN_DEPENDS}
FAKE_FLAGS = PKG_DIR=tdom \
pkglibdir='$$(libdir)/tcl/$$(PKG_DIR)'
+TEST_FLAGS = TESTFLAGS='${TESTFLAGS}'
+
SEPARATE_BUILD = Yes
CONFIGURE_STYLE = gnu
CONFIGURE_ARGS += --with-tcl=${MODTCL_LIBDIR} \
--with-expat=/usr \
--disable-rpath \
- SHLIB_VERSION=${LIBtdom${VER}_VERSION}
+ SHLIB_VERSION=${LIB${MODTCL_EXTLIB}tdom${VER}_VERSION}
TEST_TARGET = test
-SUBST_VARS = VER
+SUBST_VARS = VER MODTCL_EXTLIB MODTCL_EXT8 MODTCL_EXT9
+
WRKDIST = ${WRKDIR}/${DISTNAME}-src
+# Use TESTFLAGS to control the Tdom tests
+TESTFLAGS =
+
+FLAVORS = tcl8
+FLAVOR ?=
+
+.if ${FLAVOR:Mtcl8}
+MODTCL_VERSION = 8.6
+.else
+MODTCL_VERSION = 9
+INSTALL_TARGET = all install-lib-binaries
+RUN_DEPENDS += textproc/tdom,tcl8
+TEST_FLAGS += TCLSH_PROG=${MODTCL_BIN}
+.endif
+
+.if ${FLAVOR:Mtcl8}
post-install:
${INSTALL_DATA_DIR} ${DESTDIR}${MODTCL_MODDIR}/86
${INSTALL_DATA} ${WRKSRC}/extensions/tdomhtml/tdomhtml.tcl \
${DESTDIR}${MODTCL_MODDIR}/86/tdomhtml-0.1.0.tm
+.else
+post-install:
+ rm ${WRKINST}${MODTCL_TCLDIR}/tdom/{pkgIndex.tcl,tdom.tcl}
+ ${INSTALL_DATA_DIR} ${WRKINST}${MODTCL_TCLDIR}/tdom/tcl9
+ mv ${WRKINST}${MODTCL_TCLDIR}/tdom/tdomConfig.sh \
+ ${WRKINST}${MODTCL_TCLDIR}/tdom/tcl9/
+.endif
.include <bsd.port.mk>
diff -Nurp /usr/ports/textproc/tdom/patches/patch-configure ./patches/patch-configure
--- /usr/ports/textproc/tdom/patches/patch-configure Sat Nov 15 07:30:26 2025
+++ ./patches/patch-configure Thu Aug 6 11:34:20 2026
@@ -1,8 +1,20 @@
-Set this here so it propagates through everything.
+Libs go in ${LOCALBASE}/lib.
+Consistent naming convention for stub libs.
+Set here to propagate through everything.
+
Index: configure
--- configure.orig
+++ configure
+@@ -9066,7 +9066,7 @@ $as_echo "#define TCL_MAJOR_VERSION 8" >>confdefs.h
+ fi
+ # Some packages build their own stubs libraries
+ if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" = x; then
+- eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub.a"
++ eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX9}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ else
+ eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ fi
@@ -9322,7 +9322,7 @@ TDOMSHELL=tcldomsh
#--------------------------------------------------------------------
@@ -12,3 +24,13 @@ Index: configure
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
eval tdom_LIB_FLAG="-ltdom${PACKAGE_VERSION}"
eval tdom_STUB_LIB_FLAG="-ltdomstub${PACKAGE_VERSION}"
+@@ -9331,7 +9331,8 @@ TDOMSHELL=tcldomsh
+ eval tdom_STUB_LIB_FLAG="-ltdomstub`echo ${PACKAGE_VERSION} | tr -d .`"
+ fi
+ if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" = x; then
+- eval tdom_STUB_LIB_FLAG="-ltdomstub"
++ eval tdom_LIB_FLAG="-ltcl9tdom`echo ${PACKAGE_VERSION} | tr -d .`"
++ eval tdom_STUB_LIB_FLAG="-ltcl9tdomstub`echo ${PACKAGE_VERSION} | tr -d .`"
+ fi
+
+ tdom_BUILD_LIB_SPEC="-L`$CYGPATH $(pwd)` ${tdom_LIB_FLAG}"
diff -Nurp /usr/ports/textproc/tdom/pkg/PLIST ./pkg/PLIST
--- /usr/ports/textproc/tdom/pkg/PLIST Sat Nov 15 07:30:26 2025
+++ ./pkg/PLIST Thu Aug 6 11:53:00 2026
@@ -1,18 +1,21 @@
-include/tdom.h
-@lib lib/libtdom${VER}.so.${LIBtdom${VER}_VERSION}
-@static-lib lib/libtdomstub${VER}.a
-lib/tcl/modules/86/tdomhtml-0.1.0.tm
-lib/tcl/tdom/
-lib/tcl/tdom/pkgIndex.tcl
-lib/tcl/tdom/tdom.tcl
-lib/tcl/tdom/tdomConfig.sh
-@man man/mann/dom.n
-@man man/mann/domDoc.n
-@man man/mann/domNode.n
-@man man/mann/expat.n
-@man man/mann/expatapi.n
-@man man/mann/pullparser.n
-@man man/mann/schema.n
-@man man/mann/tdomcmd.n
-@man man/mann/tnc.n
-@man man/mann/xpathFunc.n
+@option no-default-conflict
+${MODTCL_EXT8}include/tdom.h
+@lib lib/lib${MODTCL_EXTLIB}tdom${VER}.so.${LIB${MODTCL_EXTLIB}tdom${VER}_VERSION}
+@static-lib lib/lib${MODTCL_EXTLIB}tdomstub${VER}.a
+${MODTCL_EXT8}lib/tcl/modules/86/tdomhtml-0.1.0.tm
+${MODTCL_EXT8}lib/tcl/tdom/pkgIndex.tcl
+${MODTCL_EXT8}lib/tcl/tdom/tdom.tcl
+${MODTCL_EXT8}lib/tcl/tdom/tdomConfig.sh
+${MODTCL_EXT8}@man man/mann/dom.n
+${MODTCL_EXT8}@man man/mann/domDoc.n
+${MODTCL_EXT8}@man man/mann/domNode.n
+${MODTCL_EXT8}@man man/mann/expat.n
+${MODTCL_EXT8}@man man/mann/expatapi.n
+${MODTCL_EXT8}@man man/mann/pullparser.n
+${MODTCL_EXT8}@man man/mann/schema.n
+${MODTCL_EXT8}@man man/mann/tdomcmd.n
+${MODTCL_EXT8}@man man/mann/tnc.n
+${MODTCL_EXT8}@man man/mann/xpathFunc.n
+${MODTCL_EXT8}lib/tcl/tdom/
+${MODTCL_EXT9}lib/tcl/tdom/tcl9/
+${MODTCL_EXT9}lib/tcl/tdom/tcl9/tdomConfig.sh
textproc/tdom for Tcl 8 and 9