From Fedora Project Wiki
mNo edit summary
(forgot to add postun)
Line 36: Line 36:
         > /dev/null 2>&1 || :;
         > /dev/null 2>&1 || :;
fi
fi
%postun -p /sbin/ldconfig
</pre>
</pre>


# Some of the providers may have hard-coded shared object names, which are dlopen()ed at runtime.  rpmlint will throw warnings to move *.so files to a -devel package, but this would be incorrect for these packages.  Such warnings may be ignored.
# Some of the providers may have hard-coded shared object names, which are dlopen()ed at runtime.  rpmlint will throw warnings to move *.so files to a -devel package, but this would be incorrect for these packages.  Such warnings may be ignored.
# All the registration and mof files go to %{_datadir}/%{name}
# All the registration and mof files go to %{_datadir}/%{name}

Revision as of 20:02, 3 February 2010

These are guidelines for packaging CMPI plugins, used by the tog-pegasus or sblim-sfcb CIMOMs. Such plugins are called "CIM providers", and each uses the CMPI interface to the CIMOM.


  1. Make sure each provider Requires: tog-pegasus (or sblim-sfcb). Each provider should "Require" either cim server for now. This is going to change in future, to Requires: cim-server. sblim-sfcb has this already, need to add it to tog-pegasus
  2. All plugins are shared libraries, ending in .so. These are to be installed in the %{_libdir}/cmpi/ directory.
  3. Each provider should register in %postin and unregister in %preun to the cim server.
%pre
if [ "$1" -gt 1 ]; then
# If upgrading, deregister old version
    %{_datadir}/%{name}/provider-register.sh \
        -d -t pegasus \
        -m %{_datadir}/%{name}/Linux_Network.mof \
        -r %{_datadir}/%{name}/Linux_Network.registration \
        > /dev/null 2>&1 || :;
fi

%post
/sbin/ldconfig
if [ "$1" -ge 1 ]; then
# Register Schema and Provider
    %{_datadir}/%{name}/provider-register.sh \
        -t pegasus \
        -m %{_datadir}/%{name}/Linux_Network.mof \
        -r %{_datadir}/%{name}/Linux_Network.registration \
        > /dev/null 2>&1 || :;
fi

%preun
if [ "$1" -eq 0 ]; then
# Deregister only if not upgrading
    %{_datadir}/%{name}/provider-register.sh \
        -d -t pegasus \
        -m %{_datadir}/%{name}/Linux_Network.mof \
        -r %{_datadir}/%{name}/Linux_Network.registration \
        > /dev/null 2>&1 || :;
fi

%postun -p /sbin/ldconfig
  1. Some of the providers may have hard-coded shared object names, which are dlopen()ed at runtime. rpmlint will throw warnings to move *.so files to a -devel package, but this would be incorrect for these packages. Such warnings may be ignored.
  2. All the registration and mof files go to %{_datadir}/%{name}