Ah the sweet taste of succes makes me long for more...
I had another look at
hugin and remembered I'd need mono to get hugin (or one of it's dependencies) to work on my opensolaris laptop.
So once more I venture into the trenches and downloaded the mono sources.
I left my symlinks to ac_local and automake from a previous exercise in place, promoted /usr/sfw/bin to be the first in the $PATH, symlinked /usr/sfw/bin/ggrep to /usr/sfw/bin/grep to fix an initial grep error in a first pass of ./configure and:
#./configure passed!
I did see some grep errors, and with assuming that ggrep would fix that, I symlinked grep to grep in /usr/sfw/bin.
# make
crashed and burned with errors complaining about dtrace:
make[3]: Entering directory `/root/mono-2.2/mono/utils'
/usr/sbin/dtrace -32 -s ../../data/mono.d -o mono-dtrace.h
dtrace: script '../../data/mono.d' matched 0 probes
dtrace: no probes matched
make[3]: *** [mono-dtrace.h] Error 1
make[3]: Leaving directory `/root/mono-2.2/mono/utils'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/mono-2.2/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mono-2.2'
make: *** [all] Error 2
#./configure --enable-dtrace=true
fixed that!
(reading the ./configure --help I realise i should've used --enable-dtrace=yes, so I'm assuming dtrace support isn't enabled...)
I symlinked /usr/sfw/bin/gmake to /usr/sfw/bin/make and
# make
crashed on some u_int32_t errors:
googleing for this I found a solution: replace u_int32_t with uint32_t and try again. Seems most of them were ironed out before, except for three entries in
In file included from ../../mono/utils/freebsd-elf32.h:32,
from aot-compiler.c:67:
../../mono/utils/freebsd-elf_common.h:46: error: syntax error before "u_int32_t"
../../mono/utils/freebsd-elf_common.h:46: warning: no semicolon at end of struct or union
../../mono/utils/freebsd-elf_common.h:47: warning: type defaults to `int' in declaration of `n_descsz'
../../mono/utils/freebsd-elf_common.h:47: warning: data definition has no type or storage class
../../mono/utils/freebsd-elf_common.h:48: error: syntax error before "n_type"
../../mono/utils/freebsd-elf_common.h:48: warning: type defaults to `int' in declaration of `n_type'
../../mono/utils/freebsd-elf_common.h:48: warning: data definition has no type or storage class
../../mono/utils/freebsd-elf_common.h:49: warning: type defaults to `int' in declaration of `Elf_Note'
../../mono/utils/freebsd-elf_common.h:49: warning: data definition has no type or storage class
In file included from aot-compiler.c:67:
../../mono/utils/freebsd-elf32.h:144: error: syntax error before "Elf32_Nhdr"
../../mono/utils/freebsd-elf32.h:144: warning: type defaults to `int' in declaration of `Elf32_Nhdr'
../../mono/utils/freebsd-elf32.h:144: warning: data definition has no type or storage class
In file included from aot-compiler.c:68:
../../mono/utils/freebsd-elf64.h:162: error: syntax error before "Elf64_Nhdr"
../../mono/utils/freebsd-elf64.h:162: warning: type defaults to `int' in declaration of `Elf64_Nhdr'
../../mono/utils/freebsd-elf64.h:162: warning: data definition has no type or storage class
make[4]: *** [aot-compiler.lo] Error 1
make[4]: Leaving directory `/root/mono-2.2/mono/mini'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/root/mono-2.2/mono/mini'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/mono-2.2/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mono-2.2'
make: *** [all] Error 2
fixed that by changing the u_int32_t's to uint32_t's. and
# make
again.
now:
if test -w ../mcs; then :; else chmod -R +w ../mcs; fi
cd ../mcs && make NO_DIR_CHECK=1 PROFILES='net_1_1 net_2_0 net_3_5 net_2_1' CC='gcc' all-profiles
make[3]: Entering directory `/root/mono-2.2/mcs'
make profile-do--net_1_1--all profile-do--net_2_0--all profile-do--net_3_5--all profile-do--net_2_1--all
make[4]: Entering directory `/root/mono-2.2/mcs'
make PROFILE=basic all
make[5]: Entering directory `/root/mono-2.2/mcs'
usage: mcs [-cdpVz] [-a string] [-n name] file ...
make[6]: *** [build/deps/basic-profile-check.exe] Error 1
make[6]: Entering directory `/root/mono-2.2/mcs'
*** The compiler 'mcs' doesn't appear to be usable.
*** Trying the 'monolite' directory.
make[7]: Entering directory `/root/mono-2.2/mcs'
build/deps/basic-profile-check.cs(1,1): error CS8025: Parsing error
make[8]: *** [build/deps/basic-profile-check.exe] Error 1
make[8]: Entering directory `/root/mono-2.2/mcs'
*** The contents of your 'monolite' directory may be out-of-date
Ouch. What's that! Checking the readme.. it suggests that I'll have to run "make get-monolite-latest" (make sure gtar is found as tar in your $PATH and move solaris' mcs out of the way),
# make EXTERNAL_MCS=false
This works! (Ok, As I've been poking around a lot with getting this to work, I also installed the monolite-latest libs in /usr/local/lib/mono/1.0, so if the above doesn't work... Install em there).
I've also found that when make or ./configure fails, errors are seldomly reproducible even after make clean. I tend to rm -rf the dir and tar xvf again. This holds true for most of the stuff I build anyways.
anyways.
# make check runs fine as well:
339 test(s) passed. 3 test(s) did not pass.
Failed tests:
appdomain-unload.exe
thunks.exe
bug-459094.exe
Well. That does seem ok for now.