Problem beim Kompilieren von Ruby 1.9.3 mit Freetz-Toolchain

Also mit minimalen Änderungen läuft das Freetz Makefile durch:
Code:
--- make/ruby/ruby.mk   (Revision 8878)
+++ make/ruby/ruby.mk   (Arbeitskopie)
@@ -1,7 +1,7 @@
-$(call PKG_INIT_BIN, 1.8.6-p368)
-$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
-$(PKG)_SOURCE_MD5:=508bf1911173ac43e4e6c31d9dc36b8f
-$(PKG)_SITE:=ftp://ftp.ruby-lang.org/pub/ruby/1.8/
+$(call PKG_INIT_BIN, 1.9.3-p194)
+$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.bz2
+$(PKG)_SOURCE_MD5:=2278eff4cfed3cbc0653bc73085caa34
+$(PKG)_SITE:=http://ftp.ruby-lang.org/pub/ruby/1.9
 $(PKG)_BINARY:=$($(PKG)_DIR)/$(pkg)
 $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/$(pkg)
Außerdem habe ich alle Patches gelöscht. Eleganter wäre es gewesen, zu prüfen, was davon noch sinnvoll oder notwendig ist.

Das erstellt Ruby kann man aufrufen mit
Code:
RUBY_DIR=/.../source/target-mipsel_uClibc-0.9.29/ruby-1.9.3-p194
export LD_LIBRARY_PATH=$RUBY_DIR
export RUBYLIB=$RUBY_DIR:$RUBY_DIR/lib

Ein Problem ist noch, dass das Programm nicht beendet wird, man muss das KILL Signal senden. Ich gehe davon aus, dass es sich um ein Thread Problem handelt. Das Ende sieht so aus:
Code:
# strace ./ruby -?
...
wait4(3374, NULL, __WCLONE, NULL)       = 3374
write(6, "\0\343\313*\2\0\0\0\1\0\0\0\220\225\334*\0\0\0\0\0\0\0\0\24\215\302\177\224\201\272*"..., 148) = 148
rt_sigprocmask(SIG_SETMASK, NULL, [RT_0], 16) = 0
rt_sigsuspend([]
 
Hallo Ralf, hallo Oliver,

habt ihr nachvollziehen können, dass make toolchain scheitert, wenn "make binutils and gcc for target" ausgewählt wurde?

Vielen dank.
Gruß
Pfanni
 
Zuletzt bearbeitet:
Meine Annahme ist, dass ich dann gcc und Co auf der Box nutzen kann.

Ich möchte ein Ruby gem installieren, welches bei gem install abbricht und nach einer built Umgebung ruft( s.o. )

Stimmt meine Annahme oder gibt es das auch als "Modul"?

Vg
Pfanni
 
Das was Du installieren willst, ist also nicht ein reines Ruby Programm, sondern enthält auch eine Erweiterung für Ruby?

Die Toolchain für die Box zu erstellen ist eine Möglichkeit, allerdings läuft diese nicht sonderlich schnell, und bei zu wenig Speicher evtl. auch gar nicht.
Die andere Möglichkeit wäre, das entsprechende Ruby MOdul auf dem Host zu erstellen, so wie auch die ganzen anderen Module auf dem Host erstellt werden.

Die Fehlermeldung aus #16 liegt daran, dass ein falscher Wert in der config.cache gespeichert ist. Das einfachste ist, die Datei zu löschen.
 
Zuletzt bearbeitet:
Beziehst du Dich auf das make toolchain- Problem? Meinst Du die Config.in.cache Datei? Die wird beim "make menuconfig" kreiert, oder? Wofür ist die Datei da?

Übrigens bleibt mein dynamisch, manuell kompiliertes Ruby nicht hängen sondern beendet sich stets korrekt.

Habs make toolchain hit gelöschter Config.in.cache nocheinmal gestartet. Es bricht immernoch ab. Hast Du noch eine Idee?

Code:
...
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by /home/christoph/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-wrapper... (cached) no
configure: error: no acceptable ld found in $PATH

ERROR: Build failed.
make: *** [source/target-mipsel_uClibc-0.9.32.1/db-4.8.30/.configured] Fehler 1
 
Zuletzt bearbeitet:
Ich hab dir doch oben schon mal geschrieben, dass das Paket db nichts mit der Toolchain zu tun hat. Ich habe heute Mittag auch schon versucht ein aktuelles Ruby 1.9.3 zu bauen. Dabei hatte ich 2 Probleme:
Code:
1. Ich musste das Host-ruby von 1.8 auf 1.9 updaten
2. Die Funktion encrypt in crypt.c musste auskommentiert werden, da sie schon aus der libcrypt kommt.
Gruß
Oliver
 
Bei mir ist Ruby mit den obigen Änderungen am Makefile durchgelaufen, obwohl auf dem Host noch ruby-1.8.7 ist. Auch sonst waren keine Änderungen nötig.
 
Ich meine die Datei source/target-mips*_uClibc-0.*/config.cache .

Danke Dir!

Ich wundere mich gerade und frage mich, ob ich immer "make toolchain; make libs" eingegeben hatte, als der Build-Prozess dann abgebrochen ist. Denn heute habe ich erst make toolchain aufgerufen, was durchlief und dann make libs, was scheiterte. Mit deinem config.cache Lösch-Trick ging es dann aber weiter.


Ich habe jetzt herausgefunden, dass das gem "eventmachine" meine Fehlermeldung verursacht. Dies möchte offensichtlich ein Paar c-Libraries kompilieren. Mal sehen, ob ich das jetzt mit dem Target-Compiler auf der Box installiert bekomme. Kennt Ihr Euch soweit mit Ruby-gems aus, dass Ihr wisst, wie man ein gem auf einem x86 host für Mips cross-compilen kann? Das wäre in dem bei mir vorliegenden Falle vielleicht das einfachste bzw. eleganteste. Kann man eigentlich beim kompilieren von Ruby direkt eine Reihe weiterer Gems mitkompilieren lassen? Das wäre natürlich auch noch eine nette Variante.

VG,
Pfanni
 
Ich kenne mich mit ruby leider gar nicht aus. Wie kompiliert man denn die zusätzlichen Gems? Ich konnte in dem Makefile von OpenWRT nichts erkennen.

Gruß
Oliver
 
Hi Oliver,

ich weiss auch noch nicht viel.:)

Mit "gem install eventmachine" stösst man die Installation von eventmachine an.
Auf der Fritzbox musste ich vorher ein SWAPFILE auf dem USB Stick anlegen und einbinden. 20 MB hat die Box beim bauen ausgelagert. Das bauen dauert auf der 7270 dann über 3 Stunden. In der Zeit kann man kaum Surfen oder Telefonieren. Die Box ist am Limit.

Vorher musste noch "make" installiert werden und die coreutils für "install". Leider erstellt sich eventmachine ein Makefile, in dem der Pfad zu install fest auf /usr/bin/install eingestellt ist. Dort wird es dann nicht fündig und bricht ab - nach drei Stunden...

Weiss jemand ob man per Env-Variablen oder zusätzlichen gem-Optionen "gem install" hier auf mein selbst gebautes install umlenken kann?
Gibt es eine Möglichkeit, temporär einen symlink in das Read-Only /usr/bin Verzeichnis der Fritzbox zu schreiben?

Viele Grüsse,
Pfanni
 
Du könntest versuchen dein Dateisystem mit mini_fo beschreibbar zu machen. Man kann zwar mit mount -o bind Dateien überschreiben, aber das geht nur, wenn die Datei schon da ist...

Gruß
Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.