Open
Description
Describe the bug
Cabal ignores --enable-static --disable-shared
given in the command line, and follows the settings in ~/.cabal/config
.
To Reproduce
Steps to reproduce the behavior:
-
Set the values in the
~/.cabal/config
for shared libraries and dynamic executables
Here's the~/.cabal/config
I use: cabal-config.txt
$ cabal v2-build --enable-static --disable-shared
Resolving dependencies...
Build profile: -w ghc-8.6.5 -O1
In order, the following will be built (use -v for more details):
- Str2Split-0.1.0.0 (lib) (first run)
- Str2Split-0.1.0.0 (exe:Str2Split-exe) (first run)
Configuring library for Str2Split-0.1.0.0..
Preprocessing library for Str2Split-0.1.0.0..
Building library for Str2Split-0.1.0.0..
[1 of 2] Compiling Lib ( src/Lib.hs, /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/Lib.o )
[2 of 2] Compiling Paths_Str2Split ( /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/autogen/Paths_Str2Split.hs, /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/Paths_Str2Split.o )
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Win32Utils.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(consUtils.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(mp_clz_tab.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(obprintf.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(obprntffuns.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(obvprintf.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(repl-vsnprintf.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(longlong.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Disassembler.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(LdvProfile.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(OldARMAtomic.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(ProfilerReport.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(ProfilerReportJson.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Profiling.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(RetainerProfile.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(RetainerSet.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(RtsDllMain.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Evac_thr.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Sanity.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Scav_thr.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(EventLog.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(Elf.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(PEi386.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_got.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_plt.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_plt_aarch64.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_plt_arm.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_reloc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_reloc_aarch64.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/build/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.a(elf_util.o) has no symbols
Preprocessing library for Str2Split-0.1.0.0..
Running Haddock on library for Str2Split-0.1.0.0..
Haddock coverage:
0% ( 0 / 5) in 'Lib'
Missing documentation for:
Module header
splitStr (src/Lib.hs:12)
chunker (src/Lib.hs:26)
splitMore (src/Lib.hs:29)
splitLess (src/Lib.hs:32)
Documentation created:
/Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/doc/html/Str2Split/index.html
Configuring executable 'Str2Split-exe' for Str2Split-0.1.0.0..
Warning: The package has an extraneous version range for a dependency on an
internal library: Str2Split -any && ==0.1.0.0, Str2Split -any && ==0.1.0.0.
This version range includes the current package but isn't needed as the
current package's library will always be used.
Preprocessing executable 'Str2Split-exe' for Str2Split-0.1.0.0..
Building executable 'Str2Split-exe' for Str2Split-0.1.0.0..
[1 of 2] Compiling Main ( app/Main.hs, /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe-tmp/Main.dyn_o )
[2 of 2] Compiling Paths_Str2Split ( /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/autogen/Paths_Str2Split.hs, /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe-tmp/Paths_Str2Split.dyn_o )
Linking /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe ...
$ otool -L /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe
/Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
@rpath/libHSStr2Split-0.1.0.0-inplace-ghc8.6.5.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSbase-4.12.0.0-ghc8.6.5.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSghc-prim-0.5.3-ghc8.6.5.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSrts_thr-ghc8.6.5.dylib (compatibility version 0.0.0, current version 0.0.0)
Expected behavior
Executable linked with static Haskell libraries.
System information
- MacOS Catalina 10.15.4, Xcode-11.4.
cabal-3.2.0.0
,ghc
8.8.3, 8.6.5.
Additional context
Here's my small test-project https://github.com/mouse07410/Str2Split.git
Attempts to build anything (demonstrating on this fairly simple reproducer project) with --enable-executable-static
fails with:
$ cabal build --enable-static --disable-shared --enable-executable-static
Build profile: -w ghc-8.6.5 -O1
In order, the following will be built (use -v for more details):
- Str2Split-0.1.0.0 (lib) (configuration changed)
- Str2Split-0.1.0.0 (exe:Str2Split-exe) (configuration changed)
Configuring library for Str2Split-0.1.0.0..
cabal: --enable-executable-dynamic and --enable-executable-static are
incompatible with each other.
cabal: Failed to build Str2Split-0.1.0.0 (which is required by
exe:Str2Split-exe from Str2Split-0.1.0.0). The failure occurred during the
configure step.
With --enable-executable-static --disable-executable-dynamic
fail because of the OS constraints.
$ cabal build --enable-static --disable-shared --enable-executable-static --disable-executable-dynamic
. . . . .
Linking /Users/uri/src/Str2Split/dist-newstyle/build/x86_64-osx/ghc-8.6.5/Str2Split-0.1.0.0/x/Str2Split-exe/build/Str2Split-exe/Str2Split-exe ...
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`clang' failed in phase `Linker'. (Exit code: 1)