platform — System identification support code and utilities
package require platform ?1.0.10?
platform::generic
platform::identify
platform::patterns identifier
The platform package provides several utility commands useful
for the identification of the architecture of a machine running Tcl.
Whilst Tcl provides the tcl_platform array for identifying the
current architecture (in particular, the platform and machine
elements) this is not always sufficient. This is because (on Unix
machines) tcl_platform reflects the values returned by the
uname command and these are not standardized across platforms and
architectures. In addition, on at least one platform (AIX) the
tcl_platform(machine) contains the CPU serial number.
Consequently, individual applications need to manipulate the values in
tcl_platform (along with the output of system specific
utilities) - which is both inconvenient for developers, and introduces
the potential for inconsistencies in identifying architectures and in
naming conventions.
The platform package prevents such fragmentation - i.e., it
establishes a standard naming convention for architectures running Tcl
and makes it more convenient for developers to identify the current
architecture a Tcl program is running on.
- platform::identify
-
This command returns an identifier describing the platform the Tcl
core is running on. The returned identifier has the general format
OS-CPU. The OS part of the identifier may contain
details like kernel version, libc version, etc., and this information
may contain dashes as well. The CPU part will not contain
dashes, making the preceding dash the last dash in the result.
- platform::generic
-
This command returns a simplified identifier describing the platform
the Tcl core is running on. In contrast to platform::identify it
leaves out details like kernel version, libc version, etc. The
returned identifier has the general format OS-CPU.
- platform::patterns identifier
-
This command takes an identifier as returned by
platform::identify and returns a list of identifiers describing
compatible architectures.
This can be used to allow an application to be shipped with multiple builds of
a shared library, so that the same package works on many versions of an
operating system. For example:
package require platform
# Assume that app script is .../theapp/bin/theapp.tcl
set binDir [file dirname [file normalize [info script]]]
set libDir [file join $binDir .. lib]
set platLibDir [file join $libDir [platform::identify]]
load [file join $platLibDir support[info sharedlibextension]]
operating system, cpu architecture, platform, architecture
Copyright © 2006 ActiveState Software Inc