commercialhaskell / stack

The Haskell Tool Stack
http://haskellstack.org
BSD 3-Clause "New" or "Revised" License
4k stars 843 forks source link

stack fails to build transitive dependencies from custom-setup stanza #5110

Open vmchale opened 4 years ago

vmchale commented 4 years ago

First detected: https://github.com/vmchale/libarchive/pull/3

Steps to reproduce

Run stack build in libarchive source directory.

Expected

chs-cabal dependency builds without any problems; Cabal is a transitive dependency of cha-cabal.

Actual

``` mwraith:libarchive vmchale$ stack build libarchive> configure (lib) Warning: libarchive has a setup-depends field, but it does not mention a Cabal dependency. This is likely to cause build errors. [2 of 2] Compiling StackSetupShim ( /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /Users/vmchale/dev/haskell/libarchive/.stack-work/dist/x86_64-osx/Cabal-2.4.0.1/setup/StackSetupShim.o ) /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs:3:1: error: Could not load module ‘Distribution.PackageDescription’ It is a member of the hidden package ‘Cabal-3.0.0.0’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) It is a member of the hidden package ‘Cabal-2.4.0.1’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) Use -v to see a list of the files searched for. | 3 | import Distribution.PackageDescription (PackageDescription, emptyHookedBuildInfo) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs:4:1: error: Could not load module ‘Distribution.Simple’ It is a member of the hidden package ‘Cabal-3.0.0.0’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) It is a member of the hidden package ‘Cabal-2.4.0.1’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) Use -v to see a list of the files searched for. | 4 | import Distribution.Simple | ^^^^^^^^^^^^^^^^^^^^^^^^^^ /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs:5:1: error: Could not load module ‘Distribution.Simple.Build’ It is a member of the hidden package ‘Cabal-3.0.0.0’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) It is a member of the hidden package ‘Cabal-2.4.0.1’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) Use -v to see a list of the files searched for. | 5 | import Distribution.Simple.Build | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs:6:1: error: Could not load module ‘Distribution.Simple.Setup’ It is a member of the hidden package ‘Cabal-3.0.0.0’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) It is a member of the hidden package ‘Cabal-2.4.0.1’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) Use -v to see a list of the files searched for. | 6 | import Distribution.Simple.Setup (ReplFlags, fromFlag, replDistPref, replVerbosity) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs:7:1: error: Could not load module ‘Distribution.Simple.LocalBuildInfo’ It is a member of the hidden package ‘Cabal-3.0.0.0’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) It is a member of the hidden package ‘Cabal-2.4.0.1’. You can run ‘:set -package Cabal’ to expose it. (Note: this unloads all the modules in the current scope.) Use -v to see a list of the files searched for. | 7 | import Distribution.Simple.LocalBuildInfo (LocalBuildInfo) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- While building package libarchive-2.1.0.0 using: /Users/vmchale/.stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc-8.6.5 --make -odir /Users/vmchale/dev/haskell/libarchive/.stack-work/dist/x86_64-osx/Cabal-2.4.0.1/setup -hidir /Users/vmchale/dev/haskell/libarchive/.stack-work/dist/x86_64-osx/Cabal-2.4.0.1/setup -i -i. -clear-package-db -global-package-db -package-db=/Users/vmchale/.stack/snapshots/x86_64-osx/b5d976f631ba63e81b6a75691114f0e6192e3ace90ad9892a73f9f5b5843a116/8.6.5/pkgdb -package-db=/Users/vmchale/dev/haskell/libarchive/.stack-work/install/x86_64-osx/b5d976f631ba63e81b6a75691114f0e6192e3ace90ad9892a73f9f5b5843a116/8.6.5/pkgdb -hide-all-packages -package-id=base-4.12.0.0 -package-id=chs-cabal-0.1.1.0-He2HMedaLBWD6c0QOlmZtg -optP-include -optP/Users/vmchale/dev/haskell/libarchive/.stack-work/dist/x86_64-osx/Cabal-2.4.0.1/setup/setup_macros.h /Users/vmchale/dev/haskell/libarchive/Setup.hs /Users/vmchale/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -main-is StackSetupShim.mainOverride -o /Users/vmchale/dev/haskell/libarchive/.stack-work/dist/x86_64-osx/Cabal-2.4.0.1/setup/setup -threaded Process exited with code: ExitFailure 1 ```

stack issues a warning and then fails

Stack version

``` Version 2.1.3.1 x86_64 Compiled with: - Cabal-2.4.0.1 - Glob-0.10.0 - StateVar-1.2 - aeson-1.4.6.0 - annotated-wl-pprint-0.7.0 - ansi-terminal-0.10.2 - ansi-wl-pprint-0.6.9 - array-0.5.3.0 - asn1-encoding-0.9.6 - asn1-parse-0.9.5 - asn1-types-0.3.3 - async-2.2.2 - attoparsec-0.13.2.3 - attoparsec-iso8601-1.0.1.0 - auto-update-0.1.6 - base-4.12.0.0 - base-compat-0.11.0 - base-orphans-0.8.1 - base-prelude-1.3 - base16-bytestring-0.1.1.6 - base64-bytestring-1.0.0.2 - basement-0.0.11 - bifunctors-5.5.6 - binary-0.8.6.0 - bitarray-0.0.1.1 - blaze-builder-0.4.1.0 - blaze-html-0.9.1.2 - blaze-markup-0.8.2.3 - bytestring-0.10.8.2 - case-insensitive-1.2.1.0 - cereal-0.5.8.1 - clock-0.8 - colour-2.3.5 - comonad-5.0.6 - conduit-1.3.1.1 - conduit-combinators-1.3.0 - conduit-extra-1.3.4 - connection-0.3.1 - containers-0.6.0.1 - contravariant-1.5.2 - cookie-0.4.5 - cryptohash-sha256-0.11.101.0 - cryptonite-0.26 - cryptonite-conduit-0.2.2 - data-default-class-0.1.2.0 - deepseq-1.4.4.0 - digest-0.0.1.2 - directory-1.3.3.0 - distributive-0.6.1 - dlist-0.8.0.7 - easy-file-0.2.2 - echo-0.1.3 - ed25519-0.0.5.0 - either-5.0.1.1 - exceptions-0.10.3 - extra-1.6.18 - fast-logger-3.0.0 - file-embed-0.0.11 - filelock-0.1.1.4 - filepath-1.4.2.1 - fsnotify-0.3.0.1 - generic-deriving-1.13.1 - ghc-boot-th-8.6.5 - ghc-prim-0.5.3 - githash-0.1.3.3 - hackage-security-0.5.3.0 - hashable-1.3.0.0 - hfsevents-0.1.6 - hi-file-parser-0.1.0.0 - hourglass-0.2.12 - hpack-0.33.0 - hpc-0.6.0.3 - http-api-data-0.4.1.1 - http-client-0.6.4 - http-client-tls-0.3.5.3 - http-conduit-2.3.7.3 - http-download-0.1.0.0 - http-types-0.12.3 - infer-license-0.2.0 - integer-gmp-1.0.2.0 - integer-logarithms-1.0.3 - libyaml-0.1.1.1 - lifted-base-0.2.3.12 - megaparsec-7.0.5 - memory-0.15.0 - microlens-0.4.11.2 - microlens-th-0.4.3.2 - mime-types-0.1.0.9 - mintty-0.1.2 - monad-control-1.0.2.3 - monad-logger-0.3.31 - monad-loops-0.4.3 - mono-traversable-1.0.13.0 - mtl-2.2.2 - mustache-2.3.0 - neat-interpolation-0.3.2.4 - network-3.1.1.1 - network-uri-2.6.1.0 - old-locale-1.0.0.7 - old-time-1.1.0.3 - open-browser-0.2.1.0 - optparse-applicative-0.15.1.0 - optparse-simple-0.1.1.2 - pantry-0.2.0.0 - parsec-3.1.13.0 - parser-combinators-1.2.1 - path-0.6.1 - path-io-1.6.0 - path-pieces-0.2.1 - pem-0.2.4 - persistent-2.10.4 - persistent-sqlite-2.10.5 - persistent-template-2.7.3 - pretty-1.1.3.6 - primitive-0.7.0.0 - process-1.6.5.0 - profunctors-5.5.1 - project-template-0.2.0.1 - random-1.1 - regex-applicative-0.3.3.1 - regex-applicative-text-0.1.0.1 - resource-pool-0.2.3.2 - resourcet-1.2.2 - retry-0.8.1.0 - rio-0.1.12.0 - rio-orphans-0.1.1.0 - rio-prettyprint-0.1.0.0 - rts-1.0 - safe-0.3.17 - safe-exceptions-0.1.7.0 - scientific-0.3.6.2 - semigroupoids-5.3.4 - semigroups-0.19.1 - silently-1.2.5.1 - socks-0.6.1 - split-0.2.3.3 - stm-2.5.0.0 - stm-chans-3.0.0.4 - streaming-commons-0.2.1.1 - syb-0.7.1 - tagged-0.8.6 - tar-0.5.1.1 - tar-conduit-0.3.2 - template-haskell-2.14.0.0 - temporary-1.3 - terminal-size-0.3.2.1 - text-1.2.3.1 - text-metrics-0.3.0 - th-abstraction-0.3.1.0 - th-expand-syns-0.4.5.0 - th-lift-0.8.0.1 - th-lift-instances-0.1.14 - th-orphans-0.13.9 - th-reify-many-0.1.9 - th-utilities-0.2.3.1 - time-1.8.0.2 - time-compat-1.9.2.2 - tls-1.5.2 - transformers-0.5.6.2 - transformers-base-0.4.5.2 - transformers-compat-0.6.5 - typed-process-0.2.6.0 - unicode-transforms-0.3.6 - unix-2.7.2.2 - unix-compat-0.5.2 - unix-time-0.4.7 - unliftio-0.2.12 - unliftio-core-0.1.2.0 - unordered-containers-0.2.10.0 - uuid-types-1.0.3 - vector-0.12.0.3 - vector-algorithms-0.8.0.1 - x509-1.7.5 - x509-store-1.6.7 - x509-system-1.6.6 - x509-validation-1.6.11 - yaml-0.11.2.0 - zip-archive-0.4.1 - zlib-0.6.2.1 Warning: this is an unsupported build that may use different versions of dependencies and GHC than the officially released binaries, and therefore may not behave identically. If you encounter problems, please try the latest official build by running 'stack upgrade --force-download'. ```

Method of installation

dbaynard commented 4 years ago

Hello, thanks for the bug report. What happens if you try to specify the Cabal version to >= 3.0.0.0 in the libarchive cabal file custom-setup setup-depends?

There are subtleties to overriding boot packages in extra-deps; sadly I've been unable to find the documentation about them.

I suspect that you will have better luck with a custom snapshot than using extra-deps; would you try that and give an indication of whether it helps?