Pegasus Enhancement Proposal (PEP)

PEP #: 328

PEP Type: Functional

Title: Extend Solaris port to update to Solaris 11 (Nevada) and  and IX86 platform with OpenSolaris

Version: 1.0 

Created: 2 June 08

Authors: Karl Schopmeyer, Mike Brasher

Status:  draft

Version History:

Version Date Author Change Description
1.0. 02 June 08   Initial Submission - Dummy to get number
1.1 2 July 2008 mb, ks Initial Submission
1.231 July 2008mb, ksAdd initial list of files changed - Approved  Ballot 155, 15 Aug 08

Abstract: Update the Solaris port to the current versions of Solaris including the Nevada release (version 11)


 

Definition of the Problem

This proposed change addresses the lack of an OpenPegasus release for recent versions of the Solaris operating system.

The Pegasus port for Solaris must be extended  to include the new release (codename Nevada), the IX86 platform, and new Pegasus functions that were sometimes not tested in earlier support. Note that Nevada is the code name for the next Solaris release ( version 11).  Early versions of this platform are available today for Sparc and IX86.  This will require address both the 32 and 64 bit versions of the IX86.

Proposed Solution

Overview

The solution will be provided by adding new platform definitions to the OpenPegasus platform. These will define conditional compilation mechanics for the four combinations of architecture and word size, ie SPARC-32 bit, SPARC-64 bit, x86-32 bit and x86-64 bit. The definition names include, respectively, SOLARIS_SPARC_CC, SOLARIS_SPARC_64, SOLARIS_IX86_CC and SOLARIS_IX86_64. Compilation is being done with Sun Studio 12; efforts with GNU compilation are not being addressed at this time.

The changes proposed are in line with the Pegasus standard porting and include the following:

1. Addition of new platform files for the Solaris IX86 32 bit and 64 bit platform  and the Sparc_64 platform with the CC compiler.

2. Any cleanup and code corrections necessary to pass the Pegasus test suite with these platform.

This port will include all major options including OOP providers, SSL, SLP, and IPV6.

This includes specifically including the platform definitions for the SOLARIS IX86 platform using the Solaris OS (version 11) and whatever issues testing of the main core and conditional features of Pegasus with this platform using the Sun CC compiler.  This will also be used to regularize the Solaris platform files  and #ifdefs since they have grown because a number of different developers and objectives and extending them to include the IX86 platform will require further extension.

Note that this includes redefining at least one function slightly (OpenSlp) to use the Sun version of the library rather than the current open source version.

This work will not support testing of earlier versions of Solaris or the gnu compiler.

Proposed Changes

Platform Make files

    1. Add platform make files for IX86 build of Solaris

    2. Create a common Solaris based Make file to define functions common to the Sparc and IX86 platforms.

The resulting Makefiles for Solaris in mak and for the CC compiler will be:

  1. platform_SOLARIS_IX86_CC - New platform
  2. platform_SOLARIS_SPARC_64_CC.mak - New platform definition.
  3. platform_SOLARIS_SPARC_CC.mak -  Modified. This is provided to allow a 32 bit build of Pegasus on the Sparc platform.  Note that there is NOT a 32 bit Sparc platform. The 32 bit options is only to allow creation of a 32 bit pegasus for the Sparc 64 bit platform
  4. platform_SOLARIS_X86_IX86_CC.mak - New Platform
  5. platform_SOLARIS_SPARC_XXX_CC.mak - New. Common elements for IX86 and Sparc platforms.

Other files changed for updated configuration include:

  1. config.h
  2. Updated and new platform header files  in Common

Specific Differences

1. OpenSLP.  Sun provides a version of SLP very similar to Open SLP) with Nevada that matches the OpenSLP APIs except for one differences. The PEGASUS_USE_OPENSLP will be deprecated and replaced with PEGASUS_USE_EXTERNAL_SLP=<name of external slp> where the name of external slp is SUNSLP or OPENSLP.  This allows extending for other external slp implementations in the future.

2. Create AtomicInt for the Sparc platform. It previously used the generic AtomicInt implementation.

3. Create a set of Default and Fixed Property Tables for Solaris.  This was never done before so that the config  setup used the default tables. They will be set the same as the Linux tables but this will allow the platform to define its own defaults and fixed entries in the future.

The port will support the OpenSSL that is provided with the Nevada OS.

Other changes

We do not intend to change functionality in any way but simply to correct issues with the combination of platform definitions and test options defined.

Other changes will be defined in the check-in bug and should represent only issues detected with the system interfaces / pegasus implementation or issues not found in earlier ports.

Issues

1. Add SOLARIS to the platforms that use the inet_aton function in Common/System.cpp.  We are not sure about this one since Sparc defines inet_aton in a non-standard header file.

Proposed Configuration Parameters

## Setup PEGASUS_ROOT, Library path, etc.

## Sample location for Pegasus source and build

export PEGASUS_ROOT=/opt/pegasus

export LD_LIBRARY_PATH=$PEGASUS_ROOT/SOLARIS_X86_64_CC/lib:/usr/local/lib/64
export PEGASUS_HOME=$PEGASUS_ROOT/SOLARIS_X86_64_CC

 

## Example Platform Defintions for the SPARC platform

export PEGASUS_PLATFORM=SOLARIS_X86_64_CC

## Common variables representing options ported and tested
export PEGASUS_ENABLE_IPV6=true
export PEGASUS_PAM_AUTHENTICATION=true
export PEGASUS_USE_PAM_STANDALONE_PROC=true
export PEGASUS_HAS_SSL=true
export PEGASUS_ENABLE_SLP=true
export PEGASUS_USE_OPENSLP=true
export PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=true
 

Change file list

mak/SDKMakefile
mak/config.mak
mak/platform_SOLARIS_IX86_CC.mak
mak/platform_SOLARIS_SPARC_64_CC.mak
mak/platform_SOLARIS_SPARC_CC.mak
mak/platform_SOLARIS_X86_64_CC.mak
mak/platform_SOLARIS_XXX_CC.mak
src/Pegasus/Client/tests/slp/Makefile
src/Pegasus/Common/tests/Abstract/Makefile
src/Pegasus/Config/DefaultPropertyTable.h
src/Pegasus/Config/DefaultPropertyTableSolaris.h
src/Pegasus/Config/FixedPropertyTable.h
src/Pegasus/Config/FixedPropertyTableSolaris.h
src/Pegasus/Security/Authentication/PAMBasicAuthenticator.cpp
src/Pegasus/Security/PAM/PAMAuth/Makefile
src/Pegasus/Security/PAM/PAMAuth/TestPAMAuth.c
src/Pegasus/Security/PAM/PAMAuth/pam.conf.solaris
src/Pegasus/Security/PAM/PAMAuth/readme.txt
src/Providers/slp/SLPProvider.cpp
src/slp/slp_agent/peg_slp_agent.cpp
src/slp/slp_agent/peg_slp_agent.h
src/slp/slp_client/src/cmd-utils/slp_client/lslp-solaris.h

Rationale

The purpose is to bring the Sun platform up to date with SOLARIS OS versions and hardware supported by SOLARIS

Schedule

Schedule for this work is for completion and availability of the changes in early July 2008.   This will not be available for 2.8.0 release but are working for early incorporation into 2.9 and possible retrofitting back into 2.8.1.

Discussion

 



Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
EMC Corporation; Symantec Corporation; The Open Group.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


 

Template last modified: March 26th 2006 by Martin Kirk
Template version: 1.11