mirror of
https://github.com/boostorg/python.git
synced 2026-02-01 08:42:16 +00:00
https://svn.boost.org/svn/boost/trunk ................ r44724 | daniel_frey | 2008-04-22 12:48:39 -0700 (Tue, 22 Apr 2008) | 1 line Reduce enable_shared_from_this overhead ................ r44726 | emildotchevski | 2008-04-22 15:23:27 -0700 (Tue, 22 Apr 2008) | 1 line seems like <link>static causes errors ................ r44727 | chris_kohlhoff | 2008-04-22 16:46:15 -0700 (Tue, 22 Apr 2008) | 2 lines Fix or suppress MSVC level 4 warnings. Fixes #1703. ................ r44728 | pdimov | 2008-04-22 17:33:58 -0700 (Tue, 22 Apr 2008) | 1 line Silence an g++ -Wextra warning. ................ r44729 | noel_belcourt | 2008-04-22 18:35:01 -0700 (Tue, 22 Apr 2008) | 11 lines Fixed intel-darwin unresolved symbols by changing the wide integer type from unsigned int (which managles as a 'j') to an int (which mangles as an 'i'). This change makes intel-darwin generated code match the darwin toolset generated code. Intel reports this won't be fixed in 10.1 because it's an ABI breanking chanage so we won't see this patched until the 10.2 compilers. ................ r44730 | daniel_frey | 2008-04-22 23:12:39 -0700 (Tue, 22 Apr 2008) | 1 line Reduce enable_shared_from_this overhead (replace _internal_shared_ptr by _internal_shared_count) ................ r44738 | danieljames | 2008-04-23 00:09:58 -0700 (Wed, 23 Apr 2008) | 85 lines Merge support for emplace for compilers with rvalue references and variadic templates arguments, and better use of C++0x allocators. Merged revisions 44058-44075,44078-44084,44086-44108,44110-44365,44367,44369-44414,44416-44419,44421-44457,44467-44469,44471-44511,44513-44535,44537-44737 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ................ r44467 | danieljames | 2008-04-16 18:35:56 +0100 (Wed, 16 Apr 2008) | 2 lines Add C++-0x support to the test allocators. ................ r44468 | danieljames | 2008-04-16 18:36:06 +0100 (Wed, 16 Apr 2008) | 2 lines Add a C++-0x node_constructor. ................ r44469 | danieljames | 2008-04-16 18:36:16 +0100 (Wed, 16 Apr 2008) | 2 lines C++-0x constructor for node. ................ r44516 | danieljames | 2008-04-17 21:41:48 +0100 (Thu, 17 Apr 2008) | 16 lines Merge in my work so far on implementing emplace for compilers with variadic template & rvalue references. Merged revisions 44059-44062 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/dev ........ r44059 | danieljames | 2008-04-05 17:41:25 +0100 (Sat, 05 Apr 2008) | 1 line First stab at implementing emplace - only for compilers with variadic template & rvalue references. ........ r44062 | danieljames | 2008-04-05 19:12:09 +0100 (Sat, 05 Apr 2008) | 1 line Better variable template arguments, need to add proper support to BoostBook. ........ ................ r44616 | danieljames | 2008-04-20 13:30:19 +0100 (Sun, 20 Apr 2008) | 1 line Merge with trunk, fixes tabs. ................ r44618 | danieljames | 2008-04-20 13:42:38 +0100 (Sun, 20 Apr 2008) | 2 lines Some extra compile tests. ................ r44619 | danieljames | 2008-04-20 13:42:50 +0100 (Sun, 20 Apr 2008) | 2 lines Fix an error message. ................ r44703 | danieljames | 2008-04-21 20:19:50 +0100 (Mon, 21 Apr 2008) | 15 lines Merge latest changes from trunk. Merged revisions 44616-44702 via svnmerge from https://svn.boost.org/svn/boost/trunk ........ r44650 | danieljames | 2008-04-20 22:08:57 +0100 (Sun, 20 Apr 2008) | 1 line Update an include. ........ r44697 | danieljames | 2008-04-21 16:55:40 +0100 (Mon, 21 Apr 2008) | 1 line Factor out the code for choosing the bucket count, and which bucket that hash values map to make it easier to experiment with alternative policies. ........ ................ r44733 | danieljames | 2008-04-23 07:55:43 +0100 (Wed, 23 Apr 2008) | 2 lines Remove 'reserve_extra'. ................ r44734 | danieljames | 2008-04-23 07:55:55 +0100 (Wed, 23 Apr 2008) | 2 lines More unnecessary copy tests - showing some weakness in the emplace implementation. ................ r44735 | danieljames | 2008-04-23 07:56:06 +0100 (Wed, 23 Apr 2008) | 2 lines More tests. ................ r44736 | danieljames | 2008-04-23 07:56:19 +0100 (Wed, 23 Apr 2008) | 2 lines Comment out a test which requires a C++0x std::pair. ................ r44737 | danieljames | 2008-04-23 07:56:35 +0100 (Wed, 23 Apr 2008) | 2 lines Avoid creating unnecessary copies in unordered_set::emplace and unordered_map::emplace. ................ ................ r44741 | noel_belcourt | 2008-04-23 09:16:38 -0700 (Wed, 23 Apr 2008) | 4 lines Patch PGI to fix config problem (clock_gettime is unresolved external) and add required macro define for IOV_MAX support. ................ r44742 | emildotchevski | 2008-04-23 10:31:56 -0700 (Wed, 23 Apr 2008) | 1 line Fix for http://tinyurl.com/6owy6b. ................ r44744 | daniel_frey | 2008-04-23 12:32:44 -0700 (Wed, 23 Apr 2008) | 1 line Remove dynamic_cast in init_internal_shared_once() ................ r44746 | noel_belcourt | 2008-04-23 18:40:31 -0700 (Wed, 23 Apr 2008) | 4 lines Fixup patch to intel-darwin.jam so it looks and reads a bit better. ................ r44747 | noel_belcourt | 2008-04-23 21:58:27 -0700 (Wed, 23 Apr 2008) | 3 lines Force pgi to always link rt lib, ugh. ................ r44748 | johnmaddock | 2008-04-24 02:40:31 -0700 (Thu, 24 Apr 2008) | 3 lines Apply VC-7.1 fixes: sometimes ADL fails, and we need a using declaration in order for the correct overload to be found. Add missing #include. to t_distribution_inv.hpp. Suppress unnecessary instantiations in instantiate_all.cpp. ................ r44749 | hkaiser | 2008-04-24 06:52:22 -0700 (Thu, 24 Apr 2008) | 1 line Phoenix: disambiguated ref() (gcc 4.3 complained...) ................ r44750 | hkaiser | 2008-04-24 06:54:05 -0700 (Thu, 24 Apr 2008) | 1 line Spirit.Qi: helping gcc 4.3 to understand what's going on. ................ r44752 | bemandawes | 2008-04-24 13:29:08 -0700 (Thu, 24 Apr 2008) | 1 line Fix #1858, typo in non-member operators table ................ r44753 | grafik | 2008-04-24 13:30:03 -0700 (Thu, 24 Apr 2008) | 1 line Make it possible to filter which libraries are tested from the CLI with "--filter-tests=" options. ................ r44755 | djowel | 2008-04-24 15:13:32 -0700 (Thu, 24 Apr 2008) | 1 line added nullary function support ................ r44756 | djowel | 2008-04-24 15:13:58 -0700 (Thu, 24 Apr 2008) | 1 line use plain functions instead of bind ................ r44758 | noel_belcourt | 2008-04-24 16:05:16 -0700 (Thu, 24 Apr 2008) | 4 lines Added no two phase name lookup for intel-darwin compilers. ................ r44764 | noel_belcourt | 2008-04-25 08:38:26 -0700 (Fri, 25 Apr 2008) | 4 lines Enable macros BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE and BOOST_HAS_NANOSLEEP. ................ r44766 | niels_dekker | 2008-04-25 09:50:32 -0700 (Fri, 25 Apr 2008) | 1 line Improved swap for optional<T>, co-written by Thorsten and Fernando: added support for tweaking whether swap should use T's default constructor. Added swap member function. Discussed at Boost developers' mailing list, "[optional] problems with swap()", http://lists.boost.org/Archives/boost/2008/04/135882.php ................ r44767 | niels_dekker | 2008-04-25 09:52:34 -0700 (Fri, 25 Apr 2008) | 1 line Added unit tests, testing optional<T> swap improvements of revision [44766] ................ r44768 | noel_belcourt | 2008-04-25 10:37:47 -0700 (Fri, 25 Apr 2008) | 3 lines Get config tests working (missing -lrt). ................ r44771 | hkaiser | 2008-04-25 19:02:44 -0700 (Fri, 25 Apr 2008) | 1 line Applied patch provided by Felipe Magno de Almeida [felipe.m.almeida@gmail.com]. ................ r44772 | daniel_frey | 2008-04-25 23:36:59 -0700 (Fri, 25 Apr 2008) | 1 line No need for the new ctors to be templates ................ r44773 | anthonyw | 2008-04-26 00:34:46 -0700 (Sat, 26 Apr 2008) | 1 line Fixed g++ compile error ................ r44774 | speedsnail | 2008-04-26 02:54:07 -0700 (Sat, 26 Apr 2008) | 3 lines use-project didn't actually do what the comment promised. This triggered an error with thread Jamfile that could be seen when bjam was invoked in rootdir with bjam --with-wave. ................ r44775 | pdimov | 2008-04-26 06:39:52 -0700 (Sat, 26 Apr 2008) | 1 line Added a few more tests. ................ r44777 | daniel_frey | 2008-04-26 08:42:13 -0700 (Sat, 26 Apr 2008) | 1 line Added new reset()-counterparts for the new ctors ................ r44781 | emildotchevski | 2008-04-26 10:43:58 -0700 (Sat, 26 Apr 2008) | 1 line Added protected destructor to the base type error_info_base ................ r44782 | daniel_frey | 2008-04-26 12:59:11 -0700 (Sat, 26 Apr 2008) | 1 line Refactored and optimized enable_shared_from_this ................ r44783 | hkaiser | 2008-04-26 13:09:56 -0700 (Sat, 26 Apr 2008) | 1 line Added wrap_action for zero parameter semantic actions ................ r44784 | hkaiser | 2008-04-26 13:10:36 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: fixed typos in comments ................ r44785 | hkaiser | 2008-04-26 13:11:25 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Classic: Added some explaining comments to the namespace handling. ................ r44786 | hkaiser | 2008-04-26 13:12:12 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: applied patch from #1886, closed now. ................ r44787 | hkaiser | 2008-04-26 13:24:00 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: Switched to use unordered from main Boost distribution, removed local copy of unordered. ................ r44789 | hkaiser | 2008-04-26 14:51:59 -0700 (Sat, 26 Apr 2008) | 1 line Phoenix: Fixed gcc 4.3.0 compilation issue. ................ r44790 | grafik | 2008-04-26 15:21:50 -0700 (Sat, 26 Apr 2008) | 1 line Add the test target name to the bjam XML log output to make it easier to match tests to jam targets. ................ r44791 | grafik | 2008-04-26 16:15:40 -0700 (Sat, 26 Apr 2008) | 1 line Re-implement PJL in Python to fix various problems with the C++ version. In brief to remove the need of a good C++ compiler to submit results, remove the post-processing of the raw bjam output, and to fix missing results (for example Spirit classic results). ................ r44792 | hkaiser | 2008-04-26 17:49:41 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: disabled some warnings for VC /W4 ................ r44793 | hkaiser | 2008-04-26 18:00:34 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: suppressed more VC level 4 warnings ................ r44794 | hkaiser | 2008-04-26 18:04:25 -0700 (Sat, 26 Apr 2008) | 1 line Fusion: Fixed a VC level 4 warning ................ r44795 | hkaiser | 2008-04-26 18:08:04 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: suppressed more VC level 4 warnings. ................ r44796 | hkaiser | 2008-04-26 18:08:43 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: suppressed more VC level 4 warnings. ................ r44797 | hkaiser | 2008-04-26 18:38:42 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: Attempt to fix Intel V9.1 issue. ................ r44798 | hkaiser | 2008-04-26 18:44:31 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: fixed some gcc 4.3 warnings. ................ r44799 | hkaiser | 2008-04-26 18:45:05 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: Fixed gcc 4.3 compilation erros. ................ r44800 | hkaiser | 2008-04-26 18:46:24 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: fixed some gcc 4.3 warnings. ................ r44801 | hkaiser | 2008-04-26 18:47:35 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Lex: fixed some gcc 4.3 warnings. ................ r44802 | hkaiser | 2008-04-26 18:50:50 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Karma: Fixed Jamfile ................ r44803 | hkaiser | 2008-04-26 18:59:44 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Qi: Fixed a ambiguity reported by gcc 4.3 ................ r44804 | hkaiser | 2008-04-26 19:01:22 -0700 (Sat, 26 Apr 2008) | 1 line Spirit.Karma: Fixed gcc 4.3 compilation issue. ................ r44805 | hkaiser | 2008-04-26 19:04:07 -0700 (Sat, 26 Apr 2008) | 1 line Spirit: Fixed a ambiguity reported by VC8 for embedded systems ................ r44806 | djowel | 2008-04-26 20:21:12 -0700 (Sat, 26 Apr 2008) | 1 line tweak: const correctness ................ r44807 | danieljames | 2008-04-27 00:39:49 -0700 (Sun, 27 Apr 2008) | 78 lines Merge in documentation fixes. Apart from the change to optional's documenation Jamfile, which I included by mistake. Fixes #1659, #1661, #1684, #1685, 1687, #1690, #1801 I wrote about this at: http://lists.boost.org/Archives/boost/2008/04/136405.php Merged revisions 44585-44806 via svnmerge from https://svn.boost.org/svn/boost/branches/doc ........ r44585 | danieljames | 2008-04-19 16:25:27 +0100 (Sat, 19 Apr 2008) | 2 lines Fix broken link to vacpp in bjam docs. Refs #1512 ........ r44586 | danieljames | 2008-04-19 16:27:36 +0100 (Sat, 19 Apr 2008) | 2 lines Fix broken link to bcpp in bjam docs. Refs #1513 ........ r44587 | danieljames | 2008-04-19 16:33:58 +0100 (Sat, 19 Apr 2008) | 2 lines DateTime documentation - Fix a link to the serialization library. Refs #1659 ........ r44588 | danieljames | 2008-04-19 16:35:36 +0100 (Sat, 19 Apr 2008) | 2 lines Fix some links in interprocess & intrusive. Refs #1661 ........ r44589 | danieljames | 2008-04-19 16:37:39 +0100 (Sat, 19 Apr 2008) | 2 lines Fix some links in the python docs. Refs #1684. ........ r44590 | danieljames | 2008-04-19 16:38:29 +0100 (Sat, 19 Apr 2008) | 2 lines Work around a quickbook bug which is affecting the python docs. Refs #1684. ........ r44591 | danieljames | 2008-04-19 16:39:34 +0100 (Sat, 19 Apr 2008) | 2 lines Fix a broken link in the numeric conversion docs. Refs #1685 ........ r44592 | danieljames | 2008-04-19 16:40:45 +0100 (Sat, 19 Apr 2008) | 2 lines Fix some links in the optional docs. Refs #1687 ........ r44593 | danieljames | 2008-04-19 16:42:09 +0100 (Sat, 19 Apr 2008) | 2 lines Fix link to the hash documentation from bimap. Refs #1690 ........ r44599 | danieljames | 2008-04-19 18:07:33 +0100 (Sat, 19 Apr 2008) | 2 lines Fix a typo in the format library. Refs #1801 ........ r44600 | danieljames | 2008-04-19 19:20:59 +0100 (Sat, 19 Apr 2008) | 1 line Initialise svnmerge. ........ r44641 | danieljames | 2008-04-20 18:59:47 +0100 (Sun, 20 Apr 2008) | 2 lines Fix the lincense url in shared container iterator documentation. ........ r44642 | danieljames | 2008-04-20 19:00:00 +0100 (Sun, 20 Apr 2008) | 2 lines Fix image link in the mpi documentation. ........ r44643 | danieljames | 2008-04-20 19:00:11 +0100 (Sun, 20 Apr 2008) | 2 lines Fix a typo in the spirit docs. ........ r44644 | danieljames | 2008-04-20 19:00:23 +0100 (Sun, 20 Apr 2008) | 2 lines Escape the slash so that quickbook doesn't think it the start of an italic section, and mess up the link. Refs #1844 ........ r44647 | danieljames | 2008-04-20 19:39:47 +0100 (Sun, 20 Apr 2008) | 2 lines Fix another typo in spirit docs. ........ ................ r44812 | djowel | 2008-04-27 01:41:13 -0700 (Sun, 27 Apr 2008) | 1 line added grammar_class ................ r44813 | djowel | 2008-04-27 01:41:47 -0700 (Sun, 27 Apr 2008) | 1 line added grammar_class test ................ r44814 | djowel | 2008-04-27 01:44:38 -0700 (Sun, 27 Apr 2008) | 1 line tweak grammar_class test ................ r44815 | djowel | 2008-04-27 02:11:33 -0700 (Sun, 27 Apr 2008) | 1 line tweak grammar_class test ................ r44816 | djowel | 2008-04-27 02:11:49 -0700 (Sun, 27 Apr 2008) | 1 line tweak grammar_class ................ r44818 | igaztanaga | 2008-04-27 07:57:11 -0700 (Sun, 27 Apr 2008) | 13 lines Intrusive: * Added `linear<>` and `cache_last<>` options to singly linked lists. * Added `optimize_multikey<>` option to unordered container hooks. * Optimized unordered containers when `store_hash` option is used in the hook. * Implementation changed to be exception agnostic so that it can be used in environments without exceptions. * Added `container_from_iterator` function to tree-based containers. Interprocess: * Added anonymous shared memory for UNIX systems. * Fixed file lock compilation errors ................ r44819 | igaztanaga | 2008-04-27 08:03:06 -0700 (Sun, 27 Apr 2008) | 13 lines Intrusive: * Added `linear<>` and `cache_last<>` options to singly linked lists. * Added `optimize_multikey<>` option to unordered container hooks. * Optimized unordered containers when `store_hash` option is used in the hook. * Implementation changed to be exception agnostic so that it can be used in environments without exceptions. * Added `container_from_iterator` function to tree-based containers. Interprocess: * Added anonymous shared memory for UNIX systems. * Fixed file lock compilation errors ................ r44820 | hkaiser | 2008-04-27 11:09:29 -0700 (Sun, 27 Apr 2008) | 1 line Spirit.Lex: introduced workaround for Intel compilers <= V9.1 ................ r44821 | hkaiser | 2008-04-27 11:11:17 -0700 (Sun, 27 Apr 2008) | 1 line Spirit.Qi: Made it clear for gcc 4.3 which ref() to use. ................ r44822 | hkaiser | 2008-04-27 11:14:49 -0700 (Sun, 27 Apr 2008) | 1 line Spirit.Lex: Fixed a gcc 4.3 warning ................ r44823 | hkaiser | 2008-04-27 11:28:04 -0700 (Sun, 27 Apr 2008) | 1 line Spirit.Lex: Fixed a gcc 4.3 warning ................ r44824 | hkaiser | 2008-04-27 11:37:41 -0700 (Sun, 27 Apr 2008) | 1 line Spirit.Lex: Fixed a gcc 4.3 warning (again, sigh) ................ r44825 | niels_dekker | 2008-04-27 14:07:10 -0700 (Sun, 27 Apr 2008) | 1 line Added forward declaration of optional<T>'s boost::swap overload, as mentioned at http://article.gmane.org/gmane.comp.lib.boost.devel/174350 "Re: [optional] problems with swap()" ................ r44826 | niels_dekker | 2008-04-27 14:09:50 -0700 (Sun, 27 Apr 2008) | 1 line Replaced "using std::swap" by "using boost::swap" within optional::swap member function, hoping to fix GCC test failures, as mentioned at http://article.gmane.org/gmane.comp.lib.boost.devel/174350 "Re: [optional] problems with swap()" ................ r44831 | djowel | 2008-04-27 18:07:52 -0700 (Sun, 27 Apr 2008) | 1 line tweaks ................ r44837 | daniel_frey | 2008-04-28 00:17:11 -0700 (Mon, 28 Apr 2008) | 1 line Improved sp_deleter_wrapper implementation ................ r44838 | anthonyw | 2008-04-28 02:00:58 -0700 (Mon, 28 Apr 2008) | 1 line Added detail::try_lock_wrapper for use as scoped_try_lock typedefs, to fix issue #1873 ................ r44839 | anthonyw | 2008-04-28 02:04:40 -0700 (Mon, 28 Apr 2008) | 1 line reverted accidental change ................ r44840 | anthonyw | 2008-04-28 02:10:38 -0700 (Mon, 28 Apr 2008) | 1 line Added entry to breaking changes about default-constructed threads and the current thread: issue #1835 ................ r44842 | johnmaddock | 2008-04-28 04:07:14 -0700 (Mon, 28 Apr 2008) | 1 line Fixes for issue #1871 that prevents duplicate symbol errors with VC++ compilers, when building with /Zc:wchar_t-. ................ r44843 | djowel | 2008-04-28 04:15:13 -0700 (Mon, 28 Apr 2008) | 1 line experimental grammar/grammar_def unification ................ r44844 | djowel | 2008-04-28 04:16:29 -0700 (Mon, 28 Apr 2008) | 1 line experimental grammar/grammar_def unification ................ r44845 | djowel | 2008-04-28 04:17:09 -0700 (Mon, 28 Apr 2008) | 1 line calc2 generating an AST ................ r44846 | anthonyw | 2008-04-28 05:26:27 -0700 (Mon, 28 Apr 2008) | 1 line Updated locks.hpp to work with gcc as well as msvc ................ r44847 | hkaiser | 2008-04-28 06:33:15 -0700 (Mon, 28 Apr 2008) | 1 line Spirit.Lex: fixed workaround for Intel compilers <= V9.1 ................ r44848 | chris_kohlhoff | 2008-04-28 06:35:27 -0700 (Mon, 28 Apr 2008) | 2 lines Update asio version number. ................ r44849 | chris_kohlhoff | 2008-04-28 06:36:18 -0700 (Mon, 28 Apr 2008) | 2 lines Add raw socket support. ................ r44850 | hkaiser | 2008-04-28 06:44:40 -0700 (Mon, 28 Apr 2008) | 1 line Spirit.Qi: Added a missing 'using namespace'. ................ r44851 | chris_kohlhoff | 2008-04-28 06:56:07 -0700 (Mon, 28 Apr 2008) | 2 lines Add an experimental two-lock queue implementation for task_io_service. ................ r44852 | dgregor | 2008-04-28 07:11:46 -0700 (Mon, 28 Apr 2008) | 1 line Improve documentation on the size/efficiency of boost::function objects ................ r44853 | hkaiser | 2008-04-28 07:34:02 -0700 (Mon, 28 Apr 2008) | 1 line Spirit.Qi: calc2_ast: fixed a wrong include statement ................ r44857 | eric_niebler | 2008-04-28 09:46:33 -0700 (Mon, 28 Apr 2008) | 1 line add missing #include ................ r44862 | niels_dekker | 2008-04-28 14:14:15 -0700 (Mon, 28 Apr 2008) | 1 line Marked MSVC 7.1 optional_test failure as "expected", because of an ADL-related compiler issue. ................ r44864 | guwi17 | 2008-04-28 14:50:19 -0700 (Mon, 28 Apr 2008) | 4 lines - fix and close #1829 - You are right. The scaled norm wrongly assumed that the first element is not zero. ................ r44873 | daniel_frey | 2008-04-28 22:32:13 -0700 (Mon, 28 Apr 2008) | 1 line Fixed comment to reflect the intention and the current code ................ r44877 | johnmaddock | 2008-04-29 03:05:11 -0700 (Tue, 29 Apr 2008) | 2 lines Changed long long to boost::long_long_type and unsigned long long to boost::ulong_long_type. A couple of other typo corrections, to get the code compiling with g++ -pedantic. ................ r44881 | hkaiser | 2008-04-29 06:53:21 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Qi: Fixed grammar_test ................ r44882 | hkaiser | 2008-04-29 07:09:40 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Qi: Fixed grammar_test ................ r44883 | hkaiser | 2008-04-29 07:47:29 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Qi: Minor edits mainly in comments ................ r44886 | emildotchevski | 2008-04-29 10:17:45 -0700 (Tue, 29 Apr 2008) | 1 line Added required header #include <new> ................ r44887 | dgregor | 2008-04-29 10:57:54 -0700 (Tue, 29 Apr 2008) | 1 line Add support for MPI_SIGNED_CHAR to Boost.MPI ................ r44889 | dgregor | 2008-04-29 11:18:01 -0700 (Tue, 29 Apr 2008) | 1 line Remove names of unused variables. Fixes #1832 and fixes #1865 ................ r44891 | dgregor | 2008-04-29 11:34:28 -0700 (Tue, 29 Apr 2008) | 1 line Correct erroneous call to is_reachable from is_connected. Fixes #870 ................ r44893 | dgregor | 2008-04-29 11:37:26 -0700 (Tue, 29 Apr 2008) | 1 line Improve logic to guess the toolset name in top-level configure script. Fixes #1087 ................ r44895 | dgregor | 2008-04-29 11:46:17 -0700 (Tue, 29 Apr 2008) | 1 line Make configure more closely follow autotools conventions. Fixes #1664 ................ r44897 | marshall | 2008-04-29 13:16:19 -0700 (Tue, 29 Apr 2008) | 1 line Updated bounds on uniform_real and uniform_smallint to allow min == max ................ r44900 | jurko | 2008-04-29 15:49:36 -0700 (Tue, 29 Apr 2008) | 1 line Typo corrections & minor stylistic comment changes. ................ r44901 | hkaiser | 2008-04-29 17:59:08 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Karma: Fixed rule, added calc2_ast_dump example ................ r44902 | hkaiser | 2008-04-29 18:33:53 -0700 (Tue, 29 Apr 2008) | 1 line Spirit: Fixed main classic header ................ r44904 | hkaiser | 2008-04-29 18:57:39 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Karma: Fixing ref() ambiguity ................ r44905 | hkaiser | 2008-04-29 18:59:05 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Karma: Fixing ref() ambiguity ................ r44906 | hkaiser | 2008-04-29 19:00:28 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Qi: Fixing ref() ambiguity ................ r44907 | hkaiser | 2008-04-29 19:02:27 -0700 (Tue, 29 Apr 2008) | 1 line Spirit.Qi: Fixing ref() ambiguity ................ r44919 | danieljames | 2008-04-30 00:57:04 -0700 (Wed, 30 Apr 2008) | 49 lines Merge in support for equality operators for the unordered containers and hopefully better cross-platform support. Merged revisions 44778-44835,44837-44918 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ........ r44778 | danieljames | 2008-04-26 17:15:44 +0100 (Sat, 26 Apr 2008) | 2 lines Remove a trailing comma. ........ r44779 | danieljames | 2008-04-26 17:23:51 +0100 (Sat, 26 Apr 2008) | 1 line Merge in support for equality operators. ........ r44780 | danieljames | 2008-04-26 17:28:44 +0100 (Sat, 26 Apr 2008) | 1 line Use my own list container to avoid working around STL container bugs. ........ r44833 | danieljames | 2008-04-28 08:03:43 +0100 (Mon, 28 Apr 2008) | 1 line Better equality tests. ........ r44834 | danieljames | 2008-04-28 08:04:03 +0100 (Mon, 28 Apr 2008) | 1 line Remove a superfluous check. ........ r44835 | danieljames | 2008-04-28 08:04:21 +0100 (Mon, 28 Apr 2008) | 1 line Add equality reference documentation. ........ r44916 | danieljames | 2008-04-30 08:16:52 +0100 (Wed, 30 Apr 2008) | 1 line New version of list.hpp ........ r44917 | danieljames | 2008-04-30 08:18:31 +0100 (Wed, 30 Apr 2008) | 1 line Support compilers without ADL in the compile tests. ........ r44918 | danieljames | 2008-04-30 08:25:20 +0100 (Wed, 30 Apr 2008) | 7 lines Change the typedef of buffered functions as it was confusing MSVC 6.5 get_allocator wasn't compiling when the allocator workaround is used because it couldn't cast from the wrapped allocator to an allocator of another type. So use value_alloc_ when it's available (it's only unavailable on compilers with C++0x support, which don't require the workaround). ........ ................ r44934 | hkaiser | 2008-04-30 08:47:07 -0700 (Wed, 30 Apr 2008) | 1 line Spirit.Karma: Added example calc2_ast_rpn ................ r44941 | jurko | 2008-04-30 12:24:04 -0700 (Wed, 30 Apr 2008) | 1 line Comment cleanup - both stylistic & typo corrections. ................ r44942 | jurko | 2008-04-30 12:26:55 -0700 (Wed, 30 Apr 2008) | 1 line Comment typo correction. ................ r44946 | jurko | 2008-04-30 12:45:29 -0700 (Wed, 30 Apr 2008) | 1 line Added several svn:ignore Subversion properties to make Subversion ignore folders creating during default Boost & Boost Jam builds on Windows. ................ r44949 | jurko | 2008-04-30 13:00:24 -0700 (Wed, 30 Apr 2008) | 1 line Removed trailing spaces from tools/build/v2/build/modifiers.jam. ................ r44950 | hkaiser | 2008-04-30 13:33:23 -0700 (Wed, 30 Apr 2008) | 1 line Spirit.Karma: Fixed rule tests (pattern.cpp) ................ r44951 | hkaiser | 2008-04-30 13:41:37 -0700 (Wed, 30 Apr 2008) | 1 line Spirit.Karma: added #include <boost/config/warning_disable.hpp> to Karma examples ................ r44952 | hkaiser | 2008-04-30 13:42:11 -0700 (Wed, 30 Apr 2008) | 1 line Spirit.Lex: added #include <boost/config/warning_disable.hpp> to Lex examples ................ r44953 | jurko | 2008-04-30 13:58:05 -0700 (Wed, 30 Apr 2008) | 1 line Corrected a typo in the Boost Build documentation. ................ r44954 | emildotchevski | 2008-04-30 14:45:00 -0700 (Wed, 30 Apr 2008) | 1 line Integration of Boost Exception in boost::throw_exception(). ................ r44957 | hkaiser | 2008-04-30 15:54:09 -0700 (Wed, 30 Apr 2008) | 1 line Spirit.Qi: added #include <boost/config/warning_disable.hpp> to Qi examples ................ r44962 | djowel | 2008-04-30 19:10:56 -0700 (Wed, 30 Apr 2008) | 1 line integer overflow fix ................ r44968 | danieljames | 2008-05-01 02:23:22 -0700 (Thu, 01 May 2008) | 2 lines Add list.hpp which was missed from the merge. ................ r44969 | jurko | 2008-05-01 02:39:45 -0700 (Thu, 01 May 2008) | 1 line Consistently converted tabs to spaces in tools/build/v2/test/BoostBuild.py to avoid confusion reading the Python source. ................ r44970 | jurko | 2008-05-01 02:55:47 -0700 (Thu, 01 May 2008) | 1 line Renamed the Tester.wait_for_time_change() function to Tester.wait_for_time_change_since_last_build() to avoid confusion. ................ r44971 | jurko | 2008-05-01 03:03:15 -0700 (Thu, 01 May 2008) | 1 line Boost Build documentation typo correction. Removed trailing spaces. Minor stylistic changes. ................ r44972 | johnmaddock | 2008-05-01 04:51:39 -0700 (Thu, 01 May 2008) | 1 line Fix broken URL. ................ r44973 | hkaiser | 2008-05-01 07:17:52 -0700 (Thu, 01 May 2008) | 1 line Spirit.Karma: Trying to workaround a gcc 4.2.1 bug. ................ r44975 | jurko | 2008-05-01 08:09:58 -0700 (Thu, 01 May 2008) | 1 line Boost Build comment typo corrections and minor stylistic changes. ................ r44977 | hkaiser | 2008-05-01 09:20:38 -0700 (Thu, 01 May 2008) | 1 line Wave: Changing properties for test.cfg to fix test failures non Windows systems ................ r44979 | pdimov | 2008-05-01 09:50:39 -0700 (Thu, 01 May 2008) | 1 line make_shared added; tweaks for old compilers; fixes #1884. ................ r44980 | jurko | 2008-05-01 10:01:03 -0700 (Thu, 01 May 2008) | 1 line Minor stylistic comment changes. ................ r44981 | jurko | 2008-05-01 10:04:22 -0700 (Thu, 01 May 2008) | 1 line Added explanation comments for match_exact() and match_re() functions in tools/build/v2/test/TestCmd.py. Removed corpse interpreted member from the TescCmd class and the related setter function in tools/build/v2/test/TestCmd.py. Minor stylistic comment changes. ................ r44982 | jurko | 2008-05-01 10:06:02 -0700 (Thu, 01 May 2008) | 1 line Updated the main Tester class comment in tools/build/v2/build/v2/test/BoostBuild.py describing all of its available constructor parameters. Minor stylistic changes. ................ r44983 | jurko | 2008-05-01 10:08:04 -0700 (Thu, 01 May 2008) | 1 line Updated the Boost Build test system documentation. Now all the command line options are described. Several function descriptions updated. ................ r44984 | hkaiser | 2008-05-01 10:31:42 -0700 (Thu, 01 May 2008) | 1 line Spirit.Lex: Removed unused variables ................ r44991 | jurko | 2008-05-01 12:47:37 -0700 (Thu, 01 May 2008) | 1 line Fixed a bug with BOOST_BUILD_PATH not getting set correctly in Boost Build unit tests in case it contained spaces. ................ r44992 | jurko | 2008-05-01 12:55:50 -0700 (Thu, 01 May 2008) | 1 line Added the default Boost Jam build target folders on cygwin - bin.cygwinx86 & bin.cygwinc86.debug to the svn:ignore list. ................ r44993 | jurko | 2008-05-01 13:22:12 -0700 (Thu, 01 May 2008) | 1 line Upgraded the internal Boost Build test system so it can be run from folders whose names contain spaces on Windows. Also added a workaround for a Python bug on Windows where it has some undocumented behavior when starting processes using commands containing quotes. ................ r44995 | jurko | 2008-05-01 14:19:11 -0700 (Thu, 01 May 2008) | 1 line Minor stylistic changes. ................ r44997 | chris_kohlhoff | 2008-05-01 15:00:26 -0700 (Thu, 01 May 2008) | 3 lines Add a fast path for some speculative read and write operations in the epoll_reactor. ................ r44998 | chris_kohlhoff | 2008-05-01 15:27:21 -0700 (Thu, 01 May 2008) | 3 lines A memory barrier is needed on some platforms to ensure that all updates to the node occur before the tail pointer is updated. ................ r44999 | jurko | 2008-05-01 17:10:09 -0700 (Thu, 01 May 2008) | 1 line Minor stylistic changes. ................ r45000 | jurko | 2008-05-01 17:12:29 -0700 (Thu, 01 May 2008) | 1 line Added support for tests checking that a build run did not take longer than expected to finish. Minor stylistic changes. ................ r45001 | jurko | 2008-05-01 17:36:23 -0700 (Thu, 01 May 2008) | 1 line Added a new regression test making sure that the Boost Jam SORT builtin rule does not start getting quadratic behavior in some special cases as well as testing that the sorting algorithm works correctly. Related to the patch committed in revision 44195. Trimmed trailing spaces in tools/build/v2/test/test_all.py. ................ r45002 | jurko | 2008-05-01 17:51:05 -0700 (Thu, 01 May 2008) | 1 line Documentation typo corrected. ................ r45004 | jurko | 2008-05-01 17:57:29 -0700 (Thu, 01 May 2008) | 1 line Minor stylistic changes. ................ r45005 | jurko | 2008-05-01 18:02:01 -0700 (Thu, 01 May 2008) | 1 line Updated the Boost Build test system's documentation about Tester.run_build_system() parameters. Minor stylistic changes. ................ r45006 | chris_kohlhoff | 2008-05-02 00:59:01 -0700 (Fri, 02 May 2008) | 3 lines Fully qualify uses of asio's placeholders to resolve ambiguity with C++0x's placeholders namespace. ................ r45010 | chris_kohlhoff | 2008-05-02 01:38:15 -0700 (Fri, 02 May 2008) | 3 lines Don't use the names readv and writev for functions defined inside asio as these names seem to be macros on Tru64. ................ r45011 | nesotto | 2008-05-02 01:38:15 -0700 (Fri, 02 May 2008) | 1 line added missing const in insert() ................ r45019 | igaztanaga | 2008-05-02 04:07:08 -0700 (Fri, 02 May 2008) | 1 line Tickets #1883, #1862, #1709 ................ r45023 | jurko | 2008-05-02 08:26:44 -0700 (Fri, 02 May 2008) | 1 line Minor stylistic Boost Build code changes. ................ r45025 | grafik | 2008-05-02 08:44:25 -0700 (Fri, 02 May 2008) | 1 line Use all test sub-projects regardless of filtering so that the tests show up in the bjam XML log. ................ r45026 | grafik | 2008-05-02 08:52:42 -0700 (Fri, 02 May 2008) | 1 line Add support for test log processing with process_jam_log.py instead of C++ PJL. (also fixes #1889) ................ r45027 | pdimov | 2008-05-02 09:49:34 -0700 (Fri, 02 May 2008) | 1 line Fix throwing enums instead of archive_exceptions. ................ [SVN r45029]
681 lines
24 KiB
ReStructuredText
681 lines
24 KiB
ReStructuredText
.. Copyright David Abrahams 2006. Distributed under the Boost
|
|
.. Software License, Version 1.0. (See accompanying
|
|
.. file LICENSE_1_0.txt or copy at
|
|
.. http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
==============================================
|
|
|(logo)|__ Boost.Python Build and Test HOWTO
|
|
==============================================
|
|
|
|
.. |(logo)| image:: ../../../boost.png
|
|
:alt: Boost C++ Libraries:
|
|
:class: boost-logo
|
|
|
|
__ ../index.html
|
|
|
|
|
|
.. section-numbering::
|
|
:depth: 2
|
|
|
|
.. contents:: Contents
|
|
:depth: 2
|
|
:class: sidebar small
|
|
|
|
.. |newer| replace:: *newer*
|
|
|
|
Requirements
|
|
============
|
|
|
|
Boost.Python requires `Python 2.2`_ [#2.2]_ *or* |newer|__.
|
|
|
|
.. _Python 2.2: http://www.python.org/2.2
|
|
__ http://www.python.org
|
|
|
|
Background
|
|
==========
|
|
|
|
There are two basic models for combining C++ and Python:
|
|
|
|
- extending_, in which the end-user launches the Python interpreter
|
|
executable and imports Python “extension modules” written in C++.
|
|
Think of taking a library written in C++ and giving it a Python
|
|
interface so Python programmers can use it. From Python, these
|
|
modules look just like regular Python modules.
|
|
|
|
- embedding_, in which the end-user launches a program written
|
|
in C++ that in turn invokes the Python interpreter as a library
|
|
subroutine. Think of adding scriptability to an existing
|
|
application.
|
|
|
|
.. _extending: http://www.python.org/doc/current/ext/intro.html
|
|
.. _embedding: http://www.python.org/doc/current/ext/embedding.html
|
|
|
|
The key distinction between extending and embedding is the location
|
|
of the C++ ``main()`` function: in the Python interpreter executable,
|
|
or in some other program, respectively. Note that even when
|
|
embedding Python in another program, `extension modules are often
|
|
the best way to make C/C++ functionality accessible to Python
|
|
code`__, so the use of extension modules is really at the heart of
|
|
both models.
|
|
|
|
__ http://www.python.org/doc/current/ext/extending-with-embedding.html
|
|
|
|
Except in rare cases, extension modules are built as
|
|
dynamically-loaded libraries with a single entry point, which means
|
|
you can change them without rebuilding either the other extension
|
|
modules or the executable containing ``main()``.
|
|
|
|
.. _quickstart:
|
|
|
|
No-Install Quickstart
|
|
=====================
|
|
|
|
There is no need to “install Boost” in order to get started using
|
|
Boost.Python. These instructions use Boost.Build_ projects,
|
|
which will build those binaries as soon as they're needed. Your
|
|
first tests may take a little longer while you wait for
|
|
Boost.Python to build, but doing things this way will save you from
|
|
worrying about build intricacies like which library binaries to use
|
|
for a specific compiler configuration and figuring out the right
|
|
compiler options to use yourself.
|
|
|
|
.. .. raw:: html
|
|
|
|
<div style="width:50%">
|
|
|
|
.. Note:: Of course it's possible to use other build systems to
|
|
build Boost.Python and its extensions, but they are not
|
|
officially supported by Boost. Moreover **99% of all “I can't
|
|
build Boost.Python” problems come from trying to use another
|
|
build system** without first following these instructions.
|
|
|
|
If you want to use another system anyway, we suggest that you
|
|
follow these instructions, and then invoke ``bjam`` with the
|
|
|
|
.. parsed-literal::
|
|
|
|
``-a -o``\ *filename*
|
|
|
|
options to dump the build commands it executes to a file, so
|
|
you can see what your alternate build system needs to do.
|
|
|
|
.. .. raw:: html
|
|
|
|
</div>
|
|
|
|
.. _Boost.Build: ../../../tools/build/index.html
|
|
|
|
Basic Procedure
|
|
---------------
|
|
|
|
1. Get Boost; see sections 1 and 2 [`Unix/Linux`__, `Windows`__\ ] of the
|
|
Boost `Getting Started Guide`_.
|
|
|
|
__ ../../../more/getting_started/unix-variants.html#get-boost
|
|
__ ../../../more/getting_started/windows.html#get-boost
|
|
|
|
2. Get the ``bjam`` build driver. See section 5 [`Unix/Linux`__,
|
|
`Windows`__\ ] of the Boost `Getting Started Guide`_.
|
|
|
|
__ ../../../more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary
|
|
__ ../../../more/getting_started/windows.html#prepare-to-use-a-boost-library-binary
|
|
|
|
|
|
3. cd into the ``libs/python/example/quickstart/`` directory of your
|
|
Boost installation, which contains a small example project.
|
|
|
|
4. Invoke ``bjam``. Replace the “\ ``stage``\ “ argument from the
|
|
example invocation from section 5 of the `Getting Started
|
|
Guide`_ with “\ ``test``\ ,“ to build all the test targets. Also add
|
|
the argument “\ ``--verbose-test``\ ” to see the output generated by
|
|
the tests when they are run.
|
|
|
|
On Windows, your ``bjam`` invocation might look something like:
|
|
|
|
.. parsed-literal::
|
|
|
|
C:\\boost_1_34_0\\…\\quickstart> **bjam toolset=msvc --verbose-test test**
|
|
|
|
and on Unix variants, perhaps,
|
|
|
|
.. parsed-literal::
|
|
|
|
~/boost_1_34_0/…/quickstart$ **bjam toolset=gcc --verbose-test test**
|
|
|
|
.. Admonition:: Note to Windows Users
|
|
|
|
For the sake of concision, the rest of this guide will use
|
|
unix-style forward slashes in pathnames instead of the
|
|
backslashes with which you may be more familiar. The forward
|
|
slashes should work everywhere except in `Command Prompt`_
|
|
windows, where you should use backslashes.
|
|
|
|
.. _Command Prompt: ../../../more/getting_started/windows.html#command-prompt
|
|
|
|
If you followed this procedure successfully, you will have built an
|
|
extension module called ``extending`` and tested it by running a
|
|
Python script called ``test_extending.py``. You will also have
|
|
built and run a simple application called ``embedding`` that embeds
|
|
python.
|
|
|
|
.. _Getting Started Guide: ../../../more/getting_started/index.html
|
|
|
|
In Case of Trouble
|
|
------------------
|
|
|
|
If you're seeing lots of compiler and/or linker error messages,
|
|
it's probably because Boost.Build is having trouble finding your
|
|
Python installation. You might want to pass the
|
|
``--debug-configuration`` option to ``bjam`` the first few times
|
|
you invoke it, to make sure that Boost.Build is correctly locating
|
|
all the parts of your Python installation. If it isn't, consider
|
|
`Configuring Boost.Build`_ as detailed below.
|
|
|
|
If you're still having trouble, Someone on one of the following
|
|
mailing lists may be able to help:
|
|
|
|
* The `Boost.Build mailing list`__ for issues related to Boost.Build
|
|
* The Python `C++ Sig`__ for issues specifically related to Boost.Python
|
|
|
|
__ http://www.boost.org/more/mailing_lists.htm#jamboost
|
|
__ http://www.boost.org/more/mailing_lists.htm#cplussig
|
|
|
|
In Case Everything Seemed to Work
|
|
---------------------------------
|
|
|
|
Rejoice! If you're new to Boost.Python, at this point it might be
|
|
a good idea to ignore build issues for a while and concentrate on
|
|
learning the library by going through the tutorial_ and perhaps
|
|
some of the `reference documentation`_, trying out what you've
|
|
learned about the API by modifying the quickstart project.
|
|
|
|
.. _reference documentation: v2/reference.html
|
|
.. _tutorial: tutorial/index.html
|
|
|
|
Modifying the Example Project
|
|
-----------------------------
|
|
|
|
If you're content to keep your extension module forever in one
|
|
source file called |extending.cpp|_, inside your Boost
|
|
distribution, and import it forever as ``extending``, then you can
|
|
stop here. However, it's likely that you will want to make a few
|
|
changes. There are a few things you can do without having to learn
|
|
Boost.Build_ in depth.
|
|
|
|
The project you just built is specified in two files in the current
|
|
directory: |boost-build.jam|_, which tells ``bjam`` where it can
|
|
find the interpreted code of the Boost build system, and
|
|
|Jamroot|_, which describes the targets you just built. These
|
|
files are heavily commented, so they should be easy to modify.
|
|
Take care, however, to preserve whitespace. Punctuation such as
|
|
``;`` will not be recognized as intended by ``bjam`` if it is not
|
|
surrounded by whitespace.
|
|
|
|
.. |boost-build.jam| replace:: ``boost-build.jam``
|
|
.. _boost-build.jam: ../example/quickstart/boost-build.jam
|
|
|
|
.. |Jamroot| replace:: ``Jamroot``
|
|
.. _Jamroot: ../example/quickstart/Jamroot
|
|
|
|
.. |extending.cpp| replace:: ``extending.cpp``
|
|
.. _extending.cpp: ../example/quickstart/extending.cpp
|
|
|
|
Relocate the Project
|
|
....................
|
|
|
|
You'll probably want to copy this project elsewhere so you can
|
|
change it without modifying your Boost distribution. To do that,
|
|
simply
|
|
|
|
a. copy the entire ``libs/python/example/quickstart/`` directory
|
|
into a new directory.
|
|
|
|
b. In the new copies of |boost-build.jam|_ and |Jamroot|_, locate
|
|
the relative path near the top of the file that is clearly
|
|
marked by a comment, and edit that path so that it refers to the
|
|
same directory your Boost distribution as it referred to when
|
|
the file was in its original location in the
|
|
``libs/python/example/quickstart/`` directory.
|
|
|
|
For example, if you moved the project from
|
|
``/home/dave/boost_1_34_0/libs/python/example/quickstart`` to
|
|
``/home/dave/my-project``, you could change the first path in
|
|
|boost-build.jam|_ from
|
|
|
|
.. parsed-literal::
|
|
|
|
**../../../..**\ /tools/build/v2
|
|
|
|
to
|
|
|
|
.. parsed-literal::
|
|
|
|
**/home/dave/boost_1_34_0**\ /tools/build/v2
|
|
|
|
and change the first path in |Jamroot|_ from
|
|
|
|
.. parsed-literal::
|
|
|
|
**../../../..**
|
|
|
|
to
|
|
|
|
.. parsed-literal::
|
|
|
|
**/home/dave/boost_1_34_0**
|
|
|
|
Add New or Change Names of Existing Source Files
|
|
................................................
|
|
|
|
The names of additional source files involved in building your
|
|
extension module or embedding application can be listed in
|
|
|Jamroot|_ right alongside ``extending.cpp`` or ``embedding.cpp``
|
|
respectively. Just be sure to leave whitespace around each
|
|
filename::
|
|
|
|
… file1.cpp file2.cpp file3.cpp …
|
|
|
|
Naturally, if you want to change the name of a source file you can
|
|
tell Boost.Build about it by editing the name in |Jamroot|_.
|
|
|
|
Change the Name of your Extension Module
|
|
........................................
|
|
|
|
The name of the extension module is determined by two things:
|
|
|
|
1. the name in |Jamroot|_ immediately following ``python-extension``, and
|
|
2. the name passed to ``BOOST_PYTHON_MODULE`` in |extending.cpp|_.
|
|
|
|
To change the name of the extension module from ``extending`` to
|
|
``hello``, you'd edit |Jamroot|_, changing
|
|
|
|
.. parsed-literal::
|
|
|
|
python-extension **extending** : extending.cpp ;
|
|
|
|
to
|
|
|
|
.. parsed-literal::
|
|
|
|
python-extension **hello** : extending.cpp ;
|
|
|
|
and you'd edit extending.cpp, changing
|
|
|
|
.. parsed-literal::
|
|
|
|
BOOST_PYTHON_MODULE(\ **extending**\ )
|
|
|
|
to
|
|
|
|
.. parsed-literal::
|
|
|
|
BOOST_PYTHON_MODULE(\ **hello**\ )
|
|
|
|
Installing Boost.Python on your System
|
|
======================================
|
|
|
|
Since Boost.Python is a separately-compiled (as opposed to
|
|
`header-only`_) library, its user relies on the services of a
|
|
Boost.Python library binary.
|
|
|
|
.. _header-only: ../../../more/getting_started/windows.html#header-only-libraries
|
|
|
|
If you need a regular installation of the Boost.Python library
|
|
binaries on your system, the Boost `Getting Started Guide`_ will
|
|
walk you through the steps of creating one. If building binaries
|
|
from source, you might want to supply the ``--with-python``
|
|
argument to ``bjam`` (or the ``--with-libraries=python`` argument
|
|
to ``configure``), so only the Boost.Python binary will be built,
|
|
rather than all the Boost binaries.
|
|
|
|
|
|
Configuring Boost.Build
|
|
=======================
|
|
|
|
As described in the `Boost.Build reference manual`__, a file called
|
|
``user-config.jam`` in your home directory [#home-dir]_ is used to
|
|
specify the tools and libraries available to the build system. You
|
|
may need to create or edit ``user-config.jam`` to tell Boost.Build
|
|
how to invoke Python, ``#include`` its headers, and link with its
|
|
libraries.
|
|
|
|
__ http://www.boost.orgdoc/html/bbv2/advanced.html#bbv2.advanced.configuration
|
|
|
|
.. Admonition:: Users of Unix-Variant OSes
|
|
|
|
If you are using a unix-variant OS and you ran Boost's
|
|
``configure`` script, it may have generated a
|
|
``user-config.jam`` for you. [#overwrite]_ If your ``configure``\
|
|
/\ ``make`` sequence was successful and Boost.Python binaries
|
|
were built, your ``user-config.jam`` file is probably already
|
|
correct.
|
|
|
|
If you have one fairly “standard” python installation for your
|
|
platform, you might not need to do anything special to describe it. If
|
|
you haven't configured python in ``user-config.jam`` (and you don't
|
|
specify ``--without-python`` on the Boost.Build command line),
|
|
Boost.Build will automatically execute the equivalent of ::
|
|
|
|
import toolset : using ;
|
|
using python ;
|
|
|
|
which automatically looks for Python in the most likely places.
|
|
However, that only happens when using the Boost.Python project file
|
|
(e.g. when referred to by another project as in the quickstart_
|
|
method). If instead you are linking against separately-compiled
|
|
Boost.Python binaries, you should set up a ``user-config.jam`` file
|
|
with at least the minimal incantation above.
|
|
|
|
Python Configuration Parameters
|
|
-------------------------------
|
|
|
|
If you have several versions of Python installed, or Python is
|
|
installed in an unusual way, you may want to supply any or all of
|
|
the following optional parameters to ``using python``.
|
|
|
|
version
|
|
the version of Python to use. Should be in Major.Minor
|
|
format, for example, ``2.3``. Do not include the subminor
|
|
version (i.e. *not* ``2.5.1``). If you have multiple Python
|
|
versions installed, the version will usually be the only
|
|
configuration argument required.
|
|
|
|
cmd-or-prefix
|
|
preferably, a command that invokes a Python interpreter.
|
|
Alternatively, the installation prefix for Python libraries and
|
|
header files. Only use the alternative formulation if there is
|
|
no appropriate Python executable available.
|
|
|
|
includes
|
|
the ``#include`` paths for Python headers. Normally the correct
|
|
path(s) will be automatically deduced from ``version`` and/or
|
|
``cmd-or-prefix``.
|
|
|
|
libraries
|
|
the path to Python library binaries. On MacOS/Darwin,
|
|
you can also pass the path of the Python framework. Normally the
|
|
correct path(s) will be automatically deduced from ``version``
|
|
and/or ``cmd-or-prefix``.
|
|
|
|
condition
|
|
if specified, should be a set of Boost.Build
|
|
properties that are matched against the build configuration when
|
|
Boost.Build selects a Python configuration to use. See examples
|
|
below for details.
|
|
|
|
extension-suffix
|
|
A string to append to the name of extension
|
|
modules before the true filename extension. You almost certainly
|
|
don't need to use this. Usually this suffix is only used when
|
|
targeting a Windows debug build of Python, and will be set
|
|
automatically for you based on the value of the
|
|
|python-debugging|_ feature. However, at least one Linux
|
|
distribution (Ubuntu Feisty Fawn) has a specially configured
|
|
`python-dbg`__ package that claims to use such a suffix.
|
|
|
|
.. |python-debugging| replace:: ``<python-debugging>``
|
|
|
|
__ https://wiki.ubuntu.com/PyDbgBuilds
|
|
|
|
|
|
Examples
|
|
--------
|
|
|
|
Note that in the examples below, case and *especially whitespace* are
|
|
significant.
|
|
|
|
- If you have both python 2.5 and python 2.4 installed,
|
|
``user-config.jam`` might contain::
|
|
|
|
using python : 2.5 ; # Make both versions of Python available
|
|
|
|
using python : 2.4 ; # To build with python 2.4, add python=2.4
|
|
# to your command line.
|
|
|
|
The first version configured (2.5) becomes the default. To build
|
|
against python 2.4, add ``python=2.4`` to the ``bjam`` command line.
|
|
|
|
- If you have python installed in an unusual location, you might
|
|
supply the path to the interpreter in the ``cmd-or-prefix``
|
|
parameter::
|
|
|
|
using python : : /usr/local/python-2.6-beta/bin/python ;
|
|
|
|
- If you have a separate build of Python for use with a particular
|
|
toolset, you might supply that toolset in the ``condition``
|
|
parameter::
|
|
|
|
using python ; # use for most toolsets
|
|
|
|
# Use with Intel C++ toolset
|
|
using python
|
|
: # version
|
|
: c:\\Devel\\Python-2.5-IntelBuild\\PCBuild\\python # cmd-or-prefix
|
|
: # includes
|
|
: # libraries
|
|
: <toolset>intel # condition
|
|
;
|
|
|
|
|
|
- If you have downloaded the Python sources and built both the
|
|
normal and the “\ `python debugging`_\ ” builds from source on
|
|
Windows, you might see::
|
|
|
|
using python : 2.5 : C:\\src\\Python-2.5\\PCBuild\\python ;
|
|
using python : 2.5 : C:\\src\\Python-2.5\\PCBuild\\python_d
|
|
: # includes
|
|
: # libs
|
|
: <python-debugging>on ;
|
|
|
|
- You can set up your user-config.jam so a bjam built under Windows
|
|
can build/test both Windows and Cygwin_ python extensions. Just pass
|
|
``<target-os>cygwin`` in the ``condition`` parameter
|
|
for the cygwin python installation::
|
|
|
|
# windows installation
|
|
using python ;
|
|
|
|
# cygwin installation
|
|
using python : : c:\\cygwin\\bin\\python2.5 : : : <target-os>cygwin ;
|
|
|
|
when you put target-os=cygwin in your build request, it should build
|
|
with the cygwin version of python: [#flavor]_
|
|
|
|
bjam target-os=cygwin toolset=gcc
|
|
|
|
This is supposed to work the other way, too (targeting windows
|
|
python with a Cygwin_ bjam) but it seems as though the support in
|
|
Boost.Build's toolsets for building that way is broken at the
|
|
time of this writing.
|
|
|
|
- Note that because of `the way Boost.Build currently selects target
|
|
alternatives`__, you might have be very explicit in your build
|
|
requests. For example, given::
|
|
|
|
using python : 2.5 ; # a regular windows build
|
|
using python : 2.4 : : : : <target-os>cygwin ;
|
|
|
|
building with ::
|
|
|
|
bjam target-os=cygwin
|
|
|
|
will yield an error. Instead, you'll need to write::
|
|
|
|
bjam target-os=cygwin/python=2.4
|
|
|
|
.. _Cygwin: http://cygwin.com
|
|
|
|
__ http://zigzag.cs.msu.su/boost.build/wiki/AlternativeSelection
|
|
|
|
Choosing a Boost.Python Library Binary
|
|
======================================
|
|
|
|
If—instead of letting Boost.Build construct and link with the right
|
|
libraries automatically—you choose to use a pre-built Boost.Python
|
|
library, you'll need to think about which one to link with. The
|
|
Boost.Python binary comes in both static and dynamic flavors. Take
|
|
care to choose the right flavor for your application. [#naming]_
|
|
|
|
The Dynamic Binary
|
|
------------------
|
|
|
|
The dynamic library is the safest and most-versatile choice:
|
|
|
|
- A single copy of the library code is used by all extension
|
|
modules built with a given toolset. [#toolset-specific]_
|
|
|
|
- The library contains a type conversion registry. Because one
|
|
registry is shared among all extension modules, instances of a
|
|
class exposed to Python in one dynamically-loaded extension
|
|
module can be passed to functions exposed in another such module.
|
|
|
|
The Static Binary
|
|
-----------------
|
|
|
|
It might be appropriate to use the static Boost.Python library in
|
|
any of the following cases:
|
|
|
|
- You are extending_ python and the types exposed in your
|
|
dynamically-loaded extension module don't need to be used by any
|
|
other Boost.Python extension modules, and you don't care if the
|
|
core library code is duplicated among them.
|
|
|
|
- You are embedding_ python in your application and either:
|
|
|
|
- You are targeting a Unix variant OS other than MacOS or AIX,
|
|
where the dynamically-loaded extension modules can “see” the
|
|
Boost.Python library symbols that are part of the executable.
|
|
|
|
- Or, you have statically linked some Boost.Python extension
|
|
modules into your application and you don't care if any
|
|
dynamically-loaded Boost.Python extension modules are able to
|
|
use the types exposed by your statically-linked extension
|
|
modules (and vice-versa).
|
|
|
|
``#include`` Issues
|
|
===================
|
|
|
|
1. If you should ever have occasion to ``#include "python.h"``
|
|
directly in a translation unit of a program using Boost.Python,
|
|
use ``#include "boost/python/detail/wrap_python.hpp"`` instead.
|
|
It handles several issues necessary for use with Boost.Python,
|
|
one of which is mentioned in the next section.
|
|
|
|
2. Be sure not to ``#include`` any system headers before
|
|
``wrap_python.hpp``. This restriction is actually imposed by
|
|
Python, or more properly, by Python's interaction with your
|
|
operating system. See
|
|
http://docs.python.org/ext/simpleExample.html for details.
|
|
|
|
.. _python-debugging:
|
|
.. _python debugging:
|
|
|
|
Python Debugging Builds
|
|
=======================
|
|
|
|
Python can be built in a special “python debugging” configuration
|
|
that adds extra checks and instrumentation that can be very useful
|
|
for developers of extension modules. The data structures used by
|
|
the debugging configuration contain additional members, so **a
|
|
Python executable built with python debugging enabled cannot be
|
|
used with an extension module or library compiled without it, and
|
|
vice-versa.**
|
|
|
|
Since pre-built “python debugging” versions of the Python
|
|
executable and libraries are not supplied with most distributions
|
|
of Python, [#get-debug-build]_ and we didn't want to force our users
|
|
to build them, Boost.Build does not automatically enable python
|
|
debugging in its ``debug`` build variant (which is the default).
|
|
Instead there is a special build property called
|
|
``python-debugging`` that, when used as a build property, will
|
|
define the right preprocessor symbols and select the right
|
|
libraries to link with.
|
|
|
|
On unix-variant platforms, the debugging versions of Python's data
|
|
structures will only be used if the symbol ``Py_DEBUG`` is defined.
|
|
On many windows compilers, when extension modules are built with
|
|
the preprocessor symbol ``_DEBUG``, Python defaults to force
|
|
linking with a special debugging version of the Python DLL. Since
|
|
that symbol is very commonly used even when Python is not present,
|
|
Boost.Python temporarily undefines _DEBUG when Python.h
|
|
is #included from ``boost/python/detail/wrap_python.hpp`` - unless
|
|
``BOOST_DEBUG_PYTHON`` is defined. The upshot is that if you want
|
|
“python debugging”and you aren't using Boost.Build, you should make
|
|
sure ``BOOST_DEBUG_PYTHON`` is defined, or python debugging will be
|
|
suppressed.
|
|
|
|
Testing Boost.Python
|
|
====================
|
|
|
|
To run the full test suite for Boost.Python, invoke ``bjam`` in the
|
|
``libs/python/test`` subdirectory of your Boost distribution.
|
|
|
|
Notes for MinGW (and Cygwin with -mno-cygwin) GCC Users
|
|
=======================================================
|
|
|
|
If you are using a version of Python prior to 2.4.1 with a MinGW
|
|
prior to 3.0.0 (with binutils-2.13.90-20030111-1), you will need to
|
|
create a MinGW-compatible version of the Python library; the one
|
|
shipped with Python will only work with a Microsoft-compatible
|
|
linker. Follow the instructions in the “Non-Microsoft” section of
|
|
the “Building Extensions: Tips And Tricks” chapter in `Installing
|
|
Python Modules`__ to create ``libpythonXX.a``, where ``XX``
|
|
corresponds to the major and minor version numbers of your Python
|
|
installation.
|
|
|
|
__ http://www.python.org/doc/current/inst/index.html
|
|
|
|
-----------------------------
|
|
|
|
.. [#2.2] Note that although we tested earlier versions of
|
|
Boost.Python with Python 2.2, and we don't *think* we've done
|
|
anything to break compatibility, this release of Boost.Python
|
|
may not have been tested with versions of Python earlier than
|
|
2.4, so we're not 100% sure that python 2.2 and 2.3 are
|
|
supported.
|
|
|
|
.. [#naming] Information about how to identify the
|
|
static and dynamic builds of Boost.Python:
|
|
|
|
* `on Windows`__
|
|
* `on Unix variants`__
|
|
|
|
__ ../../../more/getting_started/windows.html#library-naming
|
|
__ ../../../more/getting_started/unix-variants.html#library-naming
|
|
|
|
.. [#toolset-specific] Because of the way most \*nix platforms
|
|
share symbols among dynamically-loaded objects, I'm not certain
|
|
that extension modules built with different compiler toolsets
|
|
will always use different copies of the Boost.Python library
|
|
when loaded into the same Python instance. Not using different
|
|
libraries could be a good thing if the compilers have compatible
|
|
ABIs, because extension modules built with the two libraries
|
|
would be interoperable. Otherwise, it could spell disaster,
|
|
since an extension module and the Boost.Python library would
|
|
have different ideas of such things as class layout. I would
|
|
appreciate someone doing the experiment to find out what
|
|
happens.
|
|
|
|
.. [#overwrite] ``configure`` overwrites the existing
|
|
``user-config.jam`` in your home directory
|
|
(if any) after making a backup of the old version.
|
|
|
|
.. [#flavor] Note that the ``<target-os>cygwin`` feature is
|
|
different from the ``<flavor>cygwin`` subfeature of the ``gcc``
|
|
toolset, and you might need handle both explicitly if you also
|
|
have a MinGW GCC installed.
|
|
|
|
.. [#home-dir] Windows users, your home directory can be
|
|
found by typing::
|
|
|
|
ECHO %HOMEDRIVE%%HOMEPATH%
|
|
|
|
into a `command prompt`_ window.
|
|
|
|
.. [#get-debug-build] On Unix and similar platforms, a debugging
|
|
python and associated libraries are built by adding
|
|
``--with-pydebug`` when configuring the Python build. On
|
|
Windows, the debugging version of Python is generated by
|
|
the "Win32 Debug" target of the Visual Studio project in the
|
|
PCBuild subdirectory of a full Python source code distribution.
|