PackagingDrafts/CMPIPlugins

From FedoraProject

Jump to: navigation, search

In Fedora 12 and above 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: cim server. This is a virtual provide that each CIMOM has.
    Warning (medium size).png
    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. 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.

  4. All the .registration and .mof files go to %{_datadir}/%{name}

  5. 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
    
Warning (medium size).png
as these aren't standard shared libraries or in a libdir path, do we need to run ldconfig?
Warning (medium size).png
can we avoid hard-coding the '-t pegasus' bit, to handle other CIMOMs?