On Fri, Oct 28, 2005 at 09:50:40PM +0200, Jens Teubner wrote:
Hi all,
for our ongoing course "Database-Supported XML Processors" I wanted to install MonetDB/XQuery in our Sun-based computer lab. I encountered a number of pitfalls during the install that I will list below. System is SunOS 5.9. There's a bunch of GNU tools installed (e.g., gcc), but a number of tools is only available in their original Sun version. I've used the 4.8.2/0.8.2 tarballs distributed on the SourceForge website and set `--enable-optimize'.
1. Python =========
MonetDB's ./configure complains about a wrong version of Python and aborts. If I give it `--without-python', however, ./configure no longer complains, and MonetDB compiles fine (apparently).
The rules of --with and --without are clear, ie if --with is given and we fail to find the require software package we should directly fail. if one is given we should automatically find out if a package is available, but if it isn't available we should recover and continue. (ie configure should finish and compilation should work) So both the python and libbz cases need work.
2. make =======
Default `make' on that system is the one provided by SunOS. Apparently this is *not* sufficient to compile MonetDB:
Indeed we require 'gnu' make. The *.mk are there because we want to keep the 'configure process and some of the config/makefiles files' for MonetDB and it sub-projects the same. This is to reduce maintainance. We should indeed reconsider this as the *.mk indeed gives some undesired side affects.
-- Sun's `make' does not like the wildcards (*.mk) in Makefile includes. I'm explicitly mentioning that because that actually annoys me for quite some time also on my system (independent of the Sun make issue). The Makefiles include $(top_srcdir)/*.mk and $(top_builddir)/*.mk. If I build MonetDB (or Pathfinder) directly in the source directory, this leads to any *.mk file being included twice---with loads of `make' warnings. Wouldn't it be more consistent to explicitly list .mk files to be included here with their full name? (Btw. with those wildcards, compilation will inevitably fail if I drop some random .mk file in any of the two directories---a thing that a normal user probably wouldn't expect/understand.)
-- Lots of other stuff is not understood by Sun's `make'.
Shouldn't ./configure also check whether the `make' implementation on a system suffices for the project?
gmake did the job for me. It was available on our Sun, fortunately.
3. libbz2 =========
There's no libbz2 on that system. ./configure still did not complain. Compilation, however failed. Adding a `--without-bz2' fixed the issue.
4. Compilation issue ====================
gcc -DHAVE_CONFIG_H -I. -I../../../src/gdk -I../.. -I../../../src/gdk -I../common -DLIBGDK -O2 -std=c99 -D__EXTENSIONS__ -Wall -W -O2 -fomit-frame-pointer -finline-functions -DHWCOUNTERS -DHW_SunOS -DHW_sun4u -Werror-implicit-function-declaration -Werror -Wno-unused-function -Wno-unused-label -Wno-uninitialized -D_REENTRANT -c gdk_posix.c -fPIC -DPIC -o .libs/libbat_la-gdk_posix.o cc1: warnings being treated as errors ../../../src/gdk/gdk_posix.mx: In function `MT_getrss': ../../../src/gdk/gdk_posix.mx:550: warning: int format, pid_t arg (arg 1) gmake[4]: *** [libbat_la-gdk_posix.lo] Error 1 gmake[4]: Leaving directory `/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/gdk'
I've removed the -Werror to get past that error.
This should be fixed.
5. HwCounters =============
./configure complained about libcpc.h: present but cannot be compiled.
Seems like the libcpc.h is there for some other reason. Compiling failed with an error in ..counters.mx. I've thus set `--without-hwcounters'.
This is probably related to us not fully knowning the requirements for the counter module on current sun os systems.
6. Parallel Make ================
Tired of long make runs, I've tried `gmake -j4. Result:
Parallel Make should work! We know there are some problems currently with the automatically genereated dependencies.
[...lots of stuff...] ../../../src/mel/ops.mx: ./ops.h - created ../../../src/mel/symtable.mx: ./symtable.h - created gmake[3]: *** No rule to make target `atom.mx', needed by `atom.h'. Stop. gmake[3]: *** Waiting for unfinished jobs.... ../../../src/mel/dependency.mx: ./dependency.h - created gmake[3]: Leaving directory `/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/mel' gmake[2]: *** [all-recursive] Error 1
Missing dependencies? Starting gmake again did it for me.
Oops! Another one:
/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/utils/Mx/Mx -x y ../../../src/monet/monet_parse.mx ../../../src/monet/monet_parse.mx: ./monet_parse.h - created gmake[3]: *** No rule to make target `../gdk/../common/stream.mx', needed by `../gdk/../common/stream.h'. Stop. gmake[3]: *** Waiting for unfinished jobs.... ../../../src/monet/monet_parse.mx: ./monet_parse.c - created
Another one:
/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/utils/Mx/Mx -x sh ../../../../src/modules/contrib/ddbench.mx gmake[4]: stat:../../../../src/modules/contrib/bat_mmath.mx: Interrupted system call gmake[4]: *** No rule to make target `bat_mmath.mx', needed by `bat_mmath.m'. Stop. gmake[4]: *** Waiting for unfinished jobs.... ../../../../src/modules/contrib/ddbench.mx: ./ddbench - created ../../../../src/modules/contrib/ddbench.mx: ./ddbench.m - created
Another one:
/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/mel/mel -I../../../../src/modules/contrib -I../../common -I../../gdk -I../../monet -I../plain -glue oo7.m > oo7.glue.c gmake[4]: *** No rule to make target `uchr.mx', needed by `uchr.m'. Stop. gmake[4]: *** Waiting for unfinished jobs.... gmake[4]: Leaving directory `/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/modules/contrib'
(I know that parallel build have their problems. I've listed the errors here anyway.)
7. Linker Error ===============
Finally I hit this linker error that I don't know how to solve:
gmake[4]: Entering directory `/u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/tools' /bin/bash ../../libtool --tag=CC --mode=link gcc -O2 -std=c99 -D__EXTENSIONS__ -Wall -W -O2 -fomit-frame-pointer -finline-functions -Werror-implicit-function-declaration -Werror -Wno-unused-function -Wno-unused-label -Wno-uninitialized -D_REENTRANT -o Mserver Mserver.o initmodules.o ../monet/libmonet.la ../modules/plain/lib_algebra.la ../modules/plain/lib_arith.la ../modules/plain/lib_bat.la ../modules/plain/lib_builtin.la ../modules/plain/lib_str.la ../modules/plain/lib_sys.la ../modules/plain/lib_trans.la ../gdk/libbat.la -lsocket -lnsl -ldl -lpthread -lposix4 -lmalloc ../common/libmutils.la ../common/libstream.la gcc -O2 -std=c99 -D__EXTENSIONS__ -Wall -W -O2 -fomit-frame-pointer -finline-functions -Werror-implicit-function-declaration -Werror -Wno-unused-function -Wno-unused-label -Wno-uninitialized -D_REENTRANT -o .libs/Mserver Mserver.o initmodules.o ../monet/.libs/libmonet.so ../modules/plain/.libs/lib_algebra.so ../modules/plain/.libs/lib_arith.so ../modules/plain/.libs/lib_bat.so ../modules/plain/.libs/lib_builtin.so ../modules/plain/.libs/lib_str.so -liconv ../modules/plain/.libs/lib_sys.so ../modules/plain/.libs/lib_trans.so /u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/monet/.libs/libmonet.so /u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/gdk/.libs/libbat.so -lm ../gdk/.libs/libbat.so /u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/common/.libs/libstream.so -ldl -lpthread -lposix4 -lmalloc ../common/.libs/libmutils.so ../common/.libs/libstream.so /u/halle/teubnerj/home_sun/MonetDB/src/MonetDB-4.8.2/build/src/common/.libs/libmutils.so -lsocket -lnsl -lz -Wl,--rpath -Wl,/u/halle/teubnerj/home_sun/MonetDB/lib -Wl,--rpath -Wl,/u/halle/teubnerj/home_sun/MonetDB/lib/MonetDB ../modules/plain/.libs/lib_arith.so: undefined reference to `__ashrdi3@GCC_3.0' ../modules/plain/.libs/lib_arith.so: undefined reference to `__ashldi3@GCC_3.0' ../modules/plain/.libs/lib_arith.so: undefined reference to `__floatdisf@GCC_3.0' ../modules/plain/.libs/lib_arith.so: undefined reference to `__floatdidf@GCC_3.0' collect2: ld returned 1 exit status gmake[4]: *** [Mserver] Error 1
I guess these missing functions should be in libgcc, which should normally be linked automatically by gcc. Maybe adding it explicitly will help.
Any ideas so I can continue and hit more compilation problems?
I'm not an expert on that system. Actually, I don't have any clue what software, libraries, tools, etc. is available there. I have access to the machine at any time, though, and I'm happy to give fixes a try or figure out, e.g., more detailed error messages.
Many thanks for takening these notes. It will take some time to fix it but it is definetly valuable info. Niels
Jens
-- Jens Teubner Technische Universitaet Muenchen, Department of Informatics D-85748 Garching, Germany Tel: +49 89 289-17259 Fax: +49 89 289-17263
Real programmers don't comment their code. If it was hard to write, why should it be easy to read?
------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information _______________________________________________ Monetdb-developers mailing list Monetdb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-developers
-- Niels Nes, Centre for Mathematics and Computer Science (CWI) Kruislaan 413, 1098 SJ Amsterdam, The Netherlands room C0.02, phone ++31 20 592-4098, fax ++31 20 592-4312 url: http://www.cwi.nl/~niels e-mail: Niels.Nes@cwi.nl