lol

hyperhdr: unvendoring (#399079)

authored by

Martin Weinelt and committed by
GitHub
8ba495f5 55fabc7b

+330 -5
+35 -5
pkgs/by-name/hy/hyperhdr/package.nix
··· 13 13 qt6Packages, 14 14 qmqtt, 15 15 xz, 16 + sdbus-cpp_2, 17 + plutovg, 18 + lunasvg, 19 + nanopb, 20 + linalg, 21 + stb, 16 22 }: 17 23 18 24 let ··· 23 29 24 30 stdenv.mkDerivation rec { 25 31 pname = "hyperhdr"; 26 - version = "20.0.0.0"; 32 + version = "21.0.0.0"; 27 33 28 34 src = fetchFromGitHub { 29 35 owner = "awawa-dev"; 30 36 repo = "HyperHDR"; 31 37 tag = "v${version}"; 32 - hash = "sha256-agIWtDlMwjD0sGX2ntFwqROzUsl8tY3nRbmFvvOVh4o="; 38 + hash = "sha256-CSggawgUPkpeADc8VXs5FA+ubZAtrtTu0qYgIWA0V/c="; 33 39 }; 34 40 35 41 nativeBuildInputs = [ ··· 38 44 qt6Packages.wrapQtAppsHook 39 45 ]; 40 46 47 + patches = [ 48 + # Allow completly unvendoring hyperhdr 49 + # This can be removed on the next hyperhdr release 50 + ./unvendor.patch 51 + ]; 52 + 53 + postPatch = '' 54 + substituteInPlace sources/sound-capture/linux/SoundCaptureLinux.cpp \ 55 + --replace-fail "libasound.so.2" "${lib.getLib alsa-lib}/lib/libasound.so.2" 56 + ''; 57 + 41 58 cmakeFlags = [ 42 59 "-DPLATFORM=linux" 43 - (cmakeBool "USE_SYSTEM_MQTT_LIBS" true) 44 60 (cmakeBool "USE_SYSTEM_FLATBUFFERS_LIBS" true) 61 + (cmakeBool "USE_SYSTEM_LUNASVG_LIBS" true) 45 62 (cmakeBool "USE_SYSTEM_MBEDTLS_LIBS" true) 63 + (cmakeBool "USE_SYSTEM_MQTT_LIBS" true) 64 + (cmakeBool "USE_SYSTEM_NANOPB_LIBS" true) 65 + (cmakeBool "USE_SYSTEM_SDBUS_CPP_LIBS" true) 66 + (cmakeBool "USE_SYSTEM_STB_LIBS" true) 46 67 ]; 47 68 48 69 buildInputs = [ 49 70 alsa-lib 50 71 flatbuffers 51 72 libjpeg_turbo 52 - mdns 73 + linalg 74 + lunasvg 53 75 mbedtls 76 + mdns 77 + nanopb 54 78 pipewire 79 + plutovg 55 80 qmqtt 56 81 qt6Packages.qtbase 57 82 qt6Packages.qtserialport 83 + sdbus-cpp_2 84 + stb 58 85 xz 59 86 ]; 60 87 ··· 63 90 homepage = "https://github.com/awawa-dev/HyperHDR"; 64 91 changelog = "https://github.com/awawa-dev/HyperHDR/blob/${src.rev}/CHANGELOG.md"; 65 92 license = licenses.mit; 66 - maintainers = with maintainers; [ hexa ]; 93 + maintainers = with maintainers; [ 94 + hexa 95 + eymeric 96 + ]; 67 97 mainProgram = "hyperhdr"; 68 98 platforms = platforms.linux; 69 99 };
+295
pkgs/by-name/hy/hyperhdr/unvendor.patch
··· 1 + diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml 2 + index 6007f64..a98a23c 100644 3 + --- a/.github/workflows/push-master.yml 4 + +++ b/.github/workflows/push-master.yml 5 + @@ -2,7 +2,7 @@ name: HyperHDR CI Build 6 + 7 + on: 8 + push: 9 + -# pull_request: 10 + + pull_request: 11 + 12 + env: 13 + USE_CACHE: ${{ vars.USE_CACHE && vars.USE_CACHE || true }} 14 + @@ -109,6 +109,7 @@ jobs: 15 + 16 + - name: Clear branch ccache storage 17 + uses: yumemi-inc/clean-cache-action@v1 18 + + continue-on-error: true 19 + with: 20 + ref: ${{ github.event.ref }} 21 + key: ${{ matrix.linuxVersion }}-${{ matrix.dockerImage }}-ccache- 22 + @@ -193,6 +194,7 @@ jobs: 23 + 24 + - name: Clear branch ccache storage 25 + uses: yumemi-inc/clean-cache-action@v1 26 + + continue-on-error: true 27 + with: 28 + ref: ${{ github.event.ref }} 29 + key: macOS-ccache-${{ matrix.NICE_NAME }} 30 + @@ -284,6 +286,7 @@ jobs: 31 + 32 + - name: Clear branch ccache storage 33 + uses: yumemi-inc/clean-cache-action@v1 34 + + continue-on-error: true 35 + with: 36 + ref: ${{ github.event.ref }} 37 + key: ${{ runner.os }}-ccache 38 + diff --git a/BUILDING.md b/BUILDING.md 39 + index 0347079..759cd6a 100644 40 + --- a/BUILDING.md 41 + +++ b/BUILDING.md 42 + @@ -44,6 +44,10 @@ Use -D prefix when configuring the build. 43 + * USE_CCACHE_CACHING = ON | OFF, enable CCache support if available 44 + * USE_SYSTEM_MQTT_LIBS = ON | OFF, prefer system qMQTT libs 45 + * USE_SYSTEM_FLATBUFFERS_LIBS = ON | OFF, prefer system Flatbuffers libs 46 + + * USE_SYSTEM_SDBUS_CPP_LIBS = ON | OFF, prefer system sdbus_c++ libs 47 + + * USE_SYSTEM_LUNASVG_LIBS = ON | OFF, prefer system lunasvg libs 48 + + * USE_SYSTEM_NANOPB_LIBS = ON | OFF, prefer system nanopb libs 49 + + * USE_SYSTEM_STB_LIBS = ON | OFF, prefer system stb libs 50 + * USE_STATIC_QT_PLUGINS = ON | OFF, embed static QT-plugins into the application 51 + * USE_STANDARD_INSTALLER_NAME = ON | OFF, use standard Linux package naming 52 + 53 + diff --git a/CMakeLists.txt b/CMakeLists.txt 54 + index b918a81..fbf8d6b 100644 55 + --- a/CMakeLists.txt 56 + +++ b/CMakeLists.txt 57 + @@ -34,6 +34,10 @@ SET ( DEFAULT_PROTOBUF ON ) 58 + SET ( DEFAULT_WS281XPWM OFF ) 59 + SET ( DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS ON ) 60 + SET ( DEFAULT_USE_SYSTEM_MQTT_LIBS OFF ) 61 + +SET ( DEFAULT_USE_SYSTEM_SDBUS_CPP_LIBS OFF ) 62 + +SET ( DEFAULT_USE_SYSTEM_LUNASVG_LIBS OFF ) 63 + +SET ( DEFAULT_USE_SYSTEM_NANOPB_LIBS OFF ) 64 + +SET ( DEFAULT_USE_SYSTEM_STB_LIBS OFF ) 65 + SET ( DEFAULT_MF OFF ) 66 + SET ( DEFAULT_DX OFF ) 67 + SET ( DEFAULT_AVF OFF ) 68 + @@ -509,6 +513,18 @@ colorMe("USE_SYSTEM_MQTT_LIBS = " ${USE_SYSTEM_MQTT_LIBS}) 69 + option(USE_SYSTEM_FLATBUFFERS_LIBS "Use system flatbuffers libs" ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS}) 70 + colorMe("USE_SYSTEM_FLATBUFFERS_LIBS = " ${USE_SYSTEM_FLATBUFFERS_LIBS}) 71 + 72 + +option(USE_SYSTEM_SDBUS_CPP_LIBS "Use system sdbus-c++ libs" ${DEFAULT_USE_SYSTEM_SDBUS_CPP_LIBS}) 73 + +colorMe("USE_SYSTEM_SDBUS_CPP_LIBS = " ${USE_SYSTEM_SDBUS_CPP_LIBS}) 74 + + 75 + +option(USE_SYSTEM_LUNASVG_LIBS "Use system lunasvg libs" ${DEFAULT_USE_SYSTEM_LUNASVG_LIBS}) 76 + +colorMe("USE_SYSTEM_LUNASVG_LIBS = " ${USE_SYSTEM_LUNASVG_LIBS}) 77 + + 78 + +option(USE_SYSTEM_NANOPB_LIBS "Use system nanopb libs" ${DEFAULT_USE_SYSTEM_NANOPB_LIBS}) 79 + +colorMe("USE_SYSTEM_NANOPB_LIBS = " ${USE_SYSTEM_NANOPB_LIBS}) 80 + + 81 + +option(USE_SYSTEM_STB_LIBS "Use system stb libs" ${DEFAULT_USE_SYSTEM_STB_LIBS}) 82 + +colorMe("USE_SYSTEM_STB_LIBS = " ${USE_SYSTEM_STB_LIBS}) 83 + + 84 + option(USE_STATIC_QT_PLUGINS "Enable static QT plugins" ${DEFAULT_STATIC_QT_PLUGINS}) 85 + colorMe("USE_STATIC_QT_PLUGINS = " ${USE_STATIC_QT_PLUGINS}) 86 + 87 + diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt 88 + index b4d23ad..38acea2 100644 89 + --- a/external/CMakeLists.txt 90 + +++ b/external/CMakeLists.txt 91 + @@ -38,7 +38,7 @@ set_target_properties(sqlite3 PROPERTIES 92 + target_compile_definitions(sqlite3 PUBLIC 93 + SQLITE_THREADSAFE=2 94 + SQLITE_DEFAULT_MEMSTATUS=0 95 + - SQLITE_DEFAULT_SYNCHRONOUS=3 96 + + SQLITE_DEFAULT_SYNCHRONOUS=3 97 + SQLITE_OMIT_AUTHORIZATION 98 + SQLITE_OMIT_DEPRECATED 99 + ) 100 + @@ -47,23 +47,32 @@ target_compile_definitions(sqlite3 PUBLIC 101 + # Protobuf-nanopb 102 + #============================================================================= 103 + 104 + -set(PROTOBUF-NANOPB-SOURCES 105 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb.h 106 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.h 107 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.c 108 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.h 109 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.c 110 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.h 111 + - ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.c) 112 + - 113 + -add_library(protobuf-nanopb OBJECT ${PROTOBUF-NANOPB-SOURCES}) 114 + -set_target_properties(protobuf-nanopb PROPERTIES OUTPUT_NAME protobuf-nanopb) 115 + -install(TARGETS protobuf-nanopb EXPORT nanopb-targets 116 + - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 117 + +if (USE_SYSTEM_NANOPB_LIBS) 118 + + find_package(nanopb) 119 + + if (NOT nanopb_FOUND) 120 + + message(WARNING "Could NOT find nanopb system libraries. Fallback to nanopb submodule.") 121 + + endif() 122 + +endif() 123 + 124 + -target_include_directories(protobuf-nanopb INTERFACE 125 + - $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/nanopb> 126 + - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) 127 + +if (NOT USE_SYSTEM_NANOPB_LIBS OR NOT nanopb_FOUND) 128 + + set(PROTOBUF-NANOPB-SOURCES 129 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb.h 130 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.h 131 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.c 132 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.h 133 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.c 134 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.h 135 + + ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.c) 136 + + 137 + + add_library(protobuf-nanopb OBJECT ${PROTOBUF-NANOPB-SOURCES}) 138 + + set_target_properties(protobuf-nanopb PROPERTIES OUTPUT_NAME protobuf-nanopb) 139 + + install(TARGETS protobuf-nanopb EXPORT nanopb-targets 140 + + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 141 + + 142 + + target_include_directories(protobuf-nanopb INTERFACE 143 + + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/nanopb> 144 + + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) 145 + +endif() 146 + 147 + #============================================================================= 148 + # RPi ws281x 149 + @@ -75,7 +84,7 @@ if(ENABLE_WS281XPWM) 150 + string(REPLACE "configure_file(version.h.in version.h)" [=[configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h)]=] FILE_CONTENTS "${FILE_CONTENTS}") 151 + file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x/CMakeLists.txt" "${FILE_CONTENTS}") 152 + 153 + - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x) 154 + + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x) 155 + endif() 156 + 157 + #============================================================================= 158 + @@ -90,11 +99,22 @@ target_include_directories(linalg INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/linalg" 159 + # LUNASVG 160 + #============================================================================= 161 + 162 + - 163 + set(no_dev_warnings_backup "$CACHE{CMAKE_WARN_DEPRECATED}") 164 + set(CMAKE_WARN_DEPRECATED OFF CACHE INTERNAL "" FORCE) 165 + -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lunasvg) 166 + -set_target_properties(lunasvg PROPERTIES POSITION_INDEPENDENT_CODE ON) 167 + + 168 + +if (USE_SYSTEM_LUNASVG_LIBS) 169 + + find_package(lunasvg GLOBAL) 170 + + if (NOT lunasvg_FOUND) 171 + + message(WARNING "Could NOT find lunasvg system libraries. Fallback to lunasvg submodule.") 172 + + endif() 173 + +endif() 174 + + 175 + +if (NOT USE_SYSTEM_LUNASVG_LIBS OR NOT lunasvg_FOUND) 176 + + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lunasvg) 177 + + set_target_properties(lunasvg PROPERTIES POSITION_INDEPENDENT_CODE ON) 178 + + set_target_properties(plutovg PROPERTIES POSITION_INDEPENDENT_CODE ON) 179 + +endif() 180 + + 181 + set(CMAKE_WARN_DEPRECATED ${no_dev_warnings_backup} CACHE INTERNAL "" FORCE) 182 + 183 + #============================================================================= 184 + @@ -125,7 +145,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 185 + cmake_policy(PUSH) 186 + 187 + set(CMAKE_POLICY_DEFAULT_CMP0071 NEW) 188 + - set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "") 189 + + set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "") 190 + 191 + if (NOT CMAKE_CROSSCOMPILING AND USE_PRECOMPILED_HEADERS) 192 + set(FLATBUFFERS_ENABLE_PCH ON CACHE BOOL "") 193 + @@ -142,7 +162,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 194 + unset(FLATBUFFERS_FLATC_EXECUTABLE) 195 + set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "") 196 + set(FLATBUFFERS_BUILD_FLATHASH OFF CACHE BOOL "") 197 + - set(FLATBUFFERS_HOST_FLATBUFFERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/host_flatc) 198 + + set(FLATBUFFERS_HOST_FLATBUFFERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/host_flatc) 199 + file(MAKE_DIRECTORY ${FLATBUFFERS_HOST_FLATBUFFERS_DIR}) 200 + 201 + EXECUTE_PROCESS ( WORKING_DIRECTORY ${FLATBUFFERS_HOST_FLATBUFFERS_DIR} RESULT_VARIABLE EXEC_RES 202 + @@ -168,7 +188,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 203 + set(FLATBUFFERS_FLATC_EXECUTABLE "$<TARGET_FILE:flatc>") 204 + else() 205 + message( STATUS "Using host flatc compiler: ${FLATBUFFERS_FLATC_EXECUTABLE}") 206 + - endif() 207 + + endif() 208 + 209 + cmake_policy(POP) 210 + endif() 211 + @@ -177,7 +197,7 @@ set(FLATBUFFERS_FLATC_EXECUTABLE ${FLATBUFFERS_FLATC_EXECUTABLE} PARENT_SCOPE) 212 + set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIRS} PARENT_SCOPE) 213 + include_directories(${FLATBUFFERS_INCLUDE_DIRS}) 214 + 215 + -if (FLATBUFFERS_INCLUDE_DIRS AND EXISTS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json") 216 + +if (FLATBUFFERS_INCLUDE_DIRS AND EXISTS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json") 217 + file(STRINGS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json" _FLATBUFFERS_VERSION_STRING REGEX "^[ \t\r\n]+\"version\":[ \t\r\n]+\"[0-9]+.[0-9]+.[0-9]+\",") 218 + string(REGEX REPLACE "^[ \t\r\n]+\"version\":[ \t\r\n]+\"([0-9]+.[0-9]+.[0-9]+)\"," "\\1" FLATBUFFERS_PARSE_VERSION "${_FLATBUFFERS_VERSION_STRING}") 219 + message(STATUS "Using flatbuffers libraries version: \"${FLATBUFFERS_PARSE_VERSION}\"") 220 + @@ -220,7 +240,7 @@ if ( ENABLE_MQTT ) 221 + # HyperHDR workaround for fixed Qt5 version 222 + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/qmqtt/CMakeLists.txt" FILE_CONTENTS) 223 + string(REPLACE "Qt5" "Qt${Qt_VERSION}" FILE_CONTENTS "${FILE_CONTENTS}") 224 + - string(REPLACE "find_package" "#find_package" FILE_CONTENTS "${FILE_CONTENTS}") 225 + + string(REPLACE "find_package" "#find_package" FILE_CONTENTS "${FILE_CONTENTS}") 226 + file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/qmqtt/CMakeLists.txt" "${FILE_CONTENTS}") 227 + 228 + cmake_policy(PUSH) 229 + @@ -261,17 +281,41 @@ ENDIF() 230 + #============================================================================= 231 + 232 + if (UNIX AND NOT APPLE AND (ENABLE_POWER_MANAGEMENT OR ENABLE_PIPEWIRE)) 233 + - set(SDBUSCPP_BUILD_DOCS OFF CACHE BOOL "No doc") 234 + - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp) 235 + - set_target_properties(sdbus-c++-objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) 236 + + if (USE_SYSTEM_SDBUS_CPP_LIBS) 237 + + pkg_check_modules (sdbus-c++ sdbus-c++>=2.0.0) 238 + + 239 + + if(NOT sdbus-c++_FOUND) 240 + + message( WARNING "Could not find: sdbus-c++>=2.0.0. Fallback to sdbus-c++ submodule." ) 241 + + endif() 242 + + endif() 243 + + 244 + + if(NOT sdbus-c++_FOUND) 245 + + message( "Using sdbus-c++ submodule." ) 246 + + set(SDBUSCPP_BUILD_DOCS OFF CACHE BOOL "No doc") 247 + + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp) 248 + + set_target_properties(sdbus-c++-objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) 249 + + endif() 250 + endif() 251 + 252 + #============================================================================= 253 + # STB 254 + #============================================================================= 255 + 256 + -add_library(stb INTERFACE ) 257 + -target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 258 + +add_library(stb INTERFACE) 259 + + 260 + +if (USE_SYSTEM_STB_LIBS) 261 + + find_path(STB_INCLUDE_DIR stb_image.h PATH_SUFFIXES stb) 262 + + if (NOT STB_INCLUDE_DIR) 263 + + message(WARNING "Could NOT find system STB libraries. Falling back to embedded STB.") 264 + + target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 265 + + else() 266 + + message(STATUS "Found system STB libraries: ${STB_INCLUDE_DIR}") 267 + + target_include_directories(stb INTERFACE ${STB_INCLUDE_DIR}) 268 + + endif() 269 + +else() 270 + + target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 271 + +endif() 272 + + 273 + target_compile_definitions(stb INTERFACE 274 + STB_IMAGE_WRITE_IMPLEMENTATION 275 + STB_IMAGE_IMPLEMENTATION 276 + diff --git a/sources/utils-image/CMakeLists.txt b/sources/utils-image/CMakeLists.txt 277 + index b5ad570..5c9b506 100644 278 + --- a/sources/utils-image/CMakeLists.txt 279 + +++ b/sources/utils-image/CMakeLists.txt 280 + @@ -29,13 +29,13 @@ else() 281 + add_library(utils-image STATIC ${utils_image_SOURCES}) 282 + endif() 283 + 284 + -target_include_directories(utils-image PRIVATE stb lunasvg TurboJPEG::TurboJPEG) 285 + +target_include_directories(utils-image PRIVATE stb lunasvg::lunasvg TurboJPEG::TurboJPEG) 286 + 287 + target_link_libraries(utils-image PRIVATE 288 + Qt${Qt_VERSION}::Core 289 + Qt${Qt_VERSION}::Network 290 + stb 291 + - lunasvg 292 + + lunasvg::lunasvg 293 + image 294 + TurboJPEG::TurboJPEG 295 + )