Автор Тема: Странное поведение rpmbuild  (Прочитано 14049 раз)

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Странное поведение rpmbuild
« : 18.07.2019 20:50:51 »
Всем доброго времени суток!

При попытке собрать в пакет doom64ex из исходников в zip-архиве с Github столкнулся со следующим:

+ umask 022
+ /bin/mkdir -p /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
## скрипт удаляет откуда-то взявшийся каталог с именем программы+версия (откуда и зачем этот каталог вообще взялся - ХЗ) ##
+ rm -rf doom64ex-2.5
+ echo 'Source #0 (Doom64EX-master.zip):'
Source #0 (Doom64EX-master.zip):
+ /usr/bin/unzip -qq /home/arbars-alt/Programming/RPM/SOURCES/Doom64EX-master.zip
## Архиватор зачем-то предлагает заменить. Я отказываюсь: ##
replace Doom64EX-master/.appveyor.yml? [y]es, [n]o, [A]ll, [N]one, [r]ename: N
+ cd doom64ex-2.5
/home/arbars-alt/Programming/tmp/rpm-tmp.54164: line 126: cd: doom64ex-2.5: No such file or directory
ошибка: Неверный код возврата из /home/arbars-alt/Programming/tmp/rpm-tmp.54164 (%prep)


Ошибки сборки пакетов:
    Неверный код возврата из /home/arbars-alt/Programming/tmp/rpm-tmp.54164 (%prep)

Та же ошибка всплывает, даже если согаситься на замену.
Если закомментить макрос %setup, то скрипт, естественно, не распакует архив, и нужный каталог не появится.

Программа собирается через cmake, потому шаблон спека взят именно с cmake

Вопрос у  меня такой: или я чего-то не знаю, или билдер где-то сломался, ведь, насколько я понимаю, стандартный спек, по идее, должен собираться с пол-пинка, лишь пропиши путь к исходникам и зависимости. Или я не прав?
Текст спека:
Name: doom64ex
Version: 2.5
Release: alt1

Summary: Doom64EX is a project aimed to recreate Doom64 as close as possible
License: GPLv2+
Group: Development/Other

Url: http://doom64ex.wordpress.com/
Source: Doom64EX-master.zip
Packager: Arbars Zagadkin <ubuntigroid@mail.ru>

BuildPreReq: cmake rpm-macros-cmake libSDL2-devel libSDL2_net-devel zlib-devel libpng-devel libfluidsynth-devel

%description
This specfile is provided as a sample specfile
for a package built with cmake.

%prep

%setup -q


%build
%cmake
%make_build # VERBOSE=1


%install
%makeinstall_std
%find_lang %name

%_bindir/*
%_man1dir/*


%changelog
* Thu Jul 18 2019 Arbars Zagadkin <ubuntigroid@mail.ru> 1.0-alt1
- initial build for ALT Sisyphus

« Последнее редактирование: 18.07.2019 21:28:40 от Arbars »
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Странное поведение rpmbuild
« Ответ #2 : 19.07.2019 10:02:54 »
Используйте все макросы cmake, а не устраивайте винегрет. %cmake собирает в подкаталоге BUILD. А %make_build – в основном каталоге.
Андрей Черепанов (cas@)

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #3 : 19.07.2019 10:37:30 »
не устраивайте винегрет
Так штука в том, что этот "винегрет" висит в вики в качестве примера спека.
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Странное поведение rpmbuild
« Ответ #4 : 19.07.2019 17:57:29 »
1. Запакуйте в tar
2. Исправьте расширение на tar в спеке, замените %make_build на %cmake_build, %makeinstall_std - на %сmakeinstall_std
« Последнее редактирование: 19.07.2019 18:00:55 от Антон Мидюков »

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #5 : 19.07.2019 18:28:51 »
1. Запакуйте в tar
2. Исправьте расширение на tar в спеке, замените %make_build на %cmake_build, %makeinstall_std - на %сmakeinstall_std
1. Перепаковал.
2. Исправил и заменил:
Name: Doom64EX
Version: 2.5
Release: alt1

Summary: Doom64EX is a project aimed to recreate Doom64 as close as possible
License: GPLv2+
Group: Games/Arcade

Url: http://doom64ex.wordpress.com/
Source: Doom64EX.tar.gz
Packager: Arbars Zagadkin <ubuntigroid@mail.ru>

BuildPreReq: cmake rpm-macros-cmake libSDL2-devel libSDL2_net-devel zlib-devel libpng-devel libfluidsynth-devel

%description

Doom 64 EX is a faithful recreation of the original game
using the Doom source code as the base with the benefit
from newer control methods like mouse look, high resolutions
and color depth. In addition to that, Doom 64 EX will also
feature mod support to allow users to create custom levels,
textures and sprites. Doom 64 EX is also aimed to be 100% accurate
to the original game as close as possible and offer some PC-specific
features that can enhance the game.

%prep

%setup 

%build

%cmake_build VERBOSE=1


%install
%cmakeinstall_std

%check



%changelog
* Thu Jul 18 2019 Arbars Zagadkin <ubuntigroid@mail.ru> 1.0-alt1
- initial build for ALT Sisyphus


Выхлоп:
предупреждение: Unparseable macro: % accurate

Выполняется(%prep): /bin/sh -e /home/arbars-alt/Programming/tmp/rpm-tmp.95705
+ umask 022
+ /bin/mkdir -p /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ rm -rf Doom64EX-2.5
+ echo 'Source #0 (Doom64EX.tar.gz):'
Source #0 (Doom64EX.tar.gz):
+ /bin/tar -xf -
+ /bin/gzip -dc /home/arbars-alt/Programming/RPM/SOURCES/Doom64EX.tar.gz
+ cd Doom64EX-2.5
/home/arbars-alt/Programming/tmp/rpm-tmp.95705: line 126: cd: Doom64EX-2.5: No such file or directory
ошибка: Неверный код возврата из /home/arbars-alt/Programming/tmp/rpm-tmp.95705 (%prep)


Ошибки сборки пакетов:
    Unparseable macro: % accurate
Откуда берётся Doom64EX-2.5, и откуда берётся % accurate?
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Странное поведение rpmbuild
« Ответ #6 : 19.07.2019 19:42:23 »
Создайте каталог Doom64EX-2.5, поместите туда исходники, и запакуйте в tar каталог Doom64EX-2.5.

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #7 : 19.07.2019 19:56:53 »
Создайте каталог Doom64EX-2.5, поместите туда исходники, и запакуйте в tar каталог Doom64EX-2.5.
Создал, поместил, запаковал, поправил спек:
Name: Doom64EX
Version: 2.5
Release: alt1

Summary: Doom64EX is a project aimed to recreate Doom64 as close as possible
License: GPLv2+
Group: Games/Arcade

Url: http://doom64ex.wordpress.com/
Source: Doom64EX-2.5.tar.gz
Packager: Arbars Zagadkin <ubuntigroid@mail.ru>

BuildPreReq: cmake rpm-macros-cmake libSDL2-devel libSDL2_net-devel zlib-devel libpng-devel libfluidsynth-devel

%description

Doom 64 EX is a faithful recreation of the original game
using the Doom source code as the base with the benefit
from newer control methods like mouse look, high resolutions
and color depth. In addition to that, Doom 64 EX will also
feature mod support to allow users to create custom levels,
textures and sprites. Doom 64 EX is also aimed to be 100% accurate
to the original game as close as possible and offer some PC-specific
features that can enhance the game.

%prep

%setup

%build

%cmake_build VERBOSE=1


%install
%cmakeinstall_std

%check


%changelog
* Thu Jul 18 2019 Arbars Zagadkin <ubuntigroid@mail.ru> 1.0-alt1
- initial build for ALT Sisyphus


Выхлоп:
предупреждение: Unparseable macro: % accurate

Выполняется(%prep): /bin/sh -e /home/arbars-alt/Programming/tmp/rpm-tmp.83563
+ umask 022
+ /bin/mkdir -p /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ rm -rf Doom64EX-2.5
+ echo 'Source #0 (Doom64EX-2.5.tar.gz):'
Source #0 (Doom64EX-2.5.tar.gz):
+ /bin/gzip -dc /home/arbars-alt/Programming/RPM/SOURCES/Doom64EX-2.5.tar.gz
+ /bin/tar -xf -
+ cd Doom64EX-2.5
+ /bin/chmod -c -Rf u+rwX,go-w .
mode of './.git/objects/pack/pack-675be2a292529e32578b0e8576464810d5b6abd9.pack' changed from 0444 (r--r--r--) to 0644 (rw-r--r--)
mode of './.git/objects/pack/pack-675be2a292529e32578b0e8576464810d5b6abd9.idx' changed from 0444 (r--r--r--) to 0644 (rw-r--r--)
mode of './.git/modules/fluidsynth/objects/pack/pack-648ccef9652d33de0717c0a536539b5c93fe06ac.pack' changed from 0444 (r--r--r--) to 0644 (rw-r--r--)
mode of './.git/modules/fluidsynth/objects/pack/pack-648ccef9652d33de0717c0a536539b5c93fe06ac.idx' changed from 0444 (r--r--r--) to 0644 (rw-r--r--)
+ exit 0
Выполняется(%build): /bin/sh -e /home/arbars-alt/Programming/tmp/rpm-tmp.83563
+ umask 022
+ /bin/mkdir -p /home/arbars-alt/Programming/RPM/BUILD
+ cd /home/arbars-alt/Programming/RPM/BUILD
+ cd Doom64EX-2.5
+ '[' -n '' ']'
+ NPROCS=8
+ make -j8 -C BUILD VERBOSE=1
make: Entering an unknown directory
make: *** BUILD: No such file or directory.  Stop.
make: Leaving an unknown directory
ошибка: Неверный код возврата из /home/arbars-alt/Programming/tmp/rpm-tmp.83563 (%build)


Ошибки сборки пакетов:
    Unparseable macro: % accurate

ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #8 : 19.07.2019 20:14:35 »
Сейчас выпилил макрос cmake и прописал напрямую:

mkdir ./BUILD
cd ./BUILD

cmake ..

src-rpm собрался вообще без проблем, без единой ошибки.
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Странное поведение rpmbuild
« Ответ #9 : 19.07.2019 21:06:15 »
Сейчас выпилил макрос cmake и прописал напрямую:

Бррр... Зачем вы убрали макрос %cmake ?
Посмотрите, что значат макросы:
rpm -E %cmake
rpm -E %cmake_build
rpm -E %cmakeinstall_std

Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #10 : 19.07.2019 21:21:34 »
Бррр... Зачем вы убрали макрос %cmake ?
Посмотрите, что значат макросы:
rpm -E %cmake
rpm -E %cmake_build
rpm -E %cmakeinstall_std
Вы будете материться смеяться, но:
rpm -E %cmake
-E: неизвестный параметр

--eval также не работает
« Последнее редактирование: 19.07.2019 21:37:39 от Arbars »
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 534
Re: Странное поведение rpmbuild
« Ответ #11 : 20.07.2019 07:31:17 »
Откуда берётся Doom64EX-2.5
Принято, что в архив запаковывается каталог с именем вида %name-%version. Если это не так, то надо в %setup добавить ключ -n с тем именем каталога, которое в архиве. Также могут понадобиться ключи -a и -b. Подробности смотрите в «Maximum RPM».

и откуда берётся % accurate?
Простой поиск находит в %description
Цитировать
100% accurate
Тут, видимо, парсер спека надо немного починить. Или заэкранировать %. И ещё попробуйте убрать пустую строку между «%description» и текстом.


Оффлайн Arbars

  • Давно тут
  • **
  • Сообщений: 66
    • Email
Re: Странное поведение rpmbuild
« Ответ #12 : 20.07.2019 16:23:33 »
Итак, итоги текущего дня:

параметр -n для %setup почему-то не создаёт каталог, а пытается сразу в него попасть, чот заканчивается неудачей и ошибкой в выхлопе. Игра с ключами -a и -b ничего не дали...
ОС: Альт К Рабочая Станция х86_64
"Spec-файлы кривые у всех." Г. Курячий, практикум по настройке сборочного окружения

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 534
Re: Странное поведение rpmbuild
« Ответ #13 : 20.07.2019 18:36:53 »
параметр -n для %setup почему-то не создаёт каталог
А он и не должен.

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 534
Re: Странное поведение rpmbuild
« Ответ #14 : 20.07.2019 18:58:04 »
Вот с таким спеком в rpmbuild никаких проблем нет.
Есть проблемы с cmake, но это другой разговор.
Name: Doom64EX
Version: 2.5
Release: alt1

Summary: %name is a project aimed to recreate Doom64 as close as possible
License: GPLv2+
Group: Games/Arcade

Url: http://doom64ex.wordpress.com/
Source: %name-master.zip
Packager: Arbars Zagadkin <ubuntigroid@mail.ru>

BuildPreReq: cmake rpm-macros-cmake
BuildPreReq: libSDL2-devel libSDL2_net-devel zlib-devel libpng-devel libfluidsynth-devel

%description
Doom 64 EX is a faithful recreation of the original game
using the Doom source code as the base with the benefit
from newer control methods like mouse look, high resolutions
and color depth. In addition to that, Doom 64 EX will also
feature mod support to allow users to create custom levels,
textures and sprites. Doom 64 EX is also aimed to be 100%% accurate
to the original game as close as possible and offer some PC-specific
features that can enhance the game.

%prep
%setup -n %name-master

%build
%cmake
%cmake_build VERBOSE=1

%install
%cmakeinstall_std

%check

%changelog
* Thu Jul 18 2019 Arbars Zagadkin <ubuntigroid@mail.ru> 1.0-alt1
- initial build for ALT Sisyphus

$ rpmbuild -bc --nodeps Doom64EX.spec
Выполняется(%prep): /bin/sh -e /home/andrew/RPM/TMP/rpm-tmp.89376
+ umask 022
+ /bin/mkdir -p /home/andrew/RPM/BUILD
+ cd /home/andrew/RPM/BUILD
+ cd /home/andrew/RPM/BUILD
+ rm -rf Doom64EX-master
+ echo 'Source #0 (Doom64EX-master.zip):'
Source #0 (Doom64EX-master.zip):
+ /usr/bin/unzip -qq /home/andrew/RPM/SOURCES/Doom64EX-master.zip
+ cd Doom64EX-master
+ /bin/chmod -c -Rf u+rwX,go-w .
+ exit 0
Выполняется(%build): /bin/sh -e /home/andrew/RPM/TMP/rpm-tmp.89376
+ umask 022
+ /bin/mkdir -p /home/andrew/RPM/BUILD
+ cd /home/andrew/RPM/BUILD
+ cd Doom64EX-master
+ mkdir -p BUILD
+ __cmake
+ pushd BUILD
~/RPM/BUILD/Doom64EX-master/BUILD ~/RPM/BUILD/Doom64EX-master
+ cmake .. -DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_INSTALL_RPATH:BOOL=yes '-DCMAKE_C_FLAGS:STRING=-pipe -Wall -g -O2' '-DCMAKE_CXX_FLAGS:STRING=-pipe -Wall -g -O2' '-DCMAKE_Fortran_FLAGS:STRING=-pipe -Wall -g -O2' -DCMAKE_INSTALL_PREFIX=/usr -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DLIB_DESTINATION=lib64 -DLIB_SUFFIX=64
-- The C compiler identification is GNU 5.3.1
-- The CXX compiler identification is GNU 5.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Warning at CMakeLists.txt:40 (message):
  The fluidsynth submodule wasn't initialised.  Run `git submodule --init
  --recursive` to use fluidsynth-lite, or add -DENABLE_SYSTEM_FLUIDSYNTH=ON
  to use the system-provided FluidSynth library.


fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
CMake Error at /usr/share/CMake/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
  Could NOT find SDL2 (missing: SDL2_INCLUDE_DIR SDL2_LIBRARY)
Call Stack (most recent call first):
  /usr/share/CMake/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindSDL2.cmake:98 (find_package_handle_standard_args)
  CMakeLists.txt:107 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/andrew/RPM/BUILD/Doom64EX-master/BUILD/CMakeFiles/CMakeOutput.log".
ошибка: Неверный код возврата из /home/andrew/RPM/TMP/rpm-tmp.89376 (%build)


Ошибки сборки пакетов:
    Неверный код возврата из /home/andrew/RPM/TMP/rpm-tmp.89376 (%build)
« Последнее редактирование: 20.07.2019 19:01:12 от andrew_b »