-
Bug
-
Resolution: Fixed
-
Major
-
Flounder
We've observed in CI that some submitted service bindings fail CI builds. This happens when building in-tree using cmake . && make, but never in an isolated build tree as in mkdir build && cd build && cmake .. && make. When failing, the link flags are mangled such that whitespsace is dropped between each option. A verbose log of such a failure is as follows:
{{
mporter@beef:~/src/agl/agl-service-gps$ cmake .
– The C compiler identification is GNU 7.2.0
– The CXX compiler identification is GNU 7.2.0
– Check for working C compiler: /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-gcc
– Check for working C compiler: /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-gcc – 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: /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-g++
– Check for working CXX compiler: /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-g++ – works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Detecting CXX compile features
– Detecting CXX compile features - done
– Distribution used poky-agl
– Include: /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/cmake.d/01-build_options.cmake
– Found PkgConfig: /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/pkg-config (found version "0.29.2")
– Checking for module 'json-c'
– Found json-c, version 0.12.1
– Checking for module 'libsystemd>=222'
– Found libsystemd, version 234
– Checking for module 'afb-daemon'
– Found afb-daemon, version 5.99-FFRC0
– Checking for module 'libgps'
– Found libgps, version 3.16
– Include: /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/cmake.d/02-variables.cmake
– -- Check gcc_minimal_version (found gcc version 7.2.0) (found g++ version 7.2.0)
– Include: /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/cmake.d/03-macros.cmake
– Include: /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/cmake.d/04-extra_targets.cmake
.. Warning: RSYNC_TARGET RSYNC_PREFIX not defined 'make remote-target-populate' not instanciated
.. Warning: RSYNC_TARGET not defined 'make widget-target-install' not instanciated
– Configuring done
– Generating done
– Build files have been written to: /home/mporter/src/agl/agl-service-gps
mporter@beef:~/src/agl/agl-service-gps$ make VERBOSE=1
/opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -H/home/mporter/src/agl/agl-service-gps -B/home/mporter/src/agl/agl-service-gps --check-build-system CMakeFiles/Makefile.cmake 0
/opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -E cmake_progress_start /home/mporter/src/agl/agl-service-gps/CMakeFiles /home/mporter/src/agl/agl-service-gps/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/mporter/src/agl/agl-service-gps'
make -f CMakeFiles/autobuild.dir/build.make CMakeFiles/autobuild.dir/depend
make[2]: Entering directory '/home/mporter/src/agl/agl-service-gps'
cd /home/mporter/src/agl/agl-service-gps && /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps/CMakeFiles/autobuild.dir/DependInfo.cmake --color=
Dependee "/home/mporter/src/agl/agl-service-gps/CMakeFiles/autobuild.dir/DependInfo.cmake" is newer than depender "/home/mporter/src/agl/agl-service-gps/CMakeFiles/autobuild.dir/depend.internal".
Dependee "/home/mporter/src/agl/agl-service-gps/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/mporter/src/agl/agl-service-gps/CMakeFiles/autobuild.dir/depend.internal".
Scanning dependencies of target autobuild
make[2]: Leaving directory '/home/mporter/src/agl/agl-service-gps'
make -f CMakeFiles/autobuild.dir/build.make CMakeFiles/autobuild.dir/build
make[2]: Entering directory '/home/mporter/src/agl/agl-service-gps'
/opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -DINFILE=/home/mporter/src/agl/agl-service-gps/conf.d/app-templates/template.d/autobuild/agl/autobuild.in -DOUTFILE=/home/mporter/src/agl/agl-service-gps/conf.d/autobuild/agl/autobuild -DPROJECT_BINARY_DIR=/home/mporter/src/agl/agl-service-gps -P /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/configure_file.cmake
/opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -DINFILE=/home/mporter/src/agl/agl-service-gps/conf.d/app-templates/template.d/autobuild/agl/autobuild.in -DOUTFILE=/home/mporter/src/agl/agl-service-gps/conf.d/autobuild/linux/autobuild -DPROJECT_BINARY_DIR=/home/mporter/src/agl/agl-service-gps -P /home/mporter/src/agl/agl-service-gps/conf.d/app-templates/cmake/configure_file.cmake
make[2]: Leaving directory '/home/mporter/src/agl/agl-service-gps'
[ 0%] Built target autobuild
make -f binding/CMakeFiles/afm-gps-binding.dir/build.make binding/CMakeFiles/afm-gps-binding.dir/depend
make[2]: Entering directory '/home/mporter/src/agl/agl-service-gps'
cd /home/mporter/src/agl/agl-service-gps && /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps/binding /home/mporter/src/agl/agl-service-gps /home/mporter/src/agl/agl-service-gps/binding /home/mporter/src/agl/agl-service-gps/binding/CMakeFiles/afm-gps-binding.dir/DependInfo.cmake --color=
Dependee "/home/mporter/src/agl/agl-service-gps/binding/CMakeFiles/afm-gps-binding.dir/DependInfo.cmake" is newer than depender "/home/mporter/src/agl/agl-service-gps/binding/CMakeFiles/afm-gps-binding.dir/depend.internal".
Dependee "/home/mporter/src/agl/agl-service-gps/binding/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/mporter/src/agl/agl-service-gps/binding/CMakeFiles/afm-gps-binding.dir/depend.internal".
Scanning dependencies of target afm-gps-binding
make[2]: Leaving directory '/home/mporter/src/agl/agl-service-gps'
make -f binding/CMakeFiles/afm-gps-binding.dir/build.make binding/CMakeFiles/afm-gps-binding.dir/build
make[2]: Entering directory '/home/mporter/src/agl/agl-service-gps'
[ 25%] Building C object binding/CMakeFiles/afm-gps-binding.dir/afm-gps-binding.c.o
cd /home/mporter/src/agl/agl-service-gps/binding && /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-gcc -march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi=hard --sysroot=/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi -Dafm_gps_binding_EXPORTS -I/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi/usr/include/json-c -O2 -pipe -g -feliminate-unused-debug-types -fPIC -Wall -Wextra -Wconversion -Wno-unused-parameter -Wno-sign-compare -Wno-sign-conversion -Werror=maybe-uninitialized -Werror=implicit-function-declaration -ffunction-sections -fdata-sections -fPIC -I/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi/usr/include/json-c -o CMakeFiles/afm-gps-binding.dir/afm-gps-binding.c.o -c /home/mporter/src/agl/agl-service-gps/binding/afm-gps-binding.c
[ 50%] Linking C shared module libafm-gps-binding.so
cd /home/mporter/src/agl/agl-service-gps/binding && /opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/cmake -E cmake_link_script CMakeFiles/afm-gps-binding.dir/link.txt --verbose=1
/opt/poky-agl/5.90.0+snapshot/sysroots/x86_64-aglsdk-linux/usr/bin/arm-agl-linux-gnueabi/arm-agl-linux-gnueabi-gcc march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi=hard --sysroot=/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi -fPIC -O2 -pipe -g -feliminate-unused-debug-types -Wl,version-script="/home/mporter/src/agl/agl-service-gps/conf.d/app-templates"/cmake/export.map -Wl,-O1 -Wl,hash-style=gnu -Wl,as-needed -shared -o libafm-gps-binding.so CMakeFiles/afm-gps-binding.dir/afm-gps-binding.c.o -Wl,as-needed -Wl,-gc-sections -pthread-ljson-c-lsystemd-ljson-c-L/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi/usr//usr/lib-lgps
arm-agl-linux-gnueabi-gcc: error: unrecognized command line option ‘-pthread-ljson-c-lsystemd-ljson-c-L/opt/poky-agl/5.90.0+snapshot/sysroots/armv7vehf-neon-vfpv4-agl-linux-gnueabi/usr//usr/lib-lgps’
binding/CMakeFiles/afm-gps-binding.dir/build.make:94: recipe for target 'binding/libafm-gps-binding.so' failed
make[2]: *** [binding/libafm-gps-binding.so] Error 1
make[2]: Leaving directory '/home/mporter/src/agl/agl-service-gps'
CMakeFiles/Makefile2:354: recipe for target 'binding/CMakeFiles/afm-gps-binding.dir/all' failed
make[1]: *** [binding/CMakeFiles/afm-gps-binding.dir/all] Error 2
make[1]: Leaving directory '/home/mporter/src/agl/agl-service-gps'
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
mporter@beef:~/src/agl/agl-service-gps$
}}
Note that agl-service-gps uses:
{{
mporter ~ src agl agl-service-gps git submodule status
6e1a3c37e94f42f5307fd1fa749823b2d160a56b conf.d/app-templates (4.99.3-12-g6e1a3c3)
}}
As a workaround, pinning app-templates to version 8c2b05967a3237e624a2cc78e13fcd1c5e72991c allows the in-tree build to succeed.
# | Subject | Branch | Project | Status | CR | V |
---|---|---|---|---|---|---|
14743,1 | Disable the in-tree build method. | master | apps/app-templates | Status: MERGED | +2 | +1 |
14751,2 | In case of cmake enforce an out-of-tree build | master | ci-management | Status: MERGED | +2 | +1 |