1 Commits

Author SHA1 Message Date
Matthieu Gautier
17edba1d02 Adapt kiwix-tools to new libkiwix API. 2023-07-16 07:50:45 +02:00
9 changed files with 42 additions and 61 deletions

View File

@@ -14,10 +14,10 @@ jobs:
- win32_dyn
include:
- target: native_static
image_variant: focal
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: native_dyn
image_variant: focal
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: win32_static
image_variant: f35

View File

@@ -8,6 +8,7 @@ jobs:
fail-fast: false
matrix:
distro:
- ubuntu-kinetic
- ubuntu-jammy
- ubuntu-focal
steps:
@@ -40,6 +41,14 @@ jobs:
args: --no-sign
ppa: ${{ steps.ppa.outputs.ppa }}
- uses: legoktm/gh-action-build-deb@ubuntu-kinetic
if: matrix.distro == 'ubuntu-kinetic'
name: Build package for ubuntu-kinetic
id: build-ubuntu-kinetic
with:
args: --no-sign
ppa: ${{ steps.ppa.outputs.ppa }}
- uses: legoktm/gh-action-build-deb@ubuntu-focal
if: matrix.distro == 'ubuntu-focal'
name: Build package for ubuntu-focal

View File

@@ -1,21 +0,0 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt

View File

@@ -1,10 +1,7 @@
kiwix-tools 3.6.0
=================
Unreleased
==========
* Improved kiwix-serve man page (@iArchitSharma #626)
* C++17 compliant code base (@mgautierfr #636)
* Support of libkiwix13 (@mgautierfr #633)
* Additional docker images archs for armv6 and i386 (@rgaudin #622)
* Additional docker images archs for armv6 and i386.
kiwix-tools 3.5.0
=================

View File

@@ -4,7 +4,7 @@ Kiwix tools
The Kiwix tools is a collection of [Kiwix](https://kiwix.org) related
command line tools:
* kiwix-manage: Manage XML based library of ZIM files
* kiwix-search: Full text search in ZIM files
* kiwix-search: Fulltext search in ZIM files
* kiwix-serve: HTTP daemon serving ZIM files
[![latest release](https://img.shields.io/github/v/tag/kiwix/kiwix-tools?label=latest%20release&sort=semver)](https://download.kiwix.org/release/kiwix-tools/)
@@ -29,8 +29,8 @@ Preamble
--------
Although the Kiwix tools can be compiled/cross-compiled on/for many
systems, the following documentation explains how to do it on POSIX
ones. It is primarily thought for GNU/Linux systems and has been tested
sytems, the following documentation explains how to do it on POSIX
ones. It is primarly thought for GNU/Linux systems and has been tested
on recent releases of
[Debian](https://debian.org)/[Ubuntu](https://ubuntu.com) and
[Fedora](https://getfedora.org).
@@ -62,7 +62,7 @@ Environment
-------------
The Kiwix tools build using [Meson](http://mesonbuild.com/) version
0.43 or higher. Meson relies itself on Ninja, pkg-config and a few other
0.43 or higher. Meson relies itself on Ninja, pkg-config and few other
compilation tools. Install them first:
* [Meson](http://mesonbuild.com/)
* [Ninja](https://ninja-build.org/)
@@ -96,7 +96,7 @@ ninja -C build install
```
You might need to run the command as `root` (or using `sudo`),
depending on where you want to install the Kiwix tools. After the
depending where you want to install the Kiwix tools. After the
installation succeeded, you may need to run ldconfig (as `root`).
Uninstallation

View File

@@ -42,12 +42,7 @@ Build an image for an ARM based GNU/Linux:
docker build . -t ghcr.io/kiwix/kiwix-serve:latest --build-arg ARCH="arm32v7/"
```
Docker Compose
--------------
You can also deploy kiwix with
[`docker-compose`](https://docs.docker.com/compose/). Check out a
sample at [docker-compose.yml.example](docker-compose.yml.example).
You can also deploy kiwix with [`docker-compose`](https://docs.docker.com/compose/). Check out a sample at [docker-compose.yml.example](docker-compose.yml.example)
Screenshots
-----------

View File

@@ -1,7 +1,7 @@
project('kiwix-tools', 'cpp',
version : '3.6.0',
version : '3.5.0',
license : 'GPL',
default_options: ['c_std=c11', 'cpp_std=c++17', 'werror=true'])
default_options: ['c_std=c11', 'cpp_std=c++11', 'werror=true'])
compiler = meson.get_compiler('cpp')
@@ -16,7 +16,7 @@ if static_linkage
endif
thread_dep = dependency('threads')
kiwixlib_dep = dependency('kiwix', version:'>=13.0.0', static:static_linkage)
kiwixlib_dep = dependency('kiwix', version:'>=12.0.0', static:static_linkage)
libzim_dep = dependency('libzim', version:'>=8.1.0', static:static_linkage)
all_deps = [thread_dep, kiwixlib_dep, libzim_dep]

View File

@@ -113,7 +113,7 @@ int handle_show(const kiwix::Library& library, const std::string& libraryPath,
return(0);
}
int handle_add(kiwix::LibraryPtr library, const std::string& libraryPath,
int handle_add(std::shared_ptr<kiwix::Library> library, const std::string& libraryPath,
int argc, char* argv[])
{
string zimPath;
@@ -182,11 +182,11 @@ int handle_add(kiwix::LibraryPtr library, const std::string& libraryPath,
return(resultCode);
}
int handle_remove(kiwix::Library& library, const std::string& libraryPath,
int handle_remove(std::shared_ptr<kiwix::Library> library, const std::string& libraryPath,
int argc, char* argv[])
{
std::string bookId;
const unsigned int totalBookCount = library.getBookCount(true, true);
const unsigned int totalBookCount = library->getBookCount(true, true);
int exitCode = 0;
if (argc <= 3) {
@@ -203,7 +203,7 @@ int handle_remove(kiwix::Library& library, const std::string& libraryPath,
for (int i = 3; i<argc; i++) {
bookId = argv[i];
if (!library.removeBookById(bookId)) {
if (!library->removeBookById(bookId)) {
std::cerr << "Invalid book id '" << bookId << "'." << std::endl;
exitCode = 1;
}
@@ -216,7 +216,7 @@ int main(int argc, char** argv)
{
string libraryPath = "";
supportedAction action = NONE;
auto library = kiwix::Library::create();
auto library = std::make_shared<kiwix::Library>();
/* General argument parsing */
static struct option long_options[] = {
@@ -279,7 +279,7 @@ int main(int argc, char** argv)
exitCode = handle_add(library, libraryPath, argc, argv);
break;
case REMOVE:
exitCode = handle_remove(*library, libraryPath, argc, argv);
exitCode = handle_remove(library, libraryPath, argc, argv);
break;
case NONE:
break;

View File

@@ -197,7 +197,7 @@ int main(int argc, char** argv)
#endif
std::string rootLocation = "/";
auto library = kiwix::Library::create();
auto library = std::make_shared<kiwix::Library>();
unsigned int nb_threads = DEFAULT_THREADS;
std::vector<std::string> zimPathes;
std::string libraryPath;
@@ -377,7 +377,7 @@ int main(int argc, char** argv)
#endif
auto nameMapper = std::make_shared<kiwix::UpdatableNameMapper>(library, noDateAliasesFlag);
kiwix::Server server(library, nameMapper);
kiwix::Server::Configuration configuration(library, nameMapper);
if (!customIndexPath.empty()) {
try {
@@ -388,17 +388,18 @@ int main(int argc, char** argv)
}
}
server.setAddress(address);
server.setRoot(rootLocation);
server.setPort(serverPort);
server.setNbThreads(nb_threads);
server.setVerbose(isVerboseFlag);
server.setTaskbar(!noSearchBarFlag, !noLibraryButtonFlag);
server.setBlockExternalLinks(blockExternalLinks);
server.setIndexTemplateString(indexTemplateString);
server.setIpConnectionLimit(ipConnectionLimit);
server.setMultiZimSearchLimit(searchLimit);
configuration.setAddress(address);
configuration.setRoot(rootLocation);
configuration.setPort(serverPort);
configuration.setNbThreads(nb_threads);
configuration.setVerbose(isVerboseFlag);
configuration.setTaskbar(!noSearchBarFlag, !noLibraryButtonFlag);
configuration.setBlockExternalLinks(blockExternalLinks);
configuration.setIndexTemplateString(indexTemplateString);
configuration.setIpConnectionLimit(ipConnectionLimit);
configuration.setMultiZimSearchLimit(searchLimit);
kiwix::Server server(configuration);
if (! server.start()) {
exit(1);
}