I recently installed python-2.6.1 and then twisted-8.2.0 (outside of the python tree). One of my users is complaining that when he uses trial to test some twisted programs, although his test passes, he has to stare at a stack trace like this which mentions dropin.cache.new failing to be written:
$ cat foo.py #!/sw/external/python-2.6.1/bin/python from twisted.trial import unittest class MyTestClass(unittest.TestCase): def test_foobar(self): print 'hello, world!' self.failUnless(1 == 1) $ /sw/external/twisted-8.2.0/bin/trial ./foo.py /sw/external/twisted-8.2.0/lib/python/twisted/persisted/sob.py:12: DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys /sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py:12: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha /sw/external/twisted-8.2.0/lib/python/twisted/web/microdom.py:181: SyntaxWarning: assertion is always true, perhaps remove parentheses? assert (oldChild.parentNode is self, Traceback (most recent call last): File "/sw/external/twisted-8.2.0/lib/python/twisted/python/usage.py", line 241, in parseOptions self.postOptions() File "/sw/external/twisted-8.2.0/lib/python/twisted/scripts/trial.py", line 293, in postOptions self['reporter'] = self._loadReporterByName(self['reporter']) File "/sw/external/twisted-8.2.0/lib/python/twisted/scripts/trial.py", line 279, in _loadReporterByName for p in plugin.getPlugins(itrial.IReporter): File "/sw/external/twisted-8.2.0/lib/python/twisted/plugin.py", line 200, in getPlugins allDropins = getCache(package) --- <exception caught here> --- File "/sw/external/twisted-8.2.0/lib/python/twisted/plugin.py", line 179, in getCache dropinPath.setContent(pickle.dumps(dropinDotCache)) File "/sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py", line 623, in setContent f = sib.open('w') File "/sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py", line 433, in open return open(self.path, mode+'b') exceptions.IOError: [Errno 30] Read-only file system: '/sw/external/twisted-8.2.0/lib/python/twisted/plugins/dropin.cache.new' foo MyTestClass test_foobar ... hello, world! [OK] ------------------------------------------------------------------------ ------- Ran 1 tests in 0.023s PASSED (successes=1) I would consider this to be an install bug. Evidently, trial uses plugins, which upon reading http://twistedmatrix.com/projects/core/documentation/howto/plugin.html#a uto3 I find that plugins need up-to-date dropin.cache files to be built, or else they'll be built dynamically; the latter step fails in my case due to my site-wide install being on a read-only directory. The docs say "when installing or removing software which provides Twisted plugins, the site administrator should be sure the cache is regenerated"; however all I did was install twisted itself, not any specific plugins. All I did to install twisted was 'python setup.py install --home=...' and at no later point did I ever add new plugins to it. Why can't the install take care of initial dropin.cache generation for me? I see a related issue http://twistedmatrix.com/trac/ticket/2409. Regardless of whether ticket 2409 goes anywhere, should I raise an issue that the install should really take care of initial dropin.cache generation, much like python install takes care of std lib .py->.pyc generation? Thanks.
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python