FPC 3.0.4

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Сквозняк писал(а):Нормально написанной программе она обычно не нужна: распаковал архив с программой, тыкнул в тыкалку, оно и заработало.
Не путайте одиночную говноподелку и программный комплекс. Впрочем по линуксами и говноподелка нередко требует 100500 дополнительных пакетов и либов.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Я имел ввиду, прежде всего, насколько удобно и грамотна сделана инсталляция. Никакие fpcupdeluxe и рядом не лежали.
чёт у мну системы не правильные и луны не так сходятся. Сколько этих раскладушек с тифоном поломано - песец поседеть может.
И проблемы с установкой не только в лине, а и в винде. Будь то дев ветка, или стабильный релиз. Проблемы не с установкой (это они уже подправили и не вылезало), а сборкой тифона. Они то одну "хорошую" вещь забудут подправить, то другую. И компиляция валится, а потом ищи где именно свалилось. Попытка поубирать лишнее вообще может закончится плачевно.

Не путайте одиночную говноподелку и программный комплекс.
как раз тифон не сильно тянет на комплекс. Попытка содрать с готового и криво винтить свое - это не комплекс. Хотя: подход, возможно, комплексный.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Снег Север писал(а):Не путайте одиночную говноподелку и программный комплекс.

И что программному комплексу "лазарус" надо в винде от реестра, а в линуксе от /usr ? У виндового ПО такие говнозависимости "лечат" хакеры когда изготавливают портируемые нелегальные версии программ. В лазарусе сразу нормально сделать - конечно же нельзя.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Мне единый реестр несравненно удобнее, чем 100500 конфигурационных файликов, которые каждый идиот сует куда ему моча в голову стукнет. И установка одним-двумя кликами удобнее, чем разруливание 100500 зависимостей от хрен знает каких хрен знает кем и когда написанных библиотек. И хакеров бояться - можно в лесу без интернета жить. Как вариант.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Снег Север, речь о другом. У лазаря вообще только 3-4 зависимости и они легко сохраняются в настройках -- пути до компилятора, его исходников, исходников самого лазаря и make файла.
Все остальное может меняться. И, кстати, сам лазарь может запуститься и без этого.

А все "програмные комплексы" требуют наличия определенной внешней инфраструктуры, без которой их функционал резко деградирует. И все это не зависит от того хранятся ли настройки в реестре или в куче конфигов. Реестр, кстати, плох тем, что если его запороть, то портится вся система.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):У лазаря вообще только 3-4 зависимости и они легко сохраняются в настройках -- пути до компилятора

...путь до модулей компилятора, путь до конфига компилятора...

Добавлено спустя 2 минуты 58 секунд:
Снег Север писал(а):Мне единый реестр несравненно удобнее, чем 100500 конфигурационных файликов, которые каждый идиот сует куда ему моча в голову стукнет.

В твоём случае в реестре пишут как моча в голову стукнет. Та же хрень, только упакованная и охраняемая антивирусом, из-за чего так популярны портируемые версии программ.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Сквозняк писал(а):...путь до модулей компилятора, путь до конфига компилятора...


А вот путь до конфигов совсем не обязательно. Зачем, если есть возможность запускать его напрямую с любыми опциями. Единственное, что требуется это добавление своих путей поиска модулей, но для этого нужен проект. Т. е., грубо говоря, Make файл. Да и в винде конфиги лежат в папке с fpc. В лине не помню, но тоже легко доступны и не требуют особых настроек. Вроде бы в "домашняя папка/.fpc".

Модули компилятора, кстати, сам компилятор и должен искать -- это его внутреннее дело. А модули лазаря он и так знает куда задевал. Да и при наличии исходников недолго и скомпилировать их все заново.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):А вот путь до конфигов совсем не обязательно. Зачем, если есть возможность запускать его напрямую с любыми опциями.

Тогда и лазарус не нужен. Зачем среда с автоматизацией, если всё можно сделать в текстовом редакторе.

Единственное, что требуется это добавление своих путей поиска модулей, но для этого нужен проект. Т. е., грубо говоря, Make файл.
Спасибо за эту сишную дрянь, теперь она нужна не только для компилящии всего fpc и лазаруса, но и для хелловорда!

В лине не помню, но тоже легко доступны и не требуют особых настроек. Вроде бы в "домашняя папка/.fpc".
Из домашнего каталога все паскалевские конфиги приходится регулярно вычищать - они создают проблемы, когда их не ждёшь. Компиляторов надо иметь несколько версий, а место для конфига в хомяке - одно.

Модули компилятора, кстати, сам компилятор и должен искать -- это его внутреннее дело.
Так ведь не может сам найти! Компилятор лезет в /etc/fpc.cfg а там прописано что его модули находятся в /usr/lib64
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Сквозняк писал(а):Зачем среда с автоматизацией, если всё можно сделать в текстовом редакторе.


Для удобства, конечно. Формошлепство в текстовом виде далеко не такое удобное дело, как графический макет формы.

Сквозняк писал(а):Спасибо за эту сишную дрянь, теперь она нужна не только для компилящии всего fpc и лазаруса,


Я сказал, грубо говоря. Сам не понимал смысл его использования. Ну и семантику заодно. Ладно бы было средство создания его для своей проги в автоматическом режиме.

Сквозняк писал(а):Компиляторов надо иметь несколько версий, а место для конфига в хомяке - одно.


Это пример неправильной организации рабочего места. Накуа тебе возможность создания нескольких пользователей, если ею не пользоваться? Раскидай компиляторы по хомякам нескольких пользователей. Ну и лазарей заодно.

Сквозняк писал(а):Так ведь не может сам найти!


Как же не находит, если ты сам указал способ нахождения. Только боюсь, что это проблема не компилятора, а системы. И да, могу подсказать как решить эту проблему -- используй самостоятельно скомпиленые версии в хомяке, а не установленные в системе.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):Накуа тебе возможность создания нескольких пользователей, если ею не пользоваться? Раскидай компиляторы по хомякам нескольких пользователей. Ну и лазарей заодно.

Дисковое пространство не резиновое чтобы в тесный пользовательский раздел подселять ещё кучу фиктивных пользователей. До сих пор делать разделы >500 гектар чревато - наследие ОС, с которым ещё долго придётся считаться. А винты <=2Тб - наследие железа. А потом в фиктивных пользователей нужно будет слазить чтобы что-то там настроить, а потом с правами на общие файлы разбираться - нафиг нужен весь этот бред.

Как же не находит, если ты сам указал способ нахождения.


Я не указывал этот способ, в лазарусе нет соответствующего окошка.

И да, могу подсказать как решить эту проблему -- используй самостоятельно скомпиленые версии в хомяке, а не установленные в системе.


Это дурдом. Программа на паскале становится почти такой же хреновой как и сишные изделия - на каждый случай пересобирай, трахайся с make.
fedan
новенький
Сообщения: 70
Зарегистрирован: 15.09.2016 20:18:48

Сообщение fedan »

Сквозняк писал(а):Из домашнего каталога все паскалевские конфиги приходится регулярно вычищать - они создают проблемы, когда их не ждёшь. Компиляторов надо иметь несколько версий, а место для конфига в хомяке - одно.

Для этих целей у меня вот такой ~/.fpc.cfg:

Код: Выделить всё

#IFDEF VER2_6_5
#WRITE include /home/public/programs/dev-fpc/fpc/2.6.5/lib/fpc/2.6.5/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/2.6.5/lib/fpc/2.6.5/fpc.cfg
#ELSE

#IFDEF VER3_0_1
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.1/lib/fpc/3.0.1/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.1/lib/fpc/3.0.1/fpc.cfg
#ELSE

#IFDEF VER3_0_2
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.2/lib/fpc/3.0.2/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.2/lib/fpc/3.0.2/fpc.cfg
#ELSE

#IFDEF VER3_0_3
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.3/lib/fpc/3.0.3/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.3/lib/fpc/3.0.3/fpc.cfg
#ELSE

#IFDEF VER3_0_4
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.4/lib/fpc/3.0.4/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.4/lib/fpc/3.0.4/fpc.cfg
#ELSE

#IFDEF VER3_0_5
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.5/lib/fpc/3.0.5/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.5/lib/fpc/3.0.5/fpc.cfg
#ELSE

#IFDEF VER3_0_6
#WRITE include /home/public/programs/dev-fpc/fpc/3.0.6/lib/fpc/3.0.6/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.0.6/lib/fpc/3.0.6/fpc.cfg
#ELSE

#IFDEF VER3_1_1
#WRITE include /home/public/programs/dev-fpc/fpc/3.1.1/lib/fpc/3.1.1/fpc.cfg
#INCLUDE /home/public/programs/dev-fpc/fpc/3.1.1/lib/fpc/3.1.1/fpc.cfg
#ENDIF
#ENDIF
#ENDIF
#ENDIF
#ENDIF
#ENDIF
#ENDIF
#ENDIF

# searchpath for libraries
-Fl/home/public/programs/dev-fpc/fpc/lib/$FPCTARGET

/home/public/programs/dev-fpc/env.sh:

Код: Выделить всё

#!/bin/sh
#
FPC_VERSIONS="
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
"

BASE_DIR=/home/public/programs/dev-fpc
FPC_DIR=${BASE_DIR}/fpc
FPC_BIN_DIR=

for VER in ${FPC_VERSIONS}; do
   FPC_BIN_DIR=${FPC_DIR}/${VER}/bin
   if [ -d ${FPC_BIN_DIR} ]; then
      FPC_DIR=${FPC_DIR}/${VER}
      break
   fi
done;

export PATH=${BASE_DIR}/lazarus:${FPC_BIN_DIR}:${PATH}

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${BASE_DIR}/fpc/lib/x86_64-linux

/home/public/programs/dev-fpc/startlazarus.sh:

Код: Выделить всё

#!/bin/sh
#
source /home/public/programs/dev-fpc/env.sh
cd ${BASE_DIR}

GTK_IM_MODULE=multipress
QT_IM_MODULE=multipress

cd ${BASE_DIR}/lazarus

${BASE_DIR}/lazarus/startlazarus "$@"

~/.local/share/applications/lazarus.desktop:

Код: Выделить всё

[Desktop Entry]
Name=Lazarus
Comment=Lazarus IDE
Exec=/home/public/programs/dev-fpc/startlazarus.sh %f
Terminal=false
Type=Application
Icon=lazarus.png
Categories=Application;IDE;Development;GTK;GUIDesigner;
StartupWMClass=Lazarus
MimeType=text/x-pascal;text/lazarus-project-source;text/lazarus-project-information;text/lazarus-form;text/lazarus-resource;text/lazarus-package;text/lazarus-package-link;text/lazarus-code-inlay;
Keywords=editor;Pascal;IDE;FreePascal;fpc;Design;Designer;

[Property::X-KDE-NativeExtension]
Type=QString
Value=.pas
X-Ubuntu-Gettext-Domain=desktop_kdelibs
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Сквозняк писал(а):Дисковое пространство не резиновое чтобы в тесный пользовательский раздел подселять ещё кучу фиктивных пользователей.


Не так уж и много места. У меня музыка больше места занимала.

Сквозняк писал(а): А потом в фиктивных пользователей нужно будет слазить чтобы что-то там настроить, а потом с правами на общие файлы разбираться - нафиг нужен весь этот бред.


Вместо этого ты занимаешься еще большим геморроем переставляя компилятор и лазарус. А насчет прав ты не прав.Просто надо правильно их настроить один раз.
Сквозняк писал(а): Программа на паскале становится почти такой же хреновой как и сишные изделия - на каждый случай пересобирай, трахайся с make.

Лазарус и так каждый раз пересобирать приходится... что поделать, если у него идеология использования такова. Как и у fpc.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):Не так уж и много места. У меня музыка больше места занимала.

Так музыка и не в хомяке. Рано или поздно но приходится балансировать около нуля:(
Вместо этого ты занимаешься еще большим геморроем переставляя компилятор и лазарус.

В линуксе дополнительный лазарус, кроме последнего, сегфолтящегося, ставится просто распаковкой в каталог всех пакетов. Переставлять нужно только симлинк в /usr/ Но это тоже хреново, однажды может понадобиться иметь 2 лазаруса с 2 разными компиляторами, версия которых называется одинаково, симлинк их не различит.

[quoteЛазарус и так каждый раз пересобирать приходится... что поделать, если у него идеология использования такова.][/quote]
Не каждый раз. И компилятор пересобирать не надо. Плоха не пересборка вообще, а когда требуют устанавливать компилятор в систему а там уже есть другой компилятор.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Сквозняк писал(а): однажды может понадобиться иметь 2 лазаруса с 2 разными компиляторами, версия которых называется одинаково, симлинк их не различит.

Для таких случаев лучше использовать виртуалки
У меня для тестирования работы постоянно используется порядка 5 виртуалок. И это не считая вайна в линкусе :-)
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

alexs писал(а):Для таких случаев лучше использовать виртуалки

Для них нужна излишняя мощность процессора и материнки, и много-много места на диске. Несколько раз подумаешь прежде чем заводить новую. Самая жесть это запуск десятки в линуксовой виртуалке - просто нажать на кнопки в интерфейсе тот ещё квест.

Добавлено спустя 10 часов 30 минут 32 секунды:
Установил центос 6.9 в виртуалку, попытался собрать src.rpm лазаруса.

Код: Выделить всё

[$ rpmbuild --rebuild fpc-3.0.4-1.src.rpm

Код: Выделить всё

       Compiling unicode/uca_test.pas
       Linking unicode/bin/x86_64-linux/unihelper
[100%] Compiled package utils-unicode
make[1]: Leaving directory `/home/12345/rpmbuild/BUILD/fpc-3.0.4/utils'
+ '[' -z ']'
+ make -C fpcdocs pdf FPC=/home/12345/rpmbuild/BUILD/fpc-3.0.4/compiler/ppcx64
make: *** fpcdocs: No such file or directory.  Stop.
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.0vtDmK (%build)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.0vtDmK (%build)

"А крыша хлопает в ладоши, а значит план у нас хороший"(ц) Мусор какой-то в пакеты пихают :evil: D В спеке прописана сборка документации, а из исходников она вырезана. Но можно же поставить уже готовый лазарусный фпц и собрать только лазарус!
$ rpmbuild --rebuild lazarus-1.8.0-0.src.rpm

make[2]: Entering directory `/home/12345/rpmbuild/BUILD/lazarus-1.8.0/lazarus/tools'
Makefile:2729: warning: overriding commands for target `.'
Makefile:2727: warning: ignoring old commands for target `.'
/usr/bin/ppcx64 -gl -Fu. -Fu../components/lazutils/lib/x86_64-linux -Fu../lcl/units/x86_64-linux -Fu../lcl/units/x86_64-linux/nogui -FE. -FU. -Cg -Fl/usr/lib/gcc/x86_64-redhat-linux/4.4.7 -Flinclude -Flld.so.conf.d/*.conf -Fl/opt/gnome/lib -k--build-id -dx86_64 lazres.pp
Free Pascal Compiler version 3.0.4 [2017/10/02] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling lazres.pp
Linking ./lazres
/usr/bin/ld: warning: ./link.res contains output sections; did you forget -T?
/usr/bin/ld: BFD version 2.20.51.0.2-5.47.el6_9.1 20100205 internal error, aborting at reloc.c line 443 in bfd_get_reloc_size

/usr/bin/ld: Please report this bug.

Error: Error while linking
Нету времени и желания ещё и кучу патчей накладывать для сборки этого глюкодрома.
Ответить