[英]How to compile a haskell package without installation?
https://github.com/koalaman/shellcheck
我可以使用cabal install
安裝上述 package 。 但我想運行原始ghc
命令來編譯二進制文件而無需安裝。
有人可以告訴我怎么做嗎?
這是通常的方法。 第一步是獲取代碼的副本。 這兩個之一將做到這一點:
% git clone https://github.com/koalaman/shellcheck
% cabal unpack shellcheck
進入包含代碼的目錄后,您可以使用build
命令而不是install
命令讓cabal
構建它而不安裝它。
% cabal build
如果您想查看cabal
為此任務調用的子命令序列,可以通過增加詳細程度來要求它顯示它們。
% cabal build -v3
首先,您需要安裝所有依賴項,您可以使用cabal install --dependencies-only
來完成。 然后您需要使用以下內容創建文件Paths_ShellCheck.hs
:
module Paths_ShellCheck where
import Data.Version
version = Version [0,7,2] []
然后你可以使用這個 GHC 命令:
ghc \
--make \
-O \
-package-db ~/.cabal/store/ghc-8.10.4/package.db \
-hide-all-packages \
-package regex-tdfa \
-package parsec \
-package containers \
-package base \
-package deepseq \
-package mtl \
-package QuickCheck \
-package array \
-package aeson \
-package bytestring \
-package Diff \
-package filepath \
-package directory \
src/ShellCheck/*.hs \
src/ShellCheck/*/*.hs \
Paths_ShellCheck.hs \
shellcheck.hs
這將構建可執行的shellcheck
。 請注意,這是專門針對 GHC 8.10.4 的,如果您想使用另一個 GHC 版本,可以更改它。
如果您甚至不想運行cabal install --dependencies-only
那么最簡單的方法可能是復制所有依賴項的所有 *.hs 源文件,將它們添加到最后的 glob,然后刪除相應的-package...
參數。 您也許可以保留與 GHC 捆綁在一起的包:即 base、deepseq、mtl、containers、array、bytestring、filepath、parsec 和 directory。 這樣就剩下了 Diff、aeson、QuickCheck 和 regex-tdfa 以及它們的傳遞依賴關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.