
I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree. My stack source tree is at ~/stack/cac/src/ Let's say I want to build the program /Users/Dennis/test.hs. So far I have been using stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change. Are they *supposed* to be rebuilt? Any ideas how to debug this? D

No, the `ghc` command has no rebuild logic built in, since it doesn't know
which of your packages you're expecting to be available. You can pass in
the `--package` flag, however, to tell it which packages you're expecting.
I'm not sure if I've ever tested in the exact case you're trying, so you
may have to resort to `stack build` in the directory, but `--package` is
worth a shot.
On Tue, Jul 11, 2017 at 11:29 PM, Dennis Raddle
I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree.
My stack source tree is at ~/stack/cac/src/
Let's say I want to build the program /Users/Dennis/test.hs.
So far I have been using
stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs
I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change.
Are they *supposed* to be rebuilt? Any ideas how to debug this?
D
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

--package seems to work.
But this brings up another question. This takes a long time to run for a
change to a single file, because stack is preprocessing and building *all*
my executables, then installing them all. In my situation this is a lot of
wasted time for something that needs to be fast.
It's not just "stack ghc." I tried to get "stack build" to build a specific
executable. I tried something like "stack build cac:myExec" (my package
name is "cac") but this builds all my executables every time. I haven't
been able to find the right approach to this in the docs.
So, aside from wondering why "stack ghc" builds all my executables, how do
I use "stack build" to build just one executable?
D
On Tue, Jul 11, 2017 at 7:41 PM, Michael Snoyman
No, the `ghc` command has no rebuild logic built in, since it doesn't know which of your packages you're expecting to be available. You can pass in the `--package` flag, however, to tell it which packages you're expecting. I'm not sure if I've ever tested in the exact case you're trying, so you may have to resort to `stack build` in the directory, but `--package` is worth a shot.
On Tue, Jul 11, 2017 at 11:29 PM, Dennis Raddle
wrote: I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree.
My stack source tree is at ~/stack/cac/src/
Let's say I want to build the program /Users/Dennis/test.hs.
So far I have been using
stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs
I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change.
Are they *supposed* to be rebuilt? Any ideas how to debug this?
D
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

I think you'll be happy about this PR:
https://github.com/commercialhaskell/stack/pull/3237
On Wed, Jul 12, 2017 at 10:24 AM, Dennis Raddle
--package seems to work.
But this brings up another question. This takes a long time to run for a change to a single file, because stack is preprocessing and building *all* my executables, then installing them all. In my situation this is a lot of wasted time for something that needs to be fast.
It's not just "stack ghc." I tried to get "stack build" to build a specific executable. I tried something like "stack build cac:myExec" (my package name is "cac") but this builds all my executables every time. I haven't been able to find the right approach to this in the docs.
So, aside from wondering why "stack ghc" builds all my executables, how do I use "stack build" to build just one executable?
D
On Tue, Jul 11, 2017 at 7:41 PM, Michael Snoyman
wrote: No, the `ghc` command has no rebuild logic built in, since it doesn't know which of your packages you're expecting to be available. You can pass in the `--package` flag, however, to tell it which packages you're expecting. I'm not sure if I've ever tested in the exact case you're trying, so you may have to resort to `stack build` in the directory, but `--package` is worth a shot.
On Tue, Jul 11, 2017 at 11:29 PM, Dennis Raddle
wrote: I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree.
My stack source tree is at ~/stack/cac/src/
Let's say I want to build the program /Users/Dennis/test.hs.
So far I have been using
stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs
I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change.
Are they *supposed* to be rebuilt? Any ideas how to debug this?
D
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

Sorry if this is a basic question, but I've never tried to download and
build a Haskell project before. I've only used Haskell for small local
projects. So I'm guessing I need to get the latest source code for Stack
and build it in order to incorporate this feature?
I did try getting the source code from GitHub, but I don't know how to
build it.
D
On Wed, Jul 12, 2017 at 3:52 AM, Michael Snoyman
I think you'll be happy about this PR:
https://github.com/commercialhaskell/stack/pull/3237
On Wed, Jul 12, 2017 at 10:24 AM, Dennis Raddle
wrote: --package seems to work.
But this brings up another question. This takes a long time to run for a change to a single file, because stack is preprocessing and building *all* my executables, then installing them all. In my situation this is a lot of wasted time for something that needs to be fast.
It's not just "stack ghc." I tried to get "stack build" to build a specific executable. I tried something like "stack build cac:myExec" (my package name is "cac") but this builds all my executables every time. I haven't been able to find the right approach to this in the docs.
So, aside from wondering why "stack ghc" builds all my executables, how do I use "stack build" to build just one executable?
D
On Tue, Jul 11, 2017 at 7:41 PM, Michael Snoyman
wrote: No, the `ghc` command has no rebuild logic built in, since it doesn't know which of your packages you're expecting to be available. You can pass in the `--package` flag, however, to tell it which packages you're expecting. I'm not sure if I've ever tested in the exact case you're trying, so you may have to resort to `stack build` in the directory, but `--package` is worth a shot.
On Tue, Jul 11, 2017 at 11:29 PM, Dennis Raddle
wrote:
I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree.
My stack source tree is at ~/stack/cac/src/
Let's say I want to build the program /Users/Dennis/test.hs.
So far I have been using
stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs
I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change.
Are they *supposed* to be rebuilt? Any ideas how to debug this?
D
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

Keep in mind that this is experimental software, so there may be rough
edges.
The code I linked to is not on master, only on a topic branch In order to
build it:
git clone --branch exe-targets-3229 --depth=1
https://github.com/commercialhaskell/stack
cd stack
stack install
Then make sure that you have $HOME/.local/bin on your PATH, or copy the
generated executable to wherever your stack executable currently resides.
If you have problems with the new version, you can revert with:
stack upgrade --binary-version 1.4.0
On Thu, Jul 13, 2017 at 7:32 AM, Dennis Raddle
Sorry if this is a basic question, but I've never tried to download and build a Haskell project before. I've only used Haskell for small local projects. So I'm guessing I need to get the latest source code for Stack and build it in order to incorporate this feature?
I did try getting the source code from GitHub, but I don't know how to build it.
D
On Wed, Jul 12, 2017 at 3:52 AM, Michael Snoyman
wrote: I think you'll be happy about this PR:
https://github.com/commercialhaskell/stack/pull/3237
On Wed, Jul 12, 2017 at 10:24 AM, Dennis Raddle
wrote: --package seems to work.
But this brings up another question. This takes a long time to run for a change to a single file, because stack is preprocessing and building *all* my executables, then installing them all. In my situation this is a lot of wasted time for something that needs to be fast.
It's not just "stack ghc." I tried to get "stack build" to build a specific executable. I tried something like "stack build cac:myExec" (my package name is "cac") but this builds all my executables every time. I haven't been able to find the right approach to this in the docs.
So, aside from wondering why "stack ghc" builds all my executables, how do I use "stack build" to build just one executable?
D
On Tue, Jul 11, 2017 at 7:41 PM, Michael Snoyman
wrote: No, the `ghc` command has no rebuild logic built in, since it doesn't know which of your packages you're expecting to be available. You can pass in the `--package` flag, however, to tell it which packages you're expecting. I'm not sure if I've ever tested in the exact case you're trying, so you may have to resort to `stack build` in the directory, but `--package` is worth a shot.
On Tue, Jul 11, 2017 at 11:29 PM, Dennis Raddle < dennis.raddle@gmail.com> wrote:
I'm using Haskell stack in the normal way (i.e. "stack build", "stack exec") for most of my application. However, I also need to build files that aren't in the stack source tree.
My stack source tree is at ~/stack/cac/src/
Let's say I want to build the program /Users/Dennis/test.hs.
So far I have been using
stack ghc --stack-yaml ~/stack/cac/stack.yaml -- --make /Users/Dennis/test.hs
I am confused. I thought this was working until today. I made some modifications in various places, including to my cac.cabal (but NOT my stack.yaml) and I'm having a problem. The libraries that test.hs imports are not getting rebuilt when they change.
Are they *supposed* to be rebuilt? Any ideas how to debug this?
D
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
participants (2)
-
Dennis Raddle
-
Michael Snoyman