[libvirt] [jenkins-ci PATCH] Build libosinfo and osinfo-db-tools on mingw platform

Daniel P. Berrangé posted 1 patch 5 years, 10 months ago
Failed in applying to current master (apply log)
guests/host_vars/libvirt-fedora-rawhide/main.yml |  2 ++
guests/vars/mappings.yml                         |  6 ++++++
guests/vars/projects/libosinfo+mingw.yml         |  8 ++++++++
guests/vars/projects/osinfo-db-tools+mingw.yml   | 10 ++++++++++
projects/libosinfo.yaml                          | 12 ++++++++++++
projects/osinfo-db-tools.yaml                    | 12 ++++++++++++
6 files changed, 50 insertions(+)
create mode 100644 guests/vars/projects/libosinfo+mingw.yml
create mode 100644 guests/vars/projects/osinfo-db-tools+mingw.yml
[libvirt] [jenkins-ci PATCH] Build libosinfo and osinfo-db-tools on mingw platform
Posted by Daniel P. Berrangé 5 years, 10 months ago
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 guests/host_vars/libvirt-fedora-rawhide/main.yml |  2 ++
 guests/vars/mappings.yml                         |  6 ++++++
 guests/vars/projects/libosinfo+mingw.yml         |  8 ++++++++
 guests/vars/projects/osinfo-db-tools+mingw.yml   | 10 ++++++++++
 projects/libosinfo.yaml                          | 12 ++++++++++++
 projects/osinfo-db-tools.yaml                    | 12 ++++++++++++
 6 files changed, 50 insertions(+)
 create mode 100644 guests/vars/projects/libosinfo+mingw.yml
 create mode 100644 guests/vars/projects/osinfo-db-tools+mingw.yml

diff --git a/guests/host_vars/libvirt-fedora-rawhide/main.yml b/guests/host_vars/libvirt-fedora-rawhide/main.yml
index 43555d0..82d46e8 100644
--- a/guests/host_vars/libvirt-fedora-rawhide/main.yml
+++ b/guests/host_vars/libvirt-fedora-rawhide/main.yml
@@ -4,6 +4,7 @@ PYTHONPATH: $VIRT_PREFIX/lib64/python3.6/site-packages
 
 projects:
   - libosinfo
+  - libosinfo+mingw
   - libvirt
   - libvirt+mingw
   - libvirt-cim
@@ -18,6 +19,7 @@ projects:
   - libvirt-tck
   - osinfo-db
   - osinfo-db-tools
+  - osinfo-db-tools+mingw
   - virt-manager
   - virt-viewer
   - virt-viewer+mingw
diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
index f1777fe..3e33bf1 100644
--- a/guests/vars/mappings.yml
+++ b/guests/vars/mappings.yml
@@ -368,6 +368,9 @@ mappings:
   mingw32-gtk-vnc2:
     FedoraRawhide: mingw32-gtk-vnc2
 
+  mingw32-libarchive:
+    FedoraRawhide: mingw32-libarchive
+
   mingw32-libgovirt:
     FedoraRawhide: mingw32-libgovirt
 
@@ -437,6 +440,9 @@ mappings:
   mingw64-gtk-vnc2:
     FedoraRawhide: mingw64-gtk-vnc2
 
+  mingw64-libarchive:
+    FedoraRawhide: mingw64-libarchive
+
   mingw64-libgovirt:
     FedoraRawhide: mingw64-libgovirt
 
diff --git a/guests/vars/projects/libosinfo+mingw.yml b/guests/vars/projects/libosinfo+mingw.yml
new file mode 100644
index 0000000..e3fc3cb
--- /dev/null
+++ b/guests/vars/projects/libosinfo+mingw.yml
@@ -0,0 +1,8 @@
+---
+packages:
+  - mingw32-glib2
+  - mingw32-libxml2
+  - mingw32-libxslt
+  - mingw64-glib2
+  - mingw64-libxml2
+  - mingw64-libxslt
diff --git a/guests/vars/projects/osinfo-db-tools+mingw.yml b/guests/vars/projects/osinfo-db-tools+mingw.yml
new file mode 100644
index 0000000..578e185
--- /dev/null
+++ b/guests/vars/projects/osinfo-db-tools+mingw.yml
@@ -0,0 +1,10 @@
+---
+packages:
+  - mingw32-glib2
+  - mingw32-libxml2
+  - mingw32-libxslt
+  - mingw32-libarchive
+  - mingw64-glib2
+  - mingw64-libxml2
+  - mingw64-libxslt
+  - mingw64-libarchive
diff --git a/projects/libosinfo.yaml b/projects/libosinfo.yaml
index 0d25447..8e3d105 100644
--- a/projects/libosinfo.yaml
+++ b/projects/libosinfo.yaml
@@ -13,3 +13,15 @@
       - autotools-rpm-job:
           parent_jobs: 'libosinfo-master-check'
           machines: '{rpm_machines}'
+      - autotools-build-job:
+          parent_jobs: 'osinfo-db-tools-master-build-mingw32'
+          variant: -mingw32
+          local_env: '{mingw32_local_env}'
+          autogen_args: '{mingw32_autogen_args}'
+          machines: '{mingw_machines}'
+      - autotools-build-job:
+          parent_jobs: 'osinfo-db-tools-master-build-mingw64'
+          variant: -mingw64
+          local_env: '{mingw64_local_env}'
+          autogen_args: '{mingw64_autogen_args}'
+          machines: '{mingw_machines}'
diff --git a/projects/osinfo-db-tools.yaml b/projects/osinfo-db-tools.yaml
index 6b451ef..cab85af 100644
--- a/projects/osinfo-db-tools.yaml
+++ b/projects/osinfo-db-tools.yaml
@@ -13,3 +13,15 @@
       - autotools-rpm-job:
           parent_jobs: 'osinfo-db-tools-master-check'
           machines: '{rpm_machines}'
+      - autotools-build-job:
+          parent_jobs:
+          variant: -mingw32
+          local_env: '{mingw32_local_env}'
+          autogen_args: '{mingw32_autogen_args}'
+          machines: '{mingw_machines}'
+      - autotools-build-job:
+          parent_jobs:
+          variant: -mingw64
+          local_env: '{mingw64_local_env}'
+          autogen_args: '{mingw64_autogen_args}'
+          machines: '{mingw_machines}'
-- 
2.17.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [jenkins-ci PATCH] Build libosinfo and osinfo-db-tools on mingw platform
Posted by Andrea Bolognani 5 years, 10 months ago
On Tue, 2018-05-08 at 14:37 +0100, Daniel P. Berrangé wrote:
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  guests/host_vars/libvirt-fedora-rawhide/main.yml |  2 ++
>  guests/vars/mappings.yml                         |  6 ++++++
>  guests/vars/projects/libosinfo+mingw.yml         |  8 ++++++++
>  guests/vars/projects/osinfo-db-tools+mingw.yml   | 10 ++++++++++
>  projects/libosinfo.yaml                          | 12 ++++++++++++
>  projects/osinfo-db-tools.yaml                    | 12 ++++++++++++
>  6 files changed, 50 insertions(+)
>  create mode 100644 guests/vars/projects/libosinfo+mingw.yml
>  create mode 100644 guests/vars/projects/osinfo-db-tools+mingw.yml

I was wondering why we didn't do this just the other day...
Thanks for looking into it before I had a chance to :)

> diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
> index f1777fe..3e33bf1 100644
> --- a/guests/vars/mappings.yml
> +++ b/guests/vars/mappings.yml
> @@ -368,6 +368,9 @@ mappings:
>    mingw32-gtk-vnc2:
>      FedoraRawhide: mingw32-gtk-vnc2
>  
> +  mingw32-libarchive:
> +    FedoraRawhide: mingw32-libarchive
> +
>    mingw32-libgovirt:
>      FedoraRawhide: mingw32-libgovirt
>  
> @@ -437,6 +440,9 @@ mappings:
>    mingw64-gtk-vnc2:
>      FedoraRawhide: mingw64-gtk-vnc2
>  
> +  mingw64-libarchive:
> +    FedoraRawhide: mingw64-libarchive
> +
>    mingw64-libgovirt:
>      FedoraRawhide: mingw64-libgovirt
>  

You also need

  mingw32-libxslt:
    FedoraRawhide: mingw32-libxslt

  mingw64-libxslt:
    FedoraRawhide: mingw64-libxslt

here.

> diff --git a/projects/libosinfo.yaml b/projects/libosinfo.yaml
> index 0d25447..8e3d105 100644
> --- a/projects/libosinfo.yaml
> +++ b/projects/libosinfo.yaml
> @@ -13,3 +13,15 @@
>        - autotools-rpm-job:
>            parent_jobs: 'libosinfo-master-check'
>            machines: '{rpm_machines}'
> +      - autotools-build-job:
> +          parent_jobs: 'osinfo-db-tools-master-build-mingw32'
> +          variant: -mingw32
> +          local_env: '{mingw32_local_env}'
> +          autogen_args: '{mingw32_autogen_args}'
> +          machines: '{mingw_machines}'
> +      - autotools-build-job:
> +          parent_jobs: 'osinfo-db-tools-master-build-mingw64'
> +          variant: -mingw64
> +          local_env: '{mingw64_local_env}'
> +          autogen_args: '{mingw64_autogen_args}'
> +          machines: '{mingw_machines}'

Unfortunately, this doesn't quite work:

  [...]
  checking for gtk-doc... no
  configure: WARNING:
    You will not be able to create source packages with 'make dist'
    because gtk-doc >= 1.10 is not found.
  checking for gtkdoc-check... gtkdoc-check.test
  checking for gtkdoc-check... /usr/bin/gtkdoc-check
  checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase
  checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf
  checking whether to build gtk-doc documentation... yes
  configure: error:
    You must have gtk-doc >= 1.10 installed to build documentation for
    libosinfo. Please install gtk-doc or disable building the
    documentation by adding '--disable-gtk-doc' to './configure'.

The problem is that we override both $PKG_CONFIG_PATH and
$PKG_CONFIG_LIBDIR in {mingw*_local_env}, which causes pkg-config
to only look for .pc files in MinGW's directories; on the other
hand, the GTK_DOC_CHECK() macro also uses pkg-config to decide
whether gtk-doc is available, and due to the overrides it can't
locate the native .pc file and decides it's not there.

The only reason we didn't run into this issue when enabling MinGW
builds for libvirt-glib, which also uses gtk-doc, is that that
project's autogen.sh doesn't explicitly enable gtk-doc support,
while libosinfo's does:

  . gnome-autogen.sh --enable-gtk-doc "$@"

I can see a few ways to address this:

  1) make it so $PKG_CONFIG_PATH or $PKG_CONFIG_LIBDIR include
     the native pkg-config directories even when performing MinGW
     builds;

  2) add --disable-gtk-doc or --enable-gtk-doc=check to
     {mingw*_autogen_args}, thus overriding the default hardcoded
     in libosinfo's autogen.sh;

  3) change libosinfo's autogen.sh not to mandate gtk-doc for all
     builds.

Option 3) looks like the best one to me, mostly because I think
the default behavior of checking for gtk-doc's presence and decide
whether to build the API reference based on that is more sane than
forcing gtk-doc to be present; moreover, --enable-gtk-doc is
already in $DISTCHECK_CONFIGURE_FLAGS and prepare-release.sh, so
there's no risk of accidentally generating a release that doesn't
contain the API reference.

-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [jenkins-ci PATCH] Build libosinfo and osinfo-db-tools on mingw platform
Posted by Daniel P. Berrangé 5 years, 10 months ago
On Wed, May 09, 2018 at 01:34:53PM +0200, Andrea Bolognani wrote:
> On Tue, 2018-05-08 at 14:37 +0100, Daniel P. Berrangé wrote:
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >  guests/host_vars/libvirt-fedora-rawhide/main.yml |  2 ++
> >  guests/vars/mappings.yml                         |  6 ++++++
> >  guests/vars/projects/libosinfo+mingw.yml         |  8 ++++++++
> >  guests/vars/projects/osinfo-db-tools+mingw.yml   | 10 ++++++++++
> >  projects/libosinfo.yaml                          | 12 ++++++++++++
> >  projects/osinfo-db-tools.yaml                    | 12 ++++++++++++
> >  6 files changed, 50 insertions(+)
> >  create mode 100644 guests/vars/projects/libosinfo+mingw.yml
> >  create mode 100644 guests/vars/projects/osinfo-db-tools+mingw.yml
> 
> I was wondering why we didn't do this just the other day...
> Thanks for looking into it before I had a chance to :)
> 
> > diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
> > index f1777fe..3e33bf1 100644
> > --- a/guests/vars/mappings.yml
> > +++ b/guests/vars/mappings.yml
> > @@ -368,6 +368,9 @@ mappings:
> >    mingw32-gtk-vnc2:
> >      FedoraRawhide: mingw32-gtk-vnc2
> >  
> > +  mingw32-libarchive:
> > +    FedoraRawhide: mingw32-libarchive
> > +
> >    mingw32-libgovirt:
> >      FedoraRawhide: mingw32-libgovirt
> >  
> > @@ -437,6 +440,9 @@ mappings:
> >    mingw64-gtk-vnc2:
> >      FedoraRawhide: mingw64-gtk-vnc2
> >  
> > +  mingw64-libarchive:
> > +    FedoraRawhide: mingw64-libarchive
> > +
> >    mingw64-libgovirt:
> >      FedoraRawhide: mingw64-libgovirt
> >  
> 
> You also need
> 
>   mingw32-libxslt:
>     FedoraRawhide: mingw32-libxslt
> 
>   mingw64-libxslt:
>     FedoraRawhide: mingw64-libxslt
> 
> here.

Opps, i blindly assumed it was already there for libvirt

> 
> > diff --git a/projects/libosinfo.yaml b/projects/libosinfo.yaml
> > index 0d25447..8e3d105 100644
> > --- a/projects/libosinfo.yaml
> > +++ b/projects/libosinfo.yaml
> > @@ -13,3 +13,15 @@
> >        - autotools-rpm-job:
> >            parent_jobs: 'libosinfo-master-check'
> >            machines: '{rpm_machines}'
> > +      - autotools-build-job:
> > +          parent_jobs: 'osinfo-db-tools-master-build-mingw32'
> > +          variant: -mingw32
> > +          local_env: '{mingw32_local_env}'
> > +          autogen_args: '{mingw32_autogen_args}'
> > +          machines: '{mingw_machines}'
> > +      - autotools-build-job:
> > +          parent_jobs: 'osinfo-db-tools-master-build-mingw64'
> > +          variant: -mingw64
> > +          local_env: '{mingw64_local_env}'
> > +          autogen_args: '{mingw64_autogen_args}'
> > +          machines: '{mingw_machines}'
> 
> Unfortunately, this doesn't quite work:
> 
>   [...]
>   checking for gtk-doc... no
>   configure: WARNING:
>     You will not be able to create source packages with 'make dist'
>     because gtk-doc >= 1.10 is not found.
>   checking for gtkdoc-check... gtkdoc-check.test
>   checking for gtkdoc-check... /usr/bin/gtkdoc-check
>   checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase
>   checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf
>   checking whether to build gtk-doc documentation... yes
>   configure: error:
>     You must have gtk-doc >= 1.10 installed to build documentation for
>     libosinfo. Please install gtk-doc or disable building the
>     documentation by adding '--disable-gtk-doc' to './configure'.
> 
> The problem is that we override both $PKG_CONFIG_PATH and
> $PKG_CONFIG_LIBDIR in {mingw*_local_env}, which causes pkg-config
> to only look for .pc files in MinGW's directories; on the other
> hand, the GTK_DOC_CHECK() macro also uses pkg-config to decide
> whether gtk-doc is available, and due to the overrides it can't
> locate the native .pc file and decides it's not there.
> 
> The only reason we didn't run into this issue when enabling MinGW
> builds for libvirt-glib, which also uses gtk-doc, is that that
> project's autogen.sh doesn't explicitly enable gtk-doc support,
> while libosinfo's does:
> 
>   . gnome-autogen.sh --enable-gtk-doc "$@"
> 
> I can see a few ways to address this:
> 
>   1) make it so $PKG_CONFIG_PATH or $PKG_CONFIG_LIBDIR include
>      the native pkg-config directories even when performing MinGW
>      builds;
> 
>   2) add --disable-gtk-doc or --enable-gtk-doc=check to
>      {mingw*_autogen_args}, thus overriding the default hardcoded
>      in libosinfo's autogen.sh;
> 
>   3) change libosinfo's autogen.sh not to mandate gtk-doc for all
>      builds.
> 
> Option 3) looks like the best one to me, mostly because I think
> the default behavior of checking for gtk-doc's presence and decide
> whether to build the API reference based on that is more sane than
> forcing gtk-doc to be present; moreover, --enable-gtk-doc is
> already in $DISTCHECK_CONFIGURE_FLAGS and prepare-release.sh, so
> there's no risk of accidentally generating a release that doesn't
> contain the API reference.

Agreed - I looked back in history and it seems I added --enable-gtk-doc
to autogen.sh right at start when integrating gtk-doc. There's no good
reason given, and other projects work without this so lets remove it.

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 :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [jenkins-ci PATCH] Build libosinfo and osinfo-db-tools on mingw platform
Posted by Andrea Bolognani 5 years, 10 months ago
On Wed, 2018-05-09 at 12:39 +0100, Daniel P. Berrangé wrote:
> On Wed, May 09, 2018 at 01:34:53PM +0200, Andrea Bolognani wrote:
> >   3) change libosinfo's autogen.sh not to mandate gtk-doc for all
> >      builds.
> > 
> > Option 3) looks like the best one to me, mostly because I think
> > the default behavior of checking for gtk-doc's presence and decide
> > whether to build the API reference based on that is more sane than
> > forcing gtk-doc to be present; moreover, --enable-gtk-doc is
> > already in $DISTCHECK_CONFIGURE_FLAGS and prepare-release.sh, so
> > there's no risk of accidentally generating a release that doesn't
> > contain the API reference.
> 
> Agreed - I looked back in history and it seems I added --enable-gtk-doc
> to autogen.sh right at start when integrating gtk-doc. There's no good
> reason given, and other projects work without this so lets remove it.

Cool, I'll post a patch then.

With the libxslt entries squashed in, and after the patch getting
rid of --enable-gtk-doc has been merged into libosinfo,

  Reviewed-by: Andrea Bolognani <abologna@redhat.com>

-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list