Hello,

I managed to get Thrift 0.12.0 compiled and installed from source on my
CentOS 7 setup. I configured it like so, mimicking what
ThirdpartyToolchain.cmake is doing
https://github.com/apache/arrow/blob/eec7b55c6f56207c2bae474c381931fd62cb7e72/cpp/cmake_modules/ThirdpartyToolchain.cmake#L1254

./configure --prefix=/opt/apache-thrift --enable-shared=no
--enable-tests=no --enable-tutorial=no --with-qt4=no --with-c_glib=no
--with-java=no --with-python=no --with-haskell=no --with-cpp=yes
--enable-static=yes --with-libevent=no --with-boost=/opt/3rdparty/boost
CPPFLAGS='-I/opt/3rdparty/boost/include'

I ended up with these library files and accompanying include files:

/opt/apache-thrift/lib:
total 24800
-rw-r--r--. 1 root root 22576888 Sep 23 23:09 libthrift.a
-rwxr-xr-x. 1 root root      947 Sep 23 23:09 libthrift.la
-rw-r--r--. 1 root root  2802400 Sep 23 23:09 libthriftz.a
-rwxr-xr-x. 1 root root      939 Sep 23 23:09 libthriftz.la
drwxr-xr-x. 2 root root     4096 Sep 23 23:09 pkgconfig

How could I make Arrow's cmake to pick them up instead of trying to get
Thrift again?

Thank you!
Rares


On Wed, Sep 22, 2021 at 5:33 PM Rares Vernica <rvern...@gmail.com> wrote:

> Eduardo,
>
> Thanks for the notes. I'd prefer something along the path of solution 2
> and build Thrift 0.12.0. I don't understand the relation between the error
> message I get "No rule to make target install" and the Apache mirror. It
> looks like the source code is downloaded, configured and built
> successfully. It just fails to install it.
>
> > cat thrift_ep-download-*.log
> -- Downloading...
>
>  
> dst='/proj/bridge/apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift-0.12.0.tar.gz'
>    timeout='none'
> -- Using src='
> http://www.apache.org/dyn/closer.cgi?action=download&filename=/thrift/0.12.0/thrift-0.12.0.tar.gz
> '
> -- [download 0% complete]
> -- [download 1% complete]
> ...
>
> [  7%] Performing download step (download, verify and extract) for
> 'thrift_ep'
> -- thrift_ep download command succeeded.  See also
> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_
> ep-stamp/thrift_ep-download-*.log
> [  7%] No patch step for 'thrift_ep'
> [  8%] No update step for 'thrift_ep'
> [  9%] Performing configure step for 'thrift_ep'
> -- thrift_ep configure command succeeded.  See also
> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_
> ep-stamp/thrift_ep-configure-*.log
> [  9%] Performing build step for 'thrift_ep'
> -- thrift_ep build command succeeded.  See also
> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_
> ep-stamp/thrift_ep-build-*.log
>
> I'm not sure how using the Python script from the PR can help.
>
> Are you saying that I need to get Thrift 0.9.1 since I'm using CentOS 7?
> Will it work on Arrow 3.0.0?
>
> Thanks!
> Rares
>
>
> On Mon, Sep 20, 2021 at 10:14 PM Eduardo Ponce <edponc...@gmail.com>
> wrote:
>
>> Hi Rares,
>>
>> The reason compilation fails when you set ARROW_PARQUET=ON is because this
>> flag also enables
>> installing Apache Thrift [1] and support for Thrift in CentOS systems is
>> fragile (see THRIFT-2559 [2]).
>> When you disable Parquet, Thrift is not installed as a required
>> dependency.
>>
>> I recommend you to try the following solutions:
>> 1. Install Thrift for CentOS independent from Arrow. You can find it in
>> the
>> official Apache Thrift webpage [3].
>>     Note that Arrow 3.0.0 installs Thrift 0.12.0 (see
>> arrow/cpp/thirdparty/versions.txt) but CentOS package has 0.9.1.
>> 2. There is an old Arrow PR [4] that contains a script to
>> identify/download
>> Thrift from the preferred Apache
>>     mirror instead of using the Apache distribution server.
>>
>> Hope this helps,
>> ~Eduardo
>>
>> [1]
>>
>> https://github.com/apache/arrow/blob/master/cpp/cmake_modules/ThirdpartyToolchain.cmake#L273-L274
>> [2] https://issues.apache.org/jira/browse/THRIFT-2559
>> [3]
>> https://centos.pkgs.org/7/epel-x86_64/thrift-0.9.1-15.el7.x86_64.rpm.html
>> [4] https://github.com/apache/arrow/pull/4558
>>
>> On Mon, Sep 20, 2021 at 11:56 PM Rares Vernica <rvern...@gmail.com>
>> wrote:
>>
>> > Hello,
>> >
>> > I'm compiling the C++ library for Arrow 3.0.0 in CentOS 7. It works
>> fine,
>> > but it breaks if I set ARROW_PARQUET=ON. I stops while trying to build
>> > thrift_ep
>> >
>> > > scl enable devtoolset-3 "cmake3 ..
>> >                                           \
>> >                  -DARROW_PARQUET=ON
>> >                                          \
>> >                  -DARROW_WITH_LZ4=ON
>> >                                           \
>> >                  -DARROW_WITH_ZLIB=ON
>> >                                          \
>> >                  -DARROW_COMPUTE=ON
>> >                                          \
>> >
>> -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-3/root/usr/bin/g++
>> >                                          \
>> >
>> -DCMAKE_C_COMPILER=/opt/rh/devtoolset-3/root/usr/bin/gcc
>> >                                          \
>> >                  -DCMAKE_INSTALL_PREFIX=/opt/apache-arrow"
>> >
>> > apache-arrow-3.0.0/cpp/build> make
>> > Scanning dependencies of target jemalloc_ep
>> > [  1%] Creating directories for 'jemalloc_ep'
>> > [  1%] Performing download step (download, verify and extract) for
>> > 'jemalloc_ep'
>> > -- jemalloc_ep download command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/jemalloc_ep-prefix/src/jemalloc_ep-stamp/jemalloc_ep-download-*.log
>> > [  2%] Performing patch step for 'jemalloc_ep'
>> > [  2%] No update step for 'jemalloc_ep'
>> > [  2%] Performing configure step for 'jemalloc_ep'
>> > -- jemalloc_ep configure command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/jemalloc_ep-prefix/src/jemalloc_ep-stamp/jemalloc_ep-configure-*.log
>> > [  3%] Performing build step for 'jemalloc_ep'
>> > -- jemalloc_ep build command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/jemalloc_ep-prefix/src/jemalloc_ep-stamp/jemalloc_ep-build-*.log
>> > [  3%] Performing install step for 'jemalloc_ep'
>> > -- jemalloc_ep install command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/jemalloc_ep-prefix/src/jemalloc_ep-stamp/jemalloc_ep-install-*.log
>> > [  4%] Completed 'jemalloc_ep'
>> > [  4%] Built target jemalloc_ep
>> > Scanning dependencies of target boost_ep
>> > [  4%] Creating directories for 'boost_ep'
>> > [  5%] Performing download step (download, verify and extract) for
>> > 'boost_ep'
>> > -- boost_ep download command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/boost_ep-prefix/src/boost_ep-stamp/boost_ep-download-*.log
>> > [  5%] No patch step for 'boost_ep'
>> > [  5%] No update step for 'boost_ep'
>> > [  6%] No configure step for 'boost_ep'
>> > [  6%] No build step for 'boost_ep'
>> > [  7%] No install step for 'boost_ep'
>> > [  7%] Completed 'boost_ep'
>> > [  7%] Built target boost_ep
>> > Scanning dependencies of target thrift_ep
>> > [  7%] Creating directories for 'thrift_ep'
>> > [  7%] Performing download step (download, verify and extract) for
>> > 'thrift_ep'
>> > -- thrift_ep download command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-download-*.log
>> > [  7%] No patch step for 'thrift_ep'
>> > [  8%] No update step for 'thrift_ep'
>> > [  9%] Performing configure step for 'thrift_ep'
>> > -- thrift_ep configure command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-configure-*.log
>> > [  9%] Performing build step for 'thrift_ep'
>> > -- thrift_ep build command succeeded.  See also
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-build-*.log
>> > [ 10%] Performing install step for 'thrift_ep'
>> > CMake Error at
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-install-RELEASE.cmake:37
>> > (message):
>> >   Command failed: 2
>> >
>> >    'make' 'install'
>> >
>> >   See also
>> >
>> >
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-install-*.log
>> >
>> >
>> > -- stdout output is:
>> >
>> > -- stderr output is:
>> > make[3]: *** No rule to make target `install'.  Stop.
>> >
>> > CMake Error at
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-install-RELEASE.cmake:47
>> > (message):
>> >   Stopping after outputting logs.
>> >
>> >
>> > make[2]: *** [thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-install]
>> Error
>> > 1
>> > make[1]: *** [CMakeFiles/thrift_ep.dir/all] Error 2
>> > make: *** [all] Error 2
>> >
>> >
>> > > cat
>> >
>> >
>> apache-arrow-3.0.0/cpp/build/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-install-*.log
>> > make[3]: *** No rule to make target `install'.  Stop.
>> >
>> > Am I missing some dependencies?
>> >
>> > Thank you!
>> > Rares
>> >
>>
>

Reply via email to