Автор Тема: .spec макросы и прочее  (Прочитано 1072 раз)

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #15 : 05.09.2022 09:06:00 »
Есть косячок. при запуске из меню приложений выскакивает флажок
Blastem info
Failet to set vsync to off: That operation is not supported

Интересный случай. Это не в игре дело и вряд ли в её сборке. Вот код SDL, который выдаёт ошибку:
int
SDL_GL_SetSwapInterval(int interval)
{
    if (!_this) {
        return SDL_UninitializedVideo();
    } else if (SDL_GL_GetCurrentContext() == NULL) {
        return SDL_SetError("No OpenGL context has been made current");
    } else if (_this->GL_SetSwapInterval) {
        return _this->GL_SetSwapInterval(_this, interval);
    } else {
        return SDL_SetError("Setting the swap interval is not supported");
    }
}
Если я правильно понял, для «иксов» указатель GL_SetSwapInterval инициализируется в без условий времени исполнения:
#if SDL_VIDEO_OPENGL_GLX
    device->GL_LoadLibrary = X11_GL_LoadLibrary;
    device->GL_GetProcAddress = X11_GL_GetProcAddress;
    device->GL_UnloadLibrary = X11_GL_UnloadLibrary;
    device->GL_CreateContext = X11_GL_CreateContext;
    device->GL_MakeCurrent = X11_GL_MakeCurrent;
    device->GL_SetSwapInterval = X11_GL_SetSwapInterval;
    device->GL_GetSwapInterval = X11_GL_GetSwapInterval;
    device->GL_SwapWindow = X11_GL_SwapWindow;
    device->GL_DeleteContext = X11_GL_DeleteContext;
#endif
Но обязан быть задан макрос SDL_VIDEO_OPENGL_GLX.
Не вижу в файле spec для SDL libGLX в BuildRequires. И опции --enable-video-opengl-glx не вижу в configure, оно вычисляется при конфигурировании. Но если нет нужной библиотеки, макрос не задаётся. Отсюда и ошибка.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #16 : 05.09.2022 09:16:25 »
Ещё не понятно, почему текст ошибок разный. В SDL_SetError уходит одно, а SDL_GetError показывает другое:
if (vsync) {
if (SDL_GL_SetSwapInterval(!strcmp("on", vsync)) < 0) {
#ifdef __ANDROID__
debug_message("Failed to set vsync to %s: %s\n", vsync, SDL_GetError());
#else
warning("Failed to set vsync to %s: %s\n", vsync, SDL_GetError());
#endif
}
}
https://salsa.debian.org/games-team/blastem/-/blob/master/render_sdl.c#L1110-1118
 Зачем бы кто-то писал «That», когда можно информировать подробно.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #17 : 05.09.2022 15:47:24 »
Сборка из данного исходника начинается с make, кстати если собирать программу в пользовательской папке через make ,  и запускать  щелчком, ошибок в работе нет. Логично что spec не совершенен, но для меня пока сложно сделать идеально.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #18 : 06.09.2022 09:44:10 »
Причина ошибки установлена: в настройках эмулятора во вкладке видео отключаем openGl и всё дальше полёт нормальный.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #19 : 06.09.2022 11:48:46 »
Причина ошибки установлена: в настройках эмулятора во вкладке видео отключаем openGl и всё дальше полёт нормальный.
Это вряд ли причина ошибки. Просто при отключении OpenGL тот вызов SDL_GL_SetSwapInterval() не делается (программа иначе выводит картинку). У собранной при помощи make программы OpenGL же не отключаете? Вот это не ясно, как и почему текст ошибки расходится с тем что я нашёл в SDL. Думается, ldd blastem выведет разное для этих двух разных исполняемых файлов blastem, тогда как должно быть идентично.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #20 : 06.09.2022 13:57:29 »
У собранной при помощи make программы OpenGL же не отключаете?
Там оно отключено по дефолту.
Что же сказать о картинке, эмулируемая приставка к аналогову телевизору была популярна в середине 90х. Зто не единственный  подобный эмулятор, в бытность использования 32 битных ubuntu, debian я собирал Gens и dgen-sdl, для MacOS пробовал openemu , для моих глаз картинка везде одинакова.
Чуть позже подключу диск с debian, посмотрю включен ли там openGl по дефолту.
З.Ы. не знаю правильно ли работает в Alt проприаретарный драйвер nvidia, разница в картинке рабочего стола по сравнению с noveau очевидна, но тиринги на youtube обычным способом победить до конца так и не удалось. Хотя вроде все необходимые пакеты в системе установлены.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #21 : 06.09.2022 17:21:56 »
Там оно отключено по дефолту.
Как это определили? Если изменили настройки при запуске другого исполняемого файла, так они сохранились в конфиге. Он один на все случаи ~/.config/blastem/blastem.cfg
У меня собранный командой make не выводит ошибку (это Сизиф и Wayland, т.е. немного другая конфигурация), а по spec-у сегодня уже не соберу.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #22 : 06.09.2022 19:11:01 »
Действительно догадка не верная, config грохнул, запустил эмулятор из папки и в новом config  прописался openGl ну и соответственно....
По spec собирается после очистки BUILD и tmp

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #23 : 08.09.2022 09:23:11 »
А что значит «соответственно»?  :-)

Собрал RPM по спецификации отсюда https://forum.altlinux.org/index.php?topic=46614.msg373600#msg373600
Для чего сохранил https://www.retrodev.com/repos/blastem/archive/0013362c320c.tar.bz2 в ~/RPM/SOURCES (не знаю, как правильно собирать rpm в Альте, просто описываю шаги, что бы можно было воспроизвести).
Потом добавил в spec
%prep
%setup -n %{name}-%{commit}
что бы распаковывало архив. В оригинале в этом месте лишние пустые строки.
Закомментировал строки с blastem.desktop и blastem.png, поскольку файлы в архиве отсутствует.
Команда rpmbuild -ba blastem.spec собрала пакеты. Установил. Запускается.

«Failet to set vsync to off: That operation is not supported» - вот такое увидеть не получается .

Как собирали, не ясно. На первый взгляд стоит брать исходники с https://salsa.debian.org/games-team/blastem
Не вникал в различие, но при сборке нет массы предупреждений, как в версии с retrodev.com, и там присутствуют blastem.desktop и blastem.png.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #24 : 08.09.2022 12:45:56 »
А что значит «соответственно»? 
Соответственно та же ошибка.
Потом добавил в spec
Код: [Выделить]
%prep
%setup -n %{name}-%{commit}
Спасибо это полезно, у меня было неправильно, исходники в папку BUILD я помещал вручную
Не вникал в различие,
/salsa.debian.org/games-team/ их слегка доработали.
К слову сказать года три назад для debian  я собирал другой commit, исходники вообще нашёл случайно в ppa ubuntu. Собиралось нормально, работало так себе, бывало программа вылетала. Видимо прогресс есть.
К сожалению должен признать что функция openGl в Alt linux 10 на моей видеокарте nvidia GTX650, вообще 470 драйвер, выбранный системой автоматом работает не здорово. О непобеждённых тирингах при просмотре видео, я уже писал. Сессия plasma+wayland так же не работоспособна
Система поставлена чисто в учебно развлекательных целях, возможно стоит попробовать поменять драйвер или даже переключиться на свободный. Возможно это плохо закончится для этой отдельно взятой установки системы.
Отдельное огромное спасибо пользователю  trs за активное участие и помощь в эксперименте.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #25 : 08.09.2022 16:40:22 »
К сожалению должен признать что функция openGl в Alt linux 10 на моей видеокарте nvidia GTX650, вообще 470 драйвер, выбранный системой автоматом работает не здорово.
Вот теперь дошло, почему «не то» сообщение об ошибке - я не туда смотрел.  "That operation is not supported" выводится X11_GL_SetSwapInterval() если не может найти расширение GLX_EXT_swap_control. Драйвер NVidia его предоставляет в  libglxserver_nvidia.so.470.141.03. Покажет ли его glxinfo | grep GLX_EXT_swap_control ?

Сессия plasma+wayland так же не работоспособна
Возможно, wayland (если оно надо) лучше будет работать в Сизифе или на Gnome. Plasma немного отстаёт, особенно с NVidia, но детали я не знаю.

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #26 : 08.09.2022 19:53:58 »
alex@host-51 ~]$ glxinfo | grep GLX_EXT_swap_control
    GLX_EXT_import_context, GLX_EXT_no_config_context, GLX_EXT_swap_control,
    GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,

К слову версия драйвера 470.129.06
В Debian 11 драйвер тот же самый, но там проблем нет.
Из обнаруженных существенных различий в debian libglew2.1 а в Alt libglew2.2, и программа собирается на её заголовках. Заголовки версии 2.1 в репозитории (стандартном) не доступны.
 В сторону wayland я бы смотрел если имел видео от AMD или встройку, а так я адепт синих процессоров и зелёных видеокарт. Правда и яблочники и linux в последнее время от nvidia отвернулись, В любом случае сейчас железками не покидаешься, а дальше будет видно что приобретать.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: .spec макросы и прочее
« Ответ #27 : 09.09.2022 08:55:15 »
Так работает Wayland c NVidia. В смысле, люди ещё год назад запускали https://www.reddit.com/r/archlinux/comments/oq1cqg/how_to_get_nvidia_wayland_session_under_gnome/ Как раз в 470-х драйверах добавили поддержку.

В Сизифе есть kernel-source-nvidia-47014103-470.141.03-alt238.x86_64.rpm  Не знаю, поможет ли чем новая версия. Насколько вижу, это dkms. С ними бывают проблемы, когда банально что-то не собралось при обновлении ядра. Но если glxinfo показывает нужное, наверное, дело не в этом.
« Последнее редактирование: 09.09.2022 08:56:54 от trs »

Оффлайн predator2018

  • Давно тут
  • **
  • Сообщений: 99
Re: .spec макросы и прочее
« Ответ #28 : 09.09.2022 10:51:59 »
Спасибо, посмотрел, в любом случае у меня кеды, на гном уходить нет желания. Да и эмулятор использовал чисто как не сложный исходник чтобы представлять как собирается rpm.  Открыл для себя нечто новое. Прежде с rpm не заморачивался, просто собирал из исходников. Параллельно наткнулся на один скрипт для сборки ленивого deb  пакета и он очень похож на . spec.