如何创建一个相当于没有GHC包环境文件?

问题描述 投票:0回答:1

在没有包环境文件的情况下使用 GHC 时,您将能够使用它附带的多个库,例如

containers
text
。但是,当您确实有软件包环境时,您只能使用它提到的软件包。有没有一种简单的方法来创建一个环境文件,其中包含所有未公开的包?看起来我可以根据解析
ghc-pkg list -v
的输出来组合一个解决方案,但我希望有一种更优雅的方法。如果这是特定于版本的,那么我正在寻找适用于 GHC 9.8.2 和 Cabal 3.10.3.0 的解决方案。

haskell ghc cabal cabal-install ghc-pkg
1个回答
0
投票

如果您查看一些

ghc-pkg
子命令和选项,您会发现解析并不太难。下面的 shell 脚本应该可以工作。由于它在每个包上运行
ghc-pkg field
来检查它是公开的还是隐藏的,所以在每次
ghc
调用上使用它太慢了,但它应该可以为每个新的 GHC 版本生成一个静态环境文件:

#!/bin/bash

set -e

echo clear-package-db
echo global-package-db

for p in $(ghc-pkg list --simple-output --show-unit-ids)
do
        if [ "$(ghc-pkg --simple-output --unit-id field $p exposed)" = True ]
        then
           echo package-id $p
        fi
done
© www.soinside.com 2019 - 2024. All rights reserved.