This diff drops boost_python27 and boost_numpy27. I switched the defaults to python3 but the boost-build .py files aren't ready for that (using python3 -m compileall fails with syntax errors). No idea how used/useful boost-build actually is or how maintainers want to deal with this python2/3 mix. One possible approach would be to run 2to3 on those files, but this doesn't catch all the py2->py3 gotchas.
Feedback welcome. Unrelated, the do-install part has bugged me since some time. It copies ~15000 headers, forking one install(1) process per header file. This is expensive, on my builder the diff below moves make fake from ~4mn to ~4sec. I'd like to commit this seperately. oks? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/boost/Makefile,v retrieving revision 1.101 diff -u -p -r1.101 Makefile --- Makefile 5 Nov 2020 11:23:03 -0000 1.101 +++ Makefile 8 Nov 2020 00:17:38 -0000 @@ -6,6 +6,7 @@ COMMENT-main= free peer-reviewed portabl COMMENT-md= machine-dependent libraries for boost VERSION= 1.70.0 +REVISION= 0 DISTNAME= boost_${VERSION:S/./_/g} PKGNAME-main= boost-${VERSION} PKGNAME-md= boost-md-${VERSION} @@ -33,9 +34,7 @@ BOOST_LIBS= boost_atomic-mt \ boost_math_tr1l-mt boost_math_tr1l \ boost_prg_exec_monitor-mt boost_prg_exec_monitor \ boost_program_options-mt boost_program_options \ - boost_numpy27-mt boost_numpy27 \ boost_numpy38-mt boost_numpy38 \ - boost_python27-mt boost_python27 \ boost_python38-mt boost_python38 \ boost_random-mt boost_random \ boost_regex-mt boost_regex \ @@ -79,12 +78,12 @@ COMPILER= base-clang ports-gcc MULTI_PACKAGES= -main -md MODULES= lang/python +MODPY_VERSION= ${MODPY_DEFAULT_VERSION_3} MODPY_RUNDEP= No -# extras needed until py2 support can be removed -BUILD_DEPENDS+= math/py-numpy \ - math/py-numpy,python3 \ - lang/python/${MODPY_DEFAULT_VERSION_3} +BUILD_DEPENDS+= math/py-numpy${MODPY_FLAVOR} +# needed for byte-compiling boost-build +BUILD_DEPENDS+= lang/python/${MODPY_DEFAULT_VERSION_2} LIB_DEPENDS= archivers/bzip2 \ textproc/icu4c @@ -116,11 +115,11 @@ BJAM_CONFIG= -sICU_PATH=${LOCALBASE} \ cxxflags='${CXXFLAGS} -pthread' \ variant=release \ link=static,shared \ - threading=single,multi \ + threading=single,multi BOOTSTRAP= --with-bjam=${WRKSRC}/bjam \ --with-toolset=${TOOLSET} \ - --with-python-root=${LOCALBASE} + --with-python=${MODPY_BIN} # 'context' and 'coroutine' use MD bits and miss support for Alpha, # PA-RISC, SPARC and SuperH. The author does not care @@ -129,18 +128,6 @@ BOOTSTRAP= --with-bjam=${WRKSRC}/bjam \ BOOTSTRAP+= --without-libraries=context,coroutine,fiber,stacktrace .endif -PY2_BOOTSTRAP= --with-python=${LOCALBASE}/bin/python${MODPY_DEFAULT_VERSION_2} \ - --with-python-version=${MODPY_DEFAULT_VERSION_2} \ - -PY3_BOOTSTRAP= --with-python=${LOCALBASE}/bin/python${MODPY_DEFAULT_VERSION_3} \ - --with-python-version=${MODPY_DEFAULT_VERSION_3} \ - -PY2_INC= ${LOCALBASE}/include/python${MODPY_DEFAULT_VERSION_2} -PY3_INC= ${LOCALBASE}/include/python${MODPY_DEFAULT_VERSION_3} - -# temporary dir to stash libs when rebuilding with py2 -PY3_DIR= ${WRKDIR}/lib.py3 - # python.port.mk makes assumptions about an empty CONFIGURE_STYLE CONFIGURE_STYLE= none @@ -164,39 +151,20 @@ do-configure: cd ${WRKSRC}/tools/build/src/engine && \ ${SETENV} CC="${CC}" CFLAGS="${CFLAGS}" /bin/sh ./build.sh cc && \ cp bin.openbsd*/b2 bin.openbsd*/bjam ${WRKSRC} + cd ${WRKSRC} && ${SETENV} /bin/sh ./bootstrap.sh ${BOOTSTRAP} -# b2 doesn't seem to respect python parameter, we need to run twice with -# separate python environments. when we remove py2 support later, bootstrap -# can move back to the configure stage and avoid the build/rm/rebuild dance.. do-build: - # First run of bootstrap/b2, setup for py3 environment: - sed 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY3_INC} \;;' \ - < ${WRKSRC}/bootstrap.sh > ${WRKSRC}/bootstrap.sh.tmp - cd ${WRKSRC} && export ${MAKE_ENV} && \ - /bin/sh ./bootstrap.sh.tmp ${BOOTSTRAP} ${PY3_BOOTSTRAP} && \ - ./b2 ${BJAM_CONFIG} --with-python python=${MODPY_DEFAULT_VERSION_3} - # Stash py3 libs in temporary dir: - mkdir ${PY3_DIR} - mv ${WRKSRC}/stage/lib/lib*python3* ${PY3_DIR} - mv ${WRKSRC}/stage/lib/lib*numpy3* ${PY3_DIR} - # Remove py3 .o files to force python recompilation: - rm ${WRKSRC}/project-config.jam - find ${WRKSRC}/bin.v2/libs/python -name "*.o" -type f -delete - # Second run of bootstrap/b2, setup for py2 environment: - sed 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY2_INC} \;;' \ - < ${WRKSRC}/bootstrap.sh > ${WRKSRC}/bootstrap.sh.tmp cd ${WRKSRC} && export ${MAKE_ENV} && \ - /bin/sh ./bootstrap.sh.tmp ${BOOTSTRAP} ${PY2_BOOTSTRAP} && \ - ./b2 ${BJAM_CONFIG} python=${MODPY_DEFAULT_VERSION_2} + ./b2 ${BJAM_CONFIG} do-install: # Libs and includes: ${INSTALL_DATA} ${WRKSRC}/stage/lib/lib!(*.so) ${PREFIX}/lib - ${INSTALL_DATA} ${PY3_DIR}/lib!(*.so) ${PREFIX}/lib - cd ${WRKSRC} && \ - find boost -type d -exec ${INSTALL_DATA_DIR} ${PREFIX}/include/{} \; - cd ${WRKSRC} && \ - find boost ! -name \*.orig -type f -exec ${INSTALL_DATA} {} ${PREFIX}/include/{} \; + ${INSTALL_DATA_DIR} ${PREFIX}/include/boost + cd ${WRKSRC}/boost && \ + pax -rw -s ':^.*\.orig$$::' . ${PREFIX}/include/boost + find ${PREFIX}/include/boost -type d -exec chmod ${DIRMODE} {} + + find ${PREFIX}/include/boost -type f -exec chmod ${SHAREMODE} {} + # boost-build: ${INSTALL_PROGRAM} ${WRKSRC}/tools/build/src/engine/bin.*/{b2,bjam} \ ${PREFIX}/bin @@ -207,7 +175,7 @@ do-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/boost-build ${INSTALL_DATA} ${WRKSRC}/tools/build/example/site-config.jam \ ${PREFIX}/share/examples/boost-build - ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \ + ${LOCALBASE}/bin/python${MODPY_DEFAULT_VERSION_2} -m compileall \ ${PREFIX}/share/boost-build/ .include <bsd.port.mk> Index: pkg/PLIST-main =================================================================== RCS file: /cvs/ports/devel/boost/pkg/PLIST-main,v retrieving revision 1.10 diff -u -p -r1.10 PLIST-main --- pkg/PLIST-main 5 Nov 2020 11:23:03 -0000 1.10 +++ pkg/PLIST-main 8 Nov 2020 00:17:38 -0000 @@ -15088,10 +15088,6 @@ include/boost/yap/yap.hpp @lib lib/libboost_math_tr1l-mt.so.${LIBboost_math_tr1l-mt_VERSION} @static-lib lib/libboost_math_tr1l.a @lib lib/libboost_math_tr1l.so.${LIBboost_math_tr1l_VERSION} -@static-lib lib/libboost_numpy27-mt.a -@lib lib/libboost_numpy27-mt.so.${LIBboost_numpy27-mt_VERSION} -@static-lib lib/libboost_numpy27.a -@lib lib/libboost_numpy27.so.${LIBboost_numpy27_VERSION} @static-lib lib/libboost_numpy38-mt.a @lib lib/libboost_numpy38-mt.so.${LIBboost_numpy38-mt_VERSION} @static-lib lib/libboost_numpy38.a @@ -15104,10 +15100,6 @@ include/boost/yap/yap.hpp @lib lib/libboost_program_options-mt.so.${LIBboost_program_options-mt_VERSION} @static-lib lib/libboost_program_options.a @lib lib/libboost_program_options.so.${LIBboost_program_options_VERSION} -@static-lib lib/libboost_python27-mt.a -@lib lib/libboost_python27-mt.so.${LIBboost_python27-mt_VERSION} -@static-lib lib/libboost_python27.a -@lib lib/libboost_python27.so.${LIBboost_python27_VERSION} @static-lib lib/libboost_python38-mt.a @lib lib/libboost_python38-mt.so.${LIBboost_python38-mt_VERSION} @static-lib lib/libboost_python38.a -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE