Hi,
Following is a list of problems and solutions I discovered while
builing clearsilver on solaris 10 using gcc version 3.4.3 and
configured as:
./configure --prefix=/opt/clearsilver
--x-includes=/usr/openwin/include --x-libraries=/usr/openwin/lib
--enable-remote-debugger --with-apache=/opt/csw/apache
--with-python=/usr/sfw/bin/python --with-perl=/opt/csw/bin/perl
--disable-ruby --with-java=/opt/jdk/jdk1.5.0_04 --disable-csharp
--enable-gettext
I could find solutions to some problems and am documenting them here
in the hope that (i) somebody can tell me what I did wrong to
encounter so many errors and/or (ii) it is useful to someone.
However, I could not solve problem i) maybe because it is pretty late
in the night - any help is gladly appreciated...
Thanks,
~Madhu.
----------------------------------------------------------------------
a) configures fine, but make quits with following error:
> *******************************************
> ** Building Dependencies
> ** OSNAME: SunOS
> *.c: No such file or directory
> make: *** [Makefile.depends] Error 2
error also referenced in
http://groups.yahoo.com/group/ClearSilver/message/352 and
http://groups.yahoo.com/group/ClearSilver/message/273
Solution) rules.mk.in contains construct `ls -1 *.c` which cribs since
there is no *.c in the $(CLEARSILVER) dir. I just changed it to `find
. -name "*.c" -print`. Diff follows
$ diff rules.mk.in rules.mk.in.original
89d88
< FIND = /bin/find
145c144
< @for II in `$(FIND) . -name "*.c" -print`; do \
---
> @for II in `$(LS) -1 *.c`; do \
----------------------------------------------------------------------
b) This causes files in /util to be compiled successfully and
libs/libneo_utl.a is built. libs/libneo_cs.a is also built successfully.
c) Regression tests in cs fail with messages as
diff: illegal option -- brief
usage: diff [-bitw] [-c | -e | -f | -h | -n | -u] file1 file2
diff [-bitw] [-C number | -U number] file1 file2
diff [-bitw] [-D string] file1 file2
diff [-bitw] [-c | -e | -f | -h | -n | -u] [-l] [-r] [-s] [-S
name] directory1 directory2
Failed Regression Test: test.cs
See test.cs.out and test.cs.err
Solution: changed all occurences of "--brief" in cs/Makefile to "-brief"
----------------------------------------------------------------------
d) linking fails for static.cso with error messages as
gcc -shared -fPic -o static.cso static.o -L../libs/ -lneo_cgi -lneo_cs
-lneo_utl -lz
Text relocation remains referenced
against symbol offset in file
<unknown> 0x0
../libs//libneo_cgi.a(html.o)
<unknown> 0x4
../libs//libneo_cgi.a(html.o)
<unknown> 0x8
../libs//libneo_cgi.a(html.o)
and so on.
Solution: add -fPIC to CFLAGS and CPPFLAGS in rules.mk.in, cs/Makefile
and python/Makefile and changed all occurences of -fPic to -fPIC
----------------------------------------------------------------------
e) Fixes linking errors, but loads of warnings in compiling mod_ecs.so
follow
/opt/csw/apache/bin/apxs -c -o mod_ecs.so mod_ecs.c
cc -DSOLARIS2=280 -DMOD_SSL=208122 -DEAPI -DEAPI_MM -fast -xarch=v8
-KPIC -DSHARED_MODULE -I/opt/csw/apache/include -c mod_ecs.c
"mod_ecs.c", line 286: warning: pointer to void or function used in
arithmetic
"mod_ecs.c", line 640: warning: argument #2 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, pointer to
void, unsigned int) returning int
"mod_ecs.c", line 640: warning: argument #3 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, pointer to
char, pointer to void) returning int
"mod_ecs.c", line 640: warning: argument #4 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, pointer to
char, unsigned int) returning int
"mod_ecs.c", line 640: warning: argument #5 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, pointer to
char) returning pointer to char
"mod_ecs.c", line 640: warning: argument #6 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, pointer to
char, pointer to char) returning int
"mod_ecs.c", line 640: warning: argument #7 is incompatible with
prototype:
prototype: pointer to void : "unknown", line 0
argument : pointer to function(pointer to void, int, pointer
to pointer to char, pointer to pointer to char) returning pointer to char
ld -G -o mod_ecs.so mod_ecs.o
----------------------------------------------------------------------
NOTE: THIS WAS A PROBLEM WITH MY PYTHON INSTALLATION AND IN ALL
PROBABILITY IS NOT APPLICABLE TO YOU.
f) problem building in the python subdir.
$ gmake
....
gmake[1]: Entering directory `/tmp/clearsilver-0.9.14/python'
rm -f neo_cgi.so
/usr/sfw/bin/python setup.py build_ext --inplace
adding inc_path $(NEOTONIC_ROOT)
adding lib_path $(LIB_DIR)
adding lib z
running build_ext
building 'neo_cgi' extension
creating build
creating build/temp.solaris-2.10-sun4u-2.3
/sgnome/tools/sparc-solaris/forte/SOS8/SUNWspro/bin/cc -i -xO4 -xspace
-xstrconst -xarch=v8a -mr -DANSICPP -D__STDC_VERSION__=199409L
-DNDEBUG -O -I../ -I/usr/sfw/include/python2.3 -c neo_cs.c -o
build/temp.solaris-2.10-sun4u-2.3/neo_cs.o
unable to execute
/sgnome/tools/sparc-solaris/forte/SOS8/SUNWspro/bin/cc: No such file
or directory
error: command
'/sgnome/tools/sparc-solaris/forte/SOS8/SUNWspro/bin/cc' failed with
exit status 1
Solution: None found!!! Hmm...following is what I tried
$ ggrep -R -r sgnome *
$ for i in `find . -name "*" -print`; do grep sgnome $i; done
$
the problem was with my python installation - not sure why.
reconfigured with --python=/opt/csw/bin/python and that was built fine.
----------------------------------------------------------------------
g)
gmake[1]: Entering directory `/tmp/clearsilver-0.9.14/perl'
cc -c -I../ -D_REENTRANT -I/opt/csw/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -O -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\"
-KPIC "-I/opt/csw/lib/perl/5.8.6/CORE" ClearSilver.c
"ClearSilver.xs", line 369: warning: argument #2 is incompatible with
prototype:
prototype: pointer to const char :
"/usr/include/iso/string_iso.h", line 72
argument : pointer to unsigned char
"ClearSilver.xs", line 384: undefined symbol: __PRETTY_FUNCTION__
"ClearSilver.xs", line 384: warning: improper pointer/integer
combination: arg #1
cc: acomp failed for ClearSilver.c
Solution: changed CC to gcc and CFLAGS to -fPIC in perl/Makefile [This
could be a problem with my environmental variables- although I did
ensure that I unset CC, CXX, CPP, CFLAGS, CXXFLAGS, CPPFLAGS and
LDFLAGS before I ran ./configure ]. Removed
-L/opt/forte8/SUNWspro/prod/lib from LDFLAGS and LDDFLAGS in
perl/Makefile since those are not valid directories on my machine.
----------------------------------------------------------------------
h) now to the java-jni part
gmake[1]: Entering directory `/tmp/clearsilver-0.9.14/java-jni'
gmake[1]: *** No rule to make target `jni_md.h', needed by
`j_neo_util.o'. Stop.
gmake[1]: Leaving directory `/tmp/clearsilver-0.9.14/java-jni'
Solution: changed -I$(JAVA_PATH)/include/linux to
-I$(JAVA_PATH)/include/solaris in java-jni/Makefile since this is a
solaris m/c and java_md.h is in $(JAVA_PATH)/include/solaris.
----------------------------------------------------------------------
i)
gmake[1]: Entering directory `/tmp/clearsilver-0.9.14/java-jni'
/opt/jdk/jdk1.5.0_04/bin/javah -classpath clearsilver.jar -jni
org.clearsilver.HDF
/opt/jdk/jdk1.5.0_04/bin/javah -classpath clearsilver.jar -jni
org.clearsilver.CS
gcc -g -O2 -Wall -I../ -fPIC -I../ -I/opt/jdk/jdk1.5.0_04/include
-I/opt/jdk/jdk1.5.0_04/include/solaris -o j_neo_util.o -c j_neo_util.c
In file included from j_neo_util.c:5:
../util/neo_err.h:27: error: syntax error before "typedef"
In file included from /usr/include/stdlib.h:18,
from ../util/neo_misc.h:15,
from ../util/neo_str.h:19,
from ../util/neo_err.h:117,
from j_neo_util.c:5:
/usr/include/iso/stdlib_iso.h:37: error: syntax error before "extern"
gmake[1]: *** [j_neo_util.o] Error 1
gmake[1]: Leaving directory `/tmp/clearsilver-0.9.14/java-jni'
gmake: *** [cs] Error 2
Solution: NONE FOUND