[PATCH] explicitly link libqemuutil against rt

Simeon Schaub posted 1 patch 3 years, 11 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/eddf5c19-5582-7d88-5232-2052f87583ae@mit.edu
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] explicitly link libqemuutil against rt
Posted by Simeon Schaub 3 years, 11 months ago
>From e77de12cc33846a3de71d1858e497fbf4cdbff96 Mon Sep 17 00:00:00 2001
From: Simeon David Schaub <schaub@mit.edu>
Date: Sun, 27 Feb 2022 22:59:19 -0500
Subject: [PATCH] explicitly link libqemuutil against rt

Qemu uses `clock_gettime` which is already part of more recent versions
of glibc, but on older versions it is still required to link against
librt.

Discovered in https://github.com/JuliaPackaging/Yggdrasil/pull/4506

Signed-off-by: Simeon David Schaub <schaub@mit.edu>
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 8df40bfac4..dcf2f43940 100644
--- a/meson.build
+++ b/meson.build
@@ -2730,7 +2730,7 @@ util_ss.add_all(trace_ss)
 util_ss = util_ss.apply(config_all, strict: false)
 libqemuutil = static_library('qemuutil',
                              sources: util_ss.sources() + stub_ss.sources() + genh,
-                             dependencies: [util_ss.dependencies(), libm, threads, glib, socket, malloc, pixman])
+                             dependencies: [util_ss.dependencies(), libm, threads, glib, socket, malloc, pixman, rt])
 qemuutil = declare_dependency(link_with: libqemuutil,
                               sources: genh + version_res)
 
-- 
2.35.1
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Peter Maydell 3 years, 11 months ago
On Mon, 28 Feb 2022 at 14:12, Simeon Schaub <schaub@mit.edu> wrote:
>
> >From e77de12cc33846a3de71d1858e497fbf4cdbff96 Mon Sep 17 00:00:00 2001
> From: Simeon David Schaub <schaub@mit.edu>
> Date: Sun, 27 Feb 2022 22:59:19 -0500
> Subject: [PATCH] explicitly link libqemuutil against rt
>
> Qemu uses `clock_gettime` which is already part of more recent versions
> of glibc, but on older versions it is still required to link against
> librt.

Which version of glibc are you seeing this with ?

thanks
-- PMM
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Daniel P. Berrangé 3 years, 11 months ago
On Mon, Feb 28, 2022 at 02:15:11PM +0000, Peter Maydell wrote:
> On Mon, 28 Feb 2022 at 14:12, Simeon Schaub <schaub@mit.edu> wrote:
> >
> > >From e77de12cc33846a3de71d1858e497fbf4cdbff96 Mon Sep 17 00:00:00 2001
> > From: Simeon David Schaub <schaub@mit.edu>
> > Date: Sun, 27 Feb 2022 22:59:19 -0500
> > Subject: [PATCH] explicitly link libqemuutil against rt
> >
> > Qemu uses `clock_gettime` which is already part of more recent versions
> > of glibc, but on older versions it is still required to link against
> > librt.
> 
> Which version of glibc are you seeing this with ?

The man page says

   "Link with -lrt (only for glibc versions before 2.17)."

and even ancient RHEL-7 had glibc 2.17, so I can't imagine any platform
we currently target in QEMU has a glibc older than 2.17, so QEMU should
not need this change, unless there's some other scenario not described
in the commit message.

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 :|
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Simeon Schaub 3 years, 11 months ago
We generally target glibc 2.12 in the Julia ecosystem, since CentOS 6 is
still quite common in the HPC community.

Best,
Simeon

On 2/28/22 09:38, Daniel P. Berrangé wrote:
> On Mon, Feb 28, 2022 at 02:15:11PM +0000, Peter Maydell wrote:
>> On Mon, 28 Feb 2022 at 14:12, Simeon Schaub <schaub@mit.edu> wrote:
>>>
>>> >From e77de12cc33846a3de71d1858e497fbf4cdbff96 Mon Sep 17 00:00:00 2001
>>> From: Simeon David Schaub <schaub@mit.edu>
>>> Date: Sun, 27 Feb 2022 22:59:19 -0500
>>> Subject: [PATCH] explicitly link libqemuutil against rt
>>>
>>> Qemu uses `clock_gettime` which is already part of more recent versions
>>> of glibc, but on older versions it is still required to link against
>>> librt.
>>
>> Which version of glibc are you seeing this with ?
> 
> The man page says
> 
>    "Link with -lrt (only for glibc versions before 2.17)."
> 
> and even ancient RHEL-7 had glibc 2.17, so I can't imagine any platform
> we currently target in QEMU has a glibc older than 2.17, so QEMU should
> not need this change, unless there's some other scenario not described
> in the commit message.
> 
> Regards,
> Daniel

Re: [PATCH] explicitly link libqemuutil against rt
Posted by Daniel P. Berrangé 3 years, 11 months ago
On Mon, Feb 28, 2022 at 10:13:15AM -0500, Simeon Schaub wrote:
> We generally target glibc 2.12 in the Julia ecosystem, since CentOS 6 is
> still quite common in the HPC community.

Oh wow, we dropped RHEL/CentOS 6 support a very long time ago for QEMU,
and also dropped RHEL-7 last year.

FWIW, our platform target policy is set out here:

   https://www.qemu.org/docs/master/about/build-platforms.html

Currently RHEL-8 is the oldest RHEL we support since RHEL-7
also dropped out under the rule

  "Support for the previous major version will be dropped
   2 years after the new major version is released"

I'm surprised you didn't have to patch lots of other aspects of QEMU,
since a system targetting glibc 2.12 would be likely to have a GCC
version that we explicitly block use of at build time, as well as
other outdated 3rd party libraries we check min versions of in
configure.

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 :|
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Peter Maydell 3 years, 11 months ago
On Mon, 28 Feb 2022 at 15:13, Simeon Schaub <schaub@mit.edu> wrote:
>
> We generally target glibc 2.12 in the Julia ecosystem, since CentOS 6 is
> still quite common in the HPC community.

Unfortunately you're on your own there then -- CentOS 6 is
well out of QEMU upstream's supported-build-platforms list,
and we will not carry portability fixes required only for it.

thanks
-- PMM
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Simeon Schaub 3 years, 11 months ago
Ok, I understand.

On 2/28/22 10:17, Peter Maydell wrote:
> On Mon, 28 Feb 2022 at 15:13, Simeon Schaub <schaub@mit.edu> wrote:
>>
>> We generally target glibc 2.12 in the Julia ecosystem, since CentOS 6 is
>> still quite common in the HPC community.
> 
> Unfortunately you're on your own there then -- CentOS 6 is
> well out of QEMU upstream's supported-build-platforms list,
> and we will not carry portability fixes required only for it.
> 
> thanks
> -- PMM
Re: [PATCH] explicitly link libqemuutil against rt
Posted by Peter Maydell 3 years, 11 months ago
On Mon, 28 Feb 2022 at 14:38, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Mon, Feb 28, 2022 at 02:15:11PM +0000, Peter Maydell wrote:
> > On Mon, 28 Feb 2022 at 14:12, Simeon Schaub <schaub@mit.edu> wrote:
> > >
> > > >From e77de12cc33846a3de71d1858e497fbf4cdbff96 Mon Sep 17 00:00:00 2001
> > > From: Simeon David Schaub <schaub@mit.edu>
> > > Date: Sun, 27 Feb 2022 22:59:19 -0500
> > > Subject: [PATCH] explicitly link libqemuutil against rt
> > >
> > > Qemu uses `clock_gettime` which is already part of more recent versions
> > > of glibc, but on older versions it is still required to link against
> > > librt.
> >
> > Which version of glibc are you seeing this with ?
>
> The man page says
>
>    "Link with -lrt (only for glibc versions before 2.17)."
>
> and even ancient RHEL-7 had glibc 2.17, so I can't imagine any platform
> we currently target in QEMU has a glibc older than 2.17, so QEMU should
> not need this change, unless there's some other scenario not described
> in the commit message.

Is the answer "actually we're using musl, not glibc" ? I vaguely
remember that possibly being different in this area...

thanks
-- PMM