Metadata-Version: 2.1
Name: LbPlatformUtils
Version: 4.2.4
Summary: utilities from platform detection
Home-page: https://gitlab.cern.ch/lhcb-core/LbPlatformUtils
Author: CERN - LHCb Core Software
Author-email: lhcb-core-soft@cern.ch
License: GPLv3+
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4

LHCb Platform Utilities
=======================
|pipeline status| |coverage report|

This is a project started to coordinate between LHCb Core Software and
LHCbDirac platform compatibility information.

It follows up on discussions in

-  `LHCBDIRAC-158: Fixing "Platforms" and "SystemConfig"
   parameters <https://its.cern.ch/jira/browse/LHCBDIRAC-158>`__
-  `LBCORE-1227: Enable -m sse4.2 in gcc6.2 opt
   compilation <https://its.cern.ch/jira/browse/LBCORE-1227>`__
-  `LBCORE-1228: Provide a CMTCONFIG build with -m
   avx2 <https://its.cern.ch/jira/browse/LBCORE-1228>`__
-  `LHCBDIRAC-626: dirac-pilot and CPU
   architecture <https://its.cern.ch/jira/browse/LHCBDIRAC-626>`__
-  `LBCORE-1247: extend lb-run to understand the special platform
   "best" <https://its.cern.ch/jira/browse/LBCORE-1247>`__


OS Id Derivation
----------------

The OS Id (``os_id``) is a short string used to identify the Operating System
(e.g. Linux flavour, MacOS, Windows...) and its version, usually in the format
``<name><version>``.

On Linux, the OS Id is computed from different possible sources:

-  file ``/etc/os-release`` [#os_release]_
    -  the name is extracted from the field ``ID``, up the first (optional)
       ``-``
    -  the version is extracted from the field ``VERSION_ID``
        -  if ``ID`` or ``ID_LIKE`` contain ``rhel`` or ``suse`` we keep only
           up to the first ``.``
        -  otherwise we remove all occurrences of ``.``
        -  if ``VERSION_ID`` is not present and the name is ``debian`` we
           set the version to ``testing``
-  file ``/etc/redhat-release``
    -  the name is
        -  ``slc`` if it contains ``CERN``
        -  ``sl`` if it contains ``Scientific Linux``
        -  ``centos`` if it contains ``CentOS``
        -  ``rhel`` if it contains ``Red Hat Enterprise Linux``
    -  the version is the number after the word *release*, up to the first
       ``.``
-  file ``/etc/lsb-release``
    -  the name is extracted from the field ``DISTRIB_ID``, up the first
       (optional) ``-``, and made lowercase
    -  the version is extracted from the field ``DISTRIB_RELEASE``
       removing all occurrences of ``.``

.. [#os_release] https://www.freedesktop.org/software/systemd/man/os-release.html

.. |pipeline status| image:: https://gitlab.cern.ch/lhcb-core/LbPlatformUtils/badges/master/pipeline.svg
                     :target: https://gitlab.cern.ch/lhcb-core/LbPlatformUtils/commits/master
.. |coverage report| image:: https://gitlab.cern.ch/lhcb-core/LbPlatformUtils/badges/master/coverage.svg
                     :target: https://gitlab.cern.ch/lhcb-core/LbPlatformUtils/commits/master


