Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 473160 - dev-db/tarantool - An efficient, extensible in-memory data store.
Summary: dev-db/tarantool - An efficient, extensible in-memory data store.
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Default Assignee for New Packages
URL: http://tarantool.org/
Whiteboard: https://github.com/rtsisyk/tarantool-...
Keywords: InOverlay
Depends on:
Blocks:
 
Reported: 2013-06-13 07:04 UTC by Roman Tsisyk
Modified: 2021-09-02 17:30 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
tarantool-1.4.9-clang-build-fail.log (dev-db:tarantool-1.4.9:20130623-155816.log,296.13 KB, text/x-log)
2013-06-28 11:32 UTC, Tom Wijsman (TomWij) (RETIRED)
Details
tarantool-1.4.9-gcc-test-fail.log (dev-db:tarantool-1.4.9:20130623-154716.log,333.94 KB, text/x-log)
2013-06-28 11:33 UTC, Tom Wijsman (TomWij) (RETIRED)
Details
tarantool-1.4.9-gcc-test-fail.log (dev-db:tarantool-1.4.9:20130628-125202.log,441.24 KB, text/x-log)
2013-06-28 13:05 UTC, Tom Wijsman (TomWij) (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Roman Tsisyk 2013-06-13 07:04:59 UTC
Hi!

I am a Tarantool developer and I created ebuilds for our project.

Tarantool is an in-memory database designed to store the most volatile
and highly accessible web content. Tarantool has been extensively used
in production since 2009. Its key features include:
 * all data is maintained in RAM
 * data persistence is implemented using Write Ahead Log and snapshots
 * supports asynchronous replication and hot standby
 * uses coroutines and asynchronous I/O to implement high-performance
lock-free access to data
 * stored procedures in Lua are supported

http://tarantool.org/

I ebuild and all needed files into the overlay:
https://github.com/rtsisyk/tarantool-gentoo-overlay
There are two ebuilds, an init script, a logrotate script, cron files and a Manifest.

Your comments and suggestions are welcome.
Thanks!
Comment 1 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-13 12:49:27 UTC
Do you have interest in becoming a proxied maintainer to maintain this?

http://www.gentoo.org/proj/en/qa/proxy-maintainers/
Comment 2 Roman Tsisyk 2013-06-13 13:09:38 UTC
(In reply to Tom Wijsman (TomWij) from comment #1)
> Do you have interest in becoming a proxied maintainer to maintain this?
> 
> http://www.gentoo.org/proj/en/qa/proxy-maintainers/

Yes, I can maintain it.
Comment 3 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-19 23:12:34 UTC
Okay, cool; if nobody is earlier, I will review and add them this weekend...

You will then also be sent a short mail explaining proxy maintenance.
Comment 4 Roman Tsisyk 2013-06-20 14:09:17 UTC
ok, thanks.
Please feel free to contact me if you will any some questions.
Comment 5 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-23 12:31:15 UTC
Working on these now; it appears Clang doesn't provide Objective C for me, any idea about that or am I doing something wrong? Did you try it with Clang?
Comment 6 Roman Tsisyk 2013-06-23 14:02:52 UTC
Just try to provide both CC and CXX params:
CC=clang CXX=clang++ cmake .
-- The C compiler identification is Clang 3.2.0
-- The CXX compiler identification is Clang 3.2.0
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
...
Comment 7 Roman Tsisyk 2013-06-23 14:29:21 UTC
Some details about objc in tarantool.
Actually there is two ebuilds:

* tarantool-1.4.9999 - from "stable" git branch.

This version is mostly written on Objective C and uses GNUstep runtime
(gnustep-base/libobjc2) which shipped within third_party/ directory.
 "libobjc-bundled" USE flag can be used to switch between the system and the
bundled versions. GNU's libobjc (shipped with gcc) is not supported due to lack an interplay mechanism between Objectvie-C and C++ DWARF exceptions.

This branch can be compiled using clang-3.1 - 3.3 (and later) and gcc-4.4 - 4.6.
gcc-4.7+ is not work properly with gnustep-base/libobjc2 and libobjc2's maintainer does not want to fix it.

USE="objc objc+" should be provided for sys-devel/gcc
clang works with any settings of USE flags.

* tarantool-9999 (1.5.x) - from "master" git branch.
Starting from 1.5.x we rewrote all Objective-C parts using regular C++
and removed libobjc2 from the dependecy list.

This version can be compiled using gcc-4.5 - 4.8 (and later) and clang-3.1 - 3.3 (and later).
Comment 8 Roman Tsisyk 2013-06-28 09:09:55 UTC
Hi Tom,
how it is going with these ebuilds?
Comment 9 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-28 11:32:39 UTC
Created attachment 352154 [details]
tarantool-1.4.9-clang-build-fail.log
Comment 10 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-28 11:33:20 UTC
Created attachment 352156 [details]
tarantool-1.4.9-gcc-test-fail.log
Comment 11 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-28 11:36:02 UTC
See attached two build logs, for clang I get a build fail and for gcc a test fail; the same happens with other versions like 1.4.9999, 1.5.0 and 9999. No combination appears to build and test succesfully, therefore I can't add any version to the Portage tree. Do you have any idea about what is going on here?
Comment 12 Roman Tsisyk 2013-06-28 12:38:12 UTC
Thanks for you logs, I see following problems there:

1) "make test" only works if "make all" was run
Try to run "make -C test" if USE="test" is enabled, or just run "make all" for all combinations of USE flags.

2) sys-libs/libunwind is needed when building with clang

3) 1.4.9999 (which uses Objective C) should be build with gcc-4.6 or with clang.
GCC 4.7+ does not work with gnustep-base/libobcj2. Sad but true. We completely remove remove Objective C in 1.5.x release. I will add an error message about compiler to CMakeLists.txt in the upstream. May be we can add CC=clang CXX=clang++ into 1.4.9 ebuild.

4) Some additional dependencies with doxygen schemas are needed for USE="doc" to fix warnings.
On Debian it build with:
xsltproc docbook5-xml docbook-xsl-ns w3c-sgml-lib libxml-commons-resolver1.1-java
libxml2-utils libxerces2-java libxslthl-java lynx jing

I added app-text/jing www-client/lynx app-text/docbook-xml-dtd
app-text/docbook-xsl-ns-stylesheets app-text/docbook-xsl-stylesheets on Gentoo, but seems that it is not enough. I am trying to find which files is actually needed for USE="doc".

I see that you created a non-live ebuild for 1.4.9. Is it bad practice to have only live ebuilds for package on Gentoo?
We usually make up to ten minor fix releases (1.4.x.yyyy) within the cycle of one major (1.4.x) release, e.g.
tarantool-1.4.9+20130611
tarantool-1.4.9+20130608 
tarantool-1.4.9+20130415
...
Comment 13 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-28 13:04:40 UTC
(In reply to Roman Tsisyk from comment #12)
> 1) "make test" only works if "make all" was run
> Try to run "make -C test" if USE="test" is enabled, or just run "make all"
> for all combinations of USE flags.

That's an improvement, but still fails a test; will attach new build log next.

> 2) sys-libs/libunwind is needed when building with clang

Hmm, I'll hear whether I should introduce a clang USE flag for this, otherwise I will just have to make it an unconditional dependency.

> 3) 1.4.9999 (which uses Objective C) should be build with gcc-4.6 or with
> clang.
> GCC 4.7+ does not work with gnustep-base/libobcj2. Sad but true. We
> completely remove remove Objective C in 1.5.x release. I will add an error
> message about compiler to CMakeLists.txt in the upstream. May be we can add
> CC=clang CXX=clang++ into 1.4.9 ebuild.

Building went fine for me, though; how exactly would it fail?

> 4) Some additional dependencies with doxygen schemas are needed for
> USE="doc" to fix warnings.
> On Debian it build with:
> xsltproc docbook5-xml docbook-xsl-ns w3c-sgml-lib
> libxml-commons-resolver1.1-java
> libxml2-utils libxerces2-java libxslthl-java lynx jing
> 
> I added app-text/jing www-client/lynx app-text/docbook-xml-dtd
> app-text/docbook-xsl-ns-stylesheets app-text/docbook-xsl-stylesheets on
> Gentoo, but seems that it is not enough. I am trying to find which files is
> actually needed for USE="doc".

Okay, feel free to let me know.

> I see that you created a non-live ebuild for 1.4.9. Is it bad practice to
> have only live ebuilds for package on Gentoo?
> We usually make up to ten minor fix releases (1.4.x.yyyy) within the cycle
> of one major (1.4.x) release, e.g.
> tarantool-1.4.9+20130611
> tarantool-1.4.9+20130608 
> tarantool-1.4.9+20130415

Yes, live ebuilds are not and should not be keyworded unless absolutely necessary; having proper release versions would be nice. The reason we have live ebuilds in our tree is mainly to test for packages breaking in advance so we're not surprised with the version bump.
Comment 14 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-06-28 13:05:16 UTC
Created attachment 352166 [details]
tarantool-1.4.9-gcc-test-fail.log
Comment 15 Roman Tsisyk 2013-06-28 14:44:31 UTC
(In reply to Tom Wijsman (TomWij) from comment #13)
> (In reply to Roman Tsisyk from comment #12)
> > 1) "make test" only works if "make all" was run
> > Try to run "make -C test" if USE="test" is enabled, or just run "make all"
> > for all combinations of USE flags.
> 
> That's an improvement, but still fails a test; will attach new build log
> next.

It is a problem with IPv6 connection in box/socket.test that currently occurs only on Gentoo. I posted the bug, we will try to fix it ASAP.
https://bugs.launchpad.net/tarantool/+bug/1192951

> > 2) sys-libs/libunwind is needed when building with clang
> 
> Hmm, I'll hear whether I should introduce a clang USE flag for this,
> otherwise I will just have to make it an unconditional dependency.
I need to examine dev-lang/luajit ebuild to check how they solved problem with clang. 

> > 3) 1.4.9999 (which uses Objective C) should be build with gcc-4.6 or with
> > clang.
> > GCC 4.7+ does not work with gnustep-base/libobcj2. Sad but true. We
> > completely remove remove Objective C in 1.5.x release. I will add an error
> > message about compiler to CMakeLists.txt in the upstream. May be we can add
> > CC=clang CXX=clang++ into 1.4.9 ebuild.
> 
> Building went fine for me, though; how exactly would it fail?

It segfaults on box/xlog.test (at least on it):
https://bugs.launchpad.net/tarantool/+bug/1157040

I added an error message to CMakeLists.txt about GCC-4.7 for "stable" 1.4.9. branch. I also re-tested this branch under clang and pushed some fixes for it.
clang 3.1-3.3 and gcc 4.4-4.6 should work fine for 1.4.9.

"master" 1.5.x is free from these Objective-C problems.
Comment 16 Roman Tsisyk 2013-07-05 15:57:53 UTC
Hi Tom,
Sorry for my later answer.
We decided to release Tarantool 1.5.1 on next week to abandon 1.4.9 branch and to get rid of these Objective C problems.
This release does not depend on Objective-C and compiles using gcc-4.5+ and clang-3.1+.

box/socket.test does not work properly because you do not have IPv6 on the host (the test will be fixed in release).
Comment 17 Roman Tsisyk 2013-07-12 08:09:21 UTC
Hi,
I resolved all found problems:

* Add USE=mysql and USE=postgres
* Remove USE="luajit-bundled"
* Fix FEATURES="test"
* Fix libunwind dependecy
* Fix docbook generation

https://github.com/rtsisyk/tarantool-gentoo-overlay

I also added a regular (non-live) ebuild for 1.5.1-26-gbd426b7.
Tarantool uses "git describe" for version numbering. This system cannot be directly represent in ebuild names. I decided to kept commit counter and remove git hash:
tarantool 1.5.1-26-gbd426b7 -> tarantool-1.5.1-p26.ebuild
Comment 18 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2014-04-04 12:46:03 UTC
This has became the oldest bug in my personal inbox; would like to progress on this, so, I started working a bit on 1.5.3.

In 1.5.3 documentation generation fails due to:

    Error: Could not find or load main class com.icl.saxon.StyleSheet

We need to adjust it to work together with the Gentoo Java Packaging; from a quick look, patching the hardcoded locations to the jars with those obtained through java-pkg_getjar could be the way forward. The other option is to not regenerate documentation and reuse bundled or separate documentation. Up to you.

https://www.gentoo.org/proj/en/java/java-devel.xml
Comment 19 Alexander Turenko 2020-05-12 21:51:15 UTC
NB: tarantool layman overlay is now maintained by me (I am tarantool developer).
Comment 20 Alexander Turenko 2021-09-02 17:30:18 UTC
I think that the bug should be closed, because tarantool overlay is available in layman and mostly in line with recent tarantool releases (it also contains -9999 live package).