ktorrent-2.0rc1: MSG_NOSIGNAL

Fusselbär

Makefile Voyeur
ktorrent-2.0rc1: MSG_NOSIGNAL (Solved)

Hallo,

habe da was für mich etwas zu vertracktes. ;'(

Versuche ktorrent-2.0rc1 ( http://ktorrent.org )
auf FreeBSD 5.5-STABLE i386 zu bauen.

Mit ktorrent-2.0beta1 klappte das ganz einfach,
aber nun ist neuer Code hinzugekomen: libktorrent/net
Anscheinend haben dort Anweisungen Einzug gehalten,
die auf Linux funktionieren, jedoch auf FreeBSD nicht.

Der Compiler bricht immer an folgender Stelle ab:
(sind nur die letzten Zeilen vom Zeitpunkt an,
ab dem der Compiler in das Verzeichnis mit dem neuem net Code für ktorrent wechselt
)
Code:
gmake[3]: Entering directory `/usr/baustelle/ktorrent-port-test-2.0rc1/work/ktorrent-2.0rc1/libktorrent/net'
source='socket.cpp' object='socket.lo' libtool=yes \
        depfile='.deps/socket.Plo' tmpdepfile='.deps/socket.TPlo' \
        depmode=gcc3 /bin/sh ../../admin/depcomp \
        /bin/sh /usr/local/bin/libtool --silent --mode=compile --tag=CXX c++ -DHAVE_CONFIG_H -I. -I. -I../.. -I./.. -I./. -I/usr/local/include -I/usr/X11R6/include  -I/usr/local/include  -D_THREAD_SAFE -pthread -DQT_THREAD_SUPPORT   -I/usr/local/include -I/usr/local/include  -I/usr/X11R6/include -D_GETOPT_H -D_THREAD_SAFE   -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -O2 -pipe -march=athlon-xp -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -fexceptions   -c -o socket.lo `test -f 'socket.cpp' || echo './'`socket.cpp
socket.cpp: In member function `int net::Socket::send(const bt::Uint8*, int)':
socket.cpp:140: error: `MSG_NOSIGNAL' undeclared (first use this function)
socket.cpp:140: error: (Each undeclared identifier is reported only once for each function it appears in.)
gmake[3]: *** [socket.lo] Error 1
gmake[3]: Leaving directory `/usr/baustelle/ktorrent-port-test-2.0rc1/work/ktorrent-2.0rc1/libktorrent/net'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/usr/baustelle/ktorrent-port-test-2.0rc1/work/ktorrent-2.0rc1/libktorrent'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/baustelle/ktorrent-port-test-2.0rc1/work/ktorrent-2.0rc1'
gmake: *** [all] Error 2
*** Error code 2

Stop in /usr/baustelle/ktorrent-port-test-2.0rc1.

Nach Suchmaschinen benutzen vermute ich nun folgendes:
MSG_NOSIGNAL wird auf FreeBSD so nicht benutzt,
bzw. gibt es so auf FreeBSD nicht.

Anscheinend ist bei anderen Anwendungen
so etwas ähnliches auch schon mal passiert z.B.:
- knode compilation problem: Post vom 10.09.2000
- kern/76426: Linux ABI doesn't support MSG_NOSIGNAL: 18.01.2005


Wie bringe ich nun socket.cpp in Zeile 140 bei,
antatt MSG_NOSIGNAL
das passende Äquivalent von FreeBSD zu benutzen?

Ich habe noch nie einen Patch geschrieben
und werde mich vermutlich sogar mit einem Diff schon blöde anstellen. :ugly:
Aber bei anderen Ports habe ich schon gesehen,
wie solche Dateien prinzipiell aussehen,
mit einem "-" vor der Zeile, die für ungültig erklärt wird,
und einem "+" für die Zeile, die fortan genutzt werden soll.


Gruß, Fusselbär
 
Last edited:
Fusselbär said:
Ich habe noch nie einen Patch geschrieben
und werde mich vermutlich sogar mit einem Diff schon blöde anstellen. :ugly:
Ich auch nicht. :D Speichere die Originalversion der Datei als $filename.orig ab, und aendere dann an $filename nach Lust und Laune :) Das scheint mir der (Quasi-)Standard zu sein.

Fusselbär said:
Aber bei anderen Ports habe ich schon gesehen,
wie solche Dateien prinzipiell aussehen,
mit einem "-" vor der Zeile, die für ungültig erklärt wird,
und einem "+" für die Zeile, die fortan genutzt werden soll.
Was du willst ist diff -u ;)

Das bekommst du schon hin :)

HTH,
Philipp
 
Hallo,

habe gerade was gefunden,
womit ktorrent-2.0rc1 durchcompiliert! :D
Ist bestimmt ganz eklig,
habe ich aber einfach abgekupfert,
und zwar fand ich das hier:
http://forum.amule.org/print.php?threadid=132&page=1&sid=a70dc73dbef5f2e58395dbb306cf8d1e

Da ging es ja auch um einen Socket Header,
also habe ich einfach bei ktorrent-2.0rc1
in ktorrent-2.0rc1/libktorrent/net erst mal händisch,
nachdem der Compiler da hängengeblieben ist,
folgendes in socket.h eingesetzt:
Code:
#define MSG_NOSIGNAL 0x4000
Ganz oben bevor irgendetwas anderes definiert wird.
Und wie immer:
kein Plan von gar nix, aber hat dann weitercompilert. :ugly:

Weil ich gespannt wie ein Flitzebogen bin,
habe ich einfach mal das zusammengeschusterte binary installiert,
einfach feste drüber und drauf. :ugly:
Das Towabohaohu muß ich dann wohl später mal aufräumen
und noch eine ordentliche pkg-plist machen.

Aber ktorrent-2.0rc1 läuft, jetzt brauche ich mal ganz schnell
und dringend noch irgendeinen torrent zum testen.
Muß gleich weg, hier gibts ein großes Feuerwerk,
( http://www.koelner-lichter.de )
deswegen ein bißchen hektisch.
Ich will das Ding aber noch mal ganz kurz schnell rennen sehen! :)


Gruß, Fusselbär

Update:
Hey,
ktorrent-2.0rc1 rennt mit mehr als 400 Sachen! :D (420 KB/s)
Btw.: Schönes Album:
http://www.jamendo.com/de/album/2310/
Bittorrent Musik und obendrein legal! :p
Und jetzt auf, zum Feuerwerk und grillen.
 
Last edited:
Ich hab gerade net-p2p/ktorrent-devel committed, was auf einem SVN Snapshot von heute basiert. Der Buildfehler bzgl. MSG_NOSIGNAL unter 5.x ist dort gefixed.
 
Last edited:
Dankeschön

Hallo,

allerhöchste Eisenbahn, das ich mich auch mal wieder melde,

Ktorrent 2.0rc1 lies sich mit dem Patch von GaTh3N wunderbar bauen! *froi*
Dafür ein ganz herzliches Dankeschön an GaTh3N! :)

Nun bin ich natürlich auch ganz gespannt auf den ktorrent-devel Port von markus. :cool:
Dafür auch ein ganz herzliches Dankeschön an markus. :)

Muß ich mal schnell Ports upgraden,
habe nur noch eine Baustelle bei planeshift,
wo ich entdeckte, das dieser Port tatsächlich das Planeshift CVS auscheckt.
Wußte gar nicht, das man mit den Ports auch sowas machen kann. :cool:
Ob man wohl sowas auch für ktorrent-svn hingebogen kriegt?
Sieht allerdings etwas aufwändiger aus,
das Makefile fürs CVS auschecken beim Planshift Port.


Wollte mal etwas kürzer treten, mit soviel vor dem Computer sitzen,
aber so lange halte ich Computerabstinenz auch nicht durch. :ugly:
Aber die Woche soll es ja häufiger regnen.

Ach, noch was:
bei meinen ktorrent 2.0rc1 Experimenten wurde die
geoip.dat nicht in das Verzeichnis
Code:
$[PREFIX]/share/apps/ktorrent/geoip/
kopiert.

So funktionierte die GeoIP nicht.
Nach händischem kopieren der geoip.dat
in das oben angegebene Verzeichnis,
in der sich bereits die ganzen Länderflaggen zum Anzeigen befanden,
lief auch die GeoIP.
Die Datei geoip.dat ist in den ktorrent Sourcen bereits fertig enthalten.
Ist das nicht sogar das, was es als GeoIP Port gibt?


Gruß, Fusselbär
 
Fusselbär said:
Ktorrent 2.0rc1 lies sich mit dem Patch von GaTh3N wunderbar bauen! *froi*
Dafür ein ganz herzliches Dankeschön an GaTh3N! :)

Bauen ja, aber der Patch ist semantisch falsch. Der ktorrent-devel Port enthält den korrekten Fix.

Fusselbär said:
Dafür auch ein ganz herzliches Dankeschön an markus. :)
Kein Problem :)

Fusselbär said:
Muß ich mal schnell Ports upgraden,
habe nur noch eine Baustelle bei planeshift,
wo ich entdeckte, das dieser Port tatsächlich das Planeshift CVS auscheckt.
Wußte gar nicht, das man mit den Ports auch sowas machen kann. :cool:
Ob man wohl sowas auch für ktorrent-svn hingebogen kriegt?
Klar geht das, nur ist das im Fall von ktorrent absoluter Overkill.

Fusselbär said:
Ach, noch was:
bei meinen ktorrent 2.0rc1 Experimenten wurde die
geoip.dat nicht in das Verzeichnis
Code:
$[PREFIX]/share/apps/ktorrent/geoip/
kopiert.

So funktionierte die GeoIP nicht.
Nach händischem kopieren der geoip.dat
in das oben angegebene Verzeichnis,
in der sich bereits die ganzen Länderflaggen zum Anzeigen befanden,
lief auch die GeoIP.
Die Datei geoip.dat ist in den ktorrent Sourcen bereits fertig enthalten.
Danke für den Hinweis. Vor ein paar Tagen wurde ein configure check für GeoIP hinzugefügt, der nicht funktioniert und als Resultat die GeoIP Datenbank nicht installiert. Ich habe gerade einen neuen Snapshot (20060802) committed, bei dem ich den configure check erstmal komplett rausgeworfen habe und somit alles korrekt installiert wird. Bitte update auf diese Version, weil sie auch noch ein paar andere Bugfixes enthält.

Markus
 
Funktioniert astrein, dankeschön!

Hallo markus,

habe jetzt auf den ktorrent-devel Snapshot (20060802) aktualisiert, die GeoIP-LICENSE.txt und die geoip.dat landen jetzt bei der Installation in
Code:
/usr/local/share/apps/ktorrent/geoip
genauso wie die ganzen Flaggen.
Die GeoIP funktioniert wunderbar und der ktorent-devel Snapshot (20060802)
rennt bei mir "wie Schmitz Katze". :cool:


Gruß, Fusselbär
 
Back
Top