how to recover from missing headers in /usr/include ?

Installing and upgrading FreeBSD.

how to recover from missing headers in /usr/include ?

Postby mecano » 21 Jul 2009, 09:40

Hello,
having troubles with some port builds (x11vnc as example, package build runs fine) after upgrading from FressBSD 6.4 to 7.2 (both RELEASE) producing segmentation fault 11 on launch (they build fine, looks like a thread problem, pthread maybe related), I did clean old headers in /usr/include with a
Code: Select all
find /usr/include/ -mtime +60 | xargs rm -r

then did a
Code: Select all
portupgrade -af

I then added missing headers by hand from /usr/src/sys/ (/usr/src/sys/i386/include/ and /usr/src/sys/sys/ when errors popped out. After 3 successfully recover (copying header files from /usr/src/sys/ to /usr/include), I thought that I just could copy all files and did a global copy.
Code: Select all
cp /usr/src/sys/sys/* /usr/include/
cp /usr/src/sys/i386/* /usr/include/

but graphics/libglut still does not want to compile chocking on wchar.h
Code: Select all
/usr/local/include/X11/Xlib.h:1123: error: expected specifier-qualifier-list before 'wchar_t'
/usr/local/include/X11/Xlib.h:1282: error: expected specifier-qualifier-list before 'wchar_t'
/usr/local/include/X11/Xlib.h:1316: error: expected specifier-qualifier-list before 'wchar_t'
/usr/local/include/X11/Xlib.h:3678: warning: type defaults to 'int' in declaration of 'wchar_t'
/usr/local/include/X11/Xlib.h:3678: error: expected ';', ',' or ')' before '*' token

So I guess, it doesn't like the wchar.h I just put in, then I noticed there is a Makefile in /usr/src/include so I 'cd' to it and did a
Code: Select all
make install

now libglut is passing the previous error, but… my /usr/include/ should be pretty messy, is there a simple way to recover from this ?

note :
I did add my CPUTYPE in make.conf after the 7.2 upgrade (it was not set previously), rebuilt the kernel and all ports.
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby DutchDaemon » 21 Jul 2009, 09:48

Did you run all the necessary steps after updating the OS, so including make delete-old, mergemaster, and make delete-old-libs? Sounds like you've compiled stuff against older libs, or mixed old and new libs, confusing applications.
User avatar
DutchDaemon
Old Fart
 
Posts: 10466
Joined: 16 Nov 2008, 20:17
Location: The Netherlands

Postby mecano » 21 Jul 2009, 10:34

Yes indeed it looks like, I followed the process from the handbook starting at 24.2.3. After finding out troubles, I did a make delete-olds but no mergemaster, I thought freebsd-update did it because it asked me several times about diff conf files I had to edit/validate by hand.
Maybe I should have been more carefully reading the handbook previous 24.2.3…
What about forcing a system update (just as one can do with ports with portupgrade -f), is it possible ?
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby DutchDaemon » 21 Jul 2009, 11:11

I didn't realise you used freebsd-update. I was referring to the source-based upgrade procedure. I'll leave it to someone more versed in freebsd-update to come up with a possible fix. In the meantime you could use the procedure in 24.2.4 to see how 'off' your current installation currently is.
User avatar
DutchDaemon
Old Fart
 
Posts: 10466
Joined: 16 Nov 2008, 20:17
Location: The Netherlands

Postby mecano » 21 Jul 2009, 14:50

thanks DutchDaemon and sorry I didn't specify I used freebsd-update, I'll try to be more verbose next time. Going to check 24.2.4, thanks again.
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 21 Jul 2009, 21:59

nothing fancy with freebsd-update ids output… just five headers, some known conf files and the whole ssh crew… I guess, I'd better cvsup source tree (and previously edit my supfile for sources to match RELENG_7_2) and rebuild world (as in 24.6), then kernel, etc.
This should do the job doesn't it ?
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 13:15

after cvsup on sources, I now get this while 'make buildworld'

Code: Select all
cc -c -I /usr/src/gnu/usr.bin/cc/cc_tools/../libiberty -O2 -fno-strict-aliasing -pipe -I. -DIN_GCC -DHAVE_CONFIG_H \
-DPREFIX=\"/usr\" -I/usr/obj/usr/src/gnu/usr.bin/cc/cc_tools/../cc_tools -I/usr/src/gnu/usr.bin/cc/cc_tools/../cc_tools \
-I/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcc -I/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcc/config \
-I/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/include \
-I/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libcpp/include \
-I/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libdecnumber -g -DGENERATOR_FILE -DHAVE_CONFIG_H  \
-I/usr/obj/usr/src/tmp/legacy/usr/include -o safe-ctype.o
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:161: \
error: '_sch_isnvsp' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:161: \
error: '_sch_iscntrl' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:162: \
error: '_sch_isspace' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:162: \
error: '_sch_isblank' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:162: \
error: '_sch_isvsp' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:165: \
error: '_sch_isprint' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:165: \
error: '_sch_ispunct' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:167: \
error: '_sch_isdigit' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:167: \
error: '_sch_isxdigit' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:169: \
error: '_sch_isupper' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:169: \
error: '_sch_isidst' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcclibs/libiberty/safe-ctype.c:173: \
error: '_sch_islower' undeclared here (not in a function)
*** Error code 1


I read several people experiencing the same in freebsd current list (http://www.mailinglistarchive.com/freebsd-current@freebsd.org/msg10161.html). I'm a bit clueless here, any hint? I suspect some faulty previous update (6.2<6.4) on my side.
I tried running cvsup again, make clean in /usr/src…
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 13:33

Maybe the safe-ctype.h in /usr/src/gnu/usr.bin/cc/cc_tools/ is faulty?
I made a
Code: Select all
diff /usr/src/contrib/binutils/include/safe-ctype.h /usr/src/gnu/usr.bin/cc/cc_tools/safe-ctype.h > safe1.diff


and indeed /usr/src/gnu/usr.bin/cc/cc_tools/safe-ctype.h seems to lack some definitions.
outputs : http://pastebin.com/m58c734ad

here is my cvsupfile for info :
Code: Select all
*default host=cvsup3.fr.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_2
*default delete use-rel-suffix

src-all


(I removed compress option on second attempt, all attempts reported successfull)
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby DutchDaemon » 22 Jul 2009, 13:42

After a c(v)sup, make sure to remove /usr/obj before trying a new build.

Code: Select all
rm -rf /usr/obj && cd /usr/src && make cleandir


should give you a clean build environment.
User avatar
DutchDaemon
Old Fart
 
Posts: 10466
Joined: 16 Nov 2008, 20:17
Location: The Netherlands

Postby mecano » 22 Jul 2009, 13:42

and here is my /etc/make.conf
Code: Select all
CPUTYPE?=athlon-tbird
CFLAGS= -O2 -fno-strict-aliasing -pipe
CXXFLAGS+= -fconserve-space
MAKE_SHELL?=sh
COPTFLAGS= -O -pipe
MTREE_FOLLOWS_SYMLINKS= -L

PRINTERDEVICE= ascii
BOOTWAIT=0
DOC_LANG=       en_US.ISO8859-1


PPP_NO_NAT=true         # do not build with NAT support (see make.conf(5))
PPP_NO_NETGRAPH=true    # do not build with Netgraph support
PPP_NO_RADIUS=true      # do not build with RADIUS support
PPP_NO_SUID=true

# added by use.perl 2009-07-21 13:16:33
PERL_VERSION=5.10.0
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 13:43

DutchDaemon wrote:After a c(v)sup, make sure to remove /usr/obj before trying a new build.

Code: Select all
rm -rf /usr/obj && cd /usr/src && make cleandir


should give you a clean build environment.


thanks will try it right now !
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 15:33

ahah ! now it stops at
Code: Select all
/usr/src/gnu/usr.bin/cc/cc_int/insn-modes.c:311: error: 'V1DImode' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_int/insn-modes.c:318: error: 'V8DImode' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_int/insn-modes.c:324: error: 'V16SFmode' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_int/insn-modes.c:325: error: 'V8DFmode' undeclared here (not in a function)
/usr/src/gnu/usr.bin/cc/cc_int/insn-modes.c:508: error: conflicting types for 'real_format_for_mode'
/usr/src/gnu/usr.bin/cc/cc_int/../../../../contrib/gcc/real.h:165: error: previous declaration of 'real_format_for_mode' was here
*** Error code 1
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 21:46

V* machmode.def defs are missing from /usr/obj/usr/src/gnu/usr.bin/cc/cc_tools/insn-modes.h, only V* config/i386/i386-modes.def defs are in.
Could it be, somewhere something is not catching the CPUTYPE?=athlon-tbird and stick to i386 only? So /usr/obj/usr/src/gnu/usr.bin/cc/cc_tools/insn-modes.h was created without taking CPUTYPE in account while building cc is picking it hence the error?
Or is it that the CPU is not a thunderbird? I'll have a look with cpuid!
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France

Postby mecano » 22 Jul 2009, 22:01

OMG! I got a Palomino (ok a A4 one but still)! Yepee! cpuid rulez!
Sorry for the noise folks and remember kids:
"Always check with cpuid before putting anything as CPUTYPE in /etc/make.conf"
mecano
Member
 
Posts: 106
Joined: 04 Feb 2009, 12:42
Location: France


Return to Installing & Upgrading

Who is online

Users browsing this forum: No registered users and 2 guests