[Python-checkins] closes bpo-34652: Always disable lchmod on Linux. (GH-9234)

Benjamin Peterson webhook-mailer at python.org
Wed Sep 12 18:52:43 EDT 2018


https://github.com/python/cpython/commit/40caa05fa4d1810a1a6bfc34e0ec930c351089b7
commit: 40caa05fa4d1810a1a6bfc34e0ec930c351089b7
branch: master
author: Benjamin Peterson <benjamin at python.org>
committer: GitHub <noreply at github.com>
date: 2018-09-12T15:52:40-07:00
summary:

closes bpo-34652: Always disable lchmod on Linux. (GH-9234)

files:
A Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst
M configure
M configure.ac

diff --git a/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst b/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst
new file mode 100644
index 000000000000..cbdd7e0ec6ce
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst
@@ -0,0 +1 @@
+Ensure :func:`os.lchmod` is never defined on Linux.
diff --git a/configure b/configure
index fe642c439a4c..d341453443fc 100755
--- a/configure
+++ b/configure
@@ -11285,6 +11285,17 @@ fi
 done
 
 
+# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
+# links. Some libc implementations have a stub lchmod implementation that always
+# returns an error.
+if test "$MACHDEP" != linux; then
+  ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod"
+if test "x$ac_cv_func_lchmod" = xyes; then :
+
+fi
+
+fi
+
 ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include <sys/types.h>
        #include <dirent.h>
 "
diff --git a/configure.ac b/configure.ac
index a985ec2b000b..cf7328c4032a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3454,6 +3454,13 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
  truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
  wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
 
+# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
+# links. Some libc implementations have a stub lchmod implementation that always
+# returns an error.
+if test "$MACHDEP" != linux; then
+  AC_CHECK_FUNC(lchmod)
+fi
+
 AC_CHECK_DECL(dirfd,
     AC_DEFINE(HAVE_DIRFD, 1,
               Define if you have the 'dirfd' function or macro.), ,



More information about the Python-checkins mailing list