From Fedora Project Wiki
m (fix typo)
(fixups per toshio's comments)
Line 3: Line 3:


# 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-server
# All plugins are shared libraries, ending in .so.  These are to be installed in the /usr/%{_libdir}/cmpi/ directory.
* 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.
# 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.
<pre>
%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
</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 /usr/share/%{name}
# All the registration and mof files go to %{_datadir}/%{name}

Revision as of 20:00, 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
  1. All plugins are shared libraries, ending in .so. These are to be installed in the %{_libdir}/cmpi/ directory.
  2. 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}