I took a look at the release procedure today and ran into quite a few
problems.  It seems that Maven and autotools don't work well together.
This was an attempt to get around using the cpptasks from Ant to build
log4cxx, as the cpptasks try to build APR and APR-util without using
autotools.

This is a very convoluted process that I did, but I managed to get it to be
reproducible.  This does use a modified POM:
https://gist.github.com/rm5248/25302e2c36df4e24e4ffb56484e78190  The
changes in the POM:

   1. change the SCM so it commits to a local SVN repo for testing purposes.
   2. purge all of the ant tasks.  Replaced with maven-exec-plugin commands
   3. updated a few plugins, although that may have broken some stuff(the
   website looks all funky at this point)

Procedure:

   1. Download maven 3.3.9 (Debian 8 has only 3.0.5, which does not work
   properly for some reason)
   2. run: /path/to/mvn3.3.9 release:prepare.  Fill in what you can; this
   will fail when it tries to clean the project.
   3. run: /path/to/mvn3.3.3 initialize.  This will run the initial
   autotools.
   4. run: /path/to/mvn3.3.9 release:prepare
   5. run: /path/to/mvn3.3.9 release:perform

Once you have done step 5, there will be a tar.gz and zip under
target/checkout/target.  The website is under
target/checkout/target/site(there's also a site-deploy which appears to
contain the exact same files).

Caveats at this point:

   - website looks all weird(my guess is dueling CSS files)
   - Doxygen docs have not been copied to the website directory
   - the tar.gz does not grab the install-sh for some reason - it is listed
   in the assembly/source.xml, but it is not grabbed for some reason.

I'm sure that there's a C++/autotools project that is successfully using
maven to do this procedure, I just don't know of one off the top of my head.

At this point, I have a few questions:

   1. What is the POM here for?  As far as I can tell, the only important
   things it needs to do are to create the website, and use the
   maven-release-plugin to automatically create a tag in SVN.
   2. Are there any C++ projects successfully doing this?
   3. Why is the distribution not made with autotools(since it already has
   the capability of creating a tar.gz and zip files)
   4. How was this done in the first place?  According to the SVN log,
   carnold was the last person to create an actual release(8 years ago!)(he
   did apparently use the maven-release-plugin though, the commit message says
   so)


-Robert Middleton

Reply via email to