diff --git a/pkgs/by-name/rp/rpi-imager/lsblkCheckFix.patch b/pkgs/by-name/rp/rpi-imager/lsblkCheckFix.patch deleted file mode 100644 index aa4fdeecfdb0..000000000000 --- a/pkgs/by-name/rp/rpi-imager/lsblkCheckFix.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 170ce7a..063a137 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -332,11 +332,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() - - configure_file( diff --git a/pkgs/by-name/rp/rpi-imager/package.nix b/pkgs/by-name/rp/rpi-imager/package.nix index 14cc7a16434f..22acbd7b304a 100644 --- a/pkgs/by-name/rp/rpi-imager/package.nix +++ b/pkgs/by-name/rp/rpi-imager/package.nix @@ -12,18 +12,20 @@ util-linux, xz, gnutls, + zstd, + libtasn1, enableTelemetry ? false, }: stdenv.mkDerivation (finalAttrs: { pname = "rpi-imager"; - version = "1.9.0"; + version = "1.9.4"; src = fetchFromGitHub { owner = "raspberrypi"; repo = "rpi-imager"; tag = "v${finalAttrs.version}"; - hash = "sha256-7rkoOKG0yMSIgQjqBBFUMgX/4szHn2NXoBR+5PnKlH4="; + hash = "sha256-Ih7FeAKTKSvuwsrMgKQ0VEUYHHT6L99shxfAIjAzErk="; }; sourceRoot = "${finalAttrs.src.name}/src"; @@ -31,12 +33,13 @@ stdenv.mkDerivation (finalAttrs: { # 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. - patches = [ ./lsblkCheckFix.patch ]; + # 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 ]; - # avoid duplicate path prefixes postPatch = '' - substituteInPlace dependencies/xz-5.6.2/CMakeLists.txt \ - --replace-fail '\''${D}/' "" + substituteInPlace ../debian/org.raspberrypi.rpi-imager.desktop \ + --replace-fail "/usr/bin/" "" ''; nativeBuildInputs = [ @@ -56,16 +59,23 @@ stdenv.mkDerivation (finalAttrs: { qt6.qttools xz gnutls + zstd + libtasn1 ] ++ lib.optionals stdenv.hostPlatform.isLinux [ qt6.qtwayland ]; - # Disable telemetry and update check. - cmakeFlags = lib.optionals (!enableTelemetry) [ - "-DENABLE_CHECK_VERSION=OFF" - "-DENABLE_TELEMETRY=OFF" - ]; + 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) + ]; passthru = { tests.version = testers.testVersion { 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 new file mode 100644 index 000000000000..b4db2c0efc91 --- /dev/null +++ b/pkgs/by-name/rp/rpi-imager/remove-vendoring-and-lsblk-check.patch @@ -0,0 +1,575 @@ +--- 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)