| 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