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). 2. make ======= Default `make' on that system is the one provided by SunOS. Apparently this is *not* sufficient to compile MonetDB: -- 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. 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'. 6. Parallel Make ================ Tired of long make runs, I've tried `gmake -j4. Result: [...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 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. 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?