OS identification
val name : string B00.Store.key
name
is the operating system name. Determined using the following steps, in order:
If the
uname
tool is available in the memo environment,name
is the lowercased token returned byuname -s
, transformed as follows:"darwin"
is mapped on"macos"
- Otherwise left as is. XXX. Normalization is likely unsufficient.
- If the
COMSPEC
environment variable is defined in the memo environment,"windows"
. - Otherwise,
"unknown"
.
val version : string B00.Store.key
version
is the operating system version string. This depends on the value of name
:
"freebsd"
. The output ofuname -U
."linux"
. An Android heuristic is applied, otherwise looks theVERSION_ID
field of os-release if available, otherwise"unknown"
"macos"
. The output ofsw_vers -productVersion
."windows"
. The parsed output ofcmd.exe /c ver
. The Windows operating system to which this version string maps can be found here.- Otherwise if the
uname
tool is available in the memo environment the result ofuname -r
and otherwise"unknown"
.
val distribution : string B00.Store.key
distribution
is the operating system distribution or a package manager. This depends on the value of name
:
"linux"
. Looks up theID
field of os-release if available, if not found"linux"
"macos"
. If either thebrew
orport
tool is found in the memo environment then this is respectively"homebrew"
or"macports"
. The former takes over if both are present. If none are found"macos"
.- Otherwise. The value of
name
val family : string B00.Store.key
family
is the operating system family. This lumps the following name
names under a common identifier:
- The various BSDs as
"bsd"
"windows"
,"cygwin"
as"windows"
"linux"
, looks up the first value ofID_LIKE
in os-release if available. If not usesdistribution
.- Otherwise. The value of
name
Executable file extension
val exe_ext : B00_std.Fpath.ext B00.Store.key
exe_ext
is operating system specific file extension for executable files. This is:
".exe"
ifname
is"windows"
.""
otherwise.
Machine architecture
val arch : string B00.Store.key
arch
is the architecture of the operating system, see also arch_normalized
. Determined using the following steps (in order):
- If
uname
is available in the memo environment,arch
is the lowercased token returned byuname -m
. - If the
PROCESSOR_ARCHITECTURE
environment variable is defined in the memo environment, its value unless it is"x86"
. In the latter case the value ofPROCESSOR_ARCHITEW6432
or, if undefined,"x86"
. This is for Windows, see here for the rationale. - Otherwise,
"unknown"
.
val arch_normalized : string B00.Store.key
arch_normalized
normalizes some of the arch
values to more general identifiers like "arm32"
, "arm64"
, "ppc32"
, "ppc64"
, "x86_32"
and "x86_64"
.
val arch_bits : int B00.Store.key
arch_bits
is number of bits in a word on the architecture of the operating system, derived from arch_normalized
. Usually either 32
or 64
. If unknown warns on the memo and defaults to 64
.