Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fatal error: 'minimum_ellipsoid/khach.h' file not found #271

Open
rsjian opened this issue Mar 18, 2023 · 7 comments
Open

fatal error: 'minimum_ellipsoid/khach.h' file not found #271

rsjian opened this issue Mar 18, 2023 · 7 comments

Comments

@rsjian
Copy link

rsjian commented Mar 18, 2023

Very similar to #62, I'm getting an error installing the R interface according to the current instructions:

Rscript -e 'Rcpp::compileAttributes()'
R CMD INSTALL --no-multiarch --with-keep.source .

error:

In file included from direct_sampling.cpp:19:
In file included from ../../include/volume/volume_sequence_of_balls.hpp:23:
../../include/convex_bodies/vpolytope.h:20:10: fatal error: 'minimum_ellipsoid/khach.h' file not found
#include <minimum_ellipsoid/khach.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
22 warnings and 1 error generated.
make: *** [direct_sampling.o] Error 1
ERROR: compilation failed for package ‘volesti’
* removing ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/volesti’

my version info:

R version 4.2.3 (2023-03-15)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.1
@linktorahulraj
Copy link

hello @vissarion ,
I want to work on this issue please assign me.

@linktorahulraj
Copy link

hello @vissarion , I want to work on this issue please assign me.

hello @vissarion , this may solve this issue, please look at it

The C++ compiler needs to be told to look at this root path instead of /usr/include. This can be done by setting the CPLUS_INCLUDE_PATH env variable. We have to also include LLVM’s normal include path because this is where it should search first.

#Adjust your llvm and CLT include paths to match your setup
export CPLUS_INCLUDE_PATH=/usr/local/opt/llvm/include/c++/v1:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include

This should fix any fatal error: minimum_ellipsoid/khach.h file not found errors.
We might still run into linker errors like ld: library not found for -lxxx The linker also needs to be told to look for libraries in the CommandLineTools/Xcode paths by setting the LIBRARY_PATH env variable.

export LIBRARY_PATH=$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib

Make sure to add these export statements to the .bash_rc, .zshrc, .bash_profile, or whatever shell you use, to make these adjusted environment variables available in all terminals.

@rsjian
Copy link
Author

rsjian commented Mar 20, 2023

I found the issue. See:

PKG_CPPFLAGS= -I../../external/boost -I../../external/LPsolve_src/run_headers -I../../external/minimum_ellipsoid -I../../include

#include <minimum_ellipsoid/khach.h>

The include flag -I../../external/minimum_ellipsoid which should be -I../../external. There also needs to be an additional change from

to #include "minimum_ellipsoid/khach.h"

I then ran into another issue where colamd.h was being found in /usr/local/include instead of src/external/lpsolve/headers/include so I rewrote the following two lines

LP_SOLVE_CPPFLAGS=$(CPPFLAGS) -I../../headers/include \
-I$(R_INCLUDE_DIR) \

as

LP_SOLVE_CPPFLAGS=-I../../headers/include \
                  $(CPPFLAGS) \
                  -I$(R_INCLUDE_DIR) \

Afterwards I followed the following steps to install the package

  1. running in R console install.packages(c('rcmdcheck', 'devtools', 'Rcpp', 'RcppEigen', 'BH', 'testthat', 'downloader', 'xfun')) followed by setwd("/Users/rjian/volesti/cran_gen")
  2. running genCRANpkg.R
  3. running in R console setwd("/Users/rjian/volesti/cran_gen/cran_package") followed by devtools::install()

The context for running these steps instead of the instructions in the docs

Rscript -e 'Rcpp::compileAttributes()'
    R CMD INSTALL --no-multiarch --with-keep.source .

is that

Rproj_externals/lp_solve/liblp_solve.a:
@(cd Rproj_externals/lp_solve && $(MAKE) liblp_solve.a \
no longer works because of the changes in #183 which removed the directory Rproj_externals (containing the lp_solve source) from the repo and replaced it with a download in genCRANpkg.R

In retrospect maybe I should've just tried installing from master instead of develop, I'm not even trying to make any changes to the R interface.

@vissarion
Copy link
Member

Indeed the correct way of building and running the R interface is via genCRANpkg.R and this should be updated in the docs.

@NehaAr
Copy link

NehaAr commented Mar 22, 2023

can i also work on this issue

@NehaAr
Copy link

NehaAr commented Mar 22, 2023

I am able to install the complete interface. I am using Rstudio version 4.22

@NehaAr
Copy link

NehaAr commented Mar 22, 2023

@vissarion ..The interface is working fine.. I directly installed all the dependencies via RStudio. I am facing no issues in the installation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants