haskellのzlibライブラリがビルドに失敗するケースのワークアラウンド
問題
haskell/zlibがビルドに失敗することがあります。
❯ cabal test
Configuration is affected by the following files:
- cabal.project
Build profile: -w ghc-9.10.1 -O1
In order, the following will be built (use -v for more details):
- brick-2.8.2 (lib) (requires build)
- string-interpolate-0.3.4.0 (lib) (requires build)
- zlib-0.7.1.0 (lib) (requires build)
- streaming-commons-0.2.3.0 (lib) (requires build)
- conduit-extra-1.3.7 (lib) (requires build)
- monad-logger-0.3.41 (lib) (requires build)
- sandwich-0.3.0.3 (lib) (requires build)
- sandwich-0.3.0.3 (exe:sandwich-discover) (requires build)
- wasmtime-hs-repro-0.1.0.0 (test:wasmtime-hs-repro-test) (first run)
Starting string-interpolate-0.3.4.0 (lib)
Starting zlib-0.7.1.0 (lib)
Starting brick-2.8.2 (lib)
Building zlib-0.7.1.0 (lib)
Building string-interpolate-0.3.4.0 (lib)
Building brick-2.8.2 (lib)
Installing string-interpolate-0.3.4.0 (lib)
Completed string-interpolate-0.3.4.0 (lib)
Installing brick-2.8.2 (lib)
Completed brick-2.8.2 (lib)
Failed to build zlib-0.7.1.0.
Build log (
/home/ncaq/.cache/cabal/logs/ghc-9.10.1/zlib-0.7.1.0-34d032fc305cdc5e3febd266686810c776d7db737981cfdcba227d8515000f04.log
):
Configuring library for zlib-0.7.1.0...
Preprocessing library for zlib-0.7.1.0...
running dist/build/Codec/Compression/Zlib/Stream_hsc_make failed (exit code -6)
rsp file was: "dist/build/Codec/Compression/Zlib/hsc2hscall4304-3.rsp"
output file:"dist/build/Codec/Compression/Zlib/Stream.hs"
command was: dist/build/Codec/Compression/Zlib/Stream_hsc_make >dist/build/Codec/Compression/Zlib/Stream.hs
error: *** stack smashing detected ***: terminated
Error: [Cabal-7125]
Haskell開発環境にNix Flakesを使う - ncaq にも書きましたが。
エラーログもまともじゃないし、原因がよく分からなくて、再現性も不確かです。
git clone
してきてcabal build
したり、外側でnix profile install 'nixpkgs#haskellPackages.zlib'
しても成功するので、自分の環境の原因かも知れないと思って報告しにくいです。
回避
根本的な回避策ではないことは承知の上でワークアラウンドします。
本来はghcjsやwasm向けの記述なのだと思いますが、フラグを設定すれば同梱しているCのソースを使ってくれて、今回はビルドに成功しました。
cabal.project
に以下のように設定します。
constraints:
zlib +bundled-c-zlib