Mate,
you can use the recently contributed docker env

dev/docker/run.sh
mvn clean install -Pfull-build......as usual

I hope we could clean up the C client, actually the most important issue is
that we have very few maintainers

Enrico

Enrico

Il giorno lun 14 ott 2019 alle ore 10:15 Szalay-Bekő Máté <
szalay.beko.m...@gmail.com> ha scritto:

> Hello Guys!
>
> I had to do compilations of the C-client on different platforms with
> different zookeeper versions recently, and usually it was a different
> challenge all the time :)
> I know it is possible to compile the C code without ant / maven, but I try
> to stick to the maven-way of the build below. I think that should be the
> 'official' way. But it is a bit buggy for 3.5.5...
>
> I recorded the following steps to build the 3.5.5 C-client in Ubuntu 18.4
> using docker:
>
>
> First, just start the docker image (I mount /tmp of the host machine to
> make it easier to copy the results later)
> docker run --volume /tmp:/root/host_tmp -it --rm ubuntu:18.04 /bin/bash
>
>
> then we install some additional packages, download the zookeeper source
> code and set a few environment variables needed for the build:
> apt update && apt install -y libcppunit-dev maven default-jdk-headless
> autoconf libtool g++ make software-properties-common pkg-config wget git
>
> cd /root
> wget
>
> https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5.tar.gz
> tar xzvf apache-zookeeper-3.5.5.tar.gz
>
> export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
> export ACLOCAL="aclocal -I /usr/share/aclocal"
>
> cd apache-zookeeper-3.5.5/
>
>
> with the g++ 7.4.0 we have in ubuntu 18.4, we get some compilation errors,
> so we have to apply patch for ZOOKEEPER-3539.patch
> wget
>
> https://github.com/apache/zookeeper/commit/44911cfb3f04af09947d51403d55418d422e5c41.patch
> -O
> <https://github.com/apache/zookeeper/commit/44911cfb3f04af09947d51403d55418d422e5c41.patch-O>
> ZOOKEEPER-3539.patch
>
> git apply ./ZOOKEEPER-3539.patch
>
>
> Now it gets a bit dirty... before ZOOKEEPER-3436, it is not possible to
> compile the C-client with maven without tests. If you would simply compile
> the code now, you would get some permission problems when the tests get
> started, what you can fix by:
> chmod +x
>
> /root/apache-zookeeper-3.5.5/zookeeper-client/zookeeper-client-c/../../zookeeper-client/zookeeper-client-c/tests/zkServer.sh
>
>
> The line above will help you to start the tests. Now the compilation should
> work. But some tests can fail (might be flaky?). I just saw e.g. the
> testcase testReadOnly to fail. I remember I also had some problems with
> this test in ZOOKEEER-2122, where I eventually I fixed it, (this PR is
> still open) but it might be unrelated. I haven't investigated why this
> fails for me on 3.5.5. So I simply choose to disable the tests here. We
> could skip the tests with ZOOKEEPER-3436, but this patch unfortunately can
> not be applied on 3.5.5 simply, so I did the following hack, which will
> skip the test execution:
> sed -i -e 's/clean check/clean install/g'
> zookeeper-client/zookeeper-client-c/pom.xml
>
>
> And now finally you can start the build using maven:
> mvn clean install -Pfull-build -DskipTests
>
>
> And you can find / save the compiled C-client code from docker to your host
> machine in the following way.
> (I also have an open PR which will help you with this, but it is not merged
> yet: ZOOKEEPER-3530)
> cp -R zookeeper-client/zookeeper-client-c/target/c/bin
> /root/host_tmp/zookeeper-c-client/
> cp -R zookeeper-client/zookeeper-client-c/target/c/lib
> /root/host_tmp/zookeeper-c-client/
> cp -R zookeeper-client/zookeeper-client-c/target/c/include
> /root/host_tmp/zookeeper-c-client/
>
>
> I hope it helps...
>
> Mate
>
> On Fri, Oct 11, 2019 at 7:51 PM Enrico Olivelli <eolive...@gmail.com>
> wrote:
>
> > Can you try with 3.5.6 release candidate 4?
> >
> > Enrico
> >
> > Il ven 11 ott 2019, 18:28 rajsura <rajkirans...@gmail.com> ha scritto:
> >
> > > I have used multiple versions of GCC and the issue exists in both the
> > cases
> > > (gcc-4.8.5 and gcc-7.3.1).
> > >
> > > I have followed the instructions given in README.txt. Also, due to
> > > restructuring in 3.5.5, I had to update ZOOKEEPER_PATH in configure.ac
> > as
> > > below:
> > >
> > > # Zookeeper C client
> > > ZOOKEEPER_PATH=${BUILD_PATH}/../../zookeeper-client/zookeeper-client-c
> > >
> > > I am encountering these errors during "make" phase:
> > >
> > > $ make
> > > make  all-recursive
> > > make[1]: Entering directory
> > >
> > >
> >
> '/tmp/bar2/zookeeper-3.5.5-SNAPSHOT/zookeeper-contrib/zookeeper-contrib-zktreeutil'
> > > Making all in src
> > > make[2]: Entering directory
> > >
> > >
> >
> '/tmp/bar2/zookeeper-3.5.5-SNAPSHOT/zookeeper-contrib/zookeeper-contrib-zktreeutil/src'
> > > g++ -DHAVE_CONFIG_H -I. -I..
> > >
> > >
> >
> -I/tmp/bar2/zookeeper-3.5.5-SNAPSHOT/zookeeper-contrib/zookeeper-contrib-zktreeutil/../../zookeeper-client/zookeeper-client-c/include
> > > -I/tmp/bar2/zookeeper-3.5.5-SNAPSHOT/zookeeper-contrib/zookeeper-contri
> > > b-zktreeutil/../../zookeeper-client/zookeeper-client-c/generated
> > > -I../include -I/usr/local/include -I/usr/include -I/usr/include/libxml2
> > -g
> > > -O2 -MT ZkAdaptor.o -MD -MP -MF .deps/ZkAdaptor.Tpo -c -o ZkAdaptor.o
> > > ZkAdaptor.cc
> > > ZkAdaptor.cc: In member function ‘bool
> > > zktreeutil::ZooKeeperAdapter::createNode(const string&, const string&,
> > int,
> > > bool)’:
> > > ZkAdaptor.cc:276:18: error: ‘zoo_create’ was not declared in this scope
> > >              rc = zoo_create( mp_zkHandle,
> > >                   ^~~~~~~~~~
> > > ZkAdaptor.cc:276:18: note: suggested alternative: ‘zoo_acreate’
> > >              rc = zoo_create( mp_zkHandle,
> > >                   ^~~~~~~~~~
> > >                   zoo_acreate
> > > ZkAdaptor.cc: At global scope:
> > > ZkAdaptor.cc:334:26: warning: dynamic exception specifications are
> > > deprecated in C++11 [-Wdeprecated]
> > >              int version) throw(ZooKeeperException)
> > >                           ^~~~~
> > > ZkAdaptor.cc: In member function ‘bool
> > > zktreeutil::ZooKeeperAdapter::deleteNode(const string&, bool, int)’:
> > > ZkAdaptor.cc:344:18: error: ‘zoo_delete’ was not declared in this scope
> > >              rc = zoo_delete( mp_zkHandle, path.c_str(), version );
> > >                   ^~~~~~~~~~
> > > ZkAdaptor.cc:344:18: note: suggested alternative: ‘zoo_adelete’
> > >              rc = zoo_delete( mp_zkHandle, path.c_str(), version );
> > >                   ^~~~~~~~~~
> > >                   zoo_adelete
> > > ZkAdaptor.cc: At global scope:
> > > ZkAdaptor.cc:383:77: warning: dynamic exception specifications are
> > > deprecated in C++11 [-Wdeprecated]
> > >      vector< string > ZooKeeperAdapter::getNodeChildren (const string
> > > &path)
> > > throw (ZooKeeperException)
> > >
> > > ^~~~~
> > > ZkAdaptor.cc: In member function
> ‘std::vector<std::basic_string&lt;char>
> > >
> > > zktreeutil::ZooKeeperAdapter::getNodeChildren(const string&)’:
> > > ZkAdaptor.cc:395:18: error: ‘zoo_get_children’ was not declared in this
> > > scope
> > >              rc = zoo_get_children( mp_zkHandle,
> > >                   ^~~~~~~~~~~~~~~~
> > > ZkAdaptor.cc:395:18: note: suggested alternative: ‘zoo_aget_children’
> > >              rc = zoo_get_children( mp_zkHandle,
> > >                   ^~~~~~~~~~~~~~~~
> > >                   zoo_aget_children
> > >
> > > Its weird because, "zookeeper.h" is accessible and these are still
> > defined
> > > in there.
> > >
> > > Am I missing something here? Thanks!
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Sent from: http://zookeeper-user.578899.n2.nabble.com/
> > >
> >
>

Reply via email to