Message ID | 20230525212044.30222-3-farosas@suse.de |
---|---|
State | New |
Headers | show |
Series | meson: Fix initrd-stress.img build | expand |
Fabiano Rosas <farosas@suse.de> wrote: > We recently moved glib detection code to meson but the static libs > were left out. Add a specific dependency for stress.c which is linked > statically. > > $ make V=1 tests/migration/initrd-stress.img > > before: > cc -m64 -mcx16 -o tests/migration/stress ... -static -Wl,--start-group > /usr/lib64/libglib-2.0.so -Wl,--end-group > ... > bin/ld: attempted static link of dynamic object `/usr/lib64/libglib-2.0.so' > > after: > cc -m64 -mcx16 -o tests/migration/stress ... -static -pthread > -Wl,--start-group -lm /usr/lib64/libpcre.a -lglib-2.0 -Wl,--end-group > > Fixes: fc9a809e0d ("build: move glib detection and workarounds to meson") > Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Tested-by: Juan Quintela <quintela@redhat.com> queued.
On Thu, May 25, 2023 at 06:20:44PM -0300, Fabiano Rosas wrote: > We recently moved glib detection code to meson but the static libs > were left out. Add a specific dependency for stress.c which is linked > statically. > > $ make V=1 tests/migration/initrd-stress.img > > before: > cc -m64 -mcx16 -o tests/migration/stress ... -static -Wl,--start-group > /usr/lib64/libglib-2.0.so -Wl,--end-group > ... > bin/ld: attempted static link of dynamic object `/usr/lib64/libglib-2.0.so' > > after: > cc -m64 -mcx16 -o tests/migration/stress ... -static -pthread > -Wl,--start-group -lm /usr/lib64/libpcre.a -lglib-2.0 -Wl,--end-group > > Fixes: fc9a809e0d ("build: move glib detection and workarounds to meson") > Signed-off-by: Fabiano Rosas <farosas@suse.de> > --- > tests/migration/meson.build | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/tests/migration/meson.build b/tests/migration/meson.build > index dd562355a1..ac71f13290 100644 > --- a/tests/migration/meson.build > +++ b/tests/migration/meson.build > @@ -1,9 +1,11 @@ > sysprof = dependency('sysprof-capture-4', required: false) > +glib_static = dependency('glib-2.0', version: glib_req_ver, required: false, > + method: 'pkg-config', static: true) Since required: false, the result might be "not found", which means we'll still hit the linker error. I think we need to surround the 'executable()' bit in if glib_static.found() ... endif > > stress = executable( > 'stress', > files('stress.c'), > - dependencies: [glib, sysprof], > + dependencies: [glib_static, sysprof], > link_args: ['-static'], > build_by_default: false, > ) > With regards, Daniel
Daniel P. Berrangé <berrange@redhat.com> writes: > On Thu, May 25, 2023 at 06:20:44PM -0300, Fabiano Rosas wrote: >> We recently moved glib detection code to meson but the static libs >> were left out. Add a specific dependency for stress.c which is linked >> statically. >> >> $ make V=1 tests/migration/initrd-stress.img >> >> before: >> cc -m64 -mcx16 -o tests/migration/stress ... -static -Wl,--start-group >> /usr/lib64/libglib-2.0.so -Wl,--end-group >> ... >> bin/ld: attempted static link of dynamic object `/usr/lib64/libglib-2.0.so' >> >> after: >> cc -m64 -mcx16 -o tests/migration/stress ... -static -pthread >> -Wl,--start-group -lm /usr/lib64/libpcre.a -lglib-2.0 -Wl,--end-group >> >> Fixes: fc9a809e0d ("build: move glib detection and workarounds to meson") >> Signed-off-by: Fabiano Rosas <farosas@suse.de> >> --- >> tests/migration/meson.build | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/tests/migration/meson.build b/tests/migration/meson.build >> index dd562355a1..ac71f13290 100644 >> --- a/tests/migration/meson.build >> +++ b/tests/migration/meson.build >> @@ -1,9 +1,11 @@ >> sysprof = dependency('sysprof-capture-4', required: false) >> +glib_static = dependency('glib-2.0', version: glib_req_ver, required: false, >> + method: 'pkg-config', static: true) > > Since required: false, the result might be "not found", which means > we'll still hit the linker error. I think we need to surround the > 'executable()' bit in > > if glib_static.found() > ... > endif > Right, but this time it would be a helpful linker error that would tell you what you are actually missing. Since this is "build_by_default: false" I think we're better off letting the error through.
diff --git a/tests/migration/meson.build b/tests/migration/meson.build index dd562355a1..ac71f13290 100644 --- a/tests/migration/meson.build +++ b/tests/migration/meson.build @@ -1,9 +1,11 @@ sysprof = dependency('sysprof-capture-4', required: false) +glib_static = dependency('glib-2.0', version: glib_req_ver, required: false, + method: 'pkg-config', static: true) stress = executable( 'stress', files('stress.c'), - dependencies: [glib, sysprof], + dependencies: [glib_static, sysprof], link_args: ['-static'], build_by_default: false, )
We recently moved glib detection code to meson but the static libs were left out. Add a specific dependency for stress.c which is linked statically. $ make V=1 tests/migration/initrd-stress.img before: cc -m64 -mcx16 -o tests/migration/stress ... -static -Wl,--start-group /usr/lib64/libglib-2.0.so -Wl,--end-group ... bin/ld: attempted static link of dynamic object `/usr/lib64/libglib-2.0.so' after: cc -m64 -mcx16 -o tests/migration/stress ... -static -pthread -Wl,--start-group -lm /usr/lib64/libpcre.a -lglib-2.0 -Wl,--end-group Fixes: fc9a809e0d ("build: move glib detection and workarounds to meson") Signed-off-by: Fabiano Rosas <farosas@suse.de> --- tests/migration/meson.build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)