repo icon indicating copy to clipboard operation
repo copied to clipboard

Add python-fontmake

Open taotieren opened this issue 2 years ago • 34 comments

taotieren avatar Jan 27 '23 12:01 taotieren

下面这些依赖不在官方源或 archlinuxcn 源里。缺失相关依赖,因此无法完成打包。

error: target not found: python-fontmath
error: target not found: python-glyphslib
error: target not found: python-ttfautohint-py
error: target not found: python-ufo2ft
error: target not found: python-compreffor
error: target not found: python-defcon
error: target not found: python-mutatormath
error: target not found: python-skia-pathops

好的,晚点抽空补齐这些包。

taotieren avatar Jan 29 '23 08:01 taotieren

~~待续。后满还有一些包需要补齐。。。。。。~~

@Y7n05h 需要的依赖包补齐了,可以帮忙检查下吗?没问题的话帮忙合并下,谢谢

taotieren avatar Jan 30 '23 03:01 taotieren

我目前只 review 了一部分。看起来有一些包,没法完成打包流程。这可能与你没有使用 devtools 来验证你的 PKGBUILD 有关。

请确保每一个 PKGBUILD 能通过 devtools 打包(需要安装 devtools-cn-git)。 在含有 PKGBUILD 的目录中执行 extra-x86_64-buildarchlinuxcn-x86_64-build 就好。如果需要使用一个源里面没有的包可以通过参数 -I PATH 把本地包传进去。

好的,我按这个方式重新测试下。

taotieren avatar Feb 02 '23 03:02 taotieren

上传的包,全部经过 archlinuxcn-x86_4-build 编译测试。 @hubutui @Y7n05h 什么时候帮忙合并下呢?

taotieren avatar Feb 03 '23 13:02 taotieren

我目前只 review 了一部分。看起来有一些包,没法完成打包流程。这可能与你没有使用 devtools 来验证你的 PKGBUILD 有关。

请确保每一个 PKGBUILD 能通过 devtools 打包(需要安装 devtools-cn-git)。 在含有 PKGBUILD 的目录中执行 extra-x86_64-buildarchlinuxcn-x86_64-build 就好。如果需要使用一个源里面没有的包可以通过参数 -I PATH 把本地包传进去。

更新: 突然发现我把 -I 的用法没说清楚,可能产生了歧义。举例说明一下:

extra-x86_64-build -- -I ../libglibutil/libglibutil-1.0.67-1-x86_64.pkg.tar.zst -I ../libgbinder/libgbinder-1.1.31-1-x86_64.pkg.tar.zst

多谢,能看懂,

taotieren avatar Feb 04 '23 06:02 taotieren

另外,虽然你想要打的包是 python-fontmake-git,但是并不是说它依赖的那些包都要打 -git 包的。一般来说,建议打个普通的发行版本的包就可以了,包括 python-fontmake。如果打 -git 包,也可以考虑设置 lilac_throttle,避免过于频繁的打包。这部分可以在仓库里搜一下 lilac_throttle,看看其他 -git 包的设置。

hubutui avatar Feb 04 '23 14:02 hubutui

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

hubutui avatar Feb 04 '23 14:02 hubutui

check 这部分应该用 pytest 或者 nosetest,参考打包指南python setup.py test 这种用法是 deprecated 的,见 https://docs.pytest.org/en/7.1.x/explanation/goodpractices.html#do-not-run-via-setuptools

hubutui avatar Feb 04 '23 16:02 hubutui

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

确实没有设置这个,有参考设置吗?

taotieren avatar Feb 05 '23 05:02 taotieren

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

确实没有设置这个,有参考设置吗?

你直接搜一个呗,这仓库里肯定有很多包有这些的。比如 python-imagecodecs

hubutui avatar Feb 05 '23 05:02 hubutui

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

确实没有设置这个,有参考设置吗?

你直接搜一个呗,这仓库里肯定有很多包有这些的。比如 python-imagecodecs

仓库里面的 pre-commit hook 怎么配置的呢

taotieren avatar Feb 05 '23 05:02 taotieren

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

确实没有设置这个,有参考设置吗?

你直接搜一个呗,这仓库里肯定有很多包有这些的。比如 python-imagecodecs

仓库里面的 pre-commit hook 怎么配置的呢

https://github.com/archlinuxcn/repo/blob/master/pre-commit#L3-L16

imlonghao avatar Feb 05 '23 06:02 imlonghao

BTW,你可能是没有设置 precommit hook?设置好之后可以在你提交的时候做一些检查,检查不通过就不会成功提交。比如说缺了 repo_depends 之类的。

确实没有设置这个,有参考设置吗?

你直接搜一个呗,这仓库里肯定有很多包有这些的。比如 python-imagecodecs

仓库里面的 pre-commit hook 怎么配置的呢

https://github.com/archlinuxcn/repo/blob/master/pre-commit#L3-L16

注释中的这一行 ln -s ../../pre-commit .git/hooks 是不是配置有问题。

taotieren avatar Feb 05 '23 06:02 taotieren

注释中的这一行 ln -s ../../pre-commit .git/hooks 是不是配置有问题。

没有问题

imlonghao avatar Feb 05 '23 06:02 imlonghao

注释中的这一行 ln -s ../../pre-commit .git/hooks 是不是配置有问题。

这个命令需要在你 clone 下来的仓库的根目录中执行。你需要先 cd 过去。

Y7n05h avatar Feb 05 '23 07:02 Y7n05h

ci 没过我猜是因为 repo_depends 里面只能用 pkgname ,而不支持 provide 这种机制。

Y7n05h avatar Feb 06 '23 07:02 Y7n05h

其实我前面就有说了,一般来说没有特殊需要的话,不用打 -git 包.即使打 -git 包,也不代表这个包依赖的那些包都要打 -git 包.

PS:真的佩服这毅力,这么多依赖包,是我的话干脆就不打了.

建议安装好 namcap,使用 devtools 打包最后会自动进行包的检查,注意查看这些提示,根据提示修改好再提交吧.不然这个 review 到啥时候啊.这里指出的问题基本上是每个包都要检查的,返工一次也很耗费精力的.

hubutui avatar Feb 06 '23 08:02 hubutui

一般来说没有特殊需要的话,不用打 -git 包.即使打 -git 包,也不代表这个包依赖的那些包都要打 -git 包.

他可能误会了什么。https://github.com/archlinuxcn/repo/pull/3141#issuecomment-1411385020 我猜他可能觉得非 -git 是被保留给官方仓库的。

PS:真的佩服这毅力,这么多依赖包,是我的话干脆就不打了.

同感。我当初也提及过替代方案。https://github.com/archlinuxcn/repo/pull/3031#issuecomment-1407537148

Y7n05h avatar Feb 06 '23 08:02 Y7n05h

其实我前面就有说了,一般来说没有特殊需要的话,不用打 -git 包.即使打 -git 包,也不代表这个包依赖的那些包都要打 -git 包.

PS:真的佩服这毅力,这么多依赖包,是我的话干脆就不打了.

建议安装好 namcap,使用 devtools 打包最后会自动进行包的检查,注意查看这些提示,根据提示修改好再提交吧.不然这个 review 到啥时候啊.这里指出的问题基本上是每个包都要检查的,返工一次也很耗费精力的.

现在疑惑的是用不用 -git 包呢?还是其他方式呢?但是用 -I *-git* 这种方式来编译是可以通过的。

taotieren avatar Feb 06 '23 13:02 taotieren

现在疑惑的是用不用 -git 包呢?还是其他方式呢?

没看懂这句话在表达什么。 我们所说的不打 -git 包是指使用 git 仓库中的最新提交来打包。而是使用上游发布的版本来打包(包含 github release,git tag,pypi 等多种渠道)。

用 -I *-git* 这种方式来编译是可以通过的。

我们不是在表达你打的包无法完成构建。我们是在表达,在非 -git 包能满足需求的情况下,打包 -git 的包不是个好选择。

关于 -git 包的问题,你可以参考下仓库里的 yay-git 和 yay 的 PKGBUILD 的区别。

Y7n05h avatar Feb 06 '23 14:02 Y7n05h

一般来说没有特殊需要的话,不用打 -git 包.即使打 -git 包,也不代表这个包依赖的那些包都要打 -git 包.

他可能误会了什么。#3141 (comment) 我猜他可能觉得非 -git 是被保留给官方仓库的。

没有这回事吧。官方是否收录某个包主要取决于有没有 TU 去添加这个包。

PS:真的佩服这毅力,这么多依赖包,是我的话干脆就不打了.

同感。我当初也提及过替代方案。#3031 (comment)

打这么多报就只是为了成功打那个字体包?字体包没有必要从源码编译吧,直接用二进制包就好了。参考一下官方仓库里的字体包如何打包的。

hubutui avatar Feb 06 '23 14:02 hubutui

具体文件 review 提到的问题都不是个例,请检查所有的文件看看是否有问题。

hubutui avatar Feb 07 '23 15:02 hubutui

具体文件 review 提到的问题都不是个例,请检查所有的文件看看是否有问题。

现在改成 py 包了,获取最新 py 包部分帮忙看看,有没有问题,本地测试是通过的,

taotieren avatar Feb 08 '23 13:02 taotieren

我前面具体写的修改意见,你是一个都没有改也没有解释啊。 本地测试我不知道你怎么测试的,请参考打包指南在一个干净的 chroot 环境打包测试。

hubutui avatar Feb 08 '23 15:02 hubutui

我前面具体写的修改意见,你是一个都没有改也没有解释啊。 本地测试我不知道你怎么测试的,请参考打包指南在一个干净的 chroot 环境打包测试。

使用的是 extra-x86_64-build -- -I 的方式测试

taotieren avatar Feb 08 '23 15:02 taotieren

你这一次性添加的包太多了.麻烦给个正确的打包顺序,我们才好检查测试.

hubutui avatar Feb 09 '23 06:02 hubutui

建议把全部依赖已存在于源里的包全都拆到另一个 pr 里面去。

Y7n05h avatar Feb 09 '23 06:02 Y7n05h

或者简单的一个 pr 添加一个包就好了嘛,按顺序来,加好一个再下一个.

hubutui avatar Feb 09 '23 06:02 hubutui

至少有以下几项通用的需要修改的地方:

  1. 优先使用 PEP 517 的方式打包,参考文档,然后才是 legacy setuptools.
  2. 请保持代码的缩进对齐,统一好使用空格缩进.
  3. 确认局部变量 python_version 是已经定义的,参考文档
  4. 确认许可证的名字,以及这个许可证是否包含在 licenses 中,未包含的需要将其打包.
  5. 源码不是 git repo 的不需要执行 git submodule 命令啊.

hubutui avatar Feb 09 '23 06:02 hubutui

這些包有 circular dependency, lilac 沒辦法處理: python-booleanoperations -> python-fontpens -> python-fontparts -> python-booleanoperations. See: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=python-booleanoperations#n37

yan12125 avatar Feb 09 '23 10:02 yan12125