Использование Haskell с Bazel - PullRequest
0 голосов
/ 09 января 2020

Windows 10 (x64)

Я хочу использовать Haskell с Bazel (2.0.0). Я сделал на своей машине Windows 10 (x64) следующие шаги:

git clone https://github.com/tweag/rules_haskell/
cd rules_haskell
cd tutorial
bazel build //...

, что приводит к следующему выводу:

INFO: Call stack for the definition of repository 'rules_haskell_ghc_windows_amd64' which is a _ghc_bindist (rule definition at C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl:289:16):
 - C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl:409:5
 - C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl:445:9
 - C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/toolchain.bzl:320:5
 - D:/dev/rules_haskell/tutorial/WORKSPACE:22:1
ERROR: An error occurred during the fetch of repository 'rules_haskell_ghc_windows_amd64':
   Traceback (most recent call last):
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 194
                _find_python(ctx)
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 461, in _find_python
                repository_ctx.execute(<1 more arguments>)
Argument 0 of execute is neither a path nor a string.
ERROR: D:/dev/rules_haskell/tutorial/lib/BUILD.bazel:6:1: //lib:booleans depends on @rules_haskell_ghc_windows_amd64//:toolchain-impl in repository @rules_haskell_ghc_windows_amd64 which failed to fetch. no such package '@rules_haskell_ghc_windows_amd64//': Traceback (most recent call last):
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 194
                _find_python(ctx)
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 461, in _find_python
                repository_ctx.execute(<1 more arguments>)
Argument 0 of execute is neither a path nor a string.
ERROR: Analysis of target '//lib:booleans' failed; build aborted: no such package '@rules_haskell_ghc_windows_amd64//': Traceback (most recent call last):
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 194
                _find_python(ctx)
        File "C:/users/verte/_bazel_verte/idi6e53f/external/rules_haskell/haskell/ghc_bindist.bzl", line 461, in _find_python
                repository_ctx.execute(<1 more arguments>)
Argument 0 of execute is neither a path nor a string.
INFO: Elapsed time: 11.900s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (27 packages loaded, 44 targets configured)

Я установил msys2 и python3 (Везион 3.7.6) как описано здесь .

Кажется, что ошибка происходит в _find_python. Моя переменная пути ($Env:Path) содержит путь python.exe.

У кого-нибудь получилось построить учебник по Windows 10?

Кажется, что это azure -pipeline может строить Haskell правила для Windows:

Кажется, что для этого нужно выполнить два шага:

Шаг 1 (Powershell):

Write-Host "Enable long path behavior"
# See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file#maximum-path-length-limitation
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 displayName: "Enable da long paths"

Шаг 2 (bash):

# Remove 'C:\Program Files ' (ending on space) from PATH.
# See https://github.com/bazelbuild/bazel/issues/10481
export PATH="$(sed 's,:/c/Program Files $,,' <<<"$PATH")"
echo "PATH='$PATH'"

Я не знаю, как это можно воспроизвести на (локальной) Windows 10 машине

Ubuntu 18.04

git clone https://github.com/tweag/rules_haskell/
cd rules_haskell
cd tutorial
bazel build //...

Что приводит к следующему выводу:

INFO: Analyzed 3 targets (0 packages loaded, 0 targets configured).
INFO: Found 3 targets...
ERROR: /home/newton/dev/rules_haskell/tutorial/lib/BUILD.bazel:6:1: HaskellLinkDynamicLibrary lib/libHSlibZSbooleans-ghc8.6.5.so failed (Exit 1) ghc_wrapper failed: error executing command bazel-out/host/bin/external/rules_haskell/haskell/ghc_wrapper bazel-out/k8-fastbuild/bin/lib/compile_flags_booleans_HaskellLinkDynamicLibrary ... (remaining 1 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
/usr/bin/ld.gold: error: cannot find -lgmp
collect2: error: ld returned 1 exit status
`cc_wrapper-python' failed in phase `Linker'. (Exit code: 1)
INFO: Elapsed time: 0.554s, Critical Path: 0.37s
INFO: 0 processes.
FAILED: Build did NOT complete successfully

Сборка учебника с использованием Ubuntu (Bazel версии 2.0.0) вместо Windows делает тоже не работает для меня. Есть подсказки?

1 Ответ

1 голос
/ 09 января 2020

Решение для Ubuntu 18.04

Проблемы со сборкой в ​​Ubuntu были решены путем установки следующих пакетов:

sudo apt-get install build-essential libffi-dev libgmp-dev libtinfo5 libtinfo-dev python python3

Windows 10 x64

Все еще не знаю

...