Научите компилировать.
Научите компилировать.
Итак... Хотел было научиться компилировать. Бродил по интернету долго, нашел кучу инструкций, только в них написаны разные вещи (часто противоречащие друг-другу.)
Сам я в этом пожалуй не разберусь. Если кому не лень, научите пожалуйста.
Для примера, хочу собрать крайний выпуск Wine под Gl либы нвидиа и с патчем на многопоточность рендеринга (как он там называется). На выходе, хотелось бы получить .RPM пакет. (так - и научусь, и вайн поставль. Лепота... )
Вот, собрался я компилить и... что делать то?
Сам я в этом пожалуй не разберусь. Если кому не лень, научите пожалуйста.
Для примера, хочу собрать крайний выпуск Wine под Gl либы нвидиа и с патчем на многопоточность рендеринга (как он там называется). На выходе, хотелось бы получить .RPM пакет. (так - и научусь, и вайн поставль. Лепота... )
Вот, собрался я компилить и... что делать то?
-
- Сообщения: 90
- Зарегистрирован: 28 окт 2014, 21:00
Re: Научите компилировать.
Компилировать локально - это одно, а собирать rpm-пакет - это другое.Vochatrak писал(а):Итак... Хотел было научиться компилировать. Бродил по интернету долго, нашел кучу инструкций, только в них написаны разные вещи (часто противоречащие друг-другу.)
Сам я в этом пожалуй не разберусь. Если кому не лень, научите пожалуйста.
Для примера, хочу собрать крайний выпуск Wine под Gl либы нвидиа и с патчем на многопоточность рендеринга (как он там называется). На выходе, хотелось бы получить .RPM пакет. (так - и научусь, и вайн поставль. Лепота... )
Вот, собрался я компилить и... что делать то?
Компилировать локально не сложно, как правило. Это и я могу сделать:
1) берем исходники
2) загялыдываем в README файл, там как правило файл указание на файл INSTALL
3) следуем инструкциям
Для компиляции ставим библиотеки из репозиториев с приставкой -devel
4) ...
5) profit
Веселее со сборкой пакета. Тогда все пункты с 1) по 5) не актуальны. В случае РОСЫ это про ABF надо узнавать, если я не ошибаюсь. Это, вроде бы, самый удобный путь.
Re: Научите компилировать.
Вроде говорят через Checkinstall можно легко собрать? Как, чего?Компилировать локально - это одно, а собирать rpm-пакет - это другое.
Говорят - если собирать вайн, с библиотеками своей видеокарты то, можно добиться хорошего прироста производительности и совместимости.3) следуем инструкциям
Для компиляции ставим библиотеки из репозиториев с приставкой -devel
4) ...
5) profit
Как это сделать? (и о каких библиотеках вообще речь?)
Вот если-бы, кто объяснил...В случае РОСЫ это про ABF надо узнавать, если я не ошибаюсь. Это, вроде бы, самый удобный путь.
P.S.Если файла Readme вообще нет, как можно узнать - какие именно -dev пакеты нужны?
P.P.S. Через GUI компилить можно, или только терминал?
Re: Научите компилировать.
Не всё так однозначно - иногда даже для простой компиляции надо писать патчи, что требует либо знания языка программирования, либо системы сборки (cmake, qmake и т.п.). Пример такого патча: https://abf.rosalinux.ru/import/fungulo ... kage.patchNikolay Semenov писал(а):Компилировать локально - это одно, а собирать rpm-пакет - это другое. Компилировать локально не сложно, как правило. Это и я могу сделать:
А иногда для сборки новой версии RPM-пакета достаточно лишь заменить в спек-файле версию программы и запустить rpmbuild -ba спек. Например: https://abf.rosalinux.ru/import/wesnoth ... a899513e88
Но в целом, конечно, сборка пакета задача более сложная, т.к. она включает в себя компиляцию, но не ограничивается ей.
Простых универсальных инструкций по компиляции нет, тут надо просто набираться опыта, читая файлы README и INSTALL различных программ.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Охохох...
Значит быстро не освою.
Может кто-нибудь, во время сборки чего-нибудь опишет пошагово свои действия? Хоть пример будет...
Да, и тема хоть чем нибудь наполнится.
Значит быстро не освою.
Может кто-нибудь, во время сборки чего-нибудь опишет пошагово свои действия? Хоть пример будет...
Да, и тема хоть чем нибудь наполнится.
Re: Научите компилировать.
самое простое это сборка src.rpm от других дистрибьютивов, и то може не получиться, rpm -ba пакет_с_исходниками
Re: Научите компилировать.
Не боги горшки обжигают...Pulfer писал(а):Простых универсальных инструкций по компиляции нет, тут надо просто набираться опыта, читая файлы README и INSTALL различных программ.
Перво-наперво в системе должны быть установлены пакеты gcc и make
Чтобы в терминале (Konsole) работалось бы не так грустно, всегда ставлю пакет mc (файловый менеджер для Konsole, позволяет избежать некоторых действий руками).
Скачиваю файл-архив с исходниками («что-то там.tar.gz») обычно в папку «Загрузки». Потом в домашней папке создаю одноименную со скаченным пакетом папку, куда перемещаю скачанный пакет.
- В mc открываю папку с архивом в правой и левой панелях.
- Устанавливаю курсор на архив и нажимаю Ввод, вхожу в архив, устанавливаю курсор на появившемся файле «что-то там» (обычно это папка), жму F5 для копирования файла из архива в папку.
- Выхожу из архива, вхожу в папку «что-то там», ищу файлы README и/или INSTALL, читаю, что там написано по поводу установки (что должно присутствовать в системе и как компилировать программу).
- Доустанавливаю необходимые пакеты.
- Обычно для компиляции используются команды:
./configure (набирается в терминале руками, в mc достаточно установить курсор на файл configure и нажать Ввод)
make (обе от обычного пользователя) и
make install (от root).
Вместо make install можно (а некоторые рекомендуют) использовать make checkinstall (checkinstall должен быть установлен в системе), который и создаст пакет «что-то там.rpm».
./configure проверит конфигурацию и выдаст, если что, информацию о недостающих пакетах, как правило, требуется установка соответствующих dev пакетов для успешной компиляции.
Когда конфигурация завершится без ошибок, тогда можно переходить к команде make, которая собственно и собирёт программу.
Потом уже make install или make checkinstall
PS checkinstall в ROSA помнится завершался сообщением об ошибке, хотя rpm собирался без проблем, надо было просто внимательно изучить содержимое папки, где происходила компиляция
- Галахов Роман
- Сообщения: 2349
- Зарегистрирован: 26 фев 2012, 20:02
- Откуда: Моск. обл. Волоколамск
Re: Научите компилировать.
Как минимум почитать wiki http://wiki.rosalab.ru - Свободная документация по продуктам РОСА - 3й столбецVochatrak писал(а):Охохох...
Значит быстро не освою.
Может кто-нибудь, во время сборки чего-нибудь опишет пошагово свои действия? Хоть пример будет...
Да, и тема хоть чем нибудь наполнится.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
Re: Научите компилировать.
Спасибо всем участвующим.
Принцип, я понял. Скомпилировать пока ничего не смог...(на днях буду разбираться)
Если что-то будите для себя собирать (пофиг - RPM или просто компилировать), пожалуйста описывайте свои действия здесь (можно со скриншотами).
Описывайте что, как, чем? (см. собираю бла-бла-бла, через то-то, в консоль написоло о нихватке вот этого, параметры вводил такие, и.т.д)
P.S. Если кому не лень, конечно...
Принцип, я понял. Скомпилировать пока ничего не смог...(на днях буду разбираться)
Если что-то будите для себя собирать (пофиг - RPM или просто компилировать), пожалуйста описывайте свои действия здесь (можно со скриншотами).
Описывайте что, как, чем? (см. собираю бла-бла-бла, через то-то, в консоль написоло о нихватке вот этого, параметры вводил такие, и.т.д)
P.S. Если кому не лень, конечно...
Re: Научите компилировать.
если будешь собирать через ./configure всегда смотри на ошибки что он выдает. это билиотеки как правило. бывало собирал для себя некоторые программы , которых почему то не было в репозитории и иногда бывало что выдает ошибку об отсутствовавшей библиотеке которая если проверить уже стоит. в таком случае надо посмотреть на ответ конфигуре и выяснить где он её ищет. часто достаточно поместить в ту папку ссылку на расположение библиотеки и все заработает. но там есть особенность библиотека должна подходить по минимальным требованиям для программы. все это есть в файлах readme и install как правило. а собрать пакет можно и локально при наличии всех необходимых библиотек и средств компиляции. иногда нужен не только gcc, но и cmake или qmake. все зависит от исходников. в любом случае смотри в файл install там должно быть все что нужно.
Re: Научите компилировать.
Только недавно появилась шикарная статья по правке исходников и наложению патчей. Тоже очень полезно.
https://corpwiki.rosalinux.ru/Blog:%D0% ... 0%BF%D0%B5
https://corpwiki.rosalinux.ru/Blog:%D0% ... 0%BF%D0%B5
Re: Научите компилировать.
Мне на днях, попалась вот такая инструкция по компилированию Bino:
После короткого расспроса, был получен примерно такой ответ:
В общем, может быть, напишите маленькую инструкцию на подобии представленной выше?
Естественно с поправкой на Росу. (хотя такую краткую инструкцию возможно стоит добавить в вики...)
Ну, и сразу другой вопрос - Ставить кучу -dev пакетов и кучу их зависимостей, не очень хочется. Мучиться с чрутом и виртуалкой в общем то то же.
В росе есть система "заморозки" дистрибутива. Можно заморозить, скомпилировать, откатить (что бы девы сами пропали) и после уже ставить скомпилированное?
Или может как нибудь по другому это провернуть? (песочница или что то еще)
А в идеале, ставить девы в отдельную папку (лучше в хом). Захотел - удалил, захотел - перенес или пережал, красота!
Естественно с поправкой на Росу. (хотя такую краткую инструкцию возможно стоит добавить в вики...)
Ну, и сразу другой вопрос - Ставить кучу -dev пакетов и кучу их зависимостей, не очень хочется. Мучиться с чрутом и виртуалкой в общем то то же.
В росе есть система "заморозки" дистрибутива. Можно заморозить, скомпилировать, откатить (что бы девы сами пропали) и после уже ставить скомпилированное?
Или может как нибудь по другому это провернуть? (песочница или что то еще)
А в идеале, ставить девы в отдельную папку (лучше в хом). Захотел - удалил, захотел - перенес или пережал, красота!
Re: Научите компилировать.
Если аналогичную, то будет так:Vochatrak писал(а):Если не затруднит, не напишите такую же, но для RPM?
1. Скачать spec-файл:
Код: Выделить всё
https://abf.rosalinux.ru/import/bino/blob/rosa2014.1/bino.spec
3. Установить зависимости сборки командой urpmi --buildrequires bino.spec
4. Запустить сборку пакета командой rpmbuild -ba bino.spec
Не факт, что соберётся (я не проверял), но это аналог инструкции для deb.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Не собралось. (кстати в моем Dolphin-emu) выдал:Не факт, что соберётся (я не проверял), но это аналог инструкции для deb.
Если исходники я уже скачал вручную тогда какой командой собирать?
Re: Научите компилировать.
Точно такой же, просто надо положить исходники в каталог, где их ищет rpmbuild: /root/rpmbuild/SOURCES/dolphin-emu-4.0.4.tar.bz2Vochatrak писал(а):Если исходники я уже скачал вручную тогда какой командой собирать?
Однако замечу, что от рута лучше пакеты не собирать, т.к. в некоторых случаях это может привести к поломке системы.
Например, если при работе с фалами забыть указать buildroot, т.е. вместо
Код: Выделить всё
rm -rm %{buildroot}%{_libdir}/*.so
Код: Выделить всё
rm -rm %{_libdir}/*.so
Если допустить такую ошибку от простого пользователя, то ничего плохого не случится из-за нехватки прав.
Кроме того, некоторые программы при сборке просто игнорируют значение DESTDIR и даже без ошибок в спеке могут что-нибудь сломать в системе. Такое редко, но всё же встречается.
Поэтому от рута лучше и не собирать пакеты.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
- VictorR2007
- Сообщения: 7314
- Зарегистрирован: 12 сен 2011, 13:00
Re: Научите компилировать.
Создайте в домашнем каталоге папку rpmbuild.
В ней создайте папки BUILD, SOURCES, SPEC, SRPMS.
Теперь можно положить все файлы, нужные для сборки в SOURCES и после запуска команды rpm -bs *.spec
в той папке, где лежит спек-файл, будет создан файл src в папке SRPMS.
Теперь можно перейти в папку SRPMS и запустить сборку пакета командой rpm -bb *.src.rpm
Сборка будет происходить в папке BUILD и готовые пакеты будут там.
Только такой способ предполагает установку в систему лишние пакеты.
Чтобы этого избежать, можно воспользоваться программой mock-urpm.
После первого запуска она попросит выбрать версию дистрибутива, для которого будет собран пакет.
Сама сборка происходит в /var/lib/mock-urpm
В ней создается виртуальная ОС и происходит сборка.
Если в корне мало места, то можно создать папку mock-urpm в домашнем каталоге и сделать на нее
символическую ссылку в /var/lib.
Запускается сборка командой mock-urpm -v /путь к файлу/src.rpm
Если с первого раза не удалось собрать пакет, то следующие разы стоит запускать командой
mock-urpm -v --no-clean /путь к файлу/src.rpm
чтобы не пересоздавать ранее созданную виртуальную ОС.
Еще одно удобство этого способа, это возможность собирать пакеты разных архитектур или версий Росы.
Для примера: Я например собрал пакеты для Роса R5 x86_64, но мне еще нужны пакеты для i586.
Подключаю источники i586, перехожу в /etc/mock-urpm и в свойствах символической ссылки default.cfg
меняю название ОС на нужное.
Типа Rosa-2014.1-x86_64.cfg меняю на Rosa-2014.1-i586.cfg
Теперь будут собираться пакеты другой архитектуры.
Готовые пакеты будут лежать /var/lib/mock-urpm/Rosa-2014.1-x86_64/result
или
/var/lib/mock-urpm/Rosa-2014.1-i586/result
Можно добавить /var/lib/mock-urpm в точки входа для быстрого доступа.
Только если вы хотите собирать пакеты для ROSA Fresh R5,
то нужно устанавливать этот пакет http://abf-downloads.rosalinux.ru/victo ... noarch.rpm
У пакета в репозитории нет файлов конфигурации для Rosa-2014.1
В ней создайте папки BUILD, SOURCES, SPEC, SRPMS.
Теперь можно положить все файлы, нужные для сборки в SOURCES и после запуска команды rpm -bs *.spec
в той папке, где лежит спек-файл, будет создан файл src в папке SRPMS.
Теперь можно перейти в папку SRPMS и запустить сборку пакета командой rpm -bb *.src.rpm
Сборка будет происходить в папке BUILD и готовые пакеты будут там.
Только такой способ предполагает установку в систему лишние пакеты.
Чтобы этого избежать, можно воспользоваться программой mock-urpm.
После первого запуска она попросит выбрать версию дистрибутива, для которого будет собран пакет.
Сама сборка происходит в /var/lib/mock-urpm
В ней создается виртуальная ОС и происходит сборка.
Если в корне мало места, то можно создать папку mock-urpm в домашнем каталоге и сделать на нее
символическую ссылку в /var/lib.
Запускается сборка командой mock-urpm -v /путь к файлу/src.rpm
Если с первого раза не удалось собрать пакет, то следующие разы стоит запускать командой
mock-urpm -v --no-clean /путь к файлу/src.rpm
чтобы не пересоздавать ранее созданную виртуальную ОС.
Еще одно удобство этого способа, это возможность собирать пакеты разных архитектур или версий Росы.
Для примера: Я например собрал пакеты для Роса R5 x86_64, но мне еще нужны пакеты для i586.
Подключаю источники i586, перехожу в /etc/mock-urpm и в свойствах символической ссылки default.cfg
меняю название ОС на нужное.
Типа Rosa-2014.1-x86_64.cfg меняю на Rosa-2014.1-i586.cfg
Теперь будут собираться пакеты другой архитектуры.
Готовые пакеты будут лежать /var/lib/mock-urpm/Rosa-2014.1-x86_64/result
или
/var/lib/mock-urpm/Rosa-2014.1-i586/result
Можно добавить /var/lib/mock-urpm в точки входа для быстрого доступа.
Только если вы хотите собирать пакеты для ROSA Fresh R5,
то нужно устанавливать этот пакет http://abf-downloads.rosalinux.ru/victo ... noarch.rpm
У пакета в репозитории нет файлов конфигурации для Rosa-2014.1
Re: Научите компилировать.
Попробовал скомпилировать через -"rpmbuild -ba Dolphin-emu.spec" (предварительно вынес папку rpmbuild в home и
создав симлинк). Выдает следующее:
Делал по инструкции, в конце компиляции выдала ошибку:
На АБФ (где качал спек) лежало два каких-то патча. Они мне нужны или нет (куда их класть)?
создав симлинк). Выдает следующее:
Re: Научите компилировать.
Да, эти патчи должны быть ещё нужны. Один из них указывает эмулятору, что служебные файлы надо искать в каталоге установки /usr/share/dolphin-emu/. А другой отключает сборку с LLVM, т.к. пользы от LLVM я пока что не вижу для Dolphin, а проблем со сборкой LLVM добавляет.Vochatrak писал(а):На АБФ (где качал спек) лежало два каких-то патча. Они мне нужны или нет (куда их класть)?
Патчи надо положить туда же, куда и тарбол с исходниками. То есть в $HOME/rpmbuild/SOURCES/. Возможно, на новую версию исходников они не наложатся, тогда надо будет их адаптировать под новые исходники (делаются патчи командой diff).
Ошибка
Код: Выделить всё
/var/tmp/rpm-tmp.71065: line 35: cd: dolphin-emu-4.0.2: No such file or directory
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
И снова здравствуйте.
Пытался собрать этот злосчастный Dolphin-emu, но все безрезультатно...
Но как понять какой именно файл нужно патчить?
Нажимаю энтер и:
Пробовал собрать через "родной" spec
и при попытке подтянуть зависимости...
При стандартной компиляции, в самом конце выскакивает:
Хотя LLVM у меня кажись стоит.
Насчет варианта:
Только дальше так (с "заводскими" src, так же.)
Что я делаю не так?
Пытался собрать этот злосчастный Dolphin-emu, но все безрезультатно...
Переименовал папку в dolphin-emu-4.0.2 и пережал в tar.bz2. (качал через git clone) Теперь спрашивает:Скажем, просто имя, имя-версия-снапшот или ещё что-то. В таком случае надо вместо %setup -q прописать %setup -qn формат. Например, %setup -qn %{name} (тут надо просто смотреть, что внутри тарбола).
Нажимаю энтер и:
Код: Выделить всё
rpmbuild -ba dolphin-emu.spec
error: Файл /home/dna/dolphin/Installer/dolphin-emu.spec не похож на файл спецификации.
Код: Выделить всё
bash-4.3$ urpmi --buildrequires dolphin-emu.spec
error: line 26: Only "noarch" sub-packages are supported: BuildArch: x86_64 armv7l aarch64
error: Пакет не имеет %description: dolphin-emu-4.0.2-0.x86_64
не удаётся разобрать spec-файл dolphin-emu.spec []
ошибка регистрации локальных пакетов
Насчет варианта:
Вроде src создает:Создайте в домашнем каталоге папку rpmbuild.
В ней создайте папки BUILD, SOURCES, SPEC, SRPMS.
Теперь можно положить все файлы, нужные для сборки в SOURCES и после запуска команды rpm -bs *.spec
в той папке, где лежит спек-файл, будет создан файл src в папке SRPMS.
Теперь можно перейти в папку SRPMS и запустить сборку пакета командой rpm -bb *.src.rpm
Сборка будет происходить в папке BUILD и готовые пакеты будут там.
Код: Выделить всё
bash-4.3$ rpm -bb *.src.rpm
error: Файл /home/dna/rpmbuild/SRPMS/dolphin-emu-4.0.2-4.src.rpm не похож на файл спецификации.
Re: Научите компилировать.
Тут уже надо изучать код, может файл CommonFuncs.h переименовали или функции из него больше не используются, поэтому файл выкинули.Vochatrak писал(а):The text leading up to this was:
--------------------------
|diff -urN dolphin-emu-4.0.2/Source/Core/Common/Src/CommonFuncs.h dolphin-emu-4.0.2-patched/Source/Core/Common/Src/CommonFuncs.h
|--- dolphin-emu-4.0.2/Source/Core/Common/Src/CommonFuncs.h 1985-08-13 23:00:00.000000000 +1100
|+++ dolphin-emu-4.0.2-patched/Source/Core/Common/Src/CommonFuncs.h 2014-08-22 17:06:24.730625525 +1100
--------------------------
File to patch: [/code][/spoiler]
Но как понять какой именно файл нужно патчить?
В данном случае надо делать rpmbuild --rebuild, т.к. src.rpm - это пакет, а не спек-файл.Vochatrak писал(а):Что я делаю не так?Код: Выделить всё
bash-4.3$ rpm -bb *.src.rpm error: Файл /home/dna/rpmbuild/SRPMS/dolphin-emu-4.0.2-4.src.rpm не похож на файл спецификации.
Вообще, IMHO, лучше пока что на чём-нибудь простом тренироваться. Поизучать Си, пособирать какие-нибудь простенькие пакеты. С Dolphin всегда были проблемы, сколько я его помню. Каждый раз приходилось копаться в коде и сборочных файлах, чтобы правильно собрать очередное обновление.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Попробовал собрать PPSSPP, выдает:
Если качать через git clone, скачивается папка с названием.(ppsspp) Я добавляю к названию - версию (ppsspp-0.9.9.2) и жму в tar.bz2. Может я как то не правильно жму, или называю?
Re: Научите компилировать.
Тут просто патч ppsspp-0.9.9-ffmpeg.patch надо адаптировать к текущему снапшоту из гита:Vochatrak писал(а):Если качать через git clone, скачивается папка с названием.(ppsspp) Я добавляю к названию - версию (ppsspp-0.9.9.2) и жму в tar.bz2. Может я как то не правильно жму, или называю?
Код: Выделить всё
Patch #2 (ppsspp-0.9.9-ffmpeg.patch):
+ /bin/cat /home/dna/rpmbuild/SOURCES/ppsspp-0.9.9-ffmpeg.patch
+ /usr/bin/patch --fuzz=0 -s -U -p1
1 out of 1 hunk FAILED -- saving rejects to file CMakeLists.txt.rej
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
При попытке собрать пакет через # checkinstall --type=rpm вот такой сбой:
Что не так?
P.S. При попытке собрать через mock-urpm сборка завершается ошибкой.
Код: Выделить всё
xboxdrv.x86_64: E: useless-provides (Badness: 1) xboxdrv
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr/local/share/man/man1
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr/local/share/man
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr/local/share
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr/local
xboxdrv.x86_64: E: standard-dir-owned-by-package (Badness: 50) /usr/local/bin
xboxdrv.x86_64: W: spurious-executable-perm /usr/local/share/man/man1/xboxdrv.1.lzma
xboxdrv.x86_64: E: non-standard-group (Badness: 50) checkinstall
P.S. При попытке собрать через mock-urpm сборка завершается ошибкой.
Re: Научите компилировать.
Похоже, это баг в checkinstall, некорректное его поведение. Попробую починить, как руки дойдут.Vochatrak писал(а):При попытке собрать пакет через # checkinstall --type=rpm вот такой сбой:
Что не так?
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Хотел спросить - а ABF использовать для сборки пакетов стоит?
Если не лень, можете коротенько по пунктам объяснить - как добавить исходники, начать компиляцию, и.т.д.
Если не лень, можете коротенько по пунктам объяснить - как добавить исходники, начать компиляцию, и.т.д.
Re: Научите компилировать.
ABF имеет смысл использовать для сборки тогда, когда локально уже очень хорошо получается собирать пакеты.Vochatrak писал(а):Хотел спросить - а ABF использовать для сборки пакетов стоит? Если не лень, можете коротенько по пунктам объяснить - как добавить исходники, начать компиляцию, и.т.д.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
А собирать вручную (cmake, make, и.т.д.) внутри mock-urpm можно?
Re: Научите компилировать.
Наверное, можно, если сделать chroot в то окружение, которое сделал mock-urpm. Только я сходу не скажу, как сделать, чтобы mock-urpm не очищал сборочное своё окружение. Сам с ним не работаюVochatrak писал(а):А собирать вручную (cmake, make, и.т.д.) внутри mock-urpm можно?
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
- VictorR2007
- Сообщения: 7314
- Зарегистрирован: 12 сен 2011, 13:00
Re: Научите компилировать.
В mock-urpm все то-же, что происходит при сборке с использованием команды rpmbuild или rpm -bb,Vochatrak писал(а):А собирать вручную (cmake, make, и.т.д.) внутри mock-urpm можно?
только сборка происходит не на локальной системе, а в созданном chroot окружении, в каталоге /var/lib/mock-urpm/
Там находится папка с результатом /var/lib/mock-urpm/Rosa-2014.1-x86_64/result/
куда выводятся готовые пакеты и логи сборки
и корневая система /var/lib/mock-urpm/Rosa-2014.1-x86_64/root/,
куда устанавливаются все зависимости.
А сама сборка происходит в /var/lib/mock-urpm/Rosa-2014.1-x86_64/root/builddir/build/BUILD/
а упаковка в /var/lib/mock-urpm/Rosa-2014.1-x86_64/root/builddir/build/BUILDROOT/
Если я правильно ориентируюсь, то mock-urpm полностью дублирует способ сборки на abf.
Для подробностей смотрите mock-urpm --help
Re: Научите компилировать.
Продолжаем тему.
Система 64-бит у меня. Тренируюсь на сборке wine.
просит 32 битные библиотеки. Поискал, поставил , по-ходу не то. ПРосит еще.
Система 64-бит у меня. Тренируюсь на сборке wine.
Код: Выделить всё
configure: error: FreeType 32-bit development files not found. Fonts will not be built.
Use the --without-freetype option if you really want this
Когда-нибудь я слезу с винды
- VictorR2007
- Сообщения: 7314
- Зарегистрирован: 12 сен 2011, 13:00
Re: Научите компилировать.
Для wine нужны эти приложения или их devel.
Код: Выделить всё
bison
chrpath
desktop-file-utils
docbook-dtd-sgml
docbook-utils
flex
fontforge
imagemagick
prelink
sgml-tools
valgrind
cups-devel
gettext-devel
glibc-static-devel
gpm-devel
gsm-devel
isdn4k-utils-devel
openldap-devel
perl-devel
ungif-devel
unixODBC-devel
alsa
dbus-1
fontconfig
freetype2
glu
gnutls
gstreamer-0.10
gstreamer-plugins-base-0.10
jack
lcms
libgphoto2
libmpg123
libpulse
librsvg-2.0
libtiff-4
libv4l2
libxslt
ncursesw
openal
sane-backends
sm
x11
xcomposite
xcursor
xext
xinerama
xpm
xrandr
xrender
Re: Научите компилировать.
Понял спасибо. Буду иметь ввиду.
Кое что из этого установил уже. Т.к. я тренируюсь/учусь, то читаю ошибки,которые консоль выдает, и устанавливаю что он просит. С freetype затык вышел.
Кое что из этого установил уже. Т.к. я тренируюсь/учусь, то читаю ошибки,которые консоль выдает, и устанавливаю что он просит. С freetype затык вышел.
Когда-нибудь я слезу с винды
Re: Научите компилировать.
Господа, я тут пробовал собрать pcsx2 и не собралось.
Вот такое выдало в консоль:
Не подскажете что не так?
Вот такое выдало в консоль:
Не подскажете что не так?
Re: Научите компилировать.
Я так полагаю, что в ближайшее время в гите должны исправить это. Вряд ли стоит самому лезть в код и править эту ошибку с преобразованием типов.Vochatrak писал(а):Господа, я тут пробовал собрать pcsx2 и не собралось.
Вот такое выдало в консоль:Код: Выделить всё
/home/dna/Build/pcsx2/plugins/GSdx/GLLoader.cpp:309:34: ошибка: некорректное преобразование из «void (*)(GLuint, GLintptr, GLsizei, const void*) {aka void (*)(unsigned int, long int, int, const void*)}» в «PFNGLNAMEDBUFFERSUBDATAPROC {aka void (*)(unsigned int, long int, long int, const void*)}» [-fpermissive] gl_NamedBufferSubData = NamedBufferSubData;
Не подскажете что не так?
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Ясно, спасибо.
Re: Научите компилировать.
Здравствуйте! Как и Vochatrak пытаюсь собрать Wine с поддержкой usb. Рецепт взят отсюда : http://wiki.winehq.org/USB
При выполнении make выводятся ошибки :
Растолкуйте, пожалуйста, что это за ошибки и что с ними делать? Очень нужен Wine с работающими usb портами.
При выполнении make выводятся ошибки :
Re: Научите компилировать.
К сожалению, эти патчи с 2012 года не обновлялись и предназначены для старых версий Wine. Судя по ошибкам сборки, там требуется серьёзная работа по адаптации к новым версиям. Это работа для профессионального программиста, в двух словах тут не объяснить и не помочь, к сожалению.Alex писал(а):Здравствуйте! Как и Vochatrak пытаюсь собрать Wine с поддержкой usb. Рецепт взят отсюда : http://wiki.winehq.org/USB
При выполнении make выводятся ошибки : ...
Растолкуйте, пожалуйста, что это за ошибки и что с ними делать? Очень нужен Wine с работающими usb портами.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Здравствуйте! Всё ещё пытаюсь собрать Wine с поддержкой usb. В одной из библиотек в файле Makefile.in есть строка @MAKE_DLL_RULES@. Операция make останавливается с ошибкой на этой библиотеке. Закоментировал строку
@MAKE_DLL_RULES@ - make прошёл до конца без ошибок. Объясните, пожалуйста, что такое @MAKE_DLL_RULES@. Гугление по этому вопросу результатов не дало.
@MAKE_DLL_RULES@ - make прошёл до конца без ошибок. Объясните, пожалуйста, что такое @MAKE_DLL_RULES@. Гугление по этому вопросу результатов не дало.
Re: Научите компилировать.
Если, MAKE — сделать (собрать), DLL — на Винде обычно файлы дров, RULES — правила.
То, «Собрать драйвер по правилам» или «Создать правила для драйвера».
То, «Собрать драйвер по правилам» или «Создать правила для драйвера».
Re: Научите компилировать.
Это как-то разные вещи. Все-таки объясните, пожалуйста, что происходит при наличии и отсутствии строки @MAKE_DLL_RULES@ в файле Makefile.in.Алзим писал(а):«Собрать драйвер по правилам» или «Создать правила для драйвера».
Как можно узнать поддерживает или нет собранный пакет некоторую библиотеку?
Re: Научите компилировать.
А можно подробней про rpmbuild -ba спек , в спек файле стоит нужная версия (2.8.1) https://abf.rosalinux.ru/sponikor/cinna ... 504142e782Pulfer писал(а):А иногда для сборки новой версии RPM-пакета достаточно лишь заменить в спек-файле версию программы и запустить rpmbuild -ba спек. Например: https://abf.rosalinux.ru/import/wesnoth ... a899513e88
- VictorR2007
- Сообщения: 7314
- Зарегистрирован: 12 сен 2011, 13:00
Re: Научите компилировать.
Кстати, можно посмотреть командой rpmbuild --help или rpm --help.sponikor писал(а):А можно подробней про rpmbuild -ba спек , в спек файле стоит нужная версия (2.8.1) https://abf.rosalinux.ru/sponikor/cinna ... 504142e782
Re: Научите компилировать.
Хочу (уже в который раз ) освоить опакечевание программ.
Есть ряд откровенно ламерских вопросов:
Хочу я собрать citra - https://github.com/tfarley/citra/tree/hw-tex-forwarding - именно эту ветку.
Написал (ну, как понял из инструкций) spec файл
Кстати правильно?
Но так и не понял что собственно писать в Version: и Release: если они неизвестны (или не важно)?
В Source0: что указать? Локально то ясно, а если через ABF? В зависимости нужно указывать GCC, Cmake, и.т.д?
Если программа собирается с Qt4 и Qt5 (можно выбрать) как это сделать в spec -е?
И еще один момент - если нужно добавить аргумент (в данном случае -DCMAKE_BUILD_TYPE=Release) его как указать?
P.S. И на будущее, как удалить проект с ABF?
Есть ряд откровенно ламерских вопросов:
Хочу я собрать citra - https://github.com/tfarley/citra/tree/hw-tex-forwarding - именно эту ветку.
Написал (ну, как понял из инструкций) spec файл
Код: Выделить всё
%define _unpackaged_files_terminate_build 0
Summary:Citra 3DS Emulator
Name:citra
Version:?
Release:?
License:GPL
URL:http://citra-emu.org
Group:User Emulators
Source0:%{name}-%{version}.tar.gz
BuildRequires:libqt4-dev libqt4-opengl-dev
%description
Emulator Nintendo 3DS whitch hw-text.
%prep
%setup -q -n %{name}
%build
%cmake
%make
popd
%install
pushd %{name} %{version}
%makeinstall_std
popd
%files
citra-qt
%{_bindir}/Citra
Но так и не понял что собственно писать в Version: и Release: если они неизвестны (или не важно)?
В Source0: что указать? Локально то ясно, а если через ABF? В зависимости нужно указывать GCC, Cmake, и.т.д?
Если программа собирается с Qt4 и Qt5 (можно выбрать) как это сделать в spec -е?
И еще один момент - если нужно добавить аргумент (в данном случае -DCMAKE_BUILD_TYPE=Release) его как указать?
P.S. И на будущее, как удалить проект с ABF?
Re: Научите компилировать.
Это просто.Vochatrak писал(а): P.S. И на будущее, как удалить проект с ABF?
Это в в настройках проекта есть: Может я и ошибаюсь, но версия проекта наверное всё же 1.0
https://github.com/citra-emu/citra/blob ... ra.desktop
Re: Научите компилировать.
Спасибо.Это просто.
Да, с эмуляторами - фиг разберешь...Может я и ошибаюсь, но версия проекта наверное всё же 1.0
А "от балды" цифры ставить можно? (это на сборку вообще влияет?)
Re: Научите компилировать.
Так делать не надо. Т.к. это верный способ при обновлении пакета потерять какие-то нужные новые файлы. Если есть полная уверенность, что какой-то файл не надо помещать в пакет, то лучше явным образом удалить его в секции %install спека.Vochatrak писал(а):%define _unpackaged_files_terminate_build 0
Просто:Vochatrak писал(а):BuildRequires:libqt4-dev libqt4-opengl-dev
BuildRequires: qt4-devel
Или
BuildRequires: pkgconfig(QtCore)
BuildRequires: pkgconfig(QtOpenGL)
+ какие ещё нужны Qt-модули, если указывать их индивидуально. Но для Qt4 все они лежат в qt4-devel, так что особого смысла перечислять индивидуально нет.
Правильно так:Vochatrak писал(а):%build
%cmake
%make
popd
%install
pushd %{name} %{version}
%makeinstall_std
popd
Код: Выделить всё
%build
%cmake
%make
%install
%makeinstall_std -С build
С citra-qt тут явно что-то не то. По идее, он должен быть в %{_bindir}.Vochatrak писал(а):%files
citra-qt
%{_bindir}/Citra
Release - это версия пакета, а не программы, так что для стабильных версий программ надо начинать с 1, а потом просто увеличивать на 1. Release считается меньше Version, поэтому 0.1-1 меньше, чем 0.1-2, а 0.1-2 в свою очередь меньше, чем 0.2-1. При обновлении версии программы Release лучше возвращать на 1.Vochatrak писал(а):Кстати правильно?
Но так и не понял что собственно писать в Version: и Release: если они неизвестны (или не важно)?
Для снапшотов из гита принято в Release указывать дату снапшота по схеме: 0.дата.1, где а потом в случае необходимости (пересборка и т.п.) увеличивать последнюю цифру. Потом для нового снапшота менять дату и снова последнюю цифру ставить в 1. А когда выйдет стабильная версия программы, сделать Release 1. Чтобы 0.1-0.20160304.1 можно было обновить на 0.1-1. Это для версий предрелизов. Для пострелизов первую цифру Release принято делать не нулём.
Версию программы (Version) надо искать в исходниках, если больше нигде не указана. Если вообще не получается найти, то лучше сделать 0, чтобы потом можно было обновить хоть на 0.0.1.
На ABF как и локально, надо надо залить тарбол на http://file-store.rosalinux.ru/ и прописать его в .abf.yml сборочного проекта. Тогда перед сборкой ABF скачает файл по хэшу (правая часть), назовёт его указанным именем (левая часть) и поместит в каталог SOURCES для сборки.Vochatrak писал(а):В Source0: что указать? Локально то ясно, а если через ABF?
Пример: https://abf.rosalinux.ru/import/qtcurve ... 1/.abf.yml
gcc ставится автоматически, а cmake надо прописать.Vochatrak писал(а):В зависимости нужно указывать GCC, Cmake, и.т.д?
[/quote]Vochatrak писал(а):Если программа собирается с Qt4 и Qt5 (можно выбрать) как это сделать в spec -е?
И еще один момент - если нужно добавить аргумент (в данном случае -DCMAKE_BUILD_TYPE=Release) его как указать?
Так и указать: "%cmake -DCMAKE_BUILD_TYPE=Release"
Для выбора между Qt4 и Qt5 тоже указать через -Dxxx, только посмотреть в CMakeLists.txt, как именно там назвали соответствующую опцию. В данном случае это "-DCITRA_FORCE_QT4:BOOL=ON", если требуется именно сборка с Qt4. Иначе автоматически выберется Qt5, а если не обнаружится в сборочном окружении, то Qt4.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Это версия спецификации desktop-файла, а не программы.Алзим писал(а):Может я и ошибаюсь, но версия проекта наверное всё же 1.0
https://github.com/citra-emu/citra/blob ... ra.desktop
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Pulfer
Спасибо.
А упаковать (на подобии архива) в RPM, уже скомпилированную программу можно?
И такой момент.
Как задать Цитре, что папка с образами sd карт и прочего, должна находиться в хомяке? Можно указать где конкретно?
Добавил:
А можете в вики и/или сюда сделать шаблон spec файла?
Что-то вроде
И.т.д. усредненный спек. Просто чтобы было на что ориентироваться новичкам. Значение - что нужно вписать.
Добавил2
Как указать что собирать GLFW версию не нужно? (я просто cmake-GUI использую, там просто чекбокс)?
Спасибо.
А упаковать (на подобии архива) в RPM, уже скомпилированную программу можно?
И такой момент.
Как задать Цитре, что папка с образами sd карт и прочего, должна находиться в хомяке? Можно указать где конкретно?
Добавил:
А можете в вики и/или сюда сделать шаблон spec файла?
Что-то вроде
Код: Выделить всё
Summary:полное название
Name:название
...
BuildRequires:зависимости
...
%build
%cmake
%make
%install
%makeinstall_std -С build
popd
Добавил2
Как указать что собирать GLFW версию не нужно? (я просто cmake-GUI использую, там просто чекбокс)?
Re: Научите компилировать.
Да, иногда такое делается, когда в апстриме выкладывают только готовые бинарники. Но если есть исходники, то так делать не стоит (за исключением разве что Java-программ в особых случаях).Vochatrak писал(а):А упаковать (на подобии архива) в RPM, уже скомпилированную программу можно?
Вот пример спека, где пакуется заранее скомпилированная программа из апстрима:
https://abf.rosalinux.ru/import/davmail ... vmail.spec
Сейчас нет возможности разбираться, но попробую не забыть сделать это позже.Vochatrak писал(а):И такой момент.
Как задать Цитре, что папка с образами sd карт и прочего, должна находиться в хомяке? Можно указать где конкретно?
А вот, есть уже: http://wiki.rosalab.ru/en/index.php/Template_Spec_FilesVochatrak писал(а):Добавил:
А можете в вики и/или сюда сделать шаблон spec файла?
Пошёл глянуть проект на гитхабе и вижу, что в апстриме сборку GLFW несколько пару дней назад вообще убралиVochatrak писал(а):Как указать что собирать GLFW версию не нужно? (я просто cmake-GUI использую, там просто чекбокс)?
Но если снапшот старее или не из ветки master, то для этого используется cmake-опция -DENABLE_GLFW:BOOL=OFF
В CMakeLists.txt опция прописана так:
Код: Выделить всё
option(ENABLE_GLFW "Enable the GLFW frontend" ON)
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586
Re: Научите компилировать.
Простите, а как собственно добавить все это дело?На ABF как и локально, надо надо залить тарбол на http://file-store.rosalinux.ru/ и прописать его в .abf.yml сборочного проекта. Тогда перед сборкой ABF скачает файл по хэшу (правая часть), назовёт его указанным именем (левая часть) и поместит в каталог SOURCES для сборки.
"Прописать хеш тарбола в abf.yml", а сам abf.yml как вообще добавить?
И спек тогда должен выглядеть так?
Код: Выделить всё
Summary:Citra 3DS Emulator
Name:citra
Version:0
Release:0.1-0.20160307.1
License:GPL
URL:http://citra-emu.org
Group:User Emulators
Source0:citra-hw-tex-forwarding.zip
BuildRequires:qt4-devel
BuildRequires:cmake
%description
Emulator Nintendo 3DS whitch hw-text.
%prep
%setup -q -n %{name}
%build
%cmake -DCMAKE_BUILD_TYPE=Release -DCITRA_FORCE_QT4:BOOL=ON -DENABLE_GLFW:BOOL=OFF
%make
%install
%makeinstall_std -С build
popd
%files
citra-qt
%{_bindir}/Citra
Re: Научите компилировать.
На http://file-store.rosalinux.ru/ файлы добавляются естественным путём. Сначала «Add files», потом «Start upload». Пароль и логин вводится тот же, что и на abf.
Как я понял, файлы типа abf.yml, патчи и т.п. добавляются с помощью утилиты git.
В спеке источник, обычно, это адрес ссылки по которой вы качали источники для добавления в http://file-store.rosalinux.ru/
Про %files можно почитать тут: http://forum.rosalab.ru/viewtopic.php?f ... 800#p65322
P.S. Это только мои предположения. На самом деле, всё может быть по другому.
Как я понял, файлы типа abf.yml, патчи и т.п. добавляются с помощью утилиты git.
В спеке источник, обычно, это адрес ссылки по которой вы качали источники для добавления в http://file-store.rosalinux.ru/
Про %files можно почитать тут: http://forum.rosalab.ru/viewtopic.php?f ... 800#p65322
P.S. Это только мои предположения. На самом деле, всё может быть по другому.
Re: Научите компилировать.
Там есть пояснялка, только там все команды вида git clone бла-бла git а это скорее скачать нежели залить.Как я понял, файлы типа abf.yml, патчи и т.п. добавляются с помощью утилиты git.
Короче, мне бы расписать, я сам не въеду.
Re: Научите компилировать.
см. abf-console-client
Re: Научите компилировать.
http://wiki.rosalab.ru/ru/index.php/%D0 ... %D0%B5_ABF, смотрите в самом конце ссылки
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM
Re: Научите компилировать.
Просто "Emulators". Список допустимых групп содержится в файле /usr/share/rpmlint/config.d/rosa.conf из пакета rpmlint-rosa-policy.Vochatrak писал(а):Group:User Emulators
popd тут не нужен, лучше убрать.Vochatrak писал(а):%install
%makeinstall_std -С build
popd
citra-qt надо либо перенести в %{_bindir}/, либо сделать с ним что-то ещё, т.к. каждый файл/каталог должен начинаться с пути относительно buildroot. Иначе будет ошибка сборки.Vochatrak писал(а):%files
citra-qt
%{_bindir}/Citra
Да, пакет не соберётся. Скажет, что такие-то файлы установлены, но не упакованы.Vochatrak писал(а):Если файлы не вписаны в %files они просто не пакуются в RPM, или пока не укажу - явно исключить, пакет не соберется?
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586