You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(Could well be "due to GHC" or "due to Cabal" but hey it's stack I'm using as "my build tool" here ;)
A probably not entirely uncommon scenario: a package project ~/hsdev/mycorelib and an executable project ~/hsdev/myapp. The later imports/includes from the former via build-depends in .cabalplus also via
packages:
- '.'
- '../mycorelib'
I make a change in mycorelib, then do a stack install in myapp and voila! All gets completely rebuilt as expected, first mycorelib then all modules in myapp as the log shows (very well as they do all import a module from mycorelib).
Now. Other times --- even more often in practice --- I just make a change in mycorelib and rebuild directly in there (ie. via editor build command to do stack build just as a check for errors). If I thendirectly do another stack install (aka. stack build --copy-bins) in myapp it just does the well-known no-op (just copies the existing executable) even though in the developer's view the dep sources have clearly totally changed and the binary isn't up-to-date.
In the heat of the moment and especially in "multi-multi-multi-package project" , this kind of behavior is easy to miss and tricky to remember ("oooh I accidentally already built my changes in my one core/shared/common/utils library, better go my half-dozen intermediate libraries rebuilding them so the actual current project picks that up too..") --- currently one would end up having to go through all such packages rebuilding them whenever this particular failure-to-auto-propagage-changes materializes.
Unless I'm missing something? Seems like an "intuitively easy feature-turned-bug", as in "it checks the mylibcore is up to date (well its build outputs are, alright), then it checks the myapp is up to date, ah well nothing to do" --- except with mylibcore binaries / objects newer than myapp binaries / outputs, that's certainly not the case.
Or was I supposed to manually increment the mylibcore version number all the time as I'm aiming to get into the flow of heavy fast-paced iteration? ;)
The text was updated successfully, but these errors were encountered:
v1.3.2 Win64 build
(Could well be "due to GHC" or "due to Cabal" but hey it's stack I'm using as "my build tool" here ;)
A probably not entirely uncommon scenario: a package project
~/hsdev/mycorelib
and an executable project~/hsdev/myapp
. The later imports/includes from the former viabuild-depends
in.cabal
plus also viaI make a change in
mycorelib
, then do astack install
inmyapp
and voila! All gets completely rebuilt as expected, firstmycorelib
then all modules inmyapp
as the log shows (very well as they do all import a module frommycorelib
).Now. Other times --- even more often in practice --- I just make a change in
mycorelib
and rebuild directly in there (ie. via editor build command to dostack build
just as a check for errors). If I then directly do anotherstack install
(aka.stack build --copy-bins
) inmyapp
it just does the well-known no-op (just copies the existing executable) even though in the developer's view the dep sources have clearly totally changed and the binary isn't up-to-date.In the heat of the moment and especially in "multi-multi-multi-package project" , this kind of behavior is easy to miss and tricky to remember ("oooh I accidentally already built my changes in my one core/shared/common/utils library, better go my half-dozen intermediate libraries rebuilding them so the actual current project picks that up too..") --- currently one would end up having to go through all such packages rebuilding them whenever this particular failure-to-auto-propagage-changes materializes.
Unless I'm missing something? Seems like an "intuitively easy feature-turned-bug", as in "it checks the
mylibcore
is up to date (well its build outputs are, alright), then it checks themyapp
is up to date, ah well nothing to do" --- except withmylibcore
binaries / objects newer thanmyapp
binaries / outputs, that's certainly not the case.Or was I supposed to manually increment the
mylibcore
version number all the time as I'm aiming to get into the flow of heavy fast-paced iteration? ;)The text was updated successfully, but these errors were encountered: