raspberrypi / rpicam-apps

BSD 2-Clause "Simplified" License
389 stars 212 forks source link

[BUG] build libcamera-apps on Rpi4. #351

Closed tmsd2001 closed 2 years ago

tmsd2001 commented 2 years ago

libcamera-apps build output:

Scanning dependencies of target images
Scanning dependencies of target preview
Scanning dependencies of target VersionCpp
Scanning dependencies of target outputs
[  1%] Building CXX object image/CMakeFiles/images.dir/bmp.cpp.o
[  3%] Building CXX object output/CMakeFiles/outputs.dir/output.cpp.o
[  5%] Building CXX object preview/CMakeFiles/preview.dir/null_preview.cpp.o
Generating version string: e1beb4512178-intree 29-08-2022 (16:08:55)
[  5%] Built target VersionCpp
[  7%] Building CXX object preview/CMakeFiles/preview.dir/preview.cpp.o
[  8%] Building CXX object preview/CMakeFiles/preview.dir/drm_preview.cpp.o
[ 10%] Building CXX object preview/CMakeFiles/preview.dir/egl_preview.cpp.o
[ 12%] Building CXX object output/CMakeFiles/outputs.dir/file_output.cpp.o
[ 14%] Building CXX object image/CMakeFiles/images.dir/yuv.cpp.o
/home/thomasd/libcamera-apps/preview/drm_preview.cpp: In function ‘void get_colour_space_info(const std::optional<libcamera::ColorSpace>&, const char*&, const char*&)’:
/home/thomasd/libcamera-apps/preview/drm_preview.cpp:282:35: error: ‘Jpeg’ is not a member of ‘libcamera::ColorSpace’
  282 |  if (cs == libcamera::ColorSpace::Jpeg)
      |                                   ^~~~
compilation terminated due to -Wfatal-errors.
make[2]: *** [preview/CMakeFiles/preview.dir/build.make:108: preview/CMakeFiles/preview.dir/drm_preview.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 16%] Building CXX object image/CMakeFiles/images.dir/jpeg.cpp.o
/home/thomasd/libcamera-apps/preview/egl_preview.cpp: In function ‘void get_colour_space_info(const std::optional<libcamera::ColorSpace>&, EGLint&, EGLint&)’:
/home/thomasd/libcamera-apps/preview/egl_preview.cpp:348:35: error: ‘Jpeg’ is not a member of ‘libcamera::ColorSpace’
  348 |  if (cs == libcamera::ColorSpace::Jpeg)
      |                                   ^~~~
compilation terminated due to -Wfatal-errors.
make[2]: *** [preview/CMakeFiles/preview.dir/build.make:121: preview/CMakeFiles/preview.dir/egl_preview.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:409: preview/CMakeFiles/preview.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 17%] Building CXX object image/CMakeFiles/images.dir/png.cpp.o
[ 19%] Building CXX object output/CMakeFiles/outputs.dir/net_output.cpp.o
[ 21%] Building CXX object image/CMakeFiles/images.dir/dng.cpp.o
[ 23%] Building CXX object output/CMakeFiles/outputs.dir/circular_output.cpp.o
[ 25%] Linking CXX shared library libimages.so
[ 25%] Built target images
[ 26%] Linking CXX shared library liboutputs.so
[ 26%] Built target outputs
make: *** [Makefile:171: all] Error 2

System Settings: Linux camerapi8 5.15.56-v8+ #1575 SMP PREEMPT Fri Jul 22 20:31:26 BST 2022 aarch64 GNU/Linux libcamera: meson build --reconfigure --buildtype=release -Dpipelines=raspberrypi -Dipas=raspberrypi -Dv4l2=true -Dgstreamer=enabled -Dtest=false -Dlc-compliance=disabled -Dcam=disabled -Dqcam=enabled -Ddocumentation=disabled

The Meson build system
Version: 0.63.1
Source dir: /home/thomasd/libcamera
Build dir: /home/thomasd/libcamera/build
Build type: native build
Project name: libcamera
Project version: 0.0.0
C compiler for the host machine: cc (gcc 10.2.1 "cc (Debian 10.2.1-6) 10.2.1 20210110")
C linker for the host machine: cc ld.bfd 2.35.2
C++ compiler for the host machine: c++ (gcc 10.2.1 "c++ (Debian 10.2.1-6) 10.2.1 20210110")
C++ linker for the host machine: c++ ld.bfd 2.35.2
Host machine cpu family: aarch64
Host machine cpu: aarch64
Header "unistd.h" has symbol "issetugid" : NO (cached)
Header "stdlib.h" has symbol "secure_getenv" : YES (cached)
Compiler for C supports arguments -Wno-c99-designator: NO (cached)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Found CMake: /usr/bin/cmake (3.18.4)
Run-time dependency lttng-ust found: NO (tried pkgconfig and cmake)
Program ./parser.py found: YES (/home/thomasd/libcamera/utils/ipc/./parser.py)
Program ./generate.py found: YES (/home/thomasd/libcamera/utils/ipc/./generate.py)
Program ./extract-docs.py found: YES (/home/thomasd/libcamera/utils/ipc/./extract-docs.py)
Program ./gen-tp-header.py found: YES (/home/thomasd/libcamera/utils/tracepoints/./gen-tp-header.py)
Configuring version.h using configuration
Program openssl found: YES (/usr/bin/openssl)
Library atomic found: YES
Dependency libdw found: YES 0.183 (cached)
Dependency libunwind found: YES 1.3.2 (cached)
Header "execinfo.h" has symbol "backtrace" : YES (cached)
Dependency threads found: YES unknown (cached)
Library dl found: YES
Run-time dependency libudev found: NO (tried pkgconfig and cmake)
Run-time dependency yaml-0.1 found: NO (tried pkgconfig and cmake)
Dependency gnutls found: YES 3.7.1 (cached)

Executing subproject libyaml method cmake

libyaml| Found CMake: /usr/bin/cmake (3.18.4)

| Configuring the build directory with CMake version 3.18.4
| Running CMake with: -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_POSITION_INDEPENDENT_CODE=ON
|   - build directory:          /home/thomasd/libcamera/build/subprojects/libyaml/__CMake_build
|   - source directory:         /home/thomasd/libcamera/subprojects/libyaml
|   - toolchain file:           /home/thomasd/libcamera/build/subprojects/libyaml/__CMake_build/CMakeMesonToolchainFile.cmake
|   - preload file:             /usr/local/lib/python3.9/dist-packages/mesonbuild/cmake/data/preload.cmake
|   - trace args:               --trace-expand --trace-format=json-v1 --no-warn-unused-cli --trace-redirect=cmake_trace.txt
|   - disabled policy warnings: [CMP0025, CMP0047, CMP0056, CMP0060, CMP0065, CMP0066, CMP0067, CMP0082, CMP0089, CMP0102]

| Running with expanded trace output on.
| Not searching for unused variables given on the command line.
| Trace will be written to cmake_trace.txt
| -- The C compiler identification is GNU 10.2.1
| -- Detecting C compiler ABI info
| -- Detecting C compiler ABI info - done
| -- Check for working C compiler: /usr/bin/cc - skipped
| -- Detecting C compile features
| -- Detecting C compile features - done
| -- Configuring done
| -- Generating done
| -- Build files have been written to: /home/thomasd/libcamera/build/subprojects/libyaml/__CMake_build

libyaml| CMake configuration: SUCCEEDED
libyaml| CMake project yaml has 42 build targets.

cmake-ast| Processing generated meson AST
cmake-ast| Build file: /home/thomasd/libcamera/build/subprojects/libyaml/meson.build

libyaml| Project name: yaml
libyaml| Project version: undefined
libyaml| C compiler for the host machine: cc (gcc 10.2.1 "cc (Debian 10.2.1-6) 10.2.1 20210110")
libyaml| C linker for the host machine: cc ld.bfd 2.35.2
libyaml| Build targets in project: 65
libyaml| Subproject libyaml finished.

Dependency libexif skipped: feature android disabled
Dependency libjpeg skipped: feature android disabled
Dependency libevent_pthreads skipped: feature lc-compliance disabled
Dependency gtest skipped: feature lc-compliance disabled
Dependency libevent_pthreads skipped: feature cam disabled
Run-time dependency qt5 (modules: Core, Gui, Widgets) found: YES 5.15.2 (pkg-config)
Dependency libtiff-4 found: YES 4.2.0 (cached)
Header "QOpenGLWidget" has symbol "QOpenGLWidget" with dependencies Qt5Core, Qt5Core, Qt5Gui, Qt5Widgets: YES (cached)
Detecting Qt5 tools
Run-time dependency qt5 (modules: Core) found: YES 5.15.2 (pkg-config)
Program /usr/lib/aarch64-linux-gnu/qt5/bin/moc found: YES 5.15.2 (/usr/lib/aarch64-linux-gnu/qt5/bin/moc)
Program /usr/lib/aarch64-linux-gnu/qt5/bin/uic found: YES 5.15.2 (/usr/lib/aarch64-linux-gnu/qt5/bin/uic)
Program /usr/lib/aarch64-linux-gnu/qt5/bin/rcc found: YES 5.15.2 (/usr/lib/aarch64-linux-gnu/qt5/bin/rcc)
Program /usr/lib/aarch64-linux-gnu/qt5/bin/lrelease found: YES 5.15.2 (/usr/lib/aarch64-linux-gnu/qt5/bin/lrelease)
Dependency glib-2.0 found: YES 2.66.8 (cached)
Dependency gstreamer-video-1.0 found: YES 1.18.4 (cached)
Dependency gstreamer-allocators-1.0 found: YES 1.18.4 (cached)
Dependency python3 skipped: feature pycamera disabled
Configuring libcamerify using configuration
Program doxygen skipped: feature documentation disabled
Program dot skipped: feature documentation disabled
Program sphinx-build-3 found: NO
Program sphinx-build skipped: feature documentation disabled
Configuring config.h using configuration
Program python3 (jinja2, ply, jinja2, yaml) found: YES (/usr/bin/python3) modules: jinja2, ply, jinja2, yaml
Build targets in project: 80

libcamera 0.0.0

  Paths
    LIBCAMERA_DATA_DIR       : "/usr/local/share/libcamera"
    LIBCAMERA_SYSCONF_DIR    : "/usr/local/etc/libcamera"
    IPA_PROXY_DIR            : "/usr/local/libexec/libcamera"
    IPA_CONFIG_DIR           : "/usr/local/etc/libcamera/ipa:/usr/local/share/libcamera/ipa"
    IPA_MODULE_DIR           : "/usr/local/lib/aarch64-linux-gnu/libcamera"

  Configuration
    Enabled pipelines        : raspberrypi
    Enabled IPA modules      : raspberrypi
    Tracing support          : NO
    Android support          : NO
    GStreamer support        : YES
    Python bindings          : NO
    V4L2 emulation support   : YES
    cam application          : NO
    qcam application         : YES
    lc-compliance application: NO
    Unit tests               : NO

  Subprojects
    libyaml                  : YES

  User defined options
    buildtype                : release
    cam                      : disabled
    documentation            : disabled
    gstreamer                : enabled
    ipas                     : raspberrypi
    lc-compliance            : disabled
    pipelines                : raspberrypi
    qcam                     : enabled
    test                     : false
    v4l2                     : true

libcamera-apps:

cmake .. -DENABLE_DRM=1 -DENABLE_X11=1 -DENABLE_QT=1 -DENABLE_OPENCV=1 -DENABLE_TFLITE=1`
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No previous build - default to Release build
-- Platform: arm64
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'libcamera'
--   Found libcamera, version 0.0.0
-- libcamera library found:
--     version: 0.0.0
--     libraries: /usr/local/lib/aarch64-linux-gnu/libcamera.so;/usr/local/lib/aarch64-linux-gnu/libcamera-base.so
--     include path: /usr/local/include/libcamera
-- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found version "1.74.0") found components: program_options
-- Checking for libavcodec
-- LIBDRM_LINK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libdrm.so
-- LIBDRM display mode enabled
-- X11_LINK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libX11.so
-- EPOXY_LINK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libepoxy.so
-- EGL display mode enabled
-- QTCORE_LINK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libQt5Core.so
-- QTCORE_INCLUDE_DIRS=/usr/include/aarch64-linux-gnu/qt5/QtCore;/usr/include/aarch64-linux-gnu/qt5
-- QT display mode enabled
-- Checking for OpenCV
-- OpenCV library found:
--     version: 4.5.5
--     libraries: -lopencv_core;-lopencv_imgproc;-lopencv_objdetect
--     include path: /usr/local/include/opencv4
-- OpenCV support is included
-- Adding TFLite support
-- Configuring done
-- Generating done
-- Build files have been written to: /home/thomasd/libcamera-apps/build
tmsd2001 commented 2 years ago

my dirty fix was to replace all "Jpeg" with Srgb

marv commented 2 years ago

my dirty fix was to replace all "Jpeg" with Srgb

libcamera::ColorSpace::Jpeg was recently renamed to libcamera::ColorSpace::Sycc [1], so you should replace it with that and you have a proper fix ;-)

[1] https://git.linuxtv.org/libcamera.git/commit/?id=a17f0eddc61486989a375e34dcdcbb15c3152a4a

naushir commented 2 years ago

This is likely due to an API change in libcamera. I will have a look and provide an official fix to libcamera-apps.

naushir commented 2 years ago

https://github.com/raspberrypi/libcamera-apps/pull/352 is now merged.