bmstu-iu9 / refal-5-lambda

Компилятор Рефала-5λ
https://bmstu-iu9.github.io/refal-5-lambda
Other
79 stars 35 forks source link

Реализовать поддержку GitHub Actions #323

Closed Mazdaywik closed 3 years ago

Mazdaywik commented 4 years ago

Нужно настроить GitHub Actions, чтобы они выполнялись для ветки master и запросов на слияние. Детали:

Для конфигурирования компилятора нужно будет написать конфигурационные скрипты c-plus-plus.conf.*, которые будут использоваться при сборке. Возможное решение — положить их в .github/workflows и копировать оттуда скриптом .github/workflows/*.yml.

Таким образом, задачи:

Mazdaywik commented 3 years ago
  • [x] Разобраться, как вызывать компилятор Visual Studio. И вообще, разобраться как конфигурировать и использовать GitHub Actions.

Разобрался немного, создал репозиторий и в нём побаловался:

https://github.com/Mazdaywik/play-with-github-actions

Mazdaywik commented 3 years ago

Проблема

Обнаружилась проблема при сборке на MinGW как на POSIX: там нет libdl.a:

Mazdaywik@Mazdaywik-NetB7 MINGW32 ~/refal-5-lambda
$ ./bootstrap.sh --no-tests
Submodule 'distrib' (https://github.com/bmstu-iu9/simple-refal-distrib) registered for path 'distrib'
Cloning into '/home/Mazdaywik/refal-5-lambda/distrib'...
Подмодуль по пути «distrib»: забрано состояние «b4424c2cce7315320afc42e9b06d31f4422c909d»
Prepare config...
Prepare stable version (distrib)...
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -ldl
collect2.exe: error: ld returned 1 exit status

В то же время на Linux, macOS и Cygwin всё собирается нормально.

Проблема актуальна, т.к. на серверах сборки есть MinGW64 и имеет смысл на них тестировать.

Ошибка была внесена коммитом 9e1549edd95d0b0497d201f68619b6f4b23c7a83 в рамках задачи #170, после чего не была протестирована сборка на MinGW как на POSIX (медленная она жутко, поэтому я и забил).

Решение

Предлагается устанавливать переменную среды $LIBDL, которая содержит -ldl по умолчанию, но переустанавливается в пустоту для MinGW. Для этого в c-plus-plus.conf.sh нужно сверять unameMINGW.

Mazdaywik commented 3 years ago

Сделано, как и предполагалось. Всё работает.