[X2Go-Dev] nx-libs breaks with libpng 1.5.x

John Williams jwilliams4200 at gmail.com
Mon Feb 6 05:22:01 CET 2012


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.



More information about the x2go-dev mailing list