Swift kann nicht unter FreeBSD erstellt werden - REPL-Fehler

545
Brandon Bradley

Ich versuche, Swift 3 unter Verwendung des offiziellen Build-Skripts unter FreeBSD 10.2 zu installieren , kann dies jedoch nicht.

Ich erhalte folgende Fehlermeldung:

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 

Dies ist der Text unmittelbar vor der Fehlermeldung:

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

Ich habe nach offenen Tickets in Jinja, Github und der Swift Users Mailing List gesucht, alles erfolglos. Hat jemand eine Lösung?

1

1 Antwort auf die Frage

2
Roland Smith

Sie bauen aus einer Gabel, nicht aus einem Apple Repo.

Schauen Sie sich den Inhalt von an 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__ 

FreeBSD editline hat die breiten Zeicheneingabepunkte. Sie müssen es also hinzufügen.

Veränderung

#if defined(__APPLE__) 

zu

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

genau wie im Apple Repo . Dies sollte ein Kompilierungsproblem beheben. Es könnte aber noch viel mehr sein.

Sie sollten vielleicht versuchen, das offizielle Repo zu erstellen, obwohl FreeBSD nicht als unterstütztes Betriebssystem aufgeführt wird. Die Gabel, die Sie verwenden, wurde seit fast einem Jahr nicht verändert.

Die FreeBSD-Ports-Sammlung enthält swift 2.2.1. Wenn Sie nicht speziell benötigen swift 3, würde ich vorschlagen, dass Sie stattdessen das verwenden.