bug-cfengine
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Problems configuring cfengine 2.1.17 on Solaris10


From: Kurt Reimer
Subject: RE: Problems configuring cfengine 2.1.17 on Solaris10
Date: Wed, 21 Dec 2005 14:23:04 -0500 (EST)


I do have libgcc_s.so.1 installed in /usr/local/lib, and I now find that my extracted test program will compile and run with:

bash-3.00# export LD_LIBRARY_PATH=/usr/local/lib

This also allows the original configure script to succeed!

I find this to be a little disturbing, as it seems to mean that I have to have GCC, or at least the gcc libraries, installed on any system on which I'd like to run my cfengine executables. It seems to be that even when building a shared library executable gcc should statically resolve calls to it's own internal libraries.

Since retrieving and installing the gcc 3.3.2 package from www.sunfreeware.com, I realized that Sun Microsystems already included gcc 3.4.3 in the Solaris10 distribution. They just can't bring themselves to put Open Source software in /usr/local like everybody else, so they put it in /usr/sfw ((s)un(f)ree(w)are?). I may try backing out 3.3.2 and using the Sun-supplied package.

Yours,

Kurt


The
'real' error is:
ld.so.1: ./conftest: fatal: libgcc_s.so.1: open failed: No such file or
directory
So, the problem isn't with Berkeley DB, except that perhaps BDB requires
libgcc. Is libgcc installed?

-Jason Martin



-----Original Message-----
From: Kurt Reimer [mailto:address@hidden
Sent: Wednesday, December 21, 2005 8:14 AM
To: Martin, Jason H
Cc: address@hidden; address@hidden; address@hidden
Subject: RE: Problems configuring cfengine 2.1.17 on Solaris10



What is the exact output from the config.log for when the problem
occurs?

-Jason Martin

Jason,
        Thanks for taking a look at this. Here's the relevant
part of the
log output from the original configure script, with my email client
inserting line breaks and me adding in backslashes:

======================================================================
configure:8582: checking Berkeley DB Version
configure:8611: gcc -o conftest -D_REENTRANT -pthread -g -O2      \
-I/usr/local/BerkeleyDB.4.4//include -D_REENTRANT -pthread        \
-L/usr/local/BerkeleyDB.4.4//lib -R/usr/local/BerkeleyDB.4.4//lib \
conftest.c -lnsl -lsocket -lm  -ldb >&5
gcc: unrecognized option `-pthread'
gcc: unrecognized option `-pthread'
configure:8614: $? = 0
configure:8616: ./conftest
ld.so.1: ./conftest: fatal: libgcc_s.so.1: open failed: No such   \
  file or directory
./configure: line 8617: 26012 Killed        ./conftest$ac_exeext
configure:8619: $? = 137
configure: program exited with status 137
configure: failed program was:
| /* confdefs.h.  */
|
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "cfengine"
| #define VERSION "2.1.17"
| #define HAVE_PTHREAD 1
| #define YYTEXT_POINTER 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LIBKSTAT 1
| #define HAVE_GETLOADAVG 1
| #define HAVE_LIBM 1
| #define HAVE_LIBSOCKET 1
| #define HAVE_LIBNSL 1
| #define USE_BERKELEY_DB 1
| /* end confdefs.h.  */
|
| #include <db.h>
| #include <stdio.h>
| int main(void)
| {
|     printf("%d.%d.%d
",DB_VERSION_MAJOR,DB_VERSION_MINOR,DB_VERSION_PATCH);
|     if (DB_VERSION_MAJOR < 3 || (DB_VERSION_MAJOR == 3 &&    \
DB_VERSION_MINOR < 2))
|         exit(1);
|     exit(0);
| }
|
configure:8629: error: This release of cfengine requires       \
BerkeleyDB 3.2 or later
======================================================================

        The second invocation of this program doesn't cause the
configure
script to abort, but it does define CF_OLD_DB, which
generates compile
errors during the make.

        After collecting this output, I tried running the gcc compile
command as it appears above on a copy of the test program (without the
output redirection), and it does compile OK and generate the same
error message when I run it. I find that I can make the program run
successfully if I take the "-lbd" off the compile string OR if I
go into /usr/local/BerkeleyDB.4.4/lib and remove all the shared
libraries. (I guess this forces use of the static libraries in that
directory. I know that when I remove them too the compile fails.)

        I'm not sure what all this means, but I now have less
confidence
that the cfengine executables I ended up with are worth anything. Does
this mean that I built the Berkeley DB incorrectly?

Yours,

Kurt

-----Original Message----- >>
From: >> address@hidden
[mailto:address@hidden
org] On Behalf Of Kurt Reimer
Sent: Tuesday, December 20, 2005 1:56 PM
To: address@hidden; address@hidden
Subject: Problems configuring cfengine 2.1.17 on Solaris10



Hello,
     Like previous posters I'm running into problems with the
configure
script not recognizing the BerkeleyDB version number, and it
doesn't seem
to have anything to do with LD_LIBRARY_PATH or LD_RUN_PATH:

*******************
bash-3.00# export \
LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.4/:/usr/local/Berkeley
DB.4.4/lib/
bash-3.00# export \

LD_RUN_PATH=/usr/local/BerkeleyDB.4.4/:/usr/local/BerkeleyDB.4.4/lib/
bash-3.00# export CFLAGS=-I/usr/local/BerkeleyDB.4.4/include
bash-3.00# ./configure
--with-berkeleydb=/usr/local/BerkeleyDB.4.4/ \
--with-openssl=/usr/sfw checking build system type...
sparc-sun-solaris2.10
.   .   .   .   .   .   .   .   .   .   .   .   .   .
checking for BerkeleyDB location in /usr/local/BerkeleyDB.4.4/...
/usr/local/BerkeleyDB.4.4/
checking Berkeley DB Version... configure: error: This
release of cfengine
requires BerkeleyDB 3.2 or later
bash-3.00#

       (I added the backslashes where my email client wrapped the
cut-and-pasted command lines.)
*******************

      I've gone so far as to comment out all but the
"exit(0);" return in
the test program that is being run at this point in the
configure script, with the same result:


*******************
#include <db.h>
#include <stdio.h>
int main(void)
{
     /*
     printf("%d.%d.%d ",
            DB_VERSION_MAJOR,DB_VERSION_MINOR,DB_VERSION_PATCH);
     if (DB_VERSION_MAJOR < 3 ||
         (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 2))
         exit(1);
     */
     exit(0);
}
*******************

      I can get cfengine to configure, make, and install if I
edit the
configure script to dummy out the two places where it runs the test
program listed above. Note that the configure, make, and make
install all
succeed without the help of LD_LIBRARY_PATH, LD_RUN_PATH, or
any special include directories defined in CFLAGS:

*******************
bash-3.00# diff configure.works configure
8618,8620c8618
< ##############################
< # ac_status=$? This test is broken
<   ac_status=0
---
  ac_status=$?
8687,8690c8685,8687
< ################################
< #cat >>confdefs.h <<\_ACEOF Same program, still broken
< ##define CF_OLD_DB 1
< #_ACEOF
---
cat >>confdefs.h <<\_ACEOF
#define CF_OLD_DB 1
_ACEOF
bash-3.00# cp configure.works configure
bash-3.00# unset LD_LIBRARY_PATH
bash-3.00# unset LD_RUN_PATH
bash-3.00# unset CFLAGS
bash-3.00# ./configure --with-berkeleydb=/usr/local/BerkeleyDB.4.4/
--with-openssl=/usr/sfw
checking build system type... sparc-sun-solaris2.10
.   .   .   .   .   .   .   .   .   .   .   .   .   .
checking for library containing socket... none required
checking for BerkeleyDB location in /usr/local/BerkeleyDB.4.4/...
/usr/local/BerkeleyDB.4.4/
checking Berkeley DB Version... OK
checking Berkeley DB API... checking for db_create in -ldb...
yes checking for OpenSSL location... /usr/sfw
.   .   .   .   .   .   .   .   .   .   .   .   .   .
DONE: Configuration done. Run make/gmake to build cfengine.

bash-3.00# make[1]: Entering directory
`/usr/local/src/cfengine-2.1.17/pub'
if gcc -DHAVE_CONFIG_H -I. -I. -I../src
-I/usr/local/BerkeleyDB.4.4//include -I/usr/sfw/include
-D_REENTRANT
-pthread  -D_REENTRANT -pthread -g -O2
-I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -g -O2 -Wreturn-type -Wmissing-prototypes
-Wuninitialized -D_REENTRANT -pthread -g -O2
-I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -MT getopt.o -MD -MP -MF
".deps/getopt.Tpo" -c -o
getopt.o getopt.c; \
then mv -f ".deps/getopt.Tpo" ".deps/getopt.Po"; else rm -f
".deps/getopt.Tpo"; exit 1; fi
gcc: unrecognized option `-pthread'
gcc: unrecognized option `-pthread'
gcc: unrecognized option `-pthread'
if gcc -DHAVE_CONFIG_H -I. -I. -I../src
-I/usr/local/BerkeleyDB.4.4//include -I/usr/sfw/include
-D_REENTRANT
-pthread  -D_REENTRANT -pthread -g -O2
-I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -g -O2 -Wreturn-type -Wmissing-prototypes
-Wuninitialized -D_REENTRANT -pthread -g -O2
-I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -MT getopt1.o -MD -MP -MF
".deps/getopt1.Tpo" -c -o
getopt1.o getopt1.c; \
then mv -f ".deps/getopt1.Tpo" ".deps/getopt1.Po"; else rm -f
".deps/getopt1.Tpo"; exit 1; fi
.   .   .   .   .   .   .   .   .   .

.....and so on....

*******************

      "make" and "make install" both succeed. I haven't yet
begun to try to
use cfengine, but I suspect the executables will work properly.

      It would be nice if the configuration process would work
out-of-the-box. If I'm dong something wrong please let me know.

Yours,

Kurt Reimer


_______________________________________________
Help-cfengine mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/help-> cfengine








reply via email to

[Prev in Thread] Current Thread [Next in Thread]