From: Stuart Cassoff Subject: textproc/tdom for Tcl 8 and 9 To: OpenBSD Ports Date: Fri, 7 Aug 2026 14:22:03 -0400 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 @@ -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 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