[syslog-ng] Solaris 10 support(?) in latest versions (e.g. 3.3.2)
Marvin Nipper
Marvin.Nipper at stream.com
Tue Nov 15 17:09:50 CET 2011
Apologies upfront for the length, but this addresses two different problems.
Environment: Solaris 10 x64 U10, fully patched (i.e. pretty much "new").
Currently operating (successfully) with 3.0.5, compiled on that platform, and distributed to a number of other Solaris 10 x64 targets.
Problem: Trying to "make the leap" to 3.3.2, and get current, but that version seems to have numerous Solaris compatibility issues. Just trying to understand the status of Solaris support.
Problem #1
Latest packaging no longer works with Solaris-based "make".
After a clean configure (output here):
syslog-ng Open Source Edition 3.3.2 configured
Compiler options:
compiler : gcc -std=gnu99
compiler options : -g -O2 -Wall -pthread -D_REENTRANT -D_PTHREADS -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl/include -DLIBNET_LIL_ENDIAN -I$(top_srcdir)/lib/ivykis/lib/include -I$(top_builddir)/lib/ivykis/lib/include -I$(top_srcdir)/lib/ivykis/modules/include -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
linker flags : -R/usr/local/lib -lpthread
prefix : /usr/local
linking mode : dynamic
__thread keyword : yes
Submodules:
ivykis : internal
libmongo-client : internal
Features:
Debug symbols : no
GCC profiling : no
Memtrace : no
IPV6 support : yes
spoof-source support : yes
tcp-wrapper support : no
Linux capability support : no
PCRE support : no
Env wrapper support : no
systemd support : no (unit dir: none)
Modules:
Module search path : /usr/local/lib/syslog-ng
Default module list : affile,afprog,afsocket,afuser,basicfuncs,csvparser,dbparser,syslogformat,afstreams
Sun STREAMS support (module): yes
SSL support (module) : yes
SQL support (module) : no
PACCT module (EXPERIMENTAL) : no
MongoDB destination (module): yes
JSON support (module) : no (using no)
..... a simple "make" attempt now immediately results in this:
# make
make all-recursive
Making all in lib
make: Fatal error in reader: Makefile, line 991: Unexpected end of line seen
Current working directory /var/opt/packages/syslog-ng-3.3.2/lib
*** Error code 1
The following command caused the error:
fail= failcom='exit 1'; \
for f in x $MAKEFLAGS; do \
case $f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo all-recursive | sed s/-recursive//`; \
list='lib modules syslog-ng scripts tests doc contrib scl debian tgz2build build'; for subdir in $list; do \
echo "Making $target in $subdir"; \
if test "$subdir" = "."; then \
dot_seen=yes; \
local_target="$target-am"; \
else \
local_target="$target"; \
fi; \
(CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \
|| eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
make "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `all-recursive'
Current working directory /var/opt/packages/syslog-ng-3.3.2
*** Error code 1
make: Fatal error: Command failed for target `all'
Not being a developer, per se, I spent time in Google-land, the general result that I find is:
"These are caused because Solaris "make" doesn't accept the 'GNU multi-line Makefile format'. Use gmake instead."
But there are obviously folks who also say that this can be fixed by "correcting" the problems in the Makefiles (so that would seem to be a preferable alternative).
Problem #2
Can no longer perform successful compilations, due to this error:
ld: fatal: relocation error: R_386_GOTOFF
Same configure output as previously shown, followed by gmake (to get around the first problem).
Numerous modules compile successfully, but then this happens:
gcc -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE -I../../lib/include -I../../lib/include -I../../modules/include -Wall -g -O2 -D_REENTRANT -D_POSIX_C_SOURCE=199506L -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2 -MT iv_event_test.o -MD -MP -MF .deps/iv_event_test.Tpo -c -o iv_event_test.o iv_event_test.c
mv -f .deps/iv_event_test.Tpo .deps/iv_event_test.Po
/bin/bash ../../libtool --tag=CC --mode=link gcc -Wall -g -O2 -D_REENTRANT -D_POSIX_C_SOURCE=199506L -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2 -R/usr/local/lib -o iv_event_test iv_event_test.o ../../lib/libivykis.la ../libivykis-modules.la -lrt -lpthread -lsocket
libtool: link: gcc -Wall -g -O2 -D_REENTRANT -D_POSIX_C_SOURCE=199506L -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2 -o iv_event_test iv_event_test.o ../../lib/.libs/libivykis.a ../.libs/libivykis-modules.a /var/opt/packages/syslog-ng-3.3.2/lib/ivykis/lib/.libs/libivykis.a -lrt -lpthread -lsocket -R/usr/local/lib
ld: fatal: relocation error: R_386_GOTOFF: file ../.libs/libivykis-modules.a(iv_event.o): symbol __tls: relocation illegal for TLS symbol
ld: fatal: relocation error: R_386_GOTOFF: file ../.libs/libivykis-modules.a(iv_event.o): symbol __tls: relocation illegal for TLS symbol
ld: fatal: relocation error: R_386_GOTOFF: file ../.libs/libivykis-modules.a(iv_event.o): symbol __tls: relocation illegal for TLS symbol
ld: fatal: relocation error: R_386_GOTOFF: file ../.libs/libivykis-modules.a(iv_event.o): symbol __tls: relocation illegal for TLS symbol
collect2: ld returned 1 exit status
gmake[7]: *** [iv_event_test] Error 1
gmake[7]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib/ivykis/modules/test'
gmake[6]: *** [all-recursive] Error 1
gmake[6]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib/ivykis/modules'
gmake[5]: *** [all-recursive] Error 1
gmake[5]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib/ivykis'
gmake[4]: *** [all] Error 2
gmake[4]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib/ivykis'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2/lib'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/var/opt/packages/syslog-ng-3.3.2'
gmake: *** [all] Error 2
Again, adopting the "Google is my friend" approach, this appears to be an issue with "Solaris not supporting Visibility". (http://www.ilkda.com/compile/Build_Problems.htm)
Most of the sites where I see this being discussed, with other (various) source components, I also see the developers subsequently modifying their environment to "adjust for" the Visibility issue in Solaris.
So, again, not being a C developer myself, I guess I'm wondering whether I'm just doing something wrong with 3.3.2 (i.e. something that I need to do different from my 3.0.5 compilation), or whether this is truly just a "Solaris thing" that has not been accounted for in the current code base?
Sorry for not being better at sorting this out myself. Any and all help/guidance would certainly be appreciated. GLAD to do some sort of testing here, if that will help.
Also, just for reference, here is the full "configure" output from the 3.0.5 build, that compiles clean, and works just fine:
checking pkg-config is at least version 0.9.0... yes
checking for a BSD-compatible install... ./install-sh -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... nawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for bison... bison -y
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking whether make sets $(MAKE)... (cached) yes
checking for ranlib... ranlib
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking how to enable static linking for certain libraries... GNU or Solaris
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/sfw/bin/ggrep
checking for egrep... /usr/sfw/bin/ggrep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dmalloc.h usability... no
checking dmalloc.h presence... no
checking for dmalloc.h... no
checking for strings.h... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking stropts.h usability... yes
checking stropts.h presence... yes
checking for stropts.h... yes
checking sys/strlog.h usability... yes
checking sys/strlog.h presence... yes
checking for sys/strlog.h... yes
checking door.h usability... yes
checking door.h presence... yes
checking for door.h... yes
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
checking sys/prctl.h usability... no
checking sys/prctl.h presence... no
checking for sys/prctl.h... no
checking tcpd.h usability... yes
checking tcpd.h presence... yes
checking for tcpd.h... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_gmtoff... no
checking for I_CONSLOG... yes
checking for O_LARGEFILE... yes
checking for struct sockaddr_storage... yes
checking for struct sockaddr_in6... yes
checking for PR_SET_KEEPCAPS... no
checking for door_create in -ldoor... yes
checking for socket in -lsocket... yes
checking for nanosleep in -lrt... yes
checking for gethostbyname in -lnsl... yes
checking for regexec in -lregex... no
checking for res_init in -lresolv... yes
checking for cap_set_proc in -lcap... no
checking for PCRE... no
configure: WARNING: Cannot find pcre version >= 7.3. pcre support disabled.
checking for strdup... yes
checking for strtol... yes
checking for strtoll... yes
checking for strtoimax... yes
checking for inet_aton... no
checking for inet_ntoa... no
checking for getopt_long... yes
checking for getaddrinfo... no
checking for getutent... yes
checking for pread... yes
checking for pwrite... yes
checking for strcasestr... no
checking for TCP wrapper library... -lwrap
checking for OPENSSL... yes
checking for dlsym in -ldl... yes
checking for inflate in -lz... yes
checking for dlsym in -ldl... (cached) yes
checking for LIBDBI... no
checking for dbi_initialize in -ldbi... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for pthread_create in -lpthread... yes
checking for LIBNET... stty: : No such device or address
stty: : No such device or address
yes
checking whether to enable Sun STREAMS support... yes
checking whether to enable Sun door support... yes
checking whether to enable IPv6 support... yes
checking whether to enable SQL support... no
checking whether to enable Linux capability support... no
checking whether to enable PCRE support... no
checking pkg-config is at least version 0.14... yes
checking for GLIB - version >= 2.10.1... yes (version 2.13.5)
checking for EVTLOG... yes
checking for LIBNET... stty: : No such device or address
stty: : No such device or address
yes
checking for static GLib libraries... yes
checking sanity checking Glib headers... yes
configure: creating ./config.status
config.status: creating dist.conf
config.status: creating Makefile
config.status: creating syslog-ng.spec
config.status: creating src/Makefile
config.status: creating doc/Makefile
config.status: creating doc/docvars.xml
config.status: creating contrib/Makefile
config.status: creating tests/Makefile
config.status: creating debian/Makefile
config.status: creating tgz2build/Makefile
config.status: creating tests/unit/Makefile
config.status: creating tests/functional/Makefile
config.status: creating tests/loggen/Makefile
config.status: creating config.h
config.status: executing depfiles commands
syslog-ng Open Source Edition 3.0.5 configured
Compiler options:
compiler : gcc
compiler options : -g -O2 -Wall -I/usr/local/include/glib-2.0 -I/u
sr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl
/include -DLIBNET_LIL_ENDIAN -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET
_BITS=64
linker flags : -R/usr/local/lib -lpthread
prefix : /usr/local
linking mode : dynamic
Features:
Sun STREAMS support : yes
Sun Door support : yes
Debug symbols : no
GCC profiling : no
Memtrace : no
IPV6 support : yes
spoof-source support : yes
tcp-wrapper support : no
SSL support : yes
SQL support : no
Linux capability support : no
PCRE support : no
Env wrapper support : no
This e-mail may contain confidential and/or privileged information. If you are
not the intended recipient (or have received this e-mail in error) please
notify the sender immediately and destroy this e-mail. Any unauthorized
copying, disclosure or distribution of the material in this e-mail is strictly
forbidden.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.balabit.hu/pipermail/syslog-ng/attachments/20111115/ede1545e/attachment-0001.htm
More information about the syslog-ng
mailing list