Subject: configure/libtool problems: kdelibs3 on 1.6
To: None <tech-pkg@netbsd.org>
From: Mark Derbyshire <mark@taom.com>
List: tech-pkg
Date: 10/17/2002 12:35:09
I'm converting some machines to NetBSD 1.6 and ran into problems building
kdelibs3. I've worked around them all, but as I'm a newcomer, I'd like to
determine what went wrong. All of the builds have been on mac68k and I
pulled pkgsrc through sup on 5 Oct. Initially I built into /usr/pkg, but
problems with some non-NetBSD packages finally forced me to deinstall and
rebuild into /usr/local via mk.conf. I've since built a number of NetBSD
packages without any problems, but things went haywire in kdelibs3 when
building kde3. The only other non-standard thing I recall is using the
NetBSD tcsh package as my shell.
1. The kdelibs3 configure script doesn't see that the NetBSD CUPS package
is installed. First config.log complained that there was no -lcups lib,
even though it was in /usr/local/lib. So I short circuited that and it next
claimed that the header cups/cups.h wasn't there, in spite of the path
being in /usr/local/include. Even config.log shows all the correct paths
(especially /usr/local/include & lib) on the cc command lines.
I manually ran the CUPS conftest.c codes from configure using the cc
command line as pasted from config.log. Both had no problem outside the
script. I even dumped out the env and some other debug to make sure I had
replicated the evals properly. Always worked fine outside but not inside
the script. I wasted so much time (because of the 68k) that I finally
hardcoded the CUPS results and at least things proceeded. Other configure
checks seem to work before and after the CUPS checks and I didn't notice
anything that would inherently cause the CUPS checks to fail. I also
checked my manual tcsh env vars, but there was nothing related to the
include paths. There are a lot of env vars in the script.
2. The kdelibs3 make started off with dcop. Things worked until the
linking, when libtool started looking to build libDCOP.la:
*** Warning: linker path does not have real file for library -lgcc_pic.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libgcc_pic and none of the candidates passed a file format test
*** using a regex pattern. Last file checked: /usr/lib/libgcc_pic.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.
*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
Of course anything that used DCOP afterwards (almost all) whined similarly,
as I realized all the KDE shared libs were turning into statics, which was
going to blow away my paltry 68k memory at runtime, even if this build ever
worked.
I started tracing back the dependencies to libgcc_pic.a and they seemed
legit. Not being a NetBSD geek, I wondered why this lib wasn't built as
shared, until I went in with nm and found out it was. The mail archives
hinted at the history of libgcc_pic.a and suggested the NetBSD libtool was
tweaked to identify lib*_pic.a as shared. I realized that kdelibs3 was
probably using its own libtool, so I slipped in the NetBSD version, which
seems to cure the gcc_pic problem. I'm not sure I agree with the lib*_pic.a
philosophy, but either way kdelibs3 has a problem.
3. The next problem hit building in kdelibs3.0.3/kdeprint/cups/cupsdconf2.
The "make package" I did in x11/kde3 recursed down to this point and the
compiles failed because they couldn't find cups/cups.h, cups/ipp.h and
cups/language.h. But the cups directory with these files was still in
/usr/local/include and the cc calls had more than one -I/usr/local/include.
Having seen this in #1, I now felt that I had really done something wrong,
but couldn't see what was happening.
Finally I cd'ed down to this directory and typed make: the compiles found
all the include files and ran fine [Note: the make in cupsdconf2 did not
completely work as it did not build the *.moc dependencies at all. When I
did these manually, everything completed]. The same happened in the parent
directory.
The kdelibs3 build is winding down and looks like my hacks are working.
Still there should be a reason for the weird behavior I've seen with this
package. I hope it's just me. If there's anything I can do to help, please
let me know.
Thanks,
Mark
PS: I've listed the packages I have installed with pkg_info:
digest-20010807 Message digest wrapper utility
libtool-base-1.4.20010614nb9 Generic shared library support script (the
script itself)
db4-4.0.14 Sleepycat Software's Berkeley DB version 4
perl-5.6.1nb7 Practical Extraction and Report Language
tcsh-6.12.00nb1 Extended C-shell with many useful features
gmake-3.79.1nb1 GNU version of 'make' utility
bison-1.35 GNU yacc(1) replacement
curl-7.9.7 client that groks URLs
wget-1.7nb1 Retrieve files from the 'net via HTTP and FTP
p5-Net-SSLeay-1.20 perl5 module for using OpenSSL
jpeg-6b IJG's jpeg compression utilities
x11-links-0.8 shadow tree of links to X11R6 headers and libraries
MesaLib-3.4.2 Graphics library similar to SGI's OpenGL
glu-3.4.2 GLU polygon tesselation facility for Mesa
glut-3.4.2 GLUT Graphics library similar to SGI's OpenGL
lcms-1.06 Light Color Management System -- a color management
library
mng-1.0.4 Multiple-image Network Graphics (MNG) reference library
png-1.2.4 Library for manipulating PNG images
freetype2-2.0.5 font rendering engine and library API
pth-1.4.1nb2 GNU Portable Thread library
qt3-libs-3.0.5 C++ X GUI toolkit
openldap-2.0.27 Lightweight directory access protocol server and client
package
libaudiofile-0.2.3nb1 Sound library for SGI audio file
qt3-tools-3.0.5 QT GUI (WYSIWYG) builder and other tools
arts-1.0.3 Analog Real-Time Synthesizer
pcre-3.9 Perl Compatible Regular Expressions library
tiff-3.5.7 Library and tools for reading and writing TIFF data
files
libiconv-1.8 character set conversion library
libxml2-2.4.24nb1 XML parser library for GNOME
libxslt-1.0.20 XSLT parser library for GNOME
openslp-1.0.9a Open-source implementation of the Service Location
Protocol
cups-1.1.15.1 Common UNIX Printing System