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

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

    <bug>
          <bug_id>49544</bug_id>
          
          <creation_ts>2024-02-28 11:56:59 +0300</creation_ts>
          <short_desc>find-package generates mismatched R: in merged-usr environment</short_desc>
          <delta_ts>2024-03-27 20:32:50 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rpm-build</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49547</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arseny Maslennikov">arseny</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>obirvalger</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242276</commentid>
    <comment_count>0</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-02-28 11:56:59 +0300</bug_when>
    <thetext>https://git.altlinux.org/tasks/339399/logs/events.3.1.log

	x86_64: NEW unmet dependencies detected:
 cryptsetup#2.6.1-alt1:sisyphus+339399.1300.3.1@1706643605        /usr/sbin/blkid
 dbus#1.14.10-alt1:sisyphus+339399.1500.3.1@1706643710            /usr/sbin/chkconfig
 dhcp-client#1:4.4.3.P1-alt2:sisyphus+339399.1600.3.1@1706643793  /usr/sbin/start-stop-daemon
 dhcp-server#1:4.4.3.P1-alt2:sisyphus+339399.1600.3.1@1706643793  /usr/bin/shell-config
 systemd#1:254.7-alt1:sisyphus+339399.2700.3.1@1706644609         /usr/bin/kmod
 systemd#1:254.7-alt1:sisyphus+339399.2700.3.1@1706644609         /usr/bin/rm
 systemd#1:254.7-alt1:sisyphus+339399.2700.3.1@1706644609         /usr/bin/run-parts
 systemd#1:254.7-alt1:sisyphus+339399.2700.3.1@1706644609         /usr/sbin/ldconfig
 systemd#1:254.7-alt1:sisyphus+339399.2700.3.1@1706644609         /usr/sbin/systemd-repart

Когда я локально воспроизвёл ситуацию из этого задания, у меня эти пакеты в чрут смогли установиться (т. е. зависимости там удовлетворились).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242278</commentid>
    <comment_count>1</comment_count>
      <attachid>15617</attachid>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-02-28 12:00:44 +0300</bug_when>
    <thetext>Created attachment 15617
экспериментальный патч, с которым работает

Любопытно, что проблема не проявляется, если в пакет rpm (scripts/functions берутся оттуда) внести приложенное сюда изменение.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242925</commentid>
    <comment_count>2</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-03-13 11:30:37 +0300</bug_when>
    <thetext>https://packages.altlinux.org/en/tasks/327286/

Предлагаю вот такое решение проблемы (там есть подзадание с rpm-build). Смысл тот же: если в процессе разбора и каноникализации пути нужно пройти по /bin или /sbin, они игнорируются (как будто это не симлинки). Таким образом, /sbin/chkconfig каноникализуется^W переходит в /sbin/chkconfig, а не в /usr/sbin/chkconfig, что соответствует существующим Provides: в пакетах.

Например, если:
— /a/b — это ссылка на каталог ddd/p/q,
— /a/ddd/p/q/c — это ссылка на /a/x (не на /a/c),
— /a/ddd/p/q/k — это ссылка на /a/k,
— и мы игнорируем /a/b,
то мы из пути /a/b/k получим тот же /a/b/k, а из /a/b/c/d/e не получим: вылезет ENOENT, ибо по /a/ddd/p/q/c ничего нет.

В предыдущей реализации использовалась команда `readlink -vm`, но ни readlink(1), ни realpath(1) нельзя заставить не проходить по ссылкам в некоторых компонентах пути, поэтому там &quot;realpath с особенностями&quot; на C.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242926</commentid>
    <comment_count>3</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-03-13 11:33:26 +0300</bug_when>
    <thetext>(In reply to Arseny Maslennikov from comment #2)
&gt; https://packages.altlinux.org/en/tasks/327286/
&gt; 
&gt; Предлагаю вот такое решение проблемы (там есть подзадание с rpm-build).
&gt; Смысл тот же: если в процессе разбора и каноникализации пути нужно пройти по
&gt; /bin или /sbin, они игнорируются (как будто это не симлинки). Таким образом,
&gt; /sbin/chkconfig каноникализуется^W переходит в /sbin/chkconfig, а не в
&gt; /usr/sbin/chkconfig, что соответствует существующим Provides: в пакетах.
&gt; 
&gt; Например, если:
&gt; — /a/b — это ссылка на каталог ddd/p/q,
&gt; — /a/ddd/p/q/c — это ссылка на /a/x (не на /a/c),
&gt; — /a/ddd/p/q/k — это ссылка на /a/k,
&gt; — и мы игнорируем /a/b,
&gt; то мы из пути /a/b/k получим тот же /a/b/k, а из /a/b/c/d/e не получим:
&gt; вылезет ENOENT, ибо по /a/ddd/p/q/c ничего нет.

Т. е. это то же самое, что было, но с ignore-листами. Кроме того, поведение отличается вот в каком случае:

было:
  [root@horse ~]# /bin/sh -ec &apos;. /usr/lib/rpm/functions; CanonPath /etc/init.d/.&apos;
  /etc/init.d
  [root@horse ~]# /bin/sh -ec &apos;. /usr/lib/rpm/functions; CanonPath /etc/init.d/&apos;
  /etc/init.d
  [root@horse ~]# /bin/sh -ec &apos;. /usr/lib/rpm/functions; CanonPath /etc/init.d&apos;
  /etc/init.d

стало:
  [builder@localhost ~]$ /bin/sh -ec &apos;. /usr/lib/rpm/rpmb-functions; CanonPath /etc/init.d/.&apos;
  /etc/rc.d/init.d
  [builder@localhost ~]$ /bin/sh -ec &apos;. /usr/lib/rpm/rpmb-functions; CanonPath /etc/init.d/&apos;
  /etc/rc.d/init.d
  [builder@localhost ~]$ /bin/sh -ec &apos;. /usr/lib/rpm/rpmb-functions; CanonPath /etc/init.d&apos;
  /etc/init.d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243645</commentid>
    <comment_count>4</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-03-27 20:32:50 +0300</bug_when>
    <thetext>* Tue Mar 26 2024 Arseny Maslennikov &lt;arseny@altlinux.org&gt; 4.0.4.198-alt1
- brp: Added brp-dupe-bin module to help fix ~20 packages for usrmerge (thx
  obirvalger@).
- tools: New tool: remappath2.
- Re-implemented CanonPath() using remappath2. This allows to skip following
  some symlinks during path component resolution, so find-requires does not
  generate dependencies on e. g. /usr/bin/sh.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15617</attachid>
            <date>2024-02-28 12:00:44 +0300</date>
            <delta_ts>2024-02-28 12:00:44 +0300</delta_ts>
            <desc>экспериментальный патч, с которым работает</desc>
            <filename>file_49544.txt</filename>
            <type>text/plain</type>
            <size>786</size>
            <attacher name="Arseny Maslennikov">arseny</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3NjcmlwdHMvZnVuY3Rpb25zIGIvc2NyaXB0cy9mdW5jdGlvbnMNCmluZGV4
IGE4NzljZDYyZC4uMWNmYjE2MzRlIDEwMDY0NA0KLS0tIGEvc2NyaXB0cy9mdW5jdGlvbnMNCisr
KyBiL3NjcmlwdHMvZnVuY3Rpb25zDQpAQCAtMTMwLDEwICsxMzAsMjAgQEAgQ2Fub25QYXRoKCkN
CiAJaWYgWyAtTCAiJGYxIiBdOyB0aGVuDQogCQlsb2NhbCBkDQogCQlkPSQoZGlybmFtZSAtLSAi
JGYxIikNCi0JCWQ9JChyZWFkbGluayAtdm0gLS0gIiRkIikNCisJCSMgRG8gbm90IHJlc29sdmUg
c3ltYm9saWMgbGlua3MgZm9yIGJpbiBjYXRhbG9ncyB0aGF0IGJlIG1lcmdlZC4NCisJCSMgRm9y
IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNybWVyZ2U6IGh0dHBzOi8vYWx0bGludXgub3JnL1Vz
cm1lcmdlLg0KKwkJY2FzZSAiJGQiIGluDQorCQkJL2Jpbnwvc2JpbikgOzsNCisJCQkqKSBkPSQo
cmVhZGxpbmsgLXZtIC0tICIkZCIpIDs7DQorCQllc2FjDQogCQlmMj0iJHtkJS99LyR7ZjEjIyov
fSINCiAJZWxzZQ0KIAkJZjI9JChyZWFkbGluayAtdm0gLS0gIiRmMSIpDQorCQkjIFN0cmlwIC91
c3IgZm9yIGJpbiBjYXRhbG9ncyBpZiBpdCB3YXMgYWRkZWQgZHVlIHRvIHJlc29sdmluZyBzeW1i
b2xpYw0KKwkJIyBsaW5rLg0KKwkJY2FzZSAiJGYxIiBpbg0KKwkJCS9iaW4vKnwvc2Jpbi8qKSBm
Mj0iJHtmMiMvdXNyfSI7Ow0KKwkJZXNhYw0KIAlmaQ0KIAlbICIkZjEiID0gIiRmMiIgXSB8fCBW
ZXJib3NlICJDYW5vblBhdGgyOiAkZjEgLT4gJGYyIg0KIAllY2hvICIkZjIi
</data>

          </attachment>
      

    </bug>

</bugzilla>