Предупреждения при сборке Rakudo в Windows

Я следовал инструкциям по сборке Rakudo здесь. С подобным чтением здесь и здесь, я пытался собрать его в Windows с помощью VS-2019.

Однако при сборке Rakudo в Windows я получаю следующие предупреждения о сборке:

Updating submodules .................................... OK
Configuring native build environment ................... 
    trying to compile a simple C program ............... YES
did not find libzstd; will not use heap snapshot format version 3
OK
...
src\io\syncfile.c(272): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
src\io\syncfile.c(334): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
...
src\io\signals.c(115): warning C4068: unknown pragma
src\io\signals.c(116): warning C4068: unknown pragma
src\io\signals.c(120): warning C4068: unknown pragma
...
src\platform\random.c(132): warning C4113: 'FARPROC' differs in parameter lists from 'CRYPTGENRANDOM'
src\platform\random.c(132): warning C4133: '=': incompatible types - from 'FARPROC' to 'CRYPTGENRANDOM'
src\platform\random.c(130): warning C4113: 'FARPROC' differs in parameter lists from 'CRYPTACQUIRECONTEXTA'
src\platform\random.c(130): warning C4133: 'initializing': incompatible types - from 'FARPROC' to 'CRYPTACQUIRECONTEXTA'
...
src\platform\win32\io.c(27): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
src\platform\win32\io.c(116): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
...
cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-lm'
minilua.c
...
src\jit\x64\emit.c(8): warning C4129: 'j': unrecognized character escape sequence
src\jit\x64\emit.c(8): warning C4129: 'e': unrecognized character escape sequence
srcjitdemit.dasc(4): warning C4068: unknown pragma
srcjitdemit.dasc(5): warning C4068: unknown pragma
srcjitdemit.dasc(7): warning C4068: unknown pragma
srcjitdemit.dasc(8): warning C4068: unknown pragma
src/jit/x64/tiles.dasc(2): warning C4068: unknown pragma
...

В приведенном выше блоке кода отображаются только предупреждения. Полный журнал приведен здесь.

Система, используемая для сборки: Appveyor с VS-2019 в Windows

Конфигурация:

## Appveyor configuration for Rakudo

# Manually build and don't use MSVC's build process so disable it
build: off

platform:
  - x64

install:
  - '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"'
  # install zstd
  - choco install zstandard
  - SET PATH=C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%
  - perl Configure.pl --gen-moar --gen-nqp --backends=moar --prefix=%APPVEYOR_BUILD_FOLDER%\raku
  - nmake 
  - nmake install

environment:
  matrix:
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

branches:
  only:
    - master
  1. Хотя я установил zstandard(https://github.com/facebook/zstd) из шоколадного, почему я получаю .. did not find libzstd; will not use heap snapshot format version 3
  2. Являются ли эти предупреждения (кроме zstd) во время сборки безобидными, которые я могу безопасно игнорировать? Или мне стоит волноваться?
  3. Есть ли способ избавиться от этих предупреждений?

person Suman Khanal    schedule 01.06.2020    source источник
comment
Я предлагаю вам просмотреть результаты гугл не нашел libzstd; не будет использовать формат снимков кучи версии 3. Ничего полезного не увидел. Возможно, никого в сообществе Раку это не волнует. Я добавил тег zstandard, чтобы увидеть, могут ли люди, не принадлежащие к Раку, помочь. Я также вижу много предупреждений, оставленных в этих сборках. Я подозреваю, что вам придется исследовать/понимать/спрашивать/подавлять (если сможете) каждое предупреждение в отдельности. Удачи.   -  person raiph    schedule 01.06.2020


Ответы (1)


Я бросил быстрый взгляд:

Предупреждение о conversion from 'int' to 'HANDLE' of greater size, вероятно, связано с отсутствием #include <io.h>, что приводит к тому, что компилятор предполагает, что _get_osfhandle() возвращает int вместо intptr_t. Потенциально это ошибка (хотя на практике она может не проявляться в зависимости от диапазона значений, которые окна фактически возвращают из этой функции).

Предупреждения о 'FARPROC' differs in parameter lists связаны с отсутствием приведения из общего указателя, возвращаемого GetProcAddress(), к определенному типу. Однако, поскольку все типы указателей имеют совместимое представление, ничего страшного не произойдет, если их игнорировать.

Предупреждения о прагмах также можно игнорировать, и их можно подавить с помощью разумного использования #ifdef __GNUC__.

Предупреждения о unrecognized character escape sequence связаны с неправильным экранированием обратной косой черты в путях в сгенерированном коде. Должно быть исправлено, но также может быть проигнорировано.

Что касается zstd, сценарий конфигурации использует pkg-config для поиска библиотеки, поэтому Windows не поддерживает. Кто-то должен это исправить. Однако я считаю, что это повлияет только на профилировщик, а не на обычную работу MoarVM.

Я не исследовал материал Command line warning, хотя похоже, что что-то думает, что оно компилируется в системе *nix и, следовательно, передает неверные флаги. Должно быть исправлено, но может не сломать сборку.

person Christoph    schedule 01.06.2020