View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0003039 | Spring engine | Linux | public | 2012-03-27 12:49 | 2012-05-04 11:46 | ||||
Reporter | dfreeman | ||||||||
Assigned To | abma | ||||||||
Priority | normal | Severity | block | Reproducibility | always | ||||
Status | resolved | Resolution | no change required | ||||||
Product Version | 88.0 | ||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0003039: 88 fails to build under Linux with devil 1.7.8 | ||||||||
Description | Fails to build with the following output. I built devil-1.7.8 myself. --------8<--------8<--------8<--------8<-------- [ 51%] Building CXX object rts/builds/default/CMakeFiles/engine-default.dir/__/__/ExternalAI/SkirmishAIWrapper.cpp.o Linking CXX executable ../../../spring /usr/local/lib64/libIL.so: undefined reference to `png_set_gray_1_2_4_to_8' collect2: ld returned 1 exit status make[2]: *** [spring] Error 1 make[1]: *** [rts/builds/default/CMakeFiles/engine-default.dir/all] Error 2 make: *** [all] Error 2 | ||||||||
Tags | No tags attached. | ||||||||
Checked infolog.txt for Errors | |||||||||
Attached Files |
|
![]() |
|
abma (administrator) 2012-03-27 12:52 Last edited: 2012-03-27 12:53 |
/usr/local/ ? this looks like some broken self-compiled lib-devil?! either remove this lib or recompile should fix it i guess... |
dfreeman (reporter) 2012-03-27 17:17 |
I did say I built it myself. I didn't find a package for openSUSE 12.1. Here is the configure output for devIL. It doesn't look like it should be broken. --------8<--------8<--------8<--------8<--------- configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu 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 a sed that does not truncate output... /usr/bin/sed checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/x86_64-suse-linux/bin/ld checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r checking how to recognize dependent libraries... pass_all checking for ar... ar checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking how to run the C preprocessor... gcc -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 for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... (cached) x86_64-unknown-linux-gnu checking host system type... (cached) x86_64-unknown-linux-gnu checking whether gcc and cc understand -c and -o together... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether we are using the GNU C++ compiler... (cached) yes checking whether g++ accepts -g... (cached) yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/x86_64-suse-linux/bin/ld -m elf_x86_64 checking if the linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... no checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking dependency style of g++... (cached) gcc3 checking whether make sets $(MAKE)... (cached) yes checking whether byte ordering is bigendian... no checking restrict keyword... no checking Altivec... no checking SSE... yes checking SSE2... yes checking SSE3... yes checking x86... no checking x86_64... yes checking ppc... no checking for valloc... yes checking for posix_memalign... yes checking for memalign... yes checking mm_malloc.h usability... yes checking mm_malloc.h presence... yes checking for mm_malloc.h... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking for main in -lz... yes checking for main in -lm... yes checking whether we would like to have support for blp format... yes checking whether we would like to have support for bmp format... yes checking whether we would like to have support for dcx format... yes checking whether we would like to have support for dds format... yes checking whether we would like to have support for dicom format... yes checking whether we would like to have support for doom format... yes checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for OPENEXR... no checking whether we would like to have support for exr format... no checking whether we would like to have support for fits format... yes checking whether we would like to have support for gif format... yes checking whether we would like to have support for hdr format... yes checking whether we would like to have support for icns format... yes checking whether we would like to have support for icon format... yes checking whether we would like to have support for iff format... yes checking whether we would like to have support for ilbm format... yes checking whether we would like to have support for iwi format... yes checking jpeglib.h usability... yes checking jpeglib.h presence... yes checking for jpeglib.h... yes checking for main in -ljpeg... yes checking whether we would like to have support for jpeg format... yes checking jasper/jasper.h usability... no checking jasper/jasper.h presence... no checking for jasper/jasper.h... no checking for jasper/jasper.h... (cached) no checking whether we would like to have support for jp2 format... no checking for main in -llcms... no checking lcms/lcms.h usability... no checking lcms/lcms.h presence... no checking for lcms/lcms.h... no checking lcms.h usability... no checking lcms.h presence... no checking for lcms.h... no checking whether we would like to have support for lcms format... no checking whether we would like to have support for lif format... yes checking whether we would like to have support for mdl format... yes checking libmng.h usability... no checking libmng.h presence... no checking for libmng.h... no checking whether we would like to have support for mng format... no checking whether we would like to have support for mp3 format... yes checking whether we would like to have support for pcx format... yes checking whether we would like to have support for pcd format... yes checking whether we would like to have support for pic format... yes checking whether we would like to have support for pix format... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for main in -lpng12... no checking for png.h... (cached) yes checking for main in -lpng... yes checking whether we would like to have support for png format... yes checking whether we would like to have support for pnm format... yes checking whether we would like to have support for psd format... yes checking whether we would like to have support for psp format... yes checking whether we would like to have support for pxr format... yes checking whether we would like to have support for raw format... yes checking whether we would like to have support for rot format... yes checking whether we would like to have support for sgi format... yes checking whether we would like to have support for sun format... yes checking whether we would like to have support for texture format... yes checking whether we would like to have support for tga format... yes checking tiffio.h usability... no checking tiffio.h presence... no checking for tiffio.h... no checking whether we would like to have support for tiff format... no checking whether we would like to have support for tpl format... yes checking whether we would like to have support for utx format... yes checking whether we would like to have support for vtf format... yes checking whether we would like to have support for wal format... yes checking whether we would like to have support for wbmp format... yes checking whether we would like to have support for wdp format... yes checking whether we would like to have support for xpm format... yes checking squish.h usability... no checking squish.h presence... no checking for squish.h... no checking nvtt/nvtt.h usability... no checking nvtt/nvtt.h presence... no checking for nvtt/nvtt.h... no checking for X... libraries /usr/lib64, headers checking for the pthreads library -lpthreads... no checking whether pthreads work without any flags... no checking whether pthreads work with -Kthread... no checking whether pthreads work with -kthread... no checking for the pthreads library -llthread... no checking whether pthreads work with -pthread... yes checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE checking if more special flags are required for pthreads... no checking whether -R must be followed by a space... neither works checking for gethostbyname... yes checking for connect... yes checking for remove... yes checking for shmat... yes checking for IceConnectionNumber in -lICE... yes configure: creating ./config.status config.status: creating Makefile config.status: creating lib/Makefile config.status: creating bin/Makefile config.status: creating test/Makefile config.status: creating docs/Makefile config.status: creating data/Makefile config.status: creating data/IL.pc config.status: creating data/ILU.pc config.status: creating data/ILUT.pc config.status: creating test/format_test/format_checks.sh config.status: creating include/IL/config.h config.status: include/IL/config.h is unchanged config.status: executing libtool commands config.status: executing depfiles commands configure: +----------------------------------------+ configure: \| IL library Supported formats \| configure: +----------------------------------------+-------+ configure: BLP BMP DCX DDS DICOM WAD FITS GIF HDR ICNS ICON IFF ILBM IWI JPG LIF MDL MP3 PCX PCD PIC PIX PNG PNM PSD PSP PXR RAW ROT SGI SUN TEXTURE TGA TPL UTX VTF WAL WBMP WDP XPM configure: +----------------------------------------+ configure: \| IL library External libraries \| configure: +----------------------------------------+-------+ configure: Required libs: OpenEXR libjpeg libpng configure: +----------------------------------------+ configure: \| ILU part disabled \| configure: +----------------------------------------+-------+ configure: Pass --enable-ILU option to the configure script if you want to build ILU configure: +----------------------------------------+ configure: \| ILUT part disabled \| configure: +----------------------------------------+-------+ configure: Pass --enable-ILUT option to the configure script if you want to build ILUT configure: +----------------------------------------+ configure: \| Detected Machine Extensions \| configure: +----------------------------------------+-------+ configure: SSE SSE2 SSE3 X86_64_ASM configure: +----------------------------------------+ configure: \| Not building any examples \| configure: +----------------------------------------+-------+ configure: Pass --with-examples option to the configure script if you want to build examples. configure: +----------------------------------------+ |
Kloot (developer) 2012-03-27 17:22 |
GOOGLE it before dumping your libIL problems on us: http://sourceforge.net/tracker/index.php?func=detail&aid=3400745&group_id=4470&atid=104470 |
dfreeman (reporter) 2012-04-12 09:53 |
I thought it was a bug in Spring since I hadn't changed anything since v85 which compiled successfully. And if not a bug in Spring, I thought it would be useful for the developers to receive this feedback that it doesn't build on a major Linux distribution. I have finally solved the problem, and I'd like to share it if you don't mind. Under OpenSUSE 12.1, you can build and install the latest devil (1.7.8). But you must also have the package "libpng12-compat-devel" installed in order to link against the built library. You don't get any errors until trying to link against it. This package provides a symlink that allows the library to link against libpng version 1.2 instead of 1.4 which is typically also installed. (The latest devil is not compatible with libpng 1.4 due to removal of a deprecated function.) In my case, I must have installed libpng14-compat-devel (which removes libpng12-compat-devel) AFTER successfully building devil/Spring85. In this case, Spring88 would not link against the already successfully used devil, because the symlink now points to libpng 1.4. I recommend mentioning this issue in the release notes for building the source. I expect similar things happen on other platforms that are migrating to newer versions of libpng, until devil is fixed. Since it happens AFTER building devil, it may also affect users of packaged binaries if the dependencies specify libpng >= 1.2. |
hoijui (reporter) 2012-04-12 19:14 |
in short: you compiled spring against devil headers that are incompatible with the actual library beeing used. that was my first though when i saw the error message alone. i can not see why it should be mentioned in spring ... anywhere. its a user or distro failure, and the ocmpile error gives a good enough hint on what might be the problem. |
dfreeman (reporter) 2012-04-13 16:02 |
I'm sorry to reopen this, but I don't have permission to comment otherwise. No, I didn't compile Spring against devil headers that are incompatible with the devil library being used. I compiled Spring against the devil headers that match the binary of devil being used. It was devil that was compiled against a version of libpng that was different from where the symlink to libpng was pointing. The symlink was changed AFTER Spring 85 was built, so Spring 85 continued to work (I suppose either the fully resolved libpng path is encoded into the Spring binary, or it's statically linked). But Spring 88 could not be built. Essentially nothing else changed - only the symlink to libpng. And since I hadn't changed this on purpose, it looked like a problem with the Spring 88 source. |
dfreeman (reporter) 2012-04-13 16:46 |
Reality check. You are linking against a library that hasn't been maintained since 2009-03-08, and whose maintainer admits to having no time to work on it since then. You expect me to take this up with somebody else, but there is nobody working on the library to fix or to document this. I'm only building DevIL for Spring; no other software on my system is using DevIL. (SUSE don't ship DevIL any more.) From my point of view, DevIL is a subcomponent of Spring, albeit a shared one. You can blame other people if you like. But the reality is that the combination of Spring/DevIL isn't compatible with the latest libpng that is being shipped by free software distributions, and that means that Spring isn't compatible with the latest distributions either. It's not your fault, it's not your job to fix it, but you could at least mention it. Even better, you could perhaps release a modified DevIL and put it next to the Spring source where it will be easily found. Or it could go into the Spring source tree until DevIL is maintained once again. |
jK (developer) 2012-04-14 16:27 Last edited: 2012-04-15 01:16 |
http://pkgs.org/opensuse-12.1/opensuse-games-i586/deutex-4.4.902-3.1.i586.rpm.html last update is from February Oops wrong link, as abma said I meant http://pkgs.org/opensuse-12.1/opensuse-games-i586/DevIL-devel-1.7.8-9.4.i586.rpm.html |
abma (administrator) 2012-04-15 01:12 |
its http://pkgs.org/opensuse-12.1/opensuse-games-i586/DevIL-devel-1.7.8-9.4.i586.rpm.html and that date is last change from the opensuse packagers... and last update at the homepage of devil is from 2009: http://sourceforge.net/projects/openil/files/DevIL/ svn repo is quiet old, too: http://openil.svn.sourceforge.net/viewvc/openil/ (don't know if there is a different/more up to date repo) |
abma (administrator) 2012-04-16 13:19 |
hm, including devil into spring makes imo no sense. Including libs into spring should be avoided if possible. it seems like libpng was updated and devil would require a update then too... -> bug / problem with opensuses libdevil. to get this fixed, please report this bug to the opensuse guys to update libdevil. (maybe its already fixed?!) |
dfreeman (reporter) 2012-04-21 12:22 |
JK, you're right. Thanks for pointing out that DevIL is in the openSUSE games repo. When I couldn't find it in the main distribution I didn't know about the games repo. Perhaps it got moved. The official location is here: download.opensuse.org/repositories/games/openSUSE_12.1/ Of course it makes much more sense to open an issue with the distro if they are still maintaining it - but there's probably no need since they ship both versions of libpng and the DevIL package will have the right dependencies. They'll only have to modify DevIL if they ever stop shipping the older libpng. Anyway thanks for the resolution. I still hope this will be mentioned in the build instructions, it only takes a few bytes and somebody else will come across this as distros update their libpng. Or DevIL will break in some other way as it's not maintained. |
abma (administrator) 2012-05-04 11:46 Last edited: 2012-05-04 11:46 |
@dfreeman: i don't know where its best to write it down: http://springrts.com/wiki/OpenSUSE_install or http://en.opensuse.org/Spring (imo just write it down) |
![]() |
|||
Date Modified | Username | Field | Change |
---|---|---|---|
2012-03-27 12:49 | dfreeman | New Issue | |
2012-03-27 12:52 | abma | Note Added: 0008522 | |
2012-03-27 12:52 | abma | Status | new => feedback |
2012-03-27 12:53 | abma | Note Edited: 0008522 | |
2012-03-27 17:17 | dfreeman | Note Added: 0008526 | |
2012-03-27 17:22 | Kloot | Note Added: 0008527 | |
2012-03-27 17:22 | Kloot | Status | feedback => closed |
2012-03-27 17:22 | Kloot | Resolution | open => no change required |
2012-04-12 09:53 | dfreeman | Note Added: 0008602 | |
2012-04-12 09:53 | dfreeman | Status | closed => feedback |
2012-04-12 09:53 | dfreeman | Resolution | no change required => reopened |
2012-04-12 19:14 | hoijui | Note Added: 0008603 | |
2012-04-12 20:11 | abma | Status | feedback => resolved |
2012-04-12 20:11 | abma | Resolution | reopened => not fixable |
2012-04-12 20:11 | abma | Assigned To | => abma |
2012-04-13 16:02 | dfreeman | Note Added: 0008605 | |
2012-04-13 16:02 | dfreeman | Status | resolved => feedback |
2012-04-13 16:02 | dfreeman | Resolution | not fixable => reopened |
2012-04-13 16:46 | dfreeman | Note Added: 0008606 | |
2012-04-14 16:27 | jK | Note Added: 0008609 | |
2012-04-14 16:28 | jK | Note Edited: 0008609 | |
2012-04-15 01:12 | abma | Note Added: 0008610 | |
2012-04-15 01:16 | jK | Note Edited: 0008609 | |
2012-04-16 13:19 | abma | Note Added: 0008627 | |
2012-04-16 13:19 | abma | Status | feedback => resolved |
2012-04-16 13:19 | abma | Resolution | reopened => no change required |
2012-04-21 12:22 | dfreeman | Note Added: 0008634 | |
2012-04-21 12:22 | dfreeman | Status | resolved => feedback |
2012-04-21 12:22 | dfreeman | Resolution | no change required => reopened |
2012-05-04 11:46 | abma | Note Added: 0008659 | |
2012-05-04 11:46 | abma | Status | feedback => resolved |
2012-05-04 11:46 | abma | Resolution | reopened => no change required |
2012-05-04 11:46 | abma | Note Edited: 0008659 |