rgdal errors from proj

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

rgdal errors from proj

Bennet Fauber
I am trying to install rgdal from source on CentOS 7.

I have installed geos, proj, and gdal successfully, they test fine.

This is with R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
compiled with gcc/8.2.0.

This is an HPC system, and I have the following modules loaded,

Currently Loaded Modules:
  1) gcc/8.2.0   3) image-libraries/190711.1   5) proj/6.2.1
  2) R/3.6.3     4) geos/3.8.1                 6) gdal/3.1.0

I get the output included below.  In that output, it appears that the
configure correctly identifies the proj options needed from
pkg-config, repeated here

configure: pkg-config proj exists, will use it
configure: PROJ version: 6.2.1
configure: proj CPP flags: -DPROJ_H_API
-I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
configure: PROJ LIBS: -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj

and

$ nm /sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib/libproj.so | grep
proj_context_create
00000000001ef4e0 T proj_context_create

seems to indicate that is truly there.

I unpacked the rgdal source tar ball and ran ./configure from its
directory and get the same error.  Looking in the generated
config.log, I find

configure:3869: checking for proj_context_create in -lproj
configure:3894: gcc -o conftest -O3 -mtune=native -I/usr/local/include
-DPROJ_H_API -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
-L/usr/local/lib64 conftest.c -lproj
-L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib -lgdal >&5
/usr/bin/ld: cannot find -lproj

and from that, it appears that configure is not including the correct
CFLAGS to include proj.  It is, instead, putting in
-L/usr/local/lib64, and that is not where the proj libraries are.

Extracting the confdefs.h and conftest.c file from config.log and
running the test compilation command modified by hand to include the
correct library directory for proj,

$ gcc -o conftest -O3 -mtune=native -I/usr/local/include -DPROJ_H_API
-I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
-L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib conftest.c -lproj
-L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib -lgdal
$ echo $?
0

So, I believe there is an error in configure.ac, or in the included
configure script that is not properly registering the library path for
proj.  Note, also, that I get the same result if using

$ ./configure --with-proj-include=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
\
    --with-proj-lib=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib \
    --with-proj-share=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/share/proj
. . . .
configure: error: proj_context_create not found in libproj.

Might anyone know what needs to be done to fix this?

Thanks,    -- bennet

Full output of install.packages('rgdal')
#----------------------------------------------
> install.packages('rgdal', "/sw/arcts/centos7/Rgeospatial/062020", repo="https:Warning: unable to access index for repository https:repo.miserver.it.umich.edu/cran/src/contrib:
> install.packages('rgdal', "/sw/arcts/centos7/Rgeospatial/062020", repos="https://repo.miserver.it.umich.edu/cran/")
trying URL 'https://repo.miserver.it.umich.edu/cran/src/contrib/rgdal_1.5-10.tar.gz'
Content type 'application/octet-stream' length 2300923 bytes (2.2 MB)
==================================================
downloaded 2.2 MB

* installing *source* package ‘rgdal’ ...
** package ‘rgdal’ successfully unpacked and MD5 sums checked
** using staged installation
configure: R_HOME: /sw/arcts/centos7/R/3.6.3/lib64/R
configure: CC: gcc
configure: CXX: g++ -std=gnu++11
configure: CXX11 is: g++, CXX11STD is: -std=gnu++11
configure: CXX is: g++ -std=gnu++11
configure: C++11 support available
configure: rgdal: 1.5-10
checking for /usr/bin/svnversion... yes
configure: svn revision: 1006
checking for gdal-config...
/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/bin/gdal-config
checking gdal-config usability... yes
configure: GDAL: 3.1.0
checking GDAL version >= 1.11.4... yes
checking GDAL version <= 2.5 or >= 3.0... yes
checking gdal: linking with --libs only... yes
checking GDAL: gdal-config data directory readable... yes
checking GDAL: /sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/share/gdal/stateplane.csv
readable... yes
configure: pkg-config proj exists, will use it
configure: PROJ version: 6.2.1
configure: proj CPP flags: -DPROJ_H_API
-I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
configure: PROJ LIBS: -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj
checking PROJ header API:... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking proj.h usability... yes
checking proj.h presence... yes
checking for proj.h... yes
checking for proj_context_create in -lproj... no
configure: error: proj_context_create not found in libproj.
ERROR: configuration failed for package ‘rgdal’

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: rgdal errors from proj

Bennet Fauber
After doing some experimentation,  I find that making the following
change to configure.ac and running autoreconf produces a configure
script that does not error.

*** configure.ac.original    2020-06-13 15:23:43.865733311 -0400
--- configure.ac    2020-06-13 15:25:05.455499480 -0400
***************
*** 397,402 ****
--- 397,404 ----
    fi # proj_config_ok
  fi # proj_lib_path

+ LIBS="${PKG_LIBS} ${LIBS}"
+
  AC_MSG_NOTICE([PROJ LIBS: ${PKG_LIBS}])

and leads to

checking for proj.h... yes
checking for proj_context_create in -lproj... yes
checking Using GDAL < 3 with PROJ >= 6... no
checking PROJ version >= 4.8.0... yes
checking PROJ: proj.db found and readable... yes
configure: Package CPP flags:
-I/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/include
-I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include   -DPROJ_H_API
configure: Package LIBS:  -L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib
-lgdal -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj
configure: creating ./config.status
config.status: creating src/Makevars

In config.log, this shows

configure:3871: checking for proj_context_create in -lproj
configure:3896: gcc -o conftest -O3 -mtune=native -I/usr/local/include
-DPROJ_H_API -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
-L/usr/local/lib64 conftest.c -lproj
-L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj
-L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib -lgdal >&5
configure:3896: $? = 0
configure:3905: result: yes

I am unable to find a repository to which I can submit this for
consideration as a patch.



On Sat, Jun 13, 2020 at 1:13 PM Bennet Fauber <[hidden email]> wrote:

>
> I am trying to install rgdal from source on CentOS 7.
>
> I have installed geos, proj, and gdal successfully, they test fine.
>
> This is with R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
> compiled with gcc/8.2.0.
>
> This is an HPC system, and I have the following modules loaded,
>
> Currently Loaded Modules:
>   1) gcc/8.2.0   3) image-libraries/190711.1   5) proj/6.2.1
>   2) R/3.6.3     4) geos/3.8.1                 6) gdal/3.1.0
>
> I get the output included below.  In that output, it appears that the
> configure correctly identifies the proj options needed from
> pkg-config, repeated here
>
> configure: pkg-config proj exists, will use it
> configure: PROJ version: 6.2.1
> configure: proj CPP flags: -DPROJ_H_API
> -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
> configure: PROJ LIBS: -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj
>
> and
>
> $ nm /sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib/libproj.so | grep
> proj_context_create
> 00000000001ef4e0 T proj_context_create
>
> seems to indicate that is truly there.
>
> I unpacked the rgdal source tar ball and ran ./configure from its
> directory and get the same error.  Looking in the generated
> config.log, I find
>
> configure:3869: checking for proj_context_create in -lproj
> configure:3894: gcc -o conftest -O3 -mtune=native -I/usr/local/include
> -DPROJ_H_API -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
> -L/usr/local/lib64 conftest.c -lproj
> -L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib -lgdal >&5
> /usr/bin/ld: cannot find -lproj
>
> and from that, it appears that configure is not including the correct
> CFLAGS to include proj.  It is, instead, putting in
> -L/usr/local/lib64, and that is not where the proj libraries are.
>
> Extracting the confdefs.h and conftest.c file from config.log and
> running the test compilation command modified by hand to include the
> correct library directory for proj,
>
> $ gcc -o conftest -O3 -mtune=native -I/usr/local/include -DPROJ_H_API
> -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
> -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib conftest.c -lproj
> -L/sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/lib -lgdal
> $ echo $?
> 0
>
> So, I believe there is an error in configure.ac, or in the included
> configure script that is not properly registering the library path for
> proj.  Note, also, that I get the same result if using
>
> $ ./configure --with-proj-include=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
> \
>     --with-proj-lib=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib \
>     --with-proj-share=/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/share/proj
> . . . .
> configure: error: proj_context_create not found in libproj.
>
> Might anyone know what needs to be done to fix this?
>
> Thanks,    -- bennet
>
> Full output of install.packages('rgdal')
> #----------------------------------------------
> > install.packages('rgdal', "/sw/arcts/centos7/Rgeospatial/062020", repo="https:Warning: unable to access index for repository https:repo.miserver.it.umich.edu/cran/src/contrib:
> > install.packages('rgdal', "/sw/arcts/centos7/Rgeospatial/062020", repos="https://repo.miserver.it.umich.edu/cran/")
> trying URL 'https://repo.miserver.it.umich.edu/cran/src/contrib/rgdal_1.5-10.tar.gz'
> Content type 'application/octet-stream' length 2300923 bytes (2.2 MB)
> ==================================================
> downloaded 2.2 MB
>
> * installing *source* package ‘rgdal’ ...
> ** package ‘rgdal’ successfully unpacked and MD5 sums checked
> ** using staged installation
> configure: R_HOME: /sw/arcts/centos7/R/3.6.3/lib64/R
> configure: CC: gcc
> configure: CXX: g++ -std=gnu++11
> configure: CXX11 is: g++, CXX11STD is: -std=gnu++11
> configure: CXX is: g++ -std=gnu++11
> configure: C++11 support available
> configure: rgdal: 1.5-10
> checking for /usr/bin/svnversion... yes
> configure: svn revision: 1006
> checking for gdal-config...
> /sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/bin/gdal-config
> checking gdal-config usability... yes
> configure: GDAL: 3.1.0
> checking GDAL version >= 1.11.4... yes
> checking GDAL version <= 2.5 or >= 3.0... yes
> checking gdal: linking with --libs only... yes
> checking GDAL: gdal-config data directory readable... yes
> checking GDAL: /sw/arcts/centos7/gcc_8_2_0/gdal/3.1.0/share/gdal/stateplane.csv
> readable... yes
> configure: pkg-config proj exists, will use it
> configure: PROJ version: 6.2.1
> configure: proj CPP flags: -DPROJ_H_API
> -I/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/include
> configure: PROJ LIBS: -L/sw/arcts/centos7/gcc_8_2_0/proj/6.2.1/lib -lproj
> checking PROJ header API:... yes
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking how to run the C preprocessor... gcc -E
> checking for grep that handles long lines and -e... /usr/bin/grep
> checking for egrep... /usr/bin/grep -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking proj.h usability... yes
> checking proj.h presence... yes
> checking for proj.h... yes
> checking for proj_context_create in -lproj... no
> configure: error: proj_context_create not found in libproj.
> ERROR: configuration failed for package ‘rgdal’

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.