bpo-36588: On AIX, remove major version from sys.platform (GH-12787)
On AIX, sys.platform doesn't contain the major version anymore.
Always return 'aix', instead of 'aix3' .. 'aix7'. Since
older Python versions include the version number, it is recommended to
always use sys.platform.startswith('aix').
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index 52026f6..591972e 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -1014,7 +1014,7 @@
This string contains a platform identifier that can be used to append
platform-specific components to :data:`sys.path`, for instance.
- For Unix systems, except on Linux, this is the lowercased OS name as
+ For Unix systems, except on Linux and AIX, this is the lowercased OS name as
returned by ``uname -s`` with the first part of the version as returned by
``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, *at the time
when Python was built*. Unless you want to test for a specific system
@@ -1024,12 +1024,15 @@
# FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
# Linux-specific code here...
+ elif sys.platform.startswith('aix'):
+ # AIX-specific code here...
For other systems, the values are:
================ ===========================
System ``platform`` value
================ ===========================
+ AIX ``'aix'``
Linux ``'linux'``
Windows ``'win32'``
Windows/Cygwin ``'cygwin'``
@@ -1042,6 +1045,12 @@
older Python versions include the version number, it is recommended to
always use the ``startswith`` idiom presented above.
+ .. versionchanged:: 3.8
+ On AIX, :attr:`sys.platform` doesn't contain the major version anymore.
+ It is always ``'aix'``, instead of ``'aix5'`` or ``'aix7'``. Since
+ older Python versions include the version number, it is recommended to
+ always use the ``startswith`` idiom presented above.
+
.. seealso::
:attr:`os.name` has a coarser granularity. :func:`os.uname` gives
diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst
index aa75bee..bf28e5f 100644
--- a/Doc/whatsnew/3.8.rst
+++ b/Doc/whatsnew/3.8.rst
@@ -700,6 +700,11 @@
raised when getting the attribute from the type dictionary are no longer
ignored. (Contributed by Serhiy Storchaka in :issue:`35459`.)
+* On AIX, :attr:`sys.platform` doesn't contain the major version anymore.
+ It is always ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``. Since
+ older Python versions include the version number, it is recommended to
+ always use the ``sys.platform.startswith('aix')``.
+ (Contributed by M. Felt in :issue:`36588`.)
Changes in the Python API
-------------------------
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-04-11-14-36-55.bpo-36588.wejLoC.rst b/Misc/NEWS.d/next/Core and Builtins/2019-04-11-14-36-55.bpo-36588.wejLoC.rst
new file mode 100644
index 0000000..77d2fa4
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-04-11-14-36-55.bpo-36588.wejLoC.rst
@@ -0,0 +1,5 @@
+On AIX, :attr:`sys.platform` doesn't contain the major version anymore.
+Always return ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``. Since
+older Python versions include the version number, it is recommended to
+always use ``sys.platform.startswith('aix')``.
+Contributed by M. Felt.
diff --git a/configure b/configure
index fcfa714..72589fd 100755
--- a/configure
+++ b/configure
@@ -3281,6 +3281,7 @@
MACHDEP="$ac_md_system$ac_md_release"
case $MACHDEP in
+ aix*) MACHDEP="aix";;
linux*) MACHDEP="linux";;
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
@@ -10199,7 +10200,6 @@
-
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
diff --git a/configure.ac b/configure.ac
index 880e47f..30e8587 100644
--- a/configure.ac
+++ b/configure.ac
@@ -404,6 +404,7 @@
MACHDEP="$ac_md_system$ac_md_release"
case $MACHDEP in
+ aix*) MACHDEP="aix";;
linux*) MACHDEP="linux";;
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;