Tcl 9 was released this year and I'd like to add it to the ports tree soon.
Here's an updated tcl.port.mk and diff. One thing I'd like is to have "9" instead of "9.0" in files and dirs, like "tclsh9" instead of "tclsh9.0", the port dir itself would be "tcl9". A future Tcl 9.1 would simply replace any 9.0. I think it would be good/possible to just try to have only one Tcl 9, and eventually only one Tcl: 9. A port would still have to set MODTCL_VERSION to "9.0", primarily since having "9" as the value of a subst var will wreak havoc with plists! To facilitate that, I've copied the idea of default versions vars from the python.port.mk. Feedback greatly appreciated, Stu CATEGORIES += lang/tcl MODTCL_DEFAULT_VERSION_8 = 8.5 MODTCL_DEFAULT_VERSION_9 = 9.0 MODTCL_VERSION ?= ${MODTCL_DEFAULT_VERSION_8} .if ${MODTCL_VERSION} == 8.5 _MODTCL_SPEC = tcl->=${MODTCL_VERSION},<8.6 MODTCL_LIB ?= tcl85 MODTCL_VER = 8.5 .elif ${MODTCL_VERSION} == 8.6 _MODTCL_SPEC = tcl->=${MODTCL_VERSION},<8.7 MODTCL_LIB ?= tcl86 MODTCL_VER = 8.6 .elif ${MODTCL_VERSION} == 9.0 _MODTCL_SPEC = tcl->=9.0,<9.1 MODTCL_LIB ?= tcl90 MODTCL_VER = 9 .endif MODTCL_BIN ?= ${LOCALBASE}/bin/tclsh${MODTCL_VER} MODTCL_INCDIR ?= ${LOCALBASE}/include/tcl${MODTCL_VER} MODTCL_TCLDIR ?= ${LOCALBASE}/lib/tcl MODTCL_MODDIR ?= ${LOCALBASE}/lib/tcl/modules MODTCL_LIBDIR ?= ${MODTCL_TCLDIR}/tcl${MODTCL_VER} MODTCL_CONFIG ?= ${MODTCL_LIBDIR}/tclConfig.sh MODTCL_BUILD_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} MODTCL_RUN_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} MODTCL_LIB_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} MODTCL_WANTLIB ?= ${MODTCL_LIB} # Handle the two most commonly used methods # for starting up executable Tcl scripts. # See http://wiki.tcl.tk/812 for more information. # Set 'tclsh' for executable scripts (in-place modification). # Do not convert (tcl|wi)sh to (tclsh|wish), or the MODTCL_WISH_ADJ # macro below will be broken. MODTCL_TCLSH_ADJ = perl -pi \ -e '$$. == 1 && s!/\S*(?:/env\s+|bin/)(?:tcl|wi)sh\S*(\s+.+)?$$!${MODTCL_BIN}$$1!;' \ -e '$$. >= 3 && $$. <= 30 && s!exec\s+(?:tcl|wi)sh.*$$!exec ${MODTCL_BIN} "\$$0" \$${1+"\$$@"}!;' \ -e 'close ARGV if eof;' # Same for 'wish'. MODTCL_WISH_ADJ = ${MODTCL_TCLSH_ADJ:S/tclsh/wish/} SUBST_VARS += MODTCL_VERSION MODTCL_BIN Index: tcl.port.mk =================================================================== RCS file: /cvs/ports/lang/tcl/tcl.port.mk,v diff -u -p -u -p -r1.18 tcl.port.mk --- tcl.port.mk 11 Mar 2022 19:29:17 -0000 1.18 +++ tcl.port.mk 14 Jan 2025 17:24:33 -0000 @@ -1,25 +1,34 @@ CATEGORIES += lang/tcl -MODTCL_VERSION ?= 8.5 +MODTCL_DEFAULT_VERSION_8 = 8.5 +MODTCL_DEFAULT_VERSION_9 = 9.0 + +MODTCL_VERSION ?= ${MODTCL_DEFAULT_VERSION_8} .if ${MODTCL_VERSION} == 8.5 _MODTCL_SPEC = tcl->=${MODTCL_VERSION},<8.6 MODTCL_LIB ?= tcl85 +MODTCL_VER = 8.5 .elif ${MODTCL_VERSION} == 8.6 _MODTCL_SPEC = tcl->=${MODTCL_VERSION},<8.7 MODTCL_LIB ?= tcl86 +MODTCL_VER = 8.6 +.elif ${MODTCL_VERSION} == 9.0 +_MODTCL_SPEC = tcl->=9.0,<9.1 +MODTCL_LIB ?= tcl90 +MODTCL_VER = 9 .endif -MODTCL_BIN ?= ${LOCALBASE}/bin/tclsh${MODTCL_VERSION} -MODTCL_INCDIR ?= ${LOCALBASE}/include/tcl${MODTCL_VERSION} +MODTCL_BIN ?= ${LOCALBASE}/bin/tclsh${MODTCL_VER} +MODTCL_INCDIR ?= ${LOCALBASE}/include/tcl${MODTCL_VER} MODTCL_TCLDIR ?= ${LOCALBASE}/lib/tcl MODTCL_MODDIR ?= ${LOCALBASE}/lib/tcl/modules -MODTCL_LIBDIR ?= ${MODTCL_TCLDIR}/tcl${MODTCL_VERSION} +MODTCL_LIBDIR ?= ${MODTCL_TCLDIR}/tcl${MODTCL_VER} MODTCL_CONFIG ?= ${MODTCL_LIBDIR}/tclConfig.sh -MODTCL_BUILD_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VERSION} -MODTCL_RUN_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VERSION} -MODTCL_LIB_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VERSION} +MODTCL_BUILD_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} +MODTCL_RUN_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} +MODTCL_LIB_DEPENDS ?= ${_MODTCL_SPEC}:lang/tcl/${MODTCL_VER} MODTCL_WANTLIB ?= ${MODTCL_LIB}