Spec URL: http://people.redhat.com/steved/tirpc/lib/libtirpc.spec SRPM URL: http://people.redhat.com/steved/tirpc/lib/libtirpc-0.1.7-2.fc6.src.rpm Description: This package contains SunLib's implementation of transport-independent RPC (TI-RPC) documentation. This library forms a piece of the base of Open Network Computing (ONC), and is derived directly from the Solaris 2.3 source. This package also support RPC over IPv6 which will be needed for all the RPC applications to support IPv6
What's going to use it initially?
rpcbind which will replace portmapper. I'm currently working on the rpcbind rpm now, but I need the libtirpc lib in place to move forward. Once these two rpms are in place, I can start moving forward on porting all the RPC applications (yp*,nfs*, etc) to the new library resulting in making them IPv6 aware...
OK, I suppose. Would have really liked to have had this for feature freeze. :)
Updated Spec and SRPM. Found a problem with last release. Spec URL: http://people.redhat.com/steved/tirpc/lib/0.1.7-3/libtirpc.spec SRPM URL: http://people.redhat.com/steved/tirpc/lib/0.1.7-3/libtirpc-0.1.7-3.fc6.src.rpm WRT Bill's Comment #7, I totally agree... sooner whould have been better... So now if you would like be to wait until early FC7 for this code, just let me know...
NEEDSWORK: - Use %{name}-%{version} in URL field as to not have to update it every time the version changes. - Remove Requires(postun) and (pre) on ldconfig, as %post -p picks that up automagically - Replace %makeinstall with make install DESTDIR=%{buildroot}. %makeinstall has been known to break packages in bad ways and its use is highly discouraged. - Don't package static libraries unless there is a VERY good reason to do so. - Don't list gssapi requirement specifically, rpm will figure that out on its own when building the package.
> - Use %{name}-%{version} in URL field as to not have to update it every time the > version changes. Done. > - Remove Requires(postun) and (pre) on ldconfig, as %post -p picks that up > automagically Done. > - Replace %makeinstall with make install DESTDIR=%{buildroot}. %makeinstall > has been known to break packages in bad ways and its use is highly > discouraged. Done. This good to know... I thought %makeinstall was the approved way... I guess I'll need to make this change other packages as well... > - Don't package static libraries unless there is a VERY good reason to do so. So we no longer support static libraries in devel packages? I don't think that is a very good idea.. Being that this is a relatively small library and the RPC code is pretty legacy code... I really don't think excluding the static library is a good idea... > - Don't list gssapi requirement specifically, rpm will figure that out on its > own when building the package. So your saying to removed the "Requires: libgssapi" from the spec file? How will rpm know that this library needes libgssapi? I must be missing something... Spec file and RPM updated with first three requests...
> I really don't think excluding the static library is a good idea... There really is no good reason to ship a static archive. You're not doing anybody a favor. People might inadvertendly link against it and then security or bug updates don't apply. Of you want to debug a system and use a specially annotated DSO which would not be picked up. Archives should be distributed only for _very_ good reasons. Small and "pretty legacy" code is none of them.
I agree w/ Ulrich. As to the rpm requirement, When building a package, RPM will ldd the libraries to see what other libraries it is linked against and uses that to populate the Requires list. I tested your package myself by removing the explicit Requires: line, and the rpm that was produced DID have a requirement on the gssapi library. This is the preferred method of determining deps.
Just curious.... what is an valid reason to include a static library?
I personally can't think of any off the top of my head. Others have come up with reasons, I think maybe some stuff used in a boot environment where you don't want shared libs perhaps.
Bah, mid-air collision. But I'll submit this anyway. There are precious few reasons: The thing just won't build a .so. It needs to be linked against something used at boot time or in rescue or single user mode. That's about all I can think of. I've seen that argument for things like numerical libraries where folks want to link and then run on a different system without having to install any additional libraries, but I don't recall whether that argument was persuasive. Just realised I'm talking about Extras here and this is a Core review, so perhaps the criteria are different.
> - Don't package static libraries unless there is a VERY good reason to do so. Done. > - Don't list gssapi requirement specifically, rpm will figure that out on its > own when building the package. Done. Spec file and srpm have been updated.
Whoops, just noticed that buildroot isn't quite right. You have: %{_tmppath}/%{name}-%{version}-root-%(%{__id_u} -n) but the guidelines prefer: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) By using make install DESTDIR=%{buildroot} you no longer have to use --prefix=%{buildroot} as files install in the right place. %{_sysconfdir}/netconfig should probably be marked as a config file, perhaps even config(noreplace). 'netconfig' is a pretty generic term, does anything else use it or are you claiming that namespace? (:
Proposed patch to fix things up: Also changes my example removal of static libs to use your preferred %{buildroot} rather than $RPM_BUILD_ROOT, for consistency sake. --- ./libtirpc.spec.jk 2006-08-15 18:03:45.000000000 -0400 +++ ./libtirpc.spec 2006-08-15 18:36:58.000000000 -0400 @@ -51,7 +51,7 @@ %build autoreconf -fisv -%configure --enable-gss --prefix=%{buildroot} +%configure --enable-gss make all %install @@ -59,7 +59,7 @@ mkdir -p %{buildroot}/etc make install DESTDIR=%{buildroot} # Don't package .a or .la files -rm -f $RPM_BUILD_ROOT%{_libdir}/*.{a,la} +rm -f %{buildroot}%{_libdir}/*.{a,la} %post -p /sbin/ldconfig @@ -72,7 +72,7 @@ %defattr(-,root,root) %doc AUTHORS ChangeLog NEWS README %{_libdir}/libtirpc.so.* -%{_sysconfdir}/netconfig +%config(noreplace) %{_sysconfdir}/netconfig %files devel %defattr(0644,root,root,755)
Made the following changes and updated the spec file and srpm. diff -r1.6 libtirpc.spec 9c9 < BuildRoot: %{_tmppath}/%{name}-%{version}-root-%(%{__id_u} -n) --- > BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 54c54 < %configure --enable-gss --prefix=%{buildroot} --- > %configure --enable-gss 62c62 < rm -f $RPM_BUILD_ROOT%{_libdir}/*.{a,la} --- > rm -f %{buildroot}%{_libdir}/*.{a,la} 75c75 < %{_sysconfdir}/netconfig --- > %config(noreplace)%{_sysconfdir}/netconfig
Ok, approved. I'm supposing that this will be a dep of other things, so it doesn't need to be explicitly listed in comps, correct? Please close when you've built.
Build task: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=160309