classification
Title: Various chflags tests failing on FreeBSD/ZFS
Type: behavior Stage: resolved
Components: Tests Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: trent Nosy List: koobs, python-dev, trent
Priority: normal Keywords: patch

Created on 2012-08-21 02:23 by trent, last changed 2012-12-04 09:50 by koobs. This issue is now closed.

Files
File name Uploaded Description Edit
test_posix.patch trent, 2012-08-21 05:10 review
Messages (7)
msg168730 - (view) Author: Trent Nelson (trent) * (Python committer) Date: 2012-08-21 02:23
Both of my FreeBSD ZFS slaves (8.2 and 9.1) have chflags tests failing as follows:

======================================================================
ERROR: test_chflags (test.test_posix.PosixTester)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/buildslave/cpython/3.2.snakebite-freebsd91-amd64/build/Lib/test/test_posix.py", line 350, in test_chflags
    self._test_chflags_regular_file(posix.chflags, support.TESTFN)
  File "/home/buildslave/cpython/3.2.snakebite-freebsd91-amd64/build/Lib/test/test_posix.py", line 337, in _test_chflags_regular_file
    chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
OSError: [Errno 45] Operation not supported: '@test_48794_tmp'

======================================================================
ERROR: test_lchflags_regular_file (test.test_posix.PosixTester)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/buildslave/cpython/3.2.snakebite-freebsd91-amd64/build/Lib/test/test_posix.py", line 354, in test_lchflags_regular_file
    self._test_chflags_regular_file(posix.lchflags, support.TESTFN)
  File "/home/buildslave/cpython/3.2.snakebite-freebsd91-amd64/build/Lib/test/test_posix.py", line 337, in _test_chflags_regular_file
    chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
OSError: [Errno 45] Operation not supported: '@test_48794_tmp'

======================================================================
ERROR: test_lchflags_symlink (test.test_posix.PosixTester)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/buildslave/cpython/3.2.snakebite-freebsd91-amd64/build/Lib/test/test_posix.py", line 367, in test_lchflags_symlink
    dummy_symlink_st.st_flags | stat.UF_IMMUTABLE)
OSError: [Errno 45] Operation not supported: '/tmp/@test_48794_tmp-dummy-symlink'

----------------------------------------------------------------------

From the FreeBSD chflags(1) manual page:


     The flags are specified as an octal number or a comma separated list of
     keywords.  The following keywords are currently defined:

           arch, archived
                   set the archived flag (super-user only)

           opaque  set the opaque flag (owner or super-user only)

           nodump  set the nodump flag (owner or super-user only)

           sappnd, sappend
                   set the system append-only flag (super-user only)

           schg, schange, simmutable
                   set the system immutable flag (super-user only)

           sunlnk, sunlink
                   set the system undeletable flag (super-user only)

           uappnd, uappend
                   set the user append-only flag (owner or super-user only)

           uchg, uchange, uimmutable
                   set the user immutable flag (owner or super-user only)

           uunlnk, uunlink
                   set the user undeletable flag (owner or super-user only)


That indicates only root can set the immutable flag -- but if this were the case, I wonder why none of the other FreeBSD build slaves have run into it?

Either way, placeholder issue until I can spend some more time on it.
msg168739 - (view) Author: Trent Nelson (trent) * (Python committer) Date: 2012-08-21 05:10
Turns out ZFS doesn't support any of the traditional chflags flags -- it returns EOPNOTSUPP for all of them.

Attached patch factors this into the various chflags tests.
msg168823 - (view) Author: Roundup Robot (python-dev) Date: 2012-08-21 23:42
New changeset 019a2390b014 by Trent Nelson in branch '3.2':
Issue #15747: skip chflags UF_IMMUTABLE tests if EOPNOTSUPP is raised.
http://hg.python.org/cpython/rev/019a2390b014
msg168827 - (view) Author: Roundup Robot (python-dev) Date: 2012-08-21 23:59
New changeset f986d523e93d by Trent Nelson in branch 'default':
Issue #15747: skip chflags UF_IMMUTABLE tests if EOPNOTSUPP is raised.
http://hg.python.org/cpython/rev/f986d523e93d
msg176884 - (view) Author: Kubilay Kocak (koobs) Date: 2012-12-04 09:06
I think this needs a backport to 2.7, my FreeBSD buildbots are failing on that branch since moving buildbots home directory onto a ZFS fs:

======================================================================
ERROR: test_chflags (test.test_posix.PosixTester)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/home/buildbot/python/2.7.koobs-freebsd/build/Lib/test/test_posix.py", line 350, in test_chflags
    self._test_chflags_regular_file(posix.chflags, test_support.TESTFN)
  File "/usr/home/buildbot/python/2.7.koobs-freebsd/build/Lib/test/test_posix.py", line 337, in _test_chflags_regular_file
    chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
OSError: [Errno 45] Operation not supported: '@test_38161_tmp'

======================================================================
ERROR: test_lchflags_regular_file (test.test_posix.PosixTester)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/home/buildbot/python/2.7.koobs-freebsd/build/Lib/test/test_posix.py", line 354, in test_lchflags_regular_file
    self._test_chflags_regular_file(posix.lchflags, test_support.TESTFN)
  File "/usr/home/buildbot/python/2.7.koobs-freebsd/build/Lib/test/test_posix.py", line 337, in _test_chflags_regular_file
    chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
OSError: [Errno 45] Operation not supported: '@test_38161_tmp'

----------------------------------------------------------------------
Ran 38 tests in 0.455s

I won't link the buildbot log url here since it will not be valid forever.
msg176885 - (view) Author: Roundup Robot (python-dev) Date: 2012-12-04 09:07
New changeset 4beb1630544f by Victor Stinner in branch '2.7':
Issue #15747: skip chflags UF_IMMUTABLE tests if EOPNOTSUPP is raised.
http://hg.python.org/cpython/rev/4beb1630544f
msg176888 - (view) Author: Kubilay Kocak (koobs) Date: 2012-12-04 09:50
Confirming successful 2.7 build post Victors commit on both buildbots (standard & clang)
History
Date User Action Args
2012-12-04 09:50:49koobssetmessages: + msg176888
2012-12-04 09:07:44python-devsetmessages: + msg176885
2012-12-04 09:06:51koobssetnosy: + koobs
messages: + msg176884
2012-08-22 00:00:44trentsetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2012-08-21 23:59:39python-devsetmessages: + msg168827
2012-08-21 23:42:13python-devsetnosy: + python-dev
messages: + msg168823
2012-08-21 05:10:17trentsetfiles: + test_posix.patch
keywords: + patch
messages: + msg168739

stage: patch review
2012-08-21 02:23:55trentcreate