拱形-hs:将黑客软件包分发到archlinux

[分布,图书馆,麻省理工学院,程序][建议标签]

拱形-hs是一个命令行程序,它简化了生产过程并通过自动化具有依赖解析和模板填充的PKGBUILD生成。目前,拱形-hs是不稳定的,所以包装商不应该100%信任它,而是始终遵循Haskell程序包指南.


[跳到自述]

旗帜

手动标记

姓名描述违约
阿尔卑斯山

是否使用libalpm

残疾人

使用-f<标志>启用标志,或-f-<标志>禁用该标志。更多信息

下载

注意:此软件包具有元数据修订在阴谋集团的描述中比tarball中包含的要新。要打开包括修订版在内的包装,请使用“cabal get”。

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

版本[RSS(RSS)] 0.0.0.0,0.1.0.0,0.1.1.0,0.2.0.0,0.3.0.0,0.4.0.0,0.5.0.0,0.6.0.0,0.6.1.0,0.6.2.0,0.7.0.0,0.7.1.0,0.8.0.0,0.9.0.0,0.9.1.0,0.10.0.0,0.10.1.0,0.10.2.0,0.11.0.0,0.11.1.0
更改日志 CHANGELOG.md公司
依赖关系 伊森(>=1.5.4 && <2.3),代数图(>=0.5 && <0.8),拱形-hs,拱形焊缝(>=0.2 && <0.3),基础(>=4.12 && <5),字节删除,卡瓦尔(>=3.2 && <3.7),管道(>=1.3.2 && <1.4),外导管(>=1.3.5 && <1.4),容器,deepseq公司(>=1.4.4 && <1.5),差异(>=0.4.0 && <0.5),目录(>=1.3.6 && <1.4),文件路径(>=1.4.2 && <1.5),黑客数据库(>=2.1.0 && <2.2),http-客户端,http-客户端-tls,百万帕斯卡(>=9.0.0 && <9.1 || >=9.1.0 && <9.2 || >=9.2.0 && <9.3 || >=9.3.0 && <9.4 || >=9.4.0 && <9.5),微透镜(>=0.4.11 && <0.5),微透镜th(>=0.4.3 && <0.5),内插(>=0.5.1 && <0.6),optparse示例(>=0.1.1.3 && <0.2),多义(>=1.5.0 && <1.10),漂亮的打印机(>=1.7.0 && <1.8),prettyprinter-ansi终端(>=1.1.2 && <1.2),服务客户端(>=0.1.82&&<0.21),分裂(>=0.2.3 && <0.3),焦油导管(>=0.3.2 && <0.4 || >=0.4.0 && <0.5),template-haskell模板(>=2.16.0 && <2.17 || >=2.17.0 && <2.18 || >=2.18.0 && <2.19),文本[细节]
许可证 麻省理工学院
版权所有 (c) 2020-2022年伯伯曼
作者 伯伯曼
维护人员 伯伯曼<berberman@yandex.com>
修订过的 第4次修订制造商费利克逊马尔斯2023-11-14T09:52:59Z年
类别 分发
主页 https://github.com/berberman/arch-hs
Bug跟踪器 https://github.com/berberman/arch-hs/issues网站
源回购 头部:git克隆https://github.com/berberman/arch-hs.git
已上传 通过费利克逊马尔斯2023-05-30T17:30:42Z
分配 架构(architecture):0.11.1.0
可执行程序 arch-hs-rdepcheck、arch-hs-sync、arch-hs-diff、arch-hs
下载 总计3660人(过去30天内有60人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2023-05-30[所有1个报告]

arch-hs-0.11.1.0自述文件

[返回包描述]

拱形-hs

黑客攻击 附属国 麻省理工学院许可证

环境 CI公司
帕克曼(-f alpm) ArchLinux
电缆安装 CI公司

一个为黑客软件包生成PKGBUILD的程序。特别感谢费利克逊马尔斯.

请注意拱形-hs始终只支持Arch Linux使用的最新GHC版本。

引言

给定黑客软件包的名称,拱形-hs不仅可以为包生成PKGBUILD文件其名称已给定,但也适用于中缺少的所有依赖项[额外].拱形-hs有一个天真的内置依赖关系求解器,它可以获取这些依赖关系并找出需要打包的依赖关系。在依赖关系计算期间,由于arch haskell打包策略,所有版本约束都将被丢弃,因此无法保证依赖项的版本一致性。

先决条件

拱形-hs是PKGBUILD文本文件生成器,未与集成帕克曼(请参见Alpm支持),仅取决于:

  • Pacman数据库(额外.db,附加文件,芯.db、和核心文件)

  • 黑客指数tarball(01-索引.tar,或00-索引.tarprevious)--通常由提供电缆安装

安装

拱形-hs是可移植的,这意味着它不限于Arch Linux。然而,拱形-hs可以使用libalpm在Arch Linux上加载pacman数据库,如果你想在其他系统上运行,你必须从源代码构建它。

安装最新版本

#pacman-S arch-hs

拱形-hs在中可用[额外],因此可以使用安装帕克曼.

安装开发版本

#帕克曼-S arch-hs-git

这个-吉特版本在中可用[archlinuxcn],遵循最新的git提交。

生成

$git克隆https://github.com/berberman/arch-hs

然后通过堆栈或阴谋构建它。

堆栈

$stack构建

电缆(动态)

$cabal configure--disable-library-vanilla--enable-shared--enable-executable-dynamic--ghc-options=-dynamic$cabal构建

用法

快跑吧拱形-hs在带有选项和目标的命令行中。以下是一个示例:我们将创建的archlinux包gi-gdk公司.

输出:
$arch-hs-o~/test--alpm gi-gdkⓘ 从/home/berberman/.cabal/packages/hackage.haskell.org/01-index.tar加载黑客攻击ⓘ 从libalpm加载extra.dbⓘ 开始运行。。。ⓘ 已解决:...吉格德克├─Cabal(设置)[额外]├─字节存储(Lib)[额外]├─容器(Lib)[额外]├─gi-cairo(库,设置)[额外]├─gi-gdkpixbuf(库,设置)├─gi-gio(库,设置)├─gi-glib(库,设置)├─gi-gobject(库、设置)├─gi pango(Lib,设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]gi gdkpixbufŞ├─Cabal(设置)[额外]├─字节存储(Lib)[额外]├─容器(Lib)[额外]├─gi gio(自由,设置)├─gi-glib(库,设置)├─gi-gobject(库、设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]吉吉奥├─Cabal(设置)[额外]├─字节存储(Lib)[额外]├─容器(Lib)[额外]├─gi glib(Lib,设置)├─gi-gobject(库、设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]吉格利布├─Cabal(设置)[额外]├─字节串(Lib)[额外]├─容器(Lib)[额外]├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]gi-g物体├─Cabal(设置)[额外]├─字节存储(Lib)[额外]├─容器(Lib)[额外]├─gi-glib(库,设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]吉哈夫巴斯├─Cabal(设置)[额外]├─字节存储(Lib)[额外]├─容器(Lib)[额外]├─gi-glib(库,设置)├─gi-gobject(库、设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]吉邦戈├─Cabal(设置)[额外]├─字节串(Lib)[额外]├─容器(Lib)[额外]├─gi-glib(库,设置)├─gi-gobject(库、设置)├─gi-harfbuzz(库,设置)├─haskell-gi(库,设置)[额外]├─haskell-gi-base(库)[额外]├─haskell-gi-过载(Lib)[额外]├─文本(Lib)[额外]└─变压器(Lib)[额外]...ⓘ 建议的包装订单:1.油嘴滑舌2.gi-g对象3.吉哈夫巴斯4.吉潘戈5.gi-gio公司6.gi-gdkpixbuf7、gi-gdkⓘ 从目标检测到pkgconfig或extraLib:gi-gdk:gtk4.pcgi-gdkpixbuf:gdk-pixbuf-2.0.pcgi-gio:gio-2.0.pcgi-glib:glib-2.0.pcgi-gobject:gobject-2.0.pcgi-harfbuzz:harfbuzz.pc、harfbuz-gobject.pcgi-pango:pango.pcⓘ 现在使用文件db查找相应的系统包:ⓘ 从libalpm加载[core]文件ⓘ 从libalpm加载[额外]文件ⓘ 完成时间:gtk4.pc⇒gtk4gdk-pixbuf-2.0.pc⇒gdk-pix buf2gio-2.0.pc⇒glib2glib-2.0.pc⇒glib2gobject-2.0.pc⇒glib2harfbuzz.pc⇒harfbuzz公司harfbuzz-gobject.pc⇒harfbuzz公司pango.pc⇒pangoⓘ 写入文件:/home/berberman/test/haskell gi gdk/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-gdkpixbuf/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-gio/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-glib/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-gobject/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-harfbuzz/PKGBUILDⓘ 写入文件:/home/berberman/test/haskell-gi-pango/PKGBUILD成功!

这个输出告诉我们为了打包gi-gdk公司,我们必须打包其依赖项以套餐顺序列出,但[额外]回购中不存在。特别地,gi-gdk公司需要外部系统依赖性,因此拱形-hs可以使用filesdb将它们映射到系统包。

$tree~/test($tree ~/test)/home/berberman/测试├── 哈斯克尔·吉·格德克│   └── PKGBUILD公司├── haskell-gi-gdkpixbuf公司│   └── PKGBUILD公司├── 哈斯克尔·吉奥│   └── PKGBUILD公司├── 哈斯克尔·盖格利布│   └── PKGBUILD公司├── haskell-gi-gobject公司│   └── PKGBUILD公司├── 哈斯克尔·基·哈夫布兹│   └── PKGBUILD公司└── 哈斯克尔·吉·潘戈└── PKGBUILD公司

拱hs为每个包生成PKGBUILD。让我们看看里面有什么./haskell-gi-harfbuzz/PKGBUILD公司:

#此文件由生成https://github.com/berberman/arch-hs,请手动检查。#维护人员:您的姓名<youremail@domain.com>_hkgname=gi-harfbuzzpkgname=haskell-gi-harfbuzzpkgver=0.0.3pkgrel=1pkgdesc=“HarfBuzz绑定”url=“https://github.com/haskell-gi/haskell-gi"许可证=(“LGPL2.1”)arch=('x86_64')depends=('ghc-libs''haskell-gi-glib''haskell-gi-gobject''hasbell-gi''haswell-gi-base''hasvell-gi-overloading''harfbuzz')makedependens=('ghc')源=(“https://hackage.haskell.org/packages/archive网站/$_hkgname/$pkgver/$_hkgname-$pkgvers.tar.gz“)sha256sums=('5f61c7b07427d0b77f867c3bc560043239c6184f98921295ce28fc8c9ce257e5')构建(){cd$_hkgname-$pkgverrunhaskell安装程序configure-O--启用共享--启用可执行动态--禁用library-vanilla\--prefix=/usr--docdir=/usr/share/doc/$pkgname--启用测试\--dynlibdir=/usr/lib--libsubdir=\$compiler/site-local/\$pkgid\--ghc-option=-optl-Wl \,-z\,relro \,-z \,现在\--ghc-option=“-pie”runhaskell安装程序版本runhaskell安装寄存器--gen-scriptrunhaskell安装程序注销--gen-scriptsed-i-r-e“s|ghc-pkg.*更新[^]*|&'--force'|”寄存器.shsed-i-r-e“s|ghc-pkg.*unregister[^]*|&'--force'|”unregister.sh}包装(){cd$_hkgname-$pkgver安装-D-m744 register.sh“$pkgdir”/usr/share/haskell/register/$pkgname.shinstall-D-m744 unregister.sh“$pkgdir”/usr/share/haskell/unregister/$pkgname.shrunhaskell安装副本--destdir=“$pkgdir”安装-D-m644 LICENSE-t“$pkgdir”/usr/share/licenses/$pkgname/rm-f“$pkgdir”/usr/share/doc/$pkgname/LICENSE}

拱形-hs将从黑客数据库收集信息,并在完成一些处理步骤后将其应用于固定模板包括重命名、匹配许可证和填写依赖项等。然而,到目前为止还没有进行包装。拱形-hs不能保证这个包可以由ghc用最新的依赖项构建;因此,在准备(),例如乌西语.

选项

输出

$arch-hs-o~/test目标

使用-o(o)可以生成一系列PKGBUILD,包括目标将其依赖项放入输出目录。如果不传递它,则只会进行依赖项计算。

标志分配

$arch-hs-f目标:FLAG_A:真正的目标

使用-(f)可以传递标志,这可能会影响解析的结果。

AUR搜索

$arch-hs-目标

使用-一个,拱形-hs将把AUR视为另一个包提供商,并将尝试搜索AUR中丢失的包。

正在跳过组件

$arch-hs-s组件_A目标

使用-秒可以在依赖项解析中强制跳过可运行的组件。当包没有提供禁用其可运行项的标志时,这很有用,可运行项将在默认情况下构建,但在系统级打包中并不重要。请注意,这只有在拱形-hs,而生成的PKGBUILD和实际构建过程不会受到影响。

额外Cabal文件

$arch-hs-e~/目标

仅用于测试目的

使用-e(电子)可以包括额外的.cabal公司文件作为补充。目标还没有发布到hackage。

跟踪

$arch-hs—跟踪目标

使用--轨迹,拱形-hs可以将依赖关系解析过程打印到stdout。

$arch-hs--trace-file foo.log目标

类似--轨迹,但日志将写入文件。

乌西

$arch-hs-o~/test——uusi目标

使用--uusi公司,拱形-hs将为每个包生成以下代码段:

准备(){uusi$_hkgname-$pkgver/$_hkgname.cabal}

请参见乌西语了解详细信息。

阿尔卑斯山

请参见Alpm支持.

作用力

$arch-hs—强制目标

使用--力,拱形-hs即使提供了目标,也会尝试打包。

杰森

$arch-hs--json/output.json目标

使用--杰森,拱形-hs将stdout中显示的信息以JSON格式转储到文件中,包括:

  • 异常依赖关系
  • 已解决的包
  • 建议的包装订单
  • 系统相关性
  • 旗帜

没有遗漏跳过

$arch-hs--无跳过-缺少目标

使用--无skip缺失,拱形-hs如果此包的依赖项存在而此包不存在,则将尝试打包。

名称预设

要将haskell包分发到archlinux,应该根据命名约定更改包的名称:

  • 对于haskell库,它们的名称必须具有哈斯克尔-前缀

  • 对于程序,这取决于环境

  • 名称应始终小写

然而,仅在字符串前面加上前缀是不够的哈斯克尔-并转换为小写;在某些特殊情况下,黑客名称可能有哈斯克尔-前缀已经存在,或者大小写不规则,因此我们必须手动预设名称。一旦包分发到archlinux,如果名称符合上述情况,则应相应升级名称预设。

差异

拱形-hs还提供了一个名为拱形-hs-diff.拱形-hs-diff可以示出包的两个版本之间的包描述的差异,并提醒我们,如果额外repo中的某些必需包不能满足版本约束,或者它们不存在。这在随后的包维护中很有用。例如:

$arch-hs-diff--alpm comonad 5.0.6 5.0.7版本ⓘ 从libalpm加载extra.dbⓘ 开始运行。。。ⓘ 正在从下载cabal文件https://hackage.haskell.org/package/comonad-5.0.6/revision/0.cabal。。。ⓘ 正在从下载cabal文件https://hackage.haskell.org/package/comonad-5.0.7/revision/0.cabal。。。包装:comonad版本:5.0.6⇒5.0.7剧情简介:共鸣曲网址:http://github.com/ekmett/comonad/取决于:基数>=4&&<5容器>=0.3&&<0.7分布>=0.2.2&&<1标记>=0.7&&<1变压器>=0.2和<0.6变压器-兼容>=0.3&&<1--------------------------------------基数>=4&&<5容器>=0.3&&<0.7分布>=0.2.2&&<1索引可移动>=0.1&&<0.2标记>=0.7&&<1变压器>=0.2和<0.6变压器-兼容>=0.3&&<1MakeDepends公司:基本-任何文档测试>=0.11.1&&<0.17--------------------------------------基本-任何文档测试>=0.11.1&&<0.18“doctest”要求在范围内(>=0.11.1&&<0.17),但[额外]提供了(0.17)。旗帜:余单子测试十月:描述:默认值:TrueisManual:正确容器:描述:可以使用“-f-containers”禁用“containers”包。禁用此选项是不受支持的配置,但它可能有助于专家用户加速沙盒中的构建。默认值:TrueisManual:正确分布式:描述:您可以使用“-f-distribute”禁用“distributive”包。禁用此选项是不受支持的配置,但它可能有助于专家用户加速沙盒中的构建。如果禁用,我们将不提供“Distributive”的实例`默认值:TrueisManual:正确--------------------------------------余单子测试十月:描述:默认值:TrueisManual:正确容器:描述:可以使用“-f-containers”禁用“containers”包。禁用此配置是不受支持的,但它可能有助于加速专家用户在沙盒中的构建。默认值:TrueisManual:正确分布式:描述:您可以使用“-f-distribute”禁用“distributive”包。禁用此选项是不受支持的配置,但它可能有助于专家用户加速沙盒中的构建。如果禁用,我们将不提供“Distributive”的实例`默认值:TrueisManual:正确索引可移动:说明:您可以使用“-f-indexed-traversable”禁用“indexed-troversable”包。禁用此选项是不受支持的配置,但它可能有助于专家用户加速沙盒中的构建。如果禁用,我们将不提供`FunctorWithIndex的实例`默认值:TrueisManual:正确成功!

拱形-hs-diff不需要hackagedb,而是从hackageserver下载cabal文件。

同步

仅针对黑客攻击分发维护者,请参阅arch-hs-sync--帮助了解详细信息。

限制

  • 拱形-hs如果求解的目标包含循环,则会出错。实际上,由于测试,黑客攻击中普遍存在循环依赖,但基本周期是由维护人员在[额外]中手动解决的。所以在简化了提供者之后,拱形-hs可以消除这些循环。然而,如果目标引入了新的循环,或者它依赖于未知循环中的包,拱形-hs会扔循环存在例外。

  • 拱形-hs无法处理复杂的情况:一个包的库部分存在于黑客攻击中,一些库包含外部源,等等。

  • 拱形-hs的功能仅限于依赖关系处理,而必要的过程如文件修补程序、版本范围过程等需要手动完成,因此请勿对生成的PKGBUILD文件给予过多信任。

Alpm支持

阿尔卑斯山是Arch Linux包管理库。在Arch Linux上运行时,加载额外.db通过此库的文件dbs比使用内部解析器的速度稍快拱形-hs.因此,拱形-hs提供标志阿尔卑斯山要启用此功能:

阴谋集团建筑-f alpm

此标志在中默认启用拱形-hsArch Linux包。使用编译阿尔卑斯山,拱形-hs默认情况下,使用alpm加载pacman数据库。在这种情况下,CLI标志--no-alpm-额外--no-alpm文件可用于禁用此功能。

什么时候?阿尔卑斯山已启用,拱形-hs将失去指定路径的功能额外.db和文件db的目录。

贡献

始终欢迎问题和PR。_(:з」∠)_