1 votes

Impossible de compiler Swift sur FreeBSD - erreur REPL

J'essaie d'installer Swift 3 sur FreeBSD 10.2 en utilisant le programme construction officielle script mais je n'y parviens pas.

Je reçois l'erreur suivante :

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

Il s'agit du texte qui précède immédiatement le message d'erreur :

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

J'ai vérifié les tickets ouverts dans Jinja, Github, et la liste de diffusion des utilisateurs de Swift, mais en vain. Quelqu'un a-t-il une solution ?

2voto

MyCwoissant Points 31

Vous construisez à partir d'un fourchette et non un dépôt Apple.

Regardez le contenu 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__

La ligne d'édition de FreeBSD hace ont les points d'entrée à caractère large. Vous devez donc l'inclure.

Changement

#if defined(__APPLE__)

à

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

tout comme dans le Dépôt Apple . Cela devrait résoudre un problème de compilation. Mais il pourrait y en avoir beaucoup d'autres.

Vous pouvez essayer de compiler le dépôt officiel, bien qu'il ne liste pas FreeBSD comme un OS supporté. Le fork que vous utilisez n'a pas été modifié depuis presque un an.

Le catalogue des ports FreeBSD contient swift 2.2.1 . Si vous n'avez pas spécifiquement besoin swift 3 je vous suggère de l'utiliser à la place.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X