Still having problems building a very simple "Executable" ....
Hello, I picked an exceedingly case to build an "Executable": Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName Here are the results of a "cabal build -v": Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for. ??? Thanks, Vasili
in the following harder case, I see no mention of path Swish/HaskellUtils ..... seems not good: /usr/local/bin/ghc -o dist/build/GraphPartitionTest/GraphPartitionTest --make -hide-all-packages -i -idist/build/GraphPartitionTest/GraphPartitionTest-tmp -iSwish/ -idist/build/autogen -Idist/build/GraphPartitionTest/GraphPartitionTest-tmp -odir dist/build/GraphPartitionTest/GraphPartitionTest-tmp -hidir dist/build/GraphPartitionTest/GraphPartitionTest-tmp -stubdir dist/build/GraphPartitionTest/GraphPartitionTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellRDF/GraphPartitionTest.hs Swish/HaskellRDF/GraphPartitionTest.hs:51:7: Could not find module `Swish.HaskellUtils.ListHelpers': Use -v to see a list of the files searched for. vigalchin@ubuntu:~/FTP/Haskell/Swish-0.2.1$ On Sat, Jun 6, 2009 at 6:45 PM, Vasili I. Galchin <vigalchin@gmail.com>wrote:
Hello,
I picked an exceedingly case to build an "Executable":
Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName
Here are the results of a "cabal build -v":
Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for.
???
Thanks,
Vasili
On Sat, Jun 6, 2009 at 7:45 PM, Vasili I. Galchin <vigalchin@gmail.com> wrote:
Hello,
I picked an exceedingly case to build an "Executable":
Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName
Here are the results of a "cabal build -v":
Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for.
???
I'm guessing QNameTest.hs imports Swish.HaskellUtils.QName, which means that GHC is looking for a file Swish/HaskellUtils/QName.hs. But you've indicated that the root of the source tree is a directory called Swish/, so GHC is looking for Swish/Swish/HaskellUtils/QName.hs. I'd try eliminating the hs-source-dirs field. -- Dave Menendez <dave@zednenem.com> <http://www.eyrie.org/~zednenem/>
Hi David, I commented out "Hs-source-dirs" Executable QNameTest -- Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName Here is what I got: vigalchin@ubuntu:~/FTP/Haskell/Swish-0.2.1$ cabal build -v Warning: swish.cabal: A package using section syntax should require "Cabal-Version: >= 1.2" or equivalent. Creating dist/build (and its parents) Creating dist/build/autogen (and its parents) Preprocessing library swish-0.2.1... Preprocessing executables for swish-0.2.1... cabal: can't find source for HaskellUtils.QName in ., dist/build/autogen vigalchin@ubuntu:~/FTP/Haskell/Swish-0.2.1$ I seem to remember that on the Haskell Wiki there is an example of building/linking an "Executable" but I cannot find. ?? Regards, Vasili On Sat, Jun 6, 2009 at 7:22 PM, David Menendez <dave@zednenem.com> wrote:
On Sat, Jun 6, 2009 at 7:45 PM, Vasili I. Galchin <vigalchin@gmail.com> wrote:
Hello,
I picked an exceedingly case to build an "Executable":
Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName
Here are the results of a "cabal build -v":
Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for.
???
I'm guessing QNameTest.hs imports Swish.HaskellUtils.QName, which means that GHC is looking for a file Swish/HaskellUtils/QName.hs. But you've indicated that the root of the source tree is a directory called Swish/, so GHC is looking for Swish/Swish/HaskellUtils/QName.hs.
I'd try eliminating the hs-source-dirs field.
-- Dave Menendez <dave@zednenem.com> <http://www.eyrie.org/~zednenem/ <http://www.eyrie.org/%7Ezednenem/>>
On Sat, Jun 6, 2009 at 11:54 PM, Vasili I. Galchin <vigalchin@gmail.com> wrote:
Hi David,
I commented out "Hs-source-dirs"
Executable QNameTest -- Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs
Other-Modules: HaskellUtils.QName
Swish.HaskellUtils.QName -- Dave Menendez <dave@zednenem.com> <http://www.eyrie.org/~zednenem/>
thanks, David. Vasili On Sun, Jun 7, 2009 at 12:17 AM, David Menendez <dave@zednenem.com> wrote:
On Sat, Jun 6, 2009 at 11:54 PM, Vasili I. Galchin <vigalchin@gmail.com> wrote:
Hi David,
I commented out "Hs-source-dirs"
Executable QNameTest -- Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs
Other-Modules: HaskellUtils.QName
Swish.HaskellUtils.QName
-- Dave Menendez <dave@zednenem.com> <http://www.eyrie.org/~zednenem/ <http://www.eyrie.org/%7Ezednenem/>>
Hi Vasili, Vasili I. Galchin wrote:
I picked an exceedingly case to build an "Executable":
Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName
I'm not sure what you did; the original Swish code doesn't have any hierarchical modules. Starting with that, I could build QNameTest like this: executable QNameTest hs-source-dirs: HaskellUtils HaskellRDF HaskellRDF/HUnit main-is: QNameTest.hs other-modules: HUnitLang HUnitBase HUnitText QName QNameTest build-depends: base, haskell98 ghc-options: -main-is QNameTest The trick here is to list all used subdirectories in hs-source-dirs; the module HUnit for example will be found in HaskellRDF/HUnit/ under the name HUnit.lhs. If you have a module A.B.C then the source file should be in foo/A/B/C.hs (or lhs or some other recognized extension) and foo should be listed in hs-source-dirs. Also note the ghc-options line: it tells ghc to use QNameTest instead of Main for the main module. I also managed to produce a Swish executable after a bit of tweaking; you can find my changes in http://int-e.home.tlink.de/haskell/Swish.diff The cabal file is at the end of the diff. HTH, Bertram P.S. I took Swish code from here: http://www.ninebynine.org/RDFNotes/Swish/Intro.html#SwishLinks
Here is the beginning of QNameTest .. i.e. interface plus imports: module Swish.HaskellUtils.QNameTest where^M ^M import System.IO^M ( Handle, IOMode(WriteMode)^M , openFile, hClose, hPutStr, hPutStrLn^M )^M ^M import Data.Maybe^M ( fromJust )^M ^M import Test.HUnit^M ( Test(TestCase,TestList,TestLabel)^M , assertBool, assertEqual, assertString^M , runTestTT, runTestText, putTextToHandle^M )^M ^M import Swish.HaskellUtils.QName^M ( QName(..)^M , newQName, qnameFromPair, qnameFromURI^M , getNamespace, getLocalName, getQNameURI^M , splitURI^M )^M Following is the linking info for QNameTest ... I don't see a -package switch for Swish.HaskellUtils.Qname! why? Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for. Regards, Vasili On Sat, Jun 6, 2009 at 6:45 PM, Vasili I. Galchin <vigalchin@gmail.com>wrote:
Hello,
I picked an exceedingly case to build an "Executable":
Executable QNameTest Hs-source-dirs: Swish/ Main-Is: HaskellUtils/QNameTest.hs Other-Modules: HaskellUtils.QName
Here are the results of a "cabal build -v":
Creating dist/build/QNameTest (and its parents) Creating dist/build/QNameTest/QNameTest-tmp (and its parents) /usr/local/bin/ghc -o dist/build/QNameTest/QNameTest --make -hide-all-packages -i -idist/build/QNameTest/QNameTest-tmp -iSwish/ -idist/build/autogen -Idist/build/QNameTest/QNameTest-tmp -odir dist/build/QNameTest/QNameTest-tmp -hidir dist/build/QNameTest/QNameTest-tmp -stubdir dist/build/QNameTest/QNameTest-tmp -package HUnit-1.2.0.0 -package array-0.1.0.0 -package base-3.0.1.0 -package binary-0.4.2 -package bytestring-0.9.1.0 -package containers-0.1.0.1 -package mtl-1.1.0.1 -package old-time-1.0.0.0 -package parallel-1.0.0.0 -package parsec-2.1.0.0 -package random-1.0.0.0 -O Swish/HaskellUtils/QNameTest.hs
Swish/HaskellUtils/QNameTest.hs:36:7: Could not find module `Swish.HaskellUtils.QName': Use -v to see a list of the files searched for.
???
Thanks,
Vasili
participants (3)
-
Bertram Felgenhauer -
David Menendez -
Vasili I. Galchin