Пытаюсь создать chroot для LoongArch архитектуры. У меня есть директория с кучей rpm пакетов для этой архитектуры (~/work/bootstrap/RPM/RPMS/RPMS.loongarch64), и конфигурационные файлы следующего вида: $ cat apt-sisyphus-loongarch64.conf Dir::Etc::main "/dev/null"; Dir::Etc::parts "/var/empty"; Dir::Etc::SourceParts "/var/empty"; Dir::Etc::sourcelist "/home/asheplyakov/aptconf/sources-sisyphus-loongarch64.list"; Dir::Cache "/tmp/.private/asheplyakov/loongarch64/sisyphus/aptcache"; Dir::State::Lists "/tmp/.private/asheplyakov/loongarch64/sisyphus/aptlists"; $ cat sources-sisyphus-loongarch64.list rpm [alt] http://ftp.altlinux.ru/pub/distributions/ALTLinux Sisyphus/noarch classic rpm-dir copy:///home/asheplyakov/work/bootstrap/RPM RPMS loongarch64 Я запускаю следующую команду: $ hsh -v --with-stuff --target=loongarch64 --apt-config=apt-sisyphus-loongarch64.conf --initroot-only ~/hasher Получаю: hsh-mkchroot: Changed working directory to `/home/asheplyakov/hasher/chroot'. mkdir: created directory '.host' mkdir: created directory '.in' mkdir: created directory 'dev' changed group of '.' from asheplyakov to 1001 changed group of 'dev' from asheplyakov to 1001 mkdir: created directory '.out' changed group of '.out' from asheplyakov to 1002 hsh-mkchroot: Created directory tree. '/bin/ash.static' -> '/home/asheplyakov/hasher/chroot/.host/sh' '/usr/bin/find.static' -> '/home/asheplyakov/hasher/chroot/.host/find' '/usr/bin/cpio.static' -> '/home/asheplyakov/hasher/chroot/.host/cpio' hsh-mkchroot: Installed .host programs. hsh-initroot: changed working directory to `/home/asheplyakov/hasher' removed directory '/home/asheplyakov/hasher/cache/chroot/list.new' removed directory '/home/asheplyakov/hasher/cache/chroot/package.new' mkdir: created directory '/home/asheplyakov/hasher/cache/chroot/list.new' mkdir: created directory '/home/asheplyakov/hasher/cache/chroot/package.new' Reading Package Lists... Building Dependency Tree... Package setup has no available version, but exists in the database. This typically means that the package was mentioned in a dependency and never uploaded, has been obsoleted or is not available with the contents of sources.list E: Package setup has no installation candidate hsh-initroot: Failed to calculate package file list. hsh-initroot: Failed to generate initial package file list. При более подробном рассмотрении оказывается, что облом возникает при выполнении +++ /home/asheplyakov/hasher/aptbox/apt-get -q -y -o RPM::PM=external -o Dir::Bin::rpm=hsh-rpmi-print-files install -- setup filesystem rpm 'fakeroot>=0:0.7.3' +++ tee -a /dev/stderr Reading Package Lists... Building Dependency Tree... Package setup has no available version, but exists in the database. This typically means that the package was mentioned in a dependency and never uploaded, has been obsoleted or is not available with the contents of sources.list E: Package setup has no installation candidate ++ out='Reading Package Lists... Building Dependency Tree... Package setup has no available version, but exists in the database. This typically means that the package was mentioned in a dependency and never uploaded, has been obsoleted or is not available with the contents of sources.list E: Package setup has no installation candidate' Загвоздка в том, что 1) "архитектура" noarch для rpm не имеет какого-то специального значения. Для каждой поддерживаемой архитектуры в исходниках (pmrc.in, lib/rpmrc.c) гвоздями прибито, что она таки совместима с noarch. А для loongarch64 такой записи нет. 2) Зачем-то самому apt нужно знать, какие бывают архитектуры (как будто он не может у rpm спросить). Этот список намертво зашит в бинарник (libapt), и архитектуры loongarch64 там пока нет. Поэтому apt "в упор не видит" noarch пакетов. Из-за этого невозможно установить filesystem (который зависит от setup), а значит, и glibc-core, а значит, вообще ничего.
Alexey Sheplyakov, вопросы: 1. почему ошибка на p10, а не на Сизифе? Необходимо внести изменения в rpm и apt в Сизифе, а уже потом бекпортировать в p10. 2. почему нет отдельной ошибки на apt? 3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не будет жить отдельным портом? У репозитория для loongarch64, пока это отдельный порт, должен быть свой noarch (или его может не быть вовсе).
(In reply to Антон Мидюков from comment #1) > 3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не > будет жить отдельным портом? У репозитория для loongarch64, пока это > отдельный порт, должен быть свой noarch (или его может не быть вовсе). Репозиторий да, архитектура нет. С точки зрения rpm все noarch одинаковые. К тому же, использование общего noarch является стандартной практикой на ранних этапах портирования, до подъёма отдельного girar.
(Ответ для Антон Мидюков на комментарий #1) > Alexey Sheplyakov, вопросы: > > 1. почему ошибка на p10, а не на Сизифе? Потому что я хочу создавать loongarch64 хешерницы на своём x86_64 компьютере с p10. Как это сейчас возможно с aarch64, armh, mipsel: hsh --initroot-only --target=aarch64 --apt-config=apt-sisyphus-aarch64.conf > 2. почему нет отдельной ошибки на apt? Есть, #45969 > Необходимо внести изменения в rpm и apt в Сизифе, а уже потом бекпортировать в p10. В сизифе требуется **полноценная** поддержка LoongArch (а не только создание хешерниц). На эту тему есть #45769, #45763, и патчи, и даже с ними уже собраны rpm и rpm-build: #318152 EPERM #2 sisyphus rpm-build.git=4.0.4.187-alt1 #318149 EPERM #2 sisyphus rpm.git=4.13.0.1-alt37 > 3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не > будет жить отдельным портом? Ваш вопрос не имеет отношения к обсуждаемой задаче. Речь идёт о том, чтобы создать на x86_64 машине хешерницу из loongarch64 пакетов. А не о том, где, как, кто, из чего собирает loongarch64 пакеты. > У репозитория для loongarch64, пока это отдельный порт, должен быть свой noarch Это никак не поможет создать на x86_64 машине хешерницу из loongarch64 пакетов. > (или его может не быть вовсе). Это слишком усложняет и без того непростую первоначальную сборку (пересобрать ведро питономодулей, чтобы собрать meson, чтобы собрать glib, а по дороге выяснится, что для сборки питономодулей уже нужен glib).
#319402 TESTED #2 [test-only] p10 rpm.git=4.13.0.1-alt34.0.crs1 apt.git=0.5.15lorg2-alt82.0.crs1
В этом rpm случился конфликт arch_canon-номера с нашим e2k :( 23 Похоже, это -- то число, которое давно хотели застолбить, но опоздали уже. commit 99057c94d617206f3c947107569769e076db525f Author: zhangwenlong <zhangwenlong@loongson.cn> Date: Wed Jan 19 00:16:54 2022 +0800 Add support for loongarch64 * add support for loongarch64 Signed-off-by: Zhang Wenlong <zhangwenlong@loongson.cn> (cherry-picked from commit 7a014dae736f9c7a7c75f63deaa4dbbb9ae0249c https://github.com/rpm-software-management/rpm) diff --git a/rpmrc.in b/rpmrc.in index 1d3491c46..456413deb 100644 --- a/rpmrc.in +++ b/rpmrc.in @@ -117,6 +117,8 @@ optflags: aarch64 -O2 -g optflags: riscv64 -O2 -g +optflags: loongarch64 -O2 -g + ############################################################# # Architecture colors @@ -180,6 +182,9 @@ archcolor: aarch64 2 archcolor: riscv64 2 + +archcolor: loongarch64 2 + ############################################################# # Canonical arch names and numbers @@ -294,6 +299,8 @@ arch_canon: e2k8c2: e2k8c2 23 arch_canon: e2k12c: e2k16c 23 arch_canon: e2k2c3: e2k2c3 23 +arch_canon: loongarch64: loongarch64 23 + ############################################################# # Canonical OS names and numbers @@ -438,6 +445,8 @@ buildarchtranslate: aarch64: aarch64 buildarchtranslate: riscv: riscv64 buildarchtranslate: riscv64: riscv64 +buildarchtranslate: loongarch64: loongarch64 + ############################################################# # Architecture compatibility @@ -591,6 +600,8 @@ os_compat: bsdi4.0: bsdi os_compat: Darwin: MacOSX +arch_compat: loongarch64: noarch + buildarch_compat: ia64: noarch buildarch_compat: aarch64: noarch @@ -705,5 +716,8 @@ buildarch_compat: sh3: noarch buildarch_compat: sh4: noarch buildarch_compat: sh4a: sh4 + +buildarch_compat: loongarch64: noarch + # \endverbatim #*/