Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected re-builds with a dependency on GitHub's Win32 #2960

Closed
egor-tensin opened this issue Jan 30, 2017 · 9 comments
Closed

Unexpected re-builds with a dependency on GitHub's Win32 #2960

egor-tensin opened this issue Jan 30, 2017 · 9 comments

Comments

@egor-tensin
Copy link

egor-tensin commented Jan 30, 2017

This issue is Windows-only. I'm also not sure if it's expected behaviour, so I apologize beforehand if I should've just RTFM.

I'm building a project (https://github.com/egor-tensin/windows-env) with a dependency on a specific package version from GitHub. This package (Win32) is also present on Stackage, but it is currently falling behind a bit, lacking a bugfix from the upstream, so I'm pulling the correct version from GitHub using

- location: https://github.com/haskell/win32/archive/bf54fa7134eb9b1366f827426f050d833b2cda54.zip
  extra-dep: true

This version is basically identical to Stackage's, except for the bugfix. A few of my package's dependencies also depend on Win32.

Steps to reproduce

  1. Run cabal build.
  2. The package builds successfully (along with its dependencies).
  3. Run cabal build.

Expected

No re-building.

Actual

Many of package's dependencies are re-built.

Stack version

$ stack --version
Version 1.3.2, Git revision 3f675146590da4f3edf768b89355f798229da2a5 x86_64 hpack-0.15.0

Method of installation

  • Official binary, downloaded from stackage.org or fpcomplete's package repository
@mgsloan
Copy link
Contributor

mgsloan commented Feb 1, 2017

Thanks for the report, that indeed shouldn't happen. Perhaps a windows user would like to investigate and fix?

@egor-tensin
Copy link
Author

egor-tensin commented Feb 2, 2017

The output from the second stack build (windows-env is the name of my package):

WARNING: Ignoring out of range dependency (allow-newer enabled): Win32-2.4.0.0.
directory requires: >=2.2.2 && <2.4
WARNING: Ignoring out of range dependency (allow-newer enabled): Win32-2.4.0.0.
process requires: >=2.2 && <2.4
directory-1.2.6.2: unregistering
optparse-applicative-0.12.1.0: unregistering
process-1.4.2.0: unregistering
time-1.6.0.1: unregistering
windows-env-0.1.0.0: unregistering (missing dependencies: directory, optparse-applicative)
time-1.6.0.1: configure
time-1.6.0.1: build
time-1.6.0.1: copy/register
directory-1.2.6.2: configure
directory-1.2.6.2: build
directory-1.2.6.2: copy/register
process-1.4.2.0: configure
process-1.4.2.0: build
process-1.4.2.0: copy/register
optparse-applicative-0.12.1.0: configure
optparse-applicative-0.12.1.0: build
optparse-applicative-0.12.1.0: copy/register
windows-env-0.1.0.0: build (lib + exe)
Preprocessing library windows-env-0.1.0.0...
Preprocessing executable 'addpath' for windows-env-0.1.0.0...
Linking .stack-work\dist\b7fec021\build\addpath\addpath.exe ...
Preprocessing executable 'delenv' for windows-env-0.1.0.0...
Linking .stack-work\dist\b7fec021\build\delenv\delenv.exe ...
Preprocessing executable 'delpath' for windows-env-0.1.0.0...
Linking .stack-work\dist\b7fec021\build\delpath\delpath.exe ...
Preprocessing executable 'paths' for windows-env-0.1.0.0...
Linking .stack-work\dist\b7fec021\build\paths\paths.exe ...
Preprocessing executable 'setenv' for windows-env-0.1.0.0...
Linking .stack-work\dist\b7fec021\build\setenv\setenv.exe ...
windows-env-0.1.0.0: copy/register
Installing library in
D:\workspace\personal\windows-env\.stack-work\install\03bf06dd\lib\x86_64-windows-ghc-8.0.1\windows-env-0.1.0.0-98aMgQvIAdMBhCdUoCFo3Z
Installing executable(s) in
D:\workspace\personal\windows-env\.stack-work\install\03bf06dd\bin
Registering windows-env-0.1.0.0...
Completed 5 action(s).

I should've probably mentioned that some of my dependencies disallow the fixed Win32 version (2.4.0.0) to be used because of the upper version bound, but its only difference from the previous version 2.3.1.1 is the bugfix, so I have allow-newer: true in my stack.yaml.

@egor-tensin
Copy link
Author

egor-tensin commented Mar 25, 2017

This issue can be reproduced if you checkout commit bdf50a5e75f9fad6ce9dd318f4bfcaec883514f3 (I'm not going to track whether it'll stay reproducible later).

@joeyh
Copy link

joeyh commented Oct 25, 2017

Having the same trouble with git-annex, also due to overriding the win32 location. My stack builds are taking half an hour or more due to this problem, rather than a few seconds.

I noticed that Cabal is amoung the packages stack rebuilds every time, because it depends on win32. Suspect that being a dep of Cabal might be what makes this special.

@joeyh
Copy link

joeyh commented Oct 25, 2017

And here's the resulting "incremental" build mess:

stack build -j 1 --stack-yaml stack-windows.yaml --no-haddock --dependencies-only
Cabal-1.24.2.0: unregistering
QuickCheck-2.9.2: unregistering
Win32-notify-0.3.0.3: unregistering
aeson-1.1.2.0: unregistering
aeson-compat-0.3.6: unregistering
ansi-terminal-0.6.3.1: unregistering
ansi-wl-pprint-0.6.7.3: unregistering
attoparsec-iso8601-1.0.0.0: unregistering
bifunctors-5.4.2: unregistering (missing dependencies: comonad)
cabal-doctest-1.0.2: unregistering
comonad-5.0.2: unregistering (missing dependencies: Cabal, cabal-doctest, distributive)
concurrent-output-1.9.2: unregistering
conduit-extra-1.1.17: unregistering
cookie-0.4.2.1: unregistering
crypto-api-0.13.2: unregistering (missing dependencies: entropy)
cryptonite-conduit-0.2.0: unregistering
directory-1.3.0.0: unregistering
distributive-0.5.3: unregistering (missing dependencies: Cabal, cabal-doctest)
dns-2.0.13: unregistering
easy-file-0.2.1: unregistering
edit-distance-0.2.2.1: unregistering
entropy-0.3.8: unregistering (missing dependencies: Cabal, directory, process)
fast-logger-2.4.10: unregistering
feed-0.3.12.0: unregistering
file-embed-0.0.10: unregistering
haskeline-0.7.4.0: unregistering
hjsmin-0.2.0.2: unregistering (missing dependencies: optparse-applicative)
hslogger-1.2.10: unregistering
http-api-data-0.3.7.1: unregistering
http-client-0.5.7.0: unregistering
monad-logger-0.3.25.1: unregistering
mwc-random-0.13.6.0: unregistering
optparse-applicative-0.13.2.0: unregistering
path-pieces-0.2.1: unregistering
persistent-2.7.0: unregistering
process-1.4.3.0: unregistering
random-1.1: unregistering
resource-pool-0.2.3.2: unregistering
shakespeare-2.0.14: unregistering
silently-1.2.5: unregistering
simple-sendfile-0.2.25: unregistering
skein-1.0.9.4: unregistering (missing dependencies: crypto-api)
streaming-commons-0.1.17: unregistering
tasty-0.11.3: unregistering
tasty-hunit-0.9.2: unregistering
Cannot contact windows-7-pro-x86_64: java.lang.InterruptedException
tasty-quickcheck-0.8.4: unregistering
tasty-quickcheck-0.8.4: unregistering
terminal-size-0.3.2.1: unregistering
tf-random-0.5: unregistering
time-1.6.0.1: unregistering
time-locale-compat-0.1.1.3: unregistering
unix-compat-0.4.3.1: unregistering
uuid-1.3.13: unregistering
uuid-types-1.0.3: unregistering
wai-app-static-3.1.6.1: unregistering
wai-extra-3.0.20.0: unregistering
wai-logger-2.3.0: unregistering
warp-3.2.13: unregistering
x509-store-1.6.5: unregistering
time-1.6.0.1: configure
time-1.6.0.1: build
time-1.6.0.1: copy/register
attoparsec-iso8601-1.0.0.0: configure
attoparsec-iso8601-1.0.0.0: build
attoparsec-iso8601-1.0.0.0: copy/register
cookie-0.4.2.1: configure
cookie-0.4.2.1: build
cookie-0.4.2.1: copy/register
directory-1.3.0.0: configure
directory-1.3.0.0: build
directory-1.3.0.0: copy/register
Win32-notify-0.3.0.3: configure
Win32-notify-0.3.0.3: build
Win32-notify-0.3.0.3: copy/register
easy-file-0.2.1: configure
easy-file-0.2.1: build
easy-file-0.2.1: copy/register
fast-logger-2.4.10: configure
fast-logger-2.4.10: build
fast-logger-2.4.10: copy/register
file-embed-0.0.10: configure
file-embed-0.0.10: build
file-embed-0.0.10: copy/register
mwc-random-0.13.6.0: configure
mwc-random-0.13.6.0: build
mwc-random-0.13.6.0: copy/register
path-pieces-0.2.1: configure
path-pieces-0.2.1: build
path-pieces-0.2.1: copy/register
process-1.4.3.0: configure
process-1.4.3.0: build
process-1.4.3.0: copy/register
Cabal-1.24.2.0: configure
Cabal-1.24.2.0: build
Cabal-1.24.2.0: copy/register
ansi-terminal-0.6.3.1: configure
ansi-terminal-0.6.3.1: build
ansi-terminal-0.6.3.1: copy/register
ansi-wl-pprint-0.6.7.3: configure
ansi-wl-pprint-0.6.7.3: build
ansi-wl-pprint-0.6.7.3: copy/register
cabal-doctest-1.0.2: configure
cabal-doctest-1.0.2: build
cabal-doctest-1.0.2: copy/register
distributive-0.5.3: configure
distributive-0.5.3: build
distributive-0.5.3: copy/register
comonad-5.0.2: configure
comonad-5.0.2: build
comonad-5.0.2: copy/register
bifunctors-5.4.2: configure
bifunctors-5.4.2: build
bifunctors-5.4.2: copy/register
entropy-0.3.8: configure
entropy-0.3.8: build
entropy-0.3.8: copy/register
crypto-api-0.13.2: configure
crypto-api-0.13.2: build
crypto-api-0.13.2: copy/register
haskeline-0.7.4.0: configure
haskeline-0.7.4.0: build
haskeline-0.7.4.0: copy/register
hslogger-1.2.10: configure
hslogger-1.2.10: build
hslogger-1.2.10: copy/register
optparse-applicative-0.13.2.0: configure
optparse-applicative-0.13.2.0: build
optparse-applicative-0.13.2.0: copy/register
hjsmin-0.2.0.2: configure
hjsmin-0.2.0.2: build
hjsmin-0.2.0.2: copy/register
profunctors-5.2.1: configure
profunctors-5.2.1: build
profunctors-5.2.1: copy/register
random-1.1: configure
random-1.1: build
random-1.1: copy/register
edit-distance-0.2.2.1: configure
edit-distance-0.2.2.1: build
edit-distance-0.2.2.1: copy/register
resource-pool-0.2.3.2: configure
resource-pool-0.2.3.2: build
resource-pool-0.2.3.2: copy/register
semigroupoids-5.2.1: configure
semigroupoids-5.2.1: build
semigroupoids-5.2.1: copy/register
free-4.12.4: configure
free-4.12.4: build
free-4.12.4: copy/register
adjunctions-4.3: configure
adjunctions-4.3: build
adjunctions-4.3: copy/register
kan-extensions-5.0.2: configure
kan-extensions-5.0.2: build
kan-extensions-5.0.2: copy/register
lens-4.15.4: configure
lens-4.15.4: build
lens-4.15.4: copy/register
reducers-3.12.2: configure
reducers-3.12.2: build
reducers-3.12.2: copy/register
silently-1.2.5: configure
silently-1.2.5: build
silently-1.2.5: copy/register
skein-1.0.9.4: configure
skein-1.0.9.4: build
skein-1.0.9.4: copy/register
clientsession-0.9.1.2: configure
clientsession-0.9.1.2: build
clientsession-0.9.1.2: copy/register
streaming-commons-0.1.17: configure
streaming-commons-0.1.17: build
streaming-commons-0.1.17: copy/register
conduit-extra-1.1.17: configure
conduit-extra-1.1.17: build
conduit-extra-1.1.17: copy/register
cryptonite-conduit-0.2.0: configure
cryptonite-conduit-0.2.0: build
cryptonite-conduit-0.2.0: copy/register
dns-2.0.13: configure
dns-2.0.13: build
dns-2.0.13: copy/register
http-client-0.5.7.0: configure
http-client-0.5.7.0: build
http-client-0.5.7.0: copy/register
monad-logger-0.3.25.1: configure
monad-logger-0.3.25.1: build
monad-logger-0.3.25.1: copy/register
simple-sendfile-0.2.25: configure
simple-sendfile-0.2.25: build
simple-sendfile-0.2.25: copy/register
tasty-0.11.3: configure
tasty-0.11.3: build
tasty-0.11.3: copy/register
tasty-hunit-0.9.2: configure
tasty-hunit-0.9.2: build
tasty-hunit-0.9.2: copy/register
tasty-rerun-1.1.7: configure
tasty-rerun-1.1.7: build
tasty-rerun-1.1.7: copy/register
terminal-size-0.3.2.1: configure
terminal-size-0.3.2.1: build
terminal-size-0.3.2.1: copy/register
concurrent-output-1.9.2: configure
concurrent-output-1.9.2: build
concurrent-output-1.9.2: copy/register
tf-random-0.5: configure
tf-random-0.5: build
tf-random-0.5: copy/register
QuickCheck-2.9.2: configure
QuickCheck-2.9.2: build
QuickCheck-2.9.2: copy/register
tasty-quickcheck-0.8.4: configure
tasty-quickcheck-0.8.4: build
tasty-quickcheck-0.8.4: copy/register
time-locale-compat-0.1.1.3: configure
time-locale-compat-0.1.1.3: build
time-locale-compat-0.1.1.3: copy/register
feed-0.3.12.0: configure
feed-0.3.12.0: build
feed-0.3.12.0: copy/register
unix-compat-0.4.3.1: configure
unix-compat-0.4.3.1: build
unix-compat-0.4.3.1: copy/register
uuid-types-1.0.3: configure
uuid-types-1.0.3: build
uuid-types-1.0.3: copy/register
aeson-1.1.2.0: configure
aeson-1.1.2.0: build
aeson-1.1.2.0: copy/register
aeson-compat-0.3.6: configure
aeson-compat-0.3.6: build
aeson-compat-0.3.6: copy/register
http-api-data-0.3.7.1: configure
http-api-data-0.3.7.1: build
http-api-data-0.3.7.1: copy/register
persistent-2.7.0: configure
persistent-2.7.0: build
persistent-2.7.0: copy/register
esqueleto-2.5.3: configure
esqueleto-2.5.3: build
esqueleto-2.5.3: copy/register
persistent-sqlite-2.6.2: configure
persistent-sqlite-2.6.2: build
persistent-sqlite-2.6.2: copy/register
persistent-template-2.5.3: configure
persistent-template-2.5.3: build
persistent-template-2.5.3: copy/register
shakespeare-2.0.14: configure
shakespeare-2.0.14: build
shakespeare-2.0.14: copy/register
uuid-1.3.13: configure
uuid-1.3.13: build
uuid-1.3.13: copy/register
wai-logger-2.3.0: configure
wai-logger-2.3.0: build
wai-logger-2.3.0: copy/register
wai-extra-3.0.20.0: configure
wai-extra-3.0.20.0: build
wai-extra-3.0.20.0: copy/register
warp-3.2.13: configure
warp-3.2.13: build
warp-3.2.13: copy/register
wai-app-static-3.1.6.1: configure
wai-app-static-3.1.6.1: build
wai-app-static-3.1.6.1: copy/register
x509-store-1.6.5: configure
x509-store-1.6.5: build
x509-store-1.6.5: copy/register
x509-system-1.6.6: configure
x509-system-1.6.6: build
x509-system-1.6.6: copy/register
x509-validation-1.6.9: configure
x509-validation-1.6.9: build
x509-validation-1.6.9: copy/register
tls-1.3.11: configure
tls-1.3.11: build
tls-1.3.11: copy/register
connection-0.2.8: configure
connection-0.2.8: build
connection-0.2.8: copy/register
http-client-tls-0.3.5.1: configure
http-client-tls-0.3.5.1: build
http-client-tls-0.3.5.1: copy/register
http-conduit-2.2.3.2: configure
http-conduit-2.2.3.2: build
http-conduit-2.2.3.2: copy/register
tls-session-manager-0.0.0.1: configure
tls-session-manager-0.0.0.1: build
tls-session-manager-0.0.0.1: copy/register
warp-tls-3.2.4: configure
warp-tls-3.2.4: build
warp-tls-3.2.4: copy/register
xml-conduit-1.5.1: configure
xml-conduit-1.5.1: build
xml-conduit-1.5.1: copy/register
aws-0.17.1: configure
aws-0.17.1: build
aws-0.17.1: copy/register
xml-hamlet-0.4.1.1: configure
xml-hamlet-0.4.1.1: build
xml-hamlet-0.4.1.1: copy/register
DAV-1.3.1: configure
DAV-1.3.1: build
DAV-1.3.1: copy/register
yaml-0.8.23.3: configure
yaml-0.8.23.3: build
yaml-0.8.23.3: copy/register
yesod-core-1.4.37: configure
yesod-core-1.4.37: build
yesod-core-1.4.37: copy/register
yesod-default-1.2.0: configure
yesod-default-1.2.0: build
yesod-default-1.2.0: copy/register
yesod-persistent-1.4.2: configure
yesod-persistent-1.4.2: build
yesod-persistent-1.4.2: copy/register
yesod-form-1.4.16: configure
yesod-form-1.4.16: build
yesod-form-1.4.16: copy/register
yesod-1.4.5: configure
yesod-1.4.5: build
yesod-1.4.5: copy/register
yesod-static-1.5.3.1: configure
yesod-static-1.5.3.1: build
yesod-static-1.5.3.1: copy/register
Completed 89 action(s).

@mgsloan
Copy link
Contributor

mgsloan commented Oct 25, 2017

@joeyh Which version of stack is that with? Can you please try with the master version of stack stack upgrade --git? Hopefully it is already fixed.

If this is an issue for development, not CI, then it is often helpful to use stack ghci for quick :reload + :main iterations.

@zyv
Copy link

zyv commented Oct 26, 2017

This is stack 1.5.1 for Windows (32 bit), and the issue is exactly with CI builds.

@joeyh
Copy link

joeyh commented Oct 26, 2017 via email

@mgsloan
Copy link
Contributor

mgsloan commented Oct 26, 2017

@joeyh Woohoo!

So I think this is likely solved, and 1.6 will be out soon. Anyone that runs into this with 1.6 should open a new issue about it.

@mgsloan mgsloan closed this as completed Oct 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants