Closed Mazdaywik closed 3 years ago
- [x] Разобраться, как вызывать компилятор Visual Studio. И вообще, разобраться как конфигурировать и использовать GitHub Actions.
Разобрался немного, создал репозиторий и в нём побаловался:
Обнаружилась проблема при сборке на 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
нужно сверять uname
c MINGW
.
Сделано, как и предполагалось. Всё работает.
Нужно настроить GitHub Actions, чтобы они выполнялись для ветки
master
и запросов на слияние. Детали:bootstrap.bat
илиbootstrap.sh
в зависимости от системы.Для конфигурирования компилятора нужно будет написать конфигурационные скрипты
c-plus-plus.conf.*
, которые будут использоваться при сборке. Возможное решение — положить их в.github/workflows
и копировать оттуда скриптом.github/workflows/*.yml
.Таким образом, задачи: