【问题标题】:Howto prevent nix-build substituting path in source file?如何防止 nix-build 替换源文件中的路径?
【发布时间】:2020-12-08 10:49:28
【问题描述】:

我正在通过 nix-build 构建一个包。在源文件 FindPackage.cmake 中,路径 /usr/lib/libicucore.dylib 是硬编码的,为了安全起见,nix-build 将自动替换为 /var/empty/lib/libicucore.dylib。但是我怎样才能防止这种替换呢?或者告诉 nix-build 将任何路径添加到保留列表中?


FindPackage.cmake中:

    # Apple builds have a unique location for ICU
    if (APPLE AND "${package}" STREQUAL "ICU")
        set(_found_package ON)

        set(ICU_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/ICU/Headers)

        # Apple just has a single dylib for ICU
        set(ICU_I18N_LIBRARY /usr/lib/libicucore.dylib)
        set(ICU_UC_LIBRARY /usr/lib/libicucore.dylib)
        set(ICU_DATA_LIBRARY /usr/lib/libicucore.dylib)

        set(ICU_LIBRARIES ${ICU_UC_LIBRARY})
        set(ICU_FOUND ON)
    endif ()

使用nix-build -K 保留构建目录,我发现/usr/lib/libicucore.dylib 被替换为/var/empty/lib/libicucore.dylib

【问题讨论】:

  • 什么是FindPackage.cmake? nix如何替换那里的文件路径?可能有助于提供更多信息。

标签: nix


【解决方案1】:

它被 nixpkgs/pkgs/development/tools/build-managers/cmake/setup-hook.sh 中的fixCmakeFiles() 取代。设置dontFixCmake = true 修复它。

【讨论】:

    猜你喜欢
    • 2017-12-15
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2015-11-02
    • 2018-02-14
    相关资源
    最近更新 更多