Skip to content

CI: Strange issue building with clang-5.0 and clang-7 - some shared objects not created #873

@jimklimov

Description

@jimklimov

As seen in an instrumented build branch, at https://travis-ci.org/github/jimklimov/nut/builds/743841433#L2911 the clients/.libs/ does not contain the actual versioned SO-name for libnutclient.so.1.0.0 (C++), although e.g. a libupsclient.so.5.0.0 (plain C) is there:

  2309925      4 drwxrwxr-x   2 travis   travis       4096 Nov 16 01:54 ./clients/.libs
  2309718      0 lrwxrwxrwx   1 travis   travis         21 Nov 16 01:54 ./clients/.libs/libnutclient.so -> libnutclient.so.1.0.0
  2309725     60 -rwxrwxr-x   1 travis   travis      58864 Nov 16 01:54 ./clients/.libs/upsrw
  2309720      4 -rw-rw-r--   1 travis   travis        370 Nov 16 01:54 ./clients/.libs/libupsclient.ver
  2309133     76 -rwxrwxr-x   1 travis   travis      74152 Nov 16 01:54 ./clients/.libs/libupsclient.so.5.0.0
  2309938    500 -rw-rw-r--   1 travis   travis     511840 Nov 16 01:54 ./clients/.libs/nutclient.o
  2309727     60 -rwxrwxr-x   1 travis   travis      57552 Nov 16 01:54 ./clients/.libs/upsset.cgi
  2309941     88 -rw-rw-r--   1 travis   travis      88790 Nov 16 01:54 ./clients/.libs/libupsclient.a
  2309311     56 -rwxrwxr-x   1 travis   travis      55296 Nov 16 01:54 ./clients/.libs/upsimage.cgi
  2309927     32 -rw-rw-r--   1 travis   travis      29888 Nov 16 01:54 ./clients/.libs/upsclient.o
  2308899     72 -rwxrwxr-x   1 travis   travis      72920 Nov 16 01:54 ./clients/.libs/upsmon
  2309947      0 lrwxrwxrwx   1 travis   travis         18 Nov 16 01:54 ./clients/.libs/libnutclient.la -> ../libnutclient.la
  2309635     48 -rwxrwxr-x   1 travis   travis      49080 Nov 16 01:54 ./clients/.libs/upscmd
  2309944    592 -rw-rw-r--   1 travis   travis     603634 Nov 16 01:54 ./clients/.libs/libnutclient.a
  2309946      4 -rw-rw-r--   1 travis   travis       1047 Nov 16 01:54 ./clients/.libs/libnutclient.lai
  2309932      0 lrwxrwxrwx   1 travis   travis         21 Nov 16 01:54 ./clients/.libs/libupsclient.so.5 -> libupsclient.so.5.0.0
  2309936      4 -rw-rw-r--   1 travis   travis       1062 Nov 16 01:54 ./clients/.libs/libupsclient.lai
  2309934      0 lrwxrwxrwx   1 travis   travis         21 Nov 16 01:54 ./clients/.libs/libupsclient.so -> libupsclient.so.5.0.0
  2309928      4 -rw-rw-r--   1 travis   travis        327 Nov 16 01:54 ./clients/.libs/libupsclient.exp
  2309937      0 lrwxrwxrwx   1 travis   travis         18 Nov 16 01:54 ./clients/.libs/libupsclient.la -> ../libupsclient.la
  2309719     36 -rwxrwxr-x   1 travis   travis      34632 Nov 16 01:54 ./clients/.libs/upsc
  2309637     40 -rwxrwxr-x   1 travis   travis      40088 Nov 16 01:54 ./clients/.libs/upslog
  2309196      0 lrwxrwxrwx   1 travis   travis         21 Nov 16 01:54 ./clients/.libs/libnutclient.so.1 -> libnutclient.so.1.0.0
  2309717     60 -rwxrwxr-x   1 travis   travis      59136 Nov 16 01:54 ./clients/.libs/upsstats.cgi

As a consequence, recently updated unit-tests can not be built:

Making all in tests
make[1]: Entering directory '/home/travis/build/jimklimov/nut/tests'

/bin/bash ../libtool  --tag=CXX   --mode=link ccache clang++-5.0 -I../include    -I/home/travis/build/jimklimov/nut/tmp/include -std=gnu++99 -std=c++11 -I/home/travis/build/jimklimov/nut/tmp/include -std=gnu++99 -std=c++11 -lcppunit -L/home/travis/build/jimklimov/nut/tmp/lib -o cppunittest cppunittest-example.o cppunittest-nutclienttest.o cppunittest-cpputest.o ../clients/libnutclient.la -lpthread 

libtool: link: LD_RUN_PATH="/home/travis/build/jimklimov/nut/tmp/lib:" ccache clang++-5.0 -I../include -I/home/travis/build/jimklimov/nut/tmp/include -std=gnu++99 -std=c++11 -I/home/travis/build/jimklimov/nut/tmp/include -std=gnu++99 -std=c++11 -o .libs/cppunittest cppunittest-example.o cppunittest-nutclienttest.o cppunittest-cpputest.o  -lcppunit -L/home/travis/build/jimklimov/nut/tmp/lib ../clients/.libs/libnutclient.so -lpthread

clang: error: no such file or directory: '../clients/.libs/libnutclient.so'

Makefile:703: recipe for target 'cppunittest' failed
make[1]: *** [cppunittest] Error 1
make[1]: Target 'all' not remade because of errors.
make[1]: Leaving directory '/home/travis/build/jimklimov/nut/tests'
make[1]: Entering directory '/home/travis/build/jimklimov/nut'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/travis/build/jimklimov/nut'
Makefile:546: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
make: Target 'all' not remade because of errors.
Command exited with non-zero status 2

Probably there is some mess-up in the Makefiles, but curiously this is the only set-up where this issue manifests ( NUT_MATRIX_TAG="gnu99-clang-5.0-nowarn-force" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang-5.0 CXX=clang++-5.0). With newer compiler and/or C standard versions, e.g. clang-8 in NUT_MATRIX_TAG="gnu17-clang-8-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8 tests work as expected.

For now, this test case was demoted to allow_failures so it does not block testing other improvements for the effort started in #823 / #844.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions