TileDB-Inc / TileDB-R

R interface to TileDB: The Modern Database
https://tiledb-inc.github.io/TileDB-R
Other
103 stars 18 forks source link

Install TileDB with the top-level `install-tiledb` target. #711

Closed teo-tsirpanis closed 6 months ago

teo-tsirpanis commented 6 months ago

Preparation for SC-36913

This PR updates the shell scripts to use the install-tiledb target to build and install TileDB, instead of invoking make twice – once in the build directory, and once in the tiledb subdirectory.

TileDB is going to remove the superbuild and become a single CMake project without the tiledb subdirectory, and with this PR the R API will be prepared for this.

eddelbuettel commented 6 months ago

Could I ask you to please restore the three files in local/ ? Deleting them has really nothing to do with this PR. I think I later added a .gitignore for the whole directory.

teo-tsirpanis commented 6 months ago

Feedback addressed. It seems github.dev automatically removed the files in local, restored them.

eddelbuettel commented 6 months ago

Yes, that is probably a side effect of the .gitignore added after the fact. Will clean that up eventually.

Thanks for making the change, and for keeping our build infra well-oiled. It matters.

Come to think about it, I will merge this in a minute or two or ten once the queued macOS ran over it too and then add a NEWS entry in the equally-pending #710.

eddelbuettel commented 6 months ago

@teo-tsirpanis Could this be related? I had a first fail in the nightly build in quite some time on this (lines 646 and below under 'Install Package':

-- Build files have been written to: /tmp/RtmperrptL/R.INSTALL4ecf1cc6df/tiledb/src/build
bootstrap success. Run "make" to build, "make check" to test, or "make -C tiledb install" to install.
Error: could not load cache
make[3]: *** [CMakeFiles/install-tiledb.dir/build.make:70: CMakeFiles/install-tiledb] Error 1
make[2]: *** [CMakeFiles/Makefile2:141: CMakeFiles/install-tiledb.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:148: CMakeFiles/install-tiledb.dir/rule] Error 2
make: *** [Makefile:150: install-tiledb] Error 2
using inst/tiledb/{lib,include}
configure: creating ./config.status
config.status: creating src/Makevars
** libs
using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’
using C++ compiler: ‘g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’
using C++17
g++ -std=gnu++17 -I"/usr/share/R/include" -DNDEBUG -I. -I../inst/include/  -I../inst/tiledb/include   -DTILEDB_SILENT_BUILD  -I'/usr/lib/R/site-library/Rcpp/include' -I'/usr/lib/R/site-library/RcppInt64/include' -I'/usr/lib/R/site-library/nanoarrow/include'     -fpic  -g -O2 -ffile-prefix-map=/build/r-base-H8urij/r-base-4.4.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -c RcppExports.cpp -o RcppExports.o
In file included from RcppExports.cpp:4:
../inst/include/tiledb.h:8:10: fatal error: tiledb/tiledb: No such file or directory
    8 | #include <tiledb/tiledb>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [/usr/lib/R/etc/Makeconf:204: RcppExports.o] Error 1
ERROR: compilation failed for package ‘tiledb’
* removing ‘/usr/local/lib/R/site-library/tiledb’
teo-tsirpanis commented 6 months ago

I think I know what the problem is, will open a PR.

eddelbuettel commented 6 months ago

Let's switch to DMs over slack please. I am 15+ mins into a build in a container. I am looking at

## Build
mkdir build
cd build
../tiledb-src/bootstrap --force-build-all-deps --enable-s3 --enable-serialization --linkage=shared
make -j 2 install-tiledb
cd ..

## Install
mkdir -p ../inst/tiledb
cp -ax build/dist/* ../inst/tiledb/
mkdir -p ../tiledb
cp -ax build/dist/* ../tiledb/

and I suspect the (needless dual) debug and release build is to blame.

PS And

bootstrap success. Run "make" to build, "make check" to test, or "make -C tiledb install" to install.
Error: could not load cache

is suspicious. Did cmake miss a build step here?

eddelbuettel commented 6 months ago

Fixed identified and confirmed, follow-up PR coming up.