最近、yesod initが変わっちゃったみたい
最近、こうなる
cuomo@karky7 ~ $ yesod init yesod: The init command has been removed. Please use 'stack new' insteadなんだよ、そうなっちゃってたの?
stackをいれる
stackってライブラリのバージョンセットを管理してくれるツール、便利だけど、gentoo-haskell使っている場合はあんまりうまくない。
Stackageはここ
karky7 ~ # emerge dev-haskell/stack
yesodのscaffoldを作成する
stackコマンドでそれぞれのテンプレートが作成出きるようになる
cuomo@karky7 ~ $ stack templates chrisdone franklinchen ghcjs ghcjs-old-base hakyll-template haskeleton hspec new-template quickcheck-test-framework rubik scotty-hello-world scotty-hspec-wai servant servant-docker simple simple-hpack tasty-discover tasty-travis yesod-hello-world yesod-minimal yesod-mongo yesod-mysql yesod-postgres yesod-postgres-fay yesod-simple yesod-sqlite cuomo@karky7 ~ $ stack templatesここからyesod-mysqlのテンプレートでalchuプロジェクトのscaffoldを作成する、ghcとかその他のyesodに関係するライブラリがはいっているので追加オプションでその辺を調整する。初回の実行はちょっと時間がかかるよ。
cuomo@karky7 ~/Code/yesod $ stack --system-ghc --no-install-ghc new alchu yesod-mysql Downloading template "yesod-mysql" to create project "alchu" in alchu/ ... Using cabal packages: - alchu/alchu.cabal Selecting the best among 3 snapshots... Downloaded lts-5.5 build plan. Caching build plan Fetched package index. Populated index cache. * Selected lts-5.5 Initialising configuration using resolver: lts-5.5 Writing configuration to file: alchu/stack.yaml All done. cuomo@karky7 ~/Code/yesod $mysqlを起動し、alchuを動かす
karky7 ~ # systemctl start mysqld karky7 ~ # mysqladmin -u root create alchuでdevelする
cuomo@karky7 ~ $ cd alchu/ cuomo@karky7 ~/alchu $ yesod develこれで開発サーバーが起動する
stackとgentoo-haskell
gentoo-haskell使っているとstackを使ってインストールすることはあまりないと思いますが、gentoo-haskellにないライブラリ何かはstackで入れればいいとは思います。 hackportでebuild作っても簡単に入れられるので、どちらでもいいとは思いますが。
ちょっと機能的にかぶるので、ややこしい感は有りますが、バージョンセットを決めてくれたり、まえのcabalよりは統合されていて使いやすいですね。 ちなみに、~/.stackディレクトリに情報がはいっています。
.stack/ ├── build-plan │ └── lts-5.5.yaml ├── build-plan-cache │ └── x86_64-linux │ └── lts-5.5.cache ├── config.yaml ├── indices │ └── Hackage │ ├── 00-index.cache │ ├── 00-index.tar │ └── git-update │ └── all-cabal-hashes │ └── README.md └── templates ├── yesod-mysql.hsfiles └── yesod-mysql.hsfiles.etagstackでインストールした場合、この辺に実行プログラムとかがインストールされるようです。
でも、stackは非常に便利なので、みんなで使いましょう。
stackのオプション
こんなに覚えられるわけない...
cuomo@karky7 ~ $ stack --help stack - The Haskell Tool Stack Usage: stack [--help] [--version] [--numeric-version] [--docker*] [--nix*] ([--verbosity VERBOSITY] | [-v|--verbose]) [--work-dir WORK-DIR] [--[no-]system-ghc] [--[no-]install-ghc] [--arch ARCH] [--os OS] [--ghc-variant VARIANT] [-j|--jobs JOBS] [--extra-include-dirs DIR] [--extra-lib-dirs DIR] [--[no-]skip-ghc-check] [--[no-]skip-msys] [--local-bin-path DIR] [--[no-]modify-code-page] [--resolver RESOLVER] [--compiler COMPILER] [--[no-]terminal] [--stack-yaml STACK-YAML] COMMAND|FILE Available options: --help Show this help text --version Show version --numeric-version Show only version number --docker* Run 'stack --docker-help' for details --nix* Run 'stack --nix-help' for details --verbosity VERBOSITY Verbosity: silent, error, warn, info, debug -v,--verbose Enable verbose mode: verbosity level "debug" --work-dir WORK-DIR Override work directory (default: .stack-work) --[no-]system-ghc Enable/disable using the system installed GHC (on the PATH) if available and a matching version --[no-]install-ghc Enable/disable downloading and installing GHC if necessary (can be done manually with stack setup) --arch ARCH System architecture, e.g. i386, x86_64 --os OS Operating system, e.g. linux, windows --ghc-variant VARIANT Specialized GHC variant, e.g. integersimple (implies --no-system-ghc) -j,--jobs JOBS Number of concurrent jobs to run --extra-include-dirs DIR Extra directories to check for C header files --extra-lib-dirs DIR Extra directories to check for libraries --[no-]skip-ghc-check Enable/disable skipping the GHC version and architecture check --[no-]skip-msys Enable/disable skipping the local MSYS installation (Windows only) --local-bin-path DIR Install binaries to DIR --[no-]modify-code-page Enable/disable setting the codepage to support UTF-8 (Windows only) --resolver RESOLVER Override resolver in project file --compiler COMPILER Use the specified compiler --[no-]terminal Enable/disable overriding terminal detection in the case of running in a false terminal --stack-yaml STACK-YAML Override project stack.yaml file (overrides any STACK_YAML environment variable) Available commands: build Build the package(s) in this directory/configuration install Shortcut for 'build --copy-bins' uninstall DEPRECATED: This command performs no actions, and is present for documentation only test Shortcut for 'build --test' bench Shortcut for 'build --bench' haddock Shortcut for 'build --haddock' new Create a new project from a template. Run `stack templates' to see available templates. templates List the templates available for `stack new'. init Initialize a stack project based on one or more cabal packages solver Use a dependency solver to try and determine missing extra-deps setup Get the appropriate GHC for your project path Print out handy path information unpack Unpack one or more packages locally update Update the package index upgrade Upgrade to the latest stack (experimental) upload Upload a package to Hackage sdist Create source distribution tarballs dot Visualize your project's dependency graph using Graphviz dot exec Execute a command ghc Run ghc ghci Run ghci in the context of package(s) (experimental) repl Run ghci in the context of package(s) (experimental) (alias for 'ghci') runghc Run runghc runhaskell Run runghc (alias for 'runghc') eval Evaluate some haskell code inline. Shortcut for 'stack exec ghc -- -e CODE' clean Clean the local packages list-dependencies List the dependencies query Query general build information (experimental) ide IDE-specific commands docker Subcommands specific to Docker use config Subcommands specific to modifying stack.yaml files image Subcommands specific to imaging (EXPERIMENTAL) hpc Subcommands specific to Haskell Program Coverage sig Subcommands specific to package signatures (EXPERIMENTAL)
0 件のコメント:
コメントを投稿