Anzeige:
Ergebnis 1 bis 8 von 8

Thema: openSUSE: Bau von "Multilib"-Paketen (libxyz-32bit) - SPEC/Macros?

  1. #1
    Rain_maker
    Gast

    openSUSE: Bau von "Multilib"-Paketen (libxyz-32bit) - SPEC/Macros?

    Mich beschäftigt seit kurzem die Frage, wie genau die 32-Bit Kompatibilitätspakete für 64-Bit Distributionen entstehen.

    Wenn ich mir ein solches xyz-32bit Paket ansehe, dann finde ich zunächst, daß es (wie auch erwartet, sonst würde man das ja in den Repos finden) kein spezielles src.rpm dafür gibt:

    Code:
    rpm -qip ConsoleKit-32bit-0.2.10-60.16.x86_64.rpm
    Name        : ConsoleKit-32bit             Relocations: (not relocatable)
    Version     : 0.2.10                            Vendor: openSUSE
    Release     : 60.16                         Build Date: Mi 03 Dez 2008 08:07:08 CET
    Install Date: (not installed)               Build Host: build19
    Group       : System/Daemons                Source RPM: ConsoleKit-0.2.10-60.16.src.rpm
    Size        : 23528                            License: GPL v2 or later
    Signature   : RSA/8, Mi 03 Dez 2008 08:07:21 CET, Key ID b88b2fd43dbdc284
    In den entsprechenden SPEC-Files finde ich auch keinen Hinweis auf ein %{name}-32bit Paket, was darauf schliessen lässt, daß wohl ein bestimmtes RPM-Macro entscheidet, ob ein 32-Bit Paket für x86_64 gebaut wird oder nicht und dieses automatisiert ausgespuckt wird.

    Ein Blick in die SUSE Package Conventions lieferte folgende Aussage:

    4.1. Biarch Systems
    The directories like /usr/lib64 and /usr/X11R6/lib64 are used next to the usual
    /usr/lib and /usr/X11R6/lib directories on biarch systems. This is because two variants
    of the same libraries must coexist on such systems to allow running both 32-bit and 64-bit
    applications in parallel. The 64-bit libraries are installed in lib64 directories and 32-bit
    libraries in the lib directories. The macros %_lib and %_libdir do this.
    Special packages are created for the biarch systems that include only the 32-bit libraries. Any
    other files are not needed because these libraries can use architecture independent files from
    the 64-bit packages. They are even able to execute 64-bit helper binaries. Therefore, these are
    shared as well and are installed into lib on all architectures instead (and not %_lib). See the
    part about --libexecdir in the following section.

    • --libexecdir defines the directory for binary helpers that are called from other binaries
    or libraries but not by users. The default path {exec_prefix}/libexec is not allowed by
    FHS. The recommended path is {prefix}/lib/{name} where {prefix} is package
    prefix and {name} is the package name. lib is used for all architectures (and not %_lib).
    See Section 4.1 for more details. Example: --libexecdir=%_prefix/lib/%name
    Ich habe mir im Anschluss ein paar SPECs angesehen (Pakete, die ein 32-Bit Binary ausspucken und welche, die das nicht tun) und mir sind irgendwie keine Besonderheiten aufgefallen, was nun darüber entscheidet, ob xyz-32bit.x86_64.rpm-Pakete ausgespuckt werden oder nicht, der Hinweis auf libexecdir hat mich irgendwie auch nicht schlauer gemacht, da z.B. dieses SPEC hier (packman-Paket für libexif) diese Variable gar nicht enthält.

    http://packman.links2linux.de/package/libexif

    Code:
    %debug_package
    %prep
    %setup -q
    %patch1
    
    %build
    export CFLAGS="%{optflags} -g -fstack-protector"
    %configure \
               --with-doc-dir="%{_docdir}/%{name}" \
               --disable-static
    
    %__make %{?jobs:-j%{jobs}}
    
    %install
    %makeinstall
    
    %find_lang "libexif-%{soname}"
    
    %post -p /sbin/ldconfig
    
    %postun -p /sbin/ldconfig
    
    
    %files -f libexif-%{soname}.lang
    %defattr(-,root,root)
    %doc %{_docdir}/%{name}
    %{_includedir}/libexif
    %{_libdir}/libexif.so.%{soname}
    %{_libdir}/libexif.so.%{soname}.*.*
    %{_libdir}/libexif.so
    %{_libdir}/libexif.la
    %{_libdir}/pkgconfig/libexif.pc
    Langer Rede kurzer Sinn:

    Wie genau funktioniert das mit den Biarch-Paketen im Build Sytem von openSUSE bzw. Packman, wo man auch mehrfach xyz-32bit Pakete findet?

    Greetz,

    RM

  2. #2
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989
    Das macht das Buildscript, im OBS oscbuild, bei PackMan lbuild. Aber eigentlich ist beides "build"....

    lbuild --help
    --baselibs
    Create -32bit/-64bit/-x86 rpms for other architectures

    Das generiert bei einem 32bit-Build automatisch ein 32bit-x86_64.rpm. Wenn du genaueres wissen willst, /usr/lib/lbuild/baselibs.conf ist dein Freund, wenn du lbuild nutzt.


  3. #3
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989
    Wir starten unseren Job halt nur mit "--baselibs" und müssen zur Not noch ne blah.baslibs.conf für den Job generieren.

    In der baslibs.conf kann man für ein RPM bestimmte/alle .so kennzeichnen, sodass sie im 32bit-rpm landen.

  4. #4
    Rain_maker
    Gast
    Irgendwie wusste ich, wer hier wahrscheinlich als erstes antworten würde.

    Und Danke fürs Brett vorm Kopf wegnehmen, ich verwende lbuild und da es die man-Page von build mitbringt, habe ich nur dort reingesehen, da steht zwar einiges aber dummerweise das eben nicht drin, vor lauter Bäumen (man page) den Wald (--help) nicht gesehen.

    BTW:

    Der Hintergrund, warum ich (auch wenn ich mich das schon öfters gefragt habe) gerade wieder "akkut" etwas dazu wissen wollte, ist der, daß es keine libv4l-32bit-Pakete gibt, die aber einige Anwendungen wie Skype benötigen, wenn man z.B. eine Webcam mit gspca-Treiber hat.

    Natürlich gibts auch einen Thread dazu:

    http://www.pc-forum24.de/suse-treibe...0c45-613c.html

    Das kmp-Paket zur ID "kompatibel" zu patchen war keine Kunst, aber die fehlende 32Bit Bibliothek war ne Nummer zu groß für mich (und den TE musste ich zum Selbstbau "quälen", weil mir zur Zeit keine 64 Bit Maschine zur Verfügung steht, ausserdem hat es ja für ein saubereres System gesorgt, da warten ja noch 11.0er Repos drin).

    Greetz,

    RM
    Geändert von Rain_maker (05.01.09 um 22:41 Uhr)

  5. #5
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989
    pm-upload-job --test --baselibs 11.1

    in /packman/trunk/packages/suse/libv4l löppt gerade, mal schauen...

  6. #6
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989

  7. #7
    Rain_maker
    Gast
    *Hehe*

    Auch das war irgendwie nicht anders zu erwarten, dann kann ich ja den Herrn mit seiner 64-bittigen 11.1 und Skype gleich mal darauf hinweisen.

    //Edit:

    Zitat Zitat von mir selbst
    => PackMan :: Informationen zum Paket libv4l

    Dann sag mal brav "Danke drcux/Packman-Team".
    + done (Hoffentlich sagt er auch wirklich brav Danke)
    Geändert von Rain_maker (05.01.09 um 23:15 Uhr)

  8. #8
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989
    gern geschehen!

Ähnliche Themen

  1. Ralink
    Von brokenspine187 im Forum Router und Netzaufbau
    Antworten: 22
    Letzter Beitrag: 26.03.08, 14:29
  2. Counter Strike Source Startet nicht!!!
    Von G3n3ra1 im Forum Emulatoren für Spiele
    Antworten: 7
    Letzter Beitrag: 28.02.05, 09:41
  3. dll´s
    Von Big-Bill im Forum Anwendungen Allgemein, Software
    Antworten: 0
    Letzter Beitrag: 19.09.03, 22:00
  4. Kazaa Lite K++ fehler
    Von Coolzero im Forum Anwendungen Allgemein, Software
    Antworten: 7
    Letzter Beitrag: 18.09.03, 15:49
  5. MS Office XP und Wine
    Von Da.Bull im Forum System installieren und konfigurieren
    Antworten: 29
    Letzter Beitrag: 01.02.03, 21:34

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •