nh2 / static-haskell-nix

easily build most Haskell programs into fully static Linux executables
388 stars 36 forks source link

build haskell static project failed: nix-2.0.4: make: *** [mk/tests.mk:12: installcheck] Error 1 #20

Closed clojurians-org closed 5 years ago

clojurians-org commented 5 years ago

i build a simple project with the following configure on readhat7.

{ pkgs ? (import (builtins.fetchTarball {url="https://github.com/NixOS/nixpkgs/archive/88ae8f7d.tar.gz";}) {}).pkgsMusl} :

with pkgs;
let
  haskellPackages = pkgs.haskellPackages.override {
    overrides = self: super: with pkgs.haskell.lib; {
      # conduit = doJailbreak super.conduit ;
      # nix-fetch-url https://github.com/bos/criterion/releases/tag/criterion-1.5.5.0

      # minio-hs = dontCheck (doJailbreak (self.callCabal2nix "minio-hs"
      #   (pkgs.fetchFromGitHub {
      #     owner = "minio" ;
      #     repo = "minio-hs" ;
      #     rev = "v1.2.0" ;
      #     sha256 = "1ybihlmbcsl4biak4b2wbl7dz2n03mar4hvhz148mkfal9dr9agw" ;
      #   }) {})) ;
    } ;
  } ;
  pkg = haskellPackages.developPackage {
    root = ./.;

    modifier = drv: haskell.lib.overrideCabal drv (attrs: {
      buildTools = (attrs.buildTools or []) ++ [haskellPackages.cabal-install] ;

      isLibrary = false;
      isExecutable = true;
      enableSharedExecutables = false;
      enableSharedLibraries = false;
      configureFlags = [
          "--ghc-option=-optl=-static"
          "--extra-lib-dirs=${pkgs.gmp6.override { withStatic = true; }}/lib"
          "--extra-lib-dirs=${pkgs.zlib.static}/lib"
          "--disable-executable-stripping"
      ];

    }) ;
  } ;
  buildInputs = [ ] ;
in pkg.overrideAttrs(attrs: {
  buildInputs = attrs.buildInputs ++ buildInputs ;
})
[op@my-200 minio-migration]$ cat minio-migration.cabal
cabal-version:       >=1.10
-- Initial package description 'minio-migration.cabal' generated by 'cabal
-- init'.  For further documentation, see
-- http://haskell.org/cabal/users-guide/

name:                minio-migration
version:             0.1.0.0
-- synopsis:
-- description:
-- bug-reports:
license:             BSD3
license-file:        LICENSE
author:              clojurians-org
maintainer:          larluo@clojurians.org
-- copyright:
-- category:
build-type:          Simple
extra-source-files:  CHANGELOG.md
executable minio-migration
  main-is:             Main.hs
  -- other-modules:
  -- other-extensions:
  build-depends:
      base
    , data-default
    , bytestring
    , base64-bytestring
    , text
    , aeson
    , transformers
    , string-conv
    , containers
    , unordered-containers
    , time
    , retry
    , criterion-measurement
    , resourcet
    , conduit
    , conduit-extra
    , stm-chans
    , stm-conduit
    , unliftio-core
    , unliftio
--    , minio-hs
    , protolude
    , binary
    , digest
    , ini
    , memory
    , raw-strings-qq
    , case-insensitive
    , filepath
    , directory
    , http-types
    , http-client
    , http-conduit
    , xml-conduit
    , cryptonite
    , cryptonite-conduit
  hs-source-dirs:      src
  default-language:    Haskell2010
  default-extensions:
      OverloadedStrings
    , NoImplicitPrelude
    , FlexibleContexts
    , FlexibleInstances
    , MultiParamTypeClasses
    , ScopedTypeVariables
    , TypeFamilies
    , MultiWayIf

    , BangPatterns
    , TupleSections

it finally failed :

[op@my-200 minio-migration]$ nix-shell --run 'cabal new-repl'
building '/nix/store/d9iciyfgp3f8zwchck8lhnac0clmbqj0-nix-2.0.4.drv'...
unpacking sources
unpacking source archive /nix/store/jc8wmgzcfynd8dvgbbgr0jzrz65bl8sq-nix-2.0.4.tar.xz
source root is nix-2.0.4
setting SOURCE_DATE_EPOCH to timestamp 1527696660 of file nix-2.0.4/src/libexpr/parser-tab.hh
patching sources
configuring
...
...
checking for references to /tmp/nix-build-nix-2.0.4.drv-0 in /nix/store/080qimnmjr55z0z8bxii76vnw24say5j-nix-2.0.4-debug...
running install tests
installcheck flags: -j4 -l4 SHELL=/nix/store/v2hmssglxm87bxg29227zpgjnr2j98vn-bash-4.4-p23/bin/bash profiledir=\$\(out\)/etc/profile.d installcheck
  GEN    tests/common.sh
  CXX    tests/plugins/plugintest.o
  LD     tests/plugins/libplugintest.so
running test tests/init.sh... [PASS]
running test tests/hash.sh... [PASS]
...
...
running test tests/linux-sandbox.sh... [FAIL]
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + canUseSandbox
    ++ uname
    + [[ Linux != Linux ]]
    + '[' '!' -L /proc/self/ns/user ']'
    + '[' -e /proc/sys/kernel/unprivileged_userns_clone ']'
    + return 0
    + [[ ! /nix/store/v2hmssglxm87bxg29227zpgjnr2j98vn-bash-4.4-p23/bin/bash =~ /nix/store ]]
    + chmod -R u+w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    chmod: cannot access '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0': No such file or directory
    + true
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    + export NIX_STORE_DIR=/my/store
    + NIX_STORE_DIR=/my/store
    + export NIX_REMOTE=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    + NIX_REMOTE=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    ++ nix-build dependencies.nix --no-out-link --sandbox-paths /nix/store
    these derivations will be built:
      /my/store/4jhhssx544x4c2656mrz7mjfl9r4xvil-dependencies-input-1.drv
      /my/store/8jlqjyphmv2zj0lprzqpdfp2qwx9kw4f-dependencies-input-2.drv
      /my/store/fz8fi08vhpdch84djnxnyhx7zmm5j73v-dependencies.drv
    error: cloning builder process: Invalid argument
    error: unable to start build process
    + outPath=
running test tests/build-dry.sh... [PASS]
running test tests/build-remote.sh... [FAIL]
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + canUseSandbox
    ++ uname
    + [[ Linux != Linux ]]
    + '[' '!' -L /proc/self/ns/user ']'
    + '[' -e /proc/sys/kernel/unprivileged_userns_clone ']'
    + return 0
    + [[ ! /nix/store/v2hmssglxm87bxg29227zpgjnr2j98vn-bash-4.4-p23/bin/bash =~ /nix/store ]]
    + chmod -R u+w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    + chmod -R u+w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store1
    chmod: cannot access '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store1': No such file or directory
    + true
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0 /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store1
    + nix build -f build-hook.nix -o /tmp/nix-build-nix-2.0.4.drv-0/nix-test/result --max-jobs 0 --sandbox-paths /nix/store --sandbox-build-dir /build-tmp --builders '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0; /tmp/nix-build-nix-2.0
.4.drv-0/nix-test/store1 - - 1 1 foo'
    error: build of '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/2hajs0k3v5nijh8kmph90iqa3npfiycr-build-hook-input-1.drv' on '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store1' failed: unable to start build process
    builder for '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/2hajs0k3v5nijh8kmph90iqa3npfiycr-build-hook-input-1.drv' failed with exit code 1
    cannot build derivation '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/232mzfvzi288jsq5kv58fz9hxq83vw1r-build-hook.drv': 1 dependencies couldn't be built
    error: build of '/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/232mzfvzi288jsq5kv58fz9hxq83vw1r-build-hook.drv' failed
running test tests/nar-access.sh... [PASS]
running test tests/structured-attrs.sh... [PASS]
running test tests/fetchGit.sh... [SKIP]
running test tests/fetchMercurial.sh... [SKIP]
running test tests/signing.sh... [PASS]
running test tests/run.sh... [FAIL]
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + clearCache
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/binary-cache
    + nix run -f run.nix hello -c hello
    + grep 'Hello World'
    Hello World from /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/k960ndvhkk5n02yjic0j3q60vbifybkv-hello/bin/hello
    + nix run -f run.nix hello -c hello NixOS
    + grep 'Hello NixOS'
    Hello NixOS from /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/k960ndvhkk5n02yjic0j3q60vbifybkv-hello/bin/hello
    + canUseSandbox
    ++ uname
    + [[ Linux != Linux ]]
    + '[' '!' -L /proc/self/ns/user ']'
    + '[' -e /proc/sys/kernel/unprivileged_userns_clone ']'
    + return 0
    + chmod -R u+w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + mkdir /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-build-nix-2.0.4.drv-0/nix-test/var/nix/profiles
    ++ nix eval --raw -f run.nix hello
    + path=/tmp/nix-build-nix-2.0.4.drv-0/nix-test/store/k960ndvhkk5n02yjic0j3q60vbifybkv-hello
    + nix run --sandbox-build-dir /build-tmp --sandbox-paths '/nix? /bin? /lib? /lib64? /usr?' --store /tmp/nix-build-nix-2.0.4.drv-0/nix-test/store0 -f run.nix hello -c hello
    + grep 'Hello World'
    error: cloning builder process: Invalid argument
    error: unable to start build process
running test tests/brotli.sh... [PASS]
running test tests/pure-eval.sh... [PASS]
running test tests/check.sh... [PASS]
running test tests/plugins.sh... [PASS]
3 out of 51 tests failed
make: *** [mk/tests.mk:12: installcheck] Error 1
builder for '/nix/store/d9iciyfgp3f8zwchck8lhnac0clmbqj0-nix-2.0.4.drv' failed with exit code 2
cannot build derivation '/nix/store/yalvkynxqpa5lzg119as494mf615vxr9-cabal2nix-2.11.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/r7563bdlpa0w43xxdnds0lmfiiainzb7-cabal2nix-minio-migration.drv': 1 dependencies couldn't be built
error: build of '/nix/store/r7563bdlpa0w43xxdnds0lmfiiainzb7-cabal2nix-minio-migration.drv' failed
clojurians-org commented 5 years ago

it's successfuly on my nixos machine

clojurians-org commented 5 years ago

add doInstallCheck = false to fix it

{ nixpkgs ? (import <nixpkgs-static> {
              config.packageOverrides = pkgs: rec {
                nix = pkgs.nix.overrideDerivation (old: {
                  doInstallCheck = false ;
                }) ;
              } ;
            }).pkgsMusl} :