26

romkaromka пишет:

Известная проблема:
При удалении/обновлении lazarus если установить много дополнений, то время на удаление/обновление lazarus будет долгим, потому что каждое удаляемое дополнение будет перекомпилировать lazarus, и лишь потом lazarus удалится/обновится. Хотя по логике в этом случае его не надо перекомпилировать.
Как в спеках предусмотреть, что происходит именно удаление/обновление самого lazarus тем самым изменив поведение для этого случая?

Стандартно - никак. Можно попробовать добавить %preun-сценарий в пакет lazarus, который будет создавать некий временный файл, а в %postun добавить  удаление этого временного файла. Тогда в %postun-сценарии пакетов дополнений можно добавить проверку наличия этого файла и запускать/не запускать сборку lazarus в зависимости от его наличия/отсутствия. Но я не уверен, что %preun-сценарий пакета lazarus будет выполняться до удаления всех зависящих от lazarus пакетов, так что этот метод запросто может и не сработать.

27 (2012-10-08 02:03:17 отредактировано romkaromka)

olelukoie, ты не поверишь, но оказывается rpm предусматривает такую ситуацию. Нарыл следующее: http://www.opennet.ru/docs/RUS/rpm_guide/72.html

Аккаунт отключен по просьбе пользователя. (28.12.2014)

28

romkaromka пишет:

olelukoie, ты не поверишь, но оказывается rpm предусматривает такую ситуацию. Нарыл следующее: http://www.opennet.ru/docs/RUS/rpm_guide/72.html

Триггеры - это просто замена %pre* и %post* сценариев. Простой пример: в старых версиях дистрибутивов для пакетов с библиотеками использовался сценарий %post с командой ldconfig. Сейчас эта функциональность вынесена в соответствующий триггер и в спеках указывать эту команду больше не требуется. Если сработает триггер, то сработает и соответствующий ему сценарий в пакете, а если триггер не сработает, то и сценарий не поможет. И наоборот.

29

olelukoie пишет:

Но я не уверен, что %preun-сценарий пакета lazarus будет выполняться до удаления всех зависящих от lazarus пакетов, так что этот метод запросто может и не сработать.

Не сработал.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

30 (2012-10-08 17:58:04 отредактировано romkaromka)

Обновлены пакеты lazarus-bgra и lazarus-zeosdbo.
Добавлен пакет lazarus-qt4. Это еще одно дополнение к lazarus (хотя в некоторых дистрибутивах это отдельное IDE без поддержки дополнений, то у нас это дополнение к IDE с поддержкой дополнений, что гораздо лучше).
При установке этого lazarus-qt4 пакета lazarus становится qt4, а все приложения, написанные в нём, становятся qt4, при удалении этого lazarus-qt4 пакета lazarus возвращается к gtk2, каким он и является по умолчанию.
Все дополнения к lazarus определяют тип IDE в режиме run time (http://www.freepascal.ru/forum/viewtopi … amp;t=8519): gtk2 или qt4, и пользователь не должен задумываться об этом. Также порядок установки дополнений неважен.

Надо пересобрать пакет qt4pas (это зависимость для пакета lazarus-qt4) на 64бит, на 32бит я его собрал.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

31

Пакет lazarus придется отзывать и пересобирать - при тестировании выявлены ошибки в патчах akdengi (в Росе такая же проблема). Завтра исправлять буду.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

32

пересобрал
qt4pas-2.5-1mrc.mga2.x86_64.rpm
qt4pas-debug-2.5-1mrc.mga2.x86_64.rpm

Mageia6, KDE, LXQt, x86_64.
Человек человеку - волк, а зомби зомби - зомби!
Спасибо сказали: romkaromka1

33

romkaromka, а можно вопрос? Зачем все эти дополнения к lazarus делать отельными пакетами? Нельзя ли их все (кроме qt4) объединить в один пакет и ставить сразу скопом? Это решит вопрос с пересборкой lazarus при установке/удалении пакетов дополнений. А для qt4 действительно сделать отельную сборку lazarus в отдельном пакете (как в "некоторых дистрибутивах"), и тоже месте со всеми дополнениями.

34 (2012-10-09 09:40:04 отредактировано romkaromka)

В один пакет все дополнения объединять не стоит. На данный момент, например, lazarus-bgra не работает в lazarus 1.1, надеюсь исправят, так как баг открыт. Но любая ошибка в одном из дополнений, а они всё таки сторонние и лазарусом официально не поддерживаются, приведет к выходу из строя всех дополнений скопом. Поэтому, лучше разделять их отдельно - тогда проблемный пакет просто удаляется, а остальное продолжает работать.
Сборки лазаруса gtk2 и qt4 имеют недостатки в других дистрибутивах - всё это ставится в одно и тоже место, соответственно, чтобы работать с gtk2 надо удалить лазарус gtk2 и ставить лазарус qt4 и наоборот, или рассовывать всё это по разным местам и ставить 2 IDE одновременно, весит он немало. По мне так лучше поставить дефолтный лазарус с gtk2 и управлять им через дополнение к нему lazarus-qt4, по сути включая и отключая поддержку qt4 этим пакетом (и то это я сделал для упрощения пользователям, так как запустив lazarus-ide под root его можно самим пересобрать в том числе на qt4, но тогда придется изучить --add-package). Не надо забывать, что лазарус можно еще переключить на другие режимы, например, fpgui. Мой механизм с этим легко справится, а вот сборка еще третьего лазаруса fpgui встанет в тупик - куда рассовывать?
Время на пересборку лазаруса от 5 секунд минимум, пока это не критично. Установка 3 дополнений займет примерно 30 секунд, удаление также. Число дополнений можно по пальцам пересчитать. К тому же все их ставить многим смысла нет, поставят выборочно. Зачем ставить пакет с базами данных, если с ними не работать?!

Аккаунт отключен по просьбе пользователя. (28.12.2014)

35 (2012-10-09 09:55:38 отредактировано romkaromka)

Надо просто подумать поглубже над вопросом как в дополнении выяснить чем вызвано его удаление, так как команду ps никто не отменял. Через мониторинг процессов можно выяснить, что его удаление вызвано удалением/обновлением лазаруса. Или еще какие-нибудь варианты подумать как это определить. Триггер %triggerun -- lazarus
в принципе срабатывает при удалении lazarus, но он срабатывает и при удалении дополнения, если отключить срабатывание при удалении дополнения, то это еще вариант, но у меня не получается.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

36

lazarus пересобран как lazarus-1.0.1.20120905-9, пока только на 32бит. Предудущая сборка из репозитория удалена. Если кто ее ставил, то просто удалите /home/user/.lazarus чтобы конфиг перезаписался на новый.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

37 (2012-10-09 23:52:35 отредактировано romkaromka)

Добавлены дополнения:
lazarus-lazpaint - это невизуальные компоненты, необходимые для разработки в lazarus графических редакторов (как пример - графический редактор lazpaint http://sourceforge.net/projects/lazpaint/). Это в том числе зависимость для сборки этого редактора в репозиторий.
lazarus-inet - это визуальные компоненты, позволяющие разрабатывать программы, работающие с сетью, при установке появится вкладка "INet":
http://forum.mageia.org.ru/extensions/hcs_image_uploader/uploads/0/4500/4600/thumb/p1793kfod41s3s3r03uv1732kub1.png
Как обычно часто все дополнения устанавливаются с примерами использования, искать в /usr/lib(64)/lazarus/components/название_компонента/

Аккаунт отключен по просьбе пользователя. (28.12.2014)

38 (2012-10-10 13:36:38 отредактировано romkaromka)

lazpaint (http://sourceforge.net/projects/lazpaint/) - простой графический редактор - опакечен. Собраны пакеты: lazpaint (это метапакет), lazpaint-gtk2, lazpaint-qt4.

Этот пакет демонстрирует:
- что выбрано верное направление, опакечивая каждое дополнение к lazarus отдельным пакетом.
- легкость компиляции программ, написанных в lazarus, через lazbuild без всяких Make-файлов, без необходимости заботиться о размере бинарника:
lazbuild имя.lpr --widgetset=gtk2
lazbuild имя.lpr --widgetset=qt
- до сегодняшнего дня автоматизированная сборка таких программ как lazpaint в виде rpm пакета была практически невозможна, так как получить бинарник можно было исключительно в запущенном lazarus IDE, в котором надо было сначала вручную добавить lazarus packages (lpk), и лишь затем компилировать. сейчас же когда у lazbuild есть опция --add-package, когда дополнения (lpk) к lazarus легко опакечиваются, то стала возможной сборка таких программ как lazpaint. lazpaint был собран в chroot - нет никаких проблем со сборкой.

Эта программа показывает:
- графические возможности современного lazarus.
- работу и с gtk2, и с qt4.

Spec файл для lazpaint - это образец как легко опакетить свои собственные программы, написанные в lazarus, или готовые программы.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

39 (2012-10-12 15:07:37 отредактировано romkaromka)

lazarus-inet и lazarus-lazpaint на 64бит не компилируются, при этом на 32бит всё нормально, запостил баг: http://sourceforge.net/p/lazpaint/bugs/8/ Следовательно, до решения этого вопроса собрать lazpaint на 64бит не представляется возможным.
Может кто-то поможет решить задачу?
Вроде нашел патч для uchoosecolor.pas. Проверяю.

-                   pix := Colorcircle.bmpMaxlight.GetPixel(x-ColorCircle.Bounds.Left,y-ColorCircle.Bounds.top);
+                   pix := Colorcircle.bmpMaxlight.GetPixel(integer(x-ColorCircle.Bounds.Left),integer(y-ColorCircle.Bounds.top));

Патч сработал. lazarus-inet, lazarus-lazpaint, lazpaint собраны на 64бит.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

40 (2012-10-12 17:01:17 отредактировано romkaromka)

Zomby пишет:

пересобрал
qt4pas-2.5-1mrc.mga2.x86_64.rpm
qt4pas-debug-2.5-1mrc.mga2.x86_64.rpm

В упор в репах не вижу.
Есть только:
libqt4pas5-2.5-1.mrc.mga2.x86_64.rpm
libqt4pas5-debug-2.5-1.mrc.mga2.x86_64.rpm
libqt4pas5-devel-2.5-1.mrc.mga2.x86_64.rpm
Пропущена точка:
qt4pas-2.5-1mrc.mga2.x86_64.rpm
qt4pas-debug-2.5-1mrc.mga2.x86_64.rpm
Поэтому, в репозиторий не попали, лежат только в папке Zomby.

Установив этот пакет в кедах, заметил, что кеды стали меньше тупить.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

41 (2012-10-13 10:35:55 отредактировано romkaromka)

Пересобрал lazarus, добавив патч для настройки отладчика gdb. По умолчанию оказалось, что отладка не настроена, точки останова не ставятся. Авторы 3 месяца назад убрали преднастройку отладчика, оставив этот вопрос на усмотрение пользователей и майнтейнеров, но об этом мало кто знал.
Я собрал 32битную версию, проверил - теперь отладка работает.
Удалите /home/user/.lazarus чтобы конфиг перезаписался на новый
Задача: соберите, пожалуйста, 64битную версию и проверьте отладку. У меня на виртуалке 64битные пакеты только мелочовку удается собирать, остальное, увы, не тянет.

Аккаунт отключен по просьбе пользователя. (28.12.2014)
Спасибо сказали: Zomby1

42

romkaromka пишет:

Задача: соберите, пожалуйста, 64битную версию

Готово.

Mageia6, KDE, LXQt, x86_64.
Человек человеку - волк, а зомби зомби - зомби!
Спасибо сказали: romkaromka1

43

Всё ОК. Отладка на 64бит теперь тоже работает по дефолту.

Аккаунт отключен по просьбе пользователя. (28.12.2014)
Спасибо сказали: Zomby1

44 (2012-10-19 14:55:28 отредактировано romkaromka)

Собран пакет lazarus-uniqueinstance - это дополнение к lazarus, запрещающее запуск более одного экземпляра программы.
Описание:
http://lazarus.su/other/edinstvennyiy-e … eniya.html
http://code.google.com/p/luipack/
http://wiki.lazarus.freepascal.org/UniqueInstance
После установки появится на вкладке "System" значок "1":
http://forum.mageia.org.ru/extensions/hcs_image_uploader/uploads/0/4500/4854/thumb/p179sdo0rtj215pflkhsar10jv1.png
Использование: поместить на форму и в свойствах Enabled выбрать true:
http://forum.mageia.org.ru/extensions/hcs_image_uploader/uploads/0/4500/4854/thumb/p179sdr2aq127i114n16l91ejo18gv2.png
Всё. После этого запустить более одного раза Вашу программу будет нельзя.

Аккаунт отключен по просьбе пользователя. (28.12.2014)