Bug 36023 - Собрать fpc для неинтеловских архитектур
Summary: Собрать fpc для неинтеловских архитектур
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: fpc (show other bugs)
Version: unstable
Hardware: all Linux
: P3 enhancement
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-02-02 15:48 MSK by AEN
Modified: 2020-02-06 09:34 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description AEN 2019-02-02 15:48:23 MSK
Судя по https://www.freepascal.org/download.html , это возможно.
Comment 1 Michael Shigorin 2019-02-02 16:39:39 MSK
Насколько мне известно, это обычно портирование (для e2k смотрели).
Разве если есть сишный бэкенд, но это не про fpc вроде бы как.
Comment 2 Ivan A. Melnikov 2019-02-02 17:02:58 MSK
> Насколько мне известно, это обычно портирование (для e2k смотрели).

Компилятор fpc написан на паскале, и (по крайней мере в транке) поддерживает кучу архитектур, включая riscv, но не включая, %e2k. Так что по крайней мере для mipsel и arm* это вопрос бутсрапа, должно быть несложно.

Для mips64el fpc нет ни у апстрима, ни у Дебиана, ни у китайских коллег в их loongnix'е, но mips64el можно в рассмотрение пока не включать.

Ещё у fpc есть backend на llvm, но я не знаю, насколько живой и какая версия llvm требуется.
Comment 3 AEN 2019-02-02 18:11:24 MSK
Эта сборка важна для школ, где pascal пока -- один из возможных языков обучения и сдачи ЕГЭ
Comment 4 Sergey Bolshakov 2019-02-04 17:30:22 MSK
тут 
http://git.altlinux.org/people/sbolshakov/packages/fpc.git
несколько коммитов для arm, по крмере %build заканчивается успешно.
Comment 5 Ivan A. Melnikov 2019-02-05 16:12:33 MSK
Попробовал забутстрапить на mipsel, сначала с ppcmipsel из debian (апстрим публикует только сборки под big endian mips), потом с собранным им уже нашим бинарником. И так, и так падает сборка gdbint:

[...]
Start compiling package gdbint for target mipsel-linux.
File libgdb.a found (/usr/lib/libgdb.a)
GDB-lib found, compiling and running gdbver to obtain GDB-version
Warning: Unable to determine the libgcc path.
       Compiling gdbint/src/gdbver.pp
       Linking gdbint/bin/mipsel-linux/gdbver
The installer encountered the following error:
External command "gdbint/bin/mipsel-linux/gdbver -o gdbint/src/gdbver.inc" failed with exit code 55296. Console output:
Runtime error 216 at $77B146B0
  $77B146B0
[...]

Если позапускать руками и присмореться внимательно, понятно, что это segfault. Вот stacktrace:

(gdb) bt
#0  0x77e986b0 in __GI__IO_wsetb (f=0x77fb7dd4 <_IO_stdout_>, b=0x0, eb=0x0, a=0) at wgenops.c:96
#1  0x77ea6e30 in _IO_unbuffer_all () at genops.c:883
#2  _IO_cleanup () at genops.c:930
#3  0x77e5feac in __run_exit_handlers (status=255, listp=0x77fb73dc <__exit_funcs>, run_list_atexit=<optimized out>, run_dtors=<optimized out>) at exit.c:130
#4  0x77e5ff2c in __GI_exit (status=<optimized out>) at exit.c:139
#5  0x77e461a8 in __libc_start_main (main=0x402ee8, argc=1, argv=0x7fbf76b4, init=<optimized out>, fini=0x40dd64 <__libc_csu_fini>, rtld_fini=0x77fd1900 <_dl_fini>, stack_end=0x7fbf7690) at libc-start.c:342
#6  0x00402ee8 in ?? ()

Разбираюсь.
Comment 6 AEN 2019-02-07 02:08:41 MSK
(В ответ на комментарий №4)
> тут 
> http://git.altlinux.org/people/sbolshakov/packages/fpc.git
> несколько коммитов для arm, по крмере %build заканчивается успешно.

А вот что потом: http://kriscode.blogspot.com/2017/11/lazarus-on-arm-ubuntu.html?m=1
Comment 7 Ivan A. Melnikov 2019-02-08 16:50:15 MSK
(In reply to comment #5)
> И так, и так падает сборка gdbint:
[...]
> Разбираюсь.

В первом приближении разобрался, https://bugzilla.altlinux.org/36065

(В ответ на комментарий №4)
> тут 
> http://git.altlinux.org/people/sbolshakov/packages/fpc.git
> несколько коммитов для arm, по крмере %build заканчивается успешно.

Добавил сверху пару (довольно тривиальных) коммитов для mipsel:

http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel

Пока тоже только %build проходит, и только с glibc-core с фиксом из #36065. Такой glibc, я думаю, будет в sisyphus_mipsel позже, после дополнительного тестирования.
Comment 8 Ivan A. Melnikov 2019-02-08 18:15:32 MSK
(In reply to comment #7)
> > тут 
> > http://git.altlinux.org/people/sbolshakov/packages/fpc.git
> > несколько коммитов для arm, по крмере %build заканчивается успешно.
> 
> Добавил сверху пару (довольно тривиальных) коммитов для mipsel:
> 
> http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel
> 

Добавил в ту же ветку 2 коммита, делающие %install кросс-платформенным и исправляющие его при bootstrap'е. %install прошёл. Осталось разобраться с  некоторыми %files.
Comment 9 Ivan A. Melnikov 2019-02-08 20:07:29 MSK
(In reply to comment #8)
> (In reply to comment #7)
> > > тут 
> > > http://git.altlinux.org/people/sbolshakov/packages/fpc.git
> > > несколько коммитов для arm, по крмере %build заканчивается успешно.
> > 
> > Добавил сверху пару (довольно тривиальных) коммитов для mipsel:
> > 
> > http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel
> > 
> 
> Добавил в ту же ветку 2 коммита, делающие %install кросс-платформенным и
> исправляющие его при bootstrap'е. %install прошёл. Осталось разобраться с 
> некоторыми %files.

%files победил, осталось пара лишних зависимостей и поправить конфиги. С поправленными руками конфигами hello world собрался и запустился.
Comment 10 Ivan A. Melnikov 2019-02-11 14:32:47 MSK
(In reply to comment #9)
> > > http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel
[...]

Ещё раз обновил ветку; в таком виде оно собралось и нормально ставится в hasher. fpc вроде работает, ide запускается но падает при попытке запустить программу (даже без дебага; скомпилировать удаётся).
Comment 11 AEN 2019-02-11 15:15:21 MSK
(В ответ на комментарий №10)
> (In reply to comment #9)
> > > > http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel
> [...]
> 
> Ещё раз обновил ветку; в таком виде оно собралось и нормально ставится в
> hasher. fpc вроде работает, ide запускается но падает при попытке запустить
> программу (даже без дебага; скомпилировать удаётся).
Уже что-то. В принципе, используют все же lazarus, которому, вероятно, ide от fpc не нужен.
Comment 12 Ivan A. Melnikov 2019-02-11 15:30:19 MSK
(In reply to comment #11)
> (В ответ на комментарий №10)
> > (In reply to comment #9)
> > > > > http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel

Опубликовал ещё один небольшой коммит, исправляющий сборку с выключенным bootstrap. Пока от меня всё.

> > Ещё раз обновил ветку; в таком виде оно собралось и нормально ставится в
> > hasher. fpc вроде работает, ide запускается но падает при попытке запустить
> > программу (даже без дебага; скомпилировать удаётся).
> Уже что-то. В принципе, используют все же lazarus, которому, вероятно, ide от
> fpc не нужен.

Сборка lazarus -- интересный тест, надо будет попробовать.
Comment 13 Sergey Bolshakov 2019-02-11 15:45:12 MSK
(In reply to comment #12)
> (In reply to comment #11)
> > (В ответ на комментарий №10)
> > > (In reply to comment #9)
> > > > > > http://git.altlinux.org/people/iv/packages/?p=fpc.git;a=shortlog;h=refs/heads/mipsel
> 
> Опубликовал ещё один небольшой коммит, исправляющий сборку с выключенным
> bootstrap. Пока от меня всё.

ещё один коммит поверх 67d3324188b19 у меня и тоже пока всё.
Comment 14 Ivan A. Melnikov 2019-02-12 16:20:31 MSK
(In reply to comment #12)
> (In reply to comment #11)
> > (В ответ на комментарий №10)
> > Уже что-то. В принципе, используют все же lazarus, которому, вероятно, ide от
> > fpc не нужен.
> 
> Сборка lazarus -- интересный тест, надо будет попробовать.

lazarus собирается, но не работает. При первом запуске выдаёт окошко с ошибкой:

Пакет EditorMacroScript (сценарии PascalScript) обнаружил проблему и отключился.
Пакет не прошёл самотестирование с сообщением:
"test_int1(42)(init: 0) [Exp: 42 / Got: 0]"

То же самое в английской локали:

The package EditorMacroScript (pascalscript macros) has detected a problem and was deactivated.
The package failed its selftest with the message:
"test_int1(42)(init: 0) [Exp: 42 / Got: 0]"

После этого (а при втором последующих запусках без этого) что-то сегфолтится и окошки висят, ни на что не реагируют.

В общем, на mipsel fpc не очень рабочий вышел. Будем разбираться.
Comment 16 AEN 2019-02-16 00:35:38 MSK
Не, с последним промахнулся, извините.
Comment 17 Sergey Y. Afonin 2020-02-06 09:34:14 MSK
Тут вот
https://forum.altlinux.org/index.php?topic=43539.msg346186#msg346186
пишут, что удалось запустить в ALT aarch64-бинарники fpc/lazarus из Ubuntu.