PING: [PATCH FOR REVIEW] System Zlib Support (original) (raw)
Andrew Hughes ahughes at redhat.com
Tue Aug 14 12:36:24 UTC 2012
- Previous message: PING: [PATCH FOR REVIEW] System Zlib Support
- Next message: PING: [PATCH FOR REVIEW] System Zlib Support
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
----- Original Message -----
On 10/08/2012 18:40, Andrew Hughes wrote: > ----- Original Message ----- >> Hi Andrew >> >> Alan mentioned the other day that the build (with your latest >> patch, >> with zlib-dev) failed at pack200 >> when he tried to turn it on on linux. Can your double check on >> your >> system? >> > What kind of failure? All webrevs I've posted pass a complete > build here, > and we've been using system zlib for years as previously mentioned, > so I'm > surprised by this. > I grabbed your patch a few days ago and did a build+test job on all platforms (Linux/Solaris/Mac/Windows) and didn't see any issues. This was of course using the defaults, I didn't set SYSTEMZLIB explicitly.
However I did see an issue on Ubuntu 12.0.4 (32-bit) with SYSTEMZLIB=true. Attached is the tail of the log. I haven't had time to look at it but I do see that libzip.so is built as expected (ldd shows it is linked to libz). The build failure is with unpack200 as it uses the the zlib functions. Building with SYSTEMZLIB=false is fine on this system. -Alan rm -f ../../../../../build/linux-i586/bin/unpack200 rm -f ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/mapfile-vers /bin/cp mapfile-vers-unpack200 ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/mapfile-vers /usr/bin/gcc -O2 -DPRODUCT -fPIC -DCCNOEX -W -Wall -Wno-unused -Wno-parentheses -fno-omit-frame-pointer -DLITTLEENDIAN -DFULL -DSYSTEMZLIB -DNDEBUG -DARCH='"i586"' -Di586 -DLINUX -DRELEASE='"1.8.0-internal"' -DLARGEFILE64SOURCE -DGNUSOURCE -DREENTRANT -I. -I../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/CClassHeaders -I../../../../../src/closed/share/javavm/export -I../../../../../src/solaris/javavm/export -I../../../../../src/share/javavm/export -I../../../../../src/share/native/common -I../../../../../src/solaris/native/common -I../../../../../src/share/native/com/sun/java/util/jar/pack -I../../../../../src/solaris/native/com/sun/java/util/jar/pack -Xlinker -O1 -Xlinker -version-script=mapfile-vers -Wl,--hash-style=both -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker $ORIGIN -Xlinker -z -Xlinker defs -L../../../../../build/linux-i586/lib/i386 -Wl,-soname=libunpack.so -lz -lc ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/bands.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/bytes.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/coding.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/unpack.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/utils.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/main.o -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic -o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200 ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function
jar::deflatebytes(bytes&, bytes&)':_ _zip.cpp:(.text+0x79b): undefined reference to
deflateInit2' zip.cpp:(.text+0x828): undefined reference todeflate'_ _zip.cpp:(.text+0x842): undefined reference to
deflateEnd' zip.cpp:(.text+0x854): undefined reference todeflateEnd'_ _zip.cpp:(.text+0x87c): undefined reference to
deflate' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In functionjar::addJarEntry(char const*, bool, int, bytes&,_ _bytes&)':_ _zip.cpp:(.text+0x8d2): undefined reference to
crc32' zip.cpp:(.text+0x9d1): undefined reference tocrc32'_ _zip.cpp:(.text+0x9ee): undefined reference to
crc32' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In functiongunzip::free()':_ _zip.cpp:(.text+0xb33): undefined reference to
inflateEnd' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In functionreadinputviagzip(unpacker*, void*, long long, long_ _long)':_ _zip.cpp:(.text+0xbfe): undefined reference to
inflate' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In functiongunzip::start(int)':_ _zip.cpp:(.text+0xf35): undefined reference to
inflateInit2' collect2: ld returned 1 exit statusOk, the obvious difference between my output and yours is you seem to be linking statically via gcc rather than dynamically with g++.
/usr/bin/g++ -O2 -DPRODUCT -fPIC -DCC_NOEX -W -Wall
-Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN -g
-DFULL -DSYSTEM_ZLIB -DNDEBUG -DARCH='"amd64"' -Damd64 -DLINUX -DRELEASE='"1.8.0-internal"'
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_LP64=1 -I.
-I/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/CClassHeaders
-I../../../../../src/solaris/javavm/export -I../../../../../src/share/javavm/export
-I../../../../../src/share/native/common -I../../../../../src/solaris/native/common
-I../../../../../src/share/native/com/sun/java/util/jar/pack
-I../../../../../src/solaris/native/com/sun/java/util/jar/pack
-Xlinker -O1 -Xlinker -version-script=mapfile-vers -Xlinker -z -Xlinker origin
-Xlinker -rpath -Xlinker $ORIGIN -Xlinker -z -Xlinker defs -L/home/andrew/builder/awt/lib/amd64
-Wl,-soname=libunpack.so -lz -lc
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/bands.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/bytes.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/coding.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/unpack.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/utils.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/zip.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/main.o
-lstdc++ -o /home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200
/bin/cp /home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200
/home/andrew/builder/awt/bin/unpack200
Checking for mapfile use in: /home/andrew/builder/awt/bin/unpack200
Library loads for: /home/andrew/builder/awt/bin/unpack200
linux-vdso.so.1 (0x00007ffff315c000)
libz.so.1 => /lib64/libz.so.1 (0x00007fd609351000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/libstdc++.so.6 (0x00007fd60904a000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd608d56000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd6089ac000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/libgcc_s.so.1 (0x00007fd608796000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd609567000)
RUNPATH for: /home/andrew/builder/awt/bin/unpack200
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x000000000000000f (RPATH) Library rpath: [$ORIGIN]
0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN]
Do you have a static libz.a installed (from zlib1g-dev) and all dependent static libraries?
I suspect you'll get the same failure with or without my patch (though you'll probably need the change to defines.h to get this far...)
I'd guess you have STATIC_CXX set to true (the default apparently):
From Compiler-gcc.gmk:
STATIC_CXX = true ifeq ($(STATIC_CXX),true) # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++" # We need to use gcc to statically link the C++ runtime. gcc and g++ use # the same subprocess to compile C++ files, so it is OK to build using gcc. CXX = $(COMPILER_PATH)gcc else CXX = $(COMPILER_PATH)g++ endif
From Defs-linux.gmk:
ifeq ($(STATIC_CXX),true) override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic else override LIBCXX = -lstdc++ endif
-- Andrew :)
Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com)
PGP Key: 248BDC07 (https://keys.indymedia.org/) Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
- Previous message: PING: [PATCH FOR REVIEW] System Zlib Support
- Next message: PING: [PATCH FOR REVIEW] System Zlib Support
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]