[petsc-users] Petsc configure error (cmake)

Satish Balay balay at mcs.anl.gov
Wed Jul 29 12:20:22 CDT 2020


This is likely a cmake install bug. I submitted a report.

https://gitlab.kitware.com/cmake/cmake/-/issues/21035

The workaround is to have make in PATH. Attaching this patch.

And updating barry/2020-07-28/cmake-use-make-if-given/maint and https://gitlab.com/petsc/petsc/-/merge_requests/3004 with this change.

Satish

On Wed, 29 Jul 2020, Satish Balay via petsc-users wrote:

> I can reproduce this - by uninstalling system make.
> 
> Will check.
> 
> Satish
> 
> On Wed, 29 Jul 2020, Eda Oktay wrote:
> 
> > Dear Barry,
> > 
> > I am afraid I am still getting the same error.
> > 
> > Thanks,
> > 
> > Eda
> > 
> > Barry Smith <bsmith at petsc.dev>, 29 Tem 2020 Çar, 18:51 tarihinde şunu yazdı:
> > >
> > >
> > >   Please try
> > >
> > >   rm -rf  /home/eda/petsc-3.13.2/arch-linux-c-debug
> > >
> > >   and then run configure again.
> > >
> > >   It lists the correct make to use
> > >
> > > Makefile processor on this system is: /home/eda/petsc-3.13.2/arch-linux-c-debug/bin/make
> > >
> > >   So I am hoping the problem is from the crazy cmake caching nonsense and cleaning out the old files will resolve the problem.
> > >
> > >   Barry
> > >
> > >
> > > > On Jul 29, 2020, at 5:51 AM, Eda Oktay <eda.oktay at metu.edu.tr> wrote:
> > > >
> > > > Dear Barry,
> > > >
> > > > I wrote the followings:
> > > >
> > > > $ patch -p1 < cmakemake.patch
> > > >
> > > > And it gave the following line:
> > > >
> > > > (Stripping trailing CRs from patch; use --binary to disable.)
> > > > patching file config/BuildSystem/config/packages/cmake.py
> > > >
> > > > Then I configured as follows:
> > > >
> > > > ./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran
> > > > --download-make --download-mpich --download-openblas --download-metis
> > > > --download-parmetis --download-chaco
> > > > --download-slepc=/home/eda/slepc-v3.13.2.tar.gz --download-cmake
> > > > --with-X=1
> > > >
> > > > But I am still getting the following error:
> > > >
> > > > *******************************************************************************
> > > >         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log
> > > > for details):
> > > > -------------------------------------------------------------------------------
> > > > Error running configure on CMAKE
> > > > *******************************************************************************
> > > >
> > > > Am I doing something wrong?
> > > >
> > > > Thanks!
> > > >
> > > > Eda
> > > >
> > > > Barry Smith <bsmith at petsc.dev>, 29 Tem 2020 Çar, 00:10 tarihinde şunu yazdı:
> > > >>
> > > >>
> > > >>   It's better to use git than download tarballs. With tarballs it is not possible to access recent fixes or try branches.
> > > >>
> > > >>   Here is what you can do, save the attachment as cmakemake.patch and do
> > > >>
> > > >>   patch -p1 < cmakemake.patch
> > > >>
> > > >>   in the PETSc directory
> > > >>
> > > >>   Then run configure as before
> > > >>
> > > >>   Barry
> > > >>
> > > >>
> > > >>
> > > >>> On Jul 28, 2020, at 3:28 PM, Eda Oktay <eda.oktay at metu.edu.tr> wrote:
> > > >>>
> > > >>> Dear Barry,
> > > >>>
> > > >>> Thank you so much for answering. So, I downloaded the tar.gz file and
> > > >>> now, should I configure this file with my previous options?  I am
> > > >>> using the following line:
> > > >>>
> > > >>> ./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran
> > > >>> --download-make --download-mpich --download-openblas --download-metis
> > > >>> --download-parmetis --download-chaco
> > > >>> --download-slepc=/home/eda/slepc-v3.13.2.tar.gz --download-cmake
> > > >>> --with-X=1
> > > >>>
> > > >>> Thanks so much again!
> > > >>>
> > > >>> Eda
> > > >>>
> > > >>> Barry Smith <bsmith at petsc.dev>, 28 Tem 2020 Sal, 20:55 tarihinde şunu yazdı:
> > > >>>>
> > > >>>>
> > > >>>>  Eda,
> > > >>>>
> > > >>>>    The branch barry/2020-07-28/cmake-use-make-if-given/maint should resolve the problem. It will force the cmake build to use the make obtained with --download-make
> > > >>>>
> > > >>>>  Barry
> > > >>>>
> > > >>>>
> > > >>>> On Jul 28, 2020, at 9:48 AM, Matthew Knepley <knepley at gmail.com> wrote:
> > > >>>>
> > > >>>> On Tue, Jul 28, 2020 at 10:45 AM Eda Oktay <eda.oktay at metu.edu.tr> wrote:
> > > >>>>>
> > > >>>>> I am trying to download Petsc with slepc,openblas,mpich,meti,parmetis
> > > >>>>> and chaco to a linux computer (probably
> > > >>>>> ubuntu, I don't know because I am using it via ssh).
> > > >>>>>
> > > >>>>> Due to an error, for metis, I needed to download cmake, so I added
> > > >>>>> this option, too. However, I got an error telling me that "Error
> > > >>>>> running configure on cmake". I attached configure.log.
> > > >>>>>
> > > >>>>> What should I do? Where is the problem and how can ı fix it?
> > > >>>>>
> > > >>>>> Thank you so much for answering,
> > > >>>>
> > > >>>>
> > > >>>> It looks like you do not have 'make' in your path, and CMake is feaking out:
> > > >>>>
> > > >>>> CMAKE was just downloaded, forcing a rebuild because cannot determine if package has changed
> > > >>>>                       ===============================================================================
> > > >>>>                             Running configure on CMAKE; this may take several minutes
> > > >>>>                       ===============================================================================
> > > >>>>
> > > >>>> Running Executable WITHOUT threads to time it out
> > > >>>> Executing: ./configure --prefix=/home/eda/petsc-3.13.2/arch-linux-c-debug --parallel=40
> > > >>>> stdout:
> > > >>>> ---------------------------------------------
> > > >>>> CMake 3.15.6, Copyright 2000-2019 Kitware, Inc. and Contributors
> > > >>>> Found GNU toolchain
> > > >>>> C compiler on this system is: gcc
> > > >>>> C++ compiler on this system is: g++
> > > >>>> ---------------------------------------------
> > > >>>> Error when bootstrapping CMake:
> > > >>>> Cannot find appropriate Makefile processor on this system.
> > > >>>> Please specify one using environment variable MAKE.
> > > >>>> ---------------------------------------------
> > > >>>> Log of errors: /home/eda/petsc-3.13.2/arch-linux-c-debug/externalpackages/cmake-3.15.6/Bootstrap.cmk/cmake_bootstrap.log
> > > >>>> ---------------------------------------------
> > > >>>>
> > > >>>> Thanks,
> > > >>>>
> > > >>>>   Matt
> > > >>>>
> > > >>>>>
> > > >>>>> Eda
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>> --
> > > >>>> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> > > >>>> -- Norbert Wiener
> > > >>>>
> > > >>>> https://www.cse.buffalo.edu/~knepley/
> > > >>>>
> > > >>>>
> > > >>
> > > > <configure.log>
> > >
> > 
> 
-------------- next part --------------
commit 36cb5b562a18a3d476298b4d9097b3109fa4691c
Author: Barry Smith <bsmith at mcs.anl.gov>
Date:   Tue Jul 28 12:51:38 2020 -0500

    cmake:  provide make via PATH to cmake build. [so that make from --download-make is used]
    
    Note: providing MAKE env variable gives build error
    
    CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.
    
    Commit-type: error-checking, bug-fix, portability-fix, configure
    /spend 10m
    Reported-by: Eda Oktay <eda.oktay at metu.edu.tr>

diff --git a/config/BuildSystem/config/packages/cmake.py b/config/BuildSystem/config/packages/cmake.py
index 75d6078bb3..bd5bc9ed32 100644
--- a/config/BuildSystem/config/packages/cmake.py
+++ b/config/BuildSystem/config/packages/cmake.py
@@ -39,6 +39,16 @@ class Configure(config.package.GNUPackage):
       args.append(self.argDB['download-cmake-configure-options'])
     return args
 
+  def Install(self):
+    import sys
+    save_path = os.environ['PATH']
+    make_loc = os.path.dirname(self.make.make)
+    self.log.write('CMAKE build - adding MAKE location to PATH: '+make_loc+'\n')
+    os.environ['PATH'] += ':'+make_loc
+    retdir = config.package.GNUPackage.Install(self)
+    os.environ['PATH'] = save_path
+    return retdir
+
   def locateCMake(self):
     if 'with-cmake-exec' in self.argDB:
       self.log.write('Looking for specified CMake executable '+self.argDB['with-cmake-exec']+'\n')


More information about the petsc-users mailing list