Невозможно собрать Swift на FreeBSD - ошибка REPL

479
Brandon Bradley

Я пытаюсь установить Swift 3 на FreeBSD 10.2, используя официальный скрипт сборки, но не могу этого сделать.

Я получаю следующую ошибку:

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 

Это текст, предшествующий сообщению об ошибке:

/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", 

Я проверил открытые билеты в Jinja, Github и в Списке рассылки Swift Users, но все безрезультатно. у кого-нибудь есть решение?

1

1 ответ на вопрос

2
Roland Smith

Вы строите из вилки, а не из репо Apple.

Посмотрите на содержание в 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__ 

Editline во FreeBSD делает имеет широкие точки входа характера. Таким образом, вы должны включить это.

+ Изменить

#if defined(__APPLE__) 

в

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

как в репо Apple . Это должно исправить одну проблему компиляции. Но может быть намного больше.

Возможно, вы захотите попробовать создать официальный репозиторий, хотя в нем FreeBSD не указана как поддерживаемая ОС. Используемая вами вилка не изменялась почти год.

Коллекция портов FreeBSD содержит swift 2.2.1. Если вам это не нужно swift 3, я бы посоветовал вам использовать это.