Ist hier zufällig ein Makefile und C Experte?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Ist hier zufällig ein Makefile und C Experte?

Beitrag von bombaclaude » 01.11.2007 19:13:34

Er müsste python, swig und swish-e auf dem Rechner haben. Ich habe hier zwei kleine c Dateien und ein Makefile das für ein altes System geschrieben wurde.Vermutlich ist das c OK, aber das Makefile veraltet. Im Endeffekt soll ein python script auf Swish-e zugreifen können.

Leider bekomme ich das mit meinen Kenntnissen nicht in den Griff. Sind alles zusammen keine 60 Zeilen und wäre für einen Fachmann vermutlich trivial.

Ich würde die Dateien als zip bereit stellen.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 01.11.2007 19:23:50

warum postest du die Dateien nicht auf NoPaste http://nopaste.debianforum.de/
und die Fehlermeldung(en) hier in deinen Beitrag ?

Gruß
gms

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 01.11.2007 21:12:14

Zu kompliziert. Downloaden entpacken, testen, fertig. Das geht viel schneller. Ausserdem weiss ich nicht ob die Dateien unter irgend einer Lizens stehen.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 01.11.2007 21:58:10

bombaclaude hat geschrieben:Zu kompliziert. Downloaden entpacken, testen, fertig. Das geht viel schneller.
Ich habe jetzt eine halbe Stunde mit meiner Antwort gewartet. In dieser Zeit hätte ich das Problem wahrscheinlich schon längst gelöst, aber wenn du glaubst, daß es auf deine Art schneller geht ...

bombaclaude hat geschrieben: Ausserdem weiss ich nicht ob die Dateien unter irgend einer Lizens stehen.
befürchtest du ein Linzensvergehen, wenn du die Dateien nicht als ZIP-File zur Verfügung stellst :?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Beitrag von Meillo » 02.11.2007 16:48:33

bombaclaude hat geschrieben:Downloaden entpacken, testen, fertig. Das geht viel schneller.
Das stimmt für meinen eigenen Rechner, aber wenn ich an der FH oder so bin, dann funktioniert das halt nicht unbedingt so einfach.
Zudem: bevor ich dein Programm kurz teste, werde ich mir den Code sowieso durchlesen (weiß ja nicht was da so böses drin steht) ... und dann kann ich es gleich hier in nopaste lesen.
Use ed once in a while!

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 07.11.2007 18:23:17

Meillo hat geschrieben:
bombaclaude hat geschrieben:Downloaden entpacken, testen, fertig. Das geht viel schneller.
Das stimmt für meinen eigenen Rechner, aber wenn ich an der FH oder so bin, dann funktioniert das halt nicht unbedingt so einfach.
Zudem: bevor ich dein Programm kurz teste, werde ich mir den Code sowieso durchlesen (weiß ja nicht was da so böses drin steht) ... und dann kann ich es gleich hier in nopaste lesen.
Ah, hier sitzt jemand auch in solch einem Institut. Tja ...

@gms

Danke für die Hilfe. Du findest die Dateien hier http://home.arcor.de/bgt5/

Sollte alles dabei sein. Vielleicht ist das ganz trivial, kenn mich da aber nicht mit aus und hier bei mir im Institut sitzen leider die flaschen Experten. :D

Wäre daher nett wenn Du mal kurz drüber schauen könntest.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 07.11.2007 20:53:14

Im Makefile habe ich folgende Änderungen gemacht:
a) In den zwei Zeilen mit "gcc -c" habe ich jeweils die Option "-fPIC" angefügt. Diese wird benötigt, wenn eine Shared Library erstellt werden soll
b) In der Zeile mit "gcc -shared" habe "-R${CODEBASE}" durch "-Wl,-rpath,{CODEBASE}" ersetzt. Hier bin ich mir allerdings nicht sicher, wofür die "-R" Option überhaupt gedacht war. Nachdem aber für CODEBASE anscheinend ein Verzeichnis "/usr/cms" gesetzt wurde, habe ich vermutet, daß hier der RTL Path gesetzt werden sollte

Den von dir gepostete Fehler

Code: Alles auswählen

g++ -c swish_e_wrap.cxx -I/usr/include/python2.4
swish_e_wrap.cxx: In function ‘PyObject* _wrap_search(PyObject*, PyObject*)’:
swish_e_wrap.cxx:6651: error: no matching function for call to ‘search(std::string&, std::string&)’
habe ich mit einer zusätzlichen Deklaration behoben:

Code: Alles auswählen

extern std::vector<std::string> search(std::string, std::string);
Diese Zeile habe ich in "swish_e.i" gleich nach dem "#include <string>" eingefügt.

Unter http://nopaste.debianforum.de/6950
findest du einen entsprechenden Patch


Gruß
gms

edit:

den Patch kannst du mit "patch -p1 <pfad/zur/patchdatei" einspielen, ein vorhergehender Testlauf mit der zusätzlichen Option "--dry-run" ist empfehlenswert

Code: Alles auswählen

gms1 swish.new # patch --dry-run -p1 <../swish-patch.txt
patching file Makefile
patching file swish_e.i
gms1 swish.new # patch  -p1 <../swish-patch.txt
patching file Makefile
patching file swish_e.i
gms1 swish.new #      

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 08.11.2007 00:57:14

Danke vielmals!

Hat leider nicht funktioniert:
make
g++ -c swish_e.c -I/usr/local/include/python2.4 -fPIC
swig -c++ -python -I/usr/share/swig1.3 -I/usr/share/swig1.3/python swish_e.i
/usr/share/swig1.3/stl.i:8: Warning(204): CPP #warning, "stl.i not implemented for this target"
swish_e.i:14: Error: Template 'vector' undefined.
make: *** [swish_e_wrap.cxx] Fehler 1
Ich habe es noch mit dieser Makefile versucht http://home.arcor.de/bgt5/Makefile-2
was leider in diesem Fehler endet http://home.arcor.de/bgt5/Fehlermeldung-2.txt

Mir ist jetzt nicht ganz klar was mir das sagen soll. Ich werde morgen mal die swish-e Liste erforschen. Vielleicht steht dort eine Antwort.

:

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 08.11.2007 09:52:16

bombaclaude hat geschrieben:
make
g++ -c swish_e.c -I/usr/local/include/python2.4 -fPIC
swig -c++ -python -I/usr/share/swig1.3 -I/usr/share/swig1.3/python swish_e.i
/usr/share/swig1.3/stl.i:8: Warning(204): CPP #warning, "stl.i not implemented for this target"
swish_e.i:14: Error: Template 'vector' undefined.
make: *** [swish_e_wrap.cxx] Fehler 1
dieser Fehler ist bei mir nicht gekommen. Ich werde am Abend versuchen der Sache nachzugehen, auf den ersten Blick schaut es so aus, als würde von swig noch etwas fehlen.
Gibt es bei dir eine "/usr/share/swig/[VERSION]/python/stl.i" Datei, ansonsten wird die Datei "/usr/share/swig/[VERSION]/stl.i" verwendet, in der dann das entsprechende Warning enthalten ist
/usr/share/swig/1.3.31/stl.i hat geschrieben: * -----------------------------------------------------------------------------
* See the LICENSE file for information on copyright, usage and redistribution
* of SWIG, and the README file for authors - http://www.swig.org/release.html.
*
* stl.i
* ----------------------------------------------------------------------------- */

#warning "stl.i not implemented for this target"
#define SWIG_STL_UNIMPL
bombaclaude hat geschrieben: Ich habe es noch mit dieser Makefile versucht http://home.arcor.de/bgt5/Makefile-2
was leider in diesem Fehler endet http://home.arcor.de/bgt5/Fehlermeldung-2.txt
diesen Fehler hatte ich auch. Hier sind wir aber schon beim Testen des Moduls, welches zu diesem Zeitpunkt auch schon geladen und angesprochen wurde. Ich habe daher diesen Fehler ignoriert, weil ich dachte, daß bei mir swish_e wahrscheinlich nicht korrekt eingerichtet ist.

Gruß
gms

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 08.11.2007 15:56:02

Gibt es bei dir eine "/usr/share/swig/[VERSION]/python/stl.i" Datei, ansonsten wird die Datei "/usr/share/swig/[VERSION]/stl.i" verwendet, in der dann das entsprechende Warning enthalten
Ja, sind beide vorhanden. Das einzige Paket was mir fehlte war libxml2-dev. Ich dachte zunächst auch swish-e-dev, aber dem war nicht so.

Andere Idee: Kann es an veralteten Versionen liegen? Ich nutze Lenny.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 08.11.2007 20:22:16

Ich habe zwar ursprünglich auf meinem Gentoo System getestet, auf meinem Lanny System funktionierts jedoch genauso:

Code: Alles auswählen

gms@gms4:~/tmp$ swig -c++ -python swish_e.i
gms@gms4:~/tmp$ ls -l
insgesamt 248
-rw-r--r-- 1 sandner sandner    293 2007-11-08 19:57 swish_e.i
-rw-r--r-- 1 sandner sandner   5940 2007-11-08 20:19 swish_e.py
-rw-r--r-- 1 sandner sandner 235421 2007-11-08 20:19 swish_e_wrap.cxx
verwendete swig Version ist 1.3.31-1

Gruß
gms

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 08.11.2007 21:22:43

gms hat geschrieben:

Code: Alles auswählen

gms@gms4:~/tmp$ swig -c++ -python swish_e.i
gms@gms4:~/tmp$ ls -l
insgesamt 248
-rw-r--r-- 1 sandner sandner    293 2007-11-08 19:57 swish_e.i
-rw-r--r-- 1 sandner sandner   5940 2007-11-08 20:19 swish_e.py
-rw-r--r-- 1 sandner sandner 235421 2007-11-08 20:19 swish_e_wrap.cxx
Zu dem Ergebnis komme ich auch.

Wenn ich jetzt in meinem cms die Suchfunktion aufrufe, dann gibt es diesen Fehler:
File "/var/www/dieter/htdocs/cms/search.py", line 24, in search
import swish_e
File "swish_e.py", line 7, in ?
import _swish_e
ImportError: No module named _swish_e
Das gleiche bekomme ich hierbei:
~/tmp$ python swish_e.py
Traceback (most recent call last):
File "swish_e.py", line 7, in ?
import _swish_e
ImportError: No module named _swish_e
Was ist _swish_e ?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 08.11.2007 22:16:29

bombaclaude hat geschrieben:
gms hat geschrieben:

Code: Alles auswählen

gms@gms4:~/tmp$ swig -c++ -python swish_e.i
gms@gms4:~/tmp$ ls -l
insgesamt 248
-rw-r--r-- 1 sandner sandner    293 2007-11-08 19:57 swish_e.i
-rw-r--r-- 1 sandner sandner   5940 2007-11-08 20:19 swish_e.py
-rw-r--r-- 1 sandner sandner 235421 2007-11-08 20:19 swish_e_wrap.cxx
Zu dem Ergebnis komme ich auch.
Hier aber nicht :? :
bombaclaude hat geschrieben:

Code: Alles auswählen

swig -c++ -python -I/usr/share/swig1.3 -I/usr/share/swig1.3/python swish_e.i 
/usr/share/swig1.3/stl.i:8: Warning(204): CPP #warning, "stl.i not implemented for this target" 
swish_e.i:14: Error: Template 'vector' undefined. 
make: *** [swish_e_wrap.cxx] Fehler 1

bombaclaude hat geschrieben: Wenn ich jetzt in meinem cms die Suchfunktion aufrufe, dann gibt es diesen Fehler:

Code: Alles auswählen

  File "/var/www/dieter/htdocs/cms/search.py", line 24, in search
    import swish_e
  File "swish_e.py", line 7, in ?
    import _swish_e
ImportError: No module named _swish_e
Was ist _swish_e ?
"_swish_e" ist der Name der Shared Library:

Code: Alles auswählen

-rw-r--r-- 1 root root   5940  8. Nov 22:07 swish_e.py
-rw-r--r-- 1 root root 397552  8. Nov 22:07 swish_e_wrap.o
-rwxr-xr-x 1 root root 278600  8. Nov 22:07 _swish_e.so
-rw-r--r-- 1 root root  10370  8. Nov 22:07 swish_e.pyc
( Daß dieses Projekt den gleichen Namen "swish_e" verwendet, wie das Indexing System auf welches hier zugegriffen werden soll, finde ich höchst unschön und sorgt für Verwirrung )

Anscheinend wird also die Shared Library "_swish_e.so" nicht gefunden

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 09.11.2007 04:33:08

So ich habe es vermutlich hinbekommen, jedenfalls bekomme ich eine vom CMS generierte Fehlermeldung. Dafür funktioniert das indexieren mit swish-e aus irgend einem Grund nicht mehr. Das ist hier alles ein wenig labil.

Wenn sich noch ein Problem ergeben sollte, dann würde ich Dir eine PM schicken. Ich muss das sowieso erst mal verarbeiten ...

Vielen Dank das Du mir einen Teil Deiner Freizeit gespendet hast. Ich hätte es alleine wohl nicht geschafft. :wink:

Antworten