Hi On Thu, Jul 9, 2020 at 7:30 PM Peter Maydell <peter.mayd...@linaro.org> wrote:
> On Thu, 9 Jul 2020 at 16:27, Daniel P. Berrangé <berra...@redhat.com> > wrote: > > If it doesn't even compile, do we even need to go through the full > > deprecation cycle ? I tend to feel like the release where it first > > fails to compile automatically starts the deprecation countdown. > > Mmm, assuming that it's "couldn't possibly compile for anybody" > rather than "doesn't compile for me (but maybe it would be OK > on some other host OS config)". > > Marc-André, what are the details of the compilation failure? > I have done some release bisection. v2.11.0 compiles, v2.12.0 started failing with: CC block/vxhs.o /home/elmarco/src/qq/block/vxhs.c:126:1: error: variable ‘runtime_opts’ has initializer but incomplete type 126 | static QemuOptsList runtime_opts = { | ^~~~~~ /home/elmarco/src/qq/block/vxhs.c:127:6: error: ‘QemuOptsList’ has no member named ‘name’ 127 | .name = "vxhs", | ^~~~ /home/elmarco/src/qq/block/vxhs.c:127:13: warning: excess elements in struct initializer 127 | .name = "vxhs", | ^~~~~~ /home/elmarco/src/qq/block/vxhs.c:127:13: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:128:6: error: ‘QemuOptsList’ has no member named ‘head’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^~~~ In file included from /home/elmarco/src/qq/include/qemu/notify.h:17, from /home/elmarco/src/qq/include/qemu/timer.h:5, from /home/elmarco/src/qq/include/qemu/timed-average.h:29, from /home/elmarco/src/qq/include/block/accounting.h:28, from /home/elmarco/src/qq/include/block/block_int.h:27, from /home/elmarco/src/qq/block/vxhs.c:14: /home/elmarco/src/qq/include/qemu/queue.h:360:9: error: extra brace group at end of initializer 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:128:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: note: (near initialization for ‘runtime_opts’) 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:128:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:128:49: error: invalid use of incomplete typedef ‘QemuOptsList’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^ /home/elmarco/src/qq/include/qemu/queue.h:360:19: note: in definition of macro ‘QTAILQ_HEAD_INITIALIZER’ 360 | { NULL, &(head).tqh_first } | ^~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: warning: excess elements in struct initializer 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:128:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: note: (near initialization for ‘runtime_opts’) 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:128:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 128 | .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:129:6: error: ‘QemuOptsList’ has no member named ‘desc’ 129 | .desc = { | ^~~~ /home/elmarco/src/qq/block/vxhs.c:129:13: error: extra brace group at end of initializer 129 | .desc = { | ^ /home/elmarco/src/qq/block/vxhs.c:129:13: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:130:9: error: extra brace group at end of initializer 130 | { | ^ /home/elmarco/src/qq/block/vxhs.c:130:9: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:132:21: error: ‘QEMU_OPT_STRING’ undeclared here (not in a function) 132 | .type = QEMU_OPT_STRING, | ^~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:135:9: error: extra brace group at end of initializer 135 | { | ^ /home/elmarco/src/qq/block/vxhs.c:135:9: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:140:9: error: extra brace group at end of initializer 140 | { | ^ /home/elmarco/src/qq/block/vxhs.c:140:9: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:145:9: error: extra brace group at end of initializer 145 | { /* end of list */ } | ^ /home/elmarco/src/qq/block/vxhs.c:145:9: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:129:13: warning: excess elements in struct initializer 129 | .desc = { | ^ /home/elmarco/src/qq/block/vxhs.c:129:13: note: (near initialization for ‘runtime_opts’) /home/elmarco/src/qq/block/vxhs.c:149:1: error: variable ‘runtime_tcp_opts’ has initializer but incomplete type 149 | static QemuOptsList runtime_tcp_opts = { | ^~~~~~ /home/elmarco/src/qq/block/vxhs.c:150:6: error: ‘QemuOptsList’ has no member named ‘name’ 150 | .name = "vxhs_tcp", | ^~~~ /home/elmarco/src/qq/block/vxhs.c:150:13: warning: excess elements in struct initializer 150 | .name = "vxhs_tcp", | ^~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:150:13: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c:151:6: error: ‘QemuOptsList’ has no member named ‘head’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^~~~ In file included from /home/elmarco/src/qq/include/qemu/notify.h:17, from /home/elmarco/src/qq/include/qemu/timer.h:5, from /home/elmarco/src/qq/include/qemu/timed-average.h:29, from /home/elmarco/src/qq/include/block/accounting.h:28, from /home/elmarco/src/qq/include/block/block_int.h:27, from /home/elmarco/src/qq/block/vxhs.c:14: /home/elmarco/src/qq/include/qemu/queue.h:360:9: error: extra brace group at end of initializer 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:151:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: note: (near initialization for ‘runtime_tcp_opts’) 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:151:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:151:53: error: invalid use of incomplete typedef ‘QemuOptsList’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^ /home/elmarco/src/qq/include/qemu/queue.h:360:19: note: in definition of macro ‘QTAILQ_HEAD_INITIALIZER’ 360 | { NULL, &(head).tqh_first } | ^~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: warning: excess elements in struct initializer 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:151:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/include/qemu/queue.h:360:9: note: (near initialization for ‘runtime_tcp_opts’) 360 | { NULL, &(head).tqh_first } | ^ /home/elmarco/src/qq/block/vxhs.c:151:13: note: in expansion of macro ‘QTAILQ_HEAD_INITIALIZER’ 151 | .head = QTAILQ_HEAD_INITIALIZER(runtime_tcp_opts.head), | ^~~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:152:6: error: ‘QemuOptsList’ has no member named ‘desc’ 152 | .desc = { | ^~~~ /home/elmarco/src/qq/block/vxhs.c:152:13: error: extra brace group at end of initializer 152 | .desc = { | ^ /home/elmarco/src/qq/block/vxhs.c:152:13: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c:153:9: error: extra brace group at end of initializer 153 | { | ^ /home/elmarco/src/qq/block/vxhs.c:153:9: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c:158:9: error: extra brace group at end of initializer 158 | { | ^ /home/elmarco/src/qq/block/vxhs.c:158:9: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c:160:21: error: ‘QEMU_OPT_NUMBER’ undeclared here (not in a function) 160 | .type = QEMU_OPT_NUMBER, | ^~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:164:9: error: extra brace group at end of initializer 164 | { /* end of list */ } | ^ /home/elmarco/src/qq/block/vxhs.c:164:9: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c:152:13: warning: excess elements in struct initializer 152 | .desc = { | ^ /home/elmarco/src/qq/block/vxhs.c:152:13: note: (near initialization for ‘runtime_tcp_opts’) /home/elmarco/src/qq/block/vxhs.c: In function ‘vxhs_open’: /home/elmarco/src/qq/block/vxhs.c:309:12: warning: implicit declaration of function ‘qemu_opts_create’; did you mean ‘qbus_create’? [-Wimplicit-function-declaration] 309 | opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); | ^~~~~~~~~~~~~~~~ | qbus_create /home/elmarco/src/qq/block/vxhs.c:309:12: warning: nested extern declaration of ‘qemu_opts_create’ [-Wnested-externs] /home/elmarco/src/qq/block/vxhs.c:309:10: warning: assignment to ‘QemuOpts *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 309 | opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); | ^ /home/elmarco/src/qq/block/vxhs.c:310:14: warning: assignment to ‘QemuOpts *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 310 | tcp_opts = qemu_opts_create(&runtime_tcp_opts, NULL, 0, &error_abort); | ^ /home/elmarco/src/qq/block/vxhs.c:312:5: warning: implicit declaration of function ‘qemu_opts_absorb_qdict’ [-Wimplicit-function-declaration] 312 | qemu_opts_absorb_qdict(opts, options, &local_err); | ^~~~~~~~~~~~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:312:5: warning: nested extern declaration of ‘qemu_opts_absorb_qdict’ [-Wnested-externs] /home/elmarco/src/qq/block/vxhs.c:319:20: warning: implicit declaration of function ‘qemu_opt_get’; did you mean ‘qemu_aio_get’? [-Wimplicit-function-declaration] 319 | vdisk_id_opt = qemu_opt_get(opts, VXHS_OPT_VDISK_ID); | ^~~~~~~~~~~~ | qemu_aio_get /home/elmarco/src/qq/block/vxhs.c:319:20: warning: nested extern declaration of ‘qemu_opt_get’ [-Wnested-externs] /home/elmarco/src/qq/block/vxhs.c:319:18: warning: assignment to ‘const char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 319 | vdisk_id_opt = qemu_opt_get(opts, VXHS_OPT_VDISK_ID); | ^ /home/elmarco/src/qq/block/vxhs.c:346:21: warning: assignment to ‘const char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 346 | server_host_opt = qemu_opt_get(tcp_opts, VXHS_OPT_HOST); | ^ /home/elmarco/src/qq/block/vxhs.c:362:30: warning: passing argument 1 of ‘g_strdup’ makes pointer from integer without a cast [-Wint-conversion] 362 | s->tlscredsid = g_strdup(qemu_opt_get(opts, "tls-creds")); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int In file included from /usr/local/stow/glib/include/glib-2.0/glib.h:82, from /home/elmarco/src/qq/include/glib-compat.h:19, from /home/elmarco/src/qq/include/qemu/osdep.h:107, from /home/elmarco/src/qq/block/vxhs.c:11: /usr/local/stow/glib/include/glib-2.0/glib/gstrfuncs.h:217:52: note: expected ‘const gchar *’ {aka ‘const char *’} but argument is of type ‘int’ 217 | gchar* g_strdup (const gchar *str) G_GNUC_MALLOC; | ~~~~~~~~~~~~~^~~ /home/elmarco/src/qq/block/vxhs.c:374:46: warning: passing argument 1 of ‘g_ascii_strtoll’ makes pointer from integer without a cast [-Wint-conversion] 374 | s->vdisk_hostinfo.port = g_ascii_strtoll(qemu_opt_get(tcp_opts, | ^~~~~~~~~~~~~~~~~~~~~~ | | | int 375 | VXHS_OPT_PORT), | ~~~~~~~~~~~~~~ In file included from /usr/local/stow/glib/include/glib-2.0/glib.h:82, from /home/elmarco/src/qq/include/glib-compat.h:19, from /home/elmarco/src/qq/include/qemu/osdep.h:107, from /home/elmarco/src/qq/block/vxhs.c:11: /usr/local/stow/glib/include/glib-2.0/glib/gstrfuncs.h:157:46: note: expected ‘const gchar *’ {aka ‘const char *’} but argument is of type ‘int’ 157 | gint64 g_ascii_strtoll (const gchar *nptr, | ~~~~~~~~~~~~~^~~~ /home/elmarco/src/qq/block/vxhs.c:400:5: warning: implicit declaration of function ‘qemu_opts_del’; did you mean ‘qemu_open’? [-Wimplicit-function-declaration] 400 | qemu_opts_del(tcp_opts); | ^~~~~~~~~~~~~ | qemu_open /home/elmarco/src/qq/block/vxhs.c:400:5: warning: nested extern declaration of ‘qemu_opts_del’ [-Wnested-externs] /home/elmarco/src/qq/block/vxhs.c: At top level: /home/elmarco/src/qq/block/vxhs.c:126:21: error: storage size of ‘runtime_opts’ isn’t known 126 | static QemuOptsList runtime_opts = { | ^~~~~~~~~~~~ /home/elmarco/src/qq/block/vxhs.c:149:21: error: storage size of ‘runtime_tcp_opts’ isn’t known 149 | static QemuOptsList runtime_tcp_opts = { | ^~~~~~~~~~~~~~~~ make: *** [/home/elmarco/src/qq/rules.mak:66: block/vxhs.o] Error 1 -- Marc-André Lureau