Bug 25991 - ошибка при запуске Lazarus
: ошибка при запуске Lazarus
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/lazarus)
: unstable
: x86 Linux
: P3 normal
Assigned To:
:
:
:
:
: 26050
  Show dependency tree
 
Reported: 2011-08-04 20:08 by
Modified: 2014-02-16 15:58 (History)


Attachments
Патч для Лазаря 1.0.6 (638 bytes, patch)
2013-03-18 22:09, NotHAM
no flags Details | Diff
файлы fpc.cfg и логи запуска (5.16 KB, application/x-bzip)
2013-04-01 11:07, NotHAM
no flags Details
Минимальная заготовка проекта (561 bytes, text/xml)
2013-04-02 21:51, NotHAM
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-08-04 20:08:58
при запуске Lazarus вываливает окно с ошибкой на вкладке Compiler
"Error: system.ppu not found. Check your fpc.cfg."

в /etc/fpc.cfg прописан путь
-Fu/usr/lib/fpc/units/i386-linux/rtl
в этом каталоге system.ppu лежит
------- Comment #1 From 2011-08-14 05:58:02 -------
Несмотря на это сообщение продолжает работать?
------- Comment #3 From 2011-08-14 18:47:57 -------
Это связка fpc-2.5 & lazarus-0.9.31
Уже год как пытаюсь от этого косяка избавится.
Сам по себе лазарь работает, но это как минимум раздражает.
------- Comment #4 From 2011-08-26 16:51:41 -------
Если сменить в файле /etc/fpc.cfg русские сообщения (errorru.msg) английскими
(errore.msg), ошибка не возникает. Вообще стоит задуматься, включать ли русские
сообщения об ошибках в FPC, когда он используется из-под Lazarus.

Также лечится передачей fpc ключа -Fr/usr/lib64/fpc/msg/errore.msg, только это
надо как-то заранее указать. Возможно, в недрах настроек lazarus есть такая
опция, не знаю.
------- Comment #5 From 2011-08-26 17:09:25 -------
То есть пересборка fpc отменяется, наверное. По крайней мере со сменой версии.
Это радует, спасибо!
------- Comment #6 From 2011-08-26 17:11:38 -------
(В ответ на комментарий №4)
> Если сменить в файле /etc/fpc.cfg русские сообщения (errorru.msg) английскими
> (errore.msg), ошибка не возникает. Вообще стоит задуматься, включать ли русские
> сообщения об ошибках в FPC, когда он используется из-под Lazarus.
> 
> Также лечится передачей fpc ключа -Fr/usr/lib64/fpc/msg/errore.msg, только это
> надо как-то заранее указать. Возможно, в недрах настроек lazarus есть такая
> опция, не знаю.

Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
------- Comment #7 From 2011-08-26 17:17:55 -------
(В ответ на комментарий №6)
> Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?

Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений
определяется в fpc.cfg.
------- Comment #8 From 2011-08-26 17:25:46 -------
(В ответ на комментарий №7)
> (В ответ на комментарий №6)
> > Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> > версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
> 
> Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений
> определяется в fpc.cfg.

Никто ж не спорит. Вопрос в том, что "из коробки".
------- Comment #9 From 2011-08-26 17:59:35 -------
(В ответ на комментарий №8)
> (В ответ на комментарий №7)
> > (В ответ на комментарий №6)
> > > Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> > > версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
> > 
> > Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений
> > определяется в fpc.cfg.
> 
> Никто ж не спорит. Вопрос в том, что "из коробки".

Не знаю. Не знаю.
В environmentoptions.xml
Можно прописать такое:

    <CompilerMessagesFilename Value="/usr/lib/fpc/msg/errore.msg">
      <History Count="1"/>
    </CompilerMessagesFilename>

По идеи это как раз и указывает fpc какой файл сообщений использовать.
Но лазарь это игнорирует.
А вот то что Гриша предлагает помогает. Т.е. в /etc/fpc указать английский файл
сообщений.

Но тогда это отразиться и на fp и на lazarus.
А мы уже народ приучили, что у нас сообщения выводятся на русском.
Сообщения компилятора на русском удобно для школьников (а ведь в основном
fpc/lazarus используется в школах). Да и в инете не раз встречал упоминания
учителей, преподавателей, о том как удобно читать сообщения компилятора в
fpc/lazarus'е на русском.

Вот и не знаю как быть.
------- Comment #10 From 2011-08-26 18:37:51 -------
(В ответ на комментарий №9)
> Вот и не знаю как быть.

Мы сейчас обсуждали с Гошей. Вот что лучше всего сделать:
1. Бага происходит из-за того, что при определении конфигурации fpc, lazarus,
по-видимому, парсит вывод fpc. Так как вывод русский, то он "сходит с ума".
2. Надо найти это место и запускать там fpc с опцией, указывающей  на файл
английских сообщений.

Остается подтвердить 1., найти этот код и исправить в соответствии с 2.
------- Comment #11 From 2011-08-26 18:50:43 -------
lazarus "сходит с ума" если указать в /etc/fpc русский, голандский,
португальский. Только что проверял, остальные не пробовал.
------- Comment #12 From 2011-08-26 18:56:42 -------
Сейчас сравнил по количеству строк: errore.msg - 3273; errorru.msg - 2833;
errorptu.msg - 3241; errorn.msg - 2373.
У нас уже были проблемы из-за формата errorru.msg. Возможно эта бага из той же
оперы.
------- Comment #13 From 2011-08-26 18:59:05 -------
(В ответ на комментарий №11)
> lazarus "сходит с ума" если указать в /etc/fpc русский, голандский,
> португальский. Только что проверял, остальные не пробовал.

Естественно, если он умеет парсить только внглийский вывод.
------- Comment #14 From 2011-08-29 19:25:00 -------
(В ответ на комментарий №13)
> (В ответ на комментарий №11)
> > lazarus "сходит с ума" если указать в /etc/fpc русский, голандский,
> > португальский. Только что проверял, остальные не пробовал.
> 
> Естественно, если он умеет парсить только внглийский вывод.
Может его можно обучить?
Codetools не для этого предназначена?
------- Comment #15 From 2012-12-26 18:54:29 -------
В lazarus-1.0.4 ошибка всё ещё актуальна. Может, пересобрать русские сообшения,
чтобы соответствовали английским по количеству и идентификаторам?
------- Comment #16 From 2013-03-14 14:43:24 -------
(В ответ на комментарий №15)
> В lazarus-1.0.4 ошибка всё ещё актуальна. Может, пересобрать русские сообшения,
> чтобы соответствовали английским по количеству и идентификаторам?

Эта ошибка будет актуальна и Лазарусе 1.0.6.
Обойти ее очень просто (по кр. мере у меня сработало).
1. Сначала, когда не находит system.ppu, проигнорировать и запустить IDE.
2. В запущеной IDE в меню "Сервис" кликнуть на пункте "Пересмотреть каталог
исходного кода FPC". После чего можно перезапустить Лазаря.
Никакой Check your fpc.cfg не требуется. Оно само всё прочекит. :)

У меня после проделанного ругань пропадала навсегда и в 1.0.4 и в 1.0.6.
И вообще это, похоже, микроскопический глючок, который ничему не
мешает. 
Вполне достаточно отразить это в документации.
Как было в 0.9.30 - уже не помню.
------- Comment #17 From 2013-03-16 00:35:13 -------
(В ответ на комментарий №16)
> ...
> Обойти ее очень просто ...
> ...
Можно ещё попытаться пропатчить файл lazarus.pp, но сначала надо
понять, в каком месте вываливается ошибка, и перед этим местом 
попробовать вставить вызов процедуры mnuEnvRescanFPCSrcDirClicked
из файла main.pp, т. к. именно она всё и выправляет.
Возможно это сработает.
Но этим должен заниматься тот, кто хорошо знает коды Лазаря.
У меня таких знаний нет. ;)
------- Comment #18 From 2013-03-18 18:49:09 -------
(В ответ на комментарий №10)
> ...
> 2. Надо найти это место и запускать там fpc с опцией, указывающей  на файл
> английских сообщений.
> 
> ... найти этот код и исправить в соответствии с 2.

To cas.
Этот код находится в файле ../components/codetools/definetemplates.pas 
начиная со строки 7200 (для версии 1.0.6). Там вызывается fpc с несколькими
параметрами, один из которых надо, наверное, заменить нужной строкой.
По простому не получается. ;)
------- Comment #19 From 2013-03-18 22:09:40 -------
Created an attachment (id=5776) [details]
Патч для Лазаря 1.0.6

На самом деле это грубый костыль скорее, но работает.
Как поведёт себя на железе, отличном от Intel Pentium
- не знаю.
Это конечное звено цепочки вызовов. Сюда попадаем из строк 7200...
а хорошо-бы найти и пропатчить начальное звено.
Может кто поможет ??
ЗЫ. Для справки. При клике в меню "Пересмотреть ..." подставляется
другой файл /usr/lib/lazarus/components/codetools/fpc.errore.msg.
С ним тоже всё работает.
------- Comment #20 From 2013-03-29 20:07:15 -------
Спасобо за информацию. После накатывания обновления с 4 на 6 у меня вылетала
данная ошибка. сейчас нет. Но вот вопрос, начала вылетать постоянно ошибка 
"Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
specify a source file to be compiled)". Т.е. нет цели для компиляции. в чём
может быть дело???  На 4-ке такого не было.
С уважением, Вадим.
------- Comment #21 From 2013-03-30 15:59:26 -------
Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при
компиляции выдает
"Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
specify a source file to be compiled)"
при этом навигации к строке с ошибкой не происходит.
если запускать lazarus из консоли, то fpc показывает там все подробности ошибки
и номер строки/символа.
------- Comment #22 From 2013-03-31 17:39:25 -------
(В ответ на комментарий №21)
> Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при
> компиляции выдает
> "Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
> specify a source file to be compiled)"
> при этом навигации к строке с ошибкой не происходит.
> ...

Есть такое дело. 
Лечится очень просто.
1-й способ - не делать ошибок. :)
2-й способ - в файле /etc/fpc.cfg закомментировать строку с errorru.msg
и раскомментировать строку с errore.msg (из под рута естественно).

Выглядеть это будет как то так :
...
-Fr/usr/lib/fpc/msg/errore.msg
...
# -Fr/usr/lib/fpc/msg/errorru.msg
...

Лазарус, похоже, не понимает русскоязычные (и любые другие кроме англ.)
сообщения от fpc (в 1.0.4 то-же самое вроде было).
В версии 0.9.30 этого не было, там файл /etc/fpc.cfg, похоже, не использовался,
и соответствующего пункта в меню там не было ("Пересмотреть...").
У него был другой большой недостаток - не получалось добавить в палитру
компонентов свои компоненты. Тут требовалась самопересборка и он пытался
записать всё в /usr/lib/..., что можно сделать только от рута,
а в новых версиях стало всё нормально. Теперь, после самопересборки,
он пишет всё в ~/.lazarus и проблемы пропали, причем искаропки.
Простой пример - Double Commander - там таких компонент много.
В 0.9.30 собрать в графической среде не получалось, а начиная с 1.0.4 - проблем
больше нет. Что хочу - то и вытворяю.

Это надо, наверное, на разработчиков кляузу писать (им самим же).
------- Comment #23 From 2013-03-31 17:48:42 -------
(В ответ на комментарий №22)
> (В ответ на комментарий №21)
> > Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при
> > компиляции выдает
> > "Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
> > specify a source file to be compiled)"
> > при этом навигации к строке с ошибкой не происходит.
> > ...
> 
> Есть такое дело. 
> Лечится очень просто.
> 1-й способ - не делать ошибок. :)
> 2-й способ - в файле /etc/fpc.cfg закомментировать строку с errorru.msg
> и раскомментировать строку с errore.msg (из под рута естественно).
> 
> Выглядеть это будет как то так :
> ...
> -Fr/usr/lib/fpc/msg/errore.msg
> ...
> # -Fr/usr/lib/fpc/msg/errorru.msg
> ...

Думаю, что надо это, наконец-то, сделать по умолчанию. И написать README о том,
включить и когда это сделать разумно.
По сути, немногочисленные русские сообщения об ошибках, не мешают работе только
при запуске fpc и fp без lazarus. Тот, кто не использует lazarus, включит их
сам.
------- Comment #24 From 2013-03-31 19:00:10 -------
(В ответ на комментарий №23)
> ...
> Думаю, что надо это, наконец-то, сделать по умолчанию. И написать README о том,
> включить и когда это сделать разумно.
> По сути, немногочисленные русские сообщения об ошибках, не мешают работе только
> при запуске fpc и fp без lazarus. Тот, кто не использует lazarus, включит их
> сам.

Дык в сс #16 я именно это и предложил...

В Лазаре 0.9.30 по дефолту сразу использовался файл
/usr/lib/lazarus/components/codetools/fpc.errore.msg
и никакой проблемы не было. В окно сообщений компилятора (в графике) всё
валилось только на английском, и вроде никто не жаловался.
Причем туда валилось слишком много ненужного и некритичного.
В Лазарях 1.*.* они это сильно почистили, пишется только полезная инфа
(тоже на английском), но вот другая проблемка вылезла ...,
зато проблему с доп. компонентами и самопересборкой они хорошо решили.

Кстати, errorru.msg пакостит только при работе в графике, в терминале
(а также в хашере, естественно) это никак не проявляется.

ЗЫ. Там, вообще-то, есть ещё одно место, где можно попробовать пропатчить,
(имхо - более кошерное) может сработает. Пока руки не доходят. 
Найду время - попробую и сообщу сюда-же.
------- Comment #25 From 2013-03-31 21:02:45 -------
(В ответ на комментарий №24)
> ... 
> Найду время - попробую и сообщу сюда-же.

Твою мать! (Извиняюсь конечно).
Сделал так:
1. Сделал дубликат /etc/fpc.cfg.
2. Переименовал его в extrafpc.cfg ну и положил рядом с оригиналом.
3. В extrafpc.cfg закомментировал #-Fr/usr/lib/fpc/msg/errorru.msg
и раскомментировал -Fr/usr/lib/fpc/msg/errore.msg
4. В настройках Лазаря: Проект -> параметры проекта -> Другие:
 - снял птицу "Использовать стандартный файл настройки...(fpc.cfg)..."
 - поставил птицу "Использовать дополнительный файл настройки..."
 - в окошке прописал /etc/extrafpc.cfg (обязательно полный путь!!)
 - в самом низу поставил птицу "Использовать текущие параметры по умолчанию..."
5. И всё заработало, и патчить не надо ничего.
При этом в параметры вызова fpc всё подставляется вполне корректно
(параметры ... -n @/etc/extrafpc.cfg ...), что хорошо видно, если в
этом же окне кликнуть по кнопкам "Test", "Показать параметры", "...".

Единственное - окна при первом старте Лазаря будут выскакивать, придется 
их игнорировать.

ЗЫ. Вот, нашлось уже 2 пути решения проблемы.
------- Comment #26 From 2013-04-01 11:07:20 -------
Created an attachment (id=5792) [details]
файлы fpc.cfg и логи запуска

> Там, вообще-то, есть ещё одно место, где можно попробовать пропатчить,
> (имхо - более кошерное) может сработает...

Сработало...
Но это уже не патч а бан, который решает обе проблемы:
ошибку при первом запуске, и ошибку при компиляции.
Подробности в комментариях к файлам в архиве.
Читать в порядке 1-2-3-4.

ЗЫ. Это не первоапрельская шутка.
------- Comment #27 From 2013-04-01 11:32:07 -------
(В ответ на комментарий №25)
> 2. Переименовал его в extrafpc.cfg ну и положил рядом с оригиналом.
Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить
его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?
------- Comment #28 From 2013-04-01 12:07:55 -------
(В ответ на комментарий №27)
> ...
> Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить
> его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?

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

Но это не решает проблему первого запуска. См. 4-й лог из архива.
Там первый старт RunTool по любому идёт с пустым ExtraOptions, повидимому
в расчете на то, что fpc выдаст нужную информацию для распарсивания
из своего errore.msg.
Причем пустое значение предписано в файле 
.../components/codetools/definetemplates.pas 
строка 703. Декларация функции Update. Т. е. прямо в декларации.

А вот бан, или оставление только errore.msg, решает обе проблемы.
------- Comment #29 From 2013-04-01 14:13:03 -------
(В ответ на комментарий №28)
> ...
> А вот бан, или оставление только errore.msg, решает обе проблемы.

В догонку, для сведения.
Сейчас попробовал 0.9.30. Так он, похоже, errore.msg из /etc/fpc.cfg
вообще не использует, а сразу свой подставляет.
Там запуск RunTool с пустым ExtraOptions напрочь отсутствует как при
первом старте Лазаря, так и позже. Потому проблем и не было.
Ошибку при компиляции проверять даже не стал.
------- Comment #30 From 2013-04-01 17:59:14 -------
Спасибо за помощь! Закомментировал русский файл, расскомментировал английский -
всё заработало!
------- Comment #31 From 2013-04-01 18:14:51 -------
(В ответ на комментарий №30)
> Спасибо за помощь! Закомментировал русский файл, расскомментировал английский -
> всё заработало!

Пожалуйста!
А теперь попробуйте (ради эксперимента) очистить каталог /home/.../.lazarus
и запустите его из меню или из терминала ...$ startlazarus.
Это равноценно первому запуску после установки программы.
(Ни один Ваш проект при этом не пропадёт! - они в других каталогах).
Стартовых окон, описанных в СС#1 не должно появиться, должен сразу
нормально стартовать.
А то может это только у меня всё работает ?? (т. к. всё сильно перепахано).
------- Comment #32 From 2013-04-02 21:51:23 -------
Created an attachment (id=5795) [details]
Минимальная заготовка проекта

(В ответ на комментарий №27)
> ...
> Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить
> его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?

Если уж подкладывать в /etc/lazarus/ то наверное минимальную заготовку проекта
(см. вложение).
Там, возможно, секцию Debugging можно тоже полностью убрать (не пробовал).
Эта заготовка добавляет в параметры вызова компилятора дополнительный
параметр -Fr/бла-бла-бла.
Посмотреть можно в том же самом окне, где и про fpc.cfg было, но теперь
никакие манипуляции с "птицами" не требуются. Это будет по дефолту запись
в "параметры пользователя" в любом НОВОМ проекте. В старые пректы, возможно,
придется добавить руками.
В файл project.lpi всё что нужно - пишется Лазарем по умолчанию
(как и было раньше), а из этой болванки  - дописывается.
Проблему при компиляции программы с ошибками это устраняет полностью,
т. е. errorru.msg можно оставить, но тогда проблема первого запуска
останется (на самом деле она ерундовая).
У меня работает (laz 1.0.6; fpc 2.6.2; бранч р6).
Хорошо-бы Шенцев прокомменторовал это, если доступен.
------- Comment #33 From 2013-04-02 22:10:26 -------
(В ответ на комментарий №32)
> Created an attachment (id=5795) [details] [details]
> Минимальная заготовка проекта
> ...
Склеоз, блин! 
Файл нужно обозвать projectoptions.xml .
------- Comment #34 From 2013-04-04 15:34:47 -------
(В ответ на комментарий №32)
> Там, возможно, секцию Debugging можно тоже полностью убрать...
Можно. Убрал всё лишнее.
Теперь projectoptions.xml выглядит так:

<?xml version="1.0"?>
<CONFIG>
  <CompilerOptions>
    <Other>
      <CustomOptions Value="-Fr/usr/lib/fpc/msg/errore.msg"/>
      <CompilerPath Value="$(CompPath)"/>
    </Other>
  </CompilerOptions>
</CONFIG>

При этом errorru.msg ВКЛЮЧЕН !!.
Проблемы, описанной в сс#20 и сс#21 больше не возникает,
а проблему первого запуска один из разрабов Лазаря (Mattias вроде)
рекомендовал обходить "пересмотром каталогов исходного кода fpc".
(Подсмотрел в гугле в какой-то ихней рассылке - ссылку, естественно,
забыл скопировать, а зачем ? ...)
Теперь при сборке в терминале путём lazbuild somefile.lpi вся инфа
идет на английском, а при сборке путем fpc somefile.pas - на русском.
В обеих случаях - успешно (если нет ошибок).

fpc 2.6.2, lazarus 1.0.8 (или 1.0.6), бранч p6.
------- Comment #35 From 2013-05-24 19:21:10 -------
lazarus-1:1.0.8-alt1 -> sisyphus:

* Fri May 24 2013 Andrey Cherepanov <cas@altlinux> 1:1.0.8-alt1
- New version 1.0.8
- Fix search FPC compiler with localized output from fpc (ALT #25991)
- Set correct path to xterm for all existing modules (ALT #24803)
- Update PowerPDF to 0.9.10 (ALT #24804)
- Add libdbus-devel and xterm to requires
- Pack man pages
- Add patches from Fedora
- Make symlink /usr/bin/lazarus for lazarus-ide
- Add docs and examples in main package