[systemd-devel] [PATCH] build: fix problems with undefined references in tests

Kay Sievers kay at vrfy.org
Mon Nov 25 05:28:35 PST 2013


On Mon, Nov 25, 2013 at 2:08 PM, Lukasz Skalski
<l.skalski at partner.samsung.com> wrote:
> On 11/25/2013 02:03 PM, Kay Sievers wrote:
>>
>> On Mon, Nov 25, 2013 at 1:56 PM, Lukasz Skalski
>> <l.skalski at partner.samsung.com> wrote:
>>>
>>> Please find patch in attachement for review - it fix problem
>>> with undefined references in some test-libsystemd-*-sym.c tests.
>>
>>
>> It looks a bit weird to add library requirements, theses libs should
>> not need the other libraries. What exactly fails on your side?

> Yes I know, but otherwise:
>
>   CCLD   test-libsystemd-daemon-sym
>   CC     test-libsystemd-id128-sym.o
>   CCLD   test-libsystemd-id128-sym
> ./.libs/libsystemd-id128.so: undefined reference to `sd_bus_label_escape'
> ./.libs/libsystemd-id128.so: undefined reference to `sd_bus_label_unescape'
> collect2: ld returned 1 exit status
> make[2]: *** [test-libsystemd-id128-sym] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2

That's caused by a broken code layout in the systemd source tree,
src/shared/ should not use the code of the shared libs directly, it's
a cyclic dep, which your "simpler" build-sys seem unable to handle:
  src/shared/unit-name.c:        e = sd_bus_label_escape(name);

This should not be fixed by adding the bus lib to all tools that use
shared/ code, but the code currently the lib should move to shared/ if
it's needed in shared/.

Kay


More information about the systemd-devel mailing list