Hi all,

I am building firedrake using the system provided "mpicc" command. On the NERSC systems, the mpicc command is "cc", so I:

1) built my own firedrake fork of PETSc using the appropriate options 
2) passed in "--mpicc cc" to the firedrake-install command.

Everything works until I get to the PyOP2 stage. Upon inspection of firedrake-install.log, it seems the pip install for pyop2 still defaults to the "epic" command (which does not exist on the NERSC system) and not "cc" which I told the firedrake script to use.

2017-06-16 12:31:27,681 INFO   Installing PyOP2/

2017-06-16 12:31:27,681 DEBUG  /global/u1/j/jychang/Software/firedrake/bin/pip install --no-binary mpi4py --no-deps -vvv -e PyOP2/


2017-06-16 12:31:31,251 DEBUG  Obtaining file:///global/u1/j/jychang/Software/firedrake/src/PyOP2

  Running setup.py (path:/global/u1/j/jychang/Software/firedrake/src/PyOP2/setup.py) egg_info for package from file:///global/u1/j/jychang/Software/firedrake/src/PyOP2

    Running command python setup.py egg_info

    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'test_requires'

      warnings.warn(msg)

    running egg_info

    creating PyOP2.egg-info

    writing requirements to PyOP2.egg-info/requires.txt

    writing PyOP2.egg-info/PKG-INFO

    writing top-level names to PyOP2.egg-info/top_level.txt

    writing dependency_links to PyOP2.egg-info/dependency_links.txt

    writing manifest file 'PyOP2.egg-info/SOURCES.txt'

    reading manifest file 'PyOP2.egg-info/SOURCES.txt'

    reading manifest template 'MANIFEST.in'

    warning: no files found matching '*.c' under directory 'pyop2'

    writing manifest file 'PyOP2.egg-info/SOURCES.txt'

  Source in ./PyOP2 has version 0.13.0+299.g200780c, which satisfies requirement PyOP2==0.13.0+299.g200780c from file:///global/u1/j/jychang/Software/firedrake/src/PyOP2

Installing collected packages: PyOP2

  Running setup.py develop for PyOP2

    Running command /global/u1/j/jychang/Software/firedrake/bin/python -c "import setuptools, tokenize;__file__='/global/u1/j/jychang/Software/firedrake/src/PyOP2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps

    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'test_requires'

      warnings.warn(msg)

    running develop

    running egg_info

    writing requirements to PyOP2.egg-info/requires.txt

    writing PyOP2.egg-info/PKG-INFO

    writing top-level names to PyOP2.egg-info/top_level.txt

    writing dependency_links to PyOP2.egg-info/dependency_links.txt

    reading manifest file 'PyOP2.egg-info/SOURCES.txt'

    reading manifest template 'MANIFEST.in'

    warning: no files found matching '*.c' under directory 'pyop2'

    writing manifest file 'PyOP2.egg-info/SOURCES.txt'

    running build_ext

    cythoning pyop2/sparsity.pyx to pyop2/sparsity.cpp

    building 'pyop2.sparsity' extension

    creating build

    creating build/temp.linux-x86_64-2.7

    creating build/temp.linux-x86_64-2.7/pyop2

    mpicc -fno-strict-aliasing -fmessage-length=0 -grecord-gcc-switches -fstack-protector -O2 -Wall -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -fmessage-length=0 -grecord-gcc-switches -fstack-protector -O2 -Wall -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -DOPENSSL_LOAD_CONF -fPIC -Ipyop2 -I/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/numpy/core/include -I/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/petsc4py/include -I/global/homes/j/jychang/Software/petsc-fd/include -I/global/homes/j/jychang/Software/petsc-fd/arch-cori-c-opt/include -I/usr/include/python2.7 -c pyop2/sparsity.cpp -o build/temp.linux-x86_64-2.7/pyop2/sparsity.o

    unable to execute 'mpicc': No such file or directory

    error: command 'mpicc' failed with exit status 1

Cleaning up...

Command "/global/u1/j/jychang/Software/firedrake/bin/python -c "import setuptools, tokenize;__file__='/global/u1/j/jychang/Software/firedrake/src/PyOP2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps" failed with error code 1 in /global/u1/j/jychang/Software/firedrake/src/PyOP2/

Exception information:

Traceback (most recent call last):

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main

    status = self.run(options, args)

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run

    prefix=options.prefix_path,

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/req/req_set.py", line 784, in install

    **kwargs

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/req/req_install.py", line 845, in install

    install_options, global_options, prefix=prefix)

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/req/req_install.py", line 1007, in install_editable

    show_stdout=False)

  File "/global/u1/j/jychang/Software/firedrake/lib/python2.7/site-packages/pip/utils/__init__.py", line 707, in call_subprocess

    % (command_desc, proc.returncode, cwd))

InstallationError: Command "/global/u1/j/jychang/Software/firedrake/bin/python -c "import setuptools, tokenize;__file__='/global/u1/j/jychang/Software/firedrake/src/PyOP2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps" failed with error code 1 in /global/u1/j/jychang/Software/firedrake/src/PyOP2/


2017-06-16 12:31:31,253 INFO


Install log saved in firedrake-install.log


I feel like there's a way to circumvent (or fix) this issue. What is the best way to do this?

Thanks,
Justin