Nabend allerseits, ich möchte gerne einem Baubefehl den -soname Passus hinzufügen. Ich habe die Ausgabe ab %install gepostet. Mir geht es um den letzten (abgegrenzten) Teil. Wo finde ich den Baubefehl? configure, Makefile.in oder in einer foo.c Datei? Gruß Sascha Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.67433 + umask 022 + cd /usr/src/packages/BUILD + cd tktray1.1 + make DESTDIR=/var/tmp/libtktray-1.1-build install gcc -pipe -DPACKAGE_NAME=\"tktray\" -DPACKAGE_TARNAME=\"tktray\" - DPACKAGE_VERSION=\"1.1\" -DPACKAGE_STRING=\"tktray\ 1.1\" - DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 - DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 - DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 - DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 - D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long - DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DUSE_TCL_STUBS=1 - DUSE_TK_STUBS=1 -I"/usr/include" - I"/usr/src/packages/BUILD/tk8.5.5/generic" - I"/usr/src/packages/BUILD/tk8.5.5/unix" -march=i586 -mtune=i686 - fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector - funwind-tables -fasynchronous-unwind-tables -O2 -fomit-frame-pointer - Wall -Wno-implicit-int -fPIC -c `echo tktray.c` -o tktray.o tktray.c: In function 'TrayIconObjectCmd': tktray.c:255: warning: pointer targets in passing argument 3 of 'tclStubsPtr->tcl_GetLongFromObj' differ in signedness rm -f libtktray1.1.so ------------------------------------------------------------------------------------------------- gcc -pipe -shared -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so -------------------------------------------------------------------------------------------------- -- Sincereley yours Sascha Manns openSUSE Marketing Team (Weekly News) openSUSE Build Service Web: http://saschamanns.gulli.to Blog: http://lizards.opensuse.org/author/saigkill -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Fri, 13 Feb 2009, Sascha 'saigkill' Manns wrote:
ich möchte gerne einem Baubefehl den -soname Passus hinzufügen. Ich habe die Ausgabe ab %install gepostet. Mir geht es um den letzten (abgegrenzten) Teil. Wo finde ich den Baubefehl? configure, Makefile.in oder in einer foo.c Datei?
Ne URL zu tktray wäre hilfreich gewesen. [..]
gcc -pipe -shared -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so
In dem Fall kommt's darauf an, wie "sauber" das sein soll und welchen soname du willst. Auf die Schnelle finde ich die Variable SHLIB_LD (aus dem Makefile) als am besten geeignet. Die Anpassung geht: a) direkt im configure, z.B. per sed -i '/test "$have_dl" = yes/,/else/{ s/SHLIB_LD="${CC} -shared"/SHLIB_LD="${CC} -shared -Wl,-soname,\\$@"/; }' configure Könnte man gut im %prep im .spec unterbringen. Oder halt nen patch generieren. b) gleiche Stelle in tclconfig/tcl.m4 anpassen, dann muß aber autoreconf laufen Nach a) $ ./configure [..] $ grep SHLIB_LD.*soname Makefile SHLIB_LD = gcc -pipe -shared -Wl,-soname,$@ $ touch tktray.o $ make rm -f libtktray1.1.so gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so tktray.o -lXext -L/usr/X11R6/lib -lX11 -L/usr/local/lib -ltclstub8.4 -L/usr/local/lib -ltkstub8.4 [Fehler wg. dummy .o Datei, ich hab hier grad kein tk8.5] Wg. dem soname könnte man ggfs. den sed-Befehl anpassen, z.B. ... -shared -Wl,-soname,lib%{name}.so.%{version} (und die lib noch passend umbenennen und mit symlinks verarzten) oder so Zeugs, wenn man das .spec auch mit tktray1.2 verwenden will ;) Achso, das findet man durch fleißig Makefile lesen und sich dann die "Generierung" zurückhangeln ;) HTH, -dnh -- Ich kenne da auch einen zentralen Nameserver einer nicht wirklich kleinen Firma, der auf einem Pentium 200 läuft. Auslastung typischerweise im Bereich zwischen *gähn* und *iswas?*, reicht also. -- Alexander Schreiber -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
* David Haller (lists@dhaller.de) [20090213 04:26]:
[..]
gcc -pipe -shared -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so
Ein Soname ist hier völlig überflüssig denn es handelt sich um eine TCL-Erweiterung und daher eher um ein Plugin als eine normale Shared library.
Wg. dem soname könnte man ggfs. den sed-Befehl anpassen, z.B. ... -shared -Wl,-soname,lib%{name}.so.%{version} (und die lib noch passend umbenennen und mit symlinks verarzten) oder so Zeugs, wenn man das .spec auch mit tktray1.2 verwenden will ;)
Ist IMO aus den oben angegebenen Gründen reichlich vergeudete Zeit :) Philipp -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Freitag 13 Februar 2009 13:44:32 Philipp Thomas wrote:
* David Haller (lists@dhaller.de) [20090213 04:26]:
[..]
gcc -pipe -shared -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5
: libtktray1.1.so
Ein Soname ist hier völlig überflüssig denn es handelt sich um eine TCL-Erweiterung und daher eher um ein Plugin als eine normale Shared library. Da hast du Recht. Allerdings baue ich auch meine Pakete für Contrib. Und die legen Wert auf soname und versioned Librarys. Leider :-(
Ich habe jetzt aus ----------------------------------------------------------------------------------------- gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib -ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so ----------------------------------------------------------------------------------------- folgendes gemacht: ---------------------------------------------------------------------------------------- gcc -pipe -shared -Wl,-soname,libtktray1.1.so.%{version} -o libtktray1.1.so.%{version} tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so.%{version} ---------------------------------------------------------------------------------------- Reicht das zum setzen der Version, oder muss ich das anders machen? -- Sincereley yours Sascha Manns openSUSE Marketing Team (Weekly News) openSUSE Build Service Web: http://saschamanns.gulli.to Blog: http://lizards.opensuse.org/author/saigkill -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Sat, 14 Feb 2009, Sascha 'saigkill' Manns wrote: [..]
Da hast du Recht. Allerdings baue ich auch meine Pakete für Contrib. Und die legen Wert auf soname und versioned Librarys. Leider :-(
Ich habe jetzt aus gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib -ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so folgendes gemacht: gcc -pipe -shared -Wl,-soname,libtktray1.1.so.%{version} -o libtktray1.1.so.%{version} tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so.%{version}
Wo? Rufst du das per Hand im .spec auf?
Reicht das zum setzen der Version, oder muss ich das anders machen?
Ein -soname als Linkeroption reicht. Auf .so.%{version} solltest du dann noch passend symlinks setzen. Und die auch mit ins RPM einpacken. -dnh -- "What, you don't think "insmod emacs" is a good idea?" -- Joe Moore -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Samstag 14 Februar 2009 19:37:33 David Haller wrote:
Hello,
On Sat, 14 Feb 2009, Sascha 'saigkill' Manns wrote: [..]
Da hast du Recht. Allerdings baue ich auch meine Pakete für Contrib. Und die legen Wert auf soname und versioned Librarys. Leider :-(
Ich habe jetzt aus gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib -ltclstub8.5 -L/usr/lib -ltkstub8.5
: libtktray1.1.so
folgendes gemacht: gcc -pipe -shared -Wl,-soname,libtktray1.1.so.%{version} -o libtktray1.1.so.%{version} tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5
: libtktray1.1.so.%{version}
Wo? Rufst du das per Hand im .spec auf?
Reicht das zum setzen der Version, oder muss ich das anders machen?
Ein -soname als Linkeroption reicht. Auf .so.%{version} solltest du dann noch passend symlinks setzen. Und die auch mit ins RPM einpacken. Ich hatte es im -spec manuell aufgerufen, da das build ohne soname arbeitet. Nun habe ich das im spec gelöscht, und das Paket gelassen wie es ist. Wie Philipp meinte, kann man das auch so benutzen. Werde mit den Leuten im Contrib mal diskutieren...
-- Sincereley yours Sascha Manns openSUSE Marketing Team (Weekly News) openSUSE Build Service Web: http://saschamanns.gulli.to Blog: http://lizards.opensuse.org/author/saigkill -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Sat, 14 Feb 2009, Sascha 'saigkill' Manns wrote:
On Samstag 14 Februar 2009 19:37:33 David Haller wrote:
On Sat, 14 Feb 2009, Sascha 'saigkill' Manns wrote: [gcc linker Aufruf] Wo? Rufst du das per Hand im .spec auf?
Reicht das zum setzen der Version, oder muss ich das anders machen?
Ein -soname als Linkeroption reicht. Auf .so.%{version} solltest du dann noch passend symlinks setzen. Und die auch mit ins RPM einpacken. Ich hatte es im -spec manuell aufgerufen, da das build ohne soname arbeitet.
Ok. So würde es auch gehen, wenn man es wollte ;)
Nun habe ich das im spec gelöscht, und das Paket gelassen wie es ist. Wie Philipp meinte, kann man das auch so benutzen. Werde mit den Leuten im Contrib mal diskutieren...
Jo, is besser ;) -dnh -- 158: Geisterfahrer Gegenrichtungsfahrbahnbenutzer (Burkhardt Schröder) -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Sonntag 15 Februar 2009 00:00:32 David Haller wrote:
Ein -soname als Linkeroption reicht. Auf .so.%{version} solltest du dann noch passend symlinks setzen. Und die auch mit ins RPM einpacken.
Ich hatte es im -spec manuell aufgerufen, da das build ohne soname arbeitet.
Ok. So würde es auch gehen, wenn man es wollte ;) Tja. Obwohl der Bauvorgang immer noch ein Rätsel für mich ist. Wenn ich einen Aufruf suche der als Ausgabe erscheint, weiß ich nie wo ich suchen soll. configure oder Makefile. Und dann kann man nicht nach dem durchsuchen kann, was man sucht. Suche ich libtk.so.1 (Beispiel) find ich es nicht. Ich werde mich da mal schlau machen müssen.
-- Sincereley yours Sascha Manns openSUSE Marketing Team (Weekly News) openSUSE Build Service Web: http://saschamanns.gulli.to Blog: http://lizards.opensuse.org/author/saigkill -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Sun, 15 Feb 2009 00:53:10 +0100 schriebst Du:
Tja. Obwohl der Bauvorgang immer noch ein Rätsel für mich ist.
Du musst dafür mindestens autoconf, automake (und damit m4) und meist auch libtool (nicht in diesem Fall) verstehen können und auch Makefiles solltest Du lesen können, um solchen Dingen auf den Grund gehen zu können. TkTray verwendet TEA, sprich Tcl Extension Architecture und damit vor allem die in tcl.m4 enthaltenen Autoconf-Makros, um dann im Endeffekt Makefile zu erzeugen. Bei diesen Tools ist es nicht unbdingt einfach zu verstehen, wie im Endeffekt alles entsteht. Ich habe auch einige Jahre gebraucht, bis ich mich in dem Dschungel einigermassen zurecht gefunden habe :) Philipp -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Sun, 15 Feb 2009, Sascha 'saigkill' Manns wrote:
On Sonntag 15 Februar 2009 00:00:32 David Haller wrote:
Ein -soname als Linkeroption reicht. Auf .so.%{version} solltest du dann noch passend symlinks setzen. Und die auch mit ins RPM einpacken.
Ich hatte es im -spec manuell aufgerufen, da das build ohne soname arbeitet.
Ok. So würde es auch gehen, wenn man es wollte ;) Tja. Obwohl der Bauvorgang immer noch ein Rätsel für mich ist. Wenn ich einen Aufruf suche der als Ausgabe erscheint, weiß ich nie wo ich suchen soll. configure oder Makefile. Und dann kann man nicht nach dem durchsuchen kann, was man sucht. Suche ich libtk.so.1 (Beispiel) find ich es nicht. Ich werde mich da mal schlau machen müssen.
Wenn make verwendet wird, ist das Makefile immer der Ausgangspunkt, von dem man sich dann zurückhangelt. libtktray1.1.so => PKG_LIB_FILE => lib_BINARIES => $(PKG_LIB_FILE): => ${MAKE_LIB} => ${SHLIB_LD} -o $@ $(PKG_OBJECTS) ${SHLIB_LD_LIBS} => SHLIB_LD = gcc -pipe -shared hier ist man dann an der Stelle, wo keine Variablen mehr vorkommen, d.h. das wird von configure aus dem Makefile.in generiert. => nach SHLIB_LD in configure suchen. Der entsprechende Abschnitt stammt wiederum aus tclconfig/tcl.m4 HTH, -dnh -- Yip yip yip yip yap yap yip *BANG* --- NO TERRIER -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Sat, 14 Feb 2009 17:21:54 +0100 schriebst Du:
Da hast du Recht. Allerdings baue ich auch meine Pakete für Contrib. Und die legen Wert auf soname und versioned Librarys. Leider :-(
Das ist in dem Fall Blödsinn und es braucht eine Ausname für Tcl-Erweiterungen! Weder die Version noch der soname machen hier irgend einen Sinn!
gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib -ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so
Nein, das funktioniert so nicht, denn TCL-Erweiterungen werden nicht vom Programm sondern der Tcl-Bibliothek nachgeladen und der Name der zu ladenden Erweiterung steht in pkgIndex.tcl
libtktray1.1.so.%{version} tktray.o -lXext -lX11 -L/usr/lib - ltclstub8.5 -L/usr/lib -ltkstub8.5 : libtktray1.1.so.%{version}
Das ist Unsinn und da muss mit den für Contrib verantwortlichen Diskutiert werden, wie hier eine Ausname geschaffen werden kann. Wir können nicht für contrib höhere Anforderungen stellen als für Pakete in der Distribution. Philipp -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (4)
-
David Haller
-
Philipp Thomas
-
Philipp Thomas
-
Sascha 'saigkill' Manns