• Can't build TclTLS 2.0b1

    From Alan Grunwald@nospam.nurdglaw@gmail.com to comp.lang.tcl on Fri Jul 4 23:40:35 2025
    From Newsgroup: comp.lang.tcl

    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Brian@brian199@comcast.net to comp.lang.tcl on Sat Jul 5 20:09:40 2025
    From Newsgroup: comp.lang.tcl

    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

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Brian@brian199@comcast.net to comp.lang.tcl on Sat Jul 5 20:13:48 2025
    From Newsgroup: comp.lang.tcl

    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

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Alan Grunwald@nospam.nurdglaw@gmail.com to comp.lang.tcl on Sun Jul 6 14:22:20 2025
    From Newsgroup: comp.lang.tcl

    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

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Alan Grunwald@nospam.nurdglaw@gmail.com to comp.lang.tcl on Sun Jul 6 18:35:29 2025
    From Newsgroup: comp.lang.tcl

    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

    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' ...

    --- Synchronet 3.21a-Linux NewsLink 1.2