Deutsch   English   Français   Italiano  
<104hfo2$34c9v$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: Mon, 7 Jul 2025 22:53:27 +0100
Organization: A noiseless patient Spider
Lines: 268
Message-ID: <104hfo2$34c9v$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>
 <104ej6j$2d4at$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 07 Jul 2025 23:55:14 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="4d78a58da2311e827efb8d94afa72056";
	logging-data="3289407"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX186HE/dye6EgrGmcNtSF374zUd22vlKRXk="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:MU4OjcTALrfwWfRwPEv+4Gefhkw=
Content-Language: en-US
In-Reply-To: <104ej6j$2d4at$1@dont-email.me>

On 06/07/2025 20:35, Brian wrote:
> 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 <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
>>>
========== REMAINDER OF ARTICLE TRUNCATED ==========