Thanks for the response! I'll try that out. It didn't occur to me that
archlinux might be building the static libraries yet not installing them
(and/or removing them).

I'll check a few things and report back here what works.

Aldrin Montana
Computer Science PhD Student
UC Santa Cruz


On Fri, Feb 11, 2022 at 6:43 PM David Li <lidav...@apache.org> wrote:

> Hmm, interesting. So basically you want a PyArrow built against the system
> libarrow?
>
> That error is CMake complaining that the CMake files for libarrow were
> generated referencing static libraries, but that the actual files aren't
> there. Indeed, looking at the Arch Linux package, the static libraries are
> missing, except for libarrow_bundled_dependencies.
>
> But Arrow does build the static libraries by default. Is there something
> that removes them after build, as part of packaging? (Indeed, it seems
> makepkg removes them by default if there's an equivalent shared library
> [1], that would explain why libarrow_bundled_dependencies is there but
> nothing else is.) Perhaps try updating that PKGBUILD to also specify
> -DARROW_BUILD_STATIC=OFF; then CMake shouldn't generate arrow_static
> targets, and then CMake won't complain later. (I haven't yet tried this,
> though.) And as a bonus, you should save a bit of build time.
>
> [1]: https://archlinux.org/pacman/PKGBUILD.5.html
>
> -David
>
> On Fri, Feb 11, 2022, at 19:45, Aldrin wrote:
> > Hello!
> >
> >
> > *tl;dr. *I want to figure out how to build pyarrow from source (using
> pip)
> > and tell it *not* to use static libraries (libarrow.a). Can anyone tell
> me
> > if there's a CMAKE flag that the setup.py can propagate, or an option
> that
> > tells setup.py not to look for static libraries? I tried searching the
> > current version and nothing I've tried seems to have worked.
> >
> >
> >
> > *----*
> > *Long Version.*
> >
> > For context, I recompile the pyarrow package from source because
> installing
> > it from binaries causes it to have different symbols from the arrow
> > libraries I have installed. I'm not 100% positive on the mechanism here,
> > but I suspect that the following command basically just uses my system's
> > various toolchains to recompile pyarrow so that library symbols match:
> >
> > # where ArchLinux installs it
> > arrow_pythonopt="-DArrowPython_DIR=/usr/lib/cmake/arrow"
> > arrow_staticopt="-DARROW_BUILD_STATIC=OFF"
> >
> > # so that we can install a re-compiled binary
> > export PYARROW_CMAKE_OPTIONS="${arrow_pythonopt} ${arrow_staticopt}"
> > python3 -m pip install --no-binary :all: pyarrow==6.0.1
> >
> > I had been doing this since Arrow 5.0.0 and it seems to have stopped with
> > some update from the 7.0.0 release. Now, the problem is that when I
> > recompile pyarrow using the above command, I get the following error:
> >
> >   -- Found PkgConfig: /usr/bin/pkgconf (found version "1.8.0")
> >   CMake Error at /usr/lib64/cmake/arrow/ArrowTargets.cmake:96 (message):
> >     The imported target "arrow_static" references the file
> >
> >        "/usr/lib/libarrow.a"
> >
> > I am on Archlinux:
> >
> > 5.15.4-arch1-1
> >
> > and the system package builds arrow like so (defined here
> > <
> https://github.com/archlinux/svntogit-community/blob/packages/arrow/trunk/PKGBUILD
> >
> > ):
> >
> > (Some options omitted inline because I think they're irrelevant)
> >
> >   ARROW_BUILD_TOOLCHAIN=/usr           \
> >   ORC_HOME=/usr                        \
> >   DOUBLE_CONVERSION_HOME=/usr          \
> >   cmake                                \
> >     -B build                           \
> >     -S apache-${pkgname}-${pkgver}/cpp \
> >     -DCMAKE_INSTALL_PREFIX="/usr"      \
> >     -DCMAKE_INSTALL_LIBDIR="lib"       \
> >     -DCMAKE_BUILD_TYPE=Release         \
> >     -DARROW_DEPENDENCY_SOURCE=SYSTEM   \
> >     -DARROW_BUILD_TESTS=ON             \
> >     -DARROW_COMPUTE=ON                 \
> >     -DARROW_GANDIVA=OFF                \
> >     -DARROW_PYTHON=ON                  \
> >     -DARROW_SIMD_LEVEL=AVX2            \
> >     -DARROW_USE_GLOG=ON                \
> >     -DARROW_WITH_BROTLI=ON             \
> >     -DPARQUET_REQUIRE_ENCRYPTION=ON
> >   make -C build
> >
> >
> >
> > Thank you for any help you can offer!
> >
> > Aldrin Montana
> > Computer Science PhD Student
> > UC Santa Cruz
>

Reply via email to