Bug 2034 - make fails
Summary: make fails
Status: CLOSED WORKSFORME
Alias: None
Product: Portable OpenSSH
Classification: Unclassified
Component: Build system (show other bugs)
Version: 6.0p1
Hardware: amd64 FreeBSD
: P5 normal
Assignee: Assigned to nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-08-16 19:27 AEST by Kris
Modified: 2021-04-23 15:09 AEST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kris 2012-08-16 19:27:41 AEST
Pristine FreeBSD 9.0-RELEASE
Just building the stack with dependencies in proper order.
For e.g.:
Zlib 1.2.7 in place
OpenSSL 1.0.1c in place

Needed to compile OpenSSH-6.0p1 outside of FreeBSD ports since the latest available port was 5.8p2
Downloaded the latest version afresh (opens-6.0p1.tar.gz)

./configure (no issues)

make breaks at loginrec.c compilation - displayed errors below:

gcc -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -fno-builtin-memset -fstack-protector-all -I. -I.  -DSSHDIR=\"/usr/local/etc\"  -D_PATH_SSH_PROGRAM=\"/usr/local/bin/ssh\"  -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh-askpass\"  -D_PATH_SFTP_SERVER=\"/usr/local/libexec/sftp-server\"  -D_PATH_SSH_KEY_SIGN=\"/usr/local/libexec/ssh-keysign\"  -D_PATH_SSH_PKCS11_HELPER=\"/usr/local/libexec/ssh-pkcs11-helper\"  -D_PATH_SSH_PIDDIR=\"/var/run\"  -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/empty\" -DHAVE_CONFIG_H -c loginrec.c
loginrec.c:633: warning: 'struct utmp' declared inside parameter list
loginrec.c:633: warning: its scope is only this definition or declaration, which is probably not what you want
loginrec.c:645: warning: 'struct utmp' declared inside parameter list
loginrec.c: In function 'construct_utmp':
loginrec.c:651: error: dereferencing pointer to incomplete type
loginrec.c:676: warning: passing argument 2 of 'set_utmp_time' from incompatible pointer type
loginrec.c:678: error: dereferencing pointer to incomplete type
loginrec.c:678: error: dereferencing pointer to incomplete type
loginrec.c:694: error: dereferencing pointer to incomplete type
loginrec.c:695: error: dereferencing pointer to incomplete type
loginrec.c:695: error: dereferencing pointer to incomplete type
loginrec.c: At top level:
loginrec.c:1090: warning: 'struct utmp' declared inside parameter list
loginrec.c: In function 'wtmp_write':
loginrec.c:1101: error: dereferencing pointer to incomplete type
loginrec.c:1101: error: dereferencing pointer to incomplete type
loginrec.c: In function 'wtmp_perform_login':
loginrec.c:1114: error: storage size of 'ut' isn't known
loginrec.c:1114: warning: unused variable 'ut'
loginrec.c: In function 'wtmp_perform_logout':
loginrec.c:1124: error: storage size of 'ut' isn't known
loginrec.c:1124: warning: unused variable 'ut'
loginrec.c: At top level:
loginrec.c:1165: warning: 'struct utmp' declared inside parameter list
loginrec.c: In function 'wtmp_islogin':
loginrec.c:1167: error: dereferencing pointer to incomplete type
loginrec.c:1168: error: dereferencing pointer to incomplete type
loginrec.c:1168: error: dereferencing pointer to incomplete type
loginrec.c: In function 'wtmp_get_entry':
loginrec.c:1183: error: storage size of 'ut' isn't known
loginrec.c:1202: error: invalid application of 'sizeof' to incomplete type 'struct utmp' 
loginrec.c:1237: error: invalid application of 'sizeof' to incomplete type 'struct utmp' 
loginrec.c:1183: warning: unused variable 'ut'
*** Error code 1

Stop in /var/new/openssh-6.0p1.


PLEASE HELP! Thanks!!
Comment 1 Darren Tucker 2012-08-17 00:31:58 AEST
are you starting with a clean unpack of the tarball?  You can see things like this if, eg, you have config.h from a different platform.

I tried to reproduce on a freshly installed freebsd 9.0 VM and it worked fine:

$ uname -sr
FreeBSD 9.0-RELEASE
$ rm -rf openssh-6.0p1
$ tar xfz openssh-6.0p1.tar.gz
$ cd openssh-6.0p1
$ ./configure && make
[lots of output]
$ ./ssh -V
OpenSSH_6.0p1, OpenSSL 0.9.8q 2 Dec 2010
Comment 2 Darren Tucker 2012-08-17 00:49:57 AEST
Also works with the versions of openssl and zlib that you specified, installed under /usr/local/
$ ./configure --with-zlib=/usr/local --with-ssl-dir=/usr/local/ssl && make
[...]
$ ./ssh -V
OpenSSH_6.0p1, OpenSSL 1.0.1c 10 May 2012

How exactly did you run configure?  Are you sure there's no missing include files in /usr/include?

Here's all of the UTMP-related config entries I ended up with:

$ egrep '#define.*TMP' config.h
#define DISABLE_UTMP 1
#define DISABLE_WTMP 1
#define DISABLE_WTMPX 1
#define HAVE_HOST_IN_UTMPX 1
#define HAVE_ID_IN_UTMPX 1
#define HAVE_TV_IN_UTMPX 1
#define HAVE_TYPE_IN_UTMPX 1
#define HAVE_UTMPX_H 1
Comment 3 Kris 2012-08-17 02:41:20 AEST
Yes, I am starting each attempt (from the very first one when I encountered the problem) with a fresh, clean unpack of the tarball.

I have attempted with the following configure styles:

Attempt-1} ./configure --with-zlib=/usr/local --with-ssl-dir=/usr/local

Attempt-2} ./configure

Attempt-3} ./configure --with-zlib=/usr/local --with-ssl-dir=/usr/local/ssl

Attempt-1 was, of course, the first time I encountered the break in make.

I filed the report after Attempt-2.

I also tried Attempt-3 based on Darren's comment, although there was 'No such file or directory' in /usr/local/ssl.

Yes, the latest OpenSSL is in /usr/local.  As are all the ports listed below.

I have never encountered this problem before on local (machine sitting next to me) for FreeBSD 8.2-RELEASE nor the FreeBSD 9.0-RELEASE. Also, I never faced this predicament while building the stack on Amazon (AWS) with FreeBSD 8.2-RELEASE.

But I'm stuck while building the stack on AWS with FreeBSD 9.0-RELEASE 32-bit (i386) right now.

I'm building the FreeBSD server (as with all of those successful builds except for port versions that were available at the times of those builds for FreeBSD 8.2) with the latest version stack of dependencies in the following order:
{In each case, all the old version files of these ports (that came with the base OS) such as in /usr/bin, /usr/lib, etc., were replaced with hard/soft links to the corresponding new versions under /usr/local so that any other piece of software that needed them 'saw' the correct version only.}

All were installed through the ports system (make install) and not as packages. The two that were (of necessity, for want of port availability) installed directly (from tarballs, configure && make...) were Zlib 1.2.7 and OpenSSH 6.0p1.

Zlib 1.2.7 (Not through ports)
gnugrep-2.12 (following dependencies got installed as well)
	libtool-2.4.2
	libiconv-1.14
	gettext-0.18.1.1
pkgconf 0.8.6
libltdl-2.4.2
gmake-3.82
xproto-7.0.22
makedepend-1.0.3,1
perl-5.16
openssl 1.0.1_4
automake-1.12.2 (following dependencies got installed as well
	autoconf-2.69
	automake-wrapper-20101119
	m4-1.4.16_1,1
	help2man-1.40.11
	autoconf-wrapper-20101119
	p5-Locale-gettext-1.05_3
ntp 4.2.6p5_1
libsmi 0.4.8
bison-2.5.1,1
libpcap-1.3.0
tcpdump 4.3.0

And then...
openssh 6.0p1 (Not through ports)
***Here is where 'the party crashed' with the problem at hand.

No, I did not mess with config.h, nor with any other *.h, nor with any other component. What these packages installed is what we have.

As of now, dead in the water with this 'make break'. :-(

Are there environment variables or other settings that can help?

Or, anything else?

Thanks!
Comment 4 Kris 2012-08-17 02:58:36 AEST
I also tried the following in the folder that the freshest OpenSSH-6.0p1 tarball untars into (where compilation was done):

fBSD9 > egrep '#define.*TMP' config.h

And received the following (which is different from Darren's output):

#define CONF_WTMP_FILE "/var/log/wtmp"
#define DISABLE_UTMP 1
#define DISABLE_WTMPX 1
#define HAVE_HOST_IN_UTMPX 1
#define HAVE_ID_IN_UTMPX 1
#define HAVE_TV_IN_UTMPX 1
#define HAVE_TYPE_IN_UTMPX 1
#define HAVE_UTMPX_H 1

The 'diff' in outputs is:

The line
#define DISABLE_WTMP 1
is missing in my config.h

The line
#define CONF_WTMP_FILE "/var/log/wtmp"
is missing in Darren's config.h

And, yes, I do have a /var/log/wtmp without any content (0 bytes).
-rw-r--r--  1 root  wheel  0 Aug 15 22:17 /var/log/wtmp

Thanks!
Comment 5 Kris 2012-08-17 03:59:51 AEST
I wanted to try something...

I deleted the /var/log/wtmp
Untarred a fresh openssh-6.0p1 tarball
Proceeded as usual:

fBSD9 > ./configure --with-zlib=/usr/local --with-ssl-dir=/usr/local
fBSD9 > make

It went through!

fBSD9 > ./ssh -V
OpenSSH_6.0p1, OpenSSL 1.0.1c 10 May 2012

Boy, am I a happy camper!

Thanks much to Darren for pointing out probable causes.

If any of you have a caution, comment or advice, feel free.

I have no idea who should or how this Bug 2034 must be closed. This is my first on Bugzilla! And it was probably not a bug at all! Please let me know if I must close it (and a pointer to how).

Much obliged, Ladies and Gentlemen!

Thanks again, Darren!
Sincerely,
Kris
Comment 6 Kris 2012-08-17 04:08:25 AEST
PS:

I did a sanity check as well right after configure and before make:


fBSD9 > ll config.h
-rw-r--r--  1 root  wheel  43176 Aug 16 17:35 config.h
fBSD9 > egrep '#define.*TMP' config.h
#define DISABLE_UTMP 1
#define DISABLE_WTMP 1
#define DISABLE_WTMPX 1
#define HAVE_HOST_IN_UTMPX 1
#define HAVE_ID_IN_UTMPX 1
#define HAVE_TV_IN_UTMPX 1
#define HAVE_TYPE_IN_UTMPX 1
#define HAVE_UTMPX_H 1

This is the same as the output that Darren posted.

Just wanted to mention it and complete the picture!

Thanks again!
Comment 7 Darren Tucker 2012-08-17 10:21:48 AEST
does any package claim to own the wtmp file?  ie "pkg_info -W /var/log/wtmp"?

anyway I'm going to close this bug.
Comment 8 Kris 2012-08-17 12:50:55 AEST
No, no package claimed ownership!

pkg_info -W /var/log/wtmp  produced nothing.

Thanks for checking on that!

Appreciate closing this bug entry as well.

Have a nice evening/day/morning!
Comment 9 Damien Miller 2021-04-23 15:09:19 AEST
closing resolved bugs as of 8.6p1 release