archlinuxcn / repo

Arch Linux CN Repository
1.48k stars 283 forks source link

yay 没有打包在 aarch64 里 #1552

Closed holymonson closed 4 years ago

holymonson commented 4 years ago

问题类型 / Type of issues

受影响的软件包 / Affected packages


https://github.com/archlinuxcn/repo/blob/1074113c1ef2be8554b5d8eef6ddab323efae22c/archlinuxcn/yay/PKGBUILD#L6

可是,yay (和 yay-git)并没有打包在aarch64 里。

lilydjwg commented 4 years ago

本仓库以 x86_64 为主,别的架构很可能经常缺包的(因为别的架构都没有自动化打包)。

SilverRainZ commented 4 years ago

刚想说 archlinuxarm,发现它们没有打包 yay。

holymonson commented 4 years ago

但 arch4edu 是有的。我也没看出哪个参数是修改打包的arch的,build_prefix似乎是打包机上的的参数。

petronny commented 4 years ago

arch4edu是通过devtools-qemu打的 PS. 现在alarm官方没有devtools-qemu的依赖devtools-alarm>=20191227,我用的是自己改的

holymonson commented 4 years ago

如果没有依赖的话,请打包yay-bin,作者本身就放出二进制的,无需编译。

lilydjwg commented 4 years ago

问题不在于编译,而在于打包。没弄错的话,devtools 无法出 aarch64 的包。使用诸如 devtools-qemu 的方案的话,那要先解决这个方案的测试和部署。

petronny commented 4 years ago

问题不在于编译,而在于打包

具体来说是弄一个非x86_64的clean chroot出来

devtools 无法出 aarch64 的包

devtools里有一部分是架构检查,非x86_64直接报错 devtools-alarm移除了这个架构检查限制,但也做了一些其他(有利有弊的)调整

使用诸如 devtools-qemu 的方案的话,那要先解决这个方案的测试和部署。

主要问题是devtools-alarm和devtools是替代关系,devtools-alarm现在alarm版还没有zstd支持 然后devtools-qemu有一些命令可能qemu下会报错(比如现在armv6h和armv7h下git会报错,所有-git包build不了)

还有其他方案就是yay官方的arm版都是走得qemu和docker的方案做的,docker内部直接makepkg打包,本质也是要弄一个clean chroot出来

lilydjwg commented 4 years ago

我觉得就 yay 来说,它应该可以走交叉编译的路线。所以需要:

然而前者如何取得是个问题……除非 pacman 支持「交叉安装」?但是这样 install 脚本就跑不了了。

qemu 很慢啊……

SilverRainZ commented 4 years ago

Q_Q 搞个 aarch64 手动打包放上去,偶尔更新一下保持能用就好?

holymonson commented 4 years ago

首先,我自己的 armv8,是可以通过 distcc ,用 x86_64上 的 distccd-alarm-armv8 交叉编译,不需要起 qemu。

至于打包,应该是架构无关的吧,makepkg.conf 本来就可以指定 CARCH=aarch64,我刚才就直接在 x86_64 上打包了份yay-bin-9.4.6-1-aarch64.pkg.tar. 设置好 makepkg.conf 里的参数和路径,应该不难解决?

MarvelousBlack commented 4 years ago

但是你 makepkg 的時候是需要安裝依賴的包的,這個時候 install 脚本就跑不了

holymonson commented 4 years ago

所有 install 脚本本来就是不必要的,那都是对系统的更改。makepkg 时的依赖包,只有库和头文件是 target 架构,依赖程序是 host 架构的。或者具体点,makedepends 是 x86_64,depends 是 aarch64。

oldherl commented 4 years ago

依赖包的install脚本呢? 如果不跑,那这个依赖包就还没装好

Monson Shao notifications@github.com 于 2020年4月2日周四 20:33写道:

所有 install 脚本本来就是不必要的,那都是对系统的更改。makepkg 时的依赖包,只有库和头文件是 target 架构,依赖程序是 host 架构的。或者具体点,makedepends 是 x86_64,depends 是 aarch64。

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/archlinuxcn/repo/issues/1552#issuecomment-607817778, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABKDT5HEUNOPGUSM7FNIJLRKSAYZANCNFSM4LXL6TYQ .

holymonson commented 4 years ago

如果不跑,那这个依赖包就还没装好

你确定?我印象中,install script 即使 fail 了,包还是安装成功,文件都在的。

yuyichao commented 4 years ago

你确定?我印象中,install script 即使 fail 了,包还是安装成功,文件都在的。

pacman 的确不报错, 但是并不代表装好了. 最近有没有不知道不过之前就有包是安装了以后再 mv 到正确的路径的.

holymonson commented 4 years ago

如果真的非要 aarch64 的运行环境,就只能用 qemu 了。不过可以考虑 makepkg 用 distcc 到 host 上交叉编译,这样可以大幅减少 qemu 的计算量。

Xuanwo commented 4 years ago

我觉得这个 issue 可以 close 了

MarvelousBlack commented 4 years ago
[16:59:05][marvelous@daisuke-SSH  ~]$ Si yay
Repository      : archlinuxcn
Name            : yay
Version         : 9.4.6-2
Description     : Yet another yogurt. Pacman wrapper and AUR helper written in go.
Architecture    : aarch64
URL             : https://github.com/Jguer/yay
Licenses        : GPL
Groups          : None
Provides        : None
Depends On      : pacman>=5.2  sudo  git
Optional Deps   : None
Conflicts With  : None
Replaces        : None
Download Size   : 2016.65 KiB
Installed Size  : 6001.94 KiB
Packager        : Megumi Fox <i@megumifox.com>
Build Date      : Mon 13 Apr 2020 04:44:50 PM HKT
Validated By    : MD5 Sum  SHA-256 Sum  Signature