Haskell(Stack)でGitHubにあるライブラリを使う方法
About
こちらのプロジェクトでmorishin氏のhsmecab(tanakh氏のhsmecabのstack対応用Fork版)を使用する必要がありましたが、
Hackageに登録されているhsmecabはtanakh氏のもので…Stackからは使えなかったので
その際にGitHubリポジトリにあるstack対応版をどのように使用したか…というもののまとめです。
-
わかること
- HaskellのstackプロジェクトでGitHub上にあるstackライブラリプロジェクトを扱う方法
-
多分わからないこと
- stackを使用しない、cabal関連のHowTo
以下、「GitHubリポジトリ」は「stack用Haskellライブラリ」があるリポジトリを指します。
方法
方法は簡単で
$ stack new {project-name} {template-name}
を実行するとプロジェクトルート直下にできるであろうファイルstack.yaml
を弄り、{project-name}.cabal
にbuild-dependsを追加するだけです。
- 手順
-
stack.yaml
に使いたいGitHubリポジトリの情報を追加する -
{project-name}.caball
のbuild-dependsに、手順1で追加したリポジトリのモジュール名を追加する
-
1. stack.yamlに使いたいGitHubリポジトリの情報を追加する
今回の場合、追加したいのはhttps://github.com/morishin/hsmecab
ですので、packages
にlocation
を追加します。
# Local packages, usually specified by relative directory name
packages:
- '.'
- location:
git: https://github.com/morishin/hsmecab.git
commit: 2da6677fbd42bb77d3b6e61c02edfeebe248e184
2. {project-name}.caballのbuild-dependsにモジュール名を追加する
https://github.com/morishin/hsmecab.git
によって提供されるモジュールの名前はmecab
なので、
{project-name}.cabal
のbuild-dependsに、mecab
を追加します。
build-depends: base >= 4.7 && < 5
, (省略)
, mecab
, (省略)
これで手順は完了です。
まとめ
こちらのプロジェクトの、
2016-06-14時点の最終的なstack.yaml
及び{project-name}.cabal
(hs-gorira.cabal)を載せます。
# This file was automatically generated by stack init
# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration/
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
resolver: lts-5.14
# Local packages, usually specified by relative directory name
packages:
- '.'
- location:
git: https://github.com/morishin/hsmecab.git
commit: 2da6677fbd42bb77d3b6e61c02edfeebe248e184
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps: []
# Override default flag values for local packages and extra-deps
flags: {}
# Extra package databases containing global packages
extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: >= 1.0.0
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor
name: hs-gorira
version: 0.1.0.0
synopsis: Simple project template from stack
description: Please see README.md
homepage: https://github.com/githubuser/hs-gorira#readme
license: BSD3
license-file: LICENSE
author: aiya000
maintainer: aiya000.develop at gmail.com
copyright: 2016 aiya000
category: Web
build-type: Simple
cabal-version: >=1.10
executable hs-gorira
hs-source-dirs: src
main-is: Main.hs
other-modules: Config
, Control.GoriraMeCab
, Control.GoriraTwitter
, Data.GoriraMeCab
, Data.GoriraTwitter
default-language: Haskell2010
build-depends: base >= 4.7 && < 5
, HTTP
, aeson
, authenticate-oauth
, bytestring
, conduit
, conduit-extra
, connection
, http-client
, http-conduit
, lens-aeson
, mecab
, random-shuffle
, resourcet
, text
, transformers