OS identification
val name : string B00.Store.keyname is the operating system name. Determined using the following steps, in order:
If the
unametool is available in the memo environment,nameis 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
COMSPECenvironment variable is defined in the memo environment,"windows". - Otherwise,
"unknown".
val version : string B00.Store.keyversion 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_IDfield 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
unametool is available in the memo environment the result ofuname -rand otherwise"unknown".
val distribution : string B00.Store.keydistribution is the operating system distribution or a package manager. This depends on the value of name:
"linux". Looks up theIDfield of os-release if available, if not found"linux""macos". If either thebreworporttool 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.keyfamily 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_LIKEin os-release if available. If not usesdistribution.- Otherwise. The value of
name
Executable file extension
val exe_ext : B00_std.Fpath.ext B00.Store.keyexe_ext is operating system specific file extension for executable files. This is:
".exe"ifnameis"windows".""otherwise.
Machine architecture
val arch : string B00.Store.keyarch is the architecture of the operating system, see also arch_normalized. Determined using the following steps (in order):
- If
unameis available in the memo environment,archis the lowercased token returned byuname -m. - If the
PROCESSOR_ARCHITECTUREenvironment variable is defined in the memo environment, its value unless it is"x86". In the latter case the value ofPROCESSOR_ARCHITEW6432or, if undefined,"x86". This is for Windows, see here for the rationale. - Otherwise,
"unknown".
val arch_normalized : string B00.Store.keyarch_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.keyarch_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.