[GHC] #15794: shell.nix depends on build artifacts

#15794: shell.nix depends on build artifacts -------------------------------------+------------------------------------- Reporter: int-index | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Build System | Version: 8.6.1 (Hadrian) | Keywords: | Operating System: Linux Architecture: | Type of failure: Building GHC Unknown/Multiple | failed Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Filed Mar 19, 2018, as https://github.com/snowleopard/hadrian/issues/532 **Steps to reproduce:** 1. `git clone --recursive git://git.haskell.org/ghc.git` 2. `cd ghc/hadrian` 3. `nix-shell --pure` **Expected result:** Successful build. **Actual result:** {{{ hadrian(master)$ nix-shell --pure these derivations will be built: /nix/store/lmpgkvswlkcgpcjdilbyh202vm8a5i5r-directory-1.3.1.5.drv /nix/store/rcg0mmq0bincjfjnzbabc8fq7307bylq-process-1.6.3.0.drv /nix/store/15alkpni823gkfp63c79962v032wxvjs-extra-1.6.4.drv /nix/store/1b54g6nv8rw0kq3i5xjpcbhy88jvdnbr-xml-1.3.14.drv /nix/store/89salv051l8yr2y2k52pzkqraw9lfib9-test-framework-0.8.1.1.drv /nix/store/iqq0xsvgf3hf551b3jj0x3lg661c5y4f-test-framework- hunit-0.3.0.2.drv /nix/store/cy7ynm7r9jb41kxb1gxbwdprhvl03ivk-parsec-3.1.13.0.drv /nix/store/rgnsvxfvmbhrkniy0c86v65jgvx8nsan-test-framework- quickcheck2-0.3.0.4.drv /nix/store/fyrj002axd2skdz370hi13fq6prjh5cz-network-uri-2.6.1.0.drv /nix/store/7qcfy5gy9sjcz7cijqghgj3cilm2pzps-HTTP-4000.3.8.drv /nix/store/gk0w3grh2hz008sp6ksy669zvl6pyznb-js-flot-0.8.3.drv /nix/store/h39chz7m8zvawlrzfjsz496vl2rbp921-hashable-1.2.6.1.drv /nix/store/zpv0xi25jq6p5kkpvbc11sq73dxi2g0a-unordered- containers-0.2.8.0.drv /nix/store/i7p5c3mv9p20z7kb2mrdlpx0fwmyz3f5-shake-0.16.2.drv /nix/store/pzfcvib6sbsaascsc7djzcfqzlw847gc-Cabal-2.3.0.0.drv /nix/store/j5w4i42pgfy03s7fjsj4dfkis26c3nnp-happy-1.19.8.drv /nix/store/pl2dxjvbqs36rh80q5i09zdhbh6hjl2r-alex-3.2.3.drv /nix/store/dck8p81zlij9qksglaw8hkp11msrm426-hadrian-0.1.0.0.drv building '/nix/store/lmpgkvswlkcgpcjdilbyh202vm8a5i5r- directory-1.3.1.5.drv'... building '/nix/store/1b54g6nv8rw0kq3i5xjpcbhy88jvdnbr-xml-1.3.14.drv'... setupCompilerEnvironmentPhase Build with /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2. setupCompilerEnvironmentPhase Build with /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2. unpacking sources unpacking source archive /nix/store/khjm3agcb1y91925r78h3chaq56w9fi7 -6wsbrbb60dzbfqf62c6sskwcijc3arjj-directory unpacking sources unpacking source archive /nix/store/dnx7hpl7wz81r3av4l09pqqhdqi4qpg6-xml-1.3.14.tar.gz source root is xml-1.3.14 source root is 6wsbrbb60dzbfqf62c6sskwcijc3arjj-directory setting SOURCE_DATE_EPOCH to timestamp 1424727750 of file xml-1.3.14/xml.cabal patching sources patching sources compileBuildDriverPhase compileBuildDriverPhase setupCompileFlags: -package-db=/tmp/nix-build- xml-1.3.14.drv-0/package.conf.d -j1 -threaded setupCompileFlags: -package-db=/tmp/nix-build- directory-1.3.1.5.drv-0/package.conf.d -j1 -threaded [1 of 1] Compiling Main ( Setup.hs, /tmp/nix-build- directory-1.3.1.5.drv-0/Main.o ) [1 of 1] Compiling Main ( Setup.hs, /tmp/nix-build- xml-1.3.14.drv-0/Main.o ) Linking Setup ... Linking Setup ... configuring configureFlags: --verbose --prefix=/nix/store /v3yazy78gy6kkpvrcn3schm8lc8y5dgl-xml-1.3.14 --libdir=$prefix/lib/$compiler --libsubdir=$pkgid --docdir=/nix/store /zdzgar7mwysym9dbai87fann20pbw75n-xml-1.3.14-doc/share/doc --with-gcc=gcc --package-db=/tmp/nix-build-xml-1.3.14.drv-0/package.conf.d --ghc- option=-optl=-Wl,-rpath=/nix/store/v3yazy78gy6kkpvrcn3schm8lc8y5dgl- xml-1.3.14/lib/ghc-8.2.2/xml-1.3.14 --ghc-option=-j1 --disable-split-objs --disable-library-profiling --disable-profiling --enable-shared --disable- coverage --enable-library-vanilla --enable-executable-dynamic --enable- tests --ghc-option=-split-sections configuring configureFlags: --verbose --prefix=/nix/store /59r1c7sfgph9j2xxsc1k3j6dwkm32ybk-directory-1.3.1.5 --libdir=$prefix/lib/$compiler --libsubdir=$pkgid --docdir=/nix/store /w0gkzrf5q6ng40vzyvdl5m8pvw9v9dxy-directory-1.3.1.5-doc/share/doc --with- gcc=gcc --package-db=/tmp/nix-build-directory-1.3.1.5.drv-0/package.conf.d --ghc-option=-optl=-Wl,-rpath=/nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk- directory-1.3.1.5/lib/ghc-8.2.2/directory-1.3.1.5 --ghc-option=-j1 --disable-split-objs --disable-library-profiling --disable-profiling --enable-shared --disable-coverage --enable-library-vanilla --enable- executable-dynamic --enable-tests --ghc-option=-split-sections Configuring directory-1.3.1.5... Warning: The 'build-type' is 'Configure' but there is no 'configure' script. You probably need to run 'autoreconf -i' to generate it. Configuring xml-1.3.14... Dependency base >=3 && <5: using base-4.10.1.0 Dependency bytestring -any: using bytestring-0.10.8.2 Dependency text -any: using text-1.2.3.0 Dependency base >=4.5 && <4.12: using base-4.10.1.0 Dependency directory -any: using directory-1.3.1.5 Dependency filepath >=1.3 && <1.5: using filepath-1.4.2 Dependency time >=1.4 && <1.9: using time-1.8.0.2 Dependency unix >=2.5.1 && <2.8: using unix-2.7.2.2 Source component graph: component lib component test:test dependency lib Configured component graph: component directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK include base-4.10.1.0 include time-1.8.0.2 include filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx include unix-2.7.2.2 component directory-1.3.1.5-8aJ3UecsjNUIxs4bq1vU8T-test include base-4.10.1.0 include directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK include filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx include time-1.8.0.2 include unix-2.7.2.2 Linked component graph: unit directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK include base-4.10.1.0 include time-1.8.0.2 include filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx include unix-2.7.2.2 System.Directory=directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK:System.Directory,System.Directory.Internal=directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK:System.Directory.Internal,System.Directory.Internal.Prelude=directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK:System.Directory.Internal.Prelude unit directory-1.3.1.5-8aJ3UecsjNUIxs4bq1vU8T-test include base-4.10.1.0 include directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK include filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx include time-1.8.0.2 include unix-2.7.2.2 Ready component graph: definite directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK depends base-4.10.1.0 depends time-1.8.0.2 depends filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx depends unix-2.7.2.2 definite directory-1.3.1.5-8aJ3UecsjNUIxs4bq1vU8T-test depends base-4.10.1.0 depends directory-1.3.1.5-EFdDcGoPsV2JQnFPz1QOGK depends filepath-1.4.2-DyDAQ5oOwBVDvLxMoNLDxx depends time-1.8.0.2 depends unix-2.7.2.2 Using Cabal-2.0.1.0 compiled by ghc-8.2 Using compiler: ghc-8.2.2 Using install prefix: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk-directory-1.3.1.5 Executables installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk-directory-1.3.1.5/bin Libraries installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk- directory-1.3.1.5/lib/ghc-8.2.2/directory-1.3.1.5 Dynamic Libraries installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk- directory-1.3.1.5/lib/ghc-8.2.2/x86_64-linux-ghc-8.2.2 Private executables installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk- directory-1.3.1.5/libexec/x86_64-linux-ghc-8.2.2/directory-1.3.1.5 Data files installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk-directory-1.3.1.5/share/x86_64 -linux-ghc-8.2.2/directory-1.3.1.5 Documentation installed in: /nix/store/w0gkzrf5q6ng40vzyvdl5m8pvw9v9dxy- directory-1.3.1.5-doc/share/doc Configuration files installed in: /nix/store/59r1c7sfgph9j2xxsc1k3j6dwkm32ybk-directory-1.3.1.5/etc No alex found Using ar found on system at: /nix/store/aplvnhqdm6s9wj9r0jh46r46wvh65j86-binutils-2.28.1/bin/ar No c2hs found No cpphs found No doctest found Using gcc version 6.4.0 given by user at: /nix/store/wriy1xis74fybcg3m1jnq5bd5myxvhm6-gcc-wrapper-6.4.0/bin/gcc Using ghc version 8.2.2 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/ghc Using ghc-pkg version 8.2.2 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/ghc-pkg No ghcjs found No ghcjs-pkg found No greencard found Using haddock version 2.18.1 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/haddock No happy found Using haskell-suite found on system at: haskell-suite-dummy-location Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy- location No hmake found Using hpc version 0.67 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/hpc Using hsc2hs version 0.68.2 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/hsc2hs Using hscolour version 1.24 found on system at: /nix/store/yf0bs1q9ph388jms8xlgcd5vh99amjm4-hscolour-1.24.2/bin/HsColour No jhc found Using ld found on system at: /nix/store/wriy1xis74fybcg3m1jnq5bd5myxvhm6-gcc-wrapper-6.4.0/bin/ld No lhc found No lhc-pkg found No pkg-config found Using runghc version 8.2.2 found on system at: /nix/store/d57p5gzyld7b3y4irzv70bfa3d8xxwgx-ghc-8.2.2/bin/runghc Using strip version 2.28 found on system at: /nix/store/aplvnhqdm6s9wj9r0jh46r46wvh65j86-binutils-2.28.1/bin/strip Using tar found on system at: /nix/store/vvq16kzwgx9yhkf0fwwms5xzgg0rwdpl-gnutar-1.29/bin/tar No uhc found Setup: configure script not found. builder for '/nix/store/lmpgkvswlkcgpcjdilbyh202vm8a5i5r- directory-1.3.1.5.drv' failed with exit code 1 cannot build derivation '/nix/store/dck8p81zlij9qksglaw8hkp11msrm426-hadrian-0.1.0.0.drv': 1 dependencies couldn't be built error: build of '/nix/store/dck8p81zlij9qksglaw8hkp11msrm426-hadrian-0.1.0.0.drv' failed }}} Notice that the build fails for a library shipped with GHC. In `shell.nix` it's included as `localPackage`. **Workaround** First, we need to run `configurePhase` of the default Nix derivation for GHC HEAD: 1. `cd ghc` 2. `nix-shell '<nixpkgs>' -A haskell.compiler.ghcHEAD` 3. `configurePhase` 4. `exit` Now we can `cd` into `ghc/hadrian` and proceed normally, the build won't fail. The issue is that this step shouldn't be required, we must have a self- contained `shell.nix`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15794 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#15794: shell.nix depends on build artifacts -------------------------------------+------------------------------------- Reporter: int-index | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Build System | Version: 8.6.1 (Hadrian) | Resolution: | Keywords: Operating System: Linux | Architecture: Type of failure: Building GHC | Unknown/Multiple failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): For what it's worth, I use generally use Alp's [[https://github.com/alpmestan/ghc.nix|ghc.nix]] to build GHC under NixOS. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15794#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#15794: shell.nix depends on build artifacts -------------------------------------+------------------------------------- Reporter: int-index | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Build System | Version: 8.6.1 (Hadrian) | Resolution: | Keywords: Operating System: Linux | Architecture: Type of failure: Building GHC | Unknown/Multiple failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by int-index): [comment:1 bgamari], so do I – however, I expect the `shell.nix` shipped with GHC to work properly if it exists at all. Besides, `ghc.nix` requires the same preparations, manually running `./boot && ./configure`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15794#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#15794: shell.nix depends on build artifacts
-------------------------------------+-------------------------------------
Reporter: int-index | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Build System | Version: 8.6.1
(Hadrian) |
Resolution: | Keywords:
Operating System: Linux | Architecture:
Type of failure: Building GHC | Unknown/Multiple
failed | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ben Gamari

#15794: shell.nix depends on build artifacts -------------------------------------+------------------------------------- Reporter: int-index | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Build System | Version: 8.6.1 (Hadrian) | Resolution: fixed | Keywords: Operating System: Linux | Architecture: Type of failure: Building GHC | Unknown/Multiple failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: new => closed * resolution: => fixed Comment: It has been removed. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15794#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC