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}


Reply via email to