Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Brian Newsgroups: comp.lang.tcl Subject: Re: Can't build TclTLS 2.0b1 Date: Sun, 6 Jul 2025 14:35:47 -0500 Organization: A noiseless patient Spider Lines: 205 Message-ID: <104ej6j$2d4at$1@dont-email.me> References: <1049lbt$12gnk$1@dont-email.me> <0567ed22-5320-4ee4-b8bb-6f94ae0b37ae@comcast.net> <104dtd8$277hu$1@dont-email.me> <104ec79$2am3h$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 06 Jul 2025 21:35:48 +0200 (CEST) Injection-Info: dont-email.me; posting-host="d39bd42acae2a22ef2842b3ba06adde7"; logging-data="2527581"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19VrJC6vZWShWXqEWEdXwEd" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:gZQ372yyydq5qP6blMEwy8+GvV4= Content-Language: en-US In-Reply-To: <104ec79$2am3h$1@dont-email.me> On 7/6/25 12:35 PM, Alan Grunwald wrote: > On 06/07/2025 14:22, Alan Grunwald wrote: >> On 06/07/2025 02:09, Brian wrote: >>> Usually this means it found an older version of OpenSSL. Check which >>> version of OpenSSL you have on your system. You need 1.1.1 or later. >>> On the command line: >>> >>> openssl --version >>> >>> >>> Also you mixed 9.0.1 and 9.0.2. in your paths. When you run the >>> configure script, check the configure output to see what it found. A >>> blank means it will use the default path. The key is that it says it >>> found the ssl.h file. For example: >>> >>> ... >>> checking for Tcl configuration... found /opt/tcl9/lib64/tcl/tclConfig.sh >>> ... >>> checking for Tcl public headers... /opt/tcl9/include >>> ... >>> checking for OpenSSL directory... /usr >>> checking for OpenSSL include directory... /usr/include >>> checking for ssl.h... yes >>> checking for OpenSSL lib directory... /usr/lib64 >>> checking for OpenSSL pkgconfig... >>> checking for tclsh... /opt/tcl9/bin/tclsh9.0 >>> >>> >>> If the OpenSSL is installed in /usr, then the command line args >>> aren't needed. You also don't need them if you have pkgconfig on your >>> system configured. However if you want to be sure to use the right >>> version, here's what I use on OpenSuSe: >>> >>> ./configure --enable-64bit --prefix=/opt/tcl9 --exec-prefix=/opt/tcl9 >>> --libdir=/opt/tcl9/lib64/tcl --with-openssl-dir=/usr --with-openssl- >>> includedir=/usr/include --with-openssl-libdir=/usr/lib64 >>> >>> >>> >>> >>> On 7/4/25 5:40 PM, Alan Grunwald wrote: >>>> I replied to the announcement of this release back in February to >>>> say that I couldn't build it, but I seem to have given up after a >>>> couple of very useful suggestions from the author. >>>> >>>> After seeing the announcement of Tcl 9.0.2 earlier this week, I am >>>> trying again... >>>> >>>> I'm running Linux Mint, 64-bit. I have built Tcl 9.0.2 in /opt/ >>>> tcl9.0.2 and it seems to be working fine, so it's just(?!) a >>>> question of rebuilding the external and homebrew packages that the >>>> half-dozen scripts I use regularly rely on. >>>> >>>> I've downloaded tcltls-2.0b1.tar.gz (to Downloads) and untarred it >>>> (to Downloads/tcltls-2.0b1) >>>> >>>> Using my preferred workflow, I'm sitting in my home directory (the >>>> parent of Downloads) and have typed >>>> >>>> (cd Downloads/tcltls-2.0b1; ./configure --enable-64bit --prefix=/ >>>> opt/ tcl9.0.2 --with-tcl=/opt/tcl9.0.1/lib --with-openssl- >>>> includedir=/usr/ include) >>>> >>>> followed by >>>> >>>> (cd Downloads/tcltls-2.0b1; make) >>>> >>>> This fails quickly with a compilation error: >>>> >>>> ./generic/tlsBIO.c: In function ‘BioOutput’: >>>> ./generic/tlsBIO.c:117:32: error: ‘BIO_FLAGS_IN_EOF’ undeclared >>>> (first use in this function); did you mean ‘BIO_FLAGS_READ’? >>>>    117 |             BIO_set_flags(bio, BIO_FLAGS_IN_EOF); >>>>        |                                ^~~~~~~~~~~~~~~~ >>>> >>>> The compilation command was >>>> >>>> gcc -DPACKAGE_NAME=\"tls\" -DPACKAGE_TARNAME=\"tls\" - >>>> DPACKAGE_VERSION=\"2.0b1\" -DPACKAGE_STRING=\"tls\ 2.0b1\" - >>>> DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DBUILD_tls=/\*\*/ - >>>> DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 - >>>> DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 - >>>> DHAVE_SYS_STAT_H=1 - DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 - >>>> DSTDC_HEADERS=1 - DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 - >>>> D_THREAD_SAFE=1 -DTCL_THREADS=1 - DUSE_TCL_STUBS=1 - >>>> DUSE_TCLOO_STUBS=1 -DMODULE_SCOPE=extern\ >>>> __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DHAVE_HIDDEN=1 - >>>> DHAVE_CAST_TO_UNION=1 -DHAVE_STDBOOL_H=1 -DTCL_WIDE_INT_IS_LONG=1 - >>>> DTCL_CFG_OPTIMIZED=1 -DUSE_TCL_STUBS=1 -DNO_SSL3=1 - >>>> D_FORTIFY_SOURCE=2 - fstack-protector-all -fno-strict-overflow -I/ >>>> usr/include -Wno- deprecated-declarations -I/usr/include -I"/opt/ >>>> tcl9.0.2/include" -I. -O2 -fomit-frame-pointer -DNDEBUG -Wall -fPIC >>>> -pipe -m64 -O2 -fomit- frame-pointer -DNDEBUG -Wall -fPIC  -c >>>> `echo ./generic/tlsBIO.c` -o tlsBIO.o >>>> >>>> Now, line 30 of Downloads/tcltls-2.0b1/generic/tlsBIO.c is >>>> >>>> #include >>>> >>>> and line 209 of /usr/include/openssl/bio.h is >>>> >>>> # define BIO_FLAGS_IN_EOF        0x800 >>>> >>>> What's going on? >>>> >>>> Following the advice in February, I believe I am now putting the >>>> right value on the --with-openssl-includedir flag to configure (I no >>>> longer include /openssl). I'm suspicious that make includes >>>> >>>> -I/usr/include >>>> >>>> twice in the compile command but I don't think it's causing a problem. >>>> >>>> Help! >>>> >>>> Alan >>> >> Brian, >> >> Thanks for spotting that I've mixed 9.0.1 and 9.0.2. Not clever :-(. >> >> I've corrected that, but maybe unsurprisingly it made no difference. >> >> openssl --version returns a syntax error, but >> >> $ openssl version >> OpenSSL 1.1.1  11 Sep 2018 >> >> >> I looked at the extract from the configure output you posted, and >> while mine does find ssl.h, it doesn't say anything about the SSL >> directory: >> >> checking for enable hardening... yes >> checking for static linking of openSSL libraries... no >> checking for OpenSSL directory... >> checking for OpenSSL include directory... /usr/include >> checking for ssl.h... yes >> checking for OpenSSL lib directory... >> checking for OpenSSL pkgconfig... >> >> relevant lines from config.log: >> >> configure:9440: checking for static linking of openSSL libraries >> configure:9442: result: no >> configure:9461: checking for OpenSSL directory >> configure:9463: result: >> configure:9485: checking for OpenSSL include directory >> configure:9487: result: /usr/include >> configure:9491: checking for ssl.h >> configure:9496: result: yes >> configure:9528: checking for OpenSSL lib directory >> configure:9530: result: >> configure:9567: checking for OpenSSL pkgconfig >> configure:9569: result: >> >> and lines 9461-3 of configure are >> >>      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for >> OpenSSL directory" >&5 >> printf %s "checking for OpenSSL directory... " >&6; } >>      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >> $openssldir" >&5 >> printf "%s\n" "$openssldir" >&6; } >> >> It seems that configure isn't setting 'openssl' properly which is >> likely to be a bad thing. >> >> >> I regret I don't remember installing OpenSSL so can't say where it is, >> >> $ which openssl >> /usr/local/bin/openssl >> >> What files are you pointing to with --libdir, --with-openssl-dir and >> --with-openssl-libdir? I can searhc for them and specify the flags >> appropriately. >> ========== REMAINDER OF ARTICLE TRUNCATED ==========