diff mbox series

[PATCH-for-5.2,2/3] gitlab-ci: Add a job to cover the --without-default-devices config

Message ID 20201103164604.2692357-3-philmd@redhat.com
State New
Headers show
Series ci: Move --without-default-devices job from Travis to GitLab | expand

Commit Message

Philippe Mathieu-Daudé Nov. 3, 2020, 4:46 p.m. UTC
We test './configure --without-default-devices' since commit
20885b5b169 (".travis.yml: test that no-default-device builds
do not regress") in Travis-CI.

As we prefer to use GitLab-CI, add the equivalent job there.

One minor difference: the GitLab Ubuntu docker image has the
Xen devel packages installed. As it is automatically selected,
we need to disable it with the --disable-xen option, else the
build fails:

  /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':
  hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'
  /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'
  /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'
  /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'
  collect2: error: ld returned 1 exit status

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .gitlab-ci.yml | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Daniel P. Berrangé Nov. 3, 2020, 4:52 p.m. UTC | #1
On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:
> We test './configure --without-default-devices' since commit

> 20885b5b169 (".travis.yml: test that no-default-device builds

> do not regress") in Travis-CI.

> 

> As we prefer to use GitLab-CI, add the equivalent job there.

> 

> One minor difference: the GitLab Ubuntu docker image has the

> Xen devel packages installed. As it is automatically selected,

> we need to disable it with the --disable-xen option, else the

> build fails:

> 

>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>   collect2: error: ld returned 1 exit status


Surely this is a build bug we need to fix rather than ignore in CI ?


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Philippe Mathieu-Daudé Nov. 3, 2020, 5:01 p.m. UTC | #2
On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:
> On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

>> We test './configure --without-default-devices' since commit

>> 20885b5b169 (".travis.yml: test that no-default-device builds

>> do not regress") in Travis-CI.

>>

>> As we prefer to use GitLab-CI, add the equivalent job there.

>>

>> One minor difference: the GitLab Ubuntu docker image has the

>> Xen devel packages installed. As it is automatically selected,

>> we need to disable it with the --disable-xen option, else the

>> build fails:

>>

>>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>>   collect2: error: ld returned 1 exit status

> 

> Surely this is a build bug we need to fix rather than ignore in CI ?


Well it predates this series, so nobody really cared
(thus I wonder if it makes sense to invest resources
there).

Anyway I can have a look after 5.2-rc1.
Philippe Mathieu-Daudé Nov. 3, 2020, 5:02 p.m. UTC | #3
On 11/3/20 5:46 PM, Philippe Mathieu-Daudé wrote:
> We test './configure --without-default-devices' since commit

> 20885b5b169 (".travis.yml: test that no-default-device builds

> do not regress") in Travis-CI.

> 

> As we prefer to use GitLab-CI, add the equivalent job there.

> 

> One minor difference: the GitLab Ubuntu docker image has the

> Xen devel packages installed. As it is automatically selected,

> we need to disable it with the --disable-xen option, else the

> build fails:

> 

>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>   collect2: error: ld returned 1 exit status

> 

> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---

>  .gitlab-ci.yml | 11 +++++++++++

>  1 file changed, 11 insertions(+)

> 

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

> index 3b15ae5c302..6ee098ec53c 100644

> --- a/.gitlab-ci.yml

> +++ b/.gitlab-ci.yml

> @@ -262,6 +262,17 @@ build-user-plugins:

>      MAKE_CHECK_ARGS: check-tcg

>    timeout: 1h 30m

>  

> +build-system-ubuntu-without-default-devices:

> +  <<: *native_build_job_definition

> +  variables:

> +    IMAGE: ubuntu2004

> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs

> +    MAKE_CHECK_ARGS: check-build


The part below is pointless, as no job consume these artifacts.
I'll remove it in the next iteration.

> +  artifacts:

> +    expire_in: 2 days

> +    paths:

> +      - build

> +

>  build-clang:

>    <<: *native_build_job_definition

>    variables:

>
Daniel P. Berrangé Nov. 3, 2020, 5:02 p.m. UTC | #4
On Tue, Nov 03, 2020 at 06:01:12PM +0100, Philippe Mathieu-Daudé wrote:
> On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:

> > On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

> >> We test './configure --without-default-devices' since commit

> >> 20885b5b169 (".travis.yml: test that no-default-device builds

> >> do not regress") in Travis-CI.

> >>

> >> As we prefer to use GitLab-CI, add the equivalent job there.

> >>

> >> One minor difference: the GitLab Ubuntu docker image has the

> >> Xen devel packages installed. As it is automatically selected,

> >> we need to disable it with the --disable-xen option, else the

> >> build fails:

> >>

> >>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

> >>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

> >>   collect2: error: ld returned 1 exit status

> > 

> > Surely this is a build bug we need to fix rather than ignore in CI ?

> 

> Well it predates this series, so nobody really cared

> (thus I wonder if it makes sense to invest resources

> there).

> 

> Anyway I can have a look after 5.2-rc1.


Can you just put a comment in the .gitlab-ci.yml file stating
that the --disable-xen arg is a short term workaround that needs
to be fixed properly

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Philippe Mathieu-Daudé Nov. 3, 2020, 5:04 p.m. UTC | #5
I forgot to Cc the 9pfs & Xen maintainers, doing it now ;)

On 11/3/20 6:01 PM, Philippe Mathieu-Daudé wrote:
> On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:

>> On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

>>> We test './configure --without-default-devices' since commit

>>> 20885b5b169 (".travis.yml: test that no-default-device builds

>>> do not regress") in Travis-CI.

>>>

>>> As we prefer to use GitLab-CI, add the equivalent job there.

>>>

>>> One minor difference: the GitLab Ubuntu docker image has the

>>> Xen devel packages installed. As it is automatically selected,

>>> we need to disable it with the --disable-xen option, else the

>>> build fails:

>>>

>>>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>>>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>>>   collect2: error: ld returned 1 exit status

>>

>> Surely this is a build bug we need to fix rather than ignore in CI ?

> 

> Well it predates this series, so nobody really cared

> (thus I wonder if it makes sense to invest resources

> there).

> 

> Anyway I can have a look after 5.2-rc1.

>
Thomas Huth Nov. 3, 2020, 6:43 p.m. UTC | #6
On 03/11/2020 17.46, Philippe Mathieu-Daudé wrote:
> We test './configure --without-default-devices' since commit

> 20885b5b169 (".travis.yml: test that no-default-device builds

> do not regress") in Travis-CI.

> 

> As we prefer to use GitLab-CI, add the equivalent job there.

> 

> One minor difference: the GitLab Ubuntu docker image has the

> Xen devel packages installed. As it is automatically selected,

> we need to disable it with the --disable-xen option, else the

> build fails:

> 

>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>   collect2: error: ld returned 1 exit status

> 

> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---

>  .gitlab-ci.yml | 11 +++++++++++

>  1 file changed, 11 insertions(+)

> 

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

> index 3b15ae5c302..6ee098ec53c 100644

> --- a/.gitlab-ci.yml

> +++ b/.gitlab-ci.yml

> @@ -262,6 +262,17 @@ build-user-plugins:

>      MAKE_CHECK_ARGS: check-tcg

>    timeout: 1h 30m

>  

> +build-system-ubuntu-without-default-devices:

> +  <<: *native_build_job_definition

> +  variables:

> +    IMAGE: ubuntu2004

> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs

> +    MAKE_CHECK_ARGS: check-build


AFAIK "check-build" is pretty much a no-op since the convertion to meson ...
could you maybe replace with a set of qtest targets that work, to make sure
that we do not regress here? E.g.:

MAKE_CHECK_ARGS: check-qtest-avr check-qtestcris check-qtest-m68k
check-qtest-microblaze check-qtest-mipsel check-qtest-moxie ...

 Thomas
Philippe Mathieu-Daudé Nov. 3, 2020, 8:41 p.m. UTC | #7
On 11/3/20 7:43 PM, Thomas Huth wrote:
> On 03/11/2020 17.46, Philippe Mathieu-Daudé wrote:

>> We test './configure --without-default-devices' since commit

>> 20885b5b169 (".travis.yml: test that no-default-device builds

>> do not regress") in Travis-CI.

>>

>> As we prefer to use GitLab-CI, add the equivalent job there.

>>

>> One minor difference: the GitLab Ubuntu docker image has the

>> Xen devel packages installed. As it is automatically selected,

>> we need to disable it with the --disable-xen option, else the

>> build fails:

>>

>>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

>>   collect2: error: ld returned 1 exit status

>>

>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

>> ---

>>  .gitlab-ci.yml | 11 +++++++++++

>>  1 file changed, 11 insertions(+)

>>

>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

>> index 3b15ae5c302..6ee098ec53c 100644

>> --- a/.gitlab-ci.yml

>> +++ b/.gitlab-ci.yml

>> @@ -262,6 +262,17 @@ build-user-plugins:

>>      MAKE_CHECK_ARGS: check-tcg

>>    timeout: 1h 30m

>>  

>> +build-system-ubuntu-without-default-devices:

>> +  <<: *native_build_job_definition

>> +  variables:

>> +    IMAGE: ubuntu2004

>> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs

>> +    MAKE_CHECK_ARGS: check-build

> 

> AFAIK "check-build" is pretty much a no-op since the convertion to meson ...

> could you maybe replace with a set of qtest targets that work, to make sure

> that we do not regress here? E.g.:

> 

> MAKE_CHECK_ARGS: check-qtest-avr check-qtestcris check-qtest-m68k

> check-qtest-microblaze check-qtest-mipsel check-qtest-moxie ...


qtests don't work with --without-default-devices, as we don't check
for (un-)available devices.

I'll try check-unit.

Thanks,

Phil.
Paolo Bonzini Nov. 3, 2020, 8:57 p.m. UTC | #8
On Tue, Nov 3, 2020 at 6:01 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:

> > On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

> >> We test './configure --without-default-devices' since commit

> >> 20885b5b169 (".travis.yml: test that no-default-device builds

> >> do not regress") in Travis-CI.

> >>

> >> One minor difference: the GitLab Ubuntu docker image has the

> >> Xen devel packages installed. As it is automatically selected,

> >> we need to disable it with the --disable-xen option, else the

> >> build fails:

> >>

> >>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

> >>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

> >>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'


All these symbols are defined in hw/9pfs/meson.build's fs_ss, which is
conditional on CONFIG_9PFS. So:

diff --git a/accel/Kconfig b/accel/Kconfig
index 2ad94a3839..d24664d736 100644
--- a/accel/Kconfig
+++ b/accel/Kconfig
@@ -7,3 +7,4 @@ config KVM
 config XEN
     bool
     select FSDEV_9P if VIRTFS
+    select 9PFS if VIRTFS

or alternatively (and I think better):

diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig
index d3ebd73730..3ae5749661 100644
--- a/hw/9pfs/Kconfig
+++ b/hw/9pfs/Kconfig
@@ -2,12 +2,8 @@ config FSDEV_9P
     bool
     depends on VIRTFS

-config 9PFS
-    bool
-
 config VIRTIO_9P
     bool
     default y
     depends on VIRTFS && VIRTIO
     select FSDEV_9P
-    select 9PFS
diff --git a/hw/9pfs/meson.build b/hw/9pfs/meson.build
index cc09426212..99be5d9119 100644
--- a/hw/9pfs/meson.build
+++ b/hw/9pfs/meson.build
@@ -15,6 +15,6 @@ fs_ss.add(files(
   'coxattr.c',
 ))
 fs_ss.add(when: 'CONFIG_XEN', if_true: files('xen-9p-backend.c'))
-softmmu_ss.add_all(when: 'CONFIG_9PFS', if_true: fs_ss)
+softmmu_ss.add_all(when: 'CONFIG_FSDEV_9P', if_true: fs_ss)

 specific_ss.add(when: 'CONFIG_VIRTIO_9P', if_true: files('virtio-9p-device.c'))

Paolo
Philippe Mathieu-Daudé Nov. 3, 2020, 9:07 p.m. UTC | #9
On 11/3/20 9:57 PM, Paolo Bonzini wrote:
> On Tue, Nov 3, 2020 at 6:01 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

>> On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:

>>> On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

>>>> We test './configure --without-default-devices' since commit

>>>> 20885b5b169 (".travis.yml: test that no-default-device builds

>>>> do not regress") in Travis-CI.

>>>>

>>>> One minor difference: the GitLab Ubuntu docker image has the

>>>> Xen devel packages installed. As it is automatically selected,

>>>> we need to disable it with the --disable-xen option, else the

>>>> build fails:

>>>>

>>>>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

>>>>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

>>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

>>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

>>>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

> 

> All these symbols are defined in hw/9pfs/meson.build's fs_ss, which is

> conditional on CONFIG_9PFS. So:

> 

> diff --git a/accel/Kconfig b/accel/Kconfig

> index 2ad94a3839..d24664d736 100644

> --- a/accel/Kconfig

> +++ b/accel/Kconfig

> @@ -7,3 +7,4 @@ config KVM

>  config XEN

>      bool

>      select FSDEV_9P if VIRTFS

> +    select 9PFS if VIRTFS


Without this line ^ it works! Thanks :*

Can you reply with your S-o-b? :)

> 

> or alternatively (and I think better):

> 

> diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig

> index d3ebd73730..3ae5749661 100644

> --- a/hw/9pfs/Kconfig

> +++ b/hw/9pfs/Kconfig

> @@ -2,12 +2,8 @@ config FSDEV_9P

>      bool

>      depends on VIRTFS

> 

> -config 9PFS

> -    bool

> -

>  config VIRTIO_9P

>      bool

>      default y

>      depends on VIRTFS && VIRTIO

>      select FSDEV_9P

> -    select 9PFS

> diff --git a/hw/9pfs/meson.build b/hw/9pfs/meson.build

> index cc09426212..99be5d9119 100644

> --- a/hw/9pfs/meson.build

> +++ b/hw/9pfs/meson.build

> @@ -15,6 +15,6 @@ fs_ss.add(files(

>    'coxattr.c',

>  ))

>  fs_ss.add(when: 'CONFIG_XEN', if_true: files('xen-9p-backend.c'))

> -softmmu_ss.add_all(when: 'CONFIG_9PFS', if_true: fs_ss)

> +softmmu_ss.add_all(when: 'CONFIG_FSDEV_9P', if_true: fs_ss)

> 

>  specific_ss.add(when: 'CONFIG_VIRTIO_9P', if_true: files('virtio-9p-device.c'))

> 

> Paolo

>
Paolo Bonzini Nov. 3, 2020, 9:12 p.m. UTC | #10
On 03/11/20 22:07, Philippe Mathieu-Daudé wrote:
>> diff --git a/accel/Kconfig b/accel/Kconfig

>> index 2ad94a3839..d24664d736 100644

>> --- a/accel/Kconfig

>> +++ b/accel/Kconfig

>> @@ -7,3 +7,4 @@ config KVM

>>   config XEN

>>       bool

>>       select FSDEV_9P if VIRTFS

>> +    select 9PFS if VIRTFS

> Without this line ^ it works! Thanks :*


Without which line?

(Also if both work I prefer the other one).

Paolo
Stefano Stabellini Nov. 4, 2020, 2:27 a.m. UTC | #11
On Tue, 3 Nov 2020, Philippe Mathieu-Daudé wrote:
> I forgot to Cc the 9pfs & Xen maintainers, doing it now ;)

> 

> On 11/3/20 6:01 PM, Philippe Mathieu-Daudé wrote:

> > On 11/3/20 5:52 PM, Daniel P. Berrangé wrote:

> >> On Tue, Nov 03, 2020 at 05:46:03PM +0100, Philippe Mathieu-Daudé wrote:

> >>> We test './configure --without-default-devices' since commit

> >>> 20885b5b169 (".travis.yml: test that no-default-device builds

> >>> do not regress") in Travis-CI.

> >>>

> >>> As we prefer to use GitLab-CI, add the equivalent job there.

> >>>

> >>> One minor difference: the GitLab Ubuntu docker image has the

> >>> Xen devel packages installed. As it is automatically selected,

> >>> we need to disable it with the --disable-xen option, else the

> >>> build fails:

> >>>

> >>>   /usr/bin/ld: libcommon.fa.p/hw_xen_xen-legacy-backend.c.o: in function `xen_be_register_common':

> >>>   hw/xen/xen-legacy-backend.c:754: undefined reference to `xen_9pfs_ops'

> >>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x8): undefined reference to `local_ops'

> >>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x20): undefined reference to `synth_ops'

> >>>   /usr/bin/ld: libcommon.fa.p/fsdev_qemu-fsdev.c.o:(.data.rel+0x38): undefined reference to `proxy_ops'

> >>>   collect2: error: ld returned 1 exit status

> >>

> >> Surely this is a build bug we need to fix rather than ignore in CI ?

> > 

> > Well it predates this series, so nobody really cared

> > (thus I wonder if it makes sense to invest resources

> > there).

> > 

> > Anyway I can have a look after 5.2-rc1.


Actually I care about Xen and 9pfs support, it is one of the few
combinations that I use regularly and it is even enabled in the Xilinx
product I look after. But admittedly I don't test QEMU master as much as
I should. With the recent changes to the build system it is not very
suprising that there are some issues. It would be great to have a Xen
and 9pfs test in the gitlab CI-loop.


FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I
get:

  ninja: unknown tool 'query'

Even after rebuilding ninja master by hand. Any ideas? I don't know much
about ninja.


So I gave up on that and I spinned up a Debian Buster x86 container for
this build. That one got past the "ninja: unknown tool 'query'" error.
The build completed without problems to the end.

Either way I can't reproduce the build error above.
Thomas Huth Nov. 4, 2020, 6:17 a.m. UTC | #12
On 04/11/2020 03.27, Stefano Stabellini wrote:
[...]
> Actually I care about Xen and 9pfs support, it is one of the few

> combinations that I use regularly and it is even enabled in the Xilinx

> product I look after. But admittedly I don't test QEMU master as much as

> I should. With the recent changes to the build system it is not very

> suprising that there are some issues. It would be great to have a Xen

> and 9pfs test in the gitlab CI-loop.

> 

> 

> FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I

> get:

> 

>   ninja: unknown tool 'query'

> 

> Even after rebuilding ninja master by hand. Any ideas? I don't know much

> about ninja.

> 

> 

> So I gave up on that and I spinned up a Debian Buster x86 container for

> this build. That one got past the "ninja: unknown tool 'query'" error.

> The build completed without problems to the end.

> 

> Either way I can't reproduce the build error above.


Did you run "configure" with "--without-default-devices" ?

 Thomas
Thomas Huth Nov. 4, 2020, 6:21 a.m. UTC | #13
On 03/11/2020 21.41, Philippe Mathieu-Daudé wrote:
> On 11/3/20 7:43 PM, Thomas Huth wrote:
>> On 03/11/2020 17.46, Philippe Mathieu-Daudé wrote:
[...]
>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>>> index 3b15ae5c302..6ee098ec53c 100644
>>> --- a/.gitlab-ci.yml
>>> +++ b/.gitlab-ci.yml
>>> @@ -262,6 +262,17 @@ build-user-plugins:
>>>      MAKE_CHECK_ARGS: check-tcg
>>>    timeout: 1h 30m
>>>  
>>> +build-system-ubuntu-without-default-devices:
>>> +  <<: *native_build_job_definition
>>> +  variables:
>>> +    IMAGE: ubuntu2004
>>> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs
>>> +    MAKE_CHECK_ARGS: check-build
>>
>> AFAIK "check-build" is pretty much a no-op since the convertion to meson ...
>> could you maybe replace with a set of qtest targets that work, to make sure
>> that we do not regress here? E.g.:
>>
>> MAKE_CHECK_ARGS: check-qtest-avr check-qtestcris check-qtest-m68k
>> check-qtest-microblaze check-qtest-mipsel check-qtest-moxie ...
> 
> qtests don't work with --without-default-devices, as we don't check
> for (un-)available devices.

Sure, "make check-qtest" does not work, I know. But some targets work fine,
e.g. "make check-qtest-avr", and that's what I've suggested. By testing
those targets, we can make sure that the qtests don't regress any further
with --without-default-devices.

> I'll try check-unit.

I think that does not have much benefit since it should be independent of
the devices and is tested in the other pipelines already?

 Thomas
Paolo Bonzini Nov. 4, 2020, 8:12 a.m. UTC | #14
Il mer 4 nov 2020, 03:27 Stefano Stabellini <sstabellini@kernel.org> ha
scritto:

> FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I
> get:
>
>   ninja: unknown tool 'query'
>
> Even after rebuilding ninja master by hand. Any ideas? I don't know much
> about ninja.
>

Are you sure you have ninja installed and not its clone samurai (yes, I am
serious)? I have contributed query support to samurai but it hasn't made it
to a release yet.

What is the output of "ninja -t list"?

Paolo


>
> So I gave up on that and I spinned up a Debian Buster x86 container for
> this build. That one got past the "ninja: unknown tool 'query'" error.
> The build completed without problems to the end.
>
> Either way I can't reproduce the build error above.
<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il mer 4 nov 2020, 03:27 Stefano Stabellini &lt;<a href="mailto:sstabellini@kernel.org">sstabellini@kernel.org</a>&gt; ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I<br>
get:<br>
<br>
  ninja: unknown tool &#39;query&#39;<br>
<br>
Even after rebuilding ninja master by hand. Any ideas? I don&#39;t know much<br>
about ninja.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Are you sure you have ninja installed and not its clone samurai (yes, I am serious)? I have contributed query support to samurai but it hasn&#39;t made it to a release yet.</div><div dir="auto"><br></div><div dir="auto">What is the output of &quot;ninja -t list&quot;?</div><div dir="auto"><br></div><div dir="auto">Paolo</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
So I gave up on that and I spinned up a Debian Buster x86 container for<br>
this build. That one got past the &quot;ninja: unknown tool &#39;query&#39;&quot; error.<br>
The build completed without problems to the end.<br>
<br>
Either way I can&#39;t reproduce the build error above.</blockquote></div></div></div>
Philippe Mathieu-Daudé Nov. 4, 2020, 8:32 a.m. UTC | #15
On 11/4/20 7:21 AM, Thomas Huth wrote:
> On 03/11/2020 21.41, Philippe Mathieu-Daudé wrote:

>> On 11/3/20 7:43 PM, Thomas Huth wrote:

>>> On 03/11/2020 17.46, Philippe Mathieu-Daudé wrote:

> [...]

>>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

>>>> index 3b15ae5c302..6ee098ec53c 100644

>>>> --- a/.gitlab-ci.yml

>>>> +++ b/.gitlab-ci.yml

>>>> @@ -262,6 +262,17 @@ build-user-plugins:

>>>>      MAKE_CHECK_ARGS: check-tcg

>>>>    timeout: 1h 30m

>>>>  

>>>> +build-system-ubuntu-without-default-devices:

>>>> +  <<: *native_build_job_definition

>>>> +  variables:

>>>> +    IMAGE: ubuntu2004

>>>> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs

>>>> +    MAKE_CHECK_ARGS: check-build

>>>

>>> AFAIK "check-build" is pretty much a no-op since the convertion to meson ...

>>> could you maybe replace with a set of qtest targets that work, to make sure

>>> that we do not regress here? E.g.:

>>>

>>> MAKE_CHECK_ARGS: check-qtest-avr check-qtestcris check-qtest-m68k

>>> check-qtest-microblaze check-qtest-mipsel check-qtest-moxie ...

>>

>> qtests don't work with --without-default-devices, as we don't check

>> for (un-)available devices.

> 

> Sure, "make check-qtest" does not work, I know. But some targets work fine,

> e.g. "make check-qtest-avr", and that's what I've suggested.


Yes, I tested that successfully yesterday late.

> By testing

> those targets, we can make sure that the qtests don't regress any further

> with --without-default-devices.


Yes, but I'm being wary to use it with the sole AVR target, because
I don't want this target development to be limited by unrelated
technical debts (in case we add optional device on an AVR board).

> 

>> I'll try check-unit.

> 

> I think that does not have much benefit since it should be independent of

> the devices and is tested in the other pipelines already?


Ah, good point.

Regards,

Phil.
Philippe Mathieu-Daudé Nov. 4, 2020, 8:45 a.m. UTC | #16
On 11/3/20 10:12 PM, Paolo Bonzini wrote:
> On 03/11/20 22:07, Philippe Mathieu-Daudé wrote:
>>> diff --git a/accel/Kconfig b/accel/Kconfig
>>> index 2ad94a3839..d24664d736 100644
>>> --- a/accel/Kconfig
>>> +++ b/accel/Kconfig
>>> @@ -7,3 +7,4 @@ config KVM
>>>   config XEN
>>>       bool
>>>       select FSDEV_9P if VIRTFS
>>> +    select 9PFS if VIRTFS
>> Without this line ^ it works! Thanks :*
> 
> Without which line?

Not adding "select 9PFS if VIRTFS" (keeping
the current "select FSDEV_9P if VIRTFS").

> 
> (Also if both work I prefer the other one).
> 
> Paolo
>
Thomas Huth Nov. 4, 2020, 9:15 a.m. UTC | #17
On 04/11/2020 09.32, Philippe Mathieu-Daudé wrote:
> On 11/4/20 7:21 AM, Thomas Huth wrote:

>> On 03/11/2020 21.41, Philippe Mathieu-Daudé wrote:

>>> On 11/3/20 7:43 PM, Thomas Huth wrote:

>>>> On 03/11/2020 17.46, Philippe Mathieu-Daudé wrote:

>> [...]

>>>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

>>>>> index 3b15ae5c302..6ee098ec53c 100644

>>>>> --- a/.gitlab-ci.yml

>>>>> +++ b/.gitlab-ci.yml

>>>>> @@ -262,6 +262,17 @@ build-user-plugins:

>>>>>      MAKE_CHECK_ARGS: check-tcg

>>>>>    timeout: 1h 30m

>>>>>  

>>>>> +build-system-ubuntu-without-default-devices:

>>>>> +  <<: *native_build_job_definition

>>>>> +  variables:

>>>>> +    IMAGE: ubuntu2004

>>>>> +    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs

>>>>> +    MAKE_CHECK_ARGS: check-build

>>>>

>>>> AFAIK "check-build" is pretty much a no-op since the convertion to meson ...

>>>> could you maybe replace with a set of qtest targets that work, to make sure

>>>> that we do not regress here? E.g.:

>>>>

>>>> MAKE_CHECK_ARGS: check-qtest-avr check-qtestcris check-qtest-m68k

>>>> check-qtest-microblaze check-qtest-mipsel check-qtest-moxie ...

>>>

>>> qtests don't work with --without-default-devices, as we don't check

>>> for (un-)available devices.

>>

>> Sure, "make check-qtest" does not work, I know. But some targets work fine,

>> e.g. "make check-qtest-avr", and that's what I've suggested.

> 

> Yes, I tested that successfully yesterday late.

> 

>> By testing

>> those targets, we can make sure that the qtests don't regress any further

>> with --without-default-devices.

> 

> Yes, but I'm being wary to use it with the sole AVR target, because

> I don't want this target development to be limited by unrelated

> technical debts (in case we add optional device on an AVR board).


If you feel uncomfortable with check-qtest-avr, you could also use
check-qtest-m68k instead - I think that's fine for me (and hopefully also
Laurent).

 Thomas
Stefano Stabellini Nov. 5, 2020, 2:48 a.m. UTC | #18
On Wed, 4 Nov 2020, Paolo Bonzini wrote:
> Il mer 4 nov 2020, 03:27 Stefano Stabellini <sstabellini@kernel.org> ha scritto:
>       FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I
>       get:
> 
>         ninja: unknown tool 'query'
> 
>       Even after rebuilding ninja master by hand. Any ideas? I don't know much
>       about ninja.
> 
> 
> Are you sure you have ninja installed and not its clone samurai (yes, I am serious)? I have contributed query support to samurai but it
> hasn't made it to a release yet.
> 
> What is the output of "ninja -t list"?

I repeated all the steps to make sure. The first time I was using
Samurai because Alpine Linux comes with it and not Ninja. Then, I
removed Samurai and built and installed Ninja by hand from
https://github.com/ninja-build/ninja and that actually works. Yesterday
it was late and I was distracted by global events -- I must have failed
to update Ninja appropriately. Sorry for the confusion.
Stefano Stabellini Nov. 5, 2020, 4:26 a.m. UTC | #19
On Wed, 4 Nov 2020, Thomas Huth wrote:
> On 04/11/2020 03.27, Stefano Stabellini wrote:
> [...]
> > Actually I care about Xen and 9pfs support, it is one of the few
> > combinations that I use regularly and it is even enabled in the Xilinx
> > product I look after. But admittedly I don't test QEMU master as much as
> > I should. With the recent changes to the build system it is not very
> > suprising that there are some issues. It would be great to have a Xen
> > and 9pfs test in the gitlab CI-loop.
> > 
> > 
> > FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I
> > get:
> > 
> >   ninja: unknown tool 'query'
> > 
> > Even after rebuilding ninja master by hand. Any ideas? I don't know much
> > about ninja.
> > 
> > 
> > So I gave up on that and I spinned up a Debian Buster x86 container for
> > this build. That one got past the "ninja: unknown tool 'query'" error.
> > The build completed without problems to the end.
> > 
> > Either way I can't reproduce the build error above.
> 
> Did you run "configure" with "--without-default-devices" ?

Yes, and still I can't repro the issue, strange. Anyway, I saw that
Philippe managed to find and fix the issue with "hw/9pfs: Fix Kconfig
dependency problem between 9pfs and Xen", so all sorted :)
Philippe Mathieu-Daudé Nov. 5, 2020, 8:19 a.m. UTC | #20
Le jeu. 5 nov. 2020 05:28, Stefano Stabellini <sstabellini@kernel.org> a
écrit :

> On Wed, 4 Nov 2020, Thomas Huth wrote:
> > On 04/11/2020 03.27, Stefano Stabellini wrote:
> > [...]
> > > Actually I care about Xen and 9pfs support, it is one of the few
> > > combinations that I use regularly and it is even enabled in the Xilinx
> > > product I look after. But admittedly I don't test QEMU master as much
> as
> > > I should. With the recent changes to the build system it is not very
> > > suprising that there are some issues. It would be great to have a Xen
> > > and 9pfs test in the gitlab CI-loop.
> > >
> > >
> > > FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I
> > > get:
> > >
> > >   ninja: unknown tool 'query'
> > >
> > > Even after rebuilding ninja master by hand. Any ideas? I don't know
> much
> > > about ninja.
> > >
> > >
> > > So I gave up on that and I spinned up a Debian Buster x86 container for
> > > this build. That one got past the "ninja: unknown tool 'query'" error.
> > > The build completed without problems to the end.
> > >
> > > Either way I can't reproduce the build error above.
> >
> > Did you run "configure" with "--without-default-devices" ?
>
> Yes, and still I can't repro the issue, strange. Anyway, I saw that
> Philippe managed to find and fix the issue with "hw/9pfs: Fix Kconfig
> dependency problem between 9pfs and Xen", so all sorted :)
>

Paolo figured the problem and sent a diff, I just forwarded it as a formal
patch ;)

>
<div dir="auto"><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le jeu. 5 nov. 2020 05:28, Stefano Stabellini &lt;<a href="mailto:sstabellini@kernel.org">sstabellini@kernel.org</a>&gt; a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, 4 Nov 2020, Thomas Huth wrote:<br>
&gt; On 04/11/2020 03.27, Stefano Stabellini wrote:<br>
&gt; [...]<br>
&gt; &gt; Actually I care about Xen and 9pfs support, it is one of the few<br>
&gt; &gt; combinations that I use regularly and it is even enabled in the Xilinx<br>
&gt; &gt; product I look after. But admittedly I don&#39;t test QEMU master as much as<br>
&gt; &gt; I should. With the recent changes to the build system it is not very<br>
&gt; &gt; suprising that there are some issues. It would be great to have a Xen<br>
&gt; &gt; and 9pfs test in the gitlab CI-loop.<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; FYI I tried to build the latest QEMU on Alpine Linux 3.12 ARM64 and I<br>
&gt; &gt; get:<br>
&gt; &gt; <br>
&gt; &gt;   ninja: unknown tool &#39;query&#39;<br>
&gt; &gt; <br>
&gt; &gt; Even after rebuilding ninja master by hand. Any ideas? I don&#39;t know much<br>
&gt; &gt; about ninja.<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; So I gave up on that and I spinned up a Debian Buster x86 container for<br>
&gt; &gt; this build. That one got past the &quot;ninja: unknown tool &#39;query&#39;&quot; error.<br>
&gt; &gt; The build completed without problems to the end.<br>
&gt; &gt; <br>
&gt; &gt; Either way I can&#39;t reproduce the build error above.<br>
&gt; <br>
&gt; Did you run &quot;configure&quot; with &quot;--without-default-devices&quot; ?<br>
<br>
Yes, and still I can&#39;t repro the issue, strange. Anyway, I saw that<br>
Philippe managed to find and fix the issue with &quot;hw/9pfs: Fix Kconfig<br>
dependency problem between 9pfs and Xen&quot;, so all sorted :)<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Paolo figured the problem and sent a diff, I just forwarded it as a formal patch ;)</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>
Paolo Bonzini Nov. 5, 2020, 11 a.m. UTC | #21
On 05/11/20 03:48, Stefano Stabellini wrote:
> I repeated all the steps to make sure. The first time I was using
> Samurai because Alpine Linux comes with it and not Ninja. Then, I
> removed Samurai and built and installed Ninja by hand from
> https://github.com/ninja-build/ninja and that actually works. Yesterday
> it was late and I was distracted by global events -- I must have failed
> to update Ninja appropriately. Sorry for the confusion.

FWIW I sent an Alpine merge request to support "ninja -t query".  We 
should add an Alpine container and pipeline once it's merged.

Paolo
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3b15ae5c302..6ee098ec53c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -262,6 +262,17 @@  build-user-plugins:
     MAKE_CHECK_ARGS: check-tcg
   timeout: 1h 30m
 
+build-system-ubuntu-without-default-devices:
+  <<: *native_build_job_definition
+  variables:
+    IMAGE: ubuntu2004
+    CONFIGURE_ARGS: --without-default-devices --disable-user --disable-xen --disable-tools --disable-docs
+    MAKE_CHECK_ARGS: check-build
+  artifacts:
+    expire_in: 2 days
+    paths:
+      - build
+
 build-clang:
   <<: *native_build_job_definition
   variables: