Автор Тема: Понадобился лазарус для arm, а в репах его не оказалось [Решено]  (Прочитано 5877 раз)

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
Понадобился лазарус, а в репах его не оказалось, поэтому сначала скачал фри паскаль с официального сайта, а там для arm есть только 32х битный. Поэтому сначала установил его, а затем попытался собрать 64х битный из исходников командой make all OPT=-dFPC_ARM64 и получил ошибку
сообщение ассемблера:
ошибка: нераспознанный параметр -meabi=5
что это за ошибка и как её исправить?
« Последнее редактирование: 06.02.2020 08:32:42 от alxl »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 4 404
  • antohami@
Повесьте багу с запросом портирования на aarch64.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 098
Если на официальном сайте нет сборки под aarch64, то альт тут не поможет. Видимо ещё не портировали.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 7 644
  • Sunny 273 RUS crew
Если на официальном сайте нет сборки под aarch64, то альт тут не поможет. Видимо ещё не портировали.
Ну может там просто. Или где-то даже есть патч готовый.

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
на официальном сайте нет только скомпилированного паскаля под arm64, а в исходниках есть поддержка этой платформы. В репах ubuntu нашлись пакеты с паскалем и лазарусом под arm64. Попробую оттуда утянуть и установить.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 4 404
  • antohami@
на официальном сайте нет только скомпилированного паскаля под arm64, а в исходниках есть поддержка этой платформы. В репах ubuntu нашлись пакеты с паскалем и лазарусом под arm64. Попробую оттуда утянуть и установить.

Повесьте баг, и всё, что найдёте по теме, кидайте туда.

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
На багтрекере уже висит баг https://bugzilla.altlinux.org/show_bug.cgi?id=36023 по fpc. Мне туда писать или лучше новый создать?
Пробовал на выходных подсунуть lazarus и fpc от ubuntu. lazarus запустился, но при запуске выдал ошибку: Пакет EditorMacroScript (сценарии PascalScript) обнаружил проблему и отключился.Пакет не прошёл самотестирование с сообщением: "test_int1(42)(init: 0) [Exp: 42 / Got: 0 / Info: False  / SynTxt: ]"
при попытке скомпилировать любую программу выдает ошибку: Error: Unknown architecture 'aarch64' , что очень странно, ведь я качал пакеты именно для aarch64. Тогда я решил пересобрать паскаль из исходников уже с помощью 64х битного из реп ubuntu и в конце компиляции, уже на этапе линковки получил ошибку:
/usr/bin/ld.default: /usr/lib64/libc_nonshared.a(elf-init.oS): in function `__libc_csu_init':
/usr/src/RPM/BUILD/glibc-2.30-alt1/csu/elf-init.c:83: undefined reference to `_init'
Проверил наличие файла /usr/lib64/libc_nonshared.a - такой файл есть, а  вот в /usr/src/ папки RPM не существует. Пробовал устанавливать разные dev пакеты от glibc, но папка RPM так и не появилась. Уже не представляю куда копать дальше. 

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 098
надо взять src.deb от убунту и посмотреть какие там патчи, которых нет в альте. Но это может быть и в пакетах с fpc.

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
Наконец-то удалось заставить работать fpc и lazarus на alt линуксе для aarch64. Оказалось, что в ubuntu нет директорий lib64, а вместо этого все файлы, которые лежат в alt линукс в lib64 - в ubuntu находятся в lib/aarch64-linux-gnu. Поэтому для того, чтобы заработал lazarus и fpc достаточно в директориях /lib, /usr/lib, /usr/local/lib создать симлинк aarch64-linux-gnu на ../lib64

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 7 644
  • Sunny 273 RUS crew
Наконец-то удалось заставить работать fpc и lazarus на alt линуксе для aarch64.
Не повредит в тот баг дописать, что оно правда принципиально работает. А сама последовательность в итоге? Ставится убунтовский deb через alien и делается дополнительно симлинк?

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
через alien
Про alien я забыл, поэтому вручную распихивал по папкам файлы извлеченные из deb`ов и сделал симлинки на файлы типа "файл-версия"( например симлинк ppca64 на файл ppca64-3.0.4). Но это все не работало до тех пор, пока я не сделал симлинки на lib64. Потом  для пробы этим паскалем и из исходников собрал более новую версию fpc и lazarus. До этого я устанавливал кучу пакетов, безрезультатно, но возможно какие-то из них нужны. Это можно выяснить только, если пвтаться все проделать на чистой системе.
« Последнее редактирование: 06.02.2020 09:29:10 от alxl »

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 098
Ставится убунтовский deb через alien и делается дополнительно симлинк?
В альте alien у меня ни разу не сработал, можно считать что он поломан и его нет.

Оффлайн alxl

  • Завсегдатай
  • *
  • Сообщений: 91
Попробовал установить на чистой системе и записывал действия в блокнот, чтобы не забыть.
1. Создал симлинки с именем aarch64-linux-gnu в директориях /lib,/usr/lib,/usr/local/lib на ../lib64
2. установил gcc,dpkg,alien,rpm-build
3. скачал с реп ubuntu файлы паскаля
   fpc-3.0.4_3.0.4+dfsg-23_all.deb
   fpc_3.0.4+dfsg-23_all.deb
   fp-compiler-3.0.4_3.0.4+dfsg-18_arm64.deb
   fp-compiler-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-compiler_3.0.4+dfsg-23_arm64.deb
   fpc-source-3.0.4_3.0.4+dfsg-23_all.deb
   fpc-source_3.0.4+dfsg-23_all.deb
   fp-ide-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-ide_3.0.4+dfsg-23_all.deb
   fp-units-base-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-base_3.0.4+dfsg-23_arm64.deb
   fp-units-db-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-db_3.0.4+dfsg-23_arm64.deb
   fp-units-fcl-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-fcl_3.0.4+dfsg-23_arm64.deb
   fp-units-fv-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-fv_3.0.4+dfsg-23_arm64.deb
   fp-units-gfx-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-gfx_3.0.4+dfsg-23_arm64.deb
   fp-units-gtk2-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-gtk2_3.0.4+dfsg-23_arm64.deb
   fp-units-math-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-math_3.0.4+dfsg-23_arm64.deb
   fp-units-misc-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-misc_3.0.4+dfsg-23_arm64.deb
   fp-units-multimedia-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-multimedia_3.0.4+dfsg-23_arm64.deb
   fp-units-net-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-net_3.0.4+dfsg-23_arm64.deb
   fp-units-rtl-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-units-rtl_3.0.4+dfsg-23_arm64.deb
   fp-utils-3.0.4_3.0.4+dfsg-23_arm64.deb
   fp-utils_3.0.4+dfsg-23_all.deb
4. попытался сконвертировать в rpm и вот, какую ошибку получил:
   alien -r *.deb
   Warning: alien is not running as root!
   Warning: Ownerships of files in the generated packages will probably be wrong.
   fpc-3.0.4-3.0.4+dfsg-24.noarch.rpm generated
   fpc-3.0.4+dfsg-24.noarch.rpm generated
   Warning: Skipping conversion of scripts in package fp-compiler-3.0.4: postinst postrm prerm
   Warning: Use the --scripts parameter to include the scripts.
   Package build failed. Here's the log of the command
   (cd fp-compiler-3.0.4-3.0.4+dfsg; rpmbuild --buildroot='/home/alexey/Загрузки/fp/fp-compiler-3.0.4-3.0.4+dfsg' -bb --target arm64 'fp-compiler-3.0.4-3.0.4+dfsg-19.spec'):
   Платформы для сборки: arm64
   Сборка для платформы arm64
   Processing files: fp-compiler-3.0.4-3.0.4+dfsg-19
   Finding Provides (using /usr/lib/rpm/find-provides)
   Invalid or unknown architecture: arm64-alt-linux
   Executing: /bin/sh -e /tmp/.private/alexey/rpm-tmp.ZYMDXo
   ошибка: /bin/sh failed
   ошибка: Failed to find Provides
   Ошибки сборки пакетов:
        /bin/sh failed
        Failed to find Provides
   тогда попытался установить с помощью dpkg -i *.deb
   установка прошла успешно, но симлинки на бинарники не создались. Пришлось делать вручную. (уже проще, чем вручную распаковывать все deb`ы и по папкам раскидывать)
5. создал конфиг для fpc командой samplecfg /usr/lib64/fpc/3.0.4 /etc
   после этого запустил fp и для пробы скомпилировал и запустил helloworld
6. скачал из реп ubuntu файлы lazarus и libqt5pas для возможности сборки программ с интерфейсом qt5
   lazarus-2.0_2.0.6+dfsg-3_all.deb
   lazarus_2.0.6+dfsg-3_all.deb
   lazarus-doc-2.0_2.0.6+dfsg-3_all.deb
   lazarus-doc_2.0.6+dfsg-3_all.deb
   lazarus-ide-2.0_2.0.6+dfsg-3_arm64.deb
   lazarus-ide_2.0.6+dfsg-3_all.deb
   lazarus-ide-gtk2-2.0_2.0.6+dfsg-3_arm64.deb
   lazarus-ide-gtk2_2.0.6+dfsg-3_all.deb
   lazarus-ide-qt5-2.0_2.0.6+dfsg-3_arm64.deb
   lazarus-ide-qt5_2.0.6+dfsg-3_all.deb
   lazarus-src-2.0_2.0.6+dfsg-3_all.deb
   lazarus-src_2.0.6+dfsg-3_all.deb
   lcl-2.0_2.0.6+dfsg-3_arm64.deb
   lcl_2.0.6+dfsg-3_all.deb
   lcl-gtk2-2.0_2.0.6+dfsg-3_arm64.deb
   lcl-gtk2_2.0.6+dfsg-3_all.deb
   lcl-nogui-2.0_2.0.6+dfsg-3_arm64.deb
   lcl-nogui_2.0.6+dfsg-3_all.deb
   lcl-qt5-2.0_2.0.6+dfsg-3_arm64.deb
   lcl-qt5_2.0.6+dfsg-3_all.deb
   lcl-units-2.0_2.0.6+dfsg-3_arm64.deb
   lcl-units_2.0.6+dfsg-3_all.deb
   lcl-utils-2.0_2.0.6+dfsg-3_arm64.deb
   lcl-utils_2.0.6+dfsg-3_all.deb
   libqt5pas1_2.6~beta-6_arm64.deb
   libqt5pas-dev_2.6~beta-6_arm64.deb
7. запустил установку командой dpkg -i *.deb
   лазарус установился, во всяком случае появились папки и файлы в нужных местах но при этом выдало ошибки о неудовлетворенных зависимостях
   libatk был установлен но без devel пакетов (доустановил)
   libc6 - не нашел в репах сизифуса, но установил devel пакет к glibc
   libcairo был установлен без devel пакетов (доустановил)
   libgdk-pixbuf был установлен без devel пакетов (доустановил)
   libglib2 - не нашел в репах сизифуса
   libgtk2 был установлен без devel пакетов (доустановил)
   libpango был установлен без devel пакетов (доустановил)
   libx11 был установлен без devel пакетов (доустановил)
   libgcc1 был установлен  devel пакетов не нашел (были libgcc jit devel пакеты. На всякий случай установил их)
   libqt5core уже был установлен devel пакетов нет
   libqt5gui уже был установлен devel пакетов нет
   libqt5network уже был установлен devel пакетов нет
   libqt5printsupport установил
   libqt5widgets уже был установлен devel пакетов нет
   libqt5x11extras уже был установлен devel пакетов нет
   libstdc++6 был установлен без devel пакетов (доустановил)
8. повторно запустил установку и получил те-же ошибки. Видать в скриптах внутри deb проверяется не наличие нужных файлов, а имена установленных пакетов, а они отличаются.
   Но так, как лазарус установился и даже в меню появился - попытался его запустить и получил ошибку файл lazarus не найден.
   Посмотрел  папку с  lazarus`ом, а там вместо lazarus -находится  lazarus-2.0.6. Переименовал его и снова запустил через меню.
   lazarus выдал сообщение, что нет отладчика gdb
9. установил gdb и снова запустил lazarus
   при первом запуске получил ошибку  Пакет EditorMacroScript (сценарии PascalScript) обнаружил проблему и отключился.Пакет не прошёл самотестирование с сообщением: "test_int1(42)(init: 0) [Exp: 42 / Got: 0 / Info: False  / SynTxt: ]"
   При последующих запусках ошибка не возникает, до тех пор, пока я не удалю конфиги lazarus из домашней директории.
   Не знаю, на что влияет эта ошибка, но программы компилируются и запускаются. Что примечательно, если установить только паскаль, а lazarus собрать из исходников, то такая ошибка вообще не появляется.
   

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 102
    • Домашняя страница
    • Email
Потому что Lazarus не бутстрапится. В спеке fpc должны быть правила разворачивания из бутстрапа.
Андрей Черепанов (cas@)