From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 12 Sep 2018 23:43:19 +0000 (-0700) Subject: closes bpo-34652: Always disable lchmod on Linux. (GH-9234) X-Git-Tag: v3.6.7rc1~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bdace2ea53c578184235729a4cf383891084cc70;p=thirdparty%2FPython%2Fcpython.git closes bpo-34652: Always disable lchmod on Linux. (GH-9234) (cherry picked from commit 40caa05fa4d1810a1a6bfc34e0ec930c351089b7) Co-authored-by: Benjamin Peterson --- 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 5eebb0510e5c..1944a7259172 100755 --- a/configure +++ b/configure @@ -11377,6 +11377,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 #include " diff --git a/configure.ac b/configure.ac index 7ee66343ff84..0eb0bcfa3f9e 100644 --- a/configure.ac +++ b/configure.ac @@ -3495,6 +3495,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.), ,