<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, May 13, 2016 at 3:23 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Who the fuck is holding a fucking file object:<div><br></div><div><div>*******************************************************************************</div><div>                ERROR in COMMAND LINE ARGUMENT to ./configure </div><div>-------------------------------------------------------------------------------</div><div>can't pickle file objects</div><div>*******************************************************************************</div><div><br></div><div><br></div><div>  File "/PETSc3/petsc/petsc-dev/config/BuildSystem/config/framework.py", line 961, in processChildren</div><div>    child.configure()</div><div>  File "/PETSc3/petsc/petsc-dev/config/PETSc/Configure.py", line 1096, in configure</div><div>    self.framework.argDB['configureCache'] = cPickle.dumps(self.framework)</div><div>  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy_reg.py", line 70, in _reduce_ex</div><div>    raise TypeError, "can't pickle %s objects" % base.__name__</div><div>can't pickle file objects</div></div></div></blockquote><div><br></div><div>This fixes it for me:</div><div><br></div><div><div>diff --git a/config/BuildSystem/logger.py b/config/BuildSystem/logger.py</div><div>index 9af1dcb..8878990 100644</div><div>--- a/config/BuildSystem/logger.py</div><div>+++ b/config/BuildSystem/logger.py</div><div>@@ -41,6 +41,8 @@ class Logger(args.ArgumentProcessor):</div><div>   def __getstate__(self):</div><div>     '''We do not want to pickle the default log stream'''</div><div>     d = args.ArgumentProcessor.__getstate__(self)</div><div>+    if 'logBkp' in d:</div><div>+        del d['logBkp']</div><div>     if 'log' in d:</div><div>: </div><div>       if d['log'] is Logger.defaultLog:</div><div>         del d['log']</div></div><div><br></div><div>which means some change to the basic configure objects is not respecting the logging rules,</div><div>which also explains why the parallel configure is now broken again.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>    Matt</div><span class=""><font color="#888888"><div><br></div>-- <br><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>