Pegasus Enhancement Proposal (PEP)
PEP #: 186
Title: Product ID Override Clean-up
Version: 1.0
Created: 26 July 2004
Authors: Roger Kumpf
Status: Complete
Version History:
Version | Date | Author | Change Description |
---|---|---|---|
1.0 | 26 July 2004 | Roger Kumpf | Initial submittal |
Abstract: The product name, version, and status associated with a Pegasus release should have default values that apply across platforms and yet be overridable by vendors. Support for this feature is partially in place, but needs clean-up.
Pegasus currently has a mechanism to override the default Pegasus product name, version, and status (collectively referred to as "product ID" in this document). This mechanism is configured on a per-platform basis, such that different product ID values can be statically defined for each platform.
The existing mechanism is deficient in several respects:
A PEGASUS_OVERRIDE_PRODUCT_ID flag is read from the environment to determine whether the Pegasus default product ID is overridden. If this variable is not defined, the Pegasus default product ID is used, as defined in pegasus/src/Pegasus/Common/PegasusVersion.h. If the override variable is defined, PegasusVersion.h will instead include the file pegasus/src/Pegasus/Common/ProductVersion.h.
The ProductVersion.h file is not included in the CVS repository, but is instead supplied externally by the vendor doing the override. This file must include definitions for the same variables as are otherwise defined in PegasusVersion.h (e.g., PEGASUS_NAME, PEGASUS_VERSION, and PEGASUS_STATUS), so that the code that uses these values does not need to understand whether a product ID override is in effect.
The product ID variables defined in PegasusVersion.h are renamed from {PEGASUS_NAME, PEGASUS_VERSION, PEGASUS_STATUS} to {PEGASUS_PRODUCT_NAME, PEGASUS_PRODUCT_VERSION, PEGASUS_PRODUCT_STATUS} for clarity.
The PEGASUS_OVERRIDE_PRODUCT_ID flag takes the place of the previously existing PLATFORM_VERSION_SUPPORTED flag, which is hereby removed.
The proposed solution addresses the three deficiencies listed above. Code will be simplified by the use of the same variables whether the default product ID or an override is used. Pegasus consistency across platforms is improved through the definition of a single default Pegasus product ID.
Action | Planned | Actual | Comment |
PEP Submitted | 7/26/04 | 7/26/04 | |
PEP Reviewed | 7/30/04 | 7/30/04 | |
PEP Approved | 8/6/04 | 8/3/04 | |
Code Committed | 9/3/04 | 1/7/05 |
Copyright (c) 2004 EMC Corporation; Hewlett-Packard Development Company, L.P.; IBM Corp.; The Open Group;
VERITAS Software Corporation
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 9th 2004 by Martin Kirk
Template version: 1.8