Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 06 Mär 2012, 11:37 
Offline
Schüler

Registriert: 11 Okt 2010, 17:54
Beiträge: 36
Hallo,
ich hab vor eine Ruby-Extension zu schreiben, aber leider scheitere ich schon dabei den ruby.h Header zu finden! Irgendwo muss es den doch als Download geben, oder?
Das Problem ist vielleicht auch, dass ich Ruby nicht aus dem Source installiert habe, sondern aus meinen Packetquellen (Arch Linux)... wer weis.
Vielleicht kann mir jemand helfen!

Grüße,
musicmatze


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 12:04 
Offline
Hacker
Benutzeravatar

Registriert: 08 Mai 2007, 20:03
Beiträge: 465
Wohnort: Köln
Hallo musicmatze,
musicmatze hat geschrieben:
ich hab vor eine Ruby-Extension zu schreiben, aber leider scheitere ich schon dabei den ruby.h Header zu finden! Irgendwo muss es den doch als Download geben, oder?

ich hoffe mal, hier:
ftp://ftp.ruby-lang.org/pub/ruby/

Viele Grüße
klausb


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 14:09 
Offline
Schüler

Registriert: 11 Okt 2010, 17:54
Beiträge: 36
Naja also da ist halt Ruby als Source. in include/ würde ein ruby.h liegen, in include/ruby/ liegt noch eines, welches wiederrum andere Header einbindet...

geht das nicht irgendwie einfacher? -.-'


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 16:06 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
die paketquellen müssten sowas wie ein dev paket haben ... dort sind die header drin die du brauchst


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 17:03 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1411
Wohnort: NRW → UN
Hanmac hat geschrieben:
die paketquellen müssten sowas wie ein dev paket haben ... dort sind die header drin die du brauchst
Die alberne Trennung von Binary und Sourcecode gibt es auf Arch Linux nicht. Das Paket "ruby" enthält alles.

musicmatze hat geschrieben:
Das Problem ist vielleicht auch, dass ich Ruby nicht aus dem Source installiert habe, sondern aus meinen Packetquellen (Arch Linux)... wer weis.
Es ist da: $ pacman -Ql ruby | grep ruby.h
ruby /usr/include/ruby-1.9.1/ruby.h
ruby /usr/include/ruby-1.9.1/ruby/ruby.h

In einen C-Extension-Header musst du es als #include einbinden, mehr nicht. Was ist denn die genaue Fehlermeldung?

Valete,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Mein Blog | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: BF3A 614B D62B A4A0 C292 141C B875 5CB1 C592 A85A

Helft beim OpenRubyRMK, einem freien Programm zum erstellen von RPGs! (→ GitHub-Projekt)


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 19:19 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
ich find die trennung jetzt nicht soo schlimm...
ich mein:
*binary
*libs
*header

zum bauen brauchst du nicht die binary, zum ausführen brauchst du nicht die header ...
ich mein das ist doch noch logisch oder?


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 19:59 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1411
Wohnort: NRW → UN
Hanmac hat geschrieben:
ich mein das ist doch noch logisch oder?
Was Debian mit Software macht, ist einfach nur unwürdig. Ruby selbst ist das beste Beispiel. Hast du mal gezählt in wie viele Einzelteile die das aufgeschnippelt haben? Da kann doch von "Ruby als Software" nicht mehr die Rede sein.
Speziell zur Trennung in src/lib/doc (das meintest du doch, oder? Sources werden ja nicht ohne Header verteilt, das wäre ja völlig sinnlos): Wenn ich mir eine Software installieren will, dann will ich als Entwickler die ganze Software. Das schließt den Quellcode und die Doku mit ein. Es macht für mich nur für wirklich große Software Sinn (z.B. Boost, das wird sogar von Arch Linux nur gespalten angeboten), das aufzuteilen, denn sonst ist die Spaltung mehr Arbeit als sie Speicherplatz erspart, was ja wohl der Hauptgrund für die Spaltung ist. Dieses Argument ist angesichts heutiger Festplattenkapazitäten und Datenübertragungsraten hinfällig. Und wie viele neue Nutzer in der Entwicklung schon frustriert waren, weil sie dachten, sie hätten die notwendigen Abhängigkeiten installiert, mag ich gar nicht aufzählen (der #ruby-IRC-Channel auf Freenode wird regelmäßig damit konfrontiert).

Hanmac hat geschrieben:
zum bauen brauchst du nicht die binary, zum ausführen brauchst du nicht die header ...
Da widersprichst du dir selbst, wenn du dir mal die Paketabhängigkeiten anschaust. Probier mal, nur libyaml-dev unter Ubuntu zu installieren, ohne libyaml zu installieren. Wenn du nur die Quellen willst, musst du da schon basteln.
Das andere Argument, zum Ausführen brächte ich keine Development-Headers ist vielleicht aus DAU-Sicht zu rechtfertigen, aber für mich als Entwickler ist es ein Graus. Es führt zu unnötiger Komplexität auf meinem System -- insbesondere dann, wenn die Development-Pakete auch noch so dämlich benannt sind, dass man sie gar nicht erst findet.

Die Trennung von Quellcode und Dokumentation ist ebenfalls ziemlich sinnfrei. Wenn ich mir denn schon ein Quellcode-Paket installiere, dann will ich doch auch die zugehörige Dokumentation lesen, oder etwa nicht? Ich will ja nicht raten, wie man eine Software benutzt.

Zusammengefasst: Nein, ich kann die Trennung src/lib/doc ganz und gar nicht leiden. Nur Ärger, für Neulinge, die die Spaltung nicht begreifen, und für Fortgeschrittene, die sich über die unnötige Komplexität ärgern.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Mein Blog | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: BF3A 614B D62B A4A0 C292 141C B875 5CB1 C592 A85A

Helft beim OpenRubyRMK, einem freien Programm zum erstellen von RPGs! (→ GitHub-Projekt)


Nach oben
 Profil  
 
BeitragVerfasst: 06 Mär 2012, 20:18 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
mit binary meinte ich eigendlich im fall von ruby die ruby datei selbst, die braucht man ja nicht direkt zum bauen von C-extendions

die src gibt es bei ruby nicht als paket,und ich finde doc sollte schon extra sein. ich mein nicht jeder braucht die dokumentation mit dabei, es geht ja auch ohne.

PS: du solltest mal wieder bei alpha posten


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2012, 14:39 
Offline
Schüler

Registriert: 11 Okt 2010, 17:54
Beiträge: 36
Quintus hat geschrieben:
Hanmac hat geschrieben:
die paketquellen müssten sowas wie ein dev paket haben ... dort sind die header drin die du brauchst
Die alberne Trennung von Binary und Sourcecode gibt es auf Arch Linux nicht. Das Paket "ruby" enthält alles.

Es ist da: $ pacman -Ql ruby | grep ruby.h
ruby /usr/include/ruby-1.9.1/ruby.h
ruby /usr/include/ruby-1.9.1/ruby/ruby.h

In einen C-Extension-Header musst du es als #include einbinden, mehr nicht. Was ist denn die genaue Fehlermeldung?

Valete,
Quintus


Mein Source sieht jetzt genau so aus:
#include

und die Fehlermeldung ist folgende:
~/dev/xruby (master)$ gcc ext/xruby/xruby.c
ext/xruby/xruby.c:1:18: schwerwiegender Fehler: ruby.h: Datei oder Verzeichnis nicht gefunden
Kompilierung beendet.
~/dev/xruby (master)$ gcc -I/usr/include/ruby-1.9.1/ruby.h ext/xruby/xruby.c
cc1: Warnung: /usr/include/ruby-1.9.1/ruby.h: not a directory [standardmäßig aktiviert]
ext/xruby/xruby.c:1:18: schwerwiegender Fehler: ruby.h: Datei oder Verzeichnis nicht gefunden
Kompilierung beendet.
~/dev/xruby (master)$ gcc -I/usr/include/ruby-1.9.1/ ext/xruby/xruby.c
In file included from /usr/include/ruby-1.9.1/ruby.h:32:0,
from ext/xruby/xruby.c:1:
/usr/include/ruby-1.9.1/ruby/ruby.h:24:25: schwerwiegender Fehler: ruby/config.h: Datei oder Verzeichnis nicht gefunden
Kompilierung beendet.

Irgendwie habe ich die Vermutung, dass ich irgendwas grundlegend falsch verstanden habe...

Edit:
Ich habe inzwischen das Packet "ruby-headers" aus dem Arch User Repo (AUR) installiert - genau diese Fehlermeldungen bekomm ich damit!


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2012, 16:18 
Offline
Metaprogrammierer

Registriert: 03 Feb 2008, 15:36
Beiträge: 624
Wohnort: Kamen, NRW
Die config.h liegt da:
usr/include/ruby-1.9.1/x86_64-linux/ruby/config.h

Den Ordner also auch noch per -I übergeben.

_________________
-


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2012, 16:41 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
vllt macht ihr euch das auch zu schwer ...
nutzt doch einfach mkmf ... das macht die makefile für euch und ihr braucht euch keine gedanken machen


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2012, 18:18 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1411
Wohnort: NRW → UN
Hanmac hat geschrieben:
nutzt doch einfach mkmf ... das macht die makefile für euch und ihr braucht euch keine gedanken machen
Ich wäre jetzt gar nicht darauf gekommen, dass du mkmf nicht benutzt. Aber natürlich, Hanmac hat völlig recht. Gehe den normalen weg über die extconf.rb statt einer Eigenbastlerei. mkmf ist nicht ohne Grund in Rubys stdlib dabei. Was willst du mit der Handbastelei erreichen?

musicmatze hat geschrieben:
Ich habe inzwischen das Packet "ruby-headers" aus dem Arch User Repo (AUR) installiert - genau diese Fehlermeldungen bekomm ich damit!
Bitte wieder entfernen. Wie von mir oben demonstriert, sind alle notwendigen Dateien im ruby-Paket drin. Wenn du mir nicht glaubst, mach mal ein pacman -Ql drauf.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Mein Blog | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: BF3A 614B D62B A4A0 C292 141C B875 5CB1 C592 A85A

Helft beim OpenRubyRMK, einem freien Programm zum erstellen von RPGs! (→ GitHub-Projekt)


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2012, 21:10 
Offline
Schüler

Registriert: 11 Okt 2010, 17:54
Beiträge: 36
Quintus hat geschrieben:
Ich wäre jetzt gar nicht darauf gekommen, dass du mkmf nicht benutzt. Aber natürlich, Hanmac hat völlig recht. Gehe den normalen weg über die extconf.rb statt einer Eigenbastlerei. mkmf ist nicht ohne Grund in Rubys stdlib dabei. Was willst du mit der Handbastelei erreichen?

musicmatze hat geschrieben:
[...]"ruby-headers"[...]
Bitte wieder entfernen. Wie von mir oben demonstriert, sind alle notwendigen Dateien im ruby-Paket drin. Wenn du mir nicht glaubst, mach mal ein pacman -Ql drauf.

Vale,
Quintus


ruby-headers sind wech! Ich hab jetzt ein bisschen mit mkmf rumgespielt. Bis ich drauf gekommen bin, dass die extconf.rb nicht eine Ordnerhierarchie über den Sourcefiles liegen darf, ... schrecklich!
Aber ich denke jetzt kanns los gehen! Vielen Dank hier!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: