"4store is an efficient, scalable and stable RDF database." This is a first, rough version of a ebuild. In addition, it's *my* first ebuild from the scratch. For me, it do the job on ~amd for compiling and installing. The upstream Makefiles are told to have poor quality; i have to apply brutal-force patching to have it installed to /usr instead of /usr/local. ToDo: All related to the rc-scripting, i.e. files for init.d/ and conf.d/. This will not be straight-forward, because 4store consists of modules coupled by use of TCP/IP. Therefore, there are different operating models to run the software. There are * two tiers (db-backend and http/sparql-frontend), with *may* (but must no) run on different machines * a cluster mode for the backend to distribute the database to different machines. * the possibility to use multiple instances to server more than one datastore. Because this will be a obvious requirement, this should be supported by the rc-scripts, maybe in an analogous way like "net" or "stunnel" by using a couple of files named conf.d/4store[.db-name].
Created attachment 253855 [details] 4store V1.0.4 ebuild I've had communication with upstream. They know about poor quality of configure and Make files and announce to work on it next time. As this may take an unknown time, i upload my ebuild althrough.
From my first test with 4store i've learned that you need "cluster support" -- i.e. the use of a mDNS provider like avahi -- event if you want to use more than one database locally. I'm not happy with this, i would like to see "zero-conf" to be a real option. And i'll try to contribute on upstream to either enhance the fallback mechanisms or provide manual configuration mechanisms. I figured out that for the cluster mode you have to DEPEND on net-dns/avahi , with will depend on sys-apps/dbus . For usage with 4store, you don't have to configure anything on this but just to start it before the 4store backends.
Tried to get to the newest current version, seems to depend on old raptor version: /bin/sh ../../libtool --tag=CC --mode=link x86_64-pc-linux-gnu-gcc -Wall -g -std=gnu99 -O2 -I.. -DGIT_REV="\"v1.1.4\"" -I/usr/include/raptor2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -pipe -lz -lraptor2 -lglib-2.0 -Wl,-O1 -Wl,--as-needed -o 4s-backend server.o backend.o import-backend.o query-backend.o timing.o lib4storage.a ../common/lib4sintl.a -lpcre -lreadline -lncurses -lm libtool: link: x86_64-pc-linux-gnu-gcc -Wall -g -std=gnu99 -O2 -I.. -DGIT_REV=\"v1.1.4\" -I/usr/include/raptor2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -pipe -Wl,-O1 -Wl,--as-needed -o 4s-backend server.o backend.o import-backend.o query-backend.o timing.o -lz -lraptor2 -lglib-2.0 lib4storage.a ../common/lib4sintl.a -lpcre -lreadline -lncurses -lm lib4storage.a(rhash.o): In function `get_entry': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/rhash.c:674: undefined reference to `uncompress' lib4storage.a(rhash.o): In function `fs_rhash_put': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/rhash.c:430: undefined reference to `compress' lib4storage.a(metadata.o): In function `fs_metadata_open': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:78: undefined reference to `raptor_new_world_internal' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:84: undefined reference to `raptor_new_parser' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:85: undefined reference to `raptor_parser_set_statement_handler' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:87: undefined reference to `raptor_new_uri' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:88: undefined reference to `raptor_new_uri' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:90: undefined reference to `raptor_parser_parse_uri' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:95: undefined reference to `raptor_free_parser' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:96: undefined reference to `raptor_free_uri' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:97: undefined reference to `raptor_free_uri' lib4storage.a(metadata.o): In function `parse_stmt': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:51: undefined reference to `raptor_uri_as_string' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:56: undefined reference to `raptor_uri_as_string' lib4storage.a(metadata.o): In function `fs_metadata_flush': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:225: undefined reference to `raptor_new_serializer' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:231: undefined reference to `raptor_serializer_start_to_filename' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:235: undefined reference to `raptor_new_term_from_uri_string' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:236: undefined reference to `raptor_new_term_from_uri_string' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:237: undefined reference to `raptor_new_term_from_literal' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:239: undefined reference to `raptor_serializer_serialize_statement' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:240: undefined reference to `raptor_free_term' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:241: undefined reference to `raptor_free_term' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:242: undefined reference to `raptor_free_term' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:245: undefined reference to `raptor_serializer_serialize_end' /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:246: undefined reference to `raptor_free_serializer' lib4storage.a(metadata.o): In function `fs_metadata_close': /var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend/metadata.c:261: undefined reference to `raptor_free_world' collect2: ld returned 1 exit status make[3]: *** [4s-backend] Error 1 make[3]: Leaving directory `/var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src/backend' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/dev-db/4store-1.1.4/work/4store-v1.1.4' make: *** [all] Error 2 emake failed * ERROR: dev-db/4store-1.1.4 failed (compile phase): So sad ;)
Dear Patrick, Yes, i've build the 4store 1.0.4 @20101110 using media-libs/raptor-1.4.20, which isn't in the portage tree anymore. From the raptor homepage i see that's a major change in the API between 1.4 and 2. Therefore i ask myself why this wasn't made slotted and the last 1.4 have been preserved. Maybe you can setup an raptor-1.4.21 ebuild, there's a source at http://download.librdf.org/source/raptor-1.4.21.tar.gz In addition, we shoud try to point the 4store developers on the raptor2-upgrate-howto (http://librdf.org/raptor/UPGRADING.html) greetings Guido
+ 01 Feb 2013; Patrick Lauer <patrick@gentoo.org> +4store-1.1.5.ebuild, + +metadata.xml: + Initial commit, ebuild based on #343213 by Guido Jaekel This one works, all it needs now to make me happy is an init script to autostart the relevant components.
Dear Patrick, as stated in #1, it will need some conceptual planning before writing down the init scripts, because one may run more than one backend engine (to get N databases). In addition it offers a cluster feature. And the frontend for each database also may run on a different host. The last is because the interconnection is made by mDNS (avahi). For my former test, i have used a simple hard-wired start script: 4s-backend foo 4s-backend bar 4s-httpd -dUs -1 foo -p 8888 4s-httpd -dUs -1 bar -p 8889 Unfortunately from the Gentoo point of view, my installation was just for evaluation purposes but the related software project is currently on hold. I may continue here, if this changes. Or if somebody cry out for support here ;)