3rd Party Libraries (controlled dependencies) and tools to compile wpkg

We currently use several libraries to do tasks such as compressing and decompressing data saved inside a package.

This is done transparently, but you still need to have a copy of the library in order to do that compression/decompression work. We offer our own version of all the necessary libraries and they are seemlessly compiled within the wpkg environment.

Note that the default is to compile all those libraries as archives so once linked against wpkg we do not depend on any shared libraries (.so or .dll) which is true under Microsoft Visual Studio C++ and Ubuntu. Other platforms do not work properly in that regard (and since we're not maintaining these, at this point we will not look into offering a fix.)

The libraries we use are:

Z lib

http://zlib.net/

We keep a current zlib directory in the package. At this time, the library version is 1.2.7

bzip2 lib

http://www.bzip.org/

We keep a current bzip2 directory in the package. At this time, the library version is 1.0.6

xz lib

https://tukaani.org/xz/

The xz library is not yet used, but it is planned to support .xz and .lzma files as dpkg does.

controlled_vars lib

https://snapwebsites.org/project/controlled-vars

The controlled_vars library is actually just a set of C++ headers that help us avoid initialization problems of our variable members. It automatically initialize, and enforce boundaries when some are specified.

libtld lib

https://snapwebsites.org/project/libtld

The libtld library is used to determine whether a URI is valid. There is only a limited set of Top Level Domain names that are considered valid and this library ensures that only those are used in your URIs.

cppunit lib

https://sourceforge.net/projects/cppunit/

The cppunit library is not currently part of the wpkg environment. It is expected to be available on the side and used only to compile and run our test suite. Because the test suite is not part of the final wpkg results I did not see the point in having the library as part of the project. This may change at a later time so because I'm having problems in getting the tests to properly link against the library in a Windows environment.

expr lib

The C expression library is part of the wpkg project. It is not an external dependency. It is used to compute C like expressions on the fly.

libutf8

A simple C++ library used to convert std::string's from UTF-8 to std::wstrings and vice versa. This is useful to support the MS-Windows file system which supports UTF-16 filenames and not UTF-8.

libdebpackages lib

This is the wpkg library. Most of the code is found in the library so one can manage Debian packages without having to rewrite all the low level code necessary to create and load such packages.

cmake 2.8.4+

The cmake tool is used to generate the list of Makefiles, or for Visual Studio, KDevelop, and other IDEs, a list of project files.

Somewhat older versions may still work. You may edit the CMakeLists.txt file in the top directory to change the minimum requirements.

C++ compiler

We compiled the wpkg project with g++ version 4.7 and 4.8. Since you need C++11, you cannot go back further than 4.7. If your operating system has an older version by default, we suggest you compile a newer version with your current version. It compiles in 32 and 64 bit, although we generally only compile and test in 64 bit at this point.

Under MS-Windows, we also compiled with Visual Studio C++, in other words, the cl compiler version 16.00.40219.01 in 32 and 64 bit.