summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-06-20Makefile: Suffix libguilexapian with effective Guile version number.Arun Isaac
We need to distinguish between libguilexapian built for different versions of Guile. * Makefile.am (lib_LTLIBRARIES): Replace libguilexapian.la with libguilexapian-@GUILE_EFFECTIVE_VERSION@.la. (libguilexapian_la_SOURCES): Rename to libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_SOURCES. (libguilexapian_la_CXXFLAGS): Rename to libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_CXXFLAGS. (libguilexapian_la_LDFLAGS): Rename to libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_LDFLAGS. (xapian.i): Substitute @GUILE_EFFECTIVE_VERSION@. (xapian/xapian.go): Depend on libguilexapian-@GUILE_EFFECTIVE_VERSION@.la instead of libguilexapian.la. * xapian.i.in: Load libguilexapian-@GUILE_EFFECTIVE_VERSION@.la instead of libguilexapian.la.
2022-06-07Release version 0.2.0.v0.2.0Arun Isaac
* configure.ac: Bump to version 0.2.0. * NEWS: New file.
2022-06-07Makefile: Add swig flag to search for include files is srcdir.Arun Isaac
* Makefile.am (xapian_wrap.cc xapian/wrap.scm &): Add -I$(srcdir) to swig invocation.
2022-06-07Makefile: Mark xapian/wrap.scm as built source file.Arun Isaac
* Makefile.am (BUILT_SOURCES, CLEANFILES): Add xapian/wrap.scm. (xapian/wrap.scm): Group with target xapian_wrap.cc.
2022-06-07Makefile: Fix typo renaming xapian_wrap.scm to xapian/wrap.scm.Arun Isaac
* Makefile.am (xapian_wrap.scm): Rename to xapian/wrap.scm.
2022-06-07Makefile: Distribute swig files.Arun Isaac
* Makefile.am (EXTRA_DIST): Add xapian.i.in, xapian-head.i and xapian-headers.i.
2022-06-07xapian: Accept bytevector slot values with document-slot-set!.Arun Isaac
* xapian/xapian.scm (make-document): Call document-slot-set! regardless of slot value type. (document-slot-set!): Accept bytevector slot values. (document-slot-set-bytes!): Deprecate.
2022-06-06xapian: Accept bytevector data with document-set-data!.Arun Isaac
* xapian/xapian.scm (make-document): Call document-set-data! regardless of data type. (document-set-data!): Accept bytevector data. (document-set-bytes!): Deprecate.
2022-06-06Recommend guix shell instead of guix environment.Arun Isaac
* README.org (Usage), guix.scm: Recommend guix shell instead of guix environment.
2022-06-06README: Thank Ludovic Courtès for bug report.Arun Isaac
* README.org (Contributors): Thank Ludovic Courtès for bug report.
2022-06-06guix.scm: Do not override native-inputs.Arun Isaac
* guix.scm (guile-xapian)[native-inputs]: Do not override.
2022-06-06guix.scm: Use source from current directory.Arun Isaac
* guix.scm: Import (guix gexp), (guix git-download) and (guix packages). (%source-dir): New variable. (guile-xapian)[source]: Set to source from current directory.
2022-06-06pre-inst-env: Set LD_LIBRARY_PATH to $abs_top_builddir/.libs.Arun Isaac
Guile >= 3.0.6 does not use libltdl. So we need to look for libguilexapian.so explicitly under .libs. * pre-inst-env.in (LD_LIBRARY_PATH): Set to $abs_top_builddir/.libs.
2021-09-08Makefile: Clean xapian.i and xapian_wrap.cc.Arun Isaac
* Makefile.am (CLEANFILES): Add xapian.i and xapian_wrap.cc
2021-09-08Makefile: Replace suffix rules with pattern rules.Arun Isaac
Suffix rules are deprecated. * Makefile.am (SUFFIXES): Delete variable. (.scm.go): Delete rule. (%.go): New rule.
2021-09-07Makefile: Silence swig.Arun Isaac
* Makefile.am (SWIG_GEN, SWIG_GEN_, SWIG_GEN_0, SWIG_GEN_1): New variables. (xapian_wrap.cc): Silence with SWIG_GEN.
2021-09-07Makefile: Silence guild with GUILD prefix.Arun Isaac
* Makefile.am (GUILD_GEN, GUILD_GEN_, GUILD_GEN_0, GUILD_GEN_1): New variables. (.scm.go): Use GUILD_GEN instead of AM_V_GEN.
2021-09-07README: Add Contributors section.Arun Isaac
* README.org (Contributors): New section.
2021-09-07tests: Add binary document tests.Bob131
This commit adds tests to smoke-test document methods dealing with bytevectors. * tests/xapian.scm ("document-data fails to decode binary data", "document-bytes reads binary data correctly", "document-slot-ref fails to decode binary value", "document-slot-ref-bytes reads binary value correctly"): New tests. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07xapian: Introduce document setters.Bob131
* xapian/xapian.scm (document-set-data!, document-set-bytes!, document-slot-set!, document-slot-set-bytes!): New functions. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07xapian: make-document: Accept bytevectors.Bob131
* xapian/xapian.scm (make-document): Support setting document values and body from bytevectors. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07xapian: Introduce document-slot-ref-bytes.Bob131
* xapian/xapian.scm (document-slot-ref-bytes): New function. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07xapian: Reimplement document-bytes.Bob131
The current implementation of document-bytes involves converting the document data string into a list of characters, mapping over the result with char->integer and passing the list of integers to u8-list->integer. This is quite an expensive operation (relative to what the user might expect), and may not reliably return a result if the document data couldn't be decoded as a UTF-8 string in the first place. Now that we have SWIG wrappers that return bytevectors directly, we can redefine document-bytes as an alias of Document-get-data-bytes. * xapian/xapian.scm (document-bytes): Redefine function in terms of Document-get-data-bytes. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07Add SWIG wrappers for bytevector method variants.Bob131
Several Xapian methods use `std::string' to represent opaque binary blobs. SWIG treats these as UTF-8 strings and converts them to an SCM representation via `scm_from_utf8_string', which will throw an error if the input is not valid UTF-8. This commit updates the SWIG interface file to add wrappers taking or returning bytevectors instead of strings for Xapian methods dealing with document values and bodies. * xapian.i.in (SWIG_bytevector, typemap_in_SWIG_bytevector, typemap_out_SWIG_bytevector): Add machinery for defining bytevector-variant wrappers of existing methods taking or returning std::string. * (Xapian::ValueIterator::get_value_bytes, Xapian::Document::get_value_bytes, Xapian::Document::add_value_bytes, Xapian::Document::get_data_bytes, Xapian::Document::set_data_bytes, Xapian::Database::get_metadata_bytes, Xapian::WritableDatabase::set_metadata_bytes, Xapian::Query::Query): Add bytevector variants of methods. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2021-09-07Set up testing infrastructure.Arun Isaac
* tests/xapian.scm: New file. * build-aux/test-driver.scm.in: New file. * configure.ac: Configure build-aux/test-driver.scm. * .gitignore: Add build-aux/test-driver.scm, tests/*.log and tests/*.trs. * Makefile.am (EXTRA_DIST): Add TESTS. (TEST_EXTENSIONS, SCM_TESTS, TESTS, SCM_LOG_DRIVER): New variables.
2021-09-06xapian: Support in-memory databases.Arun Isaac
* xapian/xapian.scm (call-with-in-memory-database): New public function.
2021-09-06README: Remove unnecessary guile -s flag.Arun Isaac
* README.org (Usage): Remove unnecessary guile -s flag.
2021-09-02xapian: Fix spacing in association list.Arun Isaac
* examples/search.scm (search): Add a space after '.' in the prefixes association list.
2021-09-02Update copyright years.Arun Isaac
This is a follow-up to commits cb61a526c82153c09ed357901166a42b48ba9d3b and 12f12fbcb3cba4c634e10e7bf16a5c47d670f83b where the copyright year was not updated. * Makefile.am, build-aux/build-home-page.el, configure.ac, guix.scm: Add 2021 to copyright.
2021-09-02README: Add continuous integration badges.Arun Isaac
* README.org (ci-badge): New macro. Add continuous integration badges.
2021-09-02website: Add website.Arun Isaac
* website/style.css: New file. * build-aux/build-home-page.el: New file. * configure.ac: Look for emacs. * Makefile.am (EMACS_GEN, EMACS_GEN_, EMACS_GEN_0, EMACS_GEN_1): New variables. (website, website/index.html): New target. (CLEANFILES): Add website/index.html. * .gitignore: Add website/index.html.
2021-09-02Add guix.scm.Arun Isaac
* guix.scm: New file. * README.org (Usage): Update guix environment instructions.
2020-10-17xapian: Introduce document-bytes.Arun Isaac
* xapian/xapian.scm (document-bytes): New function.
2020-10-14xapian: Wrap MSet-snippet.Arun Isaac
* xapian/xapian.scm (get-flag, mset-snippet): New functions.
2020-10-14Use Guix's guile-xapian package for `guix environment`.Arun Isaac
* guix.scm: Delete file. * README.org (Usage): Update `guix environment` instructions.
2020-03-07xapian: Rename document-ref to document-slot-ref.v0.1.0Arun Isaac
* xapian/xapian.scm (document-ref): Rename to document-slot-ref.
2020-03-06xapian: Wrap document values.Arun Isaac
* xapian/xapian.scm (make-document): Support setting document values. (document-ref): New function.
2020-03-05xapian: Wrap Enquire-get-mset using keyword arguments.Arun Isaac
* xapian/xapian.scm (enquire-mset): Introduce offset and maximum-items keyword arguments. * examples/search.scm (search): Pass pagesize as keyword argument to enquire-mset. Remove argument offset.
2020-03-05xapian: Wrap Database-get-doccount.Arun Isaac
* xapian/xapian.scm (database-document-count): New function.
2020-02-26Add generated files to .gitignore.Arun Isaac
* .gitignore: Add xapian.i and xapian/wrap.scm.
2020-02-26Organize .gitignore.Arun Isaac
* .gitignore: Organize into sections with comments.
2020-02-26Load libguilexapian with absolute path or through a search path.Arun Isaac
* xapian.i: Rename to xapian.i.in. * xapian.i.in: Try loading libguilexapian with absolute path first. If it fails, then try searching using LD_LIBRARY_PATH and other mechanisms. * Makefile.am: Generate xapian.i from xapian.i.in.
2020-02-26Support guile 3.0.Arun Isaac
* configure.ac: Check for guile 3.0. If not found, check for guile 2.2.
2020-02-19Invoke GUILE_PKG to set GUILE_EFFECTIVE_VERSION.Arun Isaac
* configure.ac: Invoke GUILE_PKG.
2020-02-19Build xapian/xapian.scm after libguilexapian.la.Arun Isaac
* Makefile.am: Build xapian/xapian.scm only after libguilexapian.la.
2020-02-19Load libguilexapian without any specific path.Arun Isaac
* pre-inst-env.in (LD_LIBRARY_PATH): Set LD_LIBRARY_PATH. * xapian.i: Load libguilexapian without any specific path. Let it be found using LD_LIBRARY_PATH and other search mechanisms.
2020-02-18xapian: Remove generated scheme stub.Arun Isaac
xapian/wrap.scm is generated by swig. We need not commit it to the git repository. * xapian/wrap.scm: Delete file.
2020-02-18Rerun pkg-config to find xapian include flags for swig.Arun Isaac
* configure.ac: Rerun pkg-config to find xapian include flags for swig. Store result in SWIG_FLAGS. * Makefile.am: Use SWIG_CFLAGS.
2020-02-17README: Warn about unstable API.Arun Isaac
* README.org: Warn about unstable API.
2020-02-16examples: Add comments.Arun Isaac
* examples/index.scm, examples/search.scm: Add comments.