From 45fcd358c88d136fd5bd3d10bf42f8fc54477d7a Mon Sep 17 00:00:00 2001 From: qzylinra Date: Wed, 27 Aug 2025 07:03:07 +0800 Subject: [PATCH] rpi-imager: 1.9.4 -> 1.9.6 --- pkgs/by-name/rp/rpi-imager/package.nix | 47 +- .../remove-vendoring-and-lsblk-check.patch | 575 ------------------ .../rp/rpi-imager/remove-vendoring.patch | 94 +++ 3 files changed, 115 insertions(+), 601 deletions(-) delete mode 100644 pkgs/by-name/rp/rpi-imager/remove-vendoring-and-lsblk-check.patch create mode 100644 pkgs/by-name/rp/rpi-imager/remove-vendoring.patch diff --git a/pkgs/by-name/rp/rpi-imager/package.nix b/pkgs/by-name/rp/rpi-imager/package.nix index 286e1b74063a..d502c1ec40f1 100644 --- a/pkgs/by-name/rp/rpi-imager/package.nix +++ b/pkgs/by-name/rp/rpi-imager/package.nix @@ -10,7 +10,7 @@ qt6, wrapGAppsHook4, testers, - util-linux, + writeShellScriptBin, xz, gnutls, zstd, @@ -20,35 +20,35 @@ stdenv.mkDerivation (finalAttrs: { pname = "rpi-imager"; - version = "1.9.4"; + version = "1.9.6"; src = fetchFromGitHub { owner = "raspberrypi"; repo = "rpi-imager"; tag = "v${finalAttrs.version}"; - hash = "sha256-Ih7FeAKTKSvuwsrMgKQ0VEUYHHT6L99shxfAIjAzErk="; + hash = "sha256-HJLl0FOseZgW3DMi8M3SqIN/UHBDkIc09vKcenhSnO8="; }; - sourceRoot = "${finalAttrs.src.name}/src"; - - # By default, the builder checks for JSON support in lsblk by running "lsblk --json", - # but that throws an error, as /sys/dev doesn't exist in the sandbox. - # This patch removes the check. - # remove-vendoring.patch from - # https://gitlab.archlinux.org/archlinux/packaging/packages/rpi-imager/-/raw/main/remove-vendoring.patch - patches = [ ./remove-vendoring-and-lsblk-check.patch ]; + patches = [ ./remove-vendoring.patch ]; postPatch = '' - substituteInPlace ../debian/org.raspberrypi.rpi-imager.desktop \ + substituteInPlace debian/org.raspberrypi.rpi-imager.desktop \ --replace-fail "/usr/bin/" "" ''; + preConfigure = '' + cd src + ''; + nativeBuildInputs = [ cmake pkg-config qt6.wrapQtAppsHook wrapGAppsHook4 - util-linux + # Fool upstream's cmake lsblk check a bit + (writeShellScriptBin "lsblk" '' + echo "our lsblk has --json support but it doesn't work in our sandbox" + '') ]; buildInputs = [ @@ -67,16 +67,11 @@ stdenv.mkDerivation (finalAttrs: { qt6.qtwayland ]; - cmakeFlags = - # Disable vendoring - [ - (lib.cmakeBool "ENABLE_VENDORING" false) - ] - # Disable telemetry and update check. - ++ lib.optionals (!enableTelemetry) [ - (lib.cmakeBool "ENABLE_CHECK_VERSION" false) - (lib.cmakeBool "ENABLE_TELEMETRY" false) - ]; + cmakeFlags = [ + # Isn't relevant for Nix + (lib.cmakeBool "ENABLE_CHECK_VERSION" false) + (lib.cmakeBool "ENABLE_TELEMETRY" enableTelemetry) + ]; qtWrapperArgs = [ "--unset QT_QPA_PLATFORMTHEME" @@ -105,8 +100,8 @@ stdenv.mkDerivation (finalAttrs: { ymarkus anthonyroussel ]; - platforms = lib.platforms.all; - # does not build on darwin - broken = stdenv.hostPlatform.isDarwin; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + # could not find xz + badPlatforms = lib.platforms.darwin; }; }) diff --git a/pkgs/by-name/rp/rpi-imager/remove-vendoring-and-lsblk-check.patch b/pkgs/by-name/rp/rpi-imager/remove-vendoring-and-lsblk-check.patch deleted file mode 100644 index b4db2c0efc91..000000000000 --- a/pkgs/by-name/rp/rpi-imager/remove-vendoring-and-lsblk-check.patch +++ /dev/null @@ -1,575 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -4,6 +4,7 @@ - cmake_minimum_required(VERSION 3.22) - OPTION (ENABLE_CHECK_VERSION "Check for version updates" ON) - OPTION (ENABLE_TELEMETRY "Enable sending telemetry" ON) -+OPTION (ENABLE_VENDORING "Use vendored dependencies" ON) - - # We use FetchContent_Populate() instead of FetchContent_MakeAvailable() to allow EXCLUDE_FROM_ALL - # This prevents the dependencies from being built by default, which is our desired behavior -@@ -58,410 +59,156 @@ if (APPLE) - endforeach() - endif(APPLE) - -+## Preferentially build the bundled code. Full vendoring is to follow in a later version. -+ - # Bundled code will occasionally use identical options - eg, BUILD_TESTING. - set(BUILD_TESTING OFF) - set(BUILD_STATIC_LIBS ON) - set(BUILD_SHARED_LIBS OFF) - --include(FetchContent) -- --# Bundled liblzma --set(LIBLZMA_VERSION "5.8.1") --FetchContent_Declare(xz -- GIT_REPOSITORY https://github.com/tukaani-project/xz.git -- GIT_TAG v${LIBLZMA_VERSION} -- ${USE_OVERRIDE_FIND_PACKAGE} --) --set(XZ_MICROLZMA_DECODER OFF CACHE BOOL "" FORCE) --set(XZ_MICROLZMA_ENCODER OFF CACHE BOOL "" FORCE) --set(XZ_LZIP_DECODER OFF CACHE BOOL "" FORCE) --set(XZ_ENABLE_SANDBOX OFF CACHE BOOL "" FORCE) --set(XZ_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) --set(XZ_ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE) --set(XZ_DECODERS -- lzma1 -- lzma2 -- delta --) --set(XZ_ENCODERS -- lzma1 -- lzma2 -- delta --) --set(CREATE_LZMA_SYMLINKS OFF CACHE BOOL "" FORCE) --set(CREATE_XZ_SYMLINKS OFF CACHE BOOL "" FORCE) --FetchContent_GetProperties(xz) --if(NOT xz_POPULATED) -- FetchContent_Populate(xz) -- add_subdirectory(${xz_SOURCE_DIR} ${xz_BINARY_DIR} EXCLUDE_FROM_ALL) --endif() --unset(XZ_MICROLZMA_DECODER) --unset(XZ_MICROLZMA_ENCODER) --unset(XZ_LZIP_DECODER) --unset(XZ_ENABLE_SANDBOX) --unset(XZ_BUILD_SHARED_LIBS) --unset(XZ_ENABLE_DOXYGEN) --unset(CREATE_LZMA_SYMLINKS) --unset(CREATE_XZ_SYMLINKS) --set(LIBLZMA_FOUND true CACHE BOOL "" FORCE) --set(LIBLZMA_INCLUDE_DIR ${xz_SOURCE_DIR}/src/liblzma/api CACHE PATH "" FORCE) --set(LIBLZMA_INCLUDE_DIRS ${xz_SOURCE_DIR}/src/liblzma/api CACHE PATH "" FORCE) --set(LIBLZMA_LIBRARY liblzma CACHE FILEPATH "" FORCE) --set(LIBLZMA_LIBRARIES ${xz_BINARY_DIR}/liblzma.a CACHE FILEPATH "" FORCE) --set(LIBLZMA_HAS_AUTO_DECODER true CACHE BOOL "" FORCE) --set(LIBLZMA_HAS_EASY_ENCODER true CACHE BOOL "" FORCE) --set(LIBLZMA_HAS_LZMA_PRESET true CACHE BOOL "" FORCE) -- --# Bundled zstd --set(ZSTD_VERSION "1.5.7") --FetchContent_Declare(zstd -- GIT_REPOSITORY https://github.com/facebook/zstd.git -- GIT_TAG v${ZSTD_VERSION} -- SOURCE_SUBDIR build/cmake -- ${USE_OVERRIDE_FIND_PACKAGE} --) --set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE) --set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE) --set(ZSTD_BUILD_STATIC ON CACHE BOOL "" FORCE) --set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE) --set(ZSTD_BUILD_DICTBUILDER OFF CACHE BOOL "" FORCE) --FetchContent_GetProperties(zstd) --if(NOT zstd_POPULATED) -- FetchContent_Populate(zstd) -- add_subdirectory(${zstd_SOURCE_DIR}/build/cmake ${zstd_BINARY_DIR} EXCLUDE_FROM_ALL) --endif() --unset(ZSTD_BUILD_PROGRAMS) --unset(ZSTD_BUILD_SHARED) --unset(ZSTD_BUILD_STATIC) --unset(ZSTD_BUILD_TESTS) --unset(ZSTD_BUILD_DICTBUILDER) --set(ZSTD_FOUND true CACHE BOOL "" FORCE) --set(Zstd_VERSION ${ZSTD_VERSION} CACHE STRING "" FORCE) --set(Zstd_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE) --set(ZSTD_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE) --set(Zstd_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE) --set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE) --set(Zstd_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE) --set(ZSTD_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE) --set(ZSTD_LIBRARY ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-build/lib/libzstd.a CACHE FILEPATH "" FORCE) -- --# Remote nghttp2 --set(NGHTTP2_VERSION "1.65.0") --FetchContent_Declare(nghttp2 -- GIT_REPOSITORY https://github.com/nghttp2/nghttp2.git -- GIT_TAG v${NGHTTP2_VERSION} -- ${USE_OVERRIDE_FIND_PACKAGE} --) --set(BUILD_EXAMPLES OFF) --set(ENABLE_LIB_ONLY ON) --set(ENABLE_FAILMALLOC OFF) --FetchContent_GetProperties(nghttp2) --if(NOT nghttp2_POPULATED) -- FetchContent_Populate(nghttp2) -- add_subdirectory(${nghttp2_SOURCE_DIR} ${nghttp2_BINARY_DIR} EXCLUDE_FROM_ALL) --endif() --unset(ENABLE_LIB_ONLY) --unset(ENABLE_FAILMALLOC) --unset(BUILD_EXAMPLES) --set(NGHTTP2_LIBRARIES nghttp2_static CACHE FILEPATH "" FORCE) --set(NGHTTP2_LIBRARY nghttp2_static CACHE FILEPATH "" FORCE) --set(NGHTTP2_INCLUDE_DIR ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE) --set(NGHTTP2_INCLUDE_DIRS ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE) --set(NGHTTP2_FOUND true CACHE BOOL "" FORCE) -- -- --# Bundled zlib --set(ZLIB_VERSION "1.4.1.1") --set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) --set(ZLIB_BUILD_SHARED OFF CACHE BOOL "" FORCE) --set(ZLIB_BUILD_STATIC ON CACHE BOOL "" FORCE) --set(ZLIB_BUILD_TESTS OFF CACHE BOOL "" FORCE) --set(SKIP_INSTALL_ALL ON CACHE BOOL "" FORCE) --FetchContent_Declare(zlib -- GIT_REPOSITORY https://github.com/madler/zlib.git -- GIT_TAG 5a82f71ed1dfc0bec044d9702463dbdf84ea3b71 # v1.4.1.1, as of 27/05/2025 -- ${USE_OVERRIDE_FIND_PACKAGE} --) --FetchContent_GetProperties(zlib) --if(NOT zlib_POPULATED) -- FetchContent_Populate(zlib) -- add_subdirectory(${zlib_SOURCE_DIR} ${zlib_BINARY_DIR} EXCLUDE_FROM_ALL) --endif() --unset(ZLIB_BUILD_EXAMPLES) --unset(ZLIB_BUILD_SHARED) --unset(ZLIB_BUILD_STATIC) --unset(ZLIB_BUILD_TESTS) --unset(SKIP_INSTALL_ALL) --# Set zlib variables that libarchive's CMake will use --set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) # This is to help FindZlib.cmake find the static library over the shared one --set(ZLIB_ROOT ${zlib_SOURCE_DIR} CACHE PATH "" FORCE) -- --# On Windows with MinGW, zlib builds with .a extension, not .lib --# Set the correct library path before find_package --if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) -- set(ZLIB_LIBRARY ${zlib_BINARY_DIR}/libzlibstatic.a CACHE FILEPATH "" FORCE) -- set(ZLIB_LIBRARIES ${zlib_BINARY_DIR}/libzlibstatic.a CACHE STRING "" FORCE) --else() -- set(ZLIB_LIBRARY ${zlib_BINARY_DIR}/libz.a CACHE FILEPATH "" FORCE) -- set(ZLIB_LIBRARIES ${zlib_BINARY_DIR}/libz.a CACHE STRING "" FORCE) --endif() -- --# Since we're building zlib ourselves with EXCLUDE_FROM_ALL, we don't need find_package --# Instead, we'll create the ZLIB::ZLIB target manually and set all required variables --set(ZLIB_INCLUDE_DIR ${zlib_SOURCE_DIR} CACHE PATH "" FORCE) --set(ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} CACHE PATH "" FORCE) -- --# Create ZLIB::ZLIB target manually since we're not using find_package --# Set zlib variables that other packages expect --set(ZLIB_FOUND TRUE CACHE BOOL "" FORCE) --add_library(ZLIB::ZLIB STATIC IMPORTED) --if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) -- set_target_properties(ZLIB::ZLIB PROPERTIES -- IMPORTED_LOCATION "${zlib_BINARY_DIR}/libzlibstatic.a" -- INTERFACE_INCLUDE_DIRECTORIES "${zlib_SOURCE_DIR};${zlib_BINARY_DIR}" -- ) -- add_dependencies(ZLIB::ZLIB zlibstatic) --else() -- set_target_properties(ZLIB::ZLIB PROPERTIES -- IMPORTED_LOCATION "${zlib_BINARY_DIR}/libz.a" -- INTERFACE_INCLUDE_DIRECTORIES "${zlib_SOURCE_DIR};${zlib_BINARY_DIR}" -+if(ENABLE_VENDORING) -+ # Bundled liblzma -+ set(XZ_MICROLZMA_DECODER OFF) -+ set(XZ_MICROLZMA_ENCODER OFF) -+ set(XZ_LZIP_DECODER OFF) -+ set(XZ_ENABLE_SANDBOX OFF) -+ set(XZ_BUILD_SHARED_LIBS OFF) -+ set(XZ_ENABLE_DOXYGEN OFF) -+ set(XZ_DECODERS -+ lzma1 -+ lzma2 -+ delta - ) -- add_dependencies(ZLIB::ZLIB zlibstatic) --endif() -- --# Debug output --message(STATUS "ZLIB_LIBRARY set to: ${ZLIB_LIBRARY}") --message(STATUS "ZLIB_LIBRARIES set to: ${ZLIB_LIBRARIES}") --message(STATUS "ZLIB_INCLUDE_DIRS set to: ${ZLIB_INCLUDE_DIRS}") -- --# Bundled libarchive -- --set(ENABLE_WERROR OFF CACHE BOOL "") --set(ENABLE_INSTALL OFF CACHE BOOL "") --set(ENABLE_TEST OFF CACHE BOOL "") --set(ENABLE_CNG OFF CACHE BOOL "") --set(ENABLE_MBEDTLS OFF CACHE BOOL "") --set(ENABLE_NETTLE OFF CACHE BOOL "") --set(ENABLE_OPENSSL OFF CACHE BOOL "") --# Configure libarchive with explicit zlib support --set(ENABLE_ZLIB ON CACHE BOOL "") --set(ENABLE_BZip2 OFF CACHE BOOL "") --set(ENABLE_LZ4 OFF CACHE BOOL "") --set(ENABLE_LZO OFF CACHE BOOL "") --set(ENABLE_LIBB2 OFF CACHE BOOL "") --set(ENABLE_LIBXML2 OFF CACHE BOOL "") --set(ENABLE_EXPAT OFF CACHE BOOL "") --set(ENABLE_PCREPOSIX OFF CACHE BOOL "") --set(ENABLE_PCRE2POSIX OFF CACHE BOOL "") --set(ENABLE_LIBGCC OFF CACHE BOOL "") --set(ENABLE_TAR OFF CACHE BOOL "") --set(ENABLE_CPIO OFF CACHE BOOL "") --set(ENABLE_CAT OFF CACHE BOOL "") --set(BUILD_SHARED_LIBS OFF CACHE BOOL "") --set(ARCHIVE_BUILD_STATIC_LIBS ON CACHE BOOL "") --set(ARCHIVE_BUILD_EXAMPLES OFF CACHE BOOL "") --set(ENABLE_ZSTD ON CACHE BOOL "") --set(POSIX_REGEX_LIB "libc" CACHE STRING "" FORCE) --set(LIBARCHIVE_VERSION "3.8.0") -- --# Create a patch script to fix ZSTD detection in libarchive --set(LIBARCHIVE_PATCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/libarchive_zstd_patch.cmake") --file(WRITE ${LIBARCHIVE_PATCH_FILE} " --# Read the original CMakeLists.txt --file(READ \"\${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\" CONTENT) -- --# Find the start and end of the ZSTD section --string(FIND \"\${CONTENT}\" \"IF(ZSTD_FOUND)\" ZSTD_START) --string(FIND \"\${CONTENT}\" \"MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\" ZSTD_END) -- --if(ZSTD_START GREATER -1 AND ZSTD_END GREATER -1) -- # Calculate positions -- math(EXPR ZSTD_END \"\${ZSTD_END} + 40\") # Length of \"MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\" -- -- # Extract parts before and after the ZSTD section -- string(SUBSTRING \"\${CONTENT}\" 0 \${ZSTD_START} BEFORE_ZSTD) -- string(SUBSTRING \"\${CONTENT}\" \${ZSTD_END} -1 AFTER_ZSTD) -- -- # Create the new ZSTD section -- set(NEW_ZSTD_SECTION \"IF(ZSTD_FOUND) -- SET(HAVE_ZSTD_H 1) -- INCLUDE_DIRECTORIES(\\\${ZSTD_INCLUDE_DIR}) -- LIST(APPEND ADDITIONAL_LIBS \\\${ZSTD_LIBRARY}) -- -- # Check if ZSTD variables were provided externally (indicating static build) -- get_property(ZSTD_LIB_IS_CACHE CACHE ZSTD_LIBRARY PROPERTY TYPE) -- get_property(ZSTD_INC_IS_CACHE CACHE ZSTD_INCLUDE_DIR PROPERTY TYPE) -- if(ZSTD_LIB_IS_CACHE AND ZSTD_INC_IS_CACHE) -- # Skip function checks for static builds and assume all functions are available -- message(STATUS \\\"Using provided ZSTD library: \\\${ZSTD_LIBRARY}\\\") -- SET(HAVE_LIBZSTD 1) -- SET(HAVE_ZSTD_compressStream 1) -- SET(HAVE_ZSTD_minCLevel 1) -- else() -- # Original function checks for dynamic builds -- CMAKE_PUSH_CHECK_STATE() -- SET(CMAKE_REQUIRED_LIBRARIES \\\${ZSTD_LIBRARY}) -- SET(CMAKE_REQUIRED_INCLUDES \\\${ZSTD_INCLUDE_DIR}) -- CHECK_FUNCTION_EXISTS(ZSTD_decompressStream HAVE_LIBZSTD) -- CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_ZSTD_compressStream) -- CHECK_FUNCTION_EXISTS(ZSTD_minCLevel HAVE_ZSTD_minCLevel) -- CMAKE_POP_CHECK_STATE() -- endif() --ENDIF(ZSTD_FOUND) --MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\") -- -- # Combine the parts -- set(NEW_CONTENT \"\${BEFORE_ZSTD}\${NEW_ZSTD_SECTION}\") -- -- # Write the modified content back -- file(WRITE \"\${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\" \"\${NEW_CONTENT}\${AFTER_ZSTD}\") -- message(STATUS \"Patched libarchive CMakeLists.txt for static ZSTD support\") --else() -- message(WARNING \"Could not find ZSTD section in libarchive CMakeLists.txt\") --endif() --") -- --FetchContent_Declare(libarchive -- GIT_REPOSITORY https://github.com/libarchive/libarchive.git -- GIT_TAG v${LIBARCHIVE_VERSION} -- PATCH_COMMAND ${CMAKE_COMMAND} -P ${LIBARCHIVE_PATCH_FILE} -- ${USE_OVERRIDE_FIND_PACKAGE} --) --FetchContent_GetProperties(libarchive) --if(NOT libarchive_POPULATED) -- FetchContent_Populate(libarchive) -- add_subdirectory(${libarchive_SOURCE_DIR} ${libarchive_BINARY_DIR} EXCLUDE_FROM_ALL) --endif() -- --# Ensure libarchive is built after zlib --if (TARGET archive_static AND TARGET ZLIB::ZLIB) -- add_dependencies(archive_static ZLIB::ZLIB) --endif() -- --unset(POSIX_REGEX_LIB) --unset(ENABLE_WERROR) --unset(ENABLE_INSTALL) --unset(ENABLE_TEST) --unset(ENABLE_CNG) --unset(ENABLE_MBEDTLS) --unset(ENABLE_NETTLE) --unset(ENABLE_OPENSSL) --unset(ENABLE_ZLIB) --unset(ENABLE_BZip2) --unset(ENABLE_LZ4) --unset(ENABLE_LZO) --unset(ENABLE_LIBB2) --unset(ENABLE_LIBXML2) --unset(ENABLE_EXPAT) --unset(ENABLE_PCREPOSIX) --unset(ENABLE_PCRE2POSIX) --unset(ENABLE_LIBGCC) --unset(ENABLE_TAR) --unset(ENABLE_CPIO) --unset(ENABLE_CAT) --unset(ARCHIVE_BUILD_SHARED_LIBS) --unset(ENABLE_ZSTD) --set(LibArchive_FOUND true CACHE BOOL "" FORCE) --set(LibArchive_LIBRARIES archive_static CACHE FILEPATH "" FORCE) --set(LibArchive_INCLUDE_DIR ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE) --set(LibArchive_INCLUDE_DIRS ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE) -- --# Bundled libcurl --set(CURL_VERSION "8.13.0") --string(REPLACE "." "_" CURL_TAG ${CURL_VERSION}) --FetchContent_Declare(curl -- GIT_REPOSITORY https://github.com/curl/curl.git -- GIT_TAG curl-${CURL_TAG} -- ${USE_OVERRIDE_FIND_PACKAGE} --) --set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE) --set(BUILD_LIBCURL_DOCS OFF CACHE BOOL "" FORCE) --set(BUILD_MISC_DOCS OFF CACHE BOOL "" FORCE) --set(ENABLE_CURL_MANUAL OFF CACHE BOOL "" FORCE) --set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) --set(CURL_USE_LIBPSL OFF CACHE BOOL "" FORCE) --set(CURL_USE_LIBSSH2 OFF CACHE BOOL "" FORCE) --set(CURL_DISABLE_ALTSVC ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_KERBEROS_AUTH ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_DICT ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_DISABLE_FORM_API ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_FTP ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_GOPHER ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_IMAP ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_MQTT ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_NETRC ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_POP3 ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_RTSP ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_SMTP ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_TELNET ON CACHE BOOL "" FORCE) --set(CURL_DISABLE_TFTP ON CACHE BOOL "" FORCE) --set(CURL_ZSTD ON) --set(CURL_ENABLE_EXPORT_TARGET OFF CACHE BOOL "" FORCE) --set(CURL_DISABLE_INSTALL ON) --if (APPLE) -- # TODO: SecureTransport is a deprecated API in macOS, supporting -- # only up to TLS v1.2. cURL has not implemented the replacement, -- # Network.framework, and so we will need to select an alternative. -- # Best recommendation: Libressl, as used by Apple in the curl binary -- # on macOS. -- set(CURL_USE_SECTRANSP ON) -- set(CURL_DEFAULT_SSL_BACKEND "secure-transport") -- set(USE_APPLE_IDN ON) --else() -- if (WIN32) -- set(CURL_USE_SCHANNEL ON) -- set(CURL_DEFAULT_SSL_BACKEND "schannel") -- else () -- set(CURL_USE_GNUTLS ON) -- set(CURL_DEFAULT_SSL_BACKEND "gnutls") -- endif(WIN32) --endif(APPLE) -- --FetchContent_GetProperties(curl) --if(NOT curl_POPULATED) -- FetchContent_Populate(curl) -- add_subdirectory(${curl_SOURCE_DIR} ${curl_BINARY_DIR} EXCLUDE_FROM_ALL) -+ set(XZ_ENCODERS "") -+ set(CREATE_LZMA_SYMLINKS OFF) -+ set(CREATE_XZ_SYMLINKS OFF) -+ add_subdirectory(dependencies/xz-5.8.1) -+ set(LIBLZMA_FOUND true) -+ set(LIBLZMA_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/xz-5.8.1/src/liblzma/api FORCE) -+ set(LIBLZMA_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/xz-5.8.1/src/liblzma/api FORCE) -+ set(LIBLZMA_LIBRARY liblzma) -+ set(LIBLZMA_LIBRARIES liblzma) -+ -+ # Bundled zstd -+ set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE) -+ set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE) -+ set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE) -+ set(ZSTD_BUILD_DICTBUILDER OFF CACHE BOOL "" FORCE) -+ add_subdirectory(dependencies/zstd-1.5.7/build/cmake) -+ set(Zstd_FOUND true) -+ set(ZSTD_FOUND true) -+ set(Zstd_VERSION "1.5.7") -+ set(ZSTD_VERSION "1.5.7") -+ set(Zstd_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib) -+ set(ZSTD_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib) -+ set(Zstd_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib) -+ set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib) -+ set(Zstd_LIBRARIES libzstd_static) -+ set(ZSTD_LIBRARIES libzstd_static) -+ set(ZSTD_LIBRARY libzstd_static) -+ -+ # Bundled zlib -+ set(ZLIB_BUILD_EXAMPLES OFF) -+ set(SKIP_INSTALL_ALL ON) -+ add_subdirectory(dependencies/zlib-1.4.1.1) -+ set(ZLIB_FOUND TRUE) -+ set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zlib-1.4.1.1 CACHE PATH "zlib include dir") -+ set(ZLIB_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zlib-1.4.1.1 CACHE PATH "zlib include dir") -+ set(ZLIB_LIBRARY zlibstatic) -+ set(ZLIB_LIBRARIES zlibstatic) -+ -+ # Bundled libarchive -+ set(ARCHIVE_ENABLE_WERROR OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_INSTALL OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_TEST OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_CNG OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_MBEDTLS OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_NETTLE OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_OPENSSL OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_BZip2 OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_LZ4 OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_LZO OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_LIBB2 OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_LIBXML2 OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_EXPAT OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_PCREPOSIX OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_PCRE2POSIX OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_LIBGCC OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_TAR OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_CPIO OFF CACHE BOOL "") -+ set(ARCHIVE_ENABLE_CAT OFF CACHE BOOL "") -+ set(ARCHIVE_BUILD_SHARED_LIBS OFF CACHE BOOL "") -+ add_subdirectory(dependencies/libarchive-3.7.7) -+ set(LibArchive_FOUND true) -+ set(LibArchive_LIBRARIES archive_static) -+ set(LibArchive_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/libarchive-3.7.8/libarchive) -+ -+ # Bundled libcurl -+ set(CMAKE_CURL_INCLUDES) -+ set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE) -+ set(BUILD_LIBCURL_DOCS OFF CACHE BOOL "" FORCE) -+ set(ENABLE_CURL_MANUAL OFF CACHE BOOL "" FORCE) -+ set(CURL_USE_LIBPSL OFF) -+ set(CURL_USE_LIBSSH2 OFF) -+ set(CURL_DISABLE_ALTSVC ON) -+ set(CURL_DISABLE_KERBEROS_AUTH ON) -+ set(CURL_DISABLE_DICT ON) -+ set(CURL_DISABLE_DISABLE_FORM_API ON) -+ set(CURL_DISABLE_FTP ON) -+ set(CURL_DISABLE_GOPHER ON) -+ set(CURL_DISABLE_IMAP ON) -+ set(CURL_DISABLE_LDAP ON) -+ set(CURL_DISABLE_LDAPS ON) -+ set(CURL_DISABLE_MQTT ON) -+ set(CURL_DISABLE_NETRC ON) -+ set(CURL_DISABLE_POP3 ON) -+ set(CURL_DISABLE_RTSP ON) -+ set(CURL_DISABLE_SMTP ON) -+ set(CURL_DISABLE_TELNET ON) -+ set(CURL_DISABLE_TFTP ON) -+ set(CURL_ZSTD ON) -+ set(CURL_ENABLE_EXPORT_TARGET OFF CACHE BOOL "" FORCE) -+ set(CURL_DISABLE_INSTALL ON) -+ if (APPLE) -+ # TODO: SecureTransport is a deprecated API in macOS, supporting -+ # only up to TLS v1.2. cURL has not implemented the replacement, -+ # Network.framework, and so we will need to select an alternative. -+ # Best recommendation: Libressl, as used by Apple in the curl binary -+ # on macOS. -+ set(CURL_USE_SECTRANSP ON) -+ set(CURL_DEFAULT_SSL_BACKEND "secure-transport") -+ set(USE_APPLE_IDN ON) -+ else() -+ if (WIN32) -+ set(CURL_USE_SCHANNEL ON) -+ set(CURL_DEFAULT_SSL_BACKEND "schannel") -+ else () -+ set(CURL_USE_GNUTLS ON) -+ set(CURL_DEFAULT_SSL_BACKEND "gnutls") -+ endif(WIN32) -+ endif(APPLE) -+ -+ add_subdirectory(dependencies/curl-8.13.0) -+ set(CURL_FOUND true) -+ set(CURL_LIBRARIES libcurl_static) -+ set(CURL_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/curl-8.13.0/include) -+ set(CURL_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/curl-8.13.0/include) -+ -+elseif (NOT ENABLE_VENDORING AND UNIX) -+ # Find the libraries that were subject to vendoring in the system instead, -+ # To keep the possibility of delivery via Linux distro packages -+ find_package(ZLIB) -+ if(ZLIB_FOUND) -+ set(EXTRALIBS ${EXTRALIBS} ZLIB::ZLIB) -+ endif() -+ find_package(LibLZMA) -+ if(LIBLZMA_FOUND) -+ set(EXTRALIBS ${EXTRALIBS} LibLZMA::LibLZMA) -+ endif() -+ find_package(CURL 8.13.0 REQUIRED) -+ find_package(LibArchive 3.7.8 REQUIRED) - endif() - --unset(BUILD_CURL_EXE) --unset(BUILD_LIBCURL_DOCS) --unset(BUILD_MISC_DOCS) --unset(ENABLE_CURL_MANUAL) --unset(BUILD_EXAMPLES) --unset(CURL_USE_LIBPSL) --unset(CURL_USE_LIBSSH2) --unset(CURL_DISABLE_ALTSVC) --unset(CURL_DISABLE_KERBEROS_AUTH) --unset(CURL_DISABLE_DICT) --unset(CURL_DISABLE_DISABLE_FORM_API) --unset(CURL_DISABLE_FTP) --unset(CURL_DISABLE_GOPHER) --unset(CURL_DISABLE_IMAP) --unset(CURL_DISABLE_LDAP) --unset(CURL_DISABLE_LDAPS) --unset(CURL_DISABLE_MQTT) --unset(CURL_DISABLE_NETRC) --unset(CURL_DISABLE_POP3) --unset(CURL_DISABLE_RTSP) --unset(CURL_DISABLE_SMTP) --unset(CURL_DISABLE_TELNET) --unset(CURL_DISABLE_TFTP) --unset(CURL_ZSTD) --unset(CURL_ENABLE_EXPORT_TARGET) --unset(CURL_DISABLE_INSTALL) --unset(CURL_USE_SECTRANSP) --unset(CURL_DEFAULT_SSL_BACKEND) --unset(USE_APPLE_IDN) --unset(CURL_USE_SCHANNEL) --unset(CURL_USE_GNUTLS) -- --set(CURL_FOUND true CACHE BOOL "" FORCE) --set(CURL_LIBRARIES libcurl_static CACHE FILEPATH "" FORCE) --set(CURL_INCLUDE_DIR ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE) --set(CURL_INCLUDE_DIRS ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE) -- - # Adding headers explicity so they are displayed in Qt Creator - set(HEADERS config.h imagewriter.h networkaccessmanagerfactory.h nan.h drivelistitem.h drivelistmodel.h drivelistmodelpollthread.h driveformatthread.h powersaveblocker.h cli.h - devicewrapper.h devicewrapperblockcacheentry.h devicewrapperpartition.h devicewrapperstructs.h devicewrapperfatpartition.h wlancredentials.h -@@ -928,11 +675,6 @@ else() - if (NOT LSBLK) - message(FATAL_ERROR "Unable to locate lsblk (used for disk enumeration)") - endif() -- -- execute_process(COMMAND "${LSBLK}" "--json" OUTPUT_QUIET RESULT_VARIABLE ret) -- if (ret EQUAL "1") -- message(FATAL_ERROR "util-linux package too old. lsblk does not support --json (used for disk enumeration)") -- endif() - endif() - - install(TARGETS ${PROJECT_NAME} DESTINATION bin) diff --git a/pkgs/by-name/rp/rpi-imager/remove-vendoring.patch b/pkgs/by-name/rp/rpi-imager/remove-vendoring.patch new file mode 100644 index 000000000000..10906221599f --- /dev/null +++ b/pkgs/by-name/rp/rpi-imager/remove-vendoring.patch @@ -0,0 +1,94 @@ +diff --git c/src/CMakeLists.txt w/src/CMakeLists.txt +index f9e020ce..c5f71914 100644 +--- c/src/CMakeLists.txt ++++ w/src/CMakeLists.txt +@@ -68,6 +68,10 @@ set(BUILD_SHARED_LIBS OFF) + + include(FetchContent) + ++find_package(LibLZMA) ++if(LIBLZMA_FOUND) ++ set(EXTRALIBS ${EXTRALIBS} LibLZMA::LibLZMA) ++else() + # Bundled liblzma + set(LIBLZMA_VERSION "5.8.1") + FetchContent_Declare(xz +@@ -114,7 +118,10 @@ set(LIBLZMA_LIBRARIES ${xz_BINARY_DIR}/liblzma.a CACHE FILEPATH "" FORCE) + set(LIBLZMA_HAS_AUTO_DECODER true CACHE BOOL "" FORCE) + set(LIBLZMA_HAS_EASY_ENCODER true CACHE BOOL "" FORCE) + set(LIBLZMA_HAS_LZMA_PRESET true CACHE BOOL "" FORCE) ++endif() + ++find_package(zstd ${ZSTD_VERSION}) ++if(NOT zstd_FOUND) + # Bundled zstd + set(ZSTD_VERSION "1.5.7") + FetchContent_Declare(zstd +@@ -147,32 +154,12 @@ set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH + set(Zstd_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE) + set(ZSTD_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE) + set(ZSTD_LIBRARY ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-build/lib/libzstd.a CACHE FILEPATH "" FORCE) +- +-# Remote nghttp2 +-set(NGHTTP2_VERSION "1.66.0") +-FetchContent_Declare(nghttp2 +- GIT_REPOSITORY https://github.com/nghttp2/nghttp2.git +- GIT_TAG v${NGHTTP2_VERSION} +- ${USE_OVERRIDE_FIND_PACKAGE} +-) +-set(BUILD_EXAMPLES OFF) +-set(ENABLE_LIB_ONLY ON) +-set(ENABLE_FAILMALLOC OFF) +-FetchContent_GetProperties(nghttp2) +-if(NOT nghttp2_POPULATED) +- FetchContent_Populate(nghttp2) +- add_subdirectory(${nghttp2_SOURCE_DIR} ${nghttp2_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() +-unset(ENABLE_LIB_ONLY) +-unset(ENABLE_FAILMALLOC) +-unset(BUILD_EXAMPLES) +-set(NGHTTP2_LIBRARIES nghttp2_static CACHE FILEPATH "" FORCE) +-set(NGHTTP2_LIBRARY nghttp2_static CACHE FILEPATH "" FORCE) +-set(NGHTTP2_INCLUDE_DIR ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE) +-set(NGHTTP2_INCLUDE_DIRS ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE) +-set(NGHTTP2_FOUND true CACHE BOOL "" FORCE) +- + ++find_package(ZLIB) ++if(ZLIB_FOUND) ++ set(EXTRALIBS ${EXTRALIBS} ZLIB::ZLIB) ++else() + # Bundled zlib + set(ZLIB_VERSION "1.4.1.1") + set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +@@ -236,7 +223,10 @@ endif() + message(STATUS "ZLIB_LIBRARY set to: ${ZLIB_LIBRARY}") + message(STATUS "ZLIB_LIBRARIES set to: ${ZLIB_LIBRARIES}") + message(STATUS "ZLIB_INCLUDE_DIRS set to: ${ZLIB_INCLUDE_DIRS}") ++endif() + ++find_package(LibArchive) ++if(NOT LibArchive_FOUND) + # Bundled libarchive + + set(ENABLE_WERROR OFF CACHE BOOL "") +@@ -368,8 +358,11 @@ set(LibArchive_FOUND true CACHE BOOL "" FORCE) + set(LibArchive_LIBRARIES archive_static CACHE FILEPATH "" FORCE) + set(LibArchive_INCLUDE_DIR ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE) + set(LibArchive_INCLUDE_DIRS ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE) ++endif() + + # Bundled libcurl ++find_package(CURL) ++if(NOT CURL_FOUND) + set(CURL_VERSION "8.14.1") + string(REPLACE "." "_" CURL_TAG ${CURL_VERSION}) + FetchContent_Declare(curl +@@ -516,6 +509,7 @@ set(CURL_FOUND true CACHE BOOL "" FORCE) + set(CURL_LIBRARIES libcurl_static CACHE FILEPATH "" FORCE) + set(CURL_INCLUDE_DIR ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE) + set(CURL_INCLUDE_DIRS ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE) ++endif() + + # Adding headers explicity so they are displayed in Qt Creator + set(HEADERS config.h imagewriter.h networkaccessmanagerfactory.h nan.h drivelistitem.h drivelistmodel.h drivelistmodelpollthread.h driveformatthread.h powersaveblocker.h cli.h