Deutsch   English   Français   Italiano  
<104dtd8$277hu$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Alan Grunwald <nospam.nurdglaw@gmail.com>
Newsgroups: comp.lang.tcl
Subject: Re: Can't build TclTLS 2.0b1
Date: Sun, 6 Jul 2025 14:22:20 +0100
Organization: A noiseless patient Spider
Lines: 176
Message-ID: <104dtd8$277hu$1@dont-email.me>
References: <1049lbt$12gnk$1@dont-email.me>
 <0567ed22-5320-4ee4-b8bb-6f94ae0b37ae@comcast.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 06 Jul 2025 15:23:53 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="0014afaf809e6a1878576cec63aca89a";
	logging-data="2334270"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19WFwyN0AwDtzS313VAjW5AcHysCrnS6ek="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:xJE6tgjIBGZDUmpCTkYPJpZ6wAE=
Content-Language: en-US
In-Reply-To: <0567ed22-5320-4ee4-b8bb-6f94ae0b37ae@comcast.net>

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 <openssl/bio.h>
>>
>> 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