From d2c3eeb337eaf365e5caaef67a15b680a4d2394c Mon Sep 17 00:00:00 2001 From: Emmanuel Engelhart Date: Mon, 23 Jan 2017 21:25:07 +0100 Subject: [PATCH] More simple/robus README --- COMPILE_ubuntu-16.04.md | 112 --------------------------------- README.md | 135 +++++++++++++++++++++++++++++----------- 2 files changed, 99 insertions(+), 148 deletions(-) delete mode 100644 COMPILE_ubuntu-16.04.md diff --git a/COMPILE_ubuntu-16.04.md b/COMPILE_ubuntu-16.04.md deleted file mode 100644 index 8298b571c..000000000 --- a/COMPILE_ubuntu-16.04.md +++ /dev/null @@ -1,112 +0,0 @@ -Howto build kiwix-lib on Ubuntu 16.04 (LTS) -=========================================== - -Some dependencies packaged on Ubuntu 16.04 are too old or don't provide -pkg-config files. - -The [kiwix-build](https://github.com/kiwix/kiwix-build) script takes care of -downloading, compiling and installing all the dependencies and kiwix-* projects. -We recommend you to use this script. - -If you still want to compile yourself kiwix-lib... here we go ! - -This script describe step by step how to compile kiwix-lib on a fresh -Ubuntu 16.04 system. - -# Install needed packages - -``` -sudo apt install uuid-dev libicu-dev libctpp2-dev automake libtool -``` - -# Prepare the environment - -We will install all our custom dependencies in a separated directory to avoid -polluting the system. - -``` -KIWIX_DIR= -mkdir $KIWIX_DIR -virtualenv -p python3 $KIWIX_DIR -# Activate the virtualenv -source $KIWIX_DIR/bin/activate -# The virtualenv can be deactivated at anytime with -deactivate -``` - -## Libzim - -``` -git clone https://gerrit.wikimedia.org/r/p/openzim.git -cd openzim/zimlib -./autoconf.sh -./configure --prefix=$KIWIX_DIR -make -make install -``` - -## libpugixml - -``` -wget http://github.com/zeux/pugixml/releases/download/v1.8/pugixml-1.8.tar.gz && tar xf pugixml-1.8.tar.gz -cd pugixml-1.8 -cmake -DCMAKE_INSTALL_PREFIX=$KIWIX_DIR -DBUILD_PKGCONFIG=1 -DBUILD_SHARED_LIBS=1 -make -make install -``` - -## Xapian - -The libxapian provided by ubuntu package is too old and do not have the GLASS_BACKEND we use. -So we need to compile our own xapian version: - -``` -wget http://download.kiwix.org/dev/xapian-core-1.4.0.tar.xz && tar xf xapian-core-1.4.0.tar.xz -cd xapian-core-1.4.0 -./configure --enable-shared --enable-static --disable-sse --disable-backend-inmemory --disable-documentation --prefix=$KIWIX_DIR -make -make install -``` - -## meson - -Meson is a python package, just install it with pip. -(Be sure you are using the virtualenv created before) - -``` -pip install meson -hash -r # let's bash renew its hashes and use the meson we've just installed -``` - -## ninja - -``` -git clone git://github.com/ninja-build/ninja.git && cd ninja -git checkout release -./configure.py --bootstrap -cp ninja $KIWIX_DIR/bin -``` - -The virtualenv automatically add the $KIWIX_DIR/bin in PATH, so there -is nothing more to do. - - -# Compile kiwix-lib - - -Then, it's time to compile kiwix-lib : - -``` -$ cd kiwix-lib -$ mkdir build -$ PKG_CONFIG_PATH=~/KIWIX/lib/pkgconfig meson . build --prefix=$KIWIX_DIR -$ cd build -$ ninja -$ ninja install -``` - -By default, it will compile dynamic linked libraries. -If you want statically linked libraries, you can add `--default-library=static` -option to the meson command. - -Licensed as GPLv3 or later, see COPYING for more details. diff --git a/README.md b/README.md index 7eb355406..4ca3debec 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,116 @@ -libkiwix -======== +Kiwix library +============= -libkiwix contains the common code base for all kiwix ports. +The Kiwix library provides the Kiwix software core. It contains the +code shared by all Kiwix ports (Windows, Linux, OSX, Android, ...). -Build kiwix-lib ---------------- +Disclaimer +---------- +This document assumes you have a little knowledge about software +compilation. If you experience difficulties with the dependencies or +with the Kiwix libary compilation itself, we recommend to have a look +to [kiwix-build](https://github.com/kiwix/kiwix-build). -Most of the compilation steps (including download and -compilation of dependencies and other tools (kiwix-tools)) are handle -by [kiwix-build](https://github.com/kiwix/kiwix-build) script. -If you don't have any special need, we recommend you to use kiwix-build -instead of doing all the steps yourself. +Preamble +-------- -Dependencies: +Although the Kiwix library can be compiled/cross-compiled on/for many +sytems, the following documentation explains how to do it on POSIX +ones. It is primarly though for GNU/Linux systems and has been tested +on recent releases of Ubuntu and Fedora. -You'll need the following dependencies to build libkiwix: +Dependencies +------------ -* icu -* libzim -* pugixml -* ctpp2 -* xapian (optional) (>=1.4) -* meson build system (>=0.34)(and so, ninja, pkg-config, ...) +The Kiwix library relies on many third parts software libraries. They +are prerequisites to the Kiwix library compilation. Following +libraries need to be available: + +* ICU ................................... http://site.icu-project.org/ +** Package libicu-dev on Ubuntu + +* ZIM ........................................ http://www.openzim.org/ +** Packge libzim-dev on Ubuntu + +* Pugixml ........................................ http://pugixml.org/ +** Package libpugixml-dev on Ubuntu + +* ctpp2 ........................................ http://ctpp.havoc.ru/ +** Package libctpp2-dev on Ubuntu + +* Xapian ......................................... https://xapian.org/ +** Package libxapian-dev on Ubuntu + +These dependencies may or may not be packaged by your operating +system. They may also be packaged but only in an older version. The +compilation script will tell you if one of them is missing or too old. +In the worse case, you will have to download and compile bleeding edge +version by hand. + +Environnement +------------- + +The Kiwix library builds using [Meson](http://mesonbuild.com/) version +0.34 or higher. Meson relies itself on Ninja, pkg-config and few other +compilation tools. + +Install first the few common compilation tools: +* Automake +* Libtool +* Virtualenv + +Then install Meson itself: +``` +virtualenv -p python3 ./ # Create virtualenv +source bin/activate # Activate the virtualenv +pip install meson # Install Meson +hash -r # Refresh bash paths +``` + +Finally download and build Ninja locally: +``` +git clone git://github.com/ninja-build/ninja.git +cd ninja +git checkout release +./configure.py --bootstrap +mkdir ../bin +cp ninja ../bin +cd .. +``` + +Compilation +----------- Once all dependencies are installed, you can compile kiwix-lib with: - ``` -$ cd kiwix-lib -$ mkdir build -$ meson . build -$ cd build -$ ninja -$ ninja install +mkdir build +meson . build +cd build +ninja ``` -By default, it will compile dynamic linked libraries. -If you want statically linked libraries, you can add `--default-library=static` -option to the meson command. +By default, it will compile dynamic linked libraries. If you want +statically linked libraries, you can add `--default-library=static` +option to the Meson command. -(You may need to set PKG_CONFIG_PATH before running meson depending of where -and how you've install dependencies) -(Depending of you system, `ninja` may be called `ninja-build`) +Depending of you system, `ninja` may be called `ninja-build`. +Installation +------------ -Howto build kiwix-lib on Ubuntu 16.04 (LTS) -------------------------------------------- +If you want to install the libraries you just have compiled on your +system, here we go: -If you want to compile yourself kiwix-lib see the specific readme to -[compile kiwix-lib on Ubuntu 16.04](COMPILE_ubuntu-16.04.md). +``` +ninja install +cd .. +``` -Licensed as GPLv3 or later, see COPYING for more details. +You might need to run the command as root, depending where you want to +install the libraries. + +License +------- + +GPLv3 or later, see COPYING for more details.