Xpra: Ticket #145: xpra 3.2.0 fails to build on centos 6.2

on centos 6.2 xpra 0.3.2 fails to build:

[vortex@lizard xpra-0.3.2.orig]$ ./do-build
....[snip]....
Traceback (most recent call last):
  File "setup.py", line 256, in <module>
    **pkgconfig("vpx", "libswscale", "libavcodec")
  File "setup.py", line 164, in pkgconfig
    raise Exception("call to pkg-config ('%s') failed" % (cmd,))
Exception: call to pkg-config ('['pkg-config', '--libs', '--cflags', 'vpx libswscale libavcodec']') failed

indeed:

[vortex@lizard ~]$ pkg-config --libs --cflags vpx libswscale libavcodec
Package vpx was not found in the pkg-config search path.
Perhaps you should add the directory containing `vpx.pc'
to the PKG_CONFIG_PATH environment variable
No package 'vpx' found
the solution is to search for "libvpx" and not "vpx":
[vortex@lizard ~]$ pkg-config --libs --cflags libvpx libswscale libavcodec
-I/usr/include/vpx/  -lvpx -lswscale -lavcodec

i patched setup.py to fix this:

--- xpra-0.3.2.orig/setup.py	2012-06-03 20:43:31.000000000 +0200
+++ xpra-0.3.2/setup.py	2012-06-14 13:18:18.678613676 +0200
@@ -253,7 +253,7 @@
     packages.append("xpra.vpx")
     cython_add(Extension("xpra.vpx.codec",
                 ["xpra/vpx/codec.pyx", "xpra/vpx/vpxlib.c"],
-                **pkgconfig("vpx", "libswscale", "libavcodec")
+                **pkgconfig("libvpx", "libswscale", "libavcodec")
                 ))


Thu, 14 Jun 2012 11:36:29 GMT - nackstein:

(edited bug description - so redundant post removed)


Thu, 14 Jun 2012 13:02:16 GMT - Antoine Martin: status, component, description changed


Thu, 14 Jun 2012 13:05:49 GMT - Antoine Martin:

Hmmm, some call it vpx, some call it libvpx...

I am tempted to just keep it as it is and add a note/patch for those distros that call it 'libvpx'. Thoughts?


Tue, 19 Jun 2012 09:48:38 GMT - nackstein:

hi antoine, forgive me but I opened the bug without checking the build process. It fails to compile the vpx part (see logs below). I confirm the package on centos is called libvpx, maybe a case that looks for both would save you complications in note...

here the log of the build process:

[vortex@lizard xpra-0.3.2]$ ./do-build
could not parse version information from string:
updated build_info.py with {'LOCAL_MODIFICATIONS': 'unknown', 'BUILD_DATE': '2012-06-19', 'BUILT_BY': 'vortex', 'BUILT_ON': 'lizard', 'BUILD_BIT': '64bit', 'BUILD_CPU': 'x86_64', 'REVISION': 'unknown'}
pkgconfig(('pygobject-2.0', 'gdk-x11-2.0', 'gtk+-x11-2.0', 'xtst', 'xfixes', 'xcomposite', 'xdamage', 'xrandr'),{})={'libraries': ['Xrandr', 'freetype', 'gio-2.0', 'gdk-x11-2.0', 'cairo', 'fontconfig', 'atk-1.0', 'pangocairo-1.0', 'gmodule-2.0', 'gtk-x11-2.0', 'Xtst', 'Xfixes', 'gdk_pixbuf-2.0', 'Xdamage', 'gobject-2.0', 'glib-2.0', 'Xcomposite', 'pango-1.0', 'pangoft2-1.0'], 'include_dirs': ['/usr/include/atk-1.0', '/usr/include/glib-2.0', '/usr/include/gtk-2.0', '/usr/include/cairo', '/usr/include/pango-1.0', '/usr/lib64/gtk-2.0/include', '/usr/include/pygtk-2.0', '/usr/lib64/glib-2.0/include', '/usr/include/pixman-1', '/usr/include/libpng12', '/usr/include/freetype2']}
pkgconfig(('x11',),{})={'libraries': ['X11']}
pkgconfig(('x264', 'libswscale', 'libavcodec'),{})={'libraries': ['x264', 'avcodec', 'pthread', 'swscale']}
pkgconfig(('libvpx', 'libswscale', 'libavcodec'),{})={'libraries': ['avcodec', 'vpx', 'swscale'], 'include_dirs': ['/usr/include/vpx/']}
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.6
creating build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_prop.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/prop.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_get_modifier_mappings.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/error.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/__init__.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/wm.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/log.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/pseudoclient.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_util.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/gobject_compat.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/window.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_keys.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/selection.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/world_window.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/keys.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_x11keycodes_down.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_test.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_selection.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_error.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/composite.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/util.py -> build/lib.linux-x86_64-2.6/wimpiggy
copying wimpiggy/test_lowlevel.py -> build/lib.linux-x86_64-2.6/wimpiggy
creating build/lib.linux-x86_64-2.6/wimpiggy/lowlevel
copying wimpiggy/lowlevel/__init__.py -> build/lib.linux-x86_64-2.6/wimpiggy/lowlevel
creating build/lib.linux-x86_64-2.6/parti
copying parti/tray.py -> build/lib.linux-x86_64-2.6/parti
copying parti/__init__.py -> build/lib.linux-x86_64-2.6/parti
copying parti/world_organizer.py -> build/lib.linux-x86_64-2.6/parti
copying parti/bus.py -> build/lib.linux-x86_64-2.6/parti
copying parti/test_bus.py -> build/lib.linux-x86_64-2.6/parti
copying parti/parti_main.py -> build/lib.linux-x86_64-2.6/parti
creating build/lib.linux-x86_64-2.6/parti/trays
copying parti/trays/compositetest.py -> build/lib.linux-x86_64-2.6/parti/trays
copying parti/trays/__init__.py -> build/lib.linux-x86_64-2.6/parti/trays
copying parti/trays/simpletab.py -> build/lib.linux-x86_64-2.6/parti/trays
creating build/lib.linux-x86_64-2.6/parti/addons
copying parti/addons/ipython_embed.py -> build/lib.linux-x86_64-2.6/parti/addons
copying parti/addons/__init__.py -> build/lib.linux-x86_64-2.6/parti/addons
creating build/lib.linux-x86_64-2.6/parti/scripts
copying parti/scripts/__init__.py -> build/lib.linux-x86_64-2.6/parti/scripts
copying parti/scripts/main.py -> build/lib.linux-x86_64-2.6/parti/scripts
copying parti/scripts/repl.py -> build/lib.linux-x86_64-2.6/parti/scripts
creating build/lib.linux-x86_64-2.6/xpra
copying xpra/client_base.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_DoS_client.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_DoS_timeout_client.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_illegal_command.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_measure_perf.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/proxy.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/window_backing.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/__init__.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_bencode.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/version_util.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/server.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/nested_main.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/xkbhelper.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/dotxpra.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/bencode.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/build_info.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/gtk_view_keyboard.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/keys.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/deque.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_dump_gtk_keymap.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_HMAC.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_DoS_memory_client.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/client.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/dbus_notifications_forwarder.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/protocol.py -> build/lib.linux-x86_64-2.6/xpra
copying xpra/test_gibbering_client.py -> build/lib.linux-x86_64-2.6/xpra
creating build/lib.linux-x86_64-2.6/xpra/scripts
copying xpra/scripts/__init__.py -> build/lib.linux-x86_64-2.6/xpra/scripts
copying xpra/scripts/server.py -> build/lib.linux-x86_64-2.6/xpra/scripts
copying xpra/scripts/client_launcher.py -> build/lib.linux-x86_64-2.6/xpra/scripts
copying xpra/scripts/main.py -> build/lib.linux-x86_64-2.6/xpra/scripts
creating build/lib.linux-x86_64-2.6/xpra/platform
copying xpra/platform/gui.py -> build/lib.linux-x86_64-2.6/xpra/platform
copying xpra/platform/__init__.py -> build/lib.linux-x86_64-2.6/xpra/platform
copying xpra/platform/clipboard_base.py -> build/lib.linux-x86_64-2.6/xpra/platform
copying xpra/platform/default_clipboard.py -> build/lib.linux-x86_64-2.6/xpra/platform
copying xpra/platform/client_extras_base.py -> build/lib.linux-x86_64-2.6/xpra/platform
creating build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/xsettings.py -> build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/gui.py -> build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/__init__.py -> build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/xclipboard.py -> build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/test_xsettings.py -> build/lib.linux-x86_64-2.6/xpra/xposix
copying xpra/xposix/xroot_props.py -> build/lib.linux-x86_64-2.6/xpra/xposix
creating build/lib.linux-x86_64-2.6/xpra/win32
copying xpra/win32/gui.py -> build/lib.linux-x86_64-2.6/xpra/win32
copying xpra/win32/__init__.py -> build/lib.linux-x86_64-2.6/xpra/win32
copying xpra/win32/win32_tray.py -> build/lib.linux-x86_64-2.6/xpra/win32
copying xpra/win32/win32_NotifyIcon.py -> build/lib.linux-x86_64-2.6/xpra/win32
copying xpra/win32/win32_balloon.py -> build/lib.linux-x86_64-2.6/xpra/win32
creating build/lib.linux-x86_64-2.6/xpra/darwin
copying xpra/darwin/gui.py -> build/lib.linux-x86_64-2.6/xpra/darwin
copying xpra/darwin/__init__.py -> build/lib.linux-x86_64-2.6/xpra/darwin
creating build/lib.linux-x86_64-2.6/xpra/x264
copying xpra/x264/__init__.py -> build/lib.linux-x86_64-2.6/xpra/x264
copying xpra/x264/main.py -> build/lib.linux-x86_64-2.6/xpra/x264
creating build/lib.linux-x86_64-2.6/xpra/vpx
copying xpra/vpx/__init__.py -> build/lib.linux-x86_64-2.6/xpra/vpx
running build_ext
cythoning wimpiggy/lowlevel/bindings.pyx to wimpiggy/lowlevel/bindings.c
building 'wimpiggy.lowlevel.bindings' extension
creating build/temp.linux-x86_64-2.6
creating build/temp.linux-x86_64-2.6/wimpiggy
creating build/temp.linux-x86_64-2.6/wimpiggy/lowlevel
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/atk-1.0 -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pygtk-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/freetype2 -I/usr/include/python2.6 -c wimpiggy/lowlevel/bindings.c -o build/temp.linux-x86_64-2.6/wimpiggy/lowlevel/bindings.o
gcc -pthread -shared -O0 build/temp.linux-x86_64-2.6/wimpiggy/lowlevel/bindings.o -L/usr/lib64 -lXrandr -lfreetype -lgio-2.0 -lgdk-x11-2.0 -lcairo -lfontconfig -latk-1.0 -lpangocairo-1.0 -lgmodule-2.0 -lgtk-x11-2.0 -lXtst -lXfixes -lgdk_pixbuf-2.0 -lXdamage -lgobject-2.0 -lglib-2.0 -lXcomposite -lpango-1.0 -lpangoft2-1.0 -lpython2.6 -o build/lib.linux-x86_64-2.6/wimpiggy/lowlevel/bindings.so
cythoning xpra/wait_for_x_server.pyx to xpra/wait_for_x_server.c
building 'xpra.wait_for_x_server' extension
creating build/temp.linux-x86_64-2.6/xpra
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/python2.6 -c xpra/wait_for_x_server.c -o build/temp.linux-x86_64-2.6/xpra/wait_for_x_server.o
gcc -pthread -shared -O0 build/temp.linux-x86_64-2.6/xpra/wait_for_x_server.o -L/usr/lib64 -lX11 -lpython2.6 -o build/lib.linux-x86_64-2.6/xpra/wait_for_x_server.so
cythoning xpra/x264/codec.pyx to xpra/x264/codec.c
building 'xpra.x264.codec' extension
creating build/temp.linux-x86_64-2.6/xpra/x264
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/python2.6 -c xpra/x264/codec.c -o build/temp.linux-x86_64-2.6/xpra/x264/codec.o
xpra/x264/codec.c: In function ‘__pyx_pf_4xpra_4x264_5codec_7Decoder_2decompress_image’:
xpra/x264/codec.c:1011: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type
/usr/include/python2.6/abstract.h:501: note: expected ‘const void **’ but argument is of type ‘void **’
xpra/x264/codec.c: In function ‘__pyx_pf_4xpra_4x264_5codec_7Encoder_2compress_image’:
xpra/x264/codec.c:1418: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type
/usr/include/python2.6/abstract.h:501: note: expected ‘const void **’ but argument is of type ‘void **’
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/python2.6 -c xpra/x264/x264lib.c -o build/temp.linux-x86_64-2.6/xpra/x264/x264lib.o
xpra/x264/x264lib.c: In function ‘init_decoder’:
xpra/x264/x264lib.c:93: warning: implicit declaration of function ‘avcodec_alloc_context3’
xpra/x264/x264lib.c:93: warning: assignment makes pointer from integer without a cast
xpra/x264/x264lib.c: In function ‘decompress_image’:
xpra/x264/x264lib.c:184: warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type
/usr/include/libswscale/swscale.h:195: note: expected ‘const uint8_t * const*’ but argument is of type ‘uint8_t **’
gcc -pthread -shared -O0 build/temp.linux-x86_64-2.6/xpra/x264/codec.o build/temp.linux-x86_64-2.6/xpra/x264/x264lib.o -L/usr/lib64 -lx264 -lavcodec -lpthread -lswscale -lpython2.6 -o build/lib.linux-x86_64-2.6/xpra/x264/codec.so
cythoning xpra/vpx/codec.pyx to xpra/vpx/codec.c
building 'xpra.vpx.codec' extension
creating build/temp.linux-x86_64-2.6/xpra/vpx
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/vpx/ -I/usr/include/python2.6 -c xpra/vpx/codec.c -o build/temp.linux-x86_64-2.6/xpra/vpx/codec.o
xpra/vpx/codec.c: In function ‘__pyx_pf_4xpra_3vpx_5codec_7Decoder_2decompress_image’:
xpra/vpx/codec.c:1011: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type
/usr/include/python2.6/abstract.h:501: note: expected ‘const void **’ but argument is of type ‘void **’
xpra/vpx/codec.c: In function ‘__pyx_pf_4xpra_3vpx_5codec_7Encoder_2compress_image’:
xpra/vpx/codec.c:1418: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type
/usr/include/python2.6/abstract.h:501: note: expected ‘const void **’ but argument is of type ‘void **’
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O0 -fPIC -I/usr/include/vpx/ -I/usr/include/python2.6 -c xpra/vpx/vpxlib.c -o build/temp.linux-x86_64-2.6/xpra/vpx/vpxlib.o
In file included from /usr/include/vpx/vpx_codec.h:50,
                 from /usr/include/vpx/vpx_encoder.h:32,
                 from xpra/vpx/vpxlib.c:22:
/usr/include/vpx/vpx_integer.h:41: error: conflicting types for ‘int_fast16_t’
/usr/include/stdint.h:93: note: previous declaration of ‘int_fast16_t’ was here
/usr/include/vpx/vpx_integer.h:47: error: conflicting types for ‘uintptr_t’
/usr/include/stdint.h:123: note: previous declaration of ‘uintptr_t’ was here
xpra/vpx/vpxlib.c: In function ‘init_encoder’:
xpra/vpx/vpxlib.c:52: warning: implicit declaration of function ‘vpx_codec_vp8_cx’
xpra/vpx/vpxlib.c:52: warning: passing argument 1 of ‘vpx_codec_enc_config_default’ makes pointer from integer without a cast
/usr/include/vpx/vpx_encoder.h:609: note: expected ‘const struct vpx_codec_iface *’ but argument is of type ‘int’
xpra/vpx/vpxlib.c:58: warning: passing argument 2 of ‘vpx_codec_enc_init_ver’ makes pointer from integer without a cast
/usr/include/vpx/vpx_encoder.h:575: note: expected ‘const struct vpx_codec_iface *’ but argument is of type ‘int’
xpra/vpx/vpxlib.c: In function ‘init_decoder’:
xpra/vpx/vpxlib.c:78: warning: implicit declaration of function ‘vpx_codec_vp8_dx’
xpra/vpx/vpxlib.c:78: warning: passing argument 2 of ‘vpx_codec_dec_init_ver’ makes pointer from integer without a cast
/usr/include/vpx/vpx_decoder.h:121: note: expected ‘const struct vpx_codec_iface *’ but argument is of type ‘int’
xpra/vpx/vpxlib.c: In function ‘compress_image’:
xpra/vpx/vpxlib.c:103: error: ‘VPX_IMG_FMT_I420’ undeclared (first use in this function)
xpra/vpx/vpxlib.c:103: error: (Each undeclared identifier is reported only once
xpra/vpx/vpxlib.c:103: error: for each function it appears in.)
xpra/vpx/vpxlib.c:116: warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type
/usr/include/libswscale/swscale.h:195: note: expected ‘const unsigned char * const*’ but argument is of type ‘unsigned char **’
xpra/vpx/vpxlib.c: In function ‘decompress_image’:
xpra/vpx/vpxlib.c:164: warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type
/usr/include/libswscale/swscale.h:195: note: expected ‘const unsigned char * const*’ but argument is of type ‘unsigned char **’
error: command 'gcc' failed with exit status 1

it seems there are 2 headers that conflicts:

[vortex@lizard xpra-0.3.2]$ cat poc.c
#include <stdint.h>
#include <vpx/vpx_integer.h>
main(){}
[vortex@lizard xpra-0.3.2]$ gcc -o poc poc.c
In file included from poc.c:2:
/usr/include/vpx/vpx_integer.h:41: error: conflicting types for ‘int_fast16_t’
/usr/include/stdint.h:93: note: previous declaration of ‘int_fast16_t’ was here
/usr/include/vpx/vpx_integer.h:47: error: conflicting types for ‘uintptr_t’
/usr/include/stdint.h:123: note: previous declaration of ‘uintptr_t’ was here

if you have some suggestions I'm available to make some debug/test regards Luigi


Tue, 19 Jun 2012 09:51:05 GMT - nackstein:

of course adding --without-vpx in do-build it works (built, installed and used a little):

[vortex@lizard xpra-0.3.2]$ cat do-build
#!/bin/sh
set -e
rm -rf build install
python make_constants_pxi.py wimpiggy/lowlevel/constants.txt wimpiggy/lowlevel/constants.pxi
CFLAGS=-O0 python setup.py install --home=install --without-vpx

Tue, 19 Jun 2012 14:16:50 GMT - Antoine Martin: priority, component changed; version set

Thanks for figuring this out, it looks to me like there is a problem with the toolchain and/or headers on CentOS 6.2.. Here is a hack that makes your PoC build correctly:

#include <stdint.h>
#define HAVE_STDINT_H 1
#include "/usr/include/vpx/vpx_integer.h"
main(){}

I am quite reluctant to merge anything like this, because this may have side effects for all the other distros which do not have problematic headers. Feel free to suggest to RedHat / CentOS that they should do something about it, because I don't think we should be dealing with this here by kludging it.


As for trying to look for libvpx or vpx, I will attach a patch that does this. I will try to merge this later (for trunk - not 0.3.x branch), unfortunately this involves re-doing all the patches against setup.py to prevent diff offsets that make dpkg unhappy... And I've already done this once today, I am a bit fed up with this already. I hate packaging with a passion(tm)


Tue, 19 Jun 2012 14:18:01 GMT - Antoine Martin: attachment set

allows us to look for libvpx OR vpx, and use the first pkg-config entry that exists


Fri, 22 Jun 2012 09:21:18 GMT - Antoine Martin: status changed; resolution set

the alternative package name patch has been applied in r941

The #define HAVE_STDINT_H 1 will not be applied, please fix your library headers.


Thu, 12 Jul 2012 18:37:41 GMT - Antoine Martin:

FYI: I've just tried it and the version shipped with CentOS 6.x is way too old and cannot be used.

You must use a static build as per #103


Sat, 23 Jan 2021 04:46:45 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/145