2012-07-22 5 views
4

내 Mac에서 Haskell에 프로그램을 작성하고 있습니다 (명령 줄 실행 파일, 앱이 아닙니다). GitHub를 사용하여 git 저장소와 홈페이지를 호스팅합니다. Cabal은 문서를 작성, 테스트 및 생성하기 쉽기 때문에 <project>.cabalSetup.hs 개의 파일을 만들었습니다. 나는 또한 Hackage에 업로드 할지도 모릅니다. 모르겠습니다.Homebrew에 Haskell 프로그램 배포

버전 1.0 태그를 지정하면 GitHub에서 tarball을 다운로드하고 빌드하는 Homebrew 공식을 만들고 싶습니다. 유일한 의존성은 GHC이되고 싶습니다. 오히려 cabal 명령보다 더에 따라 피하기 위해

내가 runhaskell Setupconfigure/build/install (/ usr/지방/셀라는/...과 같이 접두사) 사용 도당 설치합니다.

Hackage에서 패키지를 사용할 때까지는 괜찮습니다. 화재 - 빌더 및 aeson. 어떻게해야합니까?

비 하스 켈러가 하스켈 플랫폼 전체를 다운로드하도록 강요하고 싶지는 않습니다. 이상적으로 사람들은 내 프로그램을 만들기 전에 Homebrew가 GHC를 설치하도록 허용해야하며, 그렇게 선택하면 GHC를 제거해야합니다. 나는 하스켈 플랫폼을 종속성을 먼저 설치하면 내 하스켈은 패키지

  1. ~/.cabal/ 폴더, 뒤에 남아있을 것입니다, 음모 설치 또는 유사한을 통해 종속성 심지어 나중에 그들이
    brew uninstall haskell-platform
  2. 내가 수도 경우 뿐만 아니라 Hackage를 통과하고 사람을 cabal install으로 만드는 것, 즉 대부분 Haskellers의 범위를 제한합니다.

개발 및 Haskellers를위한 유용한 도구로 Cabal (-install) + Hackage가 표시되지만 이에 적합하지 않습니다.

내가 사용하고있는 패키지의 소스를 다운로드하고 소스 트리에 포함 시켜서 빌드 명령에도 추가해야합니까? 또는 --package-db 옵션 (here)을 사용해야합니까? 아니면 제 수식이 패키지의 타볼을 즉시 다운로드하여 빌드 할 수 있습니까?

조금 (Arch wiki, GitHub repo)의 cabal2arch를 보았지만 의존성을 처리하는 방법이나 내가하고 싶지 않은 일을하는 것인지 확실하지 않습니다.

+4

바이너리를 배포하기가 쉽지 않으므로 Haskeleers가 아닌 사람이 빌드 할 필요가 없습니다. [Haskell wiki] (http://www.haskell.org/haskellwiki/Mac_OS_X#Shipping_Installable_Haskell_Applications)에 언급 된 패키지 도구가 있습니다. Haskellers는 cabal을 사용하여 소스에서 빌드 할 수 있습니다. – Mark

+1

언급 한 링크는 앱 번들을위한 것입니다. 내 프로그램은 명령 줄 도구입니다. 네, 그렇습니다. 그러나 저는 패키지 매니저로서 홈브류를 정말 좋아하고 소스로부터 모든 것을 빌드하는 것을 좋아합니다. ("왜 모든 것을 컴파일합니까?"섹션을 참조하십시오.) https://github.com/mxcl/homebrew/wiki /자주하는 질문). homebrew에서 "병"을 사용할 수는 있지만 실제로는 Qt처럼 빌드하는 데 몇 시간이 걸리는 작업을위한 것이므로 어디에서나 바이너리를 호스팅 할 수는 없습니다. – mk12

+1

그러나 대부분의 사용자는 자작작이 없으며 패키지 관리자가 아닌 컴파일 된 프로그램에 대한 간단한 바이너리를 사용자가 쉽게 다운로드 할 수 있습니다. 관리자를 사용해야하는 경우 macports를 시도하고 코드를 포트로 만들면 macports가 중앙에서 빌드하고 사용자가 미리 작성된 바이너리를 다운로드합니다. – Mark

답변

1

제 의견으로는 패키지 관리자를 사용하기로 결정한 경우 모든 종속성을 빌드하거나 다른 방법으로 쉽게 사용할 수 있어야합니다. GHC와 핵심 라이브러리 세트에만 의존한다면 전체 플랫폼을 나란히 만들 필요가 없습니다.

그러나 소스에서 빌드하려면 (IMO는 모든 아이디어가 아닌 수많은 경우에 좋은 아이디어 임) 모든 종속성을 빌드하는 것은 반드시 있어야합니다. 우리는 수퍼 컴퓨터에 과학적 소프트웨어를 배치하기 위해 HPC 환경에서 사용하는 빌드 시스템 [1]에서도 동일한 작업을 수행합니다. 그러나 그것은 비용이 많이 든다. 그러한 시스템을 부트 스트랩하는 것은 꽤 오랜 시간이 걸릴 수 있습니다. 왜냐하면 전체 툴체인과 모든 필요한 라이브러리가 필요하기 때문입니다.

실제로 우리는 GHC와 haskell 패키지를위한 빌드 시스템에 지원을하고 있습니다. 필요하다면 의존성도 포함될 것입니다. 적어도 우리가 사용자가 필요에 따라 자신의 계정에 하스켈을 설치할 수 있도록 도용을 배치 할 수 있는지 확인합니다.

TL; DR 종속성에 대한 지원을 추가하십시오.

[1]