「Haskell パッケージガイドライン」の版間の差分
(arch-hs の使用方法を翻訳して追加) |
(PKGBUILD ライブラリの例を翻訳して追加) |
||
47行目: | 47行目: | ||
$ cabal update |
$ cabal update |
||
+ | |||
+ | == PKGBUILD ライブラリの例 == |
||
+ | |||
+ | Haskell ライブラリのパッケージ化は Haskell プログラムのパッケージ化とは異なります。ArchLinux にパッケージ化されたライブラリは、パッケージ化された Haskell プログラムで使用されることを目的としています。 |
||
+ | |||
+ | {{hc|PKGBUILD|<nowiki> |
||
+ | # Maintainer: Your Name <youremail@domain.com> |
||
+ | _hkgname=stm-delay |
||
+ | pkgname=haskell-stm-delay |
||
+ | pkgver= |
||
+ | pkgrel=1 |
||
+ | license=() |
||
+ | arch=('x86_64') |
||
+ | url="https://hackage.haskell.org/package/$_hkgname" |
||
+ | depends=(ghc-libs) |
||
+ | makedepends=(ghc) |
||
+ | source=("https://hackage.haskell.org/packages/archive/$_hkgname/$pkgver/$_hkgname-$pkgver.tar.gz") |
||
+ | sha256sums=() |
||
+ | |||
+ | build() { |
||
+ | cd "$_hkgname-$pkgver" |
||
+ | |||
+ | runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \ |
||
+ | --prefix=/usr --docdir="/usr/share/doc/$pkgname" --enable-tests \ |
||
+ | --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ |
||
+ | --ghc-option=-optl-Wl\,-z\,relro\,-z\,now \ |
||
+ | --ghc-option='-pie' |
||
+ | |||
+ | runhaskell Setup build $MAKEFLAGS |
||
+ | runhaskell Setup register --gen-script |
||
+ | runhaskell Setup unregister --gen-script |
||
+ | sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh |
||
+ | sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh |
||
+ | } |
||
+ | |||
+ | check() { |
||
+ | cd "$_hkgname-$pkgver" |
||
+ | runhaskell Setup test |
||
+ | } |
||
+ | |||
+ | package() { |
||
+ | cd "$_hkgname-$pkgver" |
||
+ | |||
+ | install -D -m744 register.sh "$pkgdir/usr/share/haskell/register/$pkgname.sh" |
||
+ | install -D -m744 unregister.sh "$pkgdir/usr/share/haskell/unregister/$pkgname.sh" |
||
+ | runhaskell Setup copy --destdir="$pkgdir" |
||
+ | install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" |
||
+ | rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" |
||
+ | } |
||
+ | </nowiki>}} |
2022年2月21日 (月) 13:19時点における版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このドキュメントでは Arch で良質な Haskell パッケージを作成するための決まり事とガイドラインを説明しています。
パッケージの命名
Haskell ライブラリには haskell-libraryname
を使用し、通常は hackage と同じ名前を使用します。
ソース
Haskell のプログラムやライブラリのソースは、hackage が好ましいです。PKGBUILD#source にあります。source=()
配列は、以下の URL テンプレートを使用してください。
https://hackage.haskell.org/packages/archive/$_hkgname/$pkgver/$_hkgname-$pkgver.tar.gz
Haskell のパッケージは一般的に haskell- という接頭辞が付くため、hkgname
の代わりにカスタム変数 _hkgname
が使用されることに注意してください。この変数は一般的に以下のように定義することができます。
_hkgname=stm-delay
リビルドの順番
Haskell ライブラリがビルドフラグを変更したり更新された場合、依存するパッケージはすべてリビルドする必要があります。genrebuild ツールは、何がどのようにリビルドされる必要があるかを調べるために使用できます。使用例です。
$ ./genrebuild -H haskell-basement
arch-hs の使用方法
arch-hs は PKGBUILD
の生成と保守を自動化するために提供されています。
Hackage パッケージ(とパッケージ化されていない依存パッケージ)に対して一連の PKGBUILD
を生成するには。
$ arch-hs -o /path/to/workdir library_name
既存のパッケージを更新するために、依存関係やその他のパッケージング・メタデータを比較する。
$ arch-hs-diff library_name old_version new_version
Arch [community] パッケージのバージョンと、それに対応する Hackage パッケージのバージョンを比較する。
$ arch-hs-sync check
なお、arch-hs
は Hackage データベースの保守に cabal-install を使用していますので、定期的に cabal-install データベースを更新し維持して下さい。
$ cabal update
PKGBUILD ライブラリの例
Haskell ライブラリのパッケージ化は Haskell プログラムのパッケージ化とは異なります。ArchLinux にパッケージ化されたライブラリは、パッケージ化された Haskell プログラムで使用されることを目的としています。
PKGBUILD
# Maintainer: Your Name <youremail@domain.com> _hkgname=stm-delay pkgname=haskell-stm-delay pkgver= pkgrel=1 license=() arch=('x86_64') url="https://hackage.haskell.org/package/$_hkgname" depends=(ghc-libs) makedepends=(ghc) source=("https://hackage.haskell.org/packages/archive/$_hkgname/$pkgver/$_hkgname-$pkgver.tar.gz") sha256sums=() build() { cd "$_hkgname-$pkgver" runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \ --prefix=/usr --docdir="/usr/share/doc/$pkgname" --enable-tests \ --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid \ --ghc-option=-optl-Wl\,-z\,relro\,-z\,now \ --ghc-option='-pie' runhaskell Setup build $MAKEFLAGS runhaskell Setup register --gen-script runhaskell Setup unregister --gen-script sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh } check() { cd "$_hkgname-$pkgver" runhaskell Setup test } package() { cd "$_hkgname-$pkgver" install -D -m744 register.sh "$pkgdir/usr/share/haskell/register/$pkgname.sh" install -D -m744 unregister.sh "$pkgdir/usr/share/haskell/unregister/$pkgname.sh" runhaskell Setup copy --destdir="$pkgdir" install -D -m644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" rm -f "${pkgdir}/usr/share/doc/${pkgname}/LICENSE" }