Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 146780 - net-dialup/ppp-2.4.4-r1 `MD5_CTX' undeclared
Summary: net-dialup/ppp-2.4.4-r1 `MD5_CTX' undeclared
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Dialup Developers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-07 19:38 UTC by Michael S Costello
Modified: 2006-09-10 03:42 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael S Costello 2006-09-07 19:38:47 UTC
After a fresh 'emerge --sync' set about to an 'emerge -u world' and stumbled across a ppp build failure.

The tail end of the build failure for net-dialup/ppp-2.4.4-r1: 

x86_64-pc-linux-gnu-gcc -O2 -pipe -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DUSE_PAM -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DPPP_FILTER -DINET6=1 -DCBCP_SUPPORT -DMAXOCTETS   -c -o chap-md5.o chap-md5.c
eap.c: In function `eap_request':
eap.c:1552: error: `MD5_CTX' undeclared (first use in this function)
eap.c:1552: error: (Each undeclared identifier is reported only once
eap.c:1552: error: for each function it appears in.)
eap.c:1552: error: syntax error before "mdContext"
eap.c:1681: error: `mdContext' undeclared (first use in this function)
eap.c: In function `eap_response':
eap.c:2043: error: `MD5_CTX' undeclared (first use in this function)
eap.c:2043: error: syntax error before "mdContext"
eap.c:2248: error: `mdContext' undeclared (first use in this function)
make[1]: *** [eap.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/var/tmp/portage/ppp-2.4.4-r1/work/ppp-2.4.4/pppd'
make: *** [all] Error 2

!!! ERROR: net-dialup/ppp-2.4.4-r1 failed.
Call stack:
  ebuild.sh, line 1546:   Called dyn_compile
  ebuild.sh, line 937:   Called src_compile
  ppp-2.4.4-r1.ebuild, line 114:   Called die

!!! compile failed
!!! If you need support, post the topmost build error, and the call stack if relevant.

emerge --info here:
byron ~ # emerge --info
Portage 2.1.1_rc1-r7 (default-linux/amd64/2006.0, gcc-3.4.6/amd64-vanilla, glibc-2.4-r3, 2.6.16-gentoo-r8 x86_64)
=================================================================
System uname: 2.6.16-gentoo-r8 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
Gentoo Base System version 1.12.4
Last Sync: Thu, 07 Sep 2006 23:00:01 +0000
app-admin/eselect-compiler: 2.0.0_rc2-r1
dev-lang/python:     2.4.3-r3
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     [Not Present]
dev-util/confcache:  [Not Present]
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.60
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.17
sys-devel/gcc-config: 1.3.13-r3
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.16
ACCEPT_KEYWORDS="amd64 ~amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/eselect/compiler /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo"
CXXFLAGS="-O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks fixpackages metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LINGUAS="en"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="amd64 3ds X a52 aac aalib acpi activefilter ada aim alsa apache2 asf async avi berkdb bidi binary-drivers bitmap-fonts bl blender-game bonjour buttons bzip2 cairo cdr cjk cli cpudetection crypt css cups dhcp dlloader dpms dri dv dvd dvdr dvdread eap-tls edl eds effects elibc_glibc emboss encode esd exif fame fat ffmpeg flac font-server foomaticdb fortran gdbm gif gimp gimpprint gnome gphoto2 gpm gs gstreamer gtk gtk2 guile hal hbci imlib immqt-bc infopipe inkjar input_devices_evdev input_devices_keyboard input_devices_mouse input_devices_wacom ipv6 isdnlog java joystick jpeg kde kernel_linux krb4 ladspa ldap ldapsam linguas_en lm_sensors lzw lzw-tiff mbrola mng mozcalendar mozdevelop mp3 mpeg ncurses nls nptl nptlonly nsplugin nvidia offensive ofx ogg opengl pam pcntl pcre pdf pdflib perl png posix postgres ppds pppd python qt3 qt4 quicktime quotes radius readline reflection samba scanner sdk sdl session smp snmp spell spl ssl subversion svg symlink sysfs tcltk tcpd tga theora threads tidy tiff transcode truetype truetype-fonts type1-fonts unicode usb userland_GNU video_cards_nv video_cards_nvidia video_cards_vesa video_cards_vga vorbis wmf xml xmms xorg xpm xprint xrandr xscreensaver xv xvid yahoo yv12 zlib"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Ruslan N. Marchenko 2006-09-07 23:22:25 UTC
(In reply to comment #0)

The same thing, temporary workaround by disabling eap-tls
Comment 2 Alin Năstac (RETIRED) gentoo-dev 2006-09-08 01:35:25 UTC
Works for me. The MD5_CTX type is defined in md5.h .
Maybe on your system __MD5_INCLUDE__ is defined through other included header file?
Comment 3 Michael S Costello 2006-09-08 06:24:32 UTC
(In reply to comment #2)
> Works for me. The MD5_CTX type is defined in md5.h .
> Maybe on your system __MD5_INCLUDE__ is defined through other included header
> file?
> 

Well, there are many instances of md5.h on my system.

Several in each /usr/src/<linux-kernel-version>/
Several in /usr/include for varying programs, athena widgets, php, would it help to get a list of these?

If it is dependent on the kernel, I suppose it'd be because I have the eap-tls use flag enabled, and it might require that to be supported in my gentoo-sources massaged config, except that I don't see that declared anywhere in any of these headers.

Running: 
for file in `locate /md5.h`; do grep '__MD5_INCLUDE__' $file; done
came up with nothing after an updatedb.
Comment 4 Alin Năstac (RETIRED) gentoo-dev 2006-09-09 01:54:09 UTC
Please look for the cause of your problem. I can't fix it if I don't know what caused it, can I?

Hints: 
1) make sure the local md5.h file is the one used by the compiler. Place an 
  #error "Local file used" 
at the beggining of the /var/tmp/portage/ppp-2.4.4/work/ppp-2.4.4/pppd/md5.h file and run make
2) search for __MD5_INCLUDE__ in *all* include files
   grep -r __MD5_INCLUDE__ /usr/include 
Comment 5 Michael S Costello 2006-09-09 15:27:12 UTC
(In reply to comment #4)
> Please look for the cause of your problem. I can't fix it if I don't know what
> caused it, can I?
Don't imagine you could, unless part of the gentoo dev/bugfix qualification is a psychic power test.  Going with what you suggest for the hints.

> 
> Hints: 
> 1) make sure the local md5.h file is the one used by the compiler. Place an 
>   #error "Local file used" 
> at the beggining of the /var/tmp/portage/ppp-2.4.4/work/ppp-2.4.4/pppd/md5.h
> file and run make

Here's this:


byron pppd # vi md5.h
byron pppd # make
cc -Wall -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DUSE_PAM -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DPPP_FILTER -DINET6=1 -DCBCP_SUPPORT -DMAXOCTETS   -c -o eap.o eap.c
eap.c: In function `eap_request':
eap.c:1552: error: `MD5_CTX' undeclared (first use in this function)
eap.c:1552: error: (Each undeclared identifier is reported only once
eap.c:1552: error: for each function it appears in.)
eap.c:1552: error: syntax error before "mdContext"
eap.c:1681: warning: implicit declaration of function `MD5_Init'
eap.c:1681: error: `mdContext' undeclared (first use in this function)
eap.c:1683: warning: implicit declaration of function `MD5_Update'
eap.c:1687: warning: implicit declaration of function `MD5_Final'
eap.c: In function `eap_response':
eap.c:2043: error: `MD5_CTX' undeclared (first use in this function)
eap.c:2043: error: syntax error before "mdContext"
eap.c:2248: error: `mdContext' undeclared (first use in this function)
make: *** [eap.o] Error 1

> 2) search for __MD5_INCLUDE__ in *all* include files
>    grep -r __MD5_INCLUDE__ /usr/include 
> 

byron ~ # grep -r __MD5_INCLUDE__ /usr/include
grep: warning: /usr/include/gnome-xml/libxml: recursive directory loop

No Result was returned by that.  Except for the recursion warning by grep.

Oddly enough I'm finding that one program now reports missing headers, alut.h from the openal project is called out by the flightgear flight sim, new and old profile.  Not appropriate to go into here in depth, unless you think this is a sign of a broad misconfiguration on my part.

Currently I'm just masking out any greater version of ppp than the current one, so as not to break my ability to tunnel if I need to.

Appreciate the suggestions with this, hope the information helps narrow something down.
Comment 6 Sven 2006-09-09 17:17:47 UTC
in eap.c, the line 
  #include "md5.h"
is commented!? why!? after uncommenting it, it compiles fine!

(BTW: md5.h is included in pppd's sources)
Comment 7 Michael S Costello 2006-09-09 18:23:31 UTC
(In reply to comment #6)
> in eap.c, the line 
>   #include "md5.h"
> is commented!? why!? after uncommenting it, it compiles fine!
> 
> (BTW: md5.h is included in pppd's sources)
> 

I did this and had the same result.  Freaky.  Guessing upstream went nutto.
Comment 8 emerald 2006-09-10 01:29:05 UTC
i guess it has been introduced with openssl 0.9.8 since the error first occured for me when recompiling ppp after upgrade to openssl 0.9.8b/c
Comment 9 Alin Năstac (RETIRED) gentoo-dev 2006-09-10 01:46:17 UTC
the first comment was about chap-md5.c, not eap.c!

Please test the following:
 1) ebuild ppp-2.4.4-r1.ebuild unpack
 2) uncomment #include "md5.h" from eap.c
 3) ebuild ppp-2.4.4-r1.ebuild compile

For me, it builds just fine if I don't uncomment the include and fails if I uncomment it:
i686-pc-linux-gnu-gcc -march=athlon-xp -O3 -pipe -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DUSE_PAM -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DPPP_FILTER -DINET6=1 -DCBCP_SUPPORT -DMAXOCTETS   -c -o eap.o eap.c
In file included from /usr/include/openssl/evp.h:84,
                 from /usr/include/openssl/x509.h:67,
                 from /usr/include/openssl/ssl.h:177,
                 from eap-tls.h:37,
                 from eap.c:72:
/usr/include/openssl/md5.h:105: error: conflicting types for 
Comment 10 Alin Năstac (RETIRED) gentoo-dev 2006-09-10 01:46:17 UTC
the first comment was about chap-md5.c, not eap.c!

Please test the following:
 1) ebuild ppp-2.4.4-r1.ebuild unpack
 2) uncomment #include "md5.h" from eap.c
 3) ebuild ppp-2.4.4-r1.ebuild compile

For me, it builds just fine if I don't uncomment the include and fails if I uncomment it:
i686-pc-linux-gnu-gcc -march=athlon-xp -O3 -pipe -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -I../include '-DDESTDIR="/usr"' -DCHAPMS=1 -DMPPE=1 -DHAS_SHADOW -DHAVE_CRYPT_H=1 -DUSE_CRYPT=1 -DUSE_PAM -DHAVE_MULTILINK -DUSE_TDB=1 -DPLUGIN -DPPP_FILTER -DINET6=1 -DCBCP_SUPPORT -DMAXOCTETS   -c -o eap.o eap.c
In file included from /usr/include/openssl/evp.h:84,
                 from /usr/include/openssl/x509.h:67,
                 from /usr/include/openssl/ssl.h:177,
                 from eap-tls.h:37,
                 from eap.c:72:
/usr/include/openssl/md5.h:105: error: conflicting types for MD5_CTX
md5.h:58: error: previous declaration of MD5_CTX was here
/usr/include/openssl/md5.h:110: error: conflicting types for MD5_Init
md5.h:60: error: previous declaration of MD5_Init was here
/usr/include/openssl/md5.h:111: error: conflicting types for MD5_Update
md5.h:61: error: previous declaration of MD5_Update was here
/usr/include/openssl/md5.h:112: error: conflicting types for MD5_Final
md5.h:62: error: previous declaration of MD5_Final was here

I guess the latest openssl renamed the MD5_CTX type.
Comment 11 Alin Năstac (RETIRED) gentoo-dev 2006-09-10 03:42:54 UTC
I've discovered what was the problem. The new openssl (0.9.8.c) no longer includes <openssl/md5.h> in openssl/ssl.h.

Fixed (without revision bump) in ppp-2.4.3-r16 and ppp-2.4.4-r1, by including <openssl/md5.h> in eap.c. I've tested both ebuilds against dev-libs/openssl-0.9.7j and dev-libs/openssl-0.9.8c.