Path: nntp.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Alan Grunwald Newsgroups: comp.lang.tcl Subject: Re: Can't build TclTLS 2.0b1 Date: Sun, 6 Jul 2025 18:35:29 +0100 Organization: A noiseless patient Spider Lines: 179 Message-ID: <104ec79$2am3h$1@dont-email.me> References: <1049lbt$12gnk$1@dont-email.me> <0567ed22-5320-4ee4-b8bb-6f94ae0b37ae@comcast.net> <104dtd8$277hu$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 19:36:42 +0200 (CEST) Injection-Info: dont-email.me; posting-host="0014afaf809e6a1878576cec63aca89a"; logging-data="2447473"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+PE3fMkDIYorFMP4dnemYA+os/aGHNtME=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:qsLXWO2Cz5iUGyzA94CDD8KPbr0= Content-Language: en-US In-Reply-To: <104dtd8$277hu$1@dont-email.me> 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. > > Alan > Sorry, ...isn't setting 'openssldir' ... ========== REMAINDER OF ARTICLE TRUNCATED ==========