[libcamera-devel] Minimum toolchain requirements

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Mar 22 11:34:37 CET 2019


Hi all,

Compiling libcamera with the buildroot test-pkg target (for validating
the package) fails on the br-arm-full, and sourcery-arm targets.

There are two major issues.

1) error: use of deleted function
   It seems the compiler is unhappy with the constructor/initiliaser
lists of severity_(other.severity_) within the log helpers.

2) error: missing initialiser for member ‘media_device_info::driver’
   The compiler is unhappy with default initialisers for structs
   being "{ }".


Neither of these issues are present on later compiler versions.


The toolchain is:
  arm-linux-g++.br_real (Buildroot 2019.02-rc1) 4.9.4

and I specify in the buildroot config:
        depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11


What do you think? Should we set a more recent compiler as a dependancy
perhaps?

Perhaps the following ?
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14

( I haven't yet tested GCC 5, I'll await to hear general thoughts before
I go building specific test environments )



Rather than paste lots of error logs here - they are available at the
following pastebin:


http://paste.ubuntu.com/p/zGVzrQF4sj/

The 'brief' version is:


[5/31] Compiling C++ object 'src/libcamera/4ab8042@@camera at sha/log.cpp.o'.
FAILED: src/libcamera/4ab8042@@camera at sha/log.cpp.o
/home/linuxembedded/iob/libcamera/buildroot/libcamera-ci/br-arm-full/host/bin/arm-linux-g++
-Isrc/libcamera/4ab8042@@camera at sha -Isrc/libcamera -I../src/libcamera
-Iinclude -I../include -I../src/libcamera/include
-I/home/linuxembedded/iob/libcamera/buildroot/libcamera-ci/br-arm-full/host/usr/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall
-Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++11 -O3
-Wno-unused-parameter -fPIC -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -Os -MD -MQ
'src/libcamera/4ab8042@@camera at sha/log.cpp.o' -MF
'src/libcamera/4ab8042@@camera at sha/log.cpp.o.d' -o
'src/libcamera/4ab8042@@camera at sha/log.cpp.o' -c ../src/libcamera/log.cpp
../src/libcamera/log.cpp: In constructor
‘libcamera::LogMessage::LogMessage(libcamera::LogMessage&&)’:
../src/libcamera/log.cpp:437:29: error: use of deleted function
‘std::basic_ostringstream<char>::basic_ostringstream(const
std::basic_ostringstream<char>&)’
    severity_(other.severity_)
                             ^
In file included from ../src/libcamera/include/log.h:10:0,
                 from ../src/libcamera/log.cpp:18:
/home/linuxembedded/iob/libcamera/buildroot/libcamera-ci/br-arm-full/host/opt/ext-toolchain/arm-buildroot-linux-uclibcgnueabi/include/c++/4.9.4/sstream:387:11:
note: ‘std::basic_ostringstream<char>::basic_ostringstream(const
std::basic_ostringstream<char>&)’ is implicitly deleted because the
default definition would be ill-formed:
     class basic_ostringstream : public basic_ostream<_CharT, _Traits>
           ^

and...


[9/31] Compiling C++ object
'src/libcamera/4ab8042@@camera at sha/media_device.cpp.o'.
FAILED: src/libcamera/4ab8042@@camera at sha/media_device.cpp.o
/home/linuxembedded/iob/libcamera/buildroot/libcamera-ci/br-arm-full/host/bin/arm-linux-g++
-Isrc/libcamera/4ab8042@@camera at sha -Isrc/libcamera -I../src/libcamera
-Iinclude -I../include -I../src/libcamera/include
-I/home/linuxembedded/iob/libcamera/buildroot/libcamera-ci/br-arm-full/host/usr/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall
-Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++11 -O3
-Wno-unused-parameter -fPIC -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -Os -MD -MQ
'src/libcamera/4ab8042@@camera at sha/media_device.cpp.o' -MF
'src/libcamera/4ab8042@@camera at sha/media_device.cpp.o.d' -o
'src/libcamera/4ab8042@@camera at sha/media_device.cpp.o' -c
../src/libcamera/media_device.cpp
../src/libcamera/media_device.cpp: In member function ‘int
libcamera::MediaDevice::open()’:
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::driver’ [-Werror=missing-field-initializers]
  struct media_device_info info = { };
                                    ^
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::model’ [-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::serial’ [-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::bus_info’ [-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::media_version’
[-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::hw_revision’ [-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::driver_version’
[-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp:158:36: error: missing initialiser for
member ‘media_device_info::reserved’ [-Werror=missing-field-initializers]
../src/libcamera/media_device.cpp: In member function ‘int
libcamera::MediaDevice::populate()’:
../src/libcamera/media_device.cpp:213:40: error: missing initialiser for
member ‘media_v2_topology::topology_version’
[-Werror=missing-field-initializers]
  struct media_v2_topology topology = { };


-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list