xorg-server-1.20.3: build fails mysteriously when dri3proto is not installed
Submitted by Dilian
Assigned to Xorg Project Team
Link to original bug (#109337)
Description
Compiling xorg-server-1.20.3/hw/xwayland fails with:
gcc -DHAVE_CONFIG_H -I. -I../../include -I../../glamor -I../../dri3 -DHAVE_DIX_CONFIG_H -I/usr/local/include -I/usr/local/include/libdrm -I/usr/local/include -DHAVE_DIX_CONFIG_H -Wall -Wpointer-arith -Wmissing-declarations -Wformat=2 -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wbad-function-cast -Wold-style-definition -Wdeclaration-after-statement -Wunused -Wuninitialized -Wshadow -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -Wlogical-op -Werror=implicit -Werror=nonnull -Werror=init-self -Werror=main -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=trigraphs -Werror=array-bounds -Werror=write-strings -Werror=address -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -fno-strict-aliasing -fno-strict-aliasing -D_DEFAULT_SOURCE -D_BSD_SOURCE -DHAS_FCHOWN -DHAS_STICKY_DIR_BIT -I/usr/local/include -I/usr/local/include/X11/dri -I/usr/local/include -I/usr/local/include/libdrm -I/usr/local/include -I/usr/local/include/pixman-1 -I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include/libpng16 -I/usr/local/include -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib64/glib-2.0/include -I/usr/local/include -I../../include -I../../include -I../../Xext -I../../composite -I../../damageext -I../../xfixes -I../../Xi -I../../mi -I../../miext/sync -I../../miext/shadow -I../../miext/damage -I../../render -I../../randr -I../../fb -I../../dbe -I../../present -fvisibility=hidden -I/usr/local/include -I/usr/local/include/libdrm -I/usr/local/include -I/usr/local/include -O3 -pipe -pthread -MT Xwayland-xwayland-glamor-gbm.o -MD -MP -MF .deps/Xwayland-xwayland-glamor-gbm.Tpo -c -o Xwayland-xwayland-glamor-gbm.o `test -f 'xwayland-glamor-gbm.c' || echo './'`xwayland-glamor-gbm.c
xwayland-glamor-gbm.c: In function ‘sync_callback’:
xwayland-glamor-gbm.c:368:5: error: implicit declaration of function ‘dri3_send_open_reply’ [-Werror=implicit-function-declaration]
dri3_send_open_reply(client, state->fd);
^~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:368:5: warning: nested extern declaration of ‘dri3_send_open_reply’ [-Wnested-externs]
xwayland-glamor-gbm.c: At top level:
xwayland-glamor-gbm.c:597:14: error: unknown type name ‘dri3_screen_info_rec’
static const dri3_screen_info_rec xwl_dri3_info = {
^~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:598:5: error: field name not in record or union initializer
.version = 2,
^
xwayland-glamor-gbm.c:598:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:599:5: error: field name not in record or union initializer
.open = NULL,
^
xwayland-glamor-gbm.c:599:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:599:13: warning: excess elements in scalar initializer
.open = NULL,
^~~~
xwayland-glamor-gbm.c:599:13: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:600:5: error: field name not in record or union initializer
.pixmap_from_fds = glamor_pixmap_from_fds,
^
xwayland-glamor-gbm.c:600:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:600:24: warning: excess elements in scalar initializer
.pixmap_from_fds = glamor_pixmap_from_fds,
^~~~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:600:24: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:601:5: error: field name not in record or union initializer
.fds_from_pixmap = glamor_fds_from_pixmap,
^
xwayland-glamor-gbm.c:601:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:601:24: warning: excess elements in scalar initializer
.fds_from_pixmap = glamor_fds_from_pixmap,
^~~~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:601:24: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:602:5: error: field name not in record or union initializer
.open_client = xwl_dri3_open_client,
^
xwayland-glamor-gbm.c:602:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:602:20: warning: excess elements in scalar initializer
.open_client = xwl_dri3_open_client,
^~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:602:20: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:603:5: error: field name not in record or union initializer
.get_formats = glamor_get_formats,
^
xwayland-glamor-gbm.c:603:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:603:20: warning: excess elements in scalar initializer
.get_formats = glamor_get_formats,
^~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:603:20: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:604:5: error: field name not in record or union initializer
.get_modifiers = glamor_get_modifiers,
^
xwayland-glamor-gbm.c:604:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:604:22: warning: excess elements in scalar initializer
.get_modifiers = glamor_get_modifiers,
^~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:604:22: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:605:5: error: field name not in record or union initializer
.get_drawable_modifiers = glamor_get_drawable_modifiers,
^
xwayland-glamor-gbm.c:605:5: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c:605:31: warning: excess elements in scalar initializer
.get_drawable_modifiers = glamor_get_drawable_modifiers,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xwayland-glamor-gbm.c:605:31: note: (near initialization for ‘xwl_dri3_info’)
xwayland-glamor-gbm.c: In function ‘xwl_glamor_gbm_init_screen’:
xwayland-glamor-gbm.c:889:10: error: implicit declaration of function ‘dri3_screen_init’; did you mean ‘xwl_screen_get’? [-Werror=implicit-function-declaration]
if (!dri3_screen_init(xwl_screen->screen, &xwl_dri3_info)) {
^~~~~~~~~~~~~~~~
xwl_screen_get
xwayland-glamor-gbm.c:889:10: warning: nested extern declaration of ‘dri3_screen_init’ [-Wnested-externs]
cc1: some warnings being treated as errors
make: *** [Makefile:924: Xwayland-xwayland-glamor-gbm.o] Error 1
On my system ./configure prints
checking for DRI2PROTO... yes
Checking temp dir /run/shm
checking for DRI3PROTO... no
configure: DRI3 disabled because dri3proto not found.
so DRI3 is not defined and there are no declarations in dri3.h. But xwayland-glamor-gbm.c expects the declaradions unconditionally.
The latest dri3proto at https://www.x.org/releases/individual/proto/ is 1.0, but xorg-server-1.20.3/confugure enables dri3proto, when at least version 1.2 is found.
Version: git