[SOLVED] dconf package does not build with meson 0.52
by TheRealGrogan from LinuxQuestions.org on (#4S74B)
I'm in the process of recompiling (most of) the system, and ran into a snag with dconf. Linker errors due to multiple definitions.
Code:The Meson build system
Version: 0.52.0
Source dir: /storage2/tmp/dconf-0.34.0
Build dir: /storage2/tmp/dconf-0.34.0/build
Build type: native build
Project name: dconf
Project version: 0.34.0
Appending CFLAGS from environment: '-O2 -fPIC'
Appending CFLAGS from environment: '-O2 -fPIC'
C compiler for the host machine: ccache cc (gcc 9.2.0 "cc (GCC) 9.2.0")
C linker for the host machine: GNU ld.bfd 2.32-slack15
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency gio-2.0 found: YES 2.62.1
Run-time dependency gio-unix-2.0 found: YES 2.62.1
Run-time dependency glib-2.0 found: YES 2.62.1
Run-time dependency dbus-1 found: YES 1.12.16
Configuring config.h using configuration
Compiler for C supports arguments -fvisibility=hidden: YES
WARNING: Project targetting '>= 0.47.0' but tried to use feature introduced in '0.50.0': install arg in configure_file
Configuring ca.desrt.dconf.service using configuration
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Program abicheck.sh found: YES (/storage2/tmp/dconf-0.34.0/gsettings/abicheck.sh)
Run-time dependency vapigen found: YES 0.46.2
Program xsltproc found: YES (/usr/bin/xsltproc)
Library dl found: YES
Library m found: YES
Program python3 found: YES (/usr/bin/python3)
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Program test-dconf.py found: YES (/storage2/tmp/dconf-0.34.0/tests/test-dconf.py)
Program meson_post_install.py found: YES (/usr/bin/python3 /storage2/tmp/dconf-0.34.0/meson_post_install.py)
Build targets in project: 34
WARNING: Project specifies a minimum meson_version '>= 0.47.0' but uses features which were added in newer versions:
* 0.50.0: {'install arg in configure_file'}
Found ninja-1.9.0 at /usr/bin/ninja
[83/92] Linking target tests/gdbus-thread-leak.
FAILED: tests/gdbus-thread-leak
cc -o tests/gdbus-thread-leak 'tests/59830eb@@gdbus-thread-leak@exe/dbus-leak.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--whole-archive -Wl,--start-group client/libdconf-client.a common/libdconf-common.a -Wl,--no-whole-archive -O2 -fPIC gdbus/libdconf-gdbus-thread.a engine/libdconf-engine.a gvdb/libgvdb.a shm/libdconf-shm.a /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/../gdbus:$ORIGIN/../engine:$ORIGIN/../gvdb:$ORIGIN/../shm' -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/gdbus -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/engine -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/gvdb -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/shm
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new':
dconf-changeset.c:(.text+0x100): multiple definition of `dconf_changeset_new'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x100): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new_database':
dconf-changeset.c:(.text+0x150): multiple definition of `dconf_changeset_new_database'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x150): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_unref':
dconf-changeset.c:(.text+0x230): multiple definition of `dconf_changeset_unref'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x230): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_ref':
dconf-changeset.c:(.text+0x290): multiple definition of `dconf_changeset_ref'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x290): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_set':
dconf-changeset.c:(.text+0x2a0): multiple definition of `dconf_changeset_set'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x2a0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_get':
dconf-changeset.c:(.text+0x450): multiple definition of `dconf_changeset_get'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x450): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_is_similar_to':
dconf-changeset.c:(.text+0x510): multiple definition of `dconf_changeset_is_similar_to'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x510): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_all':
dconf-changeset.c:(.text+0x590): multiple definition of `dconf_changeset_all'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x590): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_seal':
dconf-changeset.c:(.text+0x600): multiple definition of `dconf_changeset_seal'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x600): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_describe':
dconf-changeset.c:(.text+0x880): multiple definition of `dconf_changeset_describe'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x880): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_serialise':
dconf-changeset.c:(.text+0x8e0): multiple definition of `dconf_changeset_serialise'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x8e0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_deserialise':
dconf-changeset.c:(.text+0x970): multiple definition of `dconf_changeset_deserialise'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x970): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new_write':
dconf-changeset.c:(.text+0xa50): multiple definition of `dconf_changeset_new_write'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xa50): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_is_empty':
dconf-changeset.c:(.text+0xa80): multiple definition of `dconf_changeset_is_empty'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xa80): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_change':
dconf-changeset.c:(.text+0xaa0): multiple definition of `dconf_changeset_change'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xaa0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_diff':
dconf-changeset.c:(.text+0xb30): multiple definition of `dconf_changeset_diff'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xb30): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-error.c.o): in function `dconf_error_quark':
dconf-error.c:(.text+0x0): multiple definition of `dconf_error_quark'; client/libdconf-client.a(dconf-error.c.o):dconf-error.c:(.text+0x0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_path':
dconf-paths.c:(.text+0x0): multiple definition of `dconf_is_path'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_key':
dconf-paths.c:(.text+0xb0): multiple definition of `dconf_is_key'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0xb0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_dir':
dconf-paths.c:(.text+0x170): multiple definition of `dconf_is_dir'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x170): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_path':
dconf-paths.c:(.text+0x230): multiple definition of `dconf_is_rel_path'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x230): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_key':
dconf-paths.c:(.text+0x2e0): multiple definition of `dconf_is_rel_key'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x2e0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_dir':
dconf-paths.c:(.text+0x3a0): multiple definition of `dconf_is_rel_dir'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x3a0): first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.I had a sneaking suspicion that it was a configuration problem rather than a problem with the source (especially seeing as Pat successfully compiled it on Sept. 19), and I kept my previous meson package just in case of situations like this.
It built fine using meson 0.51.2
I have not had any other build problems with meson 0.52 so now that I got this dconf package built, I am going back to my current meson 0.52 package.


Code:The Meson build system
Version: 0.52.0
Source dir: /storage2/tmp/dconf-0.34.0
Build dir: /storage2/tmp/dconf-0.34.0/build
Build type: native build
Project name: dconf
Project version: 0.34.0
Appending CFLAGS from environment: '-O2 -fPIC'
Appending CFLAGS from environment: '-O2 -fPIC'
C compiler for the host machine: ccache cc (gcc 9.2.0 "cc (GCC) 9.2.0")
C linker for the host machine: GNU ld.bfd 2.32-slack15
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency gio-2.0 found: YES 2.62.1
Run-time dependency gio-unix-2.0 found: YES 2.62.1
Run-time dependency glib-2.0 found: YES 2.62.1
Run-time dependency dbus-1 found: YES 1.12.16
Configuring config.h using configuration
Compiler for C supports arguments -fvisibility=hidden: YES
WARNING: Project targetting '>= 0.47.0' but tried to use feature introduced in '0.50.0': install arg in configure_file
Configuring ca.desrt.dconf.service using configuration
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Program abicheck.sh found: YES (/storage2/tmp/dconf-0.34.0/gsettings/abicheck.sh)
Run-time dependency vapigen found: YES 0.46.2
Program xsltproc found: YES (/usr/bin/xsltproc)
Library dl found: YES
Library m found: YES
Program python3 found: YES (/usr/bin/python3)
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Program test-dconf.py found: YES (/storage2/tmp/dconf-0.34.0/tests/test-dconf.py)
Program meson_post_install.py found: YES (/usr/bin/python3 /storage2/tmp/dconf-0.34.0/meson_post_install.py)
Build targets in project: 34
WARNING: Project specifies a minimum meson_version '>= 0.47.0' but uses features which were added in newer versions:
* 0.50.0: {'install arg in configure_file'}
Found ninja-1.9.0 at /usr/bin/ninja
[83/92] Linking target tests/gdbus-thread-leak.
FAILED: tests/gdbus-thread-leak
cc -o tests/gdbus-thread-leak 'tests/59830eb@@gdbus-thread-leak@exe/dbus-leak.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--whole-archive -Wl,--start-group client/libdconf-client.a common/libdconf-common.a -Wl,--no-whole-archive -O2 -fPIC gdbus/libdconf-gdbus-thread.a engine/libdconf-engine.a gvdb/libgvdb.a shm/libdconf-shm.a /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/../gdbus:$ORIGIN/../engine:$ORIGIN/../gvdb:$ORIGIN/../shm' -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/gdbus -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/engine -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/gvdb -Wl,-rpath-link,/storage2/tmp/dconf-0.34.0/build/shm
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new':
dconf-changeset.c:(.text+0x100): multiple definition of `dconf_changeset_new'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x100): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new_database':
dconf-changeset.c:(.text+0x150): multiple definition of `dconf_changeset_new_database'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x150): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_unref':
dconf-changeset.c:(.text+0x230): multiple definition of `dconf_changeset_unref'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x230): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_ref':
dconf-changeset.c:(.text+0x290): multiple definition of `dconf_changeset_ref'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x290): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_set':
dconf-changeset.c:(.text+0x2a0): multiple definition of `dconf_changeset_set'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x2a0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_get':
dconf-changeset.c:(.text+0x450): multiple definition of `dconf_changeset_get'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x450): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_is_similar_to':
dconf-changeset.c:(.text+0x510): multiple definition of `dconf_changeset_is_similar_to'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x510): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_all':
dconf-changeset.c:(.text+0x590): multiple definition of `dconf_changeset_all'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x590): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_seal':
dconf-changeset.c:(.text+0x600): multiple definition of `dconf_changeset_seal'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x600): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_describe':
dconf-changeset.c:(.text+0x880): multiple definition of `dconf_changeset_describe'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x880): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_serialise':
dconf-changeset.c:(.text+0x8e0): multiple definition of `dconf_changeset_serialise'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x8e0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_deserialise':
dconf-changeset.c:(.text+0x970): multiple definition of `dconf_changeset_deserialise'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0x970): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_new_write':
dconf-changeset.c:(.text+0xa50): multiple definition of `dconf_changeset_new_write'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xa50): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_is_empty':
dconf-changeset.c:(.text+0xa80): multiple definition of `dconf_changeset_is_empty'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xa80): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_change':
dconf-changeset.c:(.text+0xaa0): multiple definition of `dconf_changeset_change'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xaa0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-changeset.c.o): in function `dconf_changeset_diff':
dconf-changeset.c:(.text+0xb30): multiple definition of `dconf_changeset_diff'; client/libdconf-client.a(dconf-changeset.c.o):dconf-changeset.c:(.text+0xb30): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-error.c.o): in function `dconf_error_quark':
dconf-error.c:(.text+0x0): multiple definition of `dconf_error_quark'; client/libdconf-client.a(dconf-error.c.o):dconf-error.c:(.text+0x0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_path':
dconf-paths.c:(.text+0x0): multiple definition of `dconf_is_path'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_key':
dconf-paths.c:(.text+0xb0): multiple definition of `dconf_is_key'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0xb0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_dir':
dconf-paths.c:(.text+0x170): multiple definition of `dconf_is_dir'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x170): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_path':
dconf-paths.c:(.text+0x230): multiple definition of `dconf_is_rel_path'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x230): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_key':
dconf-paths.c:(.text+0x2e0): multiple definition of `dconf_is_rel_key'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x2e0): first defined here
/usr/bin/ld: common/libdconf-common.a(dconf-paths.c.o): in function `dconf_is_rel_dir':
dconf-paths.c:(.text+0x3a0): multiple definition of `dconf_is_rel_dir'; client/libdconf-client.a(dconf-paths.c.o):dconf-paths.c:(.text+0x3a0): first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.I had a sneaking suspicion that it was a configuration problem rather than a problem with the source (especially seeing as Pat successfully compiled it on Sept. 19), and I kept my previous meson package just in case of situations like this.
It built fine using meson 0.51.2
I have not had any other build problems with meson 0.52 so now that I got this dconf package built, I am going back to my current meson 0.52 package.