OS detection

OS detection is a critical capability of many ROS tools in the ROS build toolchain. The rospkg.os_detect module provides and extendable library for detecting various operating systems. It is focused on detecting operating systems used with ROS.

You can test this library on your platform from the command line:

$ python -m rospkg.os_detect
OS Name:     ubuntu
OS Version:  10.04
OS Codename: lucid

Currently supported OSes:

  • Arch Linux
  • Cygwin
  • Debian
  • Fedora
  • FreeBSD
  • Gentoo
  • Mint
  • OS X
  • Pop! OS
  • Red Hat Linux
  • Slackware
  • Ubuntu
class rospkg.os_detect.OsNotDetected[source]

Exception to indicate failure to detect operating system.

class rospkg.os_detect.OsDetect(os_list)[source]

Detects the current operating system. This class will iterate over registered classes to lookup the active OS and version. The list of detectors can be overridden in the constructor; otherwise it will default to OsDetector classes provided by this library.

default_os_list

List of currently registered detectors. Must not be modified directly.

static register_default(os_name, os_detector)[source]

Register detector to be used with all future instances of OsDetect. The new detector will have precedence over any previously registered detectors associated with os_name.

detect_os() → tuple[source]
Returns:(os_name, os_version, os_codename), (str, str, str)
Raises:OsNotDetected if OS could not be detected
get_detector([name]) → OsDetector[source]

Get detector used for specified OS name, or the detector for this OS if name is None.

Raises:KeyError
add_detector(name, detector)[source]

Add detector to list of detectors used by this instance. detector will override any previous detectors associated with name.

Parameters:
  • name – OS name that detector matches
  • detectorOsDetector instance
get_os() → OsDetector

Get OsDetector for this operating system.

Raises:OsNotDetected if OS could not be detected
get_name() → str[source]
Returns:Name of current operating system. See OS_* definitions in this module for possible values.
Raises:OsNotDetected if OS could not be detected
get_version() → str[source]
Returns:Version of current operating system
Raises:OsNotDetected if OS could not be detected
get_codename() → str[source]
Returns:Codename of current operating system if available, or empty string if OS does not provide codename.
Raises:OsNotDetected if OS could not be detected
class rospkg.os_detect.OsDetector[source]

Generic API for detecting a specific OS.

get_codename()[source]
Returns:codename for this OS. (aka Ubuntu Hardy Heron = “hardy”). If codenames are not available for this OS, return empty string.
Raises:OsNotDetected if called on incorrect OS.
get_version()[source]
Returns:standardized version for this OS. (aka Ubuntu Hardy Heron = “8.04”)
Raises:OsNotDetected if called on incorrect OS.
is_os()[source]
Returns:if the specific OS which this class is designed to detect is present. Only one version of this class should return for any version.

OS name definitions

rospkg.os_detect.OS_ARCH

Name used for Arch Linux OS.

rospkg.os_detect.OS_CYGWIN

Name used for Cygwin OS.

rospkg.os_detect.OS_DEBIAN

Name used for Debian OS.

rospkg.os_detect.OS_FREEBSD

Name used for FreeBSD OS.

rospkg.os_detect.OS_GENTOO

Name used for Gentoo.

rospkg.os_detect.OS_MINT

Name used for Mint OS.

rospkg.os_detect.OS_OPENSUSE

Name used for OpenSUSE OS.

rospkg.os_detect.OS_OSX

Name used for OS X.

rospkg.os_detect.OS_POP

Name used for Pop! OS.

rospkg.os_detect.OS_RHEL

Name used for Red Hat Enterprise Linux.

rospkg.os_detect.OS_SLACKWARE

Name used for Slackware.

rospkg.os_detect.OS_UBUNTU

Name used for Ubuntu OS.

Linux helper methods

rospkg.os_detect.lsb_get_os() → str

Linux: wrapper around lsb_release to get the current OS

rospkg.os_detect.lsb_get_codename() → str

Linux: wrapper around lsb_release to get the current OS codename

rospkg.os_detect.lsb_get_version() → str

Linux: wrapper around lsb_release to get the current OS version

rospkg.os_detect.uname_get_machine() → str[source]

Linux: wrapper around uname to determine if OS is 64-bit