Control: reassign -1 cmake 3.16.3-2
Control: subject -i cmake breaks on -isystem<space>
Control: affects -1 ignition-transport

* peter green <plugw...@p10link.net> [2020-04-28 23:15]:
Package: ignition-transport
Version: 8.0.0+dfsg-3
Severity: serious

It seems that ignition-transport fails to build in testing with the following 
error.

CMake Error in src/CMakeLists.txt:
  Imported target "ZeroMQ::ZeroMQ" includes non-existent path

    "-isystem"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.



CMake Error in src/CMakeLists.txt:
  Imported target "ZeroMQ::ZeroMQ" includes non-existent path

    "-isystem"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.



I first ran into this on a raspbian bullseye autobuilder, but it's also 
happening on reproducible builds, so it doesn't seem to be raspbian specific.

This doesn't seem to be showing up in the reproducible builds logs for 
unstable, that could either mean that it's a testing-specific issue or it could 
be because the reproducible builds logs for unstable are older than those for 
testing.


I was able to reproduce this using:

$ sudo apt install libzmq3-dev cmake pkg-config

$ cat > foot.c << HERE
int main() { }
HERE

$ cat CMakeLists.txt << HERE
cmake_minimum_required(VERSION 3.16)
project(foo)

include(FindPkgConfig)
pkg_check_modules(ZeroMQ IMPORTED_TARGET libzmq)

add_executable(foo foo.c)
target_link_libraries(foo PkgConfig::ZeroMQ)
HERE

$ cmake .
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'libzmq'
--   Found libzmq, version 4.3.2
-- Configuring done
CMake Error in CMakeLists.txt:
  Imported target "PkgConfig::ZeroMQ" includes non-existent path

    "-isystem"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.



CMake Error in CMakeLists.txt:
  Imported target "PkgConfig::ZeroMQ" includes non-existent path

    "-isystem"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.



-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

What I found up to now:

- pkg-config=0.29.2-1:

  $ pkg-config --cflags-only-I libzmq
  -isystem /usr/include/mit-krb5 -I/usr/include/pgm-5.2

- Whereas pkg-config=0.29-6 (or pkgconfig):

  $ pkg-config --cflags-only-I libzmq
  -I/usr/include/pgm-5.2

So the recent update of pkg-config has a new behaviour, introduced in

https://bugs.freedesktop.org/show_bug.cgi?id=97337

Changing -isystem /usr/include/mit-krb5 to -isystem/usr/include/mit-krb5 works in the .pc file(s) works around this but man gcc indicates that a space after -isystem seems fine as well.

I think cmake should handle -isystem<space>¹ and as this is reproducible without ignition-transport, I'm reassigning this to cmake.

Cheers Jochen

¹: I guess the same problem arises for -I<space> but I haven't checked that.

Attachment: signature.asc
Description: PGP signature

Reply via email to