You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "tdhock (via GitHub)" <gi...@apache.org> on 2023/05/12 20:50:29 UTC

[GitHub] [arrow] tdhock opened a new issue, #35577: missing -lthrift flag when linking R arrow.so

tdhock opened a new issue, #35577:
URL: https://github.com/apache/arrow/issues/35577

   ### Describe the bug, including details regarding any error messages, version, and platform.
   
   Hi! I have compiled C++ libarrow from source, and installed it under my home directory. I am trying to install arrow R package from source, and I expected that I should be able to do that without manually adding any linker flags. However, I observe that the linker step creates arrow.so with libthrift link not found, unless I add `LDFLAGS=-lthrift` in my `~/.R/Makevars` file (which R reads to add flags to the linker command). Is this a bug? Does `-lthrift` need to be added to some config file that determines what flags are used for building the R package? Probably arrow/r/configure needs to generate arrow/r/src/Makevars with -lthrift under PKG_LIBS, which it does not have on my system, see below:
   
   ```
   PKG_CPPFLAGS=-I/home/tdhock/include  -DARROW_R_WITH_PARQUET -DARROW_R_WITH_DATASET -DARROW_R_WITH_ACERO -DARROW_R_WITH_JSON
   CXX_STD=CXX17
   PKG_LIBS=-L/home/tdhock/lib -larrow_acero -larrow_dataset -lparquet -larrow
   ```
    
   
   First, with `LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib -L${CONDA_PREFIX}/lib -Wl,-rpath=${CONDA_PREFIX}/lib -lthrift` in `~/.R/Makevars` it works as shown below
   
   ```
   (arrow) tdhock@maude-MacBookPro:~/arrow-git/cpp/build(main*)$ rm ../../r/src/arrow.so && LDFLAGS="-L$HOME/lib -Wl,-rpath=$HOME/lib -L$CONDA_PREFIX/lib -Wl,-rpath=$CONDA_PREFIX/lib -lthrift" ARROW_DEPENDENCY_SOURCE=SYSTEM ARROW_R_DEV=true LIBARROW_BINARY=false PKG_CONFIG_PATH=$HOME/lib/pkgconfig:$CONDA_PREFIX/lib/pkgconfig R CMD INSTALL ../../r
   Loading required package: grDevices
   * installing to library ‘/home/tdhock/lib/R/library’
   * installing *source* package ‘arrow’ ...
   ** using staged installation
   *** Generating code with data-raw/codegen.R
   Loading required package: grDevices
   Error in library(decor) : there is no package called ‘decor’
   Calls: suppressPackageStartupMessages -> withCallingHandlers -> library
   Execution halted
   *** Trying Arrow C++ found by pkg-config: /home/tdhock
   *** > Packages are both on development versions (13.0.0-SNAPSHOT, 12.0.0.9000)
   *** > If installation fails, rebuild the C++ library to match the R version
   *** > or retry with FORCE_BUNDLED_BUILD=true
   PKG_CFLAGS=-I/home/tdhock/include  -DARROW_R_WITH_PARQUET -DARROW_R_WITH_DATASET -DARROW_R_WITH_ACERO -DARROW_R_WITH_JSON
   PKG_LIBS=-L/home/tdhock/lib -larrow_acero -larrow_dataset -lparquet -larrow
   ** libs
   using C++ compiler: ‘g++ (GCC) 10.1.0’
   using C++17
   g++ -std=gnu++17 -shared -L/home/tdhock/lib/R/lib -L/home/tdhock/lib -Wl,-rpath=/home/tdhock/lib -L/home/tdhock/.local/share/r-miniconda/envs/arrow/lib -Wl,-rpath=/home/tdhock/.local/share/r-miniconda/envs/arrow/lib -lthrift -o arrow.so RTasks.o altrep.o array.o array_to_vector.o arraydata.o arrowExports.o bridge.o buffer.o chunkedarray.o compression.o compute-exec.o compute.o config.o csv.o dataset.o datatype.o expression.o extension-impl.o feather.o field.o filesystem.o io.o json.o memorypool.o message.o parquet.o r_to_arrow.o recordbatch.o recordbatchreader.o recordbatchwriter.o safe-call-into-r-impl.o scalar.o schema.o symbols.o table.o threadpool.o type_infer.o -L/home/tdhock/lib -larrow_acero -larrow_dataset -lparquet -larrow -L/home/tdhock/lib/R/lib -lR
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libstdc++.so: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libstdc++.so: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   installing to /home/tdhock/lib/R/library/00LOCK-r/00new/arrow/libs
   ** R
   ** inst
   ** byte-compile and prepare package for lazy loading
   Loading required package: grDevices
   ** help
   *** installing help indices
   ** building package indices
   Loading required package: grDevices
   ** installing vignettes
   ** testing if installed package can be loaded from temporary location
   Loading required package: grDevices
   ** checking absolute paths in shared objects and dynamic libraries
   ** testing if installed package can be loaded from final location
   Loading required package: grDevices
   ** testing if installed package keeps a record of temporary installation path
   * DONE (arrow)
   ```
   
   Second, with `LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib -L${CONDA_PREFIX}/lib -Wl,-rpath=${CONDA_PREFIX}/lib` I get a broken link shown below,
   
   ```
   (arrow) tdhock@maude-MacBookPro:~/arrow-git/cpp/build(main*)$ rm ../../r/src/arrow.so && LDFLAGS="-L$HOME/lib -Wl,-rpath=$HOME/lib -L$CONDA_PREFIX/lib -Wl,-rpath=$CONDA_PREFIX/lib -lthrift" ARROW_DEPENDENCY_SOURCE=SYSTEM ARROW_R_DEV=true LIBARROW_BINARY=false PKG_CONFIG_PATH=$HOME/lib/pkgconfig:$CONDA_PREFIX/lib/pkgconfig R CMD INSTALL ../../r
   Loading required package: grDevices
   * installing to library ‘/home/tdhock/lib/R/library’
   * installing *source* package ‘arrow’ ...
   ** using staged installation
   *** Generating code with data-raw/codegen.R
   Loading required package: grDevices
   Error in library(decor) : there is no package called ‘decor’
   Calls: suppressPackageStartupMessages -> withCallingHandlers -> library
   Execution halted
   *** Trying Arrow C++ found by pkg-config: /home/tdhock
   *** > Packages are both on development versions (13.0.0-SNAPSHOT, 12.0.0.9000)
   *** > If installation fails, rebuild the C++ library to match the R version
   *** > or retry with FORCE_BUNDLED_BUILD=true
   PKG_CFLAGS=-I/home/tdhock/include  -DARROW_R_WITH_PARQUET -DARROW_R_WITH_DATASET -DARROW_R_WITH_ACERO -DARROW_R_WITH_JSON
   PKG_LIBS=-L/home/tdhock/lib -larrow_acero -larrow_dataset -lparquet -larrow
   ** libs
   using C++ compiler: ‘g++ (GCC) 10.1.0’
   using C++17
   g++ -std=gnu++17 -shared -L/home/tdhock/lib/R/lib -L/home/tdhock/lib -Wl,-rpath=/home/tdhock/lib -L/home/tdhock/.local/share/r-miniconda/envs/arrow/lib -Wl,-rpath=/home/tdhock/.local/share/r-miniconda/envs/arrow/lib -o arrow.so RTasks.o altrep.o array.o array_to_vector.o arraydata.o arrowExports.o bridge.o buffer.o chunkedarray.o compression.o compute-exec.o compute.o config.o csv.o dataset.o datatype.o expression.o extension-impl.o feather.o field.o filesystem.o io.o json.o memorypool.o message.o parquet.o r_to_arrow.o recordbatch.o recordbatchreader.o recordbatchwriter.o safe-call-into-r-impl.o scalar.o schema.o symbols.o table.o threadpool.o type_infer.o -L/home/tdhock/lib -larrow_acero -larrow_dataset -lparquet -larrow -L/home/tdhock/lib/R/lib -lR
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libstdc++.so: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libstdc++.so: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
   /usr/bin/ld: warning: /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
   installing to /home/tdhock/lib/R/library/00LOCK-r/00new/arrow/libs
   ** R
   ** inst
   ** byte-compile and prepare package for lazy loading
   Loading required package: grDevices
   ** help
   *** installing help indices
   ** building package indices
   Loading required package: grDevices
   ** installing vignettes
   ** testing if installed package can be loaded from temporary location
   Loading required package: grDevices
   Error: package or namespace load failed for ‘arrow’ in dyn.load(file, DLLpath = DLLpath, ...):
    unable to load shared object '/home/tdhock/lib/R/library/00LOCK-r/00new/arrow/libs/arrow.so':
     libthrift.so.0.15.0: cannot open shared object file: No such file or directory
   Error: loading failed
   Execution halted
   ERROR: loading failed
   * removing ‘/home/tdhock/lib/R/library/arrow’
   * restoring previous ‘/home/tdhock/lib/R/library/arrow’
   (arrow) tdhock@maude-MacBookPro:~/arrow-git/cpp/build(main*)$ ldd ../../r/src/arrow.so 
   	linux-vdso.so.1 (0x00007ffc9e8c4000)
   	libgtk3-nocsd.so.0 => /usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0 (0x00007f03ee2cb000)
   	libarrow_acero.so.1300 => /home/tdhock/lib/libarrow_acero.so.1300 (0x00007f03eda3f000)
   	libarrow_dataset.so.1300 => /home/tdhock/lib/libarrow_dataset.so.1300 (0x00007f03ecfc8000)
   	libparquet.so.1300 => /home/tdhock/lib/libparquet.so.1300 (0x00007f03ec5c2000)
   	libarrow.so.1300 => /home/tdhock/lib/libarrow.so.1300 (0x00007f03e899d000)
   	libR.so => /usr/lib/libR.so (0x00007f03e8374000)
   	libstdc++.so.6 => /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libstdc++.so.6 (0x00007f03e8160000)
   	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f03e7dc2000)
   	libgcc_s.so.1 => /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libgcc_s.so.1 (0x00007f03eebd5000)
   	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f03e79d1000)
   	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f03e77cd000)
   	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f03e75ae000)
   	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f03e73a6000)
   	/lib64/ld-linux-x86-64.so.2 (0x00007f03ee9f8000)
   	libthrift.so.0.15.0 => not found
   	libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f03e7119000)
   	libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f03e6c4d000)
   	libblas.so.3 => /usr/lib/x86_64-linux-gnu/libblas.so.3 (0x00007f03e69e0000)
   	libreadline.so.7 => /lib/x86_64-linux-gnu/libreadline.so.7 (0x00007f03e6797000)
   	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f03e6526000)
   	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f03e6300000)
   	libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f03e60f0000)
   	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f03e5ed3000)
   	libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f03e5b1b000)
   	libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007f03e567a000)
   	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f03e5437000)
   	libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f03e520d000)
   	libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f03e3664000)
   (arrow) tdhock@maude-MacBookPro:~/arrow-git/cpp/build(main*)$ 
   ```
   
   This is with arrow from git, on Ubuntu 18.04, old intel 64-bit CPU.
   
   ### Component(s)
   
   R


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1577791957

   you wrote that libthrift.so is used by libparquet.so but it's not used directly by arrow.so (shared library for R) but that is not true according to ldd on my system (see output above, relevant part shown below)
   ```
   (arrow) tdhock@maude-MacBookPro:~/arrow-git/cpp/build(main*)$ ldd ../../r/src/arrow.so 
   ...
   	libthrift.so.0.15.0 => not found
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1554597418

   Above I was installing under my home directory, and linking to thrift from a conda env,
   ```
   installing to /home/tdhock/lib/R/library/00LOCK-r/00new/arrow/libs
   ,,,
   g++ -shared ... -L/home/tdhock/.local/share/r-miniconda/envs/arrow/lib -Wl,-rpath=/home/tdhock/.local/share/r-miniconda/envs/arrow/lib ...
   ```
   It is strange that this works for the other links, `-larrow_acero -larrow_dataset -lparquet -larrow` is included in the linker line by default, but `-lthrift` is missing. I expected that either all the required `-l` flags should be present, or none. (and user should not have to set `LD_LIBRARY_PATH`, that is highly unusually when installing R packages)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1577810749

   Also, I think there is some confusion between -rpath flags and -lthrift flag. 
   
   Actually, I have no problem with the rpath, that is normal that I set it in my ~/.R/Makevars file, because that is how to tell R to look for libraries to link against in non-standard directories, via `LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib -L${CONDA_PREFIX}/lib -Wl,-rpath=${CONDA_PREFIX}/lib`, it is completely normal/standard to do that when you have C++ libraries installed in non-standard directories. So your suggestion to modify the rpath via cmake -DCMAKE_INSTALL_RPATH=${CONDA_PREFIX}/lib ... I don't think would fix this issue though, because I told the R linker command about my non-standard rpath already via LDFLAGS in ~/.R/Makevars.
   
   My issue is that the `-lthrift` flag is missing from the linker command line, when creating the R package arrow.so file, so I get a broken link to thrift, and an error when I try to install the R package (without setting LD_LIBRARY_PATH). I believe that since R arrow depends on thrift (even if indirectly through parquet), then it is your responsibility to ensure that your build script creates a shared library with a valid link to thrift, right?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] kou commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "kou (via GitHub)" <gi...@apache.org>.
kou commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1577856231

   `ldd` show dependencies recursively. So non-direct dependencies (`libthrift.so` in this case) are also shown.
   If you want to show direct dependencies, you can use `readelf`: `LANG=C readelf --dynamic ../../r/src/arrow.so | grep Shared`
   
   In general, you need to specify rpath when you build Apache Arrow C++ not Apache Arrow R.
   Could you try installing Apache Arrow C++ with rpath and installing Apache Arrow R without `-lthrift`?
   
   Installing Apache Arrow R with `LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib -L${CONDA_PREFIX}/lib -Wl,-rpath=${CONDA_PREFIX}/lib -lthrift` works because `libthrift.so` is linked to `arrow.so` (not `libarrow.so` nor `libparquet.so`) with rpath. But `arrow.so` doesn't refer symbols in `libthrift.so` directly. So the linking isn't needed. It works but it's not a correct approach. (It's OK that you use this approach if you like it. But we don't recommend this approach.)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] westonpace commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "westonpace (via GitHub)" <gi...@apache.org>.
westonpace commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1551865779

   > I think that conda activate or something sets related environments such as LD_LIBRARY_PATH and PKG_CONFIG_PATH automatically.
   
   That's not quite accurate.  conda-build configures the origin / loader_path of shared libraries:
   
   ```
   Relative links require a special variable in the link itself:
   
       On Linux, the $ORIGIN variable allows you to specify "relative to this file as it is being executed".
   
       On macOS, the variables are:
   
           @rpath---Allows you to set relative links from the system load paths.
   
           @loader_path---Equivalent to $ORIGIN.
   
           @executable_path---Supports the Apple .app directory approach, where libraries know where they live relative to their calling application.
   
   Conda-build uses @loader_path on macOS and $ORIGIN on Linux because we install into a common root directory and can assume that other libraries are also installed into that root. The use of the variables allows you to build relocatable binaries that can be built on one system and sent everywhere.
   
   On Linux, conda-build modifies any shared libraries or generated executables to use a relative dynamic link by calling the patchelf tool. On macOS, the install_name_tool tool is used.
   ```
   
   However, that is the responsibility of conda-build and not the package being built (e.g. building arrow directly shouldn't configure the rpath but conda-forge's arrow recipe should).  This does mean, if you are building and installing into conda directly by setting `CMAKE_INSTALL_PREFIX` (I do this myself), then you either need to set the rpath manually (to emulate conda-build) or set `LD_LIBRARY_PATH`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] kou commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "kou (via GitHub)" <gi...@apache.org>.
kou commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1555269560

   If you prefer rpath, you need to set rpath to Apache Arrow C++ (not Apache Arrow R) by `cmake -DCMAKE_INSTALL_RPATH=${CONDA_PREFIX}/lib ...` as mentioned in https://github.com/apache/arrow/issues/35577#issuecomment-1546414064 .
   
   > It is strange that this works for the other links, `-larrow_acero -larrow_dataset -lparquet -larrow` is included in the linker line by default, but `-lthrift` is missing.
   
   It's not strange. `libtrhift.so` is used by `libparquet.so` but it's not used directly by `arrow.so` (shared library for R, not `libarrow.so` provided by Apache Arrow C++).
   So we don't need `-ltrhfit` to build `arrow.so` (shared library for R, not `libarrow.so` provided by Apache Arrow C++).
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock closed issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock closed issue #35577: missing -lthrift flag when linking R arrow.so
URL: https://github.com/apache/arrow/issues/35577


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] kou commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "kou (via GitHub)" <gi...@apache.org>.
kou commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1546301941

   We don't need `-lthrift` build flag.
   We need the `LD_LIBRARY_PATH=${CONDA_PREFIX}/lib:${LD_LIBRARY_PATH}` environment variable on run-time: `LD_LIBRARY_PATH=${CONDA_PREFIX}/lib:${LD_LIBRARY_PATH} ... R CMD INSTALL ...`
   (I assume that your `libtrift.so` is installed by conda.)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] kou commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "kou (via GitHub)" <gi...@apache.org>.
kou commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1577909636

   No problem. :-)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] kou commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "kou (via GitHub)" <gi...@apache.org>.
kou commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1546414064

   `cmake -DCMAKE_INSTALL_RPATH=${CONDA_PREFIX}/lib ...` may help you.
   
   BTW, why do you need to specify conda related paths explicitly? I think that `conda activate` or something sets related environments such as `LD_LIBRARY_PATH` and `PKG_CONFIG_PATH` automatically.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1546338591

   Of course setting LD_LIBRARY_PATH works, but I expected that I should be able to build the R package and then run it without having to set LD_LIBRARY_PATH. If that is not something you would like to support you can close this.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] tdhock commented on issue #35577: missing -lthrift flag when linking R arrow.so

Posted by "tdhock (via GitHub)" <gi...@apache.org>.
tdhock commented on issue #35577:
URL: https://github.com/apache/arrow/issues/35577#issuecomment-1577871775

   actually, `cmake -DCMAKE_INSTALL_RPATH=${CONDA_PREFIX}/lib ...` solved this issue. 
   when libparquet.so (built by arrow C++ cmake) has a broken link, it is passed on to the arrow.so in the R package.
   when libparquet.so has a good link, it is passed onto the arrow.so in the R package,
   ```
   (base) tdhock@maude-MacBookPro:~/lib$ ldd ~/arrow-git/r/src/arrow.so |grep thrift
   	libthrift.so.0.15.0 => /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libthrift.so.0.15.0 (0x00007f069ea0e000)
   (base) tdhock@maude-MacBookPro:~/lib$ ldd ~/arrow-git/r/src/arrow.so |grep thrift
   	libthrift.so.0.15.0 => /home/tdhock/.local/share/r-miniconda/envs/arrow/lib/libthrift.so.0.15.0 (0x00007f40652f2000)
   ```
   sorry for the trouble.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org