Bug 31992 - python3.prov.files skips many Python3 files and doesn't generate the corresponding Provides
Summary: python3.prov.files skips many Python3 files and doesn't generate the correspo...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-python3 (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Ivan Zakharyaschev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 31948
  Show dependency tree
 
Reported: 2016-04-18 20:25 MSK by Ivan Zakharyaschev
Modified: 2016-04-21 23:42 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Zakharyaschev 2016-04-18 20:25:54 MSK
rpm-build-python3-0.1.10

+++ This bug was initially created as a clone of Bug #31948 +++

https://bugzilla.altlinux.org/show_bug.cgi?id=31948#c6

(In reply to comment #4)

> Странность в том, что в одном модуле есть provide, а в другом нет:
> $ rpm -q --provides -p python-module-youtube_dl-2016.04.06-alt1.noarch.rpm |
> grep '(youtube_dl)'
> python2.7(youtube_dl)
> $ rpm -q --provides -p python3-module-youtube_dl-2016.04.06-alt1.noarch.rpm |
> grep '(youtube_dl)'

Понял, почему. Там довольно извращённая логика, особенно в python3.prov.files.
Вот сравните отрывки из начала python.prov.files и python3.prov.files.

python.prov.files:

    case "$t" in
        # skip python3 files
        *"python3 script text"*)
            continue ;;
        # shortcut for real python scripts
        "python script text executable")
            echo "$f"
            continue ;;
        # shortcut for possible python extensions
        *ELF*" shared object"*)

...

            continue ;;
    esac

python3.prov.files:

    case "$t" in
        # skip python2 files
        "python script text executable")
            continue ;;
        # shortcut for real python scripts
        "python3 script text executable")
            echo "$f"
            continue ;;
        # shortcut for possible python extensions
        *ELF*" shared object"*)
            case "$f" in
                ${RPM_BUILD_ROOT-}*/python3*/*.so)
                    echo "$f" ;;
            esac
            continue ;;
    esac

А file говорит на них просто "python script text executable" (версию у него нет
возможности определить) и мы радостно игнорируем его в python3.prov.files.

$ file /usr/lib/python3/site-packages/youtube_dl/*
/usr/lib/python3/site-packages/youtube_dl/YoutubeDL.py:  python script text
executable
/usr/lib/python3/site-packages/youtube_dl/__init__.py:   python script text
executable
/usr/lib/python3/site-packages/youtube_dl/__main__.py:   python script text
executable
/usr/lib/python3/site-packages/youtube_dl/__pycache__:   directory
/usr/lib/python3/site-packages/youtube_dl/aes.py:        ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/cache.py:      ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/compat.py:     ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/downloader:    directory
/usr/lib/python3/site-packages/youtube_dl/extractor:     directory
/usr/lib/python3/site-packages/youtube_dl/jsinterp.py:   ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/options.py:    ASCII Java program
text, with very long lines
/usr/lib/python3/site-packages/youtube_dl/postprocessor: directory
/usr/lib/python3/site-packages/youtube_dl/swfinterp.py:  ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/update.py:     ASCII Java program
text
/usr/lib/python3/site-packages/youtube_dl/utils.py:      python script text
executable
/usr/lib/python3/site-packages/youtube_dl/version.py:    ASCII Java program
text


Я недавно немного поменял похожую штуку в python3.req.files (потому что
недополучение requires меня беспокоило больше -- с точки зрения создания
дистрибутива) -- да и то, только в том, что касалось .so (сделал основным
критерием ответ is_python3_path, о чём сообщал в одном письме в devel).

Переписывать сильнее у меня не было сил.

Но вот в этом месте вроде очевидно, что такой ответ file не должен быть
причиной игнорирования. Может быть, придумаю, как переписать. Или предлагайте
варианты.
Comment 1 Repository Robot 2016-04-21 23:42:08 MSK
rpm-build-python3-0.1.10.2-alt1 -> sisyphus:

* Wed Apr 20 2016 Ivan Zakharyaschev <imz@altlinux> 0.1.10.2-alt1
- generate more Requires (many Python3 files used to be skipped
  because "python script text executable" were considered to be
  non-Python3; now, Python files under standard Python3 paths and
  %_python3_path are considered).
- generate more Provides (ALT#31992) similarly
  (for Python files under standard Python3 paths).
- generate additional (specially-modified) Provides for modules under
  non-standard/non-builtin paths.
- generate more liberal Requires if %_python3_path or
  %_python3_compile_include has non-standard/non-builtin paths.