haskell / haskell/cabal

Compile unable to find object file when compiling on Windows.

Open
#9,595 1 comment 0 reactions 0 assignees View on GitHub
needs triage type: bug
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

**Describe the bug**
Compile unable to find object file when compiling on Windows.

**To Reproduce**

On windows compile https://github.com/haskell-works/hw-rankselect-base/pull/59

```
Building library for hw-rankselect-base-0.3.4.1..
[1 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Internal ( src\HaskellWorks\Data\RankSelect\Base\Internal.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Internal.o )
[2 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Rank1 ( src\HaskellWorks\Data\RankSelect\Base\Rank1.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Rank1.o )
[3 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Rank0 ( src\HaskellWorks\Data\RankSelect\Base\Rank0.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Rank0.o )
[4 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Rank ( src\HaskellWorks\Data\RankSelect\Base\Rank.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Rank.o )
[5 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Select1 ( src\HaskellWorks\Data\RankSelect\Base\Select1.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Select1.o )
[6 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Select0 ( src\HaskellWorks\Data\RankSelect\Base\Select0.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Select0.o )
[7 of 9] Compiling HaskellWorks.Data.RankSelect.Base.Select ( src\HaskellWorks\Data\RankSelect\Base\Select.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base\Select.o )
[8 of 9] Compiling HaskellWorks.Data.RankSelect.Base ( src\HaskellWorks\Data\RankSelect\Base.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\HaskellWorks\Data\RankSelect\Base.o )
[9 of 9] Compiling Paths_hw_rankselect_base ( D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\autogen\Paths_hw_rankselect_base.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\build\Paths_hw_rankselect_base.o )
Configuring test suite 'hw-rankselect-base-test' for hw-rankselect-base-0.3.4.1..
Configuring test suite 'doctest' for hw-rankselect-base-0.3.4.1..
Configuring benchmark 'bench' for hw-rankselect-base-0.3.4.1..
Preprocessing test suite 'hw-rankselect-base-test' for hw-rankselect-base-0.3.4.1..
Building test suite 'hw-rankselect-base-test' for hw-rankselect-base-0.3.4.1..
Preprocessing test suite 'doctest' for hw-rankselect-base-0.3.4.1..
Building test suite 'doctest' for hw-rankselect-base-0.3.4.1..
Preprocessing benchmark 'bench' for hw-rankselect-base-0.3.4.1..
Building benchmark 'bench' for hw-rankselect-base-0.3.4.1..
[1 of 6] Compiling HaskellWorks.Data.RankSelect.Base.InternalSpec ( test\HaskellWorks\Data\RankSelect\Base\InternalSpec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\InternalSpec.o )
[1 of 1] Compiling Main ( bench\Main.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\b\bench\build\bench\bench-tmp\Main.o )
[1 of 1] Compiling Main ( doctest\DoctestDriver.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\doctest\build\doctest\doctest-tmp\Main.o )
[2 of 6] Compiling HaskellWorks.Data.RankSelect.Base.Rank0Spec ( test\HaskellWorks\Data\RankSelect\Base\Rank0Spec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\Rank0Spec.o )
Linking D:\\a\\hw-rankselect-base\\hw-rankselect-base\\dist-newstyle\\build\\x86_64-windows\\ghc-9.2.8\\hw-rankselect-base-0.3.4.1\\t\\doctest\\build\\doctest\\doctest.exe ...
Linking D:\\a\\hw-rankselect-base\\hw-rankselect-base\\dist-newstyle\\build\\x86_64-windows\\ghc-9.2.8\\hw-rankselect-base-0.3.4.1\\b\\bench\\build\\bench\\bench.exe ...
[3 of 6] Compiling HaskellWorks.Data.RankSelect.Base.Rank1Spec ( test\HaskellWorks\Data\RankSelect\Base\Rank1Spec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\Rank1Spec.o )
[4 of 6] Compiling HaskellWorks.Data.RankSelect.Base.Select0Spec ( test\HaskellWorks\Data\RankSelect\Base\Select0Spec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\Select0Spec.o )
[5 of 6] Compiling HaskellWorks.Data.RankSelect.Base.Select1Spec ( test\HaskellWorks\Data\RankSelect\Base\Select1Spec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\Select1Spec.o )
[6 of 6] Compiling Main ( test\Spec.hs, D:\\a\hw-rankselect-base\hw-rankselect-base\dist-newstyle\build\x86_64-windows\ghc-9.2.8\hw-rankselect-base-0.3.4.1\t\hw-rankselect-base-test\build\hw-rankselect-base-test\hw-rankselect-base-test-tmp\Main.o )
Linking D:\\a\\hw-rankselect-base\\hw-rankselect-base\\dist-newstyle\\build\\x86_64-windows\\ghc-9.2.8\\hw-rankselect-base-0.3.4.1\\t\\hw-rankselect-base-test\\build\\hw-rankselect-base-test\\hw-rankselect-base-test.exe ...
realgcc.exe: error: D:\\a\\hw-rankselect-base\\hw-rankselect-base\\dist-newstyle\\build\\x86_64-windows\\ghc-9.2.8\\hw-rankselect-base-0.3.4.1\\t\\hw-rankselect-base-test\\build\\hw-rankselect-base-test\\hw-rankselect-base-test-tmp\HaskellWorks\Data\RankSelect\Base\InternalSpec.o: No such file or directory
`gcc.exe' failed in phase `Linker'. (Exit code: 1)
Error: cabal-3.10.2.1.exe: Failed to build test:hw-rankselect-base-test from
hw-rankselect-base-0.3.4.1.
```

See the build failures in this PR (if Windows is added to the list of OSes in the Github workflow): https://github.com/haskell-works/hw-rankselect-base/pull/59

https://github.com/haskell-works/hw-rankselect-base/actions/runs/7441179407/job/20242989317?pr=59

Note that `InternalSpec` module was compiled so the object file should be there:

```
[1 of 6] Compiling HaskellWorks.Data.RankSelect.Base.InternalSpec
```

**Expected behavior**
The object file should be found and linked.

**System information**
- Operating system: Windows
- `cabal-3.10.2.1`, All `ghc` versions

**Additional context**
Add any other context about the problem here.

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure by adding Windows to the hw-rankselect-base GitHub workflow from pull request 59 and building the hw-rankselect-base-test suite. Start by tracing Cabal's Windows test-linking step around the generated object path, using test/Spec.hs and the listed InternalSpec compilation as references. Done means the compiled object is found and the test executable links successfully on Windows.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, haskell
Domain
build-system, ci-cd, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.