старые и новые косяки лазаря или ... новогодняя сборка

Вопросы программирования и использования среды Lazarus.

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

Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

старые и новые косяки лазаря или ... новогодняя сборка

Сообщение sunjob »

добрый день, коллеги!

1. все fpc/lazarus у меня ставятся в свои каталоги
2. версии lazarus привязаны к версии fpc (настраивается)
3. разруливанием версий, настройкой окружения, конфиг-каталогами у меня занимается отдельный набор скриптов
4. установлены след. версии (пишу из под sl14.2 x64, в основной оси sl12.2 и того больше)

старые версии

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

fpc-3.0.4 / lazarus_1.8.4  gtk
fpc-3.0.4 / lazarus_2.0.4  gtk
fpc-3.0.4 / lazarus_2.0.6  gtk
fpc-3.0.4 / lazarus_2.0.8  gtk
fpc-3.2.0 / lazarus_2.0.10 qt4 (основная)


новые версии (последние)

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

fpc-3.2.0 / lazarus-2.0.12
fpc-3.2.2 / lazarus-2.2.0


старые версии - б.м, без особых проблем работают
новые версии - тут появились неразрешимые проблемы

///////////////////////////////////////////////////////////////////////////////

> spoiler - немного о настройке окружения fpc/lazarus

### fpc
установка/PREFIX, конфиги:

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

/usr/fpc           ~/config/fpc/3.0.4/{fpc.cfg,fppkg.cfg}  <-- default (старая версия)
/opt/fpc-3.2.0 :   ~/config/fpc/3.2.0/{fpc.cfg,fppkg.cfg}
/opt/fpc-3.2.2 :   ~/config/fpc/3.2.2/{fpc.cfg,fppkg.cfg}


### lazarus (аналогично)

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

/opt/lazarus-x.x.x : ~/config/lazar/x.x.x/{*}


в запускающих скриптах производится настройка окружения

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

export PPC_CONFIG_PATH=<путь к fpc.cfg>


на всякий случай сделал "аналогичную переменную" для fppkg.cfg, думал проканает
но, видимо не проканало :)

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

export FPPKG_CONFIG_PATH=<путь к fppkg.cfg>


///////////////////////////////////////////////////////////////////////////////

далее, коротко и поподробнее :о)

///////////////////////////////////////////////////////////////////////////////

Коротко

можно предположить что-то поломали либо в fpc, либо в lazarus
считаю что-то поломали в lazarus, т.к. с обоими "новыми" fpc-версиями "старые" лазари собираются/работают без проблем
в частности, проверил

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

slackware-14.2 x64
lazarus_2.0.10 / fpc-3.2.0
lazarus_2.0.10 / fpc-3.2.2


собирал в 3х версиях гуи: gt2, qt4, qt5
проверено на 2х системах sl12.2/14.2 (в той или иной степени глюки повторяются)

> spoiler
причем qt4 отлично рисует шрифты, в отличие qt5-шг!!! ну а gtk-всегда рисовал отлично :о)

///////////////////////////////////////////////////////////////////////////////

Подробности "новых" косяковх

1. проблемы в настройках IDE-окружения/проекта

- первый запуск лазаря, не видит путей к конфигам fpc, (PPC_CONFIG_PATH - настроена)
- после указания в настройках пути к fppkg.cfg - на первое время успокаивается, но потом все равно выдает подобные сообщения
- видимо, как следствие, выдается сообщение, что неизвестные настройки платформы/процессора итд
помогает принудительная настройка:

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

menu / tools / configure build lazarus
указание Target_OS/CPU


тоже самое надо проделать с настройками проекта (сделать дефолтными):

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

menu / project / project options / compiller options / config & target


после данных настроек лазарь может собирать пустой проект

ИзображениеИзображениеИзображение


2. сборка минимального проекта (пустая форма с одной кнопкой)

при добавлении кнопки и 2м кликом по кнопке (формирование обработчика) - выдается ошибка

подсвечивается файл base.inc, он, естественно присутствует в "дереве" (файлы на месте)
и мне особенно не понятно, причем тут файлы винды?!

ошибка:

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

Codetools, Errors: 1
windows.pp(44,5) Error: include file not found "base.inc"


файлы windows.pp

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

fpc-source-3.0.4
/usr/src/fpc-3.0.4/packages/libndsfpc/examples/graphics/Effects/windows/windows.pp
/usr/src/fpc-3.0.4/rtl/win32/windows.pp
/usr/src/fpc-3.0.4/rtl/win64/windows.pp
/usr/src/fpc-3.0.4/rtl/wince/windows.pp

fpc_3.2.0
/opt/fpc-3.2.0/src/packages/libndsfpc/examples/graphics/Effects/windows/windows.pp
/opt/fpc-3.2.0/src/rtl/win32/windows.pp
/opt/fpc-3.2.0/src/rtl/win64/windows.pp
/opt/fpc-3.2.0/src/rtl/wince/windows.pp

fpc_3.2.2
/opt/fpc-3.2.2/src/packages/libndsfpc/examples/graphics/Effects/windows/windows.pp
/opt/fpc-3.2.2/src/rtl/win32/windows.pp
/opt/fpc-3.2.2/src/rtl/win64/windows.pp
/opt/fpc-3.2.2/src/rtl/wince/windows.pp


файлы base.inc

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

fpc-source-3.0.4
/usr/src/fpc-3.0.4/rtl/win/wininc/base.inc
/usr/src/fpc-3.0.4/rtl/wince/wininc/base.inc

fpc_3.2.0
/opt/fpc-3.2.0/src/rtl/win/wininc/base.inc
/opt/fpc-3.2.0/src/rtl/wince/wininc/base.inc

fpc_3.2.2
/opt/fpc-3.2.2/src/rtl/win/wininc/base.inc
/opt/fpc-3.2.2/src/rtl/wince/wininc/base.inc


естестенно, сборка не идет, и, хуже того, со временем сваливается сам лазарь и может(*) потянуь за собой и линух
(*) - преспокойно так делал неск. раз (возможно, конечно же совпадение, но у меня линух падает в исключительных случаях)

в инете есть упоминание о похожем, но это не то
url

ПРИЧЕМ, сам лазарь может себя пересобрать, при некоторых особеностях(*)!
(*) особенности заключаются в пересборке c QT-версией GUI, далее

ИзображениеИзображениеИзображение

add 2022.01.21 - ноги растут из файла-рессуров
c каких это ... "условных едениц"... тут присутствует настройки для Windows/win32 ?

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

project1.res

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">^M
 <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.AppName" type="win32"/>
 <description>Your application description.</description>
 <dependency>
  <dependentAssembly>
   <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595
  </dependentAssembly>


на скриншотах видно, что подключаемый файл с ошибкой это

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

/opt/fpc-3.2.2/src/rtl/wince/windows.pp
{$i base.inc}


дополнительно
1. проект с кнопкой, созданный под lazarus-2.0.10 и нормально собираемый и запускаемый, все так-же выдает ошибку в lazarus-2.0.12
2. лазарь и паскаль собранные в стандартный PREEFIX работает нормально

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

PREFIX=/usr

проверял на

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

lazarus-2.0.12
fpc-3.2.0


UPDATE путем подмены выяснилось:
лазарь/fpc тупит именно из-за того, что кто-либо (lazarus or fpc) расположены по ссылке
допустим так

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

/opt/fpc-3.2.2 -->
~/opt/fpc-3.2.2

ИзображениеИзображение

3. особенности пересборки Lazarus c QT-версией GUI

если в настройках

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

menu / Tools / Configure Buils Lazarus 


выбрать qt5, то сборка пройдет нормально, не важно какой GUI-Toolkit был выбран при сборке qt4 или qt5 (пересборка пройдет нормально под тем-же тулкитом, т.е. если лазарь был собран с qt4, то и пересобирется в qt4)

если выбрать qt - вывалит непонятная ошибка
Изображение

4. Ambiguous units found: Lazarus 2.0.12
URL

///////////////////////////////////////////////////////////////////////////////

косяки старых версий

1. настройки проекта, не видят настройки -FU в конфиг-файле

Изображение

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

PPC_CONFIG_PATH - настроен, указывает на fpc.cfg
~/config/fpc/x.x.x/fpc.cfg


предполагаю, что лазарь не анализирует настройку окружения, PPC_CONFIG_PATH (fpc нормально "настраивается")

2. проблема "просмотра пакетного менеджера"

при просмотре пакетов, если потеряется фокус, типа переключились посмотреть что-то другое, то уже не вернется обратно, только через kill ... the-bill

а отвлекаться надо! если что-то прочитать или еще чего подглядеть в "других" текстах, инете.

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

1. menu / Package / Install-Uninstall Packages
2. появления окна пакетного менеджера
3. переключаемся на другой приложение/рабочий стол
4. возвращаемся обратно к лазару
5. нет доступа к окну пакетного менеджера, лазар не реагирует на обращение к меню итд,
6. kiillall lazarus


3. баг редактора, промотка кода

(*) как выснилось, это фича редактора! только не понятно, отключаемая или нет?

при промотке текста "имя-заглавие функции" остается на месте, а весь код функции проматывается
(наткнулся один раз)

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение


4. эпичный баг, реакция нажатия на кнопку мышью и пробелом

2020.07.08 замечен и задокументирован :о) на пленку

на пробел - не срабатывает, очищается (видимо по дефолту)
по нажатию мышкой - отрабатывает нормально (видео продублированы)

video1
video2

///////////////////////////////////////////////////////////////////////////////

дополнение/обращение к программистам/кураторам проекта lazarus

1. ск. всего в лазаре нет анализа переменной PPC_CONFIG_PATH, т.к. при "первых" запусках лазаря выдается куча сообщений что "fpc.cfg не найден"

видимо, или "около того из-за этого" в последних вер. появилась настройка пути к fppkg.cfg

предлогаю (было-бы не плохо):

добавить анализ переменных окружения:

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

PPC_CONFIG_PATH   -> путь к fpc.cfg
FPPKG_CONFIG_PATH -> путь к fppkg.cfg (*)


и если они "трушные" сделать "автоматическое" добавление/переопределение настройки в гуях лазаря

(*) - в инете не нашел упоминания об "использовании" данной переменной, видимо, ее как раз и не существует.
предлагаю "добавить" в наш "арсенал"

так-же добавить, в gui-настройки путь к fpc.cfg, как уже сделано для fppkg.cfg

///////////////////////////////////////////////////////////////////////////////

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

Linux 
Slackware 12.2/x32 - Trinity TDE 3.5.12
- kernel 2.6.33.20
- gtk+2-2.20.1
- glibc-2.11.1
- qt4pas-2.1
- qt4-4.7.4
- qt4-4.8.7

Slackware 14.2/x64 - Trinity TDE 4.0.11
- kernel ...


///////////////////////////////////////////////////////////////////////////////

всех с новым годом, новым частем... надеюсь, сообществу пригодиться :D
Последний раз редактировалось sunjob 24.01.2022 13:59:30, всего редактировалось 21 раз.
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

sunjob писал(а):при промотке текста "имя-заглавие функции" остается на месте, а весь код функции проматывается

Это не баг. Когда большая процедура/функция и курсор стоит в этой процедуре/функции, то при перемотке будет показываться название и данные процедуры/функции. Если ты конечно находишься в пределах этой процедуры/функции.

sunjob писал(а):на пробел - не срабатывает, очищается (видимо по дефолту)

это вероятно кнопка не в фокусе. Надо выставлять фокус, тогда она будет нажиматься.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

sunjob писал(а):ск. всего в лазаре нет анализа переменной PPC_CONFIG_PATH

Посмотрел исходники старых версий Лазаря (2.1 и 2.0.2, которые у меня случайно завалялись), там упоминания про эту переменную тоже нет. Зато она есть (была в старых и никуда не девалась в новых) версиях FPC, в этом можно убедиться посмотрев файл "compiler/options.pas". От этого ко мне прокрадываются смутные подозрения, что у Вас где-то настройки ненастроены. :-)
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

PPC_CONFIG_PATH
эта настройка fpc-компилятора а не лазаря и поэтому должна там быть по умолчанию (в кишках fpc), а вот с лазарем... упс...

у Вас где-то настройки ненастроены

а у Вас на кухне молоко убежало :D ... как говориться, без проблем, принимается, предлагаю пофантазировать и выдать дотошное предположение "где именно оно ненастроено" :mrgreen:

это вероятно кнопка не в фокусе

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

Это не баг

хотелось бы отключаемый такой "не баг", любая особенность во время работы мешает (обычно)
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

ИМХО смысла разводить зоопарк нет никакого. Есть 2 актуальные версии - последняя релизная и транковая.
Остальное - тыква и держать их стоит только изза какойто критичекой потери обратной совместимости
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

... ИМХО смысла ... Есть 2 актуальные версии - последняя релизная и транковая.

Вы топик точно читали?! :P
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

sunjob писал(а):хотелось бы отключаемый такой "не баг"

очень удобная штука! Особенно когда код большой. Видишь в какой функции/процедуре ты в данный момент находишься, если конечно курсор в тексте находится в пределах экрана. Щёлкнул посреди кода и увидел что за функция "под рукой".
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

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

Щёлкнул посреди кода и увидел

поподробнее, в 2х словах?! что щелкнул?! :D или вы про "такое" дефолтное поведение?
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Если у тебя десятки функций, каждая на 7 страниц, то при прокручивании достаточно просто потеряться. А мышкой щёлкнув по коду, мы увидим в какой функции мы находимся. Перекрутили или нет, если требовалась именно эта функция (если мотать клавишами, то там постоянно светится, потому что курсор в пределах рабочего окна всегда).
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

да это я понял сразу :о) поэтому привел пример того, что в других редакторах это сделано по своему :о)
мне было не понятно, что вы имеете в виду под щелчком
ладно, забыли...
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

мышь, левый клик по коду. )))
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

меня больше всего интересует основная проблема, откуда ноги ростут у win32 ???
2. сборка минимального проекта (пустая форма с одной кнопкой)


Добавлено спустя 11 часов 28 минут 16 секунд:
UPDATE

уточнение главного косяка (кажется докопался до сути, проблемы в том, что теперь/новый лазарь не желает работать с сылками :oops: ...)

если fpc/src находятся по ссылке, то все...!!!
допустим так

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

/opt/fpc-3.2.2 -->
~/opt/fpc-3.2.2

ИзображениеИзображение

или еще не менее веселое приключение, если исходники fpc положить по ссылке :о)
Аватара пользователя
sunjob
постоялец
Сообщения: 182
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

xxl. Несколько форм, доступ к одной из форм

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

Lazarus 2.0.10 - OK 
Lazarus 2.0.12 - ERROR

procedure TForm1.Button1Click(Sender: TObject);
begin
TForm2.Visible := True;
end; 

unit1.pas(36,16) Error:
Only class methods, class properties and class variables can be referred with class references


... простите, это мы говорим о стабильной версии?! :oops:

нам тут как-бы... клацать по калавитуре а не ногти красить, пока там начальники имущество делят :oops: ! откатываемся на Lazarus 2.0.10 :mrgreen:

зы. позже, конечно-же выяснилось, что я немного ступил :lol: (сообщение немного подправил :D :D :D )
Последний раз редактировалось sunjob 24.01.2022 17:42:15, всего редактировалось 3 раза.
iskander
энтузиаст
Сообщения: 630
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Чем носиться с глюками как с писаной торбой, может лучше сходить в багтрекер?
Что касаемо 5, то компилятор, кажется, в своём праве, если конечно TForm2 это имя класса.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>откатываемся на Lazarus 2.0.10
прям так сразу не разобравшись))
Ты немного лукавишь, в 2.0.10 будет точно такая ошибка
Ответить