First of all, thank you for this work. I am very impressed.
I have no objections at first glance. Even audio/py-tagpy is happy
but I think we need some bulk builds here. Amd64 and !amd64?
Can anybody manage this? If these are happy, ok rsadowski@ with the
tweak below.
Comments below.
Rafael Sadowski
On Sat Jan 18, 2020 at 09:32:22PM -0800, Nam Nguyen wrote:
> This diff for devel/boost fixes python 3 bindings and is needed for
> upcoming updates to net/libtorrent-rasterbar and net/deluge. CC
> maintainers and kn@ because python 3 bindings were a blocker for a
> net/libtorrent-rasterbar update.
>
> * Fixes python 3 bindings
> * Bumps REVISION-main
> * Bumps SO_VERSION because libboost_python3.so.9.0 now correctly uses
> python 3 bringing with it modified function signatures like
> init_module.
> * Contains an upstream compilation fix for python 3.7
>
> before fix:
> $ nm -g /usr/local/lib/libboost_python3.so.9.0
> 0003d210 T _ZN5boost6python6detail11init_moduleEPKcPFvvE
> $ nm -g /usr/local/lib/libboost_python.so.9.0
> 0003d210 T _ZN5boost6python6detail11init_moduleEPKcPFvvE
>
> after fix:
> $ nm -g /usr/local/lib/libboost_python3.so.9.0
> 0003b730 T _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
> $ nm -g /usr/local/lib/libboost_python.so.9.0
> 0003d210 T _ZN5boost6python6detail11init_moduleEPKcPFvvE
>
> boost/python/module_init.hpp:
> # if PY_VERSION_HEX >= 0x03000000
> BOOST_PYTHON_DECL PyObject* init_module(PyModuleDef&, void(*)());
> #else
> BOOST_PYTHON_DECL PyObject* init_module(char const* name, void(*)());
> #endif
>
> After the fix it now correctly uses python 2 and python 3 bindings. The
> way I arrived at this was to see that list.o was compiled with:
>
> "clang++" -c -x c++ -O2 -pipe -pthread -O2 -pipe -pthread -O3
> -Wno-inline
> -Wall -m64 -O2 -pipe -pthread -O2 -pipe -pthread -DBOOST_ALL_NO_LIB=1
> -DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_STATIC_LIB -DNDEBUG -I"."
> -I"/usr/local/include/python3.7m" -o
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/link-static/pch-off/threadapi-pthread/list.o"
> "libs/python/src/list.cpp"
>
> Then, list.o was reused in the creation of libboost_python3.so.9.0 and
> libboost_python.so.9.0. list.o was never recompiled against python 2.
>
> "clang++" -o
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/pch-off/threadapi-pthread/libboost_python3.so.9.0"
> -Wl,-soname -Wl,libboost_python3.so.9.0 -shared -Wl,--start-group
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/pch-off/threadapi-pthread/list.o"
>
> "clang++" -o
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/pch-off/threadapi-pthread/libboost_python.so.9.0"
> -Wl,-soname -Wl,libboost_python.so.9.0 -shared -Wl,--start-group
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/pch-off/threadapi-pthread/list.o"
>
> My plan was to:
> 1. Build only python 3 bindings using --with-python and stash the
> objects in ${PY3_DIR}.
> 2. Delete list .o objects to force recompilation.
> 3. Rebuild entire project with python 2.
>
> Now, during step 3, it will rebuild list.o against python 2.
>
> "clang++" -c -x c++ -O2 -pipe -pthread -O2 -pipe -pthread -O3
> -Wno-inline
> -Wall -m64 -O2 -pipe -pthread -O2 -pipe -pthread -DBOOST_ALL_NO_LIB=1
> -DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_STATIC_LIB -DNDEBUG -I"."
> -I"/usr/local/include/python2.7" -o
>
> "bin.v2/libs/python/build/clang-gnu-linux-8.0.1/release/link-static/pch-off/threadapi-pthread/list.o"
> "libs/python/src/list.cpp"
>
> Also, boostrap.sh contains:
>
> using python : $PYTHON_VERSION : $PYTHON_ROOT ;
>
> This was not expressive enough for my needs to simply provide
> $PYTHON_VERSION and $PYTHON_ROOT. Instead I use sed to get lines of the
> form:
>
> using python : 2.7 : /usr/local : /usr/local/include/python2.7 ;
> using python : 3.7 : /usr/local : /usr/local/include/python3.7m ;
>
> Sources:
> tools/build/src/tools/python.jam
> https://stackoverflow.com/questions/28830653/build-boost-with-multiple-python-versions
> https://www.boost.org/doc/libs/1_67_0/libs/python/doc/html/building/configuring_boost_build.html
>
> The patch is an upstream fix for a compilation error with python 3.7.
> https://github.com/boostorg/python/commit/660487c43fde76f3e64f1cb2e644500da92fe582
>
> boost 1.67 changes the python naming convention to be of the form
> libboost_python{27,37}.so.9.0. boost 1.67 also tries to allow building
> against multiple versions of python in one run of b2.
Nice to know!
>
>
> While my initial
> approach was to try to backport 1.67 fixes alluded to in the changelog,
> I quickly abandoned this effort because I was not getting
> libtorrent-rasterbar to link properly. `make port-lib-depends-check'
> inside libtorrent-rasterbar would report that boost_python3 was
> unused. I suggest revisiting this during the next boost update.
>
> https://www.boost.org/users/history/version_1_67_0.html
> https://github.com/boostorg/python/commit/d4d41d94aecc9f8098aabd3587fcb95458451f71
>
> Python:
>
> The library name now includes the version suffix of the Python
> version used to compile it. For example, a variant compiled with
> Python 2.7 will produce library names boost_python27 and
> boost_numpy27, etc.. Combined with a related fix in Boost.Build,
> this means that it is now possible to build variants for multiple
> Python versions in a single build process.
>
> To test I tried games/freeorion and games/vegastrike, which compiled and
> started fine. graphics/openexr compiled fine but no further
> testing. graphics/openimageio was tested with graphics/blender, which
> started fine. net/libtorrent-rasterbar and net/deluge correctly use
> these new boost python 3 bindings.
>
> Feedback and tests are welcome.
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/boost/Makefile,v
> retrieving revision 1.91
> diff -u -p -r1.91 Makefile
> --- Makefile 27 Nov 2019 05:17:35 -0000 1.91
> +++ Makefile 19 Jan 2020 04:09:03 -0000
> @@ -11,14 +11,14 @@ VERSION= 1.66.0
> DISTNAME= boost_${VERSION:S/./_/g}
> PKGNAME-main= boost-${VERSION}
> PKGNAME-md= boost-md-${VERSION}
> -REVISION-main= 8
> +REVISION-main= 9
> REVISION-md= 3
> CATEGORIES= devel
> MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=boost/}
> EXTRACT_SUFX= .tar.bz2
> FIX_EXTRACT_PERMISSIONS = Yes
>
> -SO_VERSION= 9.0
> +SO_VERSION= 10.0
> BOOST_LIBS= boost_atomic-mt \
> boost_chrono-mt boost_chrono \
> boost_container-mt boost_container \
> @@ -136,6 +136,12 @@ PY2_BOOTSTRAP= --with-python=${LOCALBASE
> 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}m
Please remove all trailing white spaces.
> +
> +PY3_DIR= ${WRKSRC}/lib.py3
> +
> # python.port.mk makes assumptions about an empty CONFIGURE_STYLE
> CONFIGURE_STYLE= none
>
> @@ -159,22 +165,36 @@ 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}
> + cp ${WRKSRC}/bootstrap.sh ${WRKSRC}/bootstrap.sh.bak
> @cd ${WRKSRC} && chmod -R a+x ./ && \
> /bin/sh ./bootstrap.sh ${BOOTSTRAP}
> + mkdir ${PY3_DIR}
>
> # b2 doesn't seem to respect python parameter, we need to run twice with
> -# separate python environments
> +# separate python environments. Remove .o files to force python
> recompilation.
> do-build:
> export ${MAKE_ENV}; \
> cd ${WRKSRC} && chmod -R a+x ./ && \
> - /bin/sh ./bootstrap.sh ${BOOTSTRAP} ${PY2_BOOTSTRAP} && \
> - ./b2 ${BJAM_CONFIG} python=${MODPY_DEFAULT_VERSION_2} && \
> + cp ${WRKSRC}/bootstrap.sh.bak ${WRKSRC}/bootstrap.sh && \
> + rm ${WRKSRC}/project-config.jam && \
> + sed -i 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY3_INC} \;;' \
> + ${WRKSRC}/bootstrap.sh && \
> /bin/sh ./bootstrap.sh ${BOOTSTRAP} ${PY3_BOOTSTRAP} && \
> - ./b2 ${BJAM_CONFIG} python=${MODPY_DEFAULT_VERSION_3}\
> + ./b2 ${BJAM_CONFIG} --with-python python=${MODPY_DEFAULT_VERSION_3} && \
> + mv ${WRKSRC}/stage/lib/lib*python3* ${PY3_DIR} && \
> + cp ${WRKSRC}/bootstrap.sh.bak ${WRKSRC}/bootstrap.sh && \
> + rm ${WRKSRC}/project-config.jam && \
> + cd ${WRKSRC} && \
> + find bin.v2/libs/python -name "*.o" -type f -delete && \
> + sed -i 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY2_INC} \;;' \
> + ${WRKSRC}/bootstrap.sh && \
> + /bin/sh ./bootstrap.sh ${BOOTSTRAP} ${PY2_BOOTSTRAP} && \
> + ./b2 ${BJAM_CONFIG} python=${MODPY_DEFAULT_VERSION_2}\
>
> 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} && \
> Index: patches/patch-libs_python_src_converter_builtin_converters_cpp
> ===================================================================
> RCS file: patches/patch-libs_python_src_converter_builtin_converters_cpp
> diff -N patches/patch-libs_python_src_converter_builtin_converters_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-libs_python_src_converter_builtin_converters_cpp 19 Jan
> 2020 04:09:03 -0000
> @@ -0,0 +1,28 @@
> +$OpenBSD$
> +
> +XXX remove after updating to boost 1.67
> +
> +Fix compilation error:
> +https://github.com/boostorg/python/commit/660487c43fde76f3e64f1cb2e644500da92fe582
> +https://www.boost.org/users/history/version_1_67_0.html
> +
> +Index: libs/python/src/converter/builtin_converters.cpp
> +--- libs/python/src/converter/builtin_converters.cpp.orig
> ++++ libs/python/src/converter/builtin_converters.cpp
> +@@ -45,10 +45,15 @@ namespace
> + {
> + return PyString_Check(obj) ? PyString_AsString(obj) : 0;
> + }
> +-#else
> ++#elif PY_VERSION_HEX < 0x03070000
> + void* convert_to_cstring(PyObject* obj)
> + {
> + return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0;
> ++ }
> ++#else
> ++ void* convert_to_cstring(PyObject* obj)
> ++ {
> ++ return PyUnicode_Check(obj) ?
> const_cast<void*>(reinterpret_cast<const void*>(_PyUnicode_AsString(obj))) :
> 0;
> + }
> + #endif
> +
> Index: pkg/PLIST-main
> ===================================================================
> RCS file: /cvs/ports/devel/boost/pkg/PLIST-main,v
> retrieving revision 1.7
> diff -u -p -r1.7 PLIST-main
> --- pkg/PLIST-main 3 Jan 2019 07:29:58 -0000 1.7
> +++ pkg/PLIST-main 19 Jan 2020 04:09:03 -0000
> @@ -14036,129 +14036,129 @@ include/boost/xpressive/xpressive_dynami
> include/boost/xpressive/xpressive_fwd.hpp
> include/boost/xpressive/xpressive_static.hpp
> include/boost/xpressive/xpressive_typeof.hpp
> -lib/libboost_atomic-mt.a
> +@static-lib lib/libboost_atomic-mt.a
> @lib lib/libboost_atomic-mt.so.${LIBboost_atomic-mt_VERSION}
> -lib/libboost_chrono-mt.a
> +@static-lib lib/libboost_chrono-mt.a
> @lib lib/libboost_chrono-mt.so.${LIBboost_chrono-mt_VERSION}
> -lib/libboost_chrono.a
> +@static-lib lib/libboost_chrono.a
> @lib lib/libboost_chrono.so.${LIBboost_chrono_VERSION}
> -lib/libboost_container-mt.a
> +@static-lib lib/libboost_container-mt.a
> @lib lib/libboost_container-mt.so.${LIBboost_container-mt_VERSION}
> -lib/libboost_container.a
> +@static-lib lib/libboost_container.a
> @lib lib/libboost_container.so.${LIBboost_container_VERSION}
> -lib/libboost_date_time-mt.a
> +@static-lib lib/libboost_date_time-mt.a
> @lib lib/libboost_date_time-mt.so.${LIBboost_date_time-mt_VERSION}
> -lib/libboost_date_time.a
> +@static-lib lib/libboost_date_time.a
> @lib lib/libboost_date_time.so.${LIBboost_date_time_VERSION}
> -lib/libboost_exception-mt.a
> -lib/libboost_exception.a
> -lib/libboost_filesystem-mt.a
> +@static-lib lib/libboost_exception-mt.a
> +@static-lib lib/libboost_exception.a
> +@static-lib lib/libboost_filesystem-mt.a
> @lib lib/libboost_filesystem-mt.so.${LIBboost_filesystem-mt_VERSION}
> -lib/libboost_filesystem.a
> +@static-lib lib/libboost_filesystem.a
> @lib lib/libboost_filesystem.so.${LIBboost_filesystem_VERSION}
> -lib/libboost_graph-mt.a
> +@static-lib lib/libboost_graph-mt.a
> @lib lib/libboost_graph-mt.so.${LIBboost_graph-mt_VERSION}
> -lib/libboost_graph.a
> +@static-lib lib/libboost_graph.a
> @lib lib/libboost_graph.so.${LIBboost_graph_VERSION}
> -lib/libboost_iostreams-mt.a
> +@static-lib lib/libboost_iostreams-mt.a
> @lib lib/libboost_iostreams-mt.so.${LIBboost_iostreams-mt_VERSION}
> -lib/libboost_iostreams.a
> +@static-lib lib/libboost_iostreams.a
> @lib lib/libboost_iostreams.so.${LIBboost_iostreams_VERSION}
> -lib/libboost_locale-mt.a
> +@static-lib lib/libboost_locale-mt.a
> @lib lib/libboost_locale-mt.so.${LIBboost_locale-mt_VERSION}
> -lib/libboost_log-mt.a
> +@static-lib lib/libboost_log-mt.a
> @lib lib/libboost_log-mt.so.${LIBboost_log-mt_VERSION}
> -lib/libboost_log.a
> +@static-lib lib/libboost_log.a
> @lib lib/libboost_log.so.${LIBboost_log_VERSION}
> -lib/libboost_log_setup-mt.a
> +@static-lib lib/libboost_log_setup-mt.a
> @lib lib/libboost_log_setup-mt.so.${LIBboost_log_setup-mt_VERSION}
> -lib/libboost_log_setup.a
> +@static-lib lib/libboost_log_setup.a
> @lib lib/libboost_log_setup.so.${LIBboost_log_setup_VERSION}
> -lib/libboost_math_c99-mt.a
> +@static-lib lib/libboost_math_c99-mt.a
> @lib lib/libboost_math_c99-mt.so.${LIBboost_math_c99-mt_VERSION}
> -lib/libboost_math_c99.a
> +@static-lib lib/libboost_math_c99.a
> @lib lib/libboost_math_c99.so.${LIBboost_math_c99_VERSION}
> -lib/libboost_math_c99f-mt.a
> +@static-lib lib/libboost_math_c99f-mt.a
> @lib lib/libboost_math_c99f-mt.so.${LIBboost_math_c99f-mt_VERSION}
> -lib/libboost_math_c99f.a
> +@static-lib lib/libboost_math_c99f.a
> @lib lib/libboost_math_c99f.so.${LIBboost_math_c99f_VERSION}
> -lib/libboost_math_c99l-mt.a
> +@static-lib lib/libboost_math_c99l-mt.a
> @lib lib/libboost_math_c99l-mt.so.${LIBboost_math_c99l-mt_VERSION}
> -lib/libboost_math_c99l.a
> +@static-lib lib/libboost_math_c99l.a
> @lib lib/libboost_math_c99l.so.${LIBboost_math_c99l_VERSION}
> -lib/libboost_math_tr1-mt.a
> +@static-lib lib/libboost_math_tr1-mt.a
> @lib lib/libboost_math_tr1-mt.so.${LIBboost_math_tr1-mt_VERSION}
> -lib/libboost_math_tr1.a
> +@static-lib lib/libboost_math_tr1.a
> @lib lib/libboost_math_tr1.so.${LIBboost_math_tr1_VERSION}
> -lib/libboost_math_tr1f-mt.a
> +@static-lib lib/libboost_math_tr1f-mt.a
> @lib lib/libboost_math_tr1f-mt.so.${LIBboost_math_tr1f-mt_VERSION}
> -lib/libboost_math_tr1f.a
> +@static-lib lib/libboost_math_tr1f.a
> @lib lib/libboost_math_tr1f.so.${LIBboost_math_tr1f_VERSION}
> -lib/libboost_math_tr1l-mt.a
> +@static-lib lib/libboost_math_tr1l-mt.a
> @lib lib/libboost_math_tr1l-mt.so.${LIBboost_math_tr1l-mt_VERSION}
> -lib/libboost_math_tr1l.a
> +@static-lib lib/libboost_math_tr1l.a
> @lib lib/libboost_math_tr1l.so.${LIBboost_math_tr1l_VERSION}
> -lib/libboost_num${MODPY_PY_PREFIX}mt.a
> -@lib lib/libboost_num${MODPY_PY_PREFIX}mt.so.${LIBboost_numpy-mt_VERSION}
> -lib/libboost_numpy.a
> +@static-lib lib/libboost_num${MODPY_PY_PREFIX}mt.a
> +@lib
> lib/libboost_num${MODPY_PY_PREFIX}mt.so.${LIBboost_num${MODPY_PY_PREFIX}mt_VERSION}
> +@static-lib lib/libboost_numpy.a
> @lib lib/libboost_numpy.so.${LIBboost_numpy_VERSION}
> -lib/libboost_prg_exec_monitor-mt.a
> +@static-lib lib/libboost_prg_exec_monitor-mt.a
> @lib
> lib/libboost_prg_exec_monitor-mt.so.${LIBboost_prg_exec_monitor-mt_VERSION}
> -lib/libboost_prg_exec_monitor.a
> +@static-lib lib/libboost_prg_exec_monitor.a
> @lib lib/libboost_prg_exec_monitor.so.${LIBboost_prg_exec_monitor_VERSION}
> -lib/libboost_program_options-mt.a
> +@static-lib lib/libboost_program_options-mt.a
> @lib
> lib/libboost_program_options-mt.so.${LIBboost_program_options-mt_VERSION}
> -lib/libboost_program_options.a
> +@static-lib lib/libboost_program_options.a
> @lib lib/libboost_program_options.so.${LIBboost_program_options_VERSION}
> -lib/libboost_python-mt.a
> +@static-lib lib/libboost_python-mt.a
> @lib lib/libboost_python-mt.so.${LIBboost_python-mt_VERSION}
> -lib/libboost_python.a
> +@static-lib lib/libboost_python.a
> @lib lib/libboost_python.so.${LIBboost_python_VERSION}
> -lib/libboost_python3-mt.a
> +@static-lib lib/libboost_python3-mt.a
> @lib lib/libboost_python3-mt.so.${LIBboost_python3-mt_VERSION}
> -lib/libboost_python3.a
> +@static-lib lib/libboost_python3.a
> @lib lib/libboost_python3.so.${LIBboost_python3_VERSION}
> -lib/libboost_random-mt.a
> +@static-lib lib/libboost_random-mt.a
> @lib lib/libboost_random-mt.so.${LIBboost_random-mt_VERSION}
> -lib/libboost_random.a
> +@static-lib lib/libboost_random.a
> @lib lib/libboost_random.so.${LIBboost_random_VERSION}
> -lib/libboost_regex-mt.a
> +@static-lib lib/libboost_regex-mt.a
> @lib lib/libboost_regex-mt.so.${LIBboost_regex-mt_VERSION}
> -lib/libboost_regex.a
> +@static-lib lib/libboost_regex.a
> @lib lib/libboost_regex.so.${LIBboost_regex_VERSION}
> -lib/libboost_serialization-mt.a
> +@static-lib lib/libboost_serialization-mt.a
> @lib lib/libboost_serialization-mt.so.${LIBboost_serialization-mt_VERSION}
> -lib/libboost_serialization.a
> +@static-lib lib/libboost_serialization.a
> @lib lib/libboost_serialization.so.${LIBboost_serialization_VERSION}
> -lib/libboost_signals-mt.a
> +@static-lib lib/libboost_signals-mt.a
> @lib lib/libboost_signals-mt.so.${LIBboost_signals-mt_VERSION}
> -lib/libboost_signals.a
> +@static-lib lib/libboost_signals.a
> @lib lib/libboost_signals.so.${LIBboost_signals_VERSION}
> -lib/libboost_system-mt.a
> +@static-lib lib/libboost_system-mt.a
> @lib lib/libboost_system-mt.so.${LIBboost_system-mt_VERSION}
> -lib/libboost_system.a
> +@static-lib lib/libboost_system.a
> @lib lib/libboost_system.so.${LIBboost_system_VERSION}
> -lib/libboost_test_exec_monitor-mt.a
> -lib/libboost_test_exec_monitor.a
> -lib/libboost_thread-mt.a
> +@static-lib lib/libboost_test_exec_monitor-mt.a
> +@static-lib lib/libboost_test_exec_monitor.a
> +@static-lib lib/libboost_thread-mt.a
> @lib lib/libboost_thread-mt.so.${LIBboost_thread-mt_VERSION}
> -lib/libboost_timer-mt.a
> +@static-lib lib/libboost_timer-mt.a
> @lib lib/libboost_timer-mt.so.${LIBboost_timer-mt_VERSION}
> -lib/libboost_timer.a
> +@static-lib lib/libboost_timer.a
> @lib lib/libboost_timer.so.${LIBboost_timer_VERSION}
> -lib/libboost_type_erasure-mt.a
> +@static-lib lib/libboost_type_erasure-mt.a
> @lib lib/libboost_type_erasure-mt.so.${LIBboost_type_erasure-mt_VERSION}
> -lib/libboost_type_erasure.a
> +@static-lib lib/libboost_type_erasure.a
> @lib lib/libboost_type_erasure.so.${LIBboost_type_erasure_VERSION}
> -lib/libboost_unit_test_framework-mt.a
> +@static-lib lib/libboost_unit_test_framework-mt.a
> @lib
> lib/libboost_unit_test_framework-mt.so.${LIBboost_unit_test_framework-mt_VERSION}
> -lib/libboost_unit_test_framework.a
> +@static-lib lib/libboost_unit_test_framework.a
> @lib
> lib/libboost_unit_test_framework.so.${LIBboost_unit_test_framework_VERSION}
> -lib/libboost_wave-mt.a
> +@static-lib lib/libboost_wave-mt.a
> @lib lib/libboost_wave-mt.so.${LIBboost_wave-mt_VERSION}
> -lib/libboost_wserialization-mt.a
> +@static-lib lib/libboost_wserialization-mt.a
> @lib lib/libboost_wserialization-mt.so.${LIBboost_wserialization-mt_VERSION}
> -lib/libboost_wserialization.a
> +@static-lib lib/libboost_wserialization.a
> @lib lib/libboost_wserialization.so.${LIBboost_wserialization_VERSION}
> share/boost-build/
> share/boost-build/__init__.py
> Index: pkg/PLIST-md
> ===================================================================
> RCS file: /cvs/ports/devel/boost/pkg/PLIST-md,v
> retrieving revision 1.1
> diff -u -p -r1.1 PLIST-md
> --- pkg/PLIST-md 13 Dec 2018 19:52:46 -0000 1.1
> +++ pkg/PLIST-md 19 Jan 2020 04:09:03 -0000
> @@ -1,21 +1,21 @@
> @comment $OpenBSD: PLIST-md,v 1.1 2018/12/13 19:52:46 sthen Exp $
> -lib/libboost_context-mt.a
> +@static-lib lib/libboost_context-mt.a
> @lib lib/libboost_context-mt.so.${LIBboost_context-mt_VERSION}
> -lib/libboost_coroutine-mt.a
> +@static-lib lib/libboost_coroutine-mt.a
> @lib lib/libboost_coroutine-mt.so.${LIBboost_coroutine-mt_VERSION}
> -lib/libboost_coroutine.a
> +@static-lib lib/libboost_coroutine.a
> @lib lib/libboost_coroutine.so.${LIBboost_coroutine_VERSION}
> -lib/libboost_fiber-mt.a
> +@static-lib lib/libboost_fiber-mt.a
> @lib lib/libboost_fiber-mt.so.${LIBboost_fiber-mt_VERSION}
> -lib/libboost_stacktrace_addr2line-mt.a
> +@static-lib lib/libboost_stacktrace_addr2line-mt.a
> @lib
> lib/libboost_stacktrace_addr2line-mt.so.${LIBboost_stacktrace_addr2line-mt_VERSION}
> -lib/libboost_stacktrace_addr2line.a
> +@static-lib lib/libboost_stacktrace_addr2line.a
> @lib
> lib/libboost_stacktrace_addr2line.so.${LIBboost_stacktrace_addr2line_VERSION}
> -lib/libboost_stacktrace_basic-mt.a
> +@static-lib lib/libboost_stacktrace_basic-mt.a
> @lib
> lib/libboost_stacktrace_basic-mt.so.${LIBboost_stacktrace_basic-mt_VERSION}
> -lib/libboost_stacktrace_basic.a
> +@static-lib lib/libboost_stacktrace_basic.a
> @lib lib/libboost_stacktrace_basic.so.${LIBboost_stacktrace_basic_VERSION}
> -lib/libboost_stacktrace_noop-mt.a
> +@static-lib lib/libboost_stacktrace_noop-mt.a
> @lib
> lib/libboost_stacktrace_noop-mt.so.${LIBboost_stacktrace_noop-mt_VERSION}
> -lib/libboost_stacktrace_noop.a
> +@static-lib lib/libboost_stacktrace_noop.a
> @lib lib/libboost_stacktrace_noop.so.${LIBboost_stacktrace_noop_VERSION}
>