Bug 37035 - i586-wine конфликтует с wine
Summary: i586-wine конфликтует с wine
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpmrebuild-arepo (show other bugs)
Version: unstable
Hardware: all Linux
: P1 critical
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL: https://wiki.winehq.org/Packaging#Mul...
Keywords:
: 34280 (view as bug list)
Depends on: 22985
Blocks: 40797 33363 40210
  Show dependency tree
 
Reported: 2019-07-16 10:54 MSK by Vitaly Lipatov
Modified: 2021-10-30 03:29 MSK (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2019-07-16 10:54:44 MSK
После решения
https://bugzilla.altlinux.org/show_bug.cgi?id=22985
i586-wine конфликтует с wine, в то время как по задумке эти
пакеты должны останавливаться вместе.
Comment 1 Aleksey Borisenkov 2019-07-21 09:48:12 MSK
*** Bug 34280 has been marked as a duplicate of this bug. ***
Comment 2 gBopHuk 2020-03-24 17:11:17 MSK
+1

Очень надо. Уже полгода не получается нормально проверить собранные для https://en.wikipedia.org/wiki/WoW64 пакеты. Приложений в стиле wow64 становиться всё больше.
Comment 3 Николай Костригин 2020-08-07 18:22:46 MSK
Проблема до сих пор актуальна. Она не позволяет устанавливать 32-bit библиотеки через winetricks и/или использовать 32-bit инсталляторы на x86_64

Как воспроизвести: 

1. apt-get install wine winetricks
2. winetricks vcrun2015

Ожидание: winecfg на вкладке библиотеки показывает список вида:
api-ms-win-crt-*
[...]
vcruntime140

Реальность: ошибка в консоли:

Executing cd /home/nickel/.cache/winetricks/vcrun2015
Executing wine64 vc_redist.x86.exe
000b:fixme:winediag:__wine_start_process Wine Staging 5.0 is a testing version containing experimental patches.
000b:fixme:winediag:__wine_start_process Please mention your exact version when filing bug reports on winehq.org.
0009:err:module:__wine_process_init L"Y:\\vcrun2015\\vc_redist.x86.exe" not supported on this system
------------------------------------------------------
Важно: команда wine64 vc_redist.x86.exe вернула статус 123. Прерывание.
Comment 4 Aleksei Nikiforov 2020-09-14 11:31:40 MSK
> Чтобы сделать выводы, нужно прочитать
> https://wiki.winehq.org/Packaging
> посмотреть, как упакован wine в Debian и Fedora. 

Посмотрел сборку в Fedora. Там упаковываются действительно /usr/bin/wine32 и /usr/bin/wine64. Но там используется не скрипт, а механизм альтернатив.

https://src.fedoraproject.org/rpms/wine/blob/master/f/wine.spec#_1053

Причём, у %{_bindir}/wine64 приоритет 10, у %{_bindir}/wine32 приоритет 20, т.е. выберется из 2 вариантов wine32 если оба доступны.

Т.е. например создаётся симлинк /usr/bin/wine -> /usr/bin/wine32. При вызове wine вызывается в таком случае бинарь wine32, но в argv[0] у него "wine". Соответственно к "wine" добавляется префикс "64", получается "wine64" и пытается вызвать правильный бинарь для wine64.

Если же использовать скрипт, как сейчас в тестовом задании, то в argv[0] попадает уже "wine32", к этой строке добавляется суффикс "64" и получается уже описываемое в devel "wine3264".

В Debian, насколько я вижу, wine не переименовывают в wine32:

https://packages.debian.org/sid/i386/wine32/filelist

Я считаю, что в связи с описанной выше логикой переименовывать wine в wine32 - не нужно и даже скорее вредно. Рекомендуемые апстримом скрипты-обёртки и переименование бинарей стоит использовать только если эти бинари по-дефолту конфликтуют в разных архитектурах по именам, как например происходит у wineserver.

Если необходимо иметь /usr/bin/wine в обоих пакетах, и i586-wine, и wine, то можно опять-таки попробовать поступить как в Debian: перенести /usr/bin/wine и /usr/bin/wine64 в /usr/lib/$something/, например, /usr/lib/wine/bin/, а в /usr/bin/wine сделать скрипт-обёртку, и возможно ещё симлинк /usr/bin/wine64 -> /usr/lib/wine/bin/wine64. Работоспособность такого решения потребуется протестировать, возможно помимо wine и wine64 потребуется какие-то ещё бинари перенести.
Comment 5 Aleksei Nikiforov 2020-09-16 18:04:10 MSK
Сделал задание #258083 с wine и wine-vanilla без файловых конфликтов с соответствующими arepo-пакетами:

http://git.altlinux.org/tasks/258083

К сожалению, пока что можно в задании оценить лишь изменения в исходниках. arepo не генерирует i586-wine и i586-wine-vanilla без дополнительных изменений, которые были собраны в rpmrebuild-arepo в задании #258093:

http://git.altlinux.org/tasks/258093

В частности, необходимо вот это изменение:

http://git.altlinux.org/people/darktemplar/packages/?p=rpmrebuild-arepo.git;a=commitdiff;h=77f25bba5fee451922dfeebcfee40c1d314d64c9

Заодно обновил rpmrebuild-arepo-scripts чтобы оно работало с python3 и текущим python3(rpm) из Сизифа.

Пока что я только локально генерировал i586-wine через arepoize и тестировал чтобы всё работало. Проблем не обнаружил. Пробовал ставить i586-wine и wine как по отдельности, так и вместе. wine-vanilla не проверял, но там практически всё сделано аналогично.

План следующий:
1) Получение обратной связи от мейнтейнера wine и wine-vanilla (lav@). Если всё ок и дополнительных изменений не нужно, то к следующему пункту.
2) Обновление rpmrebuild-arepo как в задании #258093 или аналогично. Также возможно похожие изменения надо будет проделать в girar и на сборочнице.

http://git.altlinux.org/people/ldv/packages/girar.git?p=girar.git;a=blob;f=gb/gb-task-arepo-plan-identify;h=61971bb9ab652f059d8ea5ac3e58e1810e4d749f;hb=HEAD#l21

3) Пересобрать wine и wine-vanilla из задания, чтобы там появились пакеты i586-wine и i586-wine-vanilla. Также можно после этого их при необходимости дополнительно протестировать.
4) Отправить новые wine и wine-vanilla в репозиторий. Файловые конфликты должны уйти. Должны работать отдельно установленные i586-wine и wine (и i586-wine-vanilla и wine-vanilla тоже).
5) Попросить админов сборочницы наконец убрать выставление конфликтов в prog режиме arepo.
6) Пересобрать wine и wine-vanilla в репозитории. Межпакетные конфликты должны пропасть. В дополнение к пункту 4 должны работать вместе установленные соответствующие пакеты, т.е. wine и i586-wine или wine-vanilla и i586-wine-vanilla.

Начнём с пункта 1. lav@, прошу посмотреть упомянутое выше задание и предоставить отзыв ("ок" или "не ок" и что не так).
Comment 6 Vitaly Lipatov 2020-09-16 19:42:05 MSK
(Ответ для Aleksei Nikiforov на комментарий #4)
...
> Если же использовать скрипт, как сейчас в тестовом задании, то в argv[0]
> попадает уже "wine32", к этой строке добавляется суффикс "64" и получается
> уже описываемое в devel "wine3264".
Ну это странно, надо будет с этим разобраться. Хотя достаточно вызывать wine32 не через exec в скрипте, и проблемы не будет.

...
> Я считаю, что в связи с описанной выше логикой переименовывать wine в wine32
> - не нужно и даже скорее вредно. Рекомендуемые апстримом скрипты-обёртки и
Поскольку иметь скрипт wine полезно для ряда случаев, я бы придерживался подхода с wine32 и wine64. Не вижу смысла при наличии wine64 что-то называть просто wine.

> Если необходимо иметь /usr/bin/wine в обоих пакетах, и i586-wine, и wine, то
> можно опять-таки попробовать поступить как в Debian: перенести /usr/bin/wine
> и /usr/bin/wine64 в /usr/lib/$something/, например, /usr/lib/wine/bin/, а в
> /usr/bin/wine сделать скрипт-обёртку, и возможно ещё симлинк /usr/bin/wine64
> -> /usr/lib/wine/bin/wine64. Работоспособность такого решения потребуется
> протестировать, возможно помимо wine и wine64 потребуется какие-то ещё
> бинари перенести.
Да не нужно нам bin/wine в обоих пакетах, в одном достаточно. Переносить куда-то имеет смысл только полностью, ради сомнительной возможности устаналивать сразу много разных wine.
Comment 7 Vitaly Lipatov 2020-09-16 21:32:57 MSK
(Ответ для Aleksei Nikiforov на комментарий #5)
...
> Начнём с пункта 1. lav@, прошу посмотреть упомянутое выше задание и
> предоставить отзыв ("ок" или "не ок" и что не так).
Я не знаю, зачем вы сделали задание, если ещё не обсуждено, какие изменения предлагаются, а вы не описали, что вы предлагаете к изменению.
Мне проще сделать изменения самому, чем смотреть, в задание и ещё отзыв предоставлять.
Comment 8 Aleksei Nikiforov 2020-09-17 10:37:50 MSK
Прежде чем предлагать изменения, мне нужно было убедиться что после них wine будет работоспособен. Проделав такие изменения, оформить их в test-only задание - практически не требует никаких дополнительных усилий. Поэтому я его и сделал. Таким образом можно не только рассказать какие изменения планируется делать, но и показать их.

По поводу содержимого изменений: поменял bindir для wine с /usr/bin на /usr/lib/%name-%version/bin. В /usr/bin поместил 4 адаптированных скрипта из Debian - wine, winegcc и симлинки на него, wineserver и wine-preloader. Остальные файлы, которые были перенесены из /usr/bin, засимлинкал обратно.

Отдельная директория потребовалась чтобы не переименовывать бинарь wine в wine32, а также обеспечить наличие /usr/bin/wine в wine*-common, т.е. чтобы /usr/bin/wine был даже если i586-wine не установлен. Если от наличия /usr/bin/wine всегда - отказаться, то можно отдельную директорию не создавать, достаточно будет переименовать wineserver соответственно в wineserver32 и wineserver64 и использовать скрипт wineserver.

Если хотите сами сделать другое задание с аналогичными изменениями, с моей стороны возражений нет. В случае если какие-то другие изменения для wine/wine-vanilla планируются или будут собраны, я без проблем могу свои изменения из этого задания переделать поверх Ваших изменений.
Comment 9 Aleksei Nikiforov 2020-09-30 16:54:20 MSK
(Ответ для Vitaly Lipatov на комментарий #7)
> Мне проще сделать изменения самому, чем смотреть, в задание и ещё отзыв
> предоставлять.

Есть прогресс по данному багу?
Comment 10 Aleksei Nikiforov 2021-02-10 13:07:18 MSK
(Ответ для Aleksei Nikiforov на комментарий #9)
> (Ответ для Vitaly Lipatov на комментарий #7)
> > Мне проще сделать изменения самому, чем смотреть, в задание и ещё отзыв
> > предоставлять.
> 
> Есть прогресс по данному багу?
Comment 11 Anton Farygin 2021-04-28 10:42:12 MSK
Коллеги, очень хочется что бы p10 вышел без этой ошибки.
Comment 12 Vitaly Lipatov 2021-04-28 12:12:51 MSK
(Ответ для Anton Farygin на комментарий #11)
> Коллеги, очень хочется что бы p10 вышел без этой ошибки.
Стремимся к этому.
Comment 13 Vitaly Lipatov 2021-08-23 11:19:48 MSK
Просьба произвести действие, обратное совершённому в
https://bugzilla.altlinux.org/22985
То есть убрать пакет wine из списка исключений (prog mode) для сборки в Сизиф.

Задание, которое сейчас некорректно собралось:
http://git.altlinux.org/tasks/283594/

В нём почему-то вообще часть пакетов не собралась:
http://git.altlinux.org/tasks/283594/build/repo/x86_64-i586/RPMS.task/
Comment 14 Repository Robot 2021-10-30 03:29:12 MSK
wine-staging-1:6.17.1-alt3 -> sisyphus:

 * Fri Sep 17 2021 Vitaly Lipatov <lav@altlinux> 1:6.17.1-alt3
 - improve package conflicts, make spec wine-vanilla compatible
 * Tue Sep 14 2021 Vitaly Lipatov <lav@altlinux> 1:6.17.1-alt2
 - disable strip PE modules
 * Sat Sep 11 2021 Vitaly Lipatov <lav@altlinux> 1:6.17.1-alt1
 - new version 6.17.1 (with rpmrb script)
 * Fri Sep 10 2021 Vitaly Lipatov <lav@altlinux> 1:6.16.2-alt1
 - update patchset: eterbugs #15185, 15271, 15286
 - strip debug info from PE modules
 * Mon Aug 30 2021 Vitaly Lipatov <lav@altlinux> 1:6.16.1-alt2
 - skip strip all PE files from winepedir (we need debug info)
 - add script wine-cap_net_raw in wine-ping package (eterbug #15254)
 - rewrite clang build requires to p9 compatibility
 * Sun Aug 29 2021 Vitaly Lipatov <lav@altlinux> 1:6.16.1-alt1
 - new version 6.16.1 (with rpmrb script)
 * Sun Aug 29 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.2-alt3
 - enable PE dlls build (via clang)
 - add workaround for altbug #38130 (avoid nested if)
 * Sun Aug 29 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.2-alt2.2
 - enable build with libunwind
 - rearrange BR: add libattr, libxjr, add libSDL2, libgcrypt, libsasl2, valgrind
 - disable build with opencl if build PE
 - allow enable PE dlls build (via clang)
 - add subpackage wine-ping to allow ping via setcap cap_net_raw=ep in post script
 * Sun Aug 29 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.2-alt2.1
 - disable LTO (test it later)
 - move secondary definitions below, drop alt only section
 - wine-devel now requires base wine package
 - fix clang requires (basically, for p9)
 - provide and obsolete libname if we don't pack libname
 - small cleanup
 * Mon Aug 23 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.2-alt1
 - update patches to staging wine-6.15
 * Sat Aug 21 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.1-alt2
 - enable wine biarch based on changes by @lav@ and @darktemplar (ALT bug #37035)
 - add wine-common noarch package
 - add wine-devel-tools package (with toolchain)
 - rename libwine-devel to wine-devel and make it noarch
 - rename libwine-gl to wine-gl
 - rename libwine-twain to wine-twain
 - move all files exclude libwine.so.1 from libwine to main package wine
 * Sat Aug 14 2021 Vitaly Lipatov <lav@altlinux> 1:6.15.1-alt1
 - new version 6.15.1 (with rpmrb script)
 * Sat Jul 31 2021 Vitaly Lipatov <lav@altlinux> 1:6.14.1-alt1
 - new version 6.14.1 (with rpmrb script)
 - set strict require wine-mono 6.3.0