Bug 1808670 - libguestfs fails to build with Python 3.9: Files /usr/lib64/ocaml/hivex/mlhivex.cmxa and /usr/lib64/ocaml/stdlib.cmxa make inconsistent assumptions over interface Stdlib
Summary: libguestfs fails to build with Python 3.9: Files /usr/lib64/ocaml/hivex/mlhiv...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: libguestfs
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Richard W.M. Jones
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON39
TreeView+ depends on / blocked
 
Reported: 2020-02-29 10:12 UTC by Miro Hrončok
Modified: 2020-02-29 19:42 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-02-29 19:42:37 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2020-02-29 10:12:54 UTC
libguestfs fails to build with Python 3.9.0a4:

Error: Files /usr/lib64/ocaml/hivex/mlhivex.cmxa
       and /usr/lib64/ocaml/stdlib.cmxa
       make inconsistent assumptions over interface Stdlib

(I have no idea what does this mean or how/if it is related to Python 3.9, most likely it isn't.)


For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.9/fedora-rawhide-x86_64/01258766-libguestfs/

For all our attempts to build libguestfs with Python 3.9, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.9/package/libguestfs/

Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.9:
https://copr.fedorainfracloud.org/coprs/g/python/python3.9/

Let us know here if you have any questions.

Python 3.9 will be included in Fedora 33. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.9.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon.
We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.

Comment 1 Richard W.M. Jones 2020-02-29 11:23:30 UTC
I think this happened because by chance your build happened while the ongoing
OCaml 4.10.0 update was in progress.  This would mean that you pick up
OCaml packages compiled for different versions of the compiler, and you
would see this error.
(https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/FDK44345CTIHGCQ4BMVSG3AAFK5NRNR4/#R33NZS2XSYLSJSPX4Z7BB7DMVTRDNP5P)

However what's strange is I cannot reproduce the problem myself even
with identical package versions installed:

$ rpm -qf /usr/lib64/ocaml/hivex/mlhivex.cmxa
ocaml-hivex-devel-1.3.18-21.fc33.x86_64
$ rpm -qf /usr/lib64/ocaml/stdlib.cmxa
ocaml-4.10.0-2.fc33.x86_64
$ make clean
$ make  # libguestfs build succeeds

Does copr rebuild the Fedora packages (ie. not use the ones that we
build in Fedora)?  That's the only reason I can think why this might
happen.

Could you kick off another build now, since Fedora 33 should be completely
consistent right now.

Comment 2 Richard W.M. Jones 2020-02-29 11:24:44 UTC
By the way in relation to Python 3.9, we have already tested libguestfs
with the alpha versions upstream and don't anticipate any problems.

Comment 3 Miro Hrončok 2020-02-29 13:06:06 UTC
> Does copr rebuild the Fedora packages?

Anything that runtime depends on a specific Python version is rebuilt in the copr. I can try another rebuild but we might need to rebuild the entire stack.

> By the way in relation to Python 3.9, we have already tested libguestfs
> with the alpha versions upstream and don't anticipate any problems.

\o/ Thanks.

Comment 4 Richard W.M. Jones 2020-02-29 13:43:13 UTC
I'm pretty sure nothing in OCaml should depend on Python, but I guess
the dependency might be indirect.  If those packages did get rebuilt,
the rebuilding them in alphabetical order wouldn't have worked
(as you are a Red Hat associate, see my Engineering Tech Talk from Feb 24th
about "goals" for the brutal details of rebuilding OCaml).

Comment 5 Miro Hrončok 2020-02-29 16:48:38 UTC
We rebuild them in pretty random order.

OK, let's see, from the build.log, this comes from our copr, anything else comes from the Koji repo:

createrepo_c                   x86_64  0.15.5-2.fc33
file-devel                     x86_64  5.38-2.fc33
gobject-introspection-devel    x86_64  1.63.2-2.fc33
hivex                          x86_64  1.3.18-21.fc33
hivex-devel                    x86_64  1.3.18-21.fc33
libselinux-devel               x86_64  3.0-3.fc33
libselinux-utils               x86_64  3.0-3.fc33
libxml2-devel                  x86_64  2.9.10-4.fc33
lvm2                           x86_64  2.03.07-2.fc33
ocaml-hivex-devel              x86_64  1.3.18-21.fc33
perl-hivex                     x86_64  1.3.18-21.fc33
policycoreutils                x86_64  3.0-2.fc33
python3-devel                  x86_64  3.9.0~a4-1.fc33
python3-libvirt                x86_64  6.0.0-2.fc33
vim-minimal                    x86_64  2:8.2.236-2.fc33
afflib                         x86_64  3.7.18-8.fc33
brlapi                         x86_64  0.7.0-13.fc33
brltty                         x86_64  6.0-13.fc33
capstone                       x86_64  4.0.1-11.fc33
createrepo_c-libs              x86_64  0.15.5-2.fc33
device-mapper                  x86_64  1.02.167-2.fc33
device-mapper-devel            x86_64  1.02.167-2.fc33
device-mapper-event            x86_64  1.02.167-2.fc33
device-mapper-event-libs       x86_64  1.02.167-2.fc33
device-mapper-libs             x86_64  1.02.167-2.fc33
dnf                            noarch  4.2.19-1.fc33
dnf-data                       noarch  4.2.19-1.fc33
dnf-plugins-core               noarch  4.0.14-1.fc33
glusterfs                      x86_64  7.3-1.fc33
glusterfs-api                  x86_64  7.3-1.fc33
glusterfs-cli                  x86_64  7.3-1.fc33
glusterfs-client-xlators       x86_64  7.3-1.fc33
glusterfs-fuse                 x86_64  7.3-1.fc33
glusterfs-libs                 x86_64  7.3-1.fc33
gobject-introspection          x86_64  1.63.2-2.fc33
gpgme                          x86_64  1.13.1-6.fc33
iscsi-initiator-utils          x86_64  6.2.1.0-1.git4440e57.fc33
iscsi-initiator-utils-iscsiuio x86_64  6.2.1.0-1.git4440e57.fc33
libblkid-devel                 x86_64  2.35.1-5.fc33
libcomps                       x86_64  0.1.14-4.fc33
libdnf                         x86_64  0.45.0-1.fc33
libfdt                         x86_64  1.5.1-4.fc33
libibumad                      x86_64  28.0-1.fc33
libibverbs                     x86_64  28.0-1.fc33
libmodulemd                    x86_64  2.9.1-1.fc33
libmount-devel                 x86_64  2.35.1-5.fc33
libnl3                         x86_64  3.5.0-2.fc33
libproxy                       x86_64  0.4.15-18.fc33
librados2                      x86_64  2:15.1.0-2.fc33
librbd1                        x86_64  2:15.1.0-2.fc33
librdmacm                      x86_64  28.0-1.fc33
librepo                        x86_64  1.11.1-4.fc33
libreport-filesystem           noarch  2.12.0-2.fc33
libsolv                        x86_64  0.7.11-2.fc33
libwsman1                      x86_64  2.6.8-12.fc33
lttng-ust                      x86_64  2.11.0-4.fc33
lvm2-libs                      x86_64  2.03.07-2.fc33
ocaml-hivex                    x86_64  1.3.18-21.fc33
python-pip-wheel               noarch  19.3.1-2.fc33
python-setuptools-wheel        noarch  45.2.0-1.fc33
python3                        x86_64  3.9.0~a4-1.fc33
python3-dateutil               noarch  1:2.8.0-8.fc33
python3-distro                 noarch  1.4.0-5.fc33
python3-dnf                    noarch  4.2.19-1.fc33
python3-dnf-plugins-core       noarch  4.0.14-1.fc33
python3-gpg                    x86_64  1.13.1-6.fc33
python3-hawkey                 x86_64  0.45.0-1.fc33
python3-libcomps               x86_64  0.1.14-4.fc33
python3-libdnf                 x86_64  0.45.0-1.fc33
python3-libs                   x86_64  3.9.0~a4-1.fc33
python3-mako                   noarch  1.1.1-1.fc33
python3-markupsafe             x86_64  1.1.1-5.fc33
python3-pyparsing              noarch  2.4.6-2.fc33
python3-rpm                    x86_64  4.15.1-2.fc33.1
python3-rpm-generators         noarch  10-4.fc32
python3-setuptools             noarch  45.2.0-1.fc33
python3-six                    noarch  1.14.0-2.fc33
rdma-core                      x86_64  28.0-1.fc33
rpm-sign-libs                  x86_64  4.15.1-2.fc33.1
systemtap-sdt-devel            x86_64  4.3-0.20200211git91ffb97ad335.fc33
xen-libs                       x86_64  4.13.0-4.fc33
xen-licenses                   x86_64  4.13.0-4.fc33


Anything you recognize as problematic? I can repoquery those to their source names and/or cross reference it with some other query (or provided list).

Comment 6 Richard W.M. Jones 2020-02-29 17:35:09 UTC
(In reply to Miro Hrončok from comment #5)
> hivex                          x86_64  1.3.18-21.fc33
> hivex-devel                    x86_64  1.3.18-21.fc33
> ocaml-hivex-devel              x86_64  1.3.18-21.fc33

While I haven't seen the build logs, it would certainly be a problem if this
package had been built in the time between I updated ocaml and rebuilt
the Fedora hivex pkg.  You would certainly see errors such as the one above.

It's a bit of special case because hivex provides both ocaml and python
bindings, and you wanted to test new Python 3.9.  So I don't honestly think
anyone is wrong here, I think it was just very unfortunate that the
timings happened to be bad w.r.t. OCaml.

IOW there's nothing we need to do here about the process, but if
it was possible for you to rebuild hivex and then libguestfs you should
find this error goes away, but if you don't have time to do that then I
recommend just closing the bug.

Comment 7 Miro Hrončok 2020-02-29 17:38:17 UTC
(In reply to Richard W.M. Jones from comment #6)
> (In reply to Miro Hrončok from comment #5)
> > hivex                          x86_64  1.3.18-21.fc33
> > hivex-devel                    x86_64  1.3.18-21.fc33
> > ocaml-hivex-devel              x86_64  1.3.18-21.fc33
> 
> While I haven't seen the build logs, it would certainly be a problem if this
> package had been built in the time between I updated ocaml and rebuilt
> the Fedora hivex pkg.  You would certainly see errors such as the one above.
> 
> It's a bit of special case because hivex provides both ocaml and python
> bindings, and you wanted to test new Python 3.9.  So I don't honestly think
> anyone is wrong here, I think it was just very unfortunate that the
> timings happened to be bad w.r.t. OCaml.

Rebuilding hivex. Thanks for the hint.

> IOW there's nothing we need to do here about the process, but if
> it was possible for you to rebuild hivex and then libguestfs you should
> find this error goes away, but if you don't have time to do that then I
> recommend just closing the bug.

It's important for us to have real data in copr (especially since we have just now updated from a3 to a4).

Comment 8 Miro Hrončok 2020-02-29 19:42:37 UTC
Indeed, rebuilding hivex first and then libguestfs solved the problem. Thank you for your help!


Note You need to log in before you can comment on or make changes to this bug.