From Fedora Project Wiki
(fixups per toshio's comments)
mNo edit summary
Line 2: Line 2:




# 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
# 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-serversblim-sfcb has this already, need to add it to tog-pegasus
* sblim-sfcb has this already, need to add it to tog-pegasus
 
# All plugins are shared libraries, ending in .so.  These are to be installed in the %{_libdir}/cmpi/ directory.
# All plugins are shared libraries, ending in .so.  These are to be installed in the %{_libdir}/cmpi/ directory.
# Each provider should register in %postin and unregister in %preun to the cim server.
# Each provider should register in %postin and unregister in %preun to the cim server.

Revision as of 20:01, 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
  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}