Can't define Expression through c++; returns fatal error: ufc.h: No such file or directory

Dear @dparsons ,
Thank you again a lot for dedicating so much time to my issue. I am answering you below:

I inspected it and here’s what I get:

$ ls /usr/local/lib/python3*/dist-packages
cycler-0.10.0.dist-info                    matplotlib                        __pycache__
cycler.py                                  matplotlib-3.3.4.dist-info        pylab.py
kiwisolver-1.3.1.dist-info                 matplotlib-3.3.4-py3.8-nspkg.pth  pyparsing-2.4.7.dist-info
kiwisolver.cpython-38-x86_64-linux-gnu.so  mpl_toolkits                      pyparsing.py

I don’t know if any of these packages may be causing the issue. Maybe kiwisolver?


Excuse me, do you mean the python code that generated the error? To obtain this error, I simply ran the code you suggested before:

python3 -c "import fenics; ccode = 'x[0] < 64 ? 1 : 0'; expression = fenics.Expression(ccode, degree=1); print(expression)"

But maybe I did’t get what you mean. Tell me whatever you need to know and I’ll be happy to tell you.


You are right, I’m sorry. What I meant is that running sh recompile.sh you get the same output of the error.log file, but I didn’t though of checking how the file actually looks like with vim. Here’s the actual content of the file (I broke the line to make it more readable):

#!/bin/bash
# Execute this file to recompile locally
c++ -Wall -shared -fPIC -std=c++11 -O3 -fno-math-errno 
-fno-trapping-math -ffinite-math-only -I/usr/local/include 
-I/usr/lib/petscdir/petsc3.12/x86_64-linux-gnu-real/include 
-I/usr/lib/slepcdir/slepc3.12/x86_64-linux-gnu-real/include 
-I/usr/lib/x86_64-linux-gnu/openmpi/include 
-I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi 
-I/usr/include/hdf5/openmpi -I/usr/include/eigen3 
-I/home/francop/.local/share/virtualenvs/prova-pipenv-7FqKejdp/src/fenics-ffc/ffc/backends/ufc 
-I/home/francop/.cache/dijitso/include dolfin_expression_daaaa038f9fbf86571aa796b263f0180.cpp 
-L/usr/lib/x86_64-linux-gnu/openmpi/lib 
-L/usr/lib/petscdir/petsc3.12/x86_64-linux-gnu-real/lib 
-L/usr/lib/slepcdir/slepc3.12/x86_64-linux-gnu-real/lib 
-L/usr/lib/x86_64-linux-gnu/hdf5/openmpi 
-L/usr/local/lib 
-L/home/francop/.cache/dijitso/lib 
-Wl,-rpath,/home/francop/.cache/dijitso/lib
-lmpi -lmpi_cxx -lpetsc_real -lslepc_real -lm -ldl -lz -lsz -lhdf5 -lboost_timer 
-ldolfin -olibdijitso-dolfin_expression_daaaa038f9fbf86571aa796b263f0180.so

And, even though I’m not an expert, I guess that’s the part causing the issue:

-I/home/francop/.local/share/virtualenvs/prova-pipenv-7FqKejdp/src/fenics-ffc/ffc/backends/ufc

For some reason it looks for ffc in a pipenv enivronment. Interestingly, that’s not the virtualenv mentioned earlier on the topic, but another random virtualenv I created today (after I encoutered this issue the first time).
I tried to delete the folder containing the environment, but this didn’t solve the issue (and the recompile.sh is still the same). Any other ideas?