taskwarrior/INSTALL
2018-02-18 00:29:38 +01:00

189 lines
6.3 KiB
Text

Installation Instructions
-------------------------
Please follow the instructions below to build and install Taskwarrior from
source.
Dependencies
------------
You will need the CMake 3.0+ build system installed in order to build Taskwarrior
from source. More information on CMake can be obtained at https://cmake.org
You will also need:
- make
You will need a C++ compiler that supports full C++11, which includes:
- gcc 5.0 (released 2013-12-23)
- clang 3.4 (released 2014-01-02)
You will need the following libraries:
- libuuid (not needed for OSX)
- gnutls (can be optional - see '"sync" command' below)
Basic Installation
------------------
Briefly, these shell commands will unpack, build and install Taskwarrior:
$ tar xzf task-X.Y.Z.tar.gz [1]
$ cd task-X.Y.Z [2]
$ cmake -DCMAKE_BUILD_TYPE=release . [3]
$ make [4]
$ sudo make install [5]
$ cd .. ; rm -r task-X.Y.Z [6]
These commands are explained below:
1. Unpacks the source tarball. This creates the directory task-X.Y.Z,
containing all the code.
2. Change directory to the root of the distribution.
3. Invokes CMake to scan for dependencies and machine-specific details, then
generate the makefiles. Requests an optimized build, which will run faster
and be more compact. This may take a minute.
4. Builds Taskwarrior. This may take a minute.
5. Installs the program, documentation and other data files.
6. Removes the temporary directory.
Build and configurations options
--------------------------------
You can customize the configuration run with cmake variables. This will modify
the installation process:
To change the installation directory you use the following configuration
variable:
$ cmake -DCMAKE_INSTALL_PREFIX=<path-to-installation-dir> .
cmake configuration variables are applied with the -D option and consist of a
<name> and a <value>:
$ cmake -D<name>=<value> .
Four more variables can customize the installation process. The following table
lists them and their defaults plus the CMAKE_INSTALL_PREFIX:
CMAKE_INSTALL_PREFIX /usr/local
TASK_BINDIR bin
TASK_DOCDIR share/doc/task
TASK_RCDIR share/doc/task/rc
TASK_MAN1DIR share/man/man1
TASK_MAN5DIR share/man/man5
The corresponding TASK_* variables will be combined with CMAKE_INSTALL_PREFIX to
get absolute installation directories:
CMAKE_INSTALL_PREFIX/TASK_BINDIR /usr/local/bin
CMAKE_INSTALL_PREFIX/TASK_DOCDIR /usr/local/share/doc/task
CMAKE_INSTALL_PREFIX/TASK_RCDIR /usr/local/share/doc/task/rc
CMAKE_INSTALL_PREFIX/TASK_MAN1DIR /usr/local/share/man/man1
CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5
"sync" command
--------------
By default, GnuTLS support is required, which enables the "sync" command.
For Debian based distributions, installing "libgnutls-dev" is sufficient.
In order to build Taskwarrior without "sync" support, call cmake with the
"-DENABLE_SYNC=OFF" flag:
$ cmake . -DENABLE_SYNC=OFF
and proceed as described in "Basic Installation".
Uninstallation
--------------
There is no uninstall option in CMake makefiles. This is a manual process.
To uninstall Taskwarrior, remove the files listed in the install_manifest.txt
file that was generated when you built Taskwarrior.
Taskwarrior Build Notes
-----------------------
Taskwarrior has dependencies that are detected by CMake in almost all cases, but
there are situations and operating systems that mean you will need to offer a
little help.
If Taskwarrior will not build on your system, first take a look at the Operating
System notes below. If this doesn't help, then go to the Troubleshooting
section, which includes instructions on how to contact us for help.
Operating System Notes
----------------------
Cygwin
If 'make install' fails when writing to the /usr/local/share/ directory,
this may be because your current login doesn't have permission to write
to the Windows directory containing your Cygwin installation. Either
login to Windows as an Administrator and try the 'make install' process
again, or reinstall Cygwin under your normal Windows login.
Darwin, 32bit
Taskwarrior needs to be built from source, and use this configure command:
cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 .
See:
http://taskwarrior.org/issues/817
http://stackoverflow.com/questions/3261909/build-32bit-on-64-bit-linux-using-a-configure-script
http://stackoverflow.com/questions/2617508/cmake-gcc-cuda-and-m32-wtf
http://stackoverflow.com/questions/6077414/cmake-how-to-set-the-ldflags-in-cmakelists-txt
OpenBSD
In order to build Taskwarrior 2.4.2+, you might need to install a newer GCC
version from ports or packages.
Afterwards, run
cmake -DCMAKE_CXX_COMPILER=eg++ .
and build normally.
See: https://github.com/GothenburgBitFactory/taskwarrior/issues/1605
WASM
Using the Emscripten compiler, you can achieve it like this:
cmake -DCMAKE_CXX_COMPILER=emcc -DENABLE_SYNC=OFF -DCMAKE_BUILD_TYPE=release -DENABLE_WASM=ON \
-DCMAKE_EXE_LINKER_FLAGS="-m32 -s NO_DYNAMIC_EXECUTION=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s INVOKE_RUN=0" \
-DCMAKE_CXX_FLAGS_RELEASE="-O2 -m32"
This will produce an optimized WASM with a main() that is callable multiple times.
Troubleshooting
---------------
If you've recently made changes to dependencies (by reinstalling them, for
example) be sure to rerun 'cmake .' before trying to execute 'make' again.
CMake will run and locate all the necessary pieces for the build, and create
a Makefile. There may be errors and warnings when running CMake, or there
may be compiler errors and warnings when running 'make'. Sometimes you will run
CMake with no reported problems, and the build will fail later. This is
almost always because CMake is mistaken about some assumption.
If a build does not succeed, please send the contents of the 'CMakeCache.txt'
and 'CMakeFiles/CMakeOutput.log' files to support@gothenburgbitfactory.org.
If CMake runs but Taskwarrior does not build, please send the contents of the
above files as well as a transcript from the build, which is not written to a
file and must be captured from the terminal.
---