Bug 25962

Summary: kdebase2 port build problems, auth.c and session.c
Product: Base System Reporter: csigler <csigler>
Component: i386Assignee: Will Andrews <will>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.2-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff
none
file.diff none

Description csigler 2001-03-21 12:30:01 UTC
auth.c and session.c won't compile in kdebase2 (kdebase-2.1) port
on i386

Fix: Diffs of my patches:

su-2.04# diff -u3 /usr/ports/x11/kdebase2/work/kdebase-2.1/kdm/auth.c /usr/ports/x11/kdebase2/work/kdebase-2.1/kdm/auth.c.orig 
su-2.04# diff -u3 /usr/ports/x11/kdebase2/work/kdebase-2.1/kdm/session.c /usr/ports/x11/kdebase2/work/kdebase-2.1/kdm/session.c.orig
How-To-Repeat: `make install' in /usr/ports/x11/kdebase2
Comment 1 Will Andrews 2001-03-21 14:14:49 UTC
On Wed, Mar 21, 2001 at 04:24:39AM -0800, csigler@vt.edu wrote:
> >How-To-Repeat:
> `make install' in /usr/ports/x11/kdebase2

I can't reproduce your problem.  Could you please send more detail on
how you ran into a problem compiling kdm?

-- 
wca
Comment 2 Will Andrews freebsd_committer freebsd_triage 2001-03-21 14:15:20 UTC
Responsible Changed
From-To: freebsd-bugs->will

My port.
Comment 3 siglercm 2001-03-21 15:26:57 UTC
On Wed, 21 Mar 2001, Will Andrews wrote:
> On Wed, Mar 21, 2001 at 04:24:39AM -0800, csigler@vt.edu wrote:
> > >How-To-Repeat:
> > `make install' in /usr/ports/x11/kdebase2
> I can't reproduce your problem.  Could you please send more detail on
> how you ran into a problem compiling kdm?

Hi Will,

First, I realized I made a boo-boo after filing my 3 bug reports.
I assigned them to i386 instead of ports.  I apologize :^(

Perhaps I don't have something installed with the "correct" version of
the header files?  All I did was go into /usr/ports/x11/kde2 and do a
`make install' in there.  The first time it died trying to compile auth.c
in kdebase2.  Then it died trying to compile session.c.  I have done
a CVSup of the ports tree a day or two ago, but I haven't done one of
the system to 4.x-STABLE.

This is also how I discovered the problems with the autoconf/automake
FreeBSD Linux compat support on i386 with ports/games/kdegames2,
ports/misc/kdeutils2, and ports/editors/koffice.  I've got a build of
ports/net/kdenetwork2 going now.  kdelibs2, kdebase2 (after my two tiny
fixes), and kdesupport2 did build.  I think I have a working KDE
2.1 now except for the add-ons, but haven't had time to test it yet.

I'm out of the office where I'm building kde2 for the rest of the day.
Would you like me to e-mail you the errors I got from the compilation
of auth.c and session.c?

					C
Comment 4 Will Andrews 2001-03-21 18:04:26 UTC
On Wed, Mar 21, 2001 at 10:26:57AM -0500, Clemmitt Sigler wrote:
> First, I realized I made a boo-boo after filing my 3 bug reports.
> I assigned them to i386 instead of ports.  I apologize :^(


Don't worry about it, I really don't mind.  :-)

> Perhaps I don't have something installed with the "correct" version of
> the header files?  All I did was go into /usr/ports/x11/kde2 and do a
> `make install' in there.  The first time it died trying to compile auth.c
> in kdebase2.  Then it died trying to compile session.c.  I have done
> a CVSup of the ports tree a day or two ago, but I haven't done one of
> the system to 4.x-STABLE.


I can't say anything about what the problem could be since I've never
seen this before.

> This is also how I discovered the problems with the autoconf/automake
> FreeBSD Linux compat support on i386 with ports/games/kdegames2,
> ports/misc/kdeutils2, and ports/editors/koffice.  I've got a build of
> ports/net/kdenetwork2 going now.  kdelibs2, kdebase2 (after my two tiny
> fixes), and kdesupport2 did build.  I think I have a working KDE
> 2.1 now except for the add-ons, but haven't had time to test it yet.


I'm not sure what "FreeBSD Linux compat support on i386 with
ports/games/kdegames2" means.  To me, "Linux compat support" refers to
the linuxulator in src/sys/i386/linux and related ports stuff.  KDE2 has
nothing to do with this.  Nor do autoconf or automake.

> I'm out of the office where I'm building kde2 for the rest of the day.
> Would you like me to e-mail you the errors I got from the compilation
> of auth.c and session.c?


Please.

Lots of stuff has header conflicts with KDE; in particular, I've found
that ports/devel/pth and ports/devel/libgnugetopt install header files
which cause compile problems, and I've added flags to correct these (not
in CVS though, but that should come soon).

-- 
wca
Comment 5 siglercm 2001-03-21 20:08:18 UTC
On Wed, 21 Mar 2001, Will Andrews wrote:
> I can't say anything about what the problem could be since I've never
> seen this before.

I think that's strange.  The header #include's that were needed were
very standard header files if I'm not mistaken.  It should either cause
everyone or no one problems I'd think *shrug*

> I'm not sure what "FreeBSD Linux compat support on i386 with
> ports/games/kdegames2" means.  To me, "Linux compat support" refers to
> the linuxulator in src/sys/i386/linux and related ports stuff.  KDE2 has
> nothing to do with this.  Nor do autoconf or automake.

I must be saying it wrong.  I certainly don't know a lot about Linux
compat support in FreeBSD -- I'm fairly new to FreeBSD....

What kept kdegames2, kdeutils2, and koffice (also had the same problem
with kdenetwork2) from building were problems with linking to
libpthreads-0.8.so, libc.so.6, and ld-linux.so.2 which are
Linux compat libraries.  The ./configure script didn't replace
"@LIBPTHREAD@" in Makefile generated from Makefile.in with
a linking declaration like
"-lpthread -Wl,--rpath -Wl,/usr/compat/linux/lib".  Also, it
didn't put a $(LIBPTHREAD) anywhere in one of the "LIBS ="
declarations further down.  I tried adding all this junk to a bunch
of Makefiles by hand and stuff built with warnings.  I doubt it would
have worked, and I abandoned the effort.  It was linking against
the FreeBSD libc.so.4 instead of the Linux compat libc.so.6.
Maybe I'm misunderstanding how the Linux compat stuff works
under FreeBSD.

Here are the errors from auth.c and session.c compilation:

-----------------------------------------------------------------------------
cc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include/qt2
-I.    -I/usr/local/include -I/usr/local/include -D_GETOPT_H -D_THREAD_SAFE
-O2 -O -pipe -D_THREAD_SAFE -pthread -c auth.c
In file included from auth.c:94:
/usr/include/net/if.h:158: field `ifru_addr' has incomplete type
/usr/include/net/if.h:159: field `ifru_dstaddr' has incomplete type
/usr/include/net/if.h:160: field `ifru_broadaddr' has incomplete type
/usr/include/net/if.h:187: field `ifra_addr' has incomplete type
/usr/include/net/if.h:188: field `ifra_broadaddr' has incomplete type
/usr/include/net/if.h:189: field `ifra_mask' has incomplete type
/usr/include/net/if.h:240: field `addr' has incomplete type
/usr/include/net/if.h:241: field `dstaddr' has incomplete type
gmake[3]: *** [auth.o] Error 1
gmake[3]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1'
gmake: *** [all-recursive-am] Error 2
*** Error code 2

cc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include/qt2
-I.    -I/usr/local/include -I/usr/local/include -D_GETOPT_H -D_THREAD_SAFE
-O2 -O -pipe -D_THREAD_SAFE -pthread -c session.c
session.c:101: conflicting types for `setgrent'
/usr/include/grp.h:62: previous declaration of `setgrent'
session.c:149: warning: initialization from incompatible pointer type
gmake[3]: *** [session.o] Error 1
gmake[3]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1'
gmake: *** [all-recursive-am] Error 2
*** Error code 2
-----------------------------------------------------------------------------

> Lots of stuff has header conflicts with KDE; in particular, I've found
> that ports/devel/pth and ports/devel/libgnugetopt install header files
> which cause compile problems, and I've added flags to correct these (not
> in CVS though, but that should come soon).

I'm fairly certain I don't have either of those installed, but maybe
something I have installed has things messed up.  I'll check that
next.

I appreciate the quick help :^)

					C
Comment 6 Will Andrews 2001-03-21 21:45:16 UTC
On Wed, Mar 21, 2001 at 03:08:18PM -0500, Clemmitt Sigler wrote:
> I think that's strange.  The header #include's that were needed were
> very standard header files if I'm not mistaken.  It should either cause
> everyone or no one problems I'd think *shrug*

Order of the #include's and #define's can affect what actually gets
included.  Of course, that's just saying the obvious.  :-)

> I must be saying it wrong.  I certainly don't know a lot about Linux
> compat support in FreeBSD -- I'm fairly new to FreeBSD....

www.freebsd.org has more details on exactly what Linux compat means in
the context of FreeBSD.  Sorry I can't provide a URL off the top of my
head; I'm sure it's extensively documented in the Handbook somewhere.

> What kept kdegames2, kdeutils2, and koffice (also had the same problem
> with kdenetwork2) from building were problems with linking to
> libpthreads-0.8.so, libc.so.6, and ld-linux.so.2 which are
> Linux compat libraries.  The ./configure script didn't replace
> "@LIBPTHREAD@" in Makefile generated from Makefile.in with
> a linking declaration like
> "-lpthread -Wl,--rpath -Wl,/usr/compat/linux/lib".  Also, it
> didn't put a $(LIBPTHREAD) anywhere in one of the "LIBS ="
> declarations further down.  I tried adding all this junk to a bunch
> of Makefiles by hand and stuff built with warnings.  I doubt it would
> have worked, and I abandoned the effort.  It was linking against
> the FreeBSD libc.so.4 instead of the Linux compat libc.so.6.
> Maybe I'm misunderstanding how the Linux compat stuff works
> under FreeBSD.

No.  Normal compiling doesn't give GCC or LD access to the Linux
compat libraries (*IF* you have them installed, doesn't matter anyways).
KDE (and in fact most things that run on Linux) can use BSD libc.so just
fine.  Linuxulator stuff is only for Linux binaries.  I'd say that less
than 15% of FreeBSD boxes even need or use any Linux binaries on them.

You really need to understand what the Linuxulator does and what it's
for before doing much more with FreeBSD, because the way you seem to be
thinking about it, you're liable to break lots of stuff (and give up on
FreeBSD just because you couldn't figure out what the Linux compat stuff
was for :-) :-).

> Here are the errors from auth.c and session.c compilation:
> 
> -----------------------------------------------------------------------------
> cc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include/qt2
> -I.    -I/usr/local/include -I/usr/local/include -D_GETOPT_H -D_THREAD_SAFE
> -O2 -O -pipe -D_THREAD_SAFE -pthread -c auth.c
> In file included from auth.c:94:
> /usr/include/net/if.h:158: field `ifru_addr' has incomplete type
> /usr/include/net/if.h:159: field `ifru_dstaddr' has incomplete type
> /usr/include/net/if.h:160: field `ifru_broadaddr' has incomplete type
> /usr/include/net/if.h:187: field `ifra_addr' has incomplete type
> /usr/include/net/if.h:188: field `ifra_broadaddr' has incomplete type
> /usr/include/net/if.h:189: field `ifra_mask' has incomplete type
> /usr/include/net/if.h:240: field `addr' has incomplete type
> /usr/include/net/if.h:241: field `dstaddr' has incomplete type
> gmake[3]: *** [auth.o] Error 1
> gmake[3]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
> gmake[2]: *** [all-recursive] Error 1
> gmake[2]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
> gmake[1]: *** [all-recursive] Error 1
> gmake[1]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1'
> gmake: *** [all-recursive-am] Error 2
> *** Error code 2
> 
> cc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include/qt2
> -I.    -I/usr/local/include -I/usr/local/include -D_GETOPT_H -D_THREAD_SAFE
> -O2 -O -pipe -D_THREAD_SAFE -pthread -c session.c
> session.c:101: conflicting types for `setgrent'
> /usr/include/grp.h:62: previous declaration of `setgrent'
> session.c:149: warning: initialization from incompatible pointer type
> gmake[3]: *** [session.o] Error 1
> gmake[3]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
> gmake[2]: *** [all-recursive] Error 1
> gmake[2]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1/kdm'
> gmake[1]: *** [all-recursive] Error 1
> gmake[1]: Leaving directory `/usr/ports/x11/kdebase2/work/kdebase-2.1'
> gmake: *** [all-recursive-am] Error 2
> *** Error code 2

These are pretty strange errors.  I would appreciate it if you'd post
full logs somewhere of all your builds (yeah, I guess that means you'll
have to redo it and this time make sure you log the output).  Judging by
the compiler executions, it looks like you have the latest ports, so that's
not an issue.

> I'm fairly certain I don't have either of those installed, but maybe
> something I have installed has things messed up.  I'll check that
> next.

Don't worry about it; I doubt you have either installed given the error
messages above.

> I appreciate the quick help :^)

Sure!

-- 
wca
Comment 7 siglercm 2001-03-22 15:35:33 UTC
On Wed, 21 Mar 2001, Will Andrews wrote:
> These are pretty strange errors.  I would appreciate it if you'd post
> full logs somewhere of all your builds (yeah, I guess that means you'll
> have to redo it and this time make sure you log the output).  Judging by
> the compiler executions, it looks like you have the latest ports, so that's
> not an issue.

I'm rebuilding/installing kdesupport2, kdelibs2, and kdebase2 from scratch
on my workstation this morning.  I'll post the full logs when they're
done.  I expect I'll run into the same problems with auth.c and session.c
again in building kdm since I haven't changed anything.  We can go from
there.

					C
Comment 8 siglercm 2001-03-23 22:43:52 UTC
On Wed, 21 Mar 2001, Will Andrews wrote:
> These are pretty strange errors.  I would appreciate it if you'd post
> full logs somewhere of all your builds (yeah, I guess that means you'll
> have to redo it and this time make sure you log the output).

1.) -->

I got the same errors for compiling auth.c and session.c in the kdm
subdirectory.  I think this is "The Right Patch (TM)" for session.c,
rather than the one I posted previously:

----------------------------------------------------------------------------
--- session.c   Fri Mar 23 09:18:29 2001
+++ session.c.orig      Fri Mar 23 09:18:30 2001
@@ -97,12 +97,10 @@
 # include <sys/types.h>
 # include <grp.h>
 #else
-#if !defined (__FreeBSD__) /* already defined in <grp.h>, included above */
 /* should be in <grp.h> */
 extern void    setgrent(void);
 extern struct group    *getgrent(void);
 extern void    endgrent(void);
-#endif
 #endif
 
 #ifdef USESHADOW
----------------------------------------------------------------------------

To look at the logs, please wget these files:

http://labrador.cslab.vt.edu/~siglercm/files/kdesupport2_make_install_out1.txt.bz2
http://labrador.cslab.vt.edu/~siglercm/files/kdelibs2_make_install_out1.txt.bz2
http://labrador.cslab.vt.edu/~siglercm/files/kdebase2_make_install_out1.txt.bz2
http://labrador.cslab.vt.edu/~siglercm/files/kdebase2_make_install_out2.txt.bz2
http://labrador.cslab.vt.edu/~siglercm/files/kdebase2_make_install_out3.txt.bz2

I've looked for warnings and there are a fair number.  I can't see any
that look like they'd cause runtime errors, but I'm not certain.

2.) -->

The problem I've run into with auth.c (stating the obvious) is that
<sys/socket.h> doesn't get #include'd in <net/if.h>.  The problem
I've run into with session.c (again stating the obvious :^) is that
setgrent, getgrent, and endgrent get redefined because <grp.h>
is already #included above.  You can look at the grp.h, net/if.h,
and sys/socket.h files from my system by wget'ing:

http://labrador.cslab.vt.edu/~siglercm/files/grp.h
http://labrador.cslab.vt.edu/~siglercm/files/net_if.h
http://labrador.cslab.vt.edu/~siglercm/files/sys_socket.h

3.) -->

After building kdesupport2, kdelibs2, and kdebase2, startkde still
doesn't run :^(  The symptom is that the splash screen appears, but
it hangs at "Initializing Peripherals."  I've got two logs from startkde,
but since there are no debug symbols the core dump from the second one
doesn't help much:

http://labrador.cslab.vt.edu/~siglercm/files/startx_kde2.1_error_out1.txt
http://labrador.cslab.vt.edu/~siglercm/files/startx_kde2.1_error_out2.txt

I'm guessing this is due to a faulty build on my system.  Maybe I'll
have to rebuild stuff like the qt libraries as well and look at their
build logs to trace this down.  But, frankly, I'm not sure it's
worth the effort.

4.) -->

My system configuration: I did a fresh install of FreeBSD 4.2-RELEASE
from the i386 4.2-install.iso dated "Dec  7 22:00".  I didn't install the
Xprog.tgz tarball because I didn't realize I'd be trying to build any X
Windows ports.  I untarred that into /usr.  I CVSuped the ports tree a
couple of times when I ran into problems building the KDE 2.1 ports.

That's all I've done besides install some binary packages.  It's a pretty
vanilla system, I think.  I should probably do a CVSup to -STABLE and
rebuild the system and kernel, I suppose.

---

Please let me know if I can be of help in any way, and thanks :^)

					C
Comment 9 Will Andrews freebsd_committer freebsd_triage 2001-03-25 07:03:13 UTC
State Changed
From-To: open->closed

Try another build with the latest KDE2 ports, and make sure you clean all 
the old stuff out (deinstall included) before starting with them.