I would expect that to be -I and for -i to specify module paths (which might well mean .hi).
On Sat, Oct 23, 2021 at 2:32 PM Carter Schonwald <carter.schonw...@gmail.com> wrote: > I would assume the -i is for include c header search paths but I could be > wrong > > On Sat, Oct 23, 2021 at 6:00 AM Oleg Grenrus <oleg.gren...@iki.fi> wrote: > >> This looks like a bug. >> >> -hidir documentation says >> >> > Redirects all generated interface files into ⟨dir⟩, instead of the >> default. >> > Please also note that when doing incremental compilation (by ghc --make >> or ghc -c), this directory is where GHC looks into to find interface files. >> >> And documentation for -i doesn't mention looking for interface files. >> >> So by doing >> >> % ghc -dynamic-too -c lib/Lib.hs -odir odir -hidir hidir_Lib >> % ghc -dynamic-too -c Main.hs -odir odir -hidir hidir_Main -ihidir_Lib >> 1 >> % ghc odir/Lib.o odir/Main.o -o Demo >> % ./Demo >> True >> >> everything compiles, TH is run, and demo works. The result files are >> >> % find . >> . >> ./Demo >> ./Main.hs >> ./hidir_Main >> ./hidir_Main/Main.dyn_hi >> ./hidir_Main/Main.hi >> ./odir >> ./odir/Main.dyn_o >> ./odir/Main.o >> ./odir/Lib.dyn_o >> ./odir/Lib.o >> ./hidir_Lib >> ./hidir_Lib/Lib.dyn_hi >> ./hidir_Lib/Lib.hi >> ./lib >> ./lib/Lib.hs >> >> --- >> >> The confusing error is caused by Lib module in libiserv: >> https://hackage.haskell.org/package/libiserv >> which GHC picks! >> >> If we rename your Lib module to Library, the error is way better: Could >> not find module ‘Library’ >> >> I also tried using same -hidir when compiling both modules, then GHC >> still cannot find the Library interface, even the documentation says it >> should. >> >> Please open a GHC issue at https://gitlab.haskell.org/ghc/ghc/-/issues >> >> >> >> - Oleg >> On 22.10.2021 19.16, Domínguez, Facundo wrote: >> >> Dear devs, >> >> I'm confused about the meaning of -hidir and -i. Here's my experiment >> with both ghc-9.2.0 and ghc-8.10.4. >> >> > $ find >> > ./Main.hs >> > ./lib/Lib.hs >> > >> > $ ghc -dynamic-too -c lib/Lib.hs -odir odir -hidir hidir_Lib >> > >> > $ ghc -dynamic-too -c Main.hs -odir odir -ihidir_Lib -hidir hidir_Main >> > >> > Main.hs:3:1: error: >> > Bad interface file: hidir_Main/Lib.hi >> > hidir_Main/Lib.hi: openBinaryFile: does not exist (No such file >> or directory) >> > | >> > 3 | import Lib >> > | ^^^^^^^^^^ >> >> If I only use -hidir, it still fails with another error >> >> > $ ghc -dynamic-too -c Main.hs -odir odir -hidir hidir_Lib >> > >> > Main.hs:7:29: error: Variable not in scope: f >> > | >> > 7 | main = print $(runIO (print f) >> [| True |]) >> > | ^ >> >> If I use both -i and -hidir pointing to the same folder, then it works! >> >> > $ ghc -dynamic-too -c Main.hs -odir odir -ihidir_Lib -hidir hidir_Lib >> >> Now, is this behavior a bug or a feature? And if it is a bug, what is the >> expected behavior? >> >> Programs copied below. >> >> Thank you! >> Facundo >> >> > $ cat lib/Lib.hs >> > module Lib where >> > >> > f :: Int >> > f = 1 >> > >> > $ cat Main.hs >> > {-# LANGUAGE TemplateHaskell #-} >> > >> > import Lib >> > import Language.Haskell.TH <http://language.haskell.th/> >> > >> > main :: IO () >> > main = print $(runIO (print f) >> [| True |]) >> >> _______________________________________________ >> ghc-devs mailing >> listghc-devs@haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> >> _______________________________________________ >> ghc-devs mailing list >> ghc-devs@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > -- brandon s allbery kf8nh allber...@gmail.com
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs