diff --git a/pkgs/by-name/al/alice-vision/cmake-disable-optimize-for-architecture.patch b/pkgs/by-name/al/alice-vision/cmake-disable-optimize-for-architecture.patch new file mode 100644 index 0000000000000..737bf0c65eafd --- /dev/null +++ b/pkgs/by-name/al/alice-vision/cmake-disable-optimize-for-architecture.patch @@ -0,0 +1,12 @@ +diff --git a/nix/store/ipz4izl82p822flysklls9bnm686ay14-source/src/CMakeLists.txt b/pkgs/applications/graphics/alice-vision/CMakeLists.txt +index 118281d65cb..85b15586452 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -178,7 +178,6 @@ endif() + set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + include(OptimizeForArchitecture) +-OptimizeForArchitecture() + set(ALICEVISION_HAVE_SSE 0) + if(SSE2_FOUND OR TARGET_ARCHITECTURE STREQUAL "native") + if(MSVC AND NOT ${CMAKE_CL_64}) diff --git a/pkgs/by-name/al/alice-vision/cmake-fix-disabled-cuda-build.patch b/pkgs/by-name/al/alice-vision/cmake-fix-disabled-cuda-build.patch new file mode 100644 index 0000000000000..96f74220471a9 --- /dev/null +++ b/pkgs/by-name/al/alice-vision/cmake-fix-disabled-cuda-build.patch @@ -0,0 +1,10 @@ +--- a/src/software/utils/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/software/utils/CMakeLists.txt 2026-03-04 13:51:53.928332074 +0100 +@@ -564,7 +564,6 @@ + aliceVision_cmdline + aliceVision_mvsData + aliceVision_mvsUtils +- aliceVision_depthMap + aliceVision_sfmData + aliceVision_sfmDataIO + Boost::program_options diff --git a/pkgs/by-name/al/alice-vision/find-coin-modules.patch b/pkgs/by-name/al/alice-vision/find-coin-modules.patch new file mode 100644 index 0000000000000..0cdcbe783711c --- /dev/null +++ b/pkgs/by-name/al/alice-vision/find-coin-modules.patch @@ -0,0 +1,115 @@ +--- a/src/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/CMakeLists.txt 2023-04-03 16:32:16.994922955 +0200 +@@ -433,6 +435,7 @@ + find_package(CoinUtils REQUIRED) + find_package(Clp REQUIRED) + find_package(Osi REQUIRED) ++ find_package(OsiClp REQUIRED) + endif() + + # ============================================================================== +--- a/src/aliceVision/linearProgramming/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/aliceVision/linearProgramming/CMakeLists.txt 2023-04-03 16:33:09.883053876 +0200 +@@ -13,6 +13,7 @@ + Coin::Clp # clp + solver wrapper + Coin::CoinUtils # container tools + Coin::Osi # generic LP ++ Coin::OsiClp + ) + + if (NOT MOSEK_FOUND) +--- /dev/null 2023-03-27 18:27:39.858686170 +0200 ++++ b/src/cmake/FindCoinUtils.cmake 2023-04-03 16:12:16.146494958 +0200 +@@ -0,0 +1,21 @@ ++find_package(PkgConfig REQUIRED) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_COINUTILS REQUIRED IMPORTED_TARGET coinutils) ++ ++ add_library(Coin::CoinUtils ALIAS PkgConfig::PC_COINUTILS) ++endif() ++ ++find_path(COINUTILS_INCLUDE_DIRS ++ NAMES CoinUtilsConfig.h ++ HINTS ${PC_COINUTILS_INCLUDE_DIRS}) ++ ++if (EXISTS "${COINUTILS_INCLUDE_DIRS}/CoinUtilsConfig.h") ++ file(STRINGS "${COINUTILS_INCLUDE_DIRS}/CoinUtilsConfig.h" coinutils_version_str REGEX "^#define[\t ]+COINUTILS_VERSION[\t ]+\".*\"") ++ string(REGEX REPLACE "^#define[\t ]+COINUTILS_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CoinUtils_VERSION "${coinutils_version_str}") ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(CoinUtils ++ REQUIRED_VARS COINUTILS_INCLUDE_DIRS ++ VERSION_VAR CoinUtils_VERSION ++ ) +--- /dev/null 2023-03-27 18:27:39.858686170 +0200 ++++ b/src/cmake/FindClp.cmake 2023-04-03 16:12:16.146494958 +0200 +@@ -0,0 +1,21 @@ ++find_package(PkgConfig REQUIRED) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_CLP REQUIRED IMPORTED_TARGET clp) ++ ++ add_library(Coin::Clp ALIAS PkgConfig::PC_CLP) ++endif() ++ ++find_path(CLP_INCLUDE_DIRS ++ NAMES ClpConfig.h ++ HINTS ${PC_CLP_INCLUDE_DIRS}) ++ ++if (EXISTS "${CLP_INCLUDE_DIRS}/ClpConfig.h") ++ file(STRINGS "${CLP_INCLUDE_DIRS}/ClpConfig.h" clp_version_str REGEX "^#define[\t ]+CLP_VERSION[\t ]+\".*\"") ++ string(REGEX REPLACE "^#define[\t ]+CLP_VERSION[\t ]+\"([^\"]*)\".*" "\\1" Clp_VERSION "${clp_version_str}") ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(Clp ++ REQUIRED_VARS CLP_INCLUDE_DIRS ++ VERSION_VAR Clp_VERSION ++ ) +--- /dev/null 2023-03-27 18:27:39.858686170 +0200 ++++ b/src/cmake/FindOsi.cmake 2023-04-03 16:12:16.147494961 +0200 +@@ -0,0 +1,22 @@ ++find_package(PkgConfig REQUIRED) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_OSI REQUIRED IMPORTED_TARGET osi) ++ ++ add_library(Coin::Osi ALIAS PkgConfig::PC_OSI) ++endif() ++ ++find_path(OSI_INCLUDE_DIRS ++ NAMES OsiConfig.h ++ HINTS ${PC_OSI_INCLUDE_DIRS}) ++ ++if (EXISTS "${OSI_INCLUDE_DIRS}/OsiConfig.h") ++ file(STRINGS "${OSI_INCLUDE_DIRS}/OsiConfig.h" osi_version_str REGEX "^#define[\t ]+OSI_VERSION[\t ]+\".*\"") ++ string(REGEX REPLACE "^#define[\t ]+OSI_VERSION[\t ]+\"([^\"]*)\".*" "\\1" Osi_VERSION "${osi_version_str}") ++endif() ++ ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(Osi ++ REQUIRED_VARS OSI_INCLUDE_DIRS ++ VERSION_VAR Osi_VERSION ++ ) +--- /dev/null 2023-03-27 18:27:39.858686170 +0200 ++++ b/src/cmake/FindOsiClp.cmake 2023-04-03 16:31:08.255752799 +0200 +@@ -0,0 +1,18 @@ ++find_package(PkgConfig REQUIRED) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_OSI_CLP REQUIRED IMPORTED_TARGET osi-clp) ++ ++ add_library(Coin::OsiClp ALIAS PkgConfig::PC_OSI_CLP) ++ ++ set(OsiClp_VERSION ${PC_OSI_CLP_VERSION}) ++endif() ++ ++find_path(OSI_CLP_INCLUDE_DIRS ++ NAMES OsiSolverInterface.hpp ++ HINTS ${PC_OSI_CLP_INCLUDE_DIRS}) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(OsiClp ++ REQUIRED_VARS OSI_CLP_INCLUDE_DIRS ++ VERSION_VAR OsiClp_VERSION ++ ) + diff --git a/pkgs/by-name/al/alice-vision/find-flann.patch b/pkgs/by-name/al/alice-vision/find-flann.patch new file mode 100644 index 0000000000000..b450a73d133b3 --- /dev/null +++ b/pkgs/by-name/al/alice-vision/find-flann.patch @@ -0,0 +1,23 @@ +--- /dev/null 2023-04-03 16:53:39.918168848 +0200 ++++ b/src/cmake/Findflann.cmake 2023-04-03 21:33:25.433754406 +0200 +@@ -0,0 +1,20 @@ ++find_package(PkgConfig REQUIRED) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_FLANN REQUIRED IMPORTED_TARGET flann) ++ pkg_check_modules(PC_LZ4 REQUIRED IMPORTED_TARGET liblz4) ++ ++ add_library(flann::flann_cpp ALIAS PkgConfig::PC_FLANN) ++ set(FLANN_LIBRARY flann::flann_cpp) ++ ++ set(FLANN_VERSION ${PC_FLANN_VERSION}) ++endif() ++ ++find_path(FLANN_INCLUDE_DIRS ++ NAMES flann/flann.hpp ++ HINTS ${PC_FLANN_INCLUDE_DIRS}) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(flann ++ REQUIRED_VARS FLANN_INCLUDE_DIRS ++ VERSION_VAR FLANN_VERSION ++ ) diff --git a/pkgs/by-name/al/alice-vision/openimageio-3-compat.patch b/pkgs/by-name/al/alice-vision/openimageio-3-compat.patch new file mode 100644 index 0000000000000..e53a8442d6b66 --- /dev/null +++ b/pkgs/by-name/al/alice-vision/openimageio-3-compat.patch @@ -0,0 +1,44 @@ +--- a/src/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/CMakeLists.txt 2026-03-04 13:28:12.598278820 +0100 +@@ -333,7 +333,7 @@ + # ============================================================================== + # OpenImageIO + # ============================================================================== +-find_package(OpenImageIO 2.0.9 REQUIRED) ++find_package(OpenImageIO 3.1.10.0 REQUIRED) + if (OPENIMAGEIO_FOUND OR OpenImageIO_FOUND) + message(STATUS "OpenImageIO found.") + else() +--- a/src/cmake/AliceVisionConfig.cmake.in 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/cmake/AliceVisionConfig.cmake.in 2026-03-05 14:24:41.082290112 +0100 +@@ -48,7 +48,7 @@ + set(Ceres_DIR @Ceres_DIR@) + find_dependency(Ceres) + +-find_dependency(OpenImageIO 2.1) ++find_dependency(OpenImageIO 3.1) + + # whether it is built with CCTags + set(ALICEVISION_HAVE_CCTAG @ALICEVISION_HAVE_CCTAG@) +--- a/src/aliceVision/image/io.cpp 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/aliceVision/image/io.cpp 2026-03-04 13:27:08.447975800 +0100 +@@ -1284,7 +1284,7 @@ + + void logOIIOImageCacheInfo() + { +- oiio::ImageCache* cache = oiio::ImageCache::create(true); ++ auto cache = oiio::ImageCache::create(true); + + int maxOpenFiles = -1; + cache->getattribute("max_open_files", maxOpenFiles); +--- a/src/software/pipeline/main_panoramaInit.cpp 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/software/pipeline/main_panoramaInit.cpp 2026-03-04 14:29:24.118244363 +0100 +@@ -91,7 +91,7 @@ + oiio::ImageBuf buf_src(spec_src, const_cast(_levels[level - 1].data())); + oiio::ImageBuf buf_dst(spec_dst, const_cast(_levels[level].data())); + +- oiio::ImageBufAlgo::resize(buf_dst, buf_src, "gaussian"); ++ oiio::ImageBufAlgo::resize(buf_dst, buf_src, { { "filtername", "gaussian" } }); + } + + return true; diff --git a/pkgs/by-name/al/alice-vision/package.nix b/pkgs/by-name/al/alice-vision/package.nix new file mode 100644 index 0000000000000..fcf6eaf472ad0 --- /dev/null +++ b/pkgs/by-name/al/alice-vision/package.nix @@ -0,0 +1,269 @@ +{ + lib, + stdenv, + fetchFromGitHub, + testers, + nix-update-script, + cmake, + pkg-config, + + assimp, + # use the same boost as in cctag here + boost186, + ceres-solver, + clp, + coin-utils, + eigen, + expat, + flann, + geogram, + lemon-graph, + libe57format, + lz4, + nanoflann, + openexr, + openimageio, + osi, + suitesparse, + zlib, + + config, + cudaSupport ? config.cudaSupport, + cudaPackages ? { }, + + enableOpenMP ? true, + # Separate openmp input only required on Darwin stdenv (LLVM) + llvmPackages, + + enableAlembic ? true, + alembic, + enableApriltag ? true, + apriltag, + # TODO: broken due to Boost issue + enableCctag ? true, + cctag, + enableMeshSDFilter ? true, + openmesh, + enableONNX ? true, + onnxruntime, + enableOpenCV ? true, + enableOpenCVContrib ? enableOpenCV, + opencv, + enableOpenGV ? true, + opengv, +}: + +assert lib.asserts.assertMsg ( + enableOpenCVContrib -> enableOpenCV +) "enableOpenCVContrib requires enableOpenCV"; + +let + effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv; + enableCuda = cudaSupport; +in +effectiveStdenv.mkDerivation (finalAttrs: { + pname = "alice-vision"; + version = "3.3.0"; + + outputs = [ + "out" + "dev" + ]; + + src = fetchFromGitHub { + owner = "alicevision"; + repo = "AliceVision"; + tag = "v${finalAttrs.version}"; + hash = "sha256-eG6cZ1sDsWE8aegnY0QY4cnbVnv0vPPTSFwMeujqLeM="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + flann + libe57format + nanoflann + openexr + + # Temporary fix until flann 1.9.2 is in Nixpkgs + lz4 + ]; + + propagatedBuildInputs = [ + assimp + boost186 + ceres-solver + clp + coin-utils + eigen + expat + geogram + lemon-graph + openimageio + osi + suitesparse + zlib + ] + ++ lib.optional enableAlembic alembic + ++ lib.optional enableApriltag apriltag + ++ lib.optional enableCctag cctag + ++ lib.optionals enableCuda ( + with cudaPackages; + [ + cuda_cudart + cuda_nvcc + ] + ) + ++ lib.optional enableONNX onnxruntime + ++ lib.optional enableOpenCV opencv + ++ lib.optional enableOpenGV opengv + ++ lib.optional enableMeshSDFilter openmesh + ++ lib.optional stdenv.cc.isClang llvmPackages.openmp; + + patches = [ + # Don't optimize for the host processor (could lead to reproducibility issues) + ./cmake-disable-optimize-for-architecture.patch + + # Upstream uses patched Clp/Osi/CoinUtils containing CMake build scripts. + # Instead of the patched versions, we re-use our packages and add CMake + # find modules that use the pkg-config files already generated by those + # dependencies. + ./find-coin-modules.patch + ./find-flann.patch + + # AliceVision expects OpenImageIO v2 + ./openimageio-3-compat.patch + + ./cmake-fix-disabled-cuda-build.patch + ]; + + cmakeFlags = + let + # alice-vision uses a tri-state bool type incompatible with lib.cmakeBool + cmakeTriBool = name: enabled: "-D${name}:BOOL=" + (if enabled then "ON" else "OFF"); + in + lib.mapAttrsToList + (name: cmakeTriBool "ALICEVISION_USE_${lib.toUpper (lib.removePrefix "enable" name)}") + { + inherit + enableAlembic + enableApriltag + enableCctag + enableCuda + enableMeshSDFilter + enableONNX + enableOpenCV + enableOpenMP + enableOpenGV + ; + + enableOpenCV_Contrib = enableOpenCVContrib; + + # Could be enabled, but does not compile as of v3.3.0 (upstream bug) + enableOcvsift = enableOpenCVContrib && false; + + # dependencies not packaged at the moment + enablePopsift = false; + enableUncertaintyTE = false; + enableUSD = false; + } + ++ lib.mapAttrsToList lib.cmakeBool { + ALICEVISION_BUILD_DEPENDENCIES = false; + + # don't build executables + ALICEVISION_BUILD_SOFTWARE = false; + + ALICEVISION_BUILD_TESTS = finalAttrs.finalPackage.doCheck; + + # CCTag package does not support alignment yet, and this must be + # consistent between both packages + AV_EIGEN_MEMORY_ALIGNMENT = !enableCctag; + + ALICEVISION_REQUIRE_CERES_WITH_SUITESPARSE = true; + }; + + postInstall = '' + mkdir -p $dev/share/aliceVision + mv $out/share/aliceVision/cmake $dev/share/aliceVision + + mkdir -p $dev/include/aliceVision + mv $out/include/aliceVision/* $dev/include/aliceVision/ + mv $out/include/aliceVision_dependencies $dev/include + rmdir $out/include/aliceVision + rmdir $out/include + ''; + + doCheck = true; + + checkPhase = + let + disabledTests = [ + # Tests that can take a long time (>30 seconds) to run + "^test_aliceVision_test_sfm_panorama_(radial3|equidistant)(_outliers)?$" + "^test_aliceVision_test_sfm_bundleAdjustment_Enhanced$" + "^test_aliceVision_test_hdr_(debevec|laguerre|grossberg)$" + "^test_aliceVision_test_voctree_kmeans$" + ] + ++ lib.optionals stdenv.isDarwin [ + # Regular timeouts + "^test_aliceVision_test_colorHarmonization_gainOffsetConstraintBuilder$" + "^test_aliceVision_test_image$" + "^test_aliceVision_test_features$" + "^test_aliceVision_test_robustEstimation_acRansac$" + + # Fails on Darwin + "^test_aliceVision_test_voctree_vocabularyTree$" + ]; + excludeRegex = lib.concatStringsSep "|" disabledTests; + exclude = "--exclude-regex ${lib.escapeShellArg excludeRegex}"; + in + '' + runHook preCheck + + ${lib.optionalString stdenv.isDarwin '' + export DYLD_LIBRARY_PATH="${lib.getLib geogram}/lib:$(pwd)" + ''} + + ctest \ + --force-new-ctest-process \ + --timeout 180 \ + ${exclude} + + runHook postCheck + ''; + + passthru = { + tests.cmake = testers.hasCmakeConfigModules { + package = finalAttrs.finalPackage; + moduleNames = [ "AliceVision" ]; + }; + updateScript = nix-update-script { }; + }; + + # recommended for CUDA packaging + __structuredAttrs = true; + strictDeps = true; + + meta = { + description = "Photogrammetric Computer Vision Framework which provides a 3D Reconstruction and Camera Tracking algorithms"; + homepage = "https://alicevision.org"; + downloadPage = "https://github.com/alicevision/AliceVision"; + + # As specified in COPYING.md + license = with lib.licenses; [ + # AliceVision itself + mpl20 + # some parts of AliceVision (from libmv) + mit + # kvld + bsd2 + ]; + + maintainers = with lib.maintainers; [ + tmarkus + ]; + }; +}) diff --git a/pkgs/by-name/li/libe57format/package.nix b/pkgs/by-name/li/libe57format/package.nix index 892083d77d6a0..be54d811b64a5 100644 --- a/pkgs/by-name/li/libe57format/package.nix +++ b/pkgs/by-name/li/libe57format/package.nix @@ -3,22 +3,27 @@ stdenv, cmake, fetchFromGitHub, - fetchpatch, + nix-update-script, xercesc, + gtest, }: stdenv.mkDerivation (finalAttrs: { pname = "libe57format"; - version = "3.2.0"; + version = "3.3.0"; src = fetchFromGitHub { owner = "asmaloney"; repo = "libE57Format"; - rev = "v${finalAttrs.version}"; - hash = "sha256-GyzfJshL2cOTEDp8eR0sqQq4GSnOdskiLi5mY1a2KW0="; - fetchSubmodules = true; # for submodule-vendored libraries such as `gtest` + tag = "v${finalAttrs.version}"; + hash = "sha256-rEX251cgb6GMToGzcZcwDzjLZBGcwN8+ij1nCIpK2ZE="; }; + postPatch = lib.optionalString finalAttrs.finalPackage.doCheck '' + rmdir test/extern/googletest + ln -s ${gtest.src} test/extern/googletest + ''; + # Repository of E57 files used for testing. libE57Format-test-data_src = fetchFromGitHub { owner = "asmaloney"; @@ -27,16 +32,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-JARpxp6Z2VioBfY0pZSyQU2mG/EllbaF3qteSFM9u8o="; }; - env.CXXFLAGS = toString [ - # GCC 13: error: 'int16_t' has not been declared in 'std' - "-include cstdint" - ]; - nativeBuildInputs = [ cmake ]; - buildInputs = [ + propagatedBuildInputs = [ xercesc ]; @@ -72,11 +72,13 @@ stdenv.mkDerivation (finalAttrs: { g++ -Wl,--no-undefined -shared -o libE57FormatShared.so -L. -Wl,-whole-archive -lE57Format -Wl,-no-whole-archive -lxerces-c mv libE57FormatShared.so libE57Format.so - if [ "$dontDisableStatic" -ne "1" ]; then + if [ "''${dontDisableStatic:-1}" -ne "1" ]; then rm libE57Format.a fi ''; + passthru.updateScript = nix-update-script { }; + meta = { description = "Library for reading & writing the E57 file format"; homepage = "https://github.com/asmaloney/libE57Format"; diff --git a/pkgs/by-name/pd/pdal/package.nix b/pkgs/by-name/pd/pdal/package.nix index e538e51979af4..88cb48468f45e 100644 --- a/pkgs/by-name/pd/pdal/package.nix +++ b/pkgs/by-name/pd/pdal/package.nix @@ -24,7 +24,6 @@ proj, sqlite, tiledb, - xercesc, zlib, zstd, }: @@ -59,7 +58,6 @@ stdenv.mkDerivation (finalAttrs: { proj sqlite tiledb - xercesc zlib zstd ]