<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>45968</bug_id>
          
          <creation_ts>2023-04-27 07:09:48 +0300</creation_ts>
          <short_desc>[p10] rpm:  поддержка создания hasher chroot архитектуры LoongArch</short_desc>
          <delta_ts>2023-05-09 02:48:59 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p10</product>
          <component>rpm</component>
          <version>не указана</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45802</blocked>
    
    <blocked>45969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Sheplyakov">asheplyakov</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>amakeenk</cc>
    
    <cc>antohami</cc>
    
    <cc>asheplyakov</cc>
    
    <cc>imz</cc>
    
    <cc>iv</cc>
    
    <cc>nir</cc>
    
    <cc>sin</cc>
          
          <qa_contact name="qa-p10@altlinux.org">qa-p10</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>225039</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-04-27 07:09:48 +0300</bug_when>
    <thetext>Пытаюсь создать chroot для LoongArch архитектуры.
У меня есть директория с кучей rpm пакетов для этой архитектуры (~/work/bootstrap/RPM/RPMS/RPMS.loongarch64), и конфигурационные файлы следующего вида:

$ cat apt-sisyphus-loongarch64.conf
Dir::Etc::main &quot;/dev/null&quot;;
Dir::Etc::parts &quot;/var/empty&quot;;
Dir::Etc::SourceParts &quot;/var/empty&quot;;
Dir::Etc::sourcelist &quot;/home/asheplyakov/aptconf/sources-sisyphus-loongarch64.list&quot;;
Dir::Cache &quot;/tmp/.private/asheplyakov/loongarch64/sisyphus/aptcache&quot;;
Dir::State::Lists &quot;/tmp/.private/asheplyakov/loongarch64/sisyphus/aptlists&quot;;

$ 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&apos;.
mkdir: created directory &apos;.host&apos;
mkdir: created directory &apos;.in&apos;
mkdir: created directory &apos;dev&apos;
changed group of &apos;.&apos; from asheplyakov to 1001
changed group of &apos;dev&apos; from asheplyakov to 1001
mkdir: created directory &apos;.out&apos;
changed group of &apos;.out&apos; from asheplyakov to 1002
hsh-mkchroot: Created directory tree.
&apos;/bin/ash.static&apos; -&gt; &apos;/home/asheplyakov/hasher/chroot/.host/sh&apos;
&apos;/usr/bin/find.static&apos; -&gt; &apos;/home/asheplyakov/hasher/chroot/.host/find&apos;
&apos;/usr/bin/cpio.static&apos; -&gt; &apos;/home/asheplyakov/hasher/chroot/.host/cpio&apos;
hsh-mkchroot: Installed .host programs.
hsh-initroot: changed working directory to `/home/asheplyakov/hasher&apos;
removed directory &apos;/home/asheplyakov/hasher/cache/chroot/list.new&apos;
removed directory &apos;/home/asheplyakov/hasher/cache/chroot/package.new&apos;
mkdir: created directory &apos;/home/asheplyakov/hasher/cache/chroot/list.new&apos;
mkdir: created directory &apos;/home/asheplyakov/hasher/cache/chroot/package.new&apos;
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 &apos;fakeroot&gt;=0:0.7.3&apos;
+++ 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=&apos;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&apos;

Загвоздка в том, что 

1) &quot;архитектура&quot; noarch для rpm не имеет какого-то специального значения.
   Для каждой поддерживаемой архитектуры в исходниках (pmrc.in, lib/rpmrc.c) гвоздями прибито, что она таки совместима с noarch.
   А для loongarch64 такой записи нет.

2) Зачем-то самому apt нужно знать, какие бывают архитектуры (как будто он не может у rpm спросить).
   Этот список намертво зашит в бинарник (libapt), и архитектуры loongarch64 там пока нет.

Поэтому apt &quot;в упор не видит&quot; noarch пакетов.
Из-за этого невозможно установить filesystem (который зависит от setup), а значит, и glibc-core, а значит, вообще ничего.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225048</commentid>
    <comment_count>1</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2023-04-27 09:40:43 +0300</bug_when>
    <thetext>Alexey Sheplyakov, вопросы:

1. почему ошибка на p10, а не на Сизифе? Необходимо внести изменения в rpm и apt в Сизифе, а уже потом бекпортировать в p10.

2. почему нет отдельной ошибки на apt?

3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не будет жить отдельным портом? У репозитория для loongarch64, пока это отдельный порт, должен быть свой noarch (или его может не быть вовсе).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225049</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-04-27 10:07:21 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #1)
&gt; 3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не
&gt; будет жить отдельным портом? У репозитория для loongarch64, пока это
&gt; отдельный порт, должен быть свой noarch (или его может не быть вовсе).

Репозиторий да, архитектура нет. С точки зрения rpm все noarch одинаковые.

К тому же, использование общего noarch является стандартной практикой на ранних этапах портирования, до подъёма отдельного girar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225051</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-04-27 10:29:41 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #1)
&gt; Alexey Sheplyakov, вопросы:
&gt; 
&gt; 1. почему ошибка на p10, а не на Сизифе?

Потому что я хочу создавать loongarch64 хешерницы на своём x86_64 компьютере с p10.
Как это сейчас возможно с aarch64, armh, mipsel:

hsh --initroot-only --target=aarch64 --apt-config=apt-sisyphus-aarch64.conf

&gt; 2. почему нет отдельной ошибки на apt?

Есть, #45969


&gt; Необходимо внести изменения в 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


&gt; 3. неужели loongarch64 будет сразу интегрирована в основную сборочницу, а не
&gt; будет жить отдельным портом?

Ваш вопрос не имеет отношения к обсуждаемой задаче.
Речь идёт о том, чтобы создать на x86_64 машине хешерницу из loongarch64 пакетов.
А не о том, где, как, кто, из чего собирает loongarch64 пакеты.

&gt; У репозитория для loongarch64, пока это отдельный порт, должен быть свой noarch 

Это никак не поможет создать на x86_64 машине хешерницу из loongarch64 пакетов.

&gt; (или его может не быть вовсе).

Это слишком усложняет и без того непростую первоначальную сборку (пересобрать ведро питономодулей, чтобы собрать meson, чтобы собрать glib, а по дороге выяснится, что для сборки питономодулей уже нужен glib).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225056</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2023-04-27 11:41:59 +0300</bug_when>
    <thetext>#319402 TESTED #2 [test-only] p10 rpm.git=4.13.0.1-alt34.0.crs1 apt.git=0.5.15lorg2-alt82.0.crs1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225586</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-05-09 02:48:59 +0300</bug_when>
    <thetext>В этом rpm случился конфликт arch_canon-номера с нашим e2k :(

23

Похоже, это -- то число, которое давно хотели застолбить, но опоздали уже.

commit 99057c94d617206f3c947107569769e076db525f
Author: zhangwenlong &lt;zhangwenlong@loongson.cn&gt;
Date:   Wed Jan 19 00:16:54 2022 +0800

    Add support for loongarch64
    
    * add support for loongarch64
    
    Signed-off-by: Zhang Wenlong &lt;zhangwenlong@loongson.cn&gt;
    
    (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
 #*/</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>