Re: [Haskell-cafe] Cabal: other-modules necessary?

Ah, that's interesting Oleg, thanks. I like the idea of Cabal being able to specify the exact mapping between modules and source files. Tom On Fri, Sep 16, 2022 at 04:05:53PM +0300, Oleg Grenrus wrote:
That is error generated by GHC.
The culprit is `ghc --make` mode which discovers modules/files on its own.
If there were a way to say (for Cabal to GHC) that use these files to compile the component, and fail otherwise, then -Wmissing-home-modules would turn into error.
In fact, it would be great if it where possible to say that *this* module is in *that* file, something like `MyFoo:src/MyFoo.hs`.
That would also solve a problem of having same hs-source-dirs for different components, as Cabal would be able to tell GHC that "don't look for this modules locally, use dependencies". As currently GHC will eagerly look for modules locally first. Always.
- Oleg
On 16.9.2022 12.23, Tom Ellis wrote:
The cabal user guide says (in section 6.2.12): "Every module in the package must be listed in one of other-modules, library:exposed-modules or executable:main-is fields."
However, I only get a warning message, when I comment out the other-modules field in my .cabal file. The program compiles. This is the message:
<no location info>: warning: [-Wmissing-home-modules] These modules are needed for compilation but not listed in your .cabal file's other-modules: Hsskripte Sicherung SicherungAktionen Text Wahl Zeit
Is it really necessary to specify all the imported modules? If so, why does the program compile? Can that warning message be turned off? In response to all the sibling replies at once, is there a good reason for this behaviour? Succeeding but then failing later with obscure errors (once the original warning message is nowhere to be seen) seems
On Fri, Sep 16, 2022 at 10:47:47AM +0200, Volker Wysk wrote: like the worst of all worlds. Suppose cabal errored here and failed to proceed. What would be the downside of that (besides backward incompatibility)?

On the topic of cabal creating inconsistent environments: I keep seeing these issues on SO and elsewhere. This thread was the last drop for me, and I started an RFC over on cabal bug tracker with a proposal to simply refuse to do the thing that is known to fail. https://github.com/haskell/cabal/issues/8483 Unfortunately, it's not going well so far. See if you have something to contribute there. -- Best, Artem On Sun, 18 Sept 2022 at 12:47, Tom Ellis < tom-lists-haskell-cafe-2017@jaguarpaw.co.uk> wrote:
Ah, that's interesting Oleg, thanks. I like the idea of Cabal being able to specify the exact mapping between modules and source files.
Tom
That is error generated by GHC.
The culprit is `ghc --make` mode which discovers modules/files on its own.
If there were a way to say (for Cabal to GHC) that use these files to compile the component, and fail otherwise, then -Wmissing-home-modules would turn into error.
In fact, it would be great if it where possible to say that *this* module is in *that* file, something like `MyFoo:src/MyFoo.hs`.
That would also solve a problem of having same hs-source-dirs for different components, as Cabal would be able to tell GHC that "don't look for this modules locally, use dependencies". As currently GHC will eagerly look for modules locally first. Always.
- Oleg
On 16.9.2022 12.23, Tom Ellis wrote:
On Fri, Sep 16, 2022 at 10:47:47AM +0200, Volker Wysk wrote:
The cabal user guide says (in section 6.2.12): "Every module in the
On Fri, Sep 16, 2022 at 04:05:53PM +0300, Oleg Grenrus wrote: package
must be listed in one of other-modules, library:exposed-modules or executable:main-is fields."
However, I only get a warning message, when I comment out the other-modules field in my .cabal file. The program compiles. This is the message:
<no location info>: warning: [-Wmissing-home-modules] These modules are needed for compilation but not listed in your .cabal file's other-modules: Hsskripte Sicherung SicherungAktionen Text Wahl Zeit
Is it really necessary to specify all the imported modules? If so, why does the program compile? Can that warning message be turned off? In response to all the sibling replies at once, is there a good reason for this behaviour? Succeeding but then failing later with obscure errors (once the original warning message is nowhere to be seen) seems like the worst of all worlds. Suppose cabal errored here and failed to proceed. What would be the downside of that (besides backward incompatibility)?
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)
-
Artem Pelenitsyn
-
Tom Ellis