textproc/tdom for Tcl 8 and 9

Stuart Cassoff <[email protected]>
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
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 <[email protected]>
@@ -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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.