The formal review of IO and Toolbox extensions to Boost.GIL has been extended until next Friday, December 17th, 2010. It’s plenty of time, so we are looking forward to receiving more feedback from the reviewers. Thanks in advance for your contributions!
Tag Archives: review
Notes on Boost.Build for Boost.GIL
Update: Updating Boost.Build extensions
Christian Henning, Boost.GIL developer, has been working intensively on design and implementation of the new image I/O extensions for Boost.GIL. It is Boost.GIL I/O v2. Official review of this piece of software by the Boost project Community is coming soon.
I have been playing with this new I/O lately myself and building it mostly using manually crafted solutions for Microsoft Visual Studio.
I decided to learn a bit more about the mysterious Boost.Build, so I can configure all Boost.GIL dependencies resolution in Jamfile and make testing process more portable.
Below, I include some notes of how I accomplished it. However, due to the cryptic nature of Boost.Build and my honest lack of understanding of this system, I have found my way through this configuration following bumpy path of trial and error. Thus, my findings may seem
weird to Boost.Build zealots and there surely is better way of doing it. Basically, I will use Boost.Build extensions – a very nice project which has a chance to become official part of the Boost.Build.
Here is directories layout I used in the following configuration with base path tagged using {DEV}. So, wherever you see the {DEV} tag in examples below, just substitute it with your own location:
$ cd {DEV}
$ ls -1
build_extensions
deps
Jamroot
output
test_images
trunk
First, checkout sources of Boost C++ libraries from the trunk in the Subversion repository:
$svn co http://svn.boost.org/svn/boost/trunk trunk
Second, get copy of the Boost.Build extensions from the Boost Sandbox – a place for software closely related but not included in official Boost:
svn co http://svn.boost.org/svn/boost/sandbox/tools/build_extensions/ build_extensions
Third, configure a couple of environment variables to locate Boost.Build components:
$ export BOOST_BUILD={DEV}/trunk/tools/build/v2
$ export BOOST_BUILD_PATH={DEV}/build_extensions/ext
Fourth, grab source code of dependencies of Boost.GIL I/O extensions like libjpeg, libpng, zlib, libtiff and install them by repeating the following two-steps procedure:
for library in (jpeg, libpng, zlib)
download library
unpack lib to {DEV}/deps
Fifth, get the new Boost.GIL I/O extensions. Current version at the moment of posting these notes is available as boost_review.zip package. Unpack it and copy content of boost directory in to boost subtree – {DEV}/trunk/boost, content of libs to {DEV}/trunk/libs. Basically, files of the GIL extensions should be installed in the following locations:
{DEV}/boost/gil/extension/io_new
{DEV}/trunk/boost/gil/extension/toolbox
{DEV}/trunk/libs/gil/io_new
Sixth, create empty Jamroot file:
$touch {DEV}/trunk/libs/gil/Jamroot
I found this file is required to not to confuse Boost.Build unnecessarily and without this file executing bjam throws a bunch of cryptic errors starting with:
trunk/tools/build/v2/build/virtual-target.jam:452: in _adjust-name from module object(file-target)@904 error: <tag>@rulename is present but is not the only </tag>feature
Finally, create Jamfile building your program based on Boost.GIL with all image format libraries specified as dependencies. As a quick test, I have modified (shorten) {DEV}/trunk/libs/gil/io_new/test/Jamfile.v2 to build one of tests for JPEG:
$ cat {DEV}/trunk/libs/gil/io_new/test/Jamfile.v2
import testing ;
using jpeg : 6a : {DEV}/deps/jpeg-8a ;
project
: requirements
<library>/boost/test//boost_unit_test_framework
<link>static
;
test-suite "gil::io_new"
:
[ run jpeg_read_test.cpp /ext/jpeg//jpeg ]
;
Quick check if the test program builds and runs:
$ bjam ...patience... ... gcc.link bin/jpeg_read_test.test/gcc-4.4.5/debug/link-static/jpeg_read_test testing.capture-output bin/jpeg_read_test.test/gcc-4.4.5/debug/link-static/jpeg_read_test.run **passed** bin/jpeg_read_test.test/gcc-4.4.5/debug/link-static/jpeg_read_test.test ...updated 9 targets...
Note, that executing bjam will build all the third-party libraries from their sources, as dependencies of Boost.GIL, and next all targets of your own binaries being dependant on Boost.GIL. No extra Jamfiles for libjpeg, libpng and other libraries are required. Here simply the magic of Boost.Build and its extensions kicks in.
If you need to use other formats, you need to import other libraries as well. Like this:
using zlib : 1.2.4 : {DEV}/deps/zlib-1.2.4 ;
using png : 1.4.0 : {DEV}/deps/libpng-1.4.1 ;
As I have mentioned, I not an expert of Boost.Build but rather wigwaging through its matter. So, if you’ve found an error or better solution please let me know. At the same time, if you have problems with applying my notes, it may mean they don’t present correct solution and I’d suggest rather to ask on the Boost mailing lists or IRC channel #boost than asking me.
Generic Geometry Library accepted to Boost
Today, Hartmut Kaiser, manager of the review of the Generic Geometry Library, announced the official results of the review.
Here we go:
Formally this review ended with 12 YES and 2 NO votes. This result reflects the overall discussion and the general consensus of this library being worth to be included into Boost.
It means that formally the Generic Geometry Library has been approved to become a part of Boost C++ Libraries collection. Happy day!
Hartmut also writes:
It is worth highlighting that most of the reviewers emphasized the excellent quality of the library design.
I would like to send out my own kudos to Barend Gehrels and Bruno Lalande, the very core team, who started the project, designed and implemented the high-quality library and eventually released it as Open Source Software.
Review of the Generic Geometry Library by Boost extended
Hartmut Kaiser, manager of the formal review of the Generic Geometry Library (GGL) by the Boost Community has extended the review period until November 22nd, 2009.
Boost.Polygon library accepted into Boost
Continuing today’s topic of computational geometry, I’m happy to forward one more news from the Boost Community. On November 5th, 2009, after conducting the process of formal review, Fernando Cacciola – the review manager – announced that Boost C++ Libraries officially accepted Boost.Polygon library to its collection. The Boost.Polygon is developed by Lucanus Simonson with support by Intel Corporation.
See Fernando’s message Boost.Polygon library accepted into boost.
I suppose it will be released in Boost version following the upcoming 1.41.0.
Formal review of the Generic Geometry Library by Boost Community
Nearly a month after sending out request for review of the Generic Geometry Library (GGL), the Boost Community started process of formal review on November 5th, according to the official Boost reviews schedule. The review is being led by Hartmut Kaiser.
Boost Community members interested in computational geometry has posted quite a large number of comments, questions and suggestions. Barend, as the designer and lead developer of the GGL with most comprehensive knowledge about its every particle, has been doing very hard work scrupulously reacting to every feedback.
Today, Hartmut announced we’re halfway through the GGL review and called for sending reviews. Not every feedback from Boost developers and users sent during library review is considered as review response. Some of senders mark their e-mails as not a review. So, now its time to send review votes.
This is first time I’ve been monitoring Boost formal review in details and I have to admit that it was amazing to observe such very particular feedback. Boost Community conducts proper reviews indeed. Even if a library is not to be accepted, it’s extremely useful for developers to give it a go and collect such feedback about their software. Barend Gehrels has been constantly updating the GGL documentation already. I’m going to compile GGL FAQs based the collected feedback.
All (almost) the posted feedback is recorded in the main Boost mailing list archives under thread with subject [boost] [Review] GGL review starts today, November 5th. There are also some forked but related threads like [boost] GGL Extensions and [boost] GGL Review.
Boost will review Generic Geometry Library
Today afternoon, Barend Gehrels oficially submitted formal request of the Generic Geometry Library (GGL) to Boost C++ Libraries.
After a long journey through four previews and number of discussions, here and there on Boost mailing list and on GGL mailing list, and through the library presentation at BoostCon’08 and hard work on application of improvements to design and implementation contributed by previews reviewers and also by growing community of users, the Generic Geometry Library project finally has got his D-Day. Today official request has been posted to the Boost Community.
The design of the GGL library is stable. The library provides a variety of coherent functionality. Given that, the library has matured enough for formal review. Fair enough.
The Generic Geometry Library is considered as a general purpose library which is not bound to any specific domain. I believe this goal has been achieved very well. However, every use of a software library is a domain-specific use. Thus, next to built-in features, agnosticism (computing) and extensibility, an idea of GGL extensions has been defined. We* agreed that extensions should be supported in a very similar way to how the Generic Image Library (GIL) does it. So we are going to help to organize development of GGL extensions, where an extension is something more specific to domains, for example domain of GIS applications.
The review is put on the official Boost formal review schedule with Hartmut Kaiser as the review manager. Let’s get this party started:
Formal Review Request: Generic Geometry Library (GGL).
The Boost review itself is quite long, very detailed and fairly exhausting, for a library submitters, process. It feels like a kid standing still in front of a wall and other kids are bombarding him with snow balls. Having in memories process of Boost.Polygon library review I was witnessing a few weeks ago, GGL is going to take zillions of “snow balls” on the chin :-) Fingers crossed!
* I’ve joined the Generic Geometry Library project in April 2008 2009 and since then has tried contribute by evaluating, testing, fixing, porting, improving and extending to some small, hopefully useful, extent.