[CentOS 6.4] OpenLDAP mit Debuginfo bauen

04/09/2013 - 11:31 von Marc Haber | Report spam
Hallo,

das folgende .spec-File wird benutzt, um ein OpenLDAP 2.4.36 unter
CentOS 6.4 zu bauen. Ich habe wenig Ahnung von RPM-basierenden
Distributionen, brauche aber eine Debug-Package um einen Backtrace aus
einem reproduzierbaren slapd-Crash zu generieren.

Nach der Doku, die man im Netz findet, soll das -debug.rpm automatisch
generiert werden, oder man soll "%debug_package" ganz oben
hinschreiben. Ersteres passiert nicht, zweiteres erzeugt beim rpmbuild
-bb eine Fehlermeldung, die darauf schließen làsst, dass dann die
Name, Version, Release und Summary-Felder nicht mehr gefunden werden.

Wie muss ich das .spec verbieten dass ein -debug.rpm erzeugt wird oder
hilfsweise das slapd-Binary im Paket nicht gestripped wird? Es kann
auch sein, dass mich meine Debian-Kenntnisse in die Irre schicken.
Also bitte für RPM-Anfànger erklàren, wenn möglich.

|%define _prefix /usr/local
|%define _libdir %{_prefix}/lib64
|%define _sysconfdir %{_prefix}/etc
|%define _realsysconfdir /etc
|
|Name: openldap-release
|Version: 2.4.36
|Release: 1%{?dist}
|Summary: OpenLDAP
|
|Group: System Environment/Daemons
|License: OpenLDAP
|URL: http://www.openldap.org
|
|#Source0: ftp://ftp.openldap.org/pub/OpenLDAP...openldap-%{Version}.tgz
|Source0: openldap-2.4.36.tgz
|Source1: ldap.init
|Source2: ldap.sysconfig
|
|Patch0: ldap.init.patch
|Patch1: openldap-libraries-Makefile.in.patch
|Patch2: openldap-libraries-liblmdb-Makefile-2.4.36.patch
|
|BuildRoot: %(mktemp -ud %{_tmppath}/openldap-%{version}-%{release}-XXXXXX)
|
|BuildRequires: cyrus-sasl-devel >= 2.1, tcp_wrappers-devel
|BuildRequires: glibc-devel, libtool, libtool-ltdl-devel, groff, perl, openssl-devel
|Conflicts: openldap-servers, openldap-clients
|Requires: libtool-ltdl
|
|%description
<snip>
|
|
|%prep
|%setup -n openldap-2.4.36
|%patch1 -p0
|%patch2 -p0
|mkdir init
|cp %{SOURCE1} init
|cd init
|%patch0 -p0
|
|%build
|export CPPFLAGS="-I%{_includedir}"
|export LDDFLAGS="-L%{_libdir}"
|
|%configure --with-threads=posix --enable-local --with-tls=openssl --prefix=%{_prefix} \
| --includedir=%{_includedir} \
| --libexecdir=%{_libdir} \
| --enable-debug \
| --enable-dynamic \
| --enable-syslog \
| --enable-proctitle \
| --enable-ipv6 \
| --enable-local \
| --enable-slapd \
| --enable-dynacl \
| --enable-aci \
| --enable-cleartext \
| --enable-crypt \
| --enable-lmpasswd \
| --enable-spasswd \
| --enable-modules \
| --enable-rewrite \
| --enable-rlookups \
| --enable-wrappers \
| --enable-cleartext \
| --enable-crypt \
| --enable-lmpasswd \
| --enable-spasswd \
| --disable-bdb \
| --disable-hdb \
| --enable-ldap=mod \
| --enable-mdb=mod \
| --enable-monitor=mod \
| --enable-overlays=mod \
| --enable-accesslog=mod \
| --enable-auditlog=mod \
| --enable-memberof=mod \
| --enable-ppolicy=mod \
| --enable-syncprov=mod \
| --enable-translucent=mod
|make depend
|make %{?_smp_mflags}
|
|
|%install
|rm -rf $RPM_BUILD_ROOT
|export DONT_STRIP=1
|
|# create required directories for liblmdb install
|mkdir -p %{buildroot}/%{_bindir}
|mkdir -p %{buildroot}/%{_libdir}
|mkdir -p %{buildroot}/%{_includedir}
|mkdir -p %{buildroot}/%{_mandir}/man1
|cp libraries/liblmdb/mdb_copy.1 %{buildroot}/%{_mandir}/man1
|cp libraries/liblmdb/mdb_stat.1 %{buildroot}/%{_mandir}/man1
|
|# install
|make install DESTDIR=$RPM_BUILD_ROOT sysconfdir=%{_sysconfdir}/openldap
|# setup data and runtime directories
|mkdir -p %{buildroot}/var/lib/ldap
|mkdir -p %{buildroot}/var/run/openldap
|
|# remove build root from config files and manual pages
|perl -pi -e "s|%{buildroot}||g" %{buildroot}/%{_sysconfdir}/openldap/*.conf
|perl -pi -e "s|%{buildroot}||g" %{buildroot}%{_mandir}/*/*.*
|
|# install init script
|mkdir -p %{buildroot}%{_realsysconfdir}/rc.d/init.d
|install -m 755 init/ldap.init %{buildroot}%{_realsysconfdir}/rc.d/init.d/slapd
|
|# install syconfig/ldap
|mkdir -p %{buildroot}%{_realsysconfdir}/sysconfig
|install -m 644 %SOURCE2 %{buildroot}%{_realsysconfdir}/sysconfig/ldap.default
|
|# move slapd out of _libdir
|mv %{buildroot}/%{_libdir}/slapd %{buildroot}/%{_sbindir}/
|
|# setup tools as symlinks to slapd
|rm -f %{buildroot}/%{_sbindir}/slap{acl,add,auth,cat,dn,index,passwd,test,schema}
|rm -f %{buildroot}/%{_libdir}/slap{acl,add,auth,cat,dn,index,passwd,test,schema}
|for X in acl add auth cat dn index passwd test schema; do ln -s slapd %{buildroot}/%{_sbindir}/slap$X ; done
|
|# tweak permissions on the libraries to make sure they're correct
|chmod 755 %{buildroot}/%{_libdir}/lib*.so*
|chmod 644 %{buildroot}/%{_libdir}/lib*.*a
|
|# remove junk we don't want to package
|rm -rf %{buildroot}/var/openldap-data
|rm -f %{buildroot}/etc/openldap/ldap.conf
|
|# also do not package config files so we will not overwrite productive configs
|# and can avoid productive configs being renamed to .rpmsave.
|rm -f %{buildroot}%{_sysconfdir}/openldap/ldap.conf
|rm -f %{buildroot}%{_sysconfdir}/openldap/slapd.conf
|rm -f %{buildroot}%{_sysconfdir}/openldap/slapd.ldif
|
|# we do not want to package liblmdb at this point
|rm -rf %{buildroot}/%{_libdir}/liblmdb*
|rm -rf %{buildroot}/%{_includedir}/lmdb.h
|
|%clean
|
|%pre
|# create ldap user and group
<snip>
|exit 0
|
|%post
|/sbin/ldconfig
|/sbin/chkconfig --add slapd
|
|%preun
<snip>
|
|%postun -p /sbin/ldconfig
|
|%files
|%defattr(0755,root,root,-)
|%doc %{_mandir}/*
|%attr(0755,ldap,ldap) %dir /var/lib/ldap
|%attr(0755,ldap,ldap) %dir /var/run/openldap
|%attr(0755,ldap,ldap) %config(noreplace) %{_sysconfdir}/openldap/*
|%config(noreplace) /etc/sysconfig/ldap.default
|%{_bindir}/*
|%{_sbindir}/*
|%{_libdir}
|%{_includedir}
|%{_sysconfdir}/openldap/*
|%{_realsysconfdir}/rc.d/init.d/slapd


Was làuft da schief?

Grüße
Marc
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " | http://www.zugschlus.de/
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
 

Lesen sie die antworten

#1 Ulf Volmer
04/09/2013 - 20:19 | Warnen spam
Marc Haber <mh+ schrieb:

das folgende .spec-File wird benutzt, um ein OpenLDAP 2.4.36 unter
CentOS 6.4 zu bauen. Ich habe wenig Ahnung von RPM-basierenden
Distributionen, brauche aber eine Debug-Package um einen Backtrace aus
einem reproduzierbaren slapd-Crash zu generieren.

Nach der Doku, die man im Netz findet, soll das -debug.rpm automatisch
generiert werden, oder man soll "%debug_package" ganz oben
hinschreiben. Ersteres passiert nicht, zweiteres erzeugt beim rpmbuild
-bb eine Fehlermeldung, die darauf schließen làsst, dass dann die
Name, Version, Release und Summary-Felder nicht mehr gefunden werden.



Ich weiß, das ist keine große Hilfe, aber wenn ich Dein spec- File unter
CentOS 6.4 baue (abzüglich der patches und abzüglich der DONT_STRIP Option
in der %install- Sektion, erhalte ich ohne weitere Änderungen:

-rw-rw-r--. 1 ulf ulf 1766076 4. Sep 20:04 openldap-release-2.4.36-1.el6.x86_64.rpm
-rw-rw-r--. 1 ulf ulf 2167352 4. Sep 20:04 openldap-release-debuginfo-2.4.36-1.el6.x86_64.rpm

Viele Grüße
Ulf

Ähnliche fragen