cctools-binutils-darwin / bin / ranlib失败,对象格式不正确(未知加载命令)

时间:2019-03-09 19:49:08

标签: macos haskell macos-mojave binutils nix

我试图通过nix通过以下大致方式在macOS上构建gitlib-libgit2 Haskell软件包。

mkdir nix-repro && cd nix-repro
cabal2nix --no-check cabal://gitlib-libgit2 > gitlib-libgit2.nix
echo '(import <nixpkgs> {}).haskellPackages.callPackage ./gitlib-libgit2.nix {}' > default.nix
nix-build

我看到以下警告和错误:

ld: warning: /nix/store/spx9xz1jv3yhmqw8y3agki1fvdr2x2fv-libiconv-osx-10.11.6/lib/libiconv.dylib, ignoring unexpected dylib file
ld: warning: /nix/store/spx9xz1jv3yhmqw8y3agki1fvdr2x2fv-libiconv-osx-10.11.6/lib/libiconv.dylib, ignoring unexpected dylib file
/nix/store/s33984hx2gwcg2d4dgpcm4342md19qvh-cctools-binutils-darwin/bin/ranlib: object: dist/build/libHSgitlib-libgit2-3.1.2.1-1fYQZMedHRP3aXiBXJFDO2-ghc8.6.3.a(s2_meth.o) malformed object (unknown load command 1)
`ranlib' failed in phase `Ranlib'. (Exit code: 1)
builder for '/nix/store/yrran1p69pvdq1b34jqfq7dmd95j9fh9-gitlib-libgit2-3.1.2.1.drv' failed with exit code 1
error: build of '/nix/store/yrran1p69pvdq1b34jqfq7dmd95j9fh9-gitlib-libgit2-3.1.2.1.drv' failed

这是什么意思,我该如何解决?

据我所知,它只能在macOS上失败。我在nixpkgs不稳定。我可以使用其他工具来构建此程序包,因此失败必须是我用于构建它的nix工具所特有的。

$ cat $HOME/.nix-defexpr/channels/nixpkgs/.git-revision
6e5caa3f8ac48750233ef82a94825be238940825

如果您不想自己运行gitlib-libgit2.nix,请使用完整的cabal2nix表达式:

{ mkDerivation, base, bytestring, conduit, conduit-combinators
, containers, directory, exceptions, fast-logger, filepath, gitlib
, gitlib-test, hlibgit2, hspec, hspec-expectations, HUnit, mmorph
, monad-loops, mtl, resourcet, stdenv, stm, stm-conduit, tagged
, template-haskell, text, text-icu, time, transformers
, transformers-base, unliftio, unliftio-core
}:
mkDerivation {
  pname = "gitlib-libgit2";
  version = "3.1.2.1";
  sha256 = "b90e0ad2e7e0f58379e02cbe60d2900c95f0a255c34bd3461f8ee5753a6aa23e";
  libraryHaskellDepends = [
    base bytestring conduit conduit-combinators containers directory
    exceptions fast-logger filepath gitlib hlibgit2 mmorph monad-loops
    mtl resourcet stm stm-conduit tagged template-haskell text text-icu
    time transformers transformers-base unliftio unliftio-core
  ];
  testHaskellDepends = [
    base exceptions gitlib gitlib-test hspec hspec-expectations HUnit
    transformers
  ];
  doCheck = false;
  description = "Libgit2 backend for gitlib";
  license = stdenv.lib.licenses.mit;
}

0 个答案:

没有答案