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 <bennet at umich.edu>
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?