Whamcloud - gitweb
LU-3269 build: Remove circular rpm dependency
authorChristopher J. Morrone <morrone2@llnl.gov>
Fri, 3 May 2013 17:35:11 +0000 (10:35 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 14 May 2013 15:29:50 +0000 (11:29 -0400)
The rpm package dependencies look a bit like this currently:

 lustre -> lustre-modules <-> lustre-osd-[ldiskfs|zfs] (via lustre-osd)

Note that the dependency between lustre-modules and lustre-osd-* goes both
ways.

We did that in the one direction because we need _something_ to
depend on the generic "Provides: lustre-osd" when we have server support
compiled in, so users will be clued in to the fact that they need to
select at least one of the lustre-osd-* packages.

In the other direction, the lustre-osd-* packages need to depend on
lustre-modules because the kernel modules contained in the lustre-osd-*
rpms really do use symbols from modules in the lustre-modules rpm.

RPM allows this circular dependency, but because of it the modules are not
necessarily installed in the order that we prefere.  Namely:

1) lustre
2) lustre-modules
3) lustre-osd-*

It can happen that the lustre-osd-* packages are installed before the
lustre-modules package, and then the sysadmin will see a screen full of
scary messages about missing symbols.

To fix that problem, we move the dependency on lustre-osd up one package
into the "lustre" package.  That makes the dependency graph look a bit
like:

   lustre -> lustre-modules
        |--> lustre-osd-[ldiskfs|zfs] (via lustre-osd)
   lustre-osd-[ldiskfs|zfs] -> lustre-modules

I by breaking the dependency loop, we get the desired package installation
order described above.

Change-Id: I7bab1d536e75ce4cf3eb70fa4569c435ec8b2d66
Signed-off-by: Christopher J. Morrone <morrone2@llnl.gov>
Reviewed-on: http://review.whamcloud.com/6259
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Faccini Bruno <bruno.faccini@intel.com>
Reviewed-by: Brian J. Murrell <brian.murrell@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre.spec.in

index d07949a..98086b8 100644 (file)
@@ -71,6 +71,9 @@ BuildRoot: %{_tmppath}/lustre-%{version}-root
 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
 Requires: %{name}-modules = %{version}
+%if ! %{is_client}
+Requires: lustre-osd
+%endif
 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
 
 %description
@@ -89,9 +92,6 @@ Requires: kernel-%{flavor}
 Requires: kernel = %{krequires}
 %endif
 %endif
-%if ! %{is_client}
-Requires: lustre-osd
-%endif
 Group: Development/Kernel
 
 %description modules