Subject: Re: pkg/26094
To: None <jlam@netbsd.org>
From: Mark E. Perkins <perkinsm@bway.net>
List: pkgsrc-bugs
Date: 12/11/2004 10:37:49
On 12/10/04 19:18, jlam@netbsd.org wrote:

> Synopsis: pkgsrc/mail/libesmtp not finding installed pkgsrc/security/openssl-0.9.6m header on MacOS X 10.3.4
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: jlam@netbsd.org
> State-Changed-When: Sat, 11 Dec 2004 00:18:58 +0000
> State-Changed-Why:
> When satisfying dependencies, pkgsrc will by default always prefer
> the built-in versions of software over package versions if the built-in
> software is capable of meeting the dependency requirements.  This is
> the purpose of the various builtin.mk files in pkgsrc.  In this case
> where Darwin's OpenSSL is preferred, but you would like to force pkgsrc
> to use security/openssl, please set PREFER_PKGSRC=openssl in your
> /etc/mk.conf.
> 
> Please let me know if mail/libesmtp still fails to build correctly with
> the above setting in your /etc/mk.conf.


Unfortunately, it still fails in ntlm, but the error is different than what
I saw when I submitted the PR... I can also see that with the newer 
Makefile, it is not necessary to set PREFER_PKGSRC=openssl. Rather, 
patch-ad (which has also changed since I submitted the PR) is not required 
(at least for Darwin 7.6.0).

Thanks to patch-ad, we're now picking up /usr/include/openssl/des_old.h, 
which generates an error, and is #include'd from /usr/include/openssl/des.h:

#ifdef OPENSSL_ENABLE_OLD_DES_SUPPORT
# include <openssl/des_old.h>
#endif

I did not see this before. It just complained (starting with the same
"function declaration isn't a prototype" shown below) and failed, but 
ntlmdes.c was #include'ing <des.h>, which is a symlink to <kerberosIV/des.h>.

I'm not sure how one goes about bypassing a patch, other than a clumsy 
combination of #ifdef DARWIN in ntlmdes.c (i.e., a new version of patch-ad) 
and Darwin-specific CPPFLAGS in Makefile.


=================== additional info ===================

Using this Makefile:

# $NetBSD: Makefile,v 1.18 2004/12/11 00:13:54 jlam Exp $

and

-> uname -a
Darwin crow.fringe.mep 7.6.0 Darwin Kernel Version 7.6.0: Sun Oct 10
12:05:27 PDT 2004; root:xnu/xnu-517.9.4.obj~1/RELEASE_PPC  Power Macintosh
powerpc

with XCode 1.5 and the Nov/2004 gcc update.

=================== error messages ===================

Making all in ntlm
cd .. && /bin/sh ./config.status ntlm/Makefile depfiles
config.status: creating ntlm/Makefile
config.status: executing depfiles commands
source='client-ntlm.c' object='client-ntlm.lo' libtool=yes \
depfile='.deps/client-ntlm.Plo' tmpdepfile='.deps/client-ntlm.TPlo' \
depmode=gcc3 /bin/sh ../depcomp \
/bin/sh ../libtool --mode=compile gcc -pipe -DHAVE_CONFIG_H -I. -I. -I..
-I.  -no-cpp-precomp -I/Volumes/NetBSD/pkg/include -I/usr/include
-D_REENTRANT -O2 -I/Volumes/NetBSD/pkg/include -I/usr/include
-Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes
  -Wstrict-prototypes -Wnested-externs -Wpointer-arith
-Wbad-function-cast -Wcast-align -c -o client-ntlm.lo `test -f
'client-ntlm.c' || echo './'`client-ntlm.c
mkdir .libs
  gcc -pipe -DHAVE_CONFIG_H -I. -I.. -no-cpp-precomp
-I/Volumes/NetBSD/pkgsrc/mail/libesmtp/work/.buildlink/include -D_REENTRANT
-O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes
-Wstrict-prototypes -Wnested-externs -Wpointer-arith -Wbad-function-cast
-Wcast-align -c client-ntlm.c -MT client-ntlm.lo -MD -MP -MF
.deps/client-ntlm.TPlo  -fno-common -DPIC -o .libs/client-ntlm.o
  gcc -pipe -DHAVE_CONFIG_H -I. -I.. -no-cpp-precomp
-I/Volumes/NetBSD/pkgsrc/mail/libesmtp/work/.buildlink/include -D_REENTRANT
-O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes
-Wstrict-prototypes -Wnested-externs -Wpointer-arith -Wbad-function-cast
-Wcast-align -c client-ntlm.c -MT client-ntlm.lo -MD -MP -MF
.deps/client-ntlm.TPlo -o client-ntlm.o >/dev/null 2>&1
source='ntlmdes.c' object='ntlmdes.lo' libtool=yes \
depfile='.deps/ntlmdes.Plo' tmpdepfile='.deps/ntlmdes.TPlo' \
depmode=gcc3 /bin/sh ../depcomp \
/bin/sh ../libtool --mode=compile gcc -pipe -DHAVE_CONFIG_H -I. -I. -I..
-I.  -no-cpp-precomp -I/Volumes/NetBSD/pkg/include -I/usr/include
-D_REENTRANT -O2 -I/Volumes/NetBSD/pkg/include -I/usr/include
-Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes
  -Wstrict-prototypes -Wnested-externs -Wpointer-arith
-Wbad-function-cast -Wcast-align -c -o ntlmdes.lo `test -f 'ntlmdes.c' ||
echo './'`ntlmdes.c
  gcc -pipe -DHAVE_CONFIG_H -I. -I.. -no-cpp-precomp
-I/Volumes/NetBSD/pkgsrc/mail/libesmtp/work/.buildlink/include -D_REENTRANT
-O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes
-Wstrict-prototypes -Wnested-externs -Wpointer-arith -Wbad-function-cast
-Wcast-align -c ntlmdes.c -MT ntlmdes.lo -MD -MP -MF .deps/ntlmdes.TPlo
-fno-common -DPIC -o .libs/ntlmdes.o
In file included from ntlmdes.c:27:
/usr/include/openssl/des_old.h:99:2: #error You must include des.h, not
des_old.h directly.
In file included from ntlmdes.c:27:
/usr/include/openssl/des_old.h:398: error: parse error before '*' token
ntlmdes.c:33: error: parse error before "const_DES_cblock"
ntlmdes.c:34: warning: function declaration isn't a prototype
ntlmdes.c: In function `lm_deshash':
ntlmdes.c:35: error: `DES_cblock' undeclared (first use in this function)
ntlmdes.c:35: error: (Each undeclared identifier is reported only once
ntlmdes.c:35: error: for each function it appears in.)
ntlmdes.c:35: error: parse error before "key"
ntlmdes.c:36: error: `DES_key_schedule' undeclared (first use in this function)
ntlmdes.c:41: error: `secret' undeclared (first use in this function)
ntlmdes.c:49: error: `key' undeclared (first use in this function)
ntlmdes.c:58: warning: implicit declaration of function `DES_set_odd_parity'
ntlmdes.c:59: warning: implicit declaration of function `DES_set_key'
ntlmdes.c:59: error: `ks' undeclared (first use in this function)
ntlmdes.c:60: warning: implicit declaration of function `DES_ecb_encrypt'
ntlmdes.c:60: error: `iv' undeclared (first use in this function)
ntlmdes.c:60: error: `result' undeclared (first use in this function)
ntlmdes.c:60: error: `DES_ENCRYPT' undeclared (first use in this function)
ntlmdes.c: In function `lm_hash_password':
ntlmdes.c:88: error: syntax error before "iv"
ntlmdes.c: At top level:
ntlmdes.c:92: error: parse error before "sizeof"
ntlmdes.c:92: warning: type defaults to `int' in declaration of `lm_uccpy'
ntlmdes.c:92: warning: function declaration isn't a prototype
ntlmdes.c:92: error: conflicting types for `lm_uccpy'
ntlmdes.c:71: error: previous declaration of `lm_uccpy'
ntlmdes.c:92: warning: data definition has no type or storage class
ntlmdes.c:93: error: parse error before '&' token
ntlmdes.c:93: warning: type defaults to `int' in declaration of `lm_deshash'
ntlmdes.c:93: warning: function declaration isn't a prototype
ntlmdes.c:93: error: conflicting types for `lm_deshash'
ntlmdes.c:34: error: previous declaration of `lm_deshash'
ntlmdes.c:93: warning: data definition has no type or storage class
ntlmdes.c:94: error: parse error before '+' token
ntlmdes.c:94: warning: type defaults to `int' in declaration of `lm_deshash'
ntlmdes.c:94: warning: function declaration isn't a prototype
ntlmdes.c:94: warning: data definition has no type or storage class
ntlmdes.c:95: error: parse error before numeric constant
ntlmdes.c:95: warning: type defaults to `int' in declaration of `memset'
ntlmdes.c:95: warning: function declaration isn't a prototype
ntlmdes.c:95: warning: data definition has no type or storage class
ntlmdes.c: In function `ntlm_responses':
ntlmdes.c:140: error: `DES_cblock' undeclared (first use in this function)
ntlmdes.c:140: error: parse error before "nonce"
ntlmdes.c:142: error: `nonce' undeclared (first use in this function)
gnumake[2]: *** [ntlmdes.lo] Error 1
gnumake[1]: *** [all-recursive] Error 1
gnumake: *** [all] Error 2
*** Error code 2

Stop.
bmake: stopped in /usr/pkgsrc/mail/libesmtp
*** Error code 1

Stop.
bmake: stopped in /usr/pkgsrc/mail/libesmtp