IPB

Здравствуйте, гость ( Вход | Регистрация )

> Сборка пакета с исходниками на fpc\lazarus (Transmission Remote GUI)
Поделиться
ksa
сообщение 5.1.2014, 11:37
Сообщение #1


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1479
Регистрация: 7.6.2011
Вставить ник
Цитата
Пользователь №: 2118
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 5


По мотивам http://forum.altlinux.org/index.php/topic,....html#msg221130. Набросал спек, собираю, а эта гадина пытается класть бинарники в /usr/local/bin, т.е. prefix не тот. Можно, конечно, установить в ручном режиме, но я не уверен, что prefix не прибит будет гвоздями и после установки бинарник может не найти сопутствующие компоненты (иконку там, файл перевода).
Кто подскажет, как всему этому хозяйству (в виде fpc) передать нужный префикс (нужные параметры), чтобы ставилось нормально, а не куда вздумается ?
Ну и кусок лога сборки (ближе к концу):
Код
Компоновка ./transgui
/usr/bin/ld: warning: ./link.res contains output sections; did you forget -T?
36099 строк скомпилиpовано, 4.10 сек.
5 предупреждений
make: Leaving directory `/home/sb/RPM/BUILD/TransGUI'
+ exit 0
Выполняется(%install): /bin/sh -e /home/sb/tmp/rpm-tmp.42475
+ umask 022
+ /bin/mkdir -p /home/sb/RPM/BUILD
+ cd /home/sb/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /home/sb/tmp/transmission-remote-gui-buildroot
+ :
+ /bin/rm -rf -- /home/sb/tmp/transmission-remote-gui-buildroot
+ cd TransGUI
+ mkdir -p /home/sb/tmp/transmission-remote-gui-buildroot/transmission-remote-gui
+ make 'INSTALL=/bin/install -p' DESTDIR=/home/sb/tmp/transmission-remote-gui-buildroot/transmission-remote-gui install
Using Lazarus dir: /usr/lib/lazarus/
make: Entering directory `/home/sb/RPM/BUILD/TransGUI'
/usr/bin/ginstall -m 755 -d /usr/local/bin
/usr/bin/ginstall -c -m 755 transgui /usr/local/bin
/usr/bin/ginstall: cannot create regular file '/usr/local/bin/transgui': Permission denied
make: *** [fpc_install] Error 1
make: Leaving directory `/home/sb/RPM/BUILD/TransGUI'
ошибка: Неверный код возврата из /home/sb/tmp/rpm-tmp.42475 (%install)


Сообщение отредактировал ksa - 5.1.2014, 11:42


--------------------
Пакеты на яндекс.диске
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Drool
сообщение 5.1.2014, 14:24
Сообщение #2


Профессионал
*******

Группа: Пользователь
Сообщений: 1764
Регистрация: 28.7.2010
Вставить ник
Цитата
Из: Берислав, Херсонщина
Пользователь №: 1879
Страна: Украина
Город: Не указан
Пол: Муж.



Репутация: 9


Ну вы, блин, даете... А это что? Но для него нужен демон transmission. Если нужно быстро, просто и наглядно - я бы посмотрел на flush.

Сообщение отредактировал Drool - 5.1.2014, 14:25


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NotHAM
сообщение 5.1.2014, 18:47
Сообщение #3


Специалист
****

Группа: Пользователь
Сообщений: 228
Регистрация: 11.7.2010
Вставить ник
Цитата
Пользователь №: 1867
Страна: Россия
Город: Москва
Пол: Муж.



Репутация: 2


Цитата(Drool @ 5.1.2014, 14:24) *
Ну вы, блин, даете...

Ну вы, блин, даете... biggrin.gif
На "заборе" было написано так:
Код
%build
cd TransGUI
%make_build CC="gcc %optflags" CPP="g++ %optflags"
execstack -c %name
Это с какого перепугу и кто сюда gcc прилепил, да ещё и СРР с optflags.
Софтина-то на паскале сделана. Ей сиськи вроде как без надобности (даже пусть они с 4-мя плюсами будут).
Я переписал пока так:
Код
%build
cd TransGUI
make
##execstack -c %name

Собирается как и положено.
Покопаюсь еще немного. Может "штатные" Makefile повыкидываю и свой напишу.
А может и не буду (это ведь никому не нужно, т. к. всё что надо есть на "заборе").
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NotHAM
сообщение 7.1.2014, 11:14
Сообщение #4


Специалист
****

Группа: Пользователь
Сообщений: 228
Регистрация: 11.7.2010
Вставить ник
Цитата
Пользователь №: 1867
Страна: Россия
Город: Москва
Пол: Муж.



Репутация: 2


Цитата(NotHAM @ 5.1.2014, 18:47) *
...
Покопаюсь еще немного. Может "штатные" Makefile повыкидываю и свой напишу.
...

Написал.
Размер Makefile уменьшился более чем в 10 раз. biggrin.gif
Теперь там можно делать:
1. make [transgui] ...параметр необязательный - (дефолтный).
2. make clean
3. make install [путь] ... тут по дефолту в /usr/...
4. make uninstall (чистое и полное удаление из системы)
(3 и 4 из под рута, естественно).
Должно сработать и в Дебиане (проверял аналогичное на др. программах).
Фрагмент спека:
Код
...
%build
make

%install
cp %SOURCE1 transgui.desktop
cp %SOURCE2 transgui.1
make install DESTDIR=%buildroot%_prefix
...

НУ и т. д.

ЗЫ. To Drool. Если будешь софтину поддерживать - пришлю сорцы на мыло. Может пригодится.
Мало-ли еще что-то на паскакале попадется, где сборка пакетов не предусмотрена... wink.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ksa
сообщение 7.1.2014, 15:05
Сообщение #5


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1479
Регистрация: 7.6.2011
Вставить ник
Цитата
Пользователь №: 2118
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 5


Цитата(NotHAM @ 7.1.2014, 12:14) *
Написал.
Размер Makefile уменьшился более чем в 10 раз. biggrin.gif

Хм, а может автору закинуть, чтобы применил в апстриме ?


--------------------
Пакеты на яндекс.диске
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NotHAM
сообщение 7.1.2014, 16:37
Сообщение #6


Специалист
****

Группа: Пользователь
Сообщений: 228
Регистрация: 11.7.2010
Вставить ник
Цитата
Пользователь №: 1867
Страна: Россия
Город: Москва
Пол: Муж.



Репутация: 2


Цитата(ksa @ 7.1.2014, 15:05) *
Хм, а может автору закинуть, чтобы применил в апстриме ?

Пожалуй не стоит. Т. к. софтина кроссплатформенная, а мой Makefile будет работать
только под Linux (проверял на ALT-e и Debian-e, других у меня нет).
Тут надо делать как в DC сделано. Там автор написал сборочные скрипты под всё,
причем весьма грамотные, уже несколько лет не корректирует по большому счету.
Т. е. с пониманием относится к пользователям. В отличие от ... wink.gif
Да и спек там весьма простой.
Хотя поначалу были и там проблемы. Насколько я помню Шенцев с ними намучался,
когда первый раз собирал DC (где-то в рассылке читал длинный тред).

ЗЫ. Сделаю как Гена посоветовал. Положу сорцы transgui на киевский сервер
(это хороший пример того - как неплохую софтину можно плохо приготовить).
А в этой теме напишу небольшой хелп, как это понимать и на что обращать
внимание при сборке паскальных программ. Там есть некоторые тонкости.
Только поэкспериментирую еще немного. smile.gif

Сообщение отредактировал NotHAM - 7.1.2014, 18:21
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NotHAM
сообщение 8.1.2014, 21:32
Сообщение #7


Специалист
****

Группа: Пользователь
Сообщений: 228
Регистрация: 11.7.2010
Вставить ник
Цитата
Пользователь №: 1867
Страна: Россия
Город: Москва
Пол: Муж.



Репутация: 2


Цитата(NotHAM @ 7.1.2014, 16:37) *
...
Только поэкспериментирую еще немного...

Поэкспериментировал.

ftp://ftp.linux.kiev.ua/pub/Linux/ALT/peo...kages/transgui/

Там лежат 2 пакета с исходниками - *.1.src.rpm и *.2.src.rpm.
1-й с замененными Makefile и transgui.lpi, 2-й с дополнительным скриптом install.sh.

Просматриваются 3 варианта сборки пакета transgui.

1. Подмена Makefile и transgui.lpi.
Используется lazbuild (фактически после подготовки тут будет вызван fpc с параметрами,
которые ему передаст лазарь в файле transgui.lpi).
Ключевые параметры оптимизации кода:
-CX Умная компоновка при генерации кода (полезно почти всегда).
-O3 (O1,O2) 1-быстро и дружественно к отладчику, 2-плюс быстрые оптимизации, 3-плюс
медленные оптимизации. В transgui.lpi передан ключ О3.
-Xs Вырезать символы из исполняемого файла.
-XX Умная компоновка при сборке, полезна всегда.
-g Генерация отладочной информации для GDB (в разы увеличивает размер бинарника),
поэтому отключен.
Поскольку сам lazbuild эти параметры не понимает, их нужно передать через *.lpi, потому его
и подменял (новый сгенерирован в Lazarus-е).
Примечание: в Makefile вызов strip можно отключить (убрать, закомментировать),
так как всё что нужно - передано сборочными ключами.

ДОСТОИНСТВА варианта:
- Очень удобно для отладки. Можно отлаживать даже в хомяке, если в системе установлены
fpc и Lazarus.
- Работают команды make clean и др. (см. в одном из предыдущих постов). А также
make help (про неё там забыл упомянуть).
- Можно сразу установить в систему и попробовать без сборки пакета,
а если что не так - сразу удалить без всяких там apt-ов/синаптиков.
- Makefile можно как угодно редактировать, там всё просто и понятно (должно быть! smile.gif )

НЕДОСТАТКИ.
- Работает только под Линуксом (правда не только под АЛЬТом).
- Размер бинарника чуть великоват (4.32 МБ), хотя это и не принципиально (см. ниже).
- Серьезное вмешательство в исходники.
- Не знаю насколько это годится для сложных проектов.

2. Написание инсталляционного скрипта.
Что и было сделано на базе того-же Makefile. Тут все работает как задумано автором
(никаких подмен нет). А именно:
Используется не lazbuild (fpc), а ppc386 с параметрами -O2 -g- -CX -XX -Xs, которые
передаются через "штатный" Makefile, сгенерированный из Makefile.fpc c помощью FPCmake.

ДОСТОИНСТВА.
- Бинарник чуть поменьше (4.24 МБ), возможно потому, что в процессе компиляции многократно
вызывается lazres над файлами *.lrs. См. "нечитабельный" Makefile и лог сборки.
(Чтобы посмотреть лог - нужно собрать в хашере, или ещё где либо).
- Никакого вмешательства в исходники нет. Скрипт подкладывается "с боку".
- Должен работать не только в АЛЬте, а и в др. Линуксах, где такие-же
установочные каталоги (например в Федоре и Дебиане - не проверял).
- Скрипт просто редактировать под себя (если руки не кривые).
- Годится для сложных проектов.

НЕДОСТАТКИ.
- Работает только под Линуксом (правда должен не только под АЛЬТом).
- Крайне неудобен в отладке (почти всё пересборкой проверяется). Это проблема не
скрипта а Makefile, в котором не предусмотрен даже make install (про остальное молчу).
- Редактировать Makefile низя, только через правку Makefile.fpc с последующей
перегенерацией, что весьма хлопотно.

3. Всё делать в спеке, как это сделал Гена.
Практически совпадает с вариантом 2, но без скрипта.

ДОСТОИНСТВА. Те же что и в 2 (кроме тех, что касаются скрипта).
НЕДОСТАТКИ. Те же. Плюс ...
- Работает только под АЛЬТом. Другим линуксоидам сначала
нужно разучивать что означают АЛЬТовские макросы из спека.

ЗЫ. Надеюсь что Гена будет не в претензии за то, что в спеках в качестве майнтейнера
я оставил его, да и в changelog-ах ничего не отразил.
И еще - исходники перепаковал в tar-архивы, как это в АЛЬТе принято.

Сообщение отредактировал NotHAM - 8.1.2014, 21:38
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- ksa   Сборка пакета с исходниками на fpc\lazarus (Transmission Remote GUI)   5.1.2014, 11:37
- - ksa   Сам спросил, сам и отвечу. Заглянул к федоровцам и...   5.1.2014, 11:49
|- - NotHAM   Цитата(ksa @ 5.1.2014, 11:49) ... Загляну...   5.1.2014, 12:59
- - Drool   Ну вы, блин, даете... А это что? Но для него нужен...   5.1.2014, 14:24
|- - ksa   Цитата(Drool @ 5.1.2014, 15:24) Ну вы, бл...   5.1.2014, 14:33
||- - Drool   Цитата(ksa @ 5.1.2014, 12:33) Не знаю, чт...   5.1.2014, 15:02
|- - NotHAM   Цитата(Drool @ 5.1.2014, 14:24) Ну вы, бл...   5.1.2014, 18:47
|- - NotHAM   Цитата(NotHAM @ 5.1.2014, 18:47) ... Поко...   7.1.2014, 11:14
|- - ksa   Цитата(NotHAM @ 7.1.2014, 12:14) Написал....   7.1.2014, 15:05
|- - NotHAM   Цитата(ksa @ 7.1.2014, 15:05) Хм, а может...   7.1.2014, 16:37
|- - NotHAM   Цитата(NotHAM @ 7.1.2014, 16:37) ... Толь...   8.1.2014, 21:32
- - Drool   Я уже отправляю с сизиф/t7/t6 свежую версию. Сам н...   5.1.2014, 14:59
|- - ksa   Цитата(Drool @ 5.1.2014, 15:59) Я уже отп...   5.1.2014, 15:11
|- - Drool   Цитата(ksa @ 5.1.2014, 13:11) Ген, обрати...   5.1.2014, 15:19
|- - ksa   Цитата(Drool @ 5.1.2014, 16:19) Поздно У...   5.1.2014, 15:23
- - ksa   http://forum.altlinux.org/index.php/topic,....html...   5.1.2014, 15:09
- - Drool   Скрип нужен был для какой-то версии, т.к. отказыва...   5.1.2014, 15:16
|- - ksa   Цитата(Drool @ 5.1.2014, 16:16) Может уже...   5.1.2014, 15:25
- - Drool   Насчет p7/p6 - пусть Беркут просит Черепанова, эти...   5.1.2014, 15:27
|- - ksa   Цитата(Drool @ 5.1.2014, 16:27) Насчет p7...   5.1.2014, 15:32
||- - Drool   Цитата(ksa @ 5.1.2014, 13:32) Не сильно т...   5.1.2014, 15:36
||- - ksa   Цитата(Drool @ 5.1.2014, 16:36) Нет, все ...   5.1.2014, 15:48
|- - ksa   Цитата(Drool @ 5.1.2014, 16:27) Насчет p7...   5.1.2014, 16:07
- - Drool   В сизиф/t7/t6 уезжают исправленные сборки transgui...   5.1.2014, 15:50
|- - ksa   Цитата(Drool @ 5.1.2014, 16:50) В сизиф/t...   5.1.2014, 15:55
- - Drool   Еще заметил - украинский перевод полный, а вот рус...   5.1.2014, 15:54
|- - ksa   Цитата(Drool @ 5.1.2014, 16:54) Еще замет...   5.1.2014, 15:58
- - Drool   Только я бы порекомендовал снести Беркуту твой пак...   5.1.2014, 15:57
- - Drool   А, я понял, что мне резануло по глазам - Параметры...   5.1.2014, 16:04
- - Drool   Как бы не приехал пакет без поддержки майм-типов. ...   5.1.2014, 16:09
- - Drool   А фиг его знает, откуда я взял эти CC="gcc %o...   5.1.2014, 19:09
|- - NotHAM   Цитата(Drool @ 5.1.2014, 19:09) А фиг его...   5.1.2014, 19:28
- - Drool   tuxcmd даже рядом не валялся с doublecmd Я только...   5.1.2014, 20:51
|- - NotHAM   Цитата(Drool @ 5.1.2014, 20:51) tuxcmd да...   5.1.2014, 21:43
- - Drool   Так приложи его сюда, не потеряется.   7.1.2014, 14:33
- - Drool   Заметил косяк в desktop-файле - нет перехвата magn...   12.1.2014, 18:23
|- - NotHAM   А СС= ... и СРР= ... таки оставил. Ну не нужно ...   12.1.2014, 20:20
- - Drool   От, беда В хашере прогнал без этих ключей, а в си...   12.1.2014, 20:34
- - NotHAM   Это разве беда ??? Вот у меня со скриптом была бед...   12.1.2014, 21:04


Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 18.8.2025, 12:01