wpkg 0.9.0 available
Finally, I am releasing version 0.9.0!
This version corrects many glitches of older versions, including in the packaging scheme as well as handling of data by the libdebpackages library.
Also, probably one of the most important feature being added to wpkg: It is capable to building an entire repository of source packages all on its own, in other words, it is capable of being a build system by itself! Although that has minimally been tested under Microsoft Windows, it works perfectly under Linux. Our next step is to get a small repository compiled under both systems: Linux and MS-Windows.
Like with version 0.8.0, the list of changes is quite long, 2 pages in our ChangeLog! The main additions are:
- As just mentioned: means to build source packages and then binary packages from those source packages like a complete build system
- The build system supports an auto increment build number
- Cleaned up support for the support of the Distribution field
- Support for reading changelog and copyright file formats
- As with 0.8.2, support was added for long filenames in tarballs and wpkgar archives
- Extended scripts capabilities for packages (validation scripts) and administrators via hooks (global scripts)
- Added the --autoremove and --reconfigure commands
- Prevent upgrades to a too recent version without first upgrading to an intermediate version (Minimum-Upgradable-Version)
- Support a full rollback feature so you can run an installation and then roll it back with a single command
- Understand the vendor information in the architecture field, although it remains optional
- Implements the pkgconfig tool from within wpkg (yes! the Gnome pkgconfig to check .pc files!)
- Added many new unit tests to check the new features and some of the existing features
- Support doxygen documentation of all the classes, although everything is not yet documented in the libraries...
Another big change, although the feature is not new, is the log feature. It now uses a C++ class which makes it a lot safer to use. I actually found a few mistake in the old version and applied fixes to versions 0.8.x in that regard.
One last big change is the way to load control files. It is now split in a basic loader in wpkg_field. This makes a big difference because that way it can be used for the copyright file format and the pkgconfig support. Also the fields are checked from within their own class instead of one after another in some really long function. This also allows us to easily turn on or off the different checks depending on whether we are just checking a package contents, or if we're building a new package.
One neat change, I removed the need to specify the --root option when you simply want to check the contents of a package (i.e. commands such as --contents or --field). Instead the system makes use of the default system temporary directory and also it automatically cleans up that temporary directory on exit.
In regard to Microsft Windows support, the UNC filename format is now used in many more cases. The fact is that if a relative path is too long, the operation always fails. Instead we change any filename that a bit too long in a UNC path (a path that starts with \\?\...) That increases the chances of success tremendously.
Another Microsoft Windows problem, the Date field would get the word "ric" instead of the proper timezone. This is fixed.
Yet another Microsoft Windows specific fix: the static libraries are properly compiled with /MT and the dynamic libraries with /MD. However, you will need to get the latest greatest version of cmake in order to have access to the new command target_compile_options() that was just added to properly support this feature. At this time, cmake version 2.8.11.2 does not support that new instruction.
In terms of fixes, I noticed that the --fsys-tarfile would actually crash wpkg. This is fixed! Another bad one: the --force-architecture option was not being checked!? And the --force-configure-any was checked with the name of the --force-depends-version, need less to say, that did not work as expected. A validation would fail testing the version of a package letting you do things that could otherwise be forbidden to do.
For Mingw32, I implemented our own fstream which understands UTF-8 for filenames on all platforms. Very practical! This works under Linux (pretty much all Unices), MS-Windows Visual Studio, and MS-Windows Mingw32. So all platforms are fully supporting Unicode now.
IMPORTANT NOTE
This version has been run through all our unit tests, so it is already very stable. Probably as much as version 0.8.3. However, it was not yet assesed as the 0.8.x versions. Unless you like the bleeding edge or really want to use one of the new capabilities of wpkg, I suggest you keep using 0.8.x instead for a while. Of course, if you are using 0.9.0 and find problems with it, let us know by posting a request on SourceForge.net. Of course, there are known bugs in older version that may also force you to upgrade to 0.9.0.