[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Anyone with Fedora RPM packages already?

On Tue, 2008-06-17 at 11:54 +0200, Buchan Milne wrote:
> On Tuesday 17 June 2008 11:43:43 Harald Barth wrote:
> > > Isn't this what the different numbered .so versions are for?
> >
> > No. That is used to be able to tell apart older and newer versions
> > of the same library.
> Well, versions of the same library with different ABI ... a software version 
> change without an ABI change doesn't necessitate a new major library number 
> (though a new minor number could be justified for non-ABI changes in the 
> library).
> > Some pointer to a good article on the behaviour and design of the
> > dynamic linker would be appreciated.
> >
> > A system without rpath means you have one of the following alternatives:
> >
> >   * Rename all libraries so that there are no confliciting names. This
> >     means editing all Makefiles that use those libraries, too.
> >
> >   * LD_LIBRARY_PATH wrapper scrips for all such programs using such
> >     libraries.
> >
> >   * Only support one of the conflicting libraries.
> Or, support only one of the conflicting libraries for development at one time, 
> and hope that the major versions of the runtime libraries don't ever 
> match ...

Which is, as I understand it, the approach that allows just this on
debian all these years.   Oddly, the rpath warnings have gone away with
a later build...

> >   * Static linking
> Part of the problem here is that the design is for a drop-in replacement, but 
> the only method (rpath) viable for a drop-in replacement co-existing is not 
> desirable (I haven't read the Fedora policy, but IIRC there was a valid 
> reason for it).

My current work is attached.  It seemed to be enough for me to build
Samba3 against it, so it probably works :-)

Andrew Bartlett

Andrew Bartlett                                http://samba.org/~abartlet/
Authentication Developer, Samba Team           http://samba.org
Samba Developer, Red Hat Inc.                  http://redhat.com


# Heimdal spec file heratige
# Andrew Bartlett <abartlet@samba.org> Red Hat Inc.
# Based on:
#  Fedora Template spec file (at as 2008-06)
#  Fedora MIT krb5.spec 
#  Spec by OpenSUSE build farm contributor Christof Hanke <hanke@rzg.mpg.de>
#  Mandriva Heimdal spec

Name:		heimdal
Version:	1.1
Release:	4ab
Summary:	Heimdal implementation of Kerberos V5 system
License:	BSD-like
Group: System Environment/Libraries
Source0:	ftp://ftp.pdc.kth.se/pub/heimdal/src/%{name}-%{version}.tar.gz
Source1:	%{name}.init
Source1:	kpasswdd.init
#Source2:	%{name}.logrotate
Source3:	%{name}.sysconfig
#Source4:	%{name}-krb5.conf
Source8:    %{name}-kadmind.xinetd
Patch7:		heimdal-1.1-fix-readline-detection.patch
Patch8:		heimdal-1.1-no-editline.patch
URL:		http://www.pdc.kth.se/heimdal/
Prereq: info, /sbin/install-info
BuildRequires:	libX11-devel
BuildRequires:	db4-devel >= 4.2.52
BuildRequires:	flex
BuildRequires:	bison
BuildRequires:	libtool
BuildRequires:	ncurses-devel >= 5.3
BuildRequires:	openldap-devel >= 2.0
BuildRequires:	readline-devel
BuildRequires:	pam-devel
BuildRequires:	e2fsprogs-devel
BuildRequires:	texinfo
BuildRoot:	    %{_tmppath}/%{name}-%{version}

%define krb5prefix %{_prefix}/heimdal

Heimdal is a free implementation of Kerberos 5. The goals are to:
   - have an implementation that can be freely used by anyone
   - be protocol compatible with existing implementations and, if not in
     conflict, with RFC 1510 (and any future updated RFC)
   - be reasonably compatible with the M.I.T Kerberos V5 API
   - have support for Kerberos V5 over GSS-API (RFC1964)
   - include enough backwards compatibility with Kerberos V4
   - IPv6 support

%package workstation
Summary:	Kerberos programs for use on workstations
Group: System Environment/Base
Requires:	%{name}-libs = %{version}-%{release}
Conflicts:  krb5-workstation
Conflicts:  openafs
Provides:   kerberos-workstation
Obsoletes:  %{name}

%description workstation
This package contains Kerberos 5 programs for use on workstations.

%package server
Summary:	Kerberos Server
Group: System Environment/Daemons
Requires:	%{name}-libs = %{version}-%{release}
Requires: xinetd
Requires(post):	chkconfig
Conflicts:  krb5-server

%description server
This package contains the master KDC.

%package libs
Summary:	Heimdal shared libraries
Group: System Environment/Libraries

%description libs
This package contains shared libraries required by several of the other heimdal

%package clients
Summary:	Kerberos programs for use on workstations
Group:		Networking/Other
Requires:	%{name}-libs = %{version}-%{release}

%description clients
Kerberos 5 Clients.

%package devel
Summary:	Header files and developer documentation for heimdal
Group: Development/Libraries
Requires:	%{name}-libs = %{version}-%{release}

%description devel
Contains files needed to compile and link software using the kerberos
libraries, and the documentation covering functions etc.

%setup -q
#%setup -q -a 9
%patch7 -p1 -b .readline
%patch8 -p1 -b .editline


%configure \
	--bindir=%{krb5prefix}/bin \
	--sbindir=%{krb5prefix}/sbin \
	--libexecdir=%{krb5prefix}/sbin \
	--localstatedir=%{_var}/%{krb5prefix} \
	--mandir=%{krb5prefix}/man \
	--datadir=%{krb5prefix}/share \
	--disable-static \
	--with-readline \
	--with-readline-lib=%{_libdir} \
	--with-readline-include=%{_includedir}/readline \
	--with-x \
	--disable-otp \
	--with-ipv6 \
	--enable-kcm \
	--without-openssl \
make %{?_smp_mflags}
make -C doc html


install -d $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}
#install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}

#install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/krb5.conf

install -D -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_initrddir}/%{name}
install -D -m 755 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
# FIXME install %{SOURCE2} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
# FIXME install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name}

mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d
install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/kadmind

#touch $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/krb5.keytab
touch $RPM_BUILD_ROOT%{_sysconfdir}/krb5.keytab
touch $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/kadmind.acl

rm -f $RPM_BUILD_ROOT%{_libdir}/lib{com_err,ss}.so*
rm -f $RPM_BUILD_ROOT%{_includedir}/{glob,fnmatch,ss/ss}.h
rm -f $RPM_BUILD_ROOT%{krb5prefix}/bin/mk_cmds
rm -f $RPM_BUILD_ROOT%{krb5prefix}/bin/{ftp,login,rcp,rsh,su,telnet}
rm -f $RPM_BUILD_ROOT%{krb5prefix}/sbin/{ftpd,popper,push,rshd,telnetd}
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man1/{ftp,login,rcp,rsh,su,telnet}.1
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man5/{ftpusers,login.access,qop}.5
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man8/{ftpd,popper,push,rshd,telnetd}.8

rm -rf $RPM_BUILD_ROOT%{krb5prefix}/man/cat*

rm -f $RPM_BUILD_ROOT%{_libdir}/*.la

gzip --force --recursive $RPM_BUILD_ROOT%{krb5prefix}/man


%post server
# Install the new ones.
/sbin/chkconfig --add krb5kdc
/sbin/chkconfig --add kadmin
#TODO install iprop master and slaves
#/sbin/chkconfig --add iprop

%preun server
 if [ "$1" = "0" ] ; then
      	/sbin/chkconfig --del krb5kdc
	/sbin/chkconfig --del kadmin
	/sbin/chkconfig --del kprop
	/sbin/service krb5kdc stop > /dev/null 2>&1 || :
#	/sbin/service iprop stop > /dev/null 2>&1 || :
	/sbin/service xinetd condrestart > /dev/null 2>&1 || :
exit 0

%postun server
if [ "$1" -ge 1 ] ; then
	/sbin/service krb5kdc condrestart > /dev/null 2>&1 || :
	/sbin/service krb524 condrestart > /dev/null 2>&1 || :
#	/sbin/service kprop condrestart > /dev/null 2>&1 || :
	/sbin/service xinetd condrestart > /dev/null 2>&1 || :
exit 0

%post libs 

/sbin/install-info %{_infodir}/heimdal.info.gz %{_infodir}/dir
/sbin/install-info %{_infodir}/hx509.info.gz %{_infodir}/dir
exit 0

%postun libs 
/sbin/install-info --delete %{_infodir}/heimdal.info.gz %{_infodir}/dir
/sbin/install-info --delete %{_infodir}/hx509.info.gz %{_infodir}/dir
exit 0

%files server
%config(noreplace) %{_sysconfdir}/xinetd.d/kadmind
%dir %{_localstatedir}/lib/%{name}
%config(noreplace) %{_localstatedir}/lib/%{name}/kadmind.acl
%dir %{krb5prefix}
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man1
%doc %dir %{krb5prefix}/man/man8
%doc %{krb5prefix}/man/man1/kimpersonate.1*
%doc %{krb5prefix}/man/man8/iprop.8*
%doc %{krb5prefix}/man/man8/iprop-log.8*
%doc %{krb5prefix}/man/man8/kstash.8*
%doc %{krb5prefix}/man/man8/hprop.8*
%doc %{krb5prefix}/man/man8/hpropd.8*
%doc %{krb5prefix}/man/man8/kadmind.8*
%doc %{krb5prefix}/man/man8/kdc.8*
%doc %{krb5prefix}/man/man8/kxd.8*
%doc %{krb5prefix}/man/man8/kfd.8*
%doc %{krb5prefix}/man/man8/kpasswdd.8*
%doc %{krb5prefix}/man/man8/kcm.8*
%doc %{krb5prefix}/man/man8/ipropd-*.8*
%doc doc/*.html lib/hdb/hdb.schema

%files libs
#%dir %{_sysconfdir}/%{name}
#attr(400,root,root) %ghost %{_sysconfdir}/%{name}/krb5.keytab
%attr(400,root,root) %ghost %{_sysconfdir}/krb5.keytab
%doc %{_infodir}/*.info.gz
%doc %{krb5prefix}/man/man8/kerberos.8*
%dir %{krb5prefix}
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man8

%files workstation
%doc %{krb5prefix}/man/man1/afslog.1*
%doc %{krb5prefix}/man/man1/kauth.1*
%doc %{krb5prefix}/man/*1/kdestroy.1*
%doc %{krb5prefix}/man/*1/kgetcred.1*
%doc %{krb5prefix}/man/man1/kinit.1*
%doc %{krb5prefix}/man/*1/klist.1*
%doc %{krb5prefix}/man/man1/kpasswd.1*
%doc %{krb5prefix}/man/man1/pagsh.1*
%doc %{krb5prefix}/man/man1/kf.1*
%doc %{krb5prefix}/man/man1/kx.1*
%doc %{krb5prefix}/man/man1/pfrom.1*
%doc %{krb5prefix}/man/man1/rxtelnet.1*
%doc %{krb5prefix}/man/man1/rxterm.1*
%doc %{krb5prefix}/man/man1/tenletxr.1*
%doc %{krb5prefix}/man/man1/xnlock.1*
%doc %{krb5prefix}/man/man5/krb5.conf.5*
%doc %{krb5prefix}/man/man5/mech.5*
%doc %{krb5prefix}/man/man8/verify_krb5_conf.8*
%doc %{krb5prefix}/man/man8/string2key.8*
%doc %{krb5prefix}/man/man8/kadmin.8*
%doc %{krb5prefix}/man/man8/ktutil.8*

%files devel
%dir %{krb5prefix}
%dir %{krb5prefix}/bin
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man1
%doc %dir %{krb5prefix}/man/man3
%doc %{krb5prefix}/man/man1/krb5-config.1*
%doc %{krb5prefix}/man/man3/*

# default: off
# description: Heimdal Kerberos Admin Daemon
service kadmind
	port	= 749
	socket_type	= stream
	wait 	= no
	user	= root
	server	= /usr/sbin/kadmind
	log_on_failure	+= USERID
	disable = yes


This is a digitally signed message part