On 11/7/2020 7:46 PM, Jeremie Courreges-Anglas wrote:
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.

I like seeing numpy being removed. Can't comment on the rest as I don't do
much Python wise. This looks like it just might help me going forward with
Boost.

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?

The install target has always bugged me as it is. Any improvement is a win.


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



Reply via email to