I reported yesterday on this list about 55 successful builds for openssh-SNAP-20161221 (repackaged locally as openssh-20161221) in our test lab of 125+ Unix(-like) systems. Today, I've gone through the 68 logs of failures. If a single long-time openssh developer wants to look at those logs in detail, please contact me offline; the logs contain machine details that I will not disclose on public lists. Here, I'll just summarize the common problems that appear repeatedly across many different systems. Fixing any single one of them would likely lead to successful builds on several more systems. -------------------------------------------------------------------------------- (1) The test suite output needs to be revised to show clear indications of success and failure; with just one log to look at, which most developers likely have, the current situation is somewhat tolerable. However, with large-scale automated testing, as I'm doing, it is impractical to read hundreds of lines of dense test output in logs from each of 125+ systems. [I just ran "wc -l" on the 157 logs that I have so far: 252,552 lines, equivalent to about 16 detective novels of 300 pages of 50 lines/page.] Many GNU packages have adopted a validation-suite output style that prefixes test names with "PASS" or "FAIL", followed by a summary of counts of passes and failures. Some even report a lovely conclusion "ALL TESTS PASSED!", which is then easy to grep for in logs to identify successful builds and validations. The current openssh report of "all tests passed" at the end of a log is hard to spot by eye, though grep, of course, has no difficulty. -------------------------------------------------------------------------------- (2) Please consider adding a Makefile "check" target equivalent to your "tests" target; the former is a GNU standard that is widely adopted by thousands of other open-source packages. That way, the standard recipe ./configure && make all check install could work almost everywhere. -------------------------------------------------------------------------------- (3) Wrong macro argument count: /usr/bin/cc -std=c99 -I/usr/uumath/include -I/usr/local/include -I/include -Qunused-arguments -Wunknown-warning-option -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -I. -I.. -I. -I./.. -I/include -DHAVE_CONFIG_H -c arc4random.c In file included from arc4random.c:27: In file included from ../includes.h:174: In file included from ../entropy.h:28: In file included from ../buffer.h:24: In file included from ../sshbuf.h:23: /usr/include/stdio.h:222:44: error: too many arguments provided to function-like macro invocation __attribute__((__bounded__ (__size__,1,3,2))); ^ ../defines.h:519:10: note: macro '__bounded__' defined here # define __bounded__(x, y, z) -------------------------------------------------------------------------------- (4) openssh macro expands to invalid code: /usr/uumath/ashare/sys/developerstudio12.5/bin/cc -I/usr/uumath/include -I/include -I. -I.. -I. -I./.. -I/include -DHAVE_CONFIG_H -c arc4random.c "/usr/include/iso/stdlib_iso.h", line 130: syntax error before or at: 1 cc: acomp failed for arc4random.c That comes from the expansion of this line in that system header file: extern int mblen(const char *, size_t); The erroneous code extern int ( 1 ); is produced by this openssh code: % grep -n mblen openbsd-compat.h 230:# define mblen(x, y) (1) -------------------------------------------------------------------------------- (5) Several systems reported checking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required (have "0090802f (OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008)") or checking whether OpenSSL's headers match the library... no configure: error: Your OpenSSL headers do not match your library. Check config.log for details. If you are sure your installation is consistent, you can disable the check by running "./configure --without-openssl-header-check". Also see contrib/findssl.sh for help identifying header/library mismatches. I don't propose to install openssl on our test lab machines, because we generally expect them to have their own ssh + ssl code in place already. Thus, I won't attempt to work around build problems from such dependencies. -------------------------------------------------------------------------------- (6) On KFreeBSD 7.5 x86-64, ArchLinux ARM, Debian 6.0.10 x86-64, DragonFlyBSD 4.6, 4.6.1, 4.7 x86-46, and Solaris 10 x86-64, I was able to get a successful build by adding the configure option --without-openssl-header-check. I then ran "make tests"; only the Solaris 10 x86-64 build ended with "all tests passed". The ARM run is still a long ways from completion as I finish this report. -------------------------------------------------------------------------------- (7) On numerous systems, I get these compilation failures: /usr/bin/cc -I/usr/uumath/include -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -ftrapv -fno-builtin-memset -fstack-protector-strong -fPIE -I. -I. -I/usr/uumath/include -DSSHDIR=\"/usr/uumath/etc\" -D_PATH_SSH_PROGRAM=\"/usr/uumath/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/uumath/libexec/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/usr/uumath/libexec/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/usr/uumath/libexec/ssh-keysign\" -D_PATH_SSH_PKCS11_HELPER=\"/usr/uumath/libexec/ssh-pkcs11-helper\" -D_PATH_SSH_PIDDIR=\"/var/run\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/empty\" -DHAVE_CONFIG_H -c sshkey.c -o sshkey.o sshkey.c:274:28: error: dereferencing pointer to incomplete type return BN_num_bits(k->rsa->n); ^ sshkey.c:277:28: error: dereferencing pointer to incomplete type return BN_num_bits(k->dsa->p); ^ sshkey.c: In function 'sshkey_new': sshkey.c:478:11: error: dereferencing pointer to incomplete type (rsa->n = BN_new()) == NULL || ^ [ 112 more like that ] -------------------------------------------------------------------------------- (8) On GoboLinux, I get gcc -std=c99 -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -fPIE -I. -I.. -I. -I./.. -DHAVE_CONFIG_H -c arc4random.c In file included from ../includes.h:168:0, from arc4random.c:27: ../defines.h:391:28: error: conflicting types for 'fd_mask' typedef unsigned long int fd_mask; ^ In file included from /usr/local/include/sys/types.h:219:0, from ../includes.h:25, from arc4random.c:27: ... many more ... -------------------------------------------------------------------------------- (9) On Hipster, OpenIndiana 11, Solaris 10, and Solaris 11, with different compilers, I get similar to this: /opt/solarisstudio12.4/bin/c99 -I/usr/local/include -D_XOPEN_SOURCE=600 -D_XPG6 -I/include -I. -I.. -I. -I./.. -I/include -DHAVE_CONFIG_H -c arc4random.c "../openbsd-compat/openbsd-compat.h", line 205: warning: dubious tag declaration: struct winsize "../buffer.h", line 58: warning: old-style declaration or incorrect type for: u_short "../buffer.h", line 58: syntax error before or at: buffer_get_short "../buffer.h", line 58: warning: old-style declaration or incorrect type for: buffer_get_short "../buffer.h", line 59: syntax error before or at: u_short "../buffer.h", line 59: warning: undefined or missing type for: u_short "../buffer.h", line 82: syntax error before or at: * "../buffer.h", line 82: warning: undefined or missing type for: Buffer c99: acomp failed for arc4random.c -------------------------------------------------------------------------------- (10) On Minix 3.4.0, where /bin/sh is a Bourne-like shell of unknown origin, the build dies with a shell error: if test "cat" = "cat"; then manpage=./`echo moduli.5.out | sed 's/\.[1-9]\.out$/\.0/'`; else manpage=./`echo moduli.5.out | sed 's/\.out$//'`; fi; if test "cat" = "man"; then /usr/bin/sed -e 's|/etc/ssh/ssh_config|/usr/uumath/etc/ssh_config|g' -e 's|/etc/ssh/ssh_known_hosts|/usr/uumath/etc/ssh_known_hosts|g' -e 's|/etc/ssh/sshd_config|/usr/uumath/etc/sshd_config|g' -e 's|/usr/libexec|/usr/uumath/libexec|g' -e 's|/etc/shosts.equiv|/usr/uumath/etc/shosts.equiv|g' -e 's|/etc/ssh/ssh_host_key|/usr/uumath/etc/ssh_host_key|g' -e 's|/etc/ssh/ssh_host_ecdsa_key|/usr/uumath/etc/ssh_host_ecdsa_key|g' -e 's|/etc/ssh/ssh_host_dsa_key|/usr/uumath/etc/ssh_host_dsa_key|g' -e 's|/etc/ssh/ssh_host_rsa_key|/usr/uumath/etc/ssh_host_rsa_key|g' -e 's|/etc/ssh/ssh_host_ed25519_key|/usr/uumath/etc/ssh_host_ed25519_key|g' -e 's|/var/run/sshd.pid|/var/run/sshd.pid|g' -e 's|/etc/moduli|/usr/uumath/etc/moduli|g' -e 's|/etc/ssh/moduli|/usr/uumath/etc/moduli|g' -e 's|/etc/ssh/sshrc|/usr/uumath/etc/sshrc|g' -e 's|/usr/X11R6/bin/xauth|/usr/X11R7/bin/xauth|g' -e 's|/var/empty|/var/empty|g' -e 's|/usr/bin:/bin:/usr/sbin:/sbin||g' ${manpage} | /usr/uumath/bin/tcsh ./fixalgorithms /usr/bin/sed | gawk -f ./mdoc2man.awk > moduli.5.out; else /usr/bin/sed -e 's|/etc/ssh/ssh_config|/usr/uumath/etc/ssh_config|g' -e 's|/etc/ssh/ssh_known_hosts|/usr/uumath/etc/ssh_known_hosts|g' -e 's|/etc/ssh/sshd_config|/usr/uumath/etc/sshd_config|g' -e 's|/usr/libexec|/usr/uumath/libexec|g' -e 's|/etc/shosts.equiv|/usr/uumath/etc/shosts.equiv|g' -e 's|/etc/ssh/ssh_host_key|/usr/uumath/etc/ssh_host_key|g' -e 's|/etc/ssh/ssh_host_ecdsa_key|/usr/uumath/etc/ssh_host_ecdsa_key|g' -e 's|/etc/ssh/ssh_host_dsa_key|/usr/uumath/etc/ssh_host_dsa_key|g' -e 's|/etc/ssh/ssh_host_rsa_key|/usr/uumath/etc/ssh_host_rsa_key|g' -e 's|/etc/ssh/ssh_host_ed25519_key|/usr/uumath/etc/ssh_host_ed25519_key|g' -e 's|/var/run/sshd.pid|/var/run/sshd.pid|g' -e 's|/etc/moduli|/usr/uumath/etc/moduli|g' -e 's|/etc/ssh/moduli|/usr/uumath/etc/moduli|g' -e 's|/etc/ssh/sshrc|/usr/uumath/etc/sshrc|g' -e 's|/usr/X11R6/bin/xauth|/usr/X11R7/bin/xauth|g' -e 's|/var/empty|/var/empty|g' -e 's|/usr/bin:/bin:/usr/sbin:/sbin||g' ${manpage} | /usr/uumath/bin/tcsh ./fixalgorithms /usr/bin/sed > moduli.5.out; fi Badly placed ()'s. *** Error code 1 -------------------------------------------------------------------------------- (11) On Mac OS X 10.5.8 (9L30) Leopard on PowerPC, the compiler warns about possible use-before-initialization and other issues: glob.c:186: warning: implicit declaration of function 'strnlen' pwcache.c:44:1: warning: "MASK" redefined /usr/include/ppc/param.h:123:1: warning: this is the location of the previous definition setproctitle.c:128: warning: 'len' may be used uninitialized in this function sshkey.c:1575: warning: 'eg' may be used uninitialized in this function sshkey.c:3038: warning: 'ivlen' may be used uninitialized in this function sshkey.c:3038: warning: 'keylen' may be used uninitialized in this function packet.c:1052: warning: comparison between signed and unsigned ssh.c:1510: warning: 'daemon' is deprecated (declared at /usr/include/stdlib.h:283) ssh.c:1522: warning: 'daemon' is deprecated (declared at /usr/include/stdlib.h:283) sshconnect.c:309: warning: implicit declaration of function 'bindresvport_sa' ------------------------------------------------------------------------------- - Nelson H. F. Beebe Tel: +1 801 581 5254 - - University of Utah FAX: +1 801 581 4148 - - Department of Mathematics, 110 LCB Internet e-mail: beebe at math.utah.edu - - 155 S 1400 E RM 233 beebe at acm.org beebe at computer.org - - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ - -------------------------------------------------------------------------------