On Fri, May 13, 2016 at 3:45 AM, Drew Parsons <[email protected]> wrote: > I've created an experimental branch in the petsc repo to start testing > the build of petsc 3.7.0, > https://anonscm.debian.org/git/debian-science/packages/petsc.git > > Using the same configuration we had for petsc 3.6, configure fails with > the error: > > can't pickle file objects > ******************************************************************************* > > > File > "/home/projects/petsc/build/petsc/config/BuildSystem/config/framework.py", > line 961, in processChildren > child.configure() > File "/home/projects/petsc/build/petsc/config/PETSc/Configure.py", line > 1114, in configure > self.framework.argDB['configureCache'] = cPickle.dumps(self.framework) > File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex > raise TypeError, "can't pickle %s objects" % base.__name__ > can't pickle file objects > > > > Can anyone make sense of this error? A simple configure (just > ./configure) does complete successfully, so it's some problem in the > complex configure line that we're using. But I don't know which term is > causing the problem.
The problem is the "--useThreads 0" flag. Replacing it with "--useThreads=0" fixes the problem. The build now fails for me with: /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c: In function ‘PetscErrorCode MatLUFactorNumeric_SuperLU(Mat, Mat, const MatFactorInfo*)’: /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:181:294: error: cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘19’ to ‘void dgssvx(superlu_options_t*, SuperMatrix*, int*, int*, int*, char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int, SuperMatrix*, SuperMatrix*, double*, double*, double*, double*, mem_usage_t*, SuperLUStat_t*, int*)’ /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:204:281: error: cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘17’ to ‘void dgsisx(superlu_options_t*, SuperMatrix*, int*, int*, int*, char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int, SuperMatrix*, SuperMatrix*, double*, double*, mem_usage_t*, SuperLUStat_t*, int*)’ /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c: In function ‘PetscErrorCode MatSolve_SuperLU_Private(Mat, Vec, Vec)’: /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:392:293: error: cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘19’ to ‘void dgssvx(superlu_options_t*, SuperMatrix*, int*, int*, int*, char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int, SuperMatrix*, SuperMatrix*, double*, double*, double*, double*, mem_usage_t*, SuperLUStat_t*, int*)’ /tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:414:280: error: cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘17’ to ‘void dgsisx(superlu_options_t*, SuperMatrix*, int*, int*, int*, char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int, SuperMatrix*, SuperMatrix*, double*, double*, mem_usage_t*, SuperLUStat_t*, int*)’ gmakefile:163: recipe for target 'x86_64-linux-gnu-real-debug/obj/src/mat/impls/aij/seq/superlu/superlu.o' failed Probably too old superlu? > Has anyone started using petsc 3.7 for themselves yet? I haven't used petsc 3.7 yet, but we are testing dolfin-dev against petsc-dev, so the next release of dolfin should work fine with petsc 3.7. We expect to make the next release of dolfin before the summer. Johannes

