Bug 31948 - Пересобрать с python3
Summary: Пересобрать с python3
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: youtube-dl (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 31992
Blocks:
  Show dependency tree
 
Reported: 2016-04-07 08:27 MSK by Антон Мидюков
Modified: 2016-04-24 10:41 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2016-04-07 08:27:49 MSK
Захотел собрать ytfs ( https://github.com/rasguanabana/ytfs ), но столкнулся с проблемой, собранный пакет требует пакет с provides: python3(youtube_dl). То есть ему нужен youtube-dl, собранный с python3.  Нельзя ли youtube-dl пересобрать с python3 и проследить, чтоб пакет обзавёлся провайдесом python3(youtube_dl)?
Comment 1 Gleb F-Malinovskiy 2016-04-08 18:39:22 MSK
* Fri Apr 08 2016 Gleb F-Malinovskiy <glebfm@altlinux.org> 2016.04.06-alt1
- Updated to 2016.04.06.
- Split package into youtube-dl and python module.
- Packaged python3 module (fixes ALT#31948).
Comment 2 Антон Мидюков 2016-04-10 18:52:21 MSK
Собранный python3-module-youtube_dl не предоставляет нужную мне provides python3(youtube_dl). Может нужно добавить в спек %py3_provides ?
Comment 3 Антон Мидюков 2016-04-15 16:35:16 MSK
(In reply to comment #2)
> Собранный python3-module-youtube_dl не предоставляет нужную мне provides
> python3(youtube_dl). Может нужно добавить в спек %py3_provides ?

Проверил. Необходимо в пакет python3-module-%py_name добавить строчку:
%py3_provides %py_name
Ну, а для симметрии, аналогично добавить в python-module-%py_name строчку:
%py_provides %py_name
Comment 4 Gleb F-Malinovskiy 2016-04-15 16:41:51 MSK
(In reply to comment #3)
> Проверил. Необходимо в пакет python3-module-%py_name добавить строчку:
> %py3_provides %py_name
> Ну, а для симметрии, аналогично добавить в python-module-%py_name строчку:
> %py_provides %py_name

Странность в том, что в одном модуле есть 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)'
Comment 5 Repository Robot 2016-04-15 17:54:55 MSK
youtube-dl-2016.04.13-alt1 -> sisyphus:

* Fri Apr 15 2016 Gleb F-Malinovskiy <glebfm@altlinux> 2016.04.13-alt1
- Updated to 2016.04.13.
- python3-module-youtube_dl: added P: python3(youtube_dl) (ALT#31948).
Comment 6 Ivan Zakharyaschev 2016-04-18 19:42:10 MSK
(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 не должен быть причиной игнорирования. Может быть, придумаю, как переписать. Или предлагайте варианты.