make buildworld auf Raspberry Pi geht nicht

Krull

Well-Known Member
Hallo,

ich würde gerne FreeBSD 11.0-CURRENT, das auf einem Raspberry Pi 2 läuft aktualisieren. Ich probiere es schon eine ganze Weile mit 'make buildworld', aber es will einfach nicht klappen. Ich halte mich dabei an die offizielle Doku: https://www.freebsd.org/doc/handbook/makeworld.html . Nach längerer Zeit bricht die Kompilation aber jedes Mal ab:

Code:
c++: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
c++: note: diagnostic msg: /tmp/DependencyAnalysis-cf9c8b.cpp
c++: note: diagnostic msg: /tmp/DependencyAnalysis-cf9c8b.sh
c++: note: diagnostic msg:

********************
*** Error code 254

Stop.
bmake[4]: stopped in /usr/src/lib/clang/libllvmobjcarcopts
*** Error code 1

Stop.
bmake[3]: stopped in /usr/src/lib/clang
*** Error code 1

Stop.
bmake[2]: stopped in /usr/src
*** Error code 1

Stop.
bmake[1]: stopped in /usr/src
*** Error code 1

Stop.

make: stopped in /usr/src

Der Fehlercode ist immer derselbe, die angegebenen Dateien aber fast immer andere. Vor dem make bringe ich die Quellen mit 'svn up' jedes Mal auf den neusten Stand. Und auf der SD-Karte sollte auch noch genug Platz sein, ca. 1,5 GB.

Warum zum Kuckuck klappt das nicht? :-/
 
Der Fehlercode ist immer derselbe, die angegebenen Dateien aber fast immer andere. Vor dem make bringe ich die Quellen mit 'svn up' jedes Mal auf den neusten Stand. Und auf der SD-Karte sollte auch noch genug Platz sein, ca. 1,5 GB.

Code:
> du -hd 0 /usr/obj
5.2G    /usr/obj/

Nicht genug Platz.

Ich würde das System auch nicht auf einem Pi bauen. Auf einem anderen System bauen und auf den Pi installieren ist deutlich weniger schmerzhaft.
 
Ahoi!

Ich hatte ähnliche Probleme und habe mich schlussendlich für einen Crossinstall von einem AMD64 aus entschieden. Das RasPi ist einfach nicht für ein "make world" gedacht, sonst wäre es wesentlich schneller.

Ich hatte Crochet[1] verwendet. Crochet erstellt Dir nicht nur die komplette Toolchain, die du für das Crosscompiling brauchst, sondern auch eine komplette World und auf dieser einen Kernel. Und ganz am Ende ein funktionierendes Image, dass Du nach einer Datensicherung auf Dein RasPi-Bootmedium übertragen könntest.

Wenn Du das make installworld selbst durchführen willst, kannst Du das Ergebnis des Crochet-buildworld allemal via NFS mounten.



[1]: https://github.com/freebsd/crochet
 
Tja, der Hinweis auf /var/log/messages war natürlich sinnvoll. Da beschwert sich der Kernel nämlich über zu wenig swap. Und tatsächlich war überhaupt kein swap eingerichtet, möglicherweise um nicht unnötig viel auf die SD-Karte zu schreiben. Das war mir vorher gar nicht bewusst. Jetzt habe ich 500 MB swap spendiert. Er tritt nun zwar immer noch ein Fehler auf, der ist aber immerhin reproduzierbar. Der Abbruch erfolgt jetzt immer bei derselben Datei, nämlich bei crt1.c:

Code:
/usr/lib/crt1.o: In function `__start':
/usr/src/lib/csu/arm/crt1.c:(.text+0xb4): relocation truncated to fit: R_ARM_CALL against symbol `atexit' defined in .text section in /usr/lib/libc.a(atexit.o)
/usr/src/lib/csu/arm/crt1.c:(.text+0xbc): relocation truncated to fit: R_ARM_CALL against symbol `_init_tls' defined in .text section in /usr/lib/libc.a(tls.o)
/usr/src/lib/csu/arm/crt1.c:(.text+0xcc): relocation truncated to fit: R_ARM_CALL against symbol `atexit' defined in .text section in /usr/lib/libc.a(atexit.o)
/usr/src/lib/csu/arm/crt1.c:(.text+0x174): relocation truncated to fit: R_ARM_CALL against symbol `exit' defined in .text section in /usr/lib/libc.a(exit.o)
/usr/lib/crt1.o: In function `finalizer':
/usr/src/lib/csu/arm/crt1.c:(.text+0x1ec): relocation truncated to fit: R_ARM_JUMP24 against symbol `_fini' defined in .fini section in /usr/lib/crti.o
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
bmake[4]: stopped in /usr/src/usr.bin/clang/clang
*** Error code 1

Stop.
bmake[3]: stopped in /usr/src/usr.bin/clang
*** Error code 1

Stop.
bmake[2]: stopped in /usr/src
*** Error code 1

Stop.
bmake[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src

Hierzu finden sich in /var/log/messages aber leider keine Meldungen mehr.

Dass das Gerät zu warm wird denke ich eher nicht. Wenn ich die Platine anfasse, fühlt sie sich höchstens handwarm an. Laut sysctl jedenfalls herrschen in der CPU nie mehr als ~42 C.

Das Dateisystem habe ich zwischenzeitlich vergrößert. Wenn make abbricht, sind noch 2 GB frei und in /usr/obj liegen gerade mal 900 MB Daten rum. Daran dürfte es wohl auch nicht liegen.

Mit Crosskompilationen habe ich bis jetzt noch nicht auseinandergesetzt. Aber eigentlich habe ich kein Problem damit, dass das Bauen auf dem Ding etwas dauert. Wenn make 2 Wochen dafür braucht wäre das meinetwegen in Ordnung. Hauptsache es wird irgendwann mal fertig ;-)
 
Die Einstellung gefällt mir, ich bin von meinem Tüfteleien auch schwer zu abzubringen :)

Wenn es eh noch zwei Wochen oder mehr Zeit hat, dann würde ich sagen, warte eben noch eine Woche und mach immermal ein Sourceupdate. Wenn es nach einer Woche immernoch nicht geht, dann reporte das Problem nach freebsd-stable, wenn es dann noch besteht. Vor wenigen Stunden wurde die RELEASE-reife des des 11.0-Branches bestätigt [1], und damit wäre 11 eben nicht mehr "CURRENT".

Welche Sourcen verwendest Du denn für's bauen und wie ziehst Du die Dir lokal? Für SVN solltest du auf base/releng/11.0 umstellen.[2]

Grüßße
wo0x

[1] https://www.freebsd.org/releases/11.0R/schedule.html
[2] https://www.freebsd.org/releng/
 
Die Quellen hole ich mir von /base/head. Ja, in ein paar Tagen gibt's endlich 11.0-Release, soweit ich weiß auch mit Binärpaketen für arm :-)
Für den Pi würde ich die dann auch verwenden. Kann man von CURRENT direkt darauf umstellen, sodass ich gleich freebsd-update benutzen kann? Oder müsste ich erstmal das 11.0-RELEASE aus den Quellen bauen?
 
Soweit ich das sehe wird es zwar Binärpakete geben, aber eben kein freebsd-update. Man berichtige mich, so ich falsch liege.
 
Ah, das ist ja lustig. Dann würde sich die Siutation quasi umdrehen. :-) Auf meinem Raspi mit CURRENT ist freebsd-update schon drauf, nur findet es auf den Servern leider keine passenden Pakete.
 
Ah, das ist ja lustig. Dann würde sich die Siutation quasi umdrehen. :-) Auf meinem Raspi mit CURRENT ist freebsd-update schon drauf, nur findet es auf den Servern leider keine passenden Pakete.

Ja das meinte ich. Es werden afaik keine Binärupdates zur Verfügung gestellt. Das Programm freebsd-update gibt es aber.
 
Zurück
Oben