[Boost-bugs] [Boost C++ Libraries] #11224: Pre-processing / Pre-generating MPL-containers stopped working

Subject: [Boost-bugs] [Boost C++ Libraries] #11224: Pre-processing / Pre-generating MPL-containers stopped working
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-04-22 09:44:30


#11224: Pre-processing / Pre-generating MPL-containers stopped working
---------------------------------------------+------------------------
 Reporter: Deniz Bahadir <deniz.bahadir@…> | Owner: agurtovoy
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: mpl
  Version: Boost 1.56.0 | Severity: Regression
 Keywords: |
---------------------------------------------+------------------------
 == Background ==

 Boost.MPL allows to pre-process / pre-generate headers for MPL-containers
 (`vector`, `list`, `set`, `map`). In particular, headers for containers in
 ''variadic'' and ''numbered'' form can be pre-generated. For that,
 Boost.MPL comes with some python-scripts, located in subdirectory
 "libs/mpl/preprocessed/" of the Boost-source directory. (As a side-note:
 Documentation for these python-scripts is missing.)

 By default, Boost comes with pre-generated headers for MPL-containers that
 are able to hold up to 50 elements. Using the mentioned python-files it is
 possible to generate MPL-containers that can hold even more elements.


 == Problem ==

 Since release of Boost 1.56.0 the pre-generation of headers for MPL-
 containers does not work anymore.


 == Explanation ==

 One of the python-scripts used for pre-generation ("`pp.py`") requires
 certain information to be found in the header-comments of input-headers.
 In particular, it required the field `$Id$` in the header-comment to
 contain the filename (followed by some additional non-whitespace
 characters), which it no longer does in release 1.56.0 and newer Boost
 releases.

 `$Id$` is a Subversion substitution-keyword. (See: `[http]://svnbook.red-
 bean.com/en/1.7/svn-book.html#svn.advanced.props.special.keywords`)

 I assume, Boost switched from Subversion to Git before releasing Boost
 1.56.0. That would explain why the keyword-substition did no longer work.


 == Solution ==

 To make the python-scripts work again, the best solution would be to also
 make the keyword-substitution work together with Git. However, as this is
 neither simple nor recommended (see:
 `[https]://git.wiki.kernel.org/index.php/Git_FAQ#Does_Git_have_keyword_expansion.3F`)
 one should probably add the missing information into the header-comments
 directly before pre-generation.

 The attached python-script "`fix_boost_mpl_preprocess.py`" is able to do
 that.
 The attached python-script "`boost_mpl_preprocess.py`" can then be used as
 a comfortable helper-script for pre-generating.


 == Additional Information ==

 Explanation for both scripts on Stackoverflow:[[BR]]
 `[http]://stackoverflow.com/a/29627158/3115457`

 Discussion regarding this problem on the boost-users mailing-list:[[BR]]
 `[http]://thread.gmane.org/gmane.comp.lib.boost.user/83794`

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11224>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC