On Tue, Sep 3, 2019 at 9:41 AM swdev <swd...@gmail.com> wrote: > Hi > > I downloaded the following tarball > http://mirrors.netix.net/apache/subversion/subversion-1.12.2.tar.bz2 and > verified its checksum. > I want to be able to build subversin so that I can run the static analysis > tool PVS-Studio (https://www.viva64.com/en/pvs-studio/). > > I ran get-deps.sh. > I built the various libraries as follows: > > APR (from get-deps.sh) > === > cd apr > ./buildconf --verbose > ./configure --verbose --enable-maintainer-mode > --prefix=/home/jonny/subversion > make check > make install > cd .. > > APR-UTIL (from get-deps.sh) > ======== > cd apr-util > ./buildconf --verbose > ./configure --verbose --prefix=/home/jonny/subversion > --with-apr=/home/jonny/subversion > make check > make install > cd .. > > > ZLIB (from get-deps.sh) > ==== > cd zlib > make maintainer-clean > ./configure --prefix=/home/jonny/subversion > make > make check > make install > cd .. > > > OPENSSL (manual download) > ======= > cd openssl > git clone git://git.openssl.org/openssl.git . > ./config --prefix=/home/jonny/subversion > --openssldir=/home/jonny/subversion/etc/ssl/openssl.cnf > make > make test > make install > cd .. > > > SERF (from get-deps.sh) > ==== > cd serf > # clean the build > scons -c > scons APR=/home/jonny/subversion APU=/home/jonny/subversion > ZLIB=/home/jonny/subversion OPENSSL=/home/jonny/subversion > PREFIX=/home/jonny/subversion > > > APR, APR-UTIL, ZLIB and OPENSSL all built and installed successfully and > passed their own tests. > > When building SERF, I ran into the following errors > > scons APR=/home/jonny/subversion APU=/home/jonny/subversion > ZLIB=/home/jonny/subversion OPENSSL=/home/jonny/subversion > PREFIX=/home/jonny/subversion CFLAGS="-I/home/jonny/subversion/include" > scons: Reading SConscript files ... > scons: done reading SConscript files. > scons: Building targets ... > gcc -o buckets/ssl_buckets.o -c -I/home/jonny/subversion/include -std=c89 > -Wdeclaration-after-statement -g -O2 -Wall -Wmissing-prototypes > -Wstrict-prototypes -Wmissing-declarations -pthread -DDEBUG -D_DEBUG > -D_REENTRANT -D_GNU_SOURCE -I. -I/home/jonny/subversion/include/apr-1 > -I/home/jonny/subversion/include buckets/ssl_buckets.c > buckets/ssl_buckets.c: In function 'bio_bucket_read': > buckets/ssl_buckets.c:250:34: error: dereferencing pointer to incomplete > type 'BIO {aka struct bio_st}' > serf_ssl_context_t *ctx = bio->ptr; > ^~ > buckets/ssl_buckets.c: At top level: > buckets/ssl_buckets.c:402:1: error: variable 'bio_bucket_method' has > initializer but incomplete type > static BIO_METHOD bio_bucket_method = { > ^~~~~~ > In file included from buckets/ssl_buckets.c:49:0: > /home/jonny/subversion/include/openssl/bio.h:34:34: warning: excess > elements in struct initializer > # define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) > ^ > buckets/ssl_buckets.c:403:5: note: in expansion of macro 'BIO_TYPE_MEM' > BIO_TYPE_MEM, > ^~~~~~~~~~~~ > /home/jonny/subversion/include/openssl/bio.h:34:34: note: (near > initialization for 'bio_bucket_method') > # define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) > ^ > buckets/ssl_buckets.c:403:5: note: in expansion of macro 'BIO_TYPE_MEM' > BIO_TYPE_MEM, > ^~~~~~~~~~~~ > buckets/ssl_buckets.c:404:5: warning: excess elements in struct initializer > "Serf SSL encryption and decryption buckets", > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:404:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:405:5: warning: excess elements in struct initializer > bio_bucket_write, > ^~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:405:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:406:5: warning: excess elements in struct initializer > bio_bucket_read, > ^~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:406:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:407:5: warning: excess elements in struct initializer > NULL, /* Is this called? */ > ^~~~ > buckets/ssl_buckets.c:407:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:408:5: warning: excess elements in struct initializer > NULL, /* Is this called? */ > ^~~~ > buckets/ssl_buckets.c:408:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:409:5: warning: excess elements in struct initializer > bio_bucket_ctrl, > ^~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:409:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:410:5: warning: excess elements in struct initializer > bio_bucket_create, > ^~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:410:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:411:5: warning: excess elements in struct initializer > bio_bucket_destroy, > ^~~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:411:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:413:5: warning: excess elements in struct initializer > NULL /* sslc does not have the callback_ctrl field */ > ^~~~ > buckets/ssl_buckets.c:413:5: note: (near initialization for > 'bio_bucket_method') > buckets/ssl_buckets.c:417:1: error: variable 'bio_file_method' has > initializer but incomplete type > static BIO_METHOD bio_file_method = { > ^~~~~~ > In file included from buckets/ssl_buckets.c:49:0: > /home/jonny/subversion/include/openssl/bio.h:35:34: warning: excess > elements in struct initializer > # define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) > ^ > buckets/ssl_buckets.c:418:5: note: in expansion of macro 'BIO_TYPE_FILE' > BIO_TYPE_FILE, > ^~~~~~~~~~~~~ > /home/jonny/subversion/include/openssl/bio.h:35:34: note: (near > initialization for 'bio_file_method') > # define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) > ^ > buckets/ssl_buckets.c:418:5: note: in expansion of macro 'BIO_TYPE_FILE' > BIO_TYPE_FILE, > ^~~~~~~~~~~~~ > buckets/ssl_buckets.c:419:5: warning: excess elements in struct initializer > "Wrapper around APR file structures", > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:419:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:420:5: warning: excess elements in struct initializer > bio_file_write, > ^~~~~~~~~~~~~~ > buckets/ssl_buckets.c:420:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:421:5: warning: excess elements in struct initializer > bio_file_read, > ^~~~~~~~~~~~~ > buckets/ssl_buckets.c:421:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:422:5: warning: excess elements in struct initializer > NULL, /* Is this called? */ > ^~~~ > buckets/ssl_buckets.c:422:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:423:5: warning: excess elements in struct initializer > bio_file_gets, /* Is this called? */ > ^~~~~~~~~~~~~ > buckets/ssl_buckets.c:423:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:424:5: warning: excess elements in struct initializer > bio_bucket_ctrl, > ^~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:424:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:425:5: warning: excess elements in struct initializer > bio_bucket_create, > ^~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:425:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:426:5: warning: excess elements in struct initializer > bio_bucket_destroy, > ^~~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:426:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c:428:5: warning: excess elements in struct initializer > NULL /* sslc does not have the callback_ctrl field */ > ^~~~ > buckets/ssl_buckets.c:428:5: note: (near initialization for > 'bio_file_method') > buckets/ssl_buckets.c: In function 'get_subject_alt_names': > buckets/ssl_buckets.c:465:32: warning: pointer targets in passing argument > 1 of 'strlen' differ in signedness [-Wpointer-sign] > strlen(nm->d.ia5->data) != nm->d.ia5->length) > ^~ > In file included from /home/jonny/subversion/include/apr-1/apr_want.h:63:0, > from /home/jonny/subversion/include/apr-1/apr_pools.h:47, > from buckets/ssl_buckets.c:37: > /usr/include/string.h:394:15: note: expected 'const char *' but argument > is of type 'unsigned char *' > extern size_t strlen (const char *__s) > ^~~~~~ > buckets/ssl_buckets.c: In function 'init_ssl_libraries': > buckets/ssl_buckets.c:1074:9: warning: 'OpenSSL_version_num' is deprecated > [-Wdeprecated-declarations] > long libver = SSLeay(); > ^~~~ > In file included from > /home/jonny/subversion/include/openssl/opensslconf.h:122:0, > from /home/jonny/subversion/include/openssl/e_os2.h:13, > from /home/jonny/subversion/include/openssl/bio.h:13, > from buckets/ssl_buckets.c:49: > /home/jonny/subversion/include/openssl/crypto.h:161:30: note: declared here > DEPRECATEDIN_3(unsigned long OpenSSL_version_num(void)) > ^ > /home/jonny/subversion/include/openssl/macros.h:36:38: note: in definition > of macro 'DECLARE_DEPRECATED' > # define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); > ^ > /home/jonny/subversion/include/openssl/crypto.h:161:1: note: in expansion > of macro 'DEPRECATEDIN_3' > DEPRECATEDIN_3(unsigned long OpenSSL_version_num(void)) > ^~~~~~~~~~~~~~ > buckets/ssl_buckets.c:1084:9: warning: implicit declaration of function > 'CRYPTO_malloc_init' [-Wimplicit-function-declaration] > CRYPTO_malloc_init(); > ^~~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c: At top level: > buckets/ssl_buckets.c:402:19: error: storage size of 'bio_bucket_method' > isn't known > static BIO_METHOD bio_bucket_method = { > ^~~~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:417:19: error: storage size of 'bio_file_method' > isn't known > static BIO_METHOD bio_file_method = { > ^~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:1028:22: warning: 'ssl_id' defined but not used > [-Wunused-function] > static unsigned long ssl_id(void) > ^~~~~~ > buckets/ssl_buckets.c:1018:13: warning: 'ssl_lock' defined but not used > [-Wunused-function] > static void ssl_lock(int mode, int n, const char *file, int line) > ^~~~~~~~ > buckets/ssl_buckets.c:1012:13: warning: 'ssl_dyn_destroy' defined but not > used [-Wunused-function] > static void ssl_dyn_destroy(CRYPTO_dynlock_value *l, const char *file, > ^~~~~~~~~~~~~~~ > buckets/ssl_buckets.c:1001:13: warning: 'ssl_dyn_lock' defined but not > used [-Wunused-function] > static void ssl_dyn_lock(int mode, CRYPTO_dynlock_value *l, const char > *file, > ^~~~~~~~~~~~ > buckets/ssl_buckets.c:988:30: warning: 'ssl_dyn_create' defined but not > used [-Wunused-function] > static CRYPTO_dynlock_value *ssl_dyn_create(const char* file, int line) > ^~~~~~~~~~~~~~ > scons: *** [buckets/ssl_buckets.o] Error 1 > scons: building terminated because of errors. > > > It would appear that the BIO structure (bio_st) is not defined in any of > the included header. > It is defined in the openssl/crypto/bio/bio_lcl.h file, but this file is > not in any of the included directories. > > Any ideas as to how I can build SERF? > > Thanks >
I have a feeling that the "make install" of OpenSSL didn't install headers under /home/jonny/subversion/include. But then, why isn't the compile of serf failing with an "include file not found" error? Do you somehow have more than one bio_lcl.h file, perhaps under multiple subdirectories of /home/jonny/subversion/include?