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

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

    <bug>
          <bug_id>53296</bug_id>
          
          <creation_ts>2025-03-04 12:40:48 +0300</creation_ts>
          <short_desc>normalization of dist-info</short_desc>
          <delta_ts>2025-05-13 11:53:03 +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>python3-module-setuptools</component>
          <version>unstable</version>
          <rep_platform>x86_64</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stanislav Levin">slev</reporter>
          <assigned_to name="Stanislav Levin">slev</assigned_to>
          <cc>slev</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260318</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2025-03-04 12:40:48 +0300</bug_when>
    <thetext>As of setuptools 75.8.1:
https://setuptools.pypa.io/en/stable/history.html#v75-8-1
&gt; Fix wheel file naming to follow binary distribution specification – by @di (#4766)

Today&apos;s spec:
https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-contents

Previously setuptools didn&apos;t follow the spec and maintainers couldn&apos;t use %pyproject_distinfo macro which normalizes names according to the specification.
https://www.altlinux.org/Python_packaging_guide#Metadata

Test rebuild of packages with the aforementioned version of setuptools leads to 241 new errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260331</commentid>
    <comment_count>1</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2025-03-04 14:13:47 +0300</bug_when>
    <thetext>One of the possible options to handle this:

- add compat macro for setuptools-generated dist-info. It&apos;s either
  standard normalization (modern) or setuptools&apos; one (legacy).
  The default can be switched depending on a branch (set by
  rpm-build-python3).
  - pros:
    - this allows to seamlessly copy packages between branches
  - cons:
    - need to maintain the macro and backport rpm-build-python3 to
      supported branches
    - need to take care of the default on setuptools backport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260383</commentid>
    <comment_count>2</comment_count>
    <who name="Grigory Ustinov">grenka</who>
    <bug_when>2025-03-04 23:02:21 +0300</bug_when>
    <thetext>Я уже говорил, что макрос про dist-info совсем неудачный оказался и в своих пакетах я его использую только если если забываю убрать после автогенерации спека.

Предлагаю не городить безумное количество макросов и общаться на языке большинства пользователей и участников тим.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260422</commentid>
    <comment_count>3</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2025-03-05 12:34:23 +0300</bug_when>
    <thetext>(In reply to Grigory Ustinov from comment #2)
&gt; Я уже говорил, что макрос про dist-info совсем неудачный оказался и в своих
&gt; пакетах я его использую только если если забываю убрать после автогенерации
&gt; спека.

Имя директории *.dist-info стандартизировано и все сборочные бэкенды следуют
этому стандарту, все кроме setuptools &lt; 75.8.1 (так исторически сложилось).
То есть имя сгенерированной директорий фактически собранного
проекта должно совпадать (читать как assert) с ожидаемым %pyproject_distinfo.

Сейчас в случае с setuptools и проектами, имя которых не нормализуется согласно стандарту, имя dist-info жестко прибито гвоздями или &quot;просто&quot; заглобленно с &quot;*&quot;. Например,
https://git.altlinux.org/gears/p/python3-module-zope.testrunner.git?p=python3-module-zope.testrunner.git;a=blob;f=.gear/zope.testrunner.spec;h=9714735fac8efa8174c5277e49e470fffcb86b0b;hb=f5ed172e958bbb6f238a68f96ad2477fe2f55709#l64

&gt; %define pypi_name zope.testrunner
&gt; %python3_sitelibdir/%pypi_name-%version.dist-info/

С setuptools &gt;= 75.8.1, это ожидание будет сломано, потому что имя dist-info будет нормализовано согласно стандарту. В примере с zope.testrunner
это zope_testrunner-7.0.dist-info (. заменено на _).

То есть проблема не в использовании %pyproject_distinfo, а проблема в отсутствии соответствующего макроса для setuptools и его неиспользовании, что и привело к ручному заданию ожиданий. Сейчас можно было бы переключить нормализацию на стандартный вариант и не пришлось бы править какую-то часть из 241 спеков. Но имеем, что имеем, теперь придется поправить эти спеки, вопрос как именно.

1) меняем *.dist-info на %pyproject_distinfo и забываем про
особенности setuptools ... пока такие пакеты не понадобится скопировать в
бранчи с setuptools &lt; 75.8.1, бэкпорт которого реалистичен для p11 и потребует
значительных усилий для всего остального.

2) делаем макрос для совместимости между бранчами с возможностью переключения реализации (sisyphus - standard, p11 - setuptools, p10 - setuptools, etc.).
Меняем *.dist-info на %pyproject_distinfo_setuptools_compat (просто например!),
бэкпортим rpm-build-python3. Пакеты можно копировать. Это более сложный вариант.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260490</commentid>
    <comment_count>4</comment_count>
    <who name="Grigory Ustinov">grenka</who>
    <bug_when>2025-03-06 08:47:06 +0300</bug_when>
    <thetext>(Ответ для Stanislav Levin на комментарий #3)
&gt; С setuptools &gt;= 75.8.1, это ожидание будет сломано, потому что имя dist-info
&gt; будет нормализовано согласно стандарту. В примере с zope.testrunner
&gt; это zope_testrunner-7.0.dist-info (. заменено на _).
&gt; 
&gt; То есть проблема не в использовании %pyproject_distinfo, а проблема в
&gt; отсутствии соответствующего макроса для setuptools и его неиспользовании,
&gt; что и привело к ручному заданию ожиданий. Сейчас можно было бы переключить
&gt; нормализацию на стандартный вариант и не пришлось бы править какую-то часть
&gt; из 241 спеков. Но имеем, что имеем, теперь придется поправить эти спеки,
&gt; вопрос как именно.

Написать скрипт, который в автоматическом или полуавтоматическом режиме всё поправит. Если у вас на это не хватает квалификации, позвольте это сделать мне.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264621</commentid>
    <comment_count>5</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2025-05-13 11:52:52 +0300</bug_when>
    <thetext>Исправлено в python3-module-setuptools 76.0.0-alt1.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>