cctools-binutils-darwin / bin / ranlib не удалось, неправильно сформированный объект (неизвестная команда загрузки) - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь собрать пакет gitlib-libgit2 Haskell на macos через nix примерно следующим образом.

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;
}
...