Hi!

Some background first.

I am currently working on cleaning up the "false dependencies"
issue for secure/.  The attached patch p1 fixes this.  This is
done by moving the false dependencies from secure/ utilities
directly to libssh.so.  This also requires a alight re-ordering
in `libraries' target of Makefile.inc1, which is done by the
attached patch p2.

So far it's OK.  Now the problem.  I was testing these patches
on an i386 -CURRENT box that does nightly "make world"s for
both i386 and alpha.  i386 world built OK, alpha cross-world
broke trying to link secure/libexec/sftp-server as follows:

: Script started on Fri Jan 25 10:09:41 2002
: --------------------------------------------------------------
: >>> Building everything..
: --------------------------------------------------------------
: cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj/alpha  MACHINE_ARCH=alpha  MACHINE=alpha  
:COMPILER_PATH=/usr/obj/alpha/usr/src/i386/usr/libexec:/usr/obj/alpha/usr/src/i386/usr/bin
:  
:LIBRARY_PATH=/usr/obj/alpha/usr/src/i386/usr/lib:/usr/obj/alpha/usr/src/i386/usr/lib  
:OBJFORMAT_PATH=/usr/obj/alpha/usr/src/i386/usr/libexec  CINCLUDES="-nostdinc"  
:CXXINCLUDES="-nostdinc++"  
:PERL5LIB=/usr/obj/alpha/usr/src/i386/usr/libdata/perl/5.6.0  
:GROFF_BIN_PATH=/usr/obj/alpha/usr/src/i386/usr/bin  
:GROFF_FONT_PATH=/usr/obj/alpha/usr/src/i386/usr/share/groff_font  
:GROFF_TMAC_PATH=/usr/obj/alpha/usr/src/i386/usr/share/tmac  
:DESTDIR=/usr/obj/alpha/usr/src/i386  INSTALL="sh /usr/src/tools/install.sh"  
:PATH=/usr/obj/alpha/usr/src/i386/usr/sbin:/usr/obj/alpha/usr/src/i386/usr/bin:/usr/obj/alpha/usr/src/i386/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
: make -f Makefile.inc1 all
: ===> secure/libexec/sftp-server
: cc -O -pipe -nostdinc -mcpu=ev4 -DNO_IDEA   
:-I/usr/obj/alpha/usr/src/i386/usr/include   -o sftp-server sftp-server.o 
:sftp-common.o  -lssh -lcrypto
: /usr/obj/alpha/usr/src/i386/usr/libexec/elf/ld: warning: libz.so.2, needed by 
:/usr/obj/alpha/usr/src/i386/usr/lib/libssh.so, not found (try using -rpath or 
:-rpath-link)
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `deflate'
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `inflate'
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `inflateInit_'
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `deflateInit_'
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `inflateEnd'
: /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so: undefined reference to `deflateEnd'
: *** Error code 1
: 
: Stop in /usr/src/secure/libexec/sftp-server.
: *** Error code 1
: 
: Script done on Fri Jan 25 10:09:42 2002

The ld(1) error message above says (formatted by fmt(1)):

: /usr/obj/alpha/usr/src/i386/usr/libexec/elf/ld: warning: libz.so.2,
: needed by /usr/obj/alpha/usr/src/i386/usr/lib/libssh.so, not found
: (try using -rpath or -rpath-link)

But the library _is_ there, and it was built even earlier than libssh:

: # cd /usr/obj/alpha/usr/src/i386/usr/lib
: # ls -l libssh.so* libz.so*
: lrwxr-xr-x  1 root  wheel      11 Jan 25 06:19 libssh.so -> libssh.so.2
: -rwxr-xr-x  1 root  wheel  295859 Jan 25 06:19 libssh.so.2
: lrwxr-xr-x  1 root  wheel       9 Jan 25 06:34 libz.so -> libz.so.2
: -rwxr-xr-x  1 root  wheel   80017 Jan 25 06:11 libz.so.2

Now about the bug.  Here's the interesting output from both i386 and
alpha versions of cross-compiler built tonight:

: # /usr/obj/usr/src/i386/usr/bin/gcc -print-search-dirs
: install: /usr/obj/usr/src/i386/usr/libexec/(null)
: programs: /usr/obj/usr/src/i386/usr/libexec/elf/:/usr/obj/usr/src/i386/usr/libexec/
: libraries: /usr/obj/usr/src/i386/usr/libexec/:/usr/obj/usr/src/i386/usr/lib/
: # /usr/obj/alpha/usr/src/i386/usr/bin/gcc -print-search-dirs
: install: /usr/obj/alpha/usr/src/i386/usr/libexec/(null)
: programs: /usr/obj/alpha/usr/src/i386/usr/libexec/elf/
: libraries:

Note the empty "libraries:" for the alpha version.  I think this
is the bug.

I will see if I can fix this bug myself, but I thought David could
fix it quicker than me.  :-)


Cheers,
-- 
Ruslan Ermilov          Oracle Developer/DBA,
[EMAIL PROTECTED]           Sunbay Software AG,
[EMAIL PROTECTED]          FreeBSD committer,
+380.652.512.251        Simferopol, Ukraine

http://www.FreeBSD.org  The Power To Serve
http://www.oracle.com   Enabling The Information Age
Index: secure/lib/libssh/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/lib/libssh/Makefile,v
retrieving revision 1.12
diff -u -r1.12 Makefile
--- secure/lib/libssh/Makefile  2002/01/23 15:54:09     1.12
+++ secure/lib/libssh/Makefile  2002/01/25 08:16:18
@@ -24,6 +24,9 @@
 CFLAGS+= -DKRB5
 .endif # MAKE_KERBEROS5
 
+DPADD= ${LIBCRYPTO} ${LIBZ}
+LDADD= -lcrypto -lz
+
 .include <bsd.lib.mk>
 
 .PATH: ${SSHDIR} ${SSHDIR}/lib
Index: secure/libexec/sftp-server/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/libexec/sftp-server/Makefile,v
retrieving revision 1.4
diff -u -r1.4 Makefile
--- secure/libexec/sftp-server/Makefile 2002/01/23 15:54:09     1.4
+++ secure/libexec/sftp-server/Makefile 2002/01/25 08:16:18
@@ -5,8 +5,8 @@
 SRCS=   sftp-server.c sftp-common.c
 MAN=   sftp-server.8
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD+=        -lssh -lcrypto
+DPADD+=        ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/scp/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/scp/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- secure/usr.bin/scp/Makefile 2002/01/23 15:54:10     1.6
+++ secure/usr.bin/scp/Makefile 2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  scp
 SRCS=  scp.c scp-common.c
 
-LDADD+=        -lssh -lcrypto -lutil -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBUTIL} ${LIBZ}
+DPADD= ${LIBSSH}
+LDADD= -lssh
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/sftp/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/sftp/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- secure/usr.bin/sftp/Makefile        2002/01/23 15:54:10     1.2
+++ secure/usr.bin/sftp/Makefile        2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  sftp
 SRCS=   sftp.c sftp-client.c sftp-int.c sftp-common.c sftp-glob.c scp-common.c
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD= -lssh -lcrypto
+DPADD= ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/ssh-add/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/ssh-add/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- secure/usr.bin/ssh-add/Makefile     2002/01/23 15:54:14     1.6
+++ secure/usr.bin/ssh-add/Makefile     2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  ssh-add
 SRCS=  ssh-add.c
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+= ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD+=        -lssh -lcrypto
+DPADD+= ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/ssh-agent/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/ssh-agent/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- secure/usr.bin/ssh-agent/Makefile   2002/01/23 15:54:14     1.6
+++ secure/usr.bin/ssh-agent/Makefile   2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  ssh-agent
 SRCS=  ssh-agent.c
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD+=        -lssh -lcrypto
+DPADD+=        ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/ssh-keygen/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/ssh-keygen/Makefile,v
retrieving revision 1.7
diff -u -r1.7 Makefile
--- secure/usr.bin/ssh-keygen/Makefile  2002/01/23 15:54:17     1.7
+++ secure/usr.bin/ssh-keygen/Makefile  2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  ssh-keygen
 SRCS=  ssh-keygen.c
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD+=        -lssh -lcrypto
+DPADD+=        ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: secure/usr.bin/ssh-keyscan/Makefile
===================================================================
RCS file: /home/ncvs/src/secure/usr.bin/ssh-keyscan/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- secure/usr.bin/ssh-keyscan/Makefile 2002/01/23 15:54:17     1.2
+++ secure/usr.bin/ssh-keyscan/Makefile 2002/01/25 08:16:18
@@ -4,8 +4,8 @@
 PROG=  ssh-keyscan
 SRCS=  ssh-keyscan.c
 
-LDADD+=        -lssh -lcrypto -lz
-DPADD+=        ${LIBSSH} ${LIBCRYPTO} ${LIBZ}
+LDADD+=        -lssh -lcrypto
+DPADD+=        ${LIBSSH} ${LIBCRYPTO}
 
 .include <bsd.prog.mk>
 
Index: lib/libpam/modules/pam_ssh/Makefile
===================================================================
RCS file: /home/ncvs/src/lib/libpam/modules/pam_ssh/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- lib/libpam/modules/pam_ssh/Makefile 2002/01/23 15:54:08     1.8
+++ lib/libpam/modules/pam_ssh/Makefile 2002/01/25 08:16:18
@@ -7,8 +7,8 @@
 SHLIB_NAME=    pam_ssh.so
 SRCS=          pam_ssh.c
 CFLAGS+=       -I${SSHSRC}
-DPADD=         ${LIBSSH} ${LIBCRYPTO} ${LIBCRYPT} ${LIBUTIL} ${LIBZ}
-LDADD=         -lssh -lcrypto -lcrypt -lutil -lz
+DPADD=         ${LIBSSH} ${LIBCRYPTO} ${LIBCRYPT} ${LIBUTIL}
+LDADD=         -lssh -lcrypto -lcrypt -lutil
 MAN=           pam_ssh.8
 
 .include <bsd.lib.mk>
Index: Makefile.inc1
===================================================================
RCS file: /home/ncvs/src/Makefile.inc1,v
retrieving revision 1.235
diff -u -r1.235 Makefile.inc1
--- Makefile.inc1       2001/12/28 11:53:18     1.235
+++ Makefile.inc1       2002/01/25 08:22:50
@@ -731,6 +731,7 @@
 #        librpcsvc libtacplus libutil libz libssh
 # libradius: libmd
 # libreadline: libncurses
+# libssh: libcrypto libz
 # libstc++: msun
 # libtacplus: libmd
 #
@@ -740,7 +741,7 @@
 # kerberosIV/lib kerberos5/lib: lib/libcrypt
 # lib/libpam: secure/lib/libcrypto kerberosIV/lib/libkrb \
 #             secure/lib/libssh lib/libz
-# secure/lib: lib/libmd
+# secure/lib: secure/lib/libcrypto lib/libmd lib/libz
 #
 .if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}.pcc)
 _csu=  lib/csu/${MACHINE_ARCH}.pcc
@@ -750,8 +751,11 @@
 _csu=  lib/csu/${MACHINE_ARCH}
 .endif
 
-.if !defined(NOSECURE) && !defined(NOCRYPT)
+.if exists(${.CURDIR}/secure) && !defined(NOCRYPT) && !defined(NOSECURE)
 _secure_lib=   secure/lib
+.if exists(${.CURDIR}/secure/lib/libcrypto)
+_libcrypto=    secure/lib/libcrypto
+.endif
 .endif
 
 .if !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
@@ -772,10 +776,10 @@
 
 libraries:
 .for _lib in ${_csu} gnu/lib/csu gnu/lib/libgcc lib/libmd lib/libcrypt \
-    ${_secure_lib} ${_kerberosIV_lib} \
+    lib/libz ${_libcrypto} ${_secure_lib} ${_kerberosIV_lib} \
     ${_kerberos5_lib} lib/libcom_err lib/libkvm lib/msun lib/libncurses \
     lib/libopie lib/libradius lib/librpcsvc lib/libsbuf lib/libtacplus \
-    lib/libutil lib/libz lib gnu/lib ${_libperl} usr.bin/lex/lib ${_libkeycap}
+    lib/libutil lib gnu/lib ${_libperl} usr.bin/lex/lib ${_libkeycap}
 .if exists(${.CURDIR}/${_lib})
        cd ${.CURDIR}/${_lib}; \
                ${MAKE} depend; \

Reply via email to