Forum OpenACS Development: Re: Naviserver Compilation Error on RHEL 8

Collapse
Posted by Raul Rodriguez on
Hi,
I downloaded install-ns and ran it again and got:
tls.c: In function ‘OCSP_get_cert_id’:
tls.c:753:31: warning: implicit declaration of function ‘X509_NAME_hash_ex’; did you mean ‘X509_NAME_hash_old’? [-Wimplicit-function-declaration]
             *selfSignedPtr = (X509_NAME_hash_ex(X509_get_issuer_name(cert), NULL, NULL, NULL)
                               ^~~~~~~~~~~~~~~~~
                               X509_NAME_hash_old
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o url2file.o url2file.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlencode.o urlencode.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlopen.o urlopen.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlspace.o urlspace.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o uuencode.o uuencode.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o unix.o unix.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o watchdog.o watchdog.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o nswin32.o nswin32.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o tclcrypto.o tclcrypto.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o tclparsefieldvalue.o tclparsefieldvalue.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o main.o main.c
/bin/rm -Rf libnsd.so
gcc -shared  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H    -O2 -fomit-frame-pointer  -L../nsthread -L../nsd -L../nsdb -o libnsd.so adpcmds.o adpeval.o adpparse.o adprequest.o auth.o binder.o cache.o callbacks.o cls.o compress.o config.o conn.o connio.o cookies.o connchan.o crypt.o dlist.o dns.o driver.o dstring.o encoding.o event.o exec.o fastpath.o fd.o filter.o form.o httptime.o index.o info.o init.o limits.o lisp.o listen.o log.o mimetypes.o modload.o nsconf.o nsmain.o nsthread.o op.o pathname.o pidfile.o proc.o progress.o queue.o quotehtml.o random.o range.o request.o return.o returnresp.o rollfile.o sched.o server.o set.o sls.o sock.o sockcallback.o sockfile.o str.o task.o tclcache.o tclcallbacks.o tclcmds.o tclconf.o tclenv.o tclfile.o tclhttp.o tclimg.o tclinit.o tcljob.o tclmisc.o tclobj.o tclobjv.o tclrequest.o tclresp.o tclsched.o tclset.o tclsock.o sockaddr.o tclthread.o tcltime.o tclvar.o tclxkeylist.o tls.o stamp.o url.o url2file.o urlencode.o urlopen.o urlspace.o uuencode.o unix.o watchdog.o nswin32.o tclcrypto.o tclparsefieldvalue.o   -lz -lcrypt -lnsthread -L/usr/local/ns/lib -ltcl8.6  -Wl,--export-dynamic  -L/usr/local/ns/lib -lssl -lcrypto   -Wl,-rpath,:/usr/local/ns/lib
/bin/rm -Rf nsd
gcc -O2 -fomit-frame-pointer  -L../nsthread -L../nsd -L../nsdb -o nsd main.o libnsd.so -lz -lcrypt -lnsthread -L/usr/local/ns/lib -ltcl8.6  -Wl,--export-dynamic  -L/usr/local/ns/lib -lssl -lcrypto   -Wl,-rpath,:/usr/local/ns/lib
libnsd.so: undefined reference to `X509_NAME_hash_ex'
collect2: error: ld returned 1 exit status
make[1]: *** [../include/Makefile.module:162: nsd] Error 1
make[1]: Leaving directory '/usr/local/src/naviserver-5.0.1/nsd'
make: *** [Makefile:34: all] Error 1

This time I did not edit any files so I did not replace the _ex with _old in
/usr/local/src/naviserver-5.0.1/nsd/tls.c on Line 752 if statement:

        if (selfSignedPtr != NULL) {
            *selfSignedPtr = (X509_NAME_hash_ex(X509_get_issuer_name(cert), NULL, NULL, NULL)
                              == X509_NAME_hash_ex(X509_get_subject_name(cert), NULL, NULL, NULL));
        }
Collapse
Posted by Gustaf Neumann on
The change was not in install-ns. What version of NaviServer did you download? In other words, what did you specify in version_ns? The default points to the release version of NaviServer 5.0,1 (released last moth), which was not changed.
Collapse
Posted by Raul Rodriguez on
I ran the new install-ns and it failed naviserver 5.0.2 install with:
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o stamp.o stamp.c
tls.c: In function ‘OCSP_get_cert_id’:
tls.c:753:31: warning: implicit declaration of function ‘X509_NAME_hash_ex’; did you mean ‘X509_NAME_hash_old’? [-Wimplicit-function-declaration]
             *selfSignedPtr = (X509_NAME_hash_ex(X509_get_issuer_name(cert), NULL, NULL, NULL)
                               ^~~~~~~~~~~~~~~~~
                               X509_NAME_hash_old
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o url.o url.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o url2file.o url2file.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlencode.o urlencode.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlopen.o urlopen.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o urlspace.o urlspace.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o uuencode.o uuencode.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o unix.o unix.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o watchdog.o watchdog.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o nswin32.o nswin32.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o tclcrypto.o tclcrypto.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o tclparsefieldvalue.o tclparsefieldvalue.c
gcc  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-prototyp\
es -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe  -DSYSTE\
M_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H     -c -o main.o main.c
/bin/rm -Rf libnsd.so
gcc -shared  -g -O2 -fomit-frame-pointer -Wall -pedantic -Wextra -Wconversion -Wsign-conversion -Wsign-compare -Wwrite-strings -Wdeclaration-after-statement -Wendif-labels -Wshadow -Wmissing-\
prototypes -Wstrict-prototypes -Wno-missing-braces -Wundef -Wunreachable-code -Wswitch-enum -Wpointer-arith -Wold-style-definition -Wmissing-format-attribute -Wformat-security   -fPIC  -pipe \
-DSYSTEM_MALLOC -std=c99 -I../include -I"/usr/local/ns/include"   -DHAVE_CONFIG_H    -O2 -fomit-frame-pointer  -L../nsthread -L../nsd -L../nsdb -o libnsd.so adpcmds.o adpeval.o adpparse.o ad\
prequest.o auth.o binder.o cache.o callbacks.o cls.o compress.o config.o conn.o connio.o cookies.o connchan.o crypt.o dlist.o dns.o driver.o dstring.o encoding.o event.o exec.o fastpath.o fd.\
o filter.o form.o httptime.o index.o info.o init.o limits.o lisp.o listen.o log.o mimetypes.o modload.o nsconf.o nsmain.o nsthread.o op.o pathname.o pidfile.o proc.o progress.o queue.o quoteh\
tml.o random.o range.o request.o return.o returnresp.o rollfile.o sched.o server.o set.o sls.o sock.o sockcallback.o sockfile.o str.o task.o tclcache.o tclcallbacks.o tclcmds.o tclconf.o tcle\
nv.o tclfile.o tclhttp.o tclimg.o tclinit.o tcljob.o tclmisc.o tclobj.o tclobjv.o tclrequest.o tclresp.o tclsched.o tclset.o tclsock.o sockaddr.o tclthread.o tcltime.o tclvar.o tclxkeylist.o \
tls.o stamp.o url.o url2file.o urlencode.o urlopen.o urlspace.o uuencode.o unix.o watchdog.o nswin32.o tclcrypto.o tclparsefieldvalue.o   -lz -lcrypt -lnsthread -L/usr/local/ns/lib -ltcl8.6  \
-Wl,--export-dynamic  -L/usr/local/ns/lib -lssl -lcrypto   -Wl,-rpath,:/usr/local/ns/lib
/bin/rm -Rf nsd
gcc -O2 -fomit-frame-pointer  -L../nsthread -L../nsd -L../nsdb -o nsd main.o libnsd.so -lz -lcrypt -lnsthread -L/usr/local/ns/lib -ltcl8.6  -Wl,--export-dynamic  -L/usr/local/ns/lib -lssl -lc\
rypto   -Wl,-rpath,:/usr/local/ns/lib
libnsd.so: undefined reference to `X509_NAME_hash_ex'
collect2: error: ld returned 1 exit status
make[1]: *** [../include/Makefile.module:162: nsd] Error 1
make[1]: Leaving directory '/usr/local/src/naviserver-5.0.2/nsd'
make: *** [Makefile:34: all] Error 1
Collapse
Posted by Gustaf Neumann on
Please tell me the exact version of OpenSSL you are using.
Collapse
Posted by Raul Rodriguez on
I created a RHEL 8 test server that is running "OpenSSL 1.1.1k FIPS 25 Mar 2021".

Thank you for your help

Collapse
Posted by Gustaf Neumann on
The OpenSSL version on RHEL 8 is not the problem, i am. I messed up in my last fix a test (too much double-negations). The commit [1] should fix it. The updated version is [2]. Please double-check, if this helps for you, before i make it an official release.

if you are using install-ns, specify the verison as in:

sudo version_ns=5.0.3 bash install-ns.sh build

[1] https://github.com/naviserver-project/naviserver/commit/650f47084435f867d3ddc51befbf17320c239900
[2] https://sourceforge.net/projects/naviserver/files/naviserver/5.0.3/

Collapse
Posted by Raul Rodriguez on
I specified 5.0.3 and it worked.

Thank you!

Collapse
Posted by Gustaf Neumann on
Thank you for your feedback and patience! -g