Não é possível construir o Swift no FreeBSD - erro REPL

1

Eu estou tentando instalar o Swift 3 no FreeBSD 10.2 usando o script de compilação oficial , mas não posso fazê-lo.

Estou recebendo o seguinte erro:

fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

ninja: build stopped: subcommand failed.

utils/build-script: fatal error: command terminated with a non-zero exit status 1, aborting

Este é o texto imediatamente anterior à mensagem de erro:

/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:244:3: error: unknown type name 'HistoryW'; did you mean 'History'?
  HistoryW *h;
  ^~~~~~~~
  History
/usr/include/histedit.h:169:24: note: 'History' declared here
typedef struct history History;
                       ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:491:30: error: unknown type name 'LineInfoW'; did you mean 'LineInfo'?
  bool isAtStartOfLine(const LineInfoW *line) {
                             ^~~~~~~~~
                             LineInfo
/usr/include/histedit.h:64:3: note: 'LineInfo' declared here
} LineInfo;
  ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:501:33: error: unknown type name 'LineInfoW'; did you mean 'LineInfo'?
  bool lineLooksLikeLabel(const LineInfoW *line) {
                                ^~~~~~~~~
                                LineInfo
/usr/include/histedit.h:64:3: note: 'LineInfo' declared here
} LineInfo;
  ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:520:34: error: unknown type name 'LineInfoW'; did you mean 'LineInfo'?
  bool lineLooksLikeSetter(const LineInfoW *line) {
                                 ^~~~~~~~~
                                 LineInfo
/usr/include/histedit.h:64:3: note: 'LineInfo' declared here
} LineInfo;
  ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:548:32: error: unknown type name 'LineInfoW'; did you mean 'LineInfo'?
  bool lineLooksLikeCase(const LineInfoW *line) {
                               ^~~~~~~~~
                               LineInfo
/usr/include/histedit.h:64:3: note: 'LineInfo' declared here
} LineInfo;
  ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:277:9: error: use of undeclared identifier 'history_winit'; did you mean 'history_init'?
    h = history_winit();
        ^~~~~~~~~~~~~
        history_init
/usr/include/histedit.h:179:11: note: 'history_init' declared here
History *       history_init(void);
                ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:279:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_EDITOR, L"emacs");
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:280:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_PROMPT_ESC, PromptFn, LITERAL_MODE_CHAR);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:281:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_CLIENTDATA, (void*)this);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:282:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_HIST, history, h);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:283:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_SIGNAL, 1);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:284:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_GETCFN, GetCharFn);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:287:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_ADDFN, L"swift-close-brace", L"Reduce {} indentation level",
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:289:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_BIND, L"}", L"swift-close-brace", nullptr);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:291:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_ADDFN, L"swift-colon", L"Reduce label indentation level",
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:293:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_BIND, L":", L"swift-colon", nullptr);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:296:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_ADDFN, L"swift-indent-or-complete",
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:299:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_BIND, L"\t", L"swift-indent-or-complete", nullptr);
    ^
/usr/local/swiftlang/swift/lib/Immediate/REPL.cpp:301:5: error: use of undeclared identifier 'el_wset'
    el_wset(e, EL_ADDFN, L"swift-complete",

Eu verifiquei os tickets abertos em Jinja, Github e a lista de discussão de usuários do Swift, tudo sem sucesso. Alguém tem uma solução?

    
por Brandon Bradley 27.10.2016 / 05:08

1 resposta

2

Você está criando a partir de um fork , não de um repositório da Apple.

Veja o conteúdo de REPL.cpp :

#if defined(__APPLE__)
// FIXME: Support REPL on non-Apple platforms. Ubuntu 14.10's editline does not
// include the wide character entry points needed by the REPL yet.
#include <histedit.h>
#endif // __APPLE__

A linha de edição do FreeBSD tem os pontos de entrada de caracteres largos. Então você tem que incluir isso.

Alterar

#if defined(__APPLE__)

para

#if defined(__APPLE__) || defined(__FreeBSD__)

como no repositório da Apple . Isso deve corrigir um problema de compilação. Mas pode haver muito mais.

Você pode querer tentar construir o repositório oficial, embora ele não liste o FreeBSD como um sistema operacional suportado. O garfo que você está usando não foi modificado em quase um ano.

A coleção de ports do FreeBSD contém swift 2.2.1 . Se você não precisa especificamente de swift 3 , sugiro que use isso.

    
por 20.11.2016 / 12:34