Hi John,
On Mo 06 Feb 2012 05:22:01 CET John Williams wrote:
Archlinux just upgraded libpng 1.4.x to 1.5.8, and it appears to have broken nx-libs. With libpng 1.4.8, I was able to build nx-libs 3.5.0.9 and successfully run it with x2goserver, but with libpng 1.5.8, when I try to build nx-libs it gets to compiling Pgn.cpp and fails with errors:
g++ -c -O3 -fno-rtti -fno-exceptions -I../nx-X11/exports/include -Wno-deprecated -fPIC -DIN_ADDR_T=in_addr_t -DVERSION=\"3.5.0\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -Wall -Wpointer-arith Pgn.cpp
Pgn.cpp: In function 'int DecompressPng16(unsigned char*, int, unsigned int, unsigned int, unsigned char*, int)': Pgn.cpp:417:15: error: invalid use of incomplete type 'png_info {aka struct png_info_def}' /usr/include/png.h:720:16: error: forward declaration of 'png_info {aka struct png_info_def}'
Pgn.cpp: In function 'int DecompressPng24(unsigned char*, int, unsigned int, unsigned int, unsigned char*, int)': Pgn.cpp:568:15: error: invalid use of incomplete type 'png_info {aka struct png_info_def}' /usr/include/png.h:720:16: error: forward declaration of 'png_info {aka struct png_info_def}'
Pgn.cpp: In function 'int DecompressPng32(unsigned char*, int, unsigned int, unsigned int, unsigned char*, int)': Pgn.cpp:712:15: error: invalid use of incomplete type 'png_info {aka struct png_info_def}' /usr/include/png.h:720:16: error: forward declaration of 'png_info {aka struct png_info_def}'
On the libpng homepage, I found this note
http://www.libpng.org/pub/png/libpng.html
"The libpng 1.5.x series continues the evolution of the libpng API, finally hiding the contents of the venerable and hoary png_struct and png_info data structures inside private (i.e., non-installed) header files. Instead of direct struct-access, applications should be using the various png_get_xxx() and png_set_xxx() accessor functions, which have existed for almost as long as libpng itself. (Apps that compiled against libpng 1.4 without warnings about deprecated features should happily compile against 1.5, too.)"
I don't see any warnings from my previous build logs with libpng 1.4.8, but since the compiler was given the option "-Wno-deprecated" I'm not sure that the warnings would have shown up anyway.
And it does appear that the Pgn.cpp functions DecompressPngXY() are trying to access the png_info struct, which is now private in libpng 1.5.8.
What do you think is the best way to fix this issue? Would an upstream bug report to the NX folks be likely to accomplish anything? I'm not sure how big a job it will be to patch all of the code in nx-libs that attempts to access png_info or png_struct.
Reinhard Tartler has made us aware of this in the Debian packaging
context already. To address this, we first need a working concept for
patching this. Then we will ship that patch with NX (redistributed)
and also report to original upstream (NoMachine).
Any ideas how to address this? I have not had the time for this, yet.
Greets, Mike
--
DAS-NETZWERKTEAM mike gabriel, dorfstr. 27, 24245 barmissen fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xf...