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
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
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

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
On Sat, Jun 6, 2009 at 7:45 PM, Vasili I. Galchin
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
<http://www.eyrie.org/~zednenem/ http://www.eyrie.org/%7Ezednenem/>

On Sat, Jun 6, 2009 at 11:54 PM, Vasili I. Galchin
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

thanks, David.
Vasili
On Sun, Jun 7, 2009 at 12:17 AM, David Menendez
On Sat, Jun 6, 2009 at 11:54 PM, Vasili I. Galchin
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
<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
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