[GHC] #12504: Windows: Using hsc2hs in combination with inline-c generates the .c files with invalid paths

GHC ghc-devs at haskell.org
Sat Aug 27 15:58:59 UTC 2016


#12504: Windows: Using hsc2hs in combination with inline-c generates the .c files
with invalid paths
-------------------------------------+-------------------------------------
        Reporter:  rcook             |                Owner:
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  hsc2hs            |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Windows           |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Other             |            Test Case:
                                     |  /testsuite/tests/hsc2hs/T12504/path/to/T12504.hsc
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D2477
       Wiki Page:                    |  Phab:D2478
-------------------------------------+-------------------------------------
Description changed by rcook:

@@ -25,1 +25,1 @@
- * Add the line `c-source-files: src/Main.c` to the `executable inlinecbug`
+ * Add the line `c-sources: src/Main.c` to the `executable inlinecbug`

New description:

 Repro steps:

 * Install Stack on a ''Windows'' development machine.
 * Create new simple project with `stack new inlinecbug simple`.
 * Rename `src/Main.hs` to `src/Main.hsc` in the `inlinecbug` project
 directory.
 * Build project with `stack build` and run with `stack exec inlinecbug` to
 verify that hsc2hs works correctly.
 * Replace content of `src/Main.hsc` with following:
 {{{#!hs
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}

 import qualified Language.C.Inline as C

 C.include "<math.h>"

 main :: IO ()
 main = do
   x <- [C.exp| double{ cos(1) } |]
   print x
 }}}
 * In `inlinecbug.cabal` add `inline-c` to the `build-depends` section of
 `executable inlinecbug`.
 * Add the line `c-sources: src/Main.c` to the `executable inlinecbug`
 section.
 * Rebuild with `stack build`.

 Build will fail with a linker error referring to a undefined reference to
 an `inline_c_main...` function. List the files in the root directory of
 the project and you'll see that inline-c has generated a file with the
 name `srcMain.c`: i.e. the backslashes in the Windows path have been
 removed.

 Building under Linux generates the C output file with the correct,
 expected path of `src/Main.c` and the program will compile, link and run
 as expected.

 See also: https://github.com/fpco/inline-c/issues/50

--

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12504#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list