Opened 5 years ago
Closed 5 years ago
#12691 closed defect (fixed)
Fix dconf breakage with meson-0.52
Reported by: | Douglas R. Reno | Owned by: | Douglas R. Reno |
---|---|---|---|
Priority: | normal | Milestone: | 9.1 |
Component: | BOOK | Version: | SVN |
Severity: | normal | Keywords: | |
Cc: |
Description ¶
When compiling with meson-0.52.0, it's been reported that there are problems with compiling dconf:
*** Building dconf *** [29/241] ninja -j4 [80/92] Linking target tests/gdbus-thread-leak. FAILED: tests/gdbus-thread-leak clang -B/home/lantw44/.local/bin -o tests/gdbus-thread-leak 'tests/59830eb@@gdbus-thread-leak@exe/dbus-leak.c.o' -L/home/lantw44/gnome/devinstall/lib -L/usr/local/lib -Wl,--as-needed -Wl,--no-undefined -Wl,--whole-archive -Wl,--start-group client/libdconf-client.a common/libdconf-common.a -Wl,--no-whole-archive -march=corei7 -B/home/lantw44/.local/bin -pipe -g3 -Og -gz -fdebug-macro -B/home/lantw44/.local/bin -Wl,--compress-debug-sections=zlib gdbus/libdconf-gdbus-thread.a engine/libdconf-engine.a gvdb/libgvdb.a shm/libdconf-shm.a -Wl,-rpath-link,/usr/local/lib /home/lantw44/gnome/devinstall/lib/libgio-2.0.so /home/lantw44/gnome/devinstall/lib/libgobject-2.0.so /home/lantw44/gnome/devinstall/lib/libglib-2.0.so -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,-rpath-link,/usr/local/lib -L/home/lantw44/gnome/devinstall/lib -lintl -Wl,--end-group '-Wl,-rpath,$ORIGIN/../gdbus:$ORIGIN/../engine:$ORIGIN/../gvdb:$ORIGIN/../shm' -Wl,-rpath-link,/home/lantw44/gnome/build/dconf/gdbus -Wl,-rpath-link,/home/lantw44/gnome/build/dconf/engine -Wl,-rpath-link,/home/lantw44/gnome/build/dconf/gvdb -Wl,-rpath-link,/home/lantw44/gnome/build/dconf/shm ld: error: duplicate symbol: dconf_changeset_all >>> defined at dconf-changeset.c:387 (../../source/dconf/common/dconf-changeset.c:387) >>> dconf-changeset.c.o:(dconf_changeset_all) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:387 (../../source/dconf/common/dconf-changeset.c:387) >>> dconf-changeset.c.o:(.text+0x580) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_change >>> defined at dconf-changeset.c:733 (../../source/dconf/common/dconf-changeset.c:733) >>> dconf-changeset.c.o:(dconf_changeset_change) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:733 (../../source/dconf/common/dconf-changeset.c:733) >>> dconf-changeset.c.o:(.text+0xB80) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_describe >>> defined at dconf-changeset.c:586 (../../source/dconf/common/dconf-changeset.c:586) >>> dconf-changeset.c.o:(dconf_changeset_describe) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:586 (../../source/dconf/common/dconf-changeset.c:586) >>> dconf-changeset.c.o:(.text+0x8D0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_deserialise >>> defined at dconf-changeset.c:649 (../../source/dconf/common/dconf-changeset.c:649) >>> dconf-changeset.c.o:(dconf_changeset_deserialise) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:649 (../../source/dconf/common/dconf-changeset.c:649) >>> dconf-changeset.c.o:(.text+0xA00) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_diff >>> defined at dconf-changeset.c:795 (../../source/dconf/common/dconf-changeset.c:795) >>> dconf-changeset.c.o:(dconf_changeset_diff) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:795 (../../source/dconf/common/dconf-changeset.c:795) >>> dconf-changeset.c.o:(.text+0xC30) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_get >>> defined at dconf-changeset.c:282 (../../source/dconf/common/dconf-changeset.c:282) >>> dconf-changeset.c.o:(dconf_changeset_get) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:282 (../../source/dconf/common/dconf-changeset.c:282) >>> dconf-changeset.c.o:(.text+0x430) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_is_empty >>> defined at dconf-changeset.c:710 (../../source/dconf/common/dconf-changeset.c:710) >>> dconf-changeset.c.o:(dconf_changeset_is_empty) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:710 (../../source/dconf/common/dconf-changeset.c:710) >>> dconf-changeset.c.o:(.text+0xB60) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_is_similar_to >>> defined at dconf-changeset.c:337 (../../source/dconf/common/dconf-changeset.c:337) >>> dconf-changeset.c.o:(dconf_changeset_is_similar_to) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:337 (../../source/dconf/common/dconf-changeset.c:337) >>> dconf-changeset.c.o:(.text+0x4F0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_new >>> defined at dconf-changeset.c:83 (../../source/dconf/common/dconf-changeset.c:83) >>> dconf-changeset.c.o:(dconf_changeset_new) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:83 (../../source/dconf/common/dconf-changeset.c:83) >>> dconf-changeset.c.o:(.text+0x0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_new_database >>> defined at dconf-changeset.c:123 (../../source/dconf/common/dconf-changeset.c:123) >>> dconf-changeset.c.o:(dconf_changeset_new_database) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:123 (../../source/dconf/common/dconf-changeset.c:123) >>> dconf-changeset.c.o:(.text+0x70) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_new_write >>> defined at dconf-changeset.c:691 (../../source/dconf/common/dconf-changeset.c:691) >>> dconf-changeset.c.o:(dconf_changeset_new_write) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:691 (../../source/dconf/common/dconf-changeset.c:691) >>> dconf-changeset.c.o:(.text+0xB20) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_ref >>> defined at dconf-changeset.c:178 (../../source/dconf/common/dconf-changeset.c:178) >>> dconf-changeset.c.o:(dconf_changeset_ref) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:178 (../../source/dconf/common/dconf-changeset.c:178) >>> dconf-changeset.c.o:(.text+0x1B0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_seal >>> defined at dconf-changeset.c:434 (../../source/dconf/common/dconf-changeset.c:434) >>> dconf-changeset.c.o:(dconf_changeset_seal) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:434 (../../source/dconf/common/dconf-changeset.c:434) >>> dconf-changeset.c.o:(.text+0x5F0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_serialise >>> defined at dconf-changeset.c:618 (../../source/dconf/common/dconf-changeset.c:618) >>> dconf-changeset.c.o:(dconf_changeset_serialise) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:618 (../../source/dconf/common/dconf-changeset.c:618) >>> dconf-changeset.c.o:(.text+0x940) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_set >>> defined at dconf-changeset.c:218 (../../source/dconf/common/dconf-changeset.c:218) >>> dconf-changeset.c.o:(dconf_changeset_set) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:218 (../../source/dconf/common/dconf-changeset.c:218) >>> dconf-changeset.c.o:(.text+0x1C0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_changeset_unref >>> defined at dconf-changeset.c:152 (../../source/dconf/common/dconf-changeset.c:152) >>> dconf-changeset.c.o:(dconf_changeset_unref) in archive client/libdconf-client.a >>> defined at dconf-changeset.c:152 (../../source/dconf/common/dconf-changeset.c:152) >>> dconf-changeset.c.o:(.text+0x150) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_error_quark >>> defined at dconf-error.c:52 (../../source/dconf/common/dconf-error.c:52) >>> dconf-error.c.o:(dconf_error_quark) in archive client/libdconf-client.a >>> defined at dconf-error.c:52 (../../source/dconf/common/dconf-error.c:52) >>> dconf-error.c.o:(.text+0x0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_is_dir >>> defined at dconf-paths.c:173 (../../source/dconf/common/dconf-paths.c:173) >>> dconf-paths.c.o:(dconf_is_dir) in archive client/libdconf-client.a >>> defined at dconf-paths.c:173 (../../source/dconf/common/dconf-paths.c:173) >>> dconf-paths.c.o:(.text+0x150) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_is_key >>> defined at dconf-paths.c:146 (../../source/dconf/common/dconf-paths.c:146) >>> dconf-paths.c.o:(dconf_is_key) in archive client/libdconf-client.a >>> defined at dconf-paths.c:146 (../../source/dconf/common/dconf-paths.c:146) >>> dconf-paths.c.o:(.text+0xA0) in archive common/libdconf-common.a ld: error: duplicate symbol: dconf_is_path >>> defined at dconf-paths.c:120 (../../source/dconf/common/dconf-paths.c:120) >>> dconf-paths.c.o:(dconf_is_path) in archive client/libdconf-client.a >>> defined at dconf-paths.c:120 (../../source/dconf/common/dconf-paths.c:120) >>> dconf-paths.c.o:(.text+0x0) in archive common/libdconf-common.a ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) clang: error: linker command failed with exit code 1 (use -v to see invocation) [83/92] Compiling C object 'tests/59830eb@@gdbus-filter-leak@exe/dbus-leak.c.o'. ninja: build stopped: subcommand failed.
It seems to be due to the change in behavior of the link_whole argument in meson, which changed in 0.52.
Wayne originally reported it here: http://lists.linuxfromscratch.org/pipermail/blfs-dev/2019-October/036935.html
I found the gitlab issue and commented on it asking about workarounds on 10/23:
https://gitlab.gnome.org/GNOME/dconf/issues/59
A workaround has been found that involves disabling tests via modifying the meson.build file. I'll gen a patch for that.
Change History (3)
comment:1 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 5 years ago
comment:3 by , 5 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Fixes confirmed to work on a machine with meson-0.52.0 installed. Tests also pass with that sed for gsettings/abicheck.sh. Thank you Bruce
Also, added optional dependency on bash-completion.
Fixed at r22349
Fix with:
sed -i "s|link_whole|link_with|" common/meson.build
It looks like the tests can be fixed with:
sed -i 's/module/& | grep -v mangle_path /' gsettings/abicheck.sh