conda-forge / boost-feedstock Goto Github PK
View Code? Open in Web Editor NEWA conda-smithy repository for boost.
License: BSD 3-Clause "New" or "Revised" License
A conda-smithy repository for boost.
License: BSD 3-Clause "New" or "Revised" License
Since conda has vc features, it's fine to have system layout instead of appending the compiler version in the dll names.
(One advantage would be that cmake's FindBoost.cmake script will be able to find newer boost libraries without requiring patches like, conda-forge/cmake-feedstock#29)
Unfortunatly, I am not sure about this, but I tought opening an issue anyhow was useful to spread what we are seeing in some feedstocks.
In two different feedstocks, we experienced crashes with 63893 Illegal instruction: 4
error on importing the python module when due to re-rendering the downstream packages were compiled with clang 14, while everything was working fine with clang 13:
In one of these cases, for debugging we run the complete C++ testsuite compiled with clang 14 (conda-forge/pinocchio-feedstock#76), and everything works fine, so we think that the problem may be related to boost-python. At the moment we did not tried to recompile boost-python with clang 14 to see if it solves the problem, but one of the hypothesis is that for some reason the ABI of boost-python changes between clang 13 and clang 14.
I am aware that this is not a complete bug report, but I prefered anyhow to have a place were to track this and report what we find.
Release 1.84 introduced two new libraries, one of them needs to be built: libboost-cobalt
# Name Version Build Channel
libboost 1.84.0 hcc118f5_1 conda-forge
libboost-devel 1.84.0 h91493d7_1 conda-forge
libboost-headers 1.84.0 h57928b3_1 conda-forge
active environment : bliss2
active env location : C:\Miniconda3\envs\bliss2
shell level : 2
user config file : C:\Users\debionne\.condarc
populated config files : C:\Miniconda3\.condarc
C:\Users\debionne\.condarc
conda version : 23.7.1
conda-build version : not installed
python version : 3.9.16.final.0
virtual packages : __archspec=1=x86_64
__win=0=0
base environment : C:\Miniconda3 (writable)
conda av data dir : C:\Miniconda3\etc\conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/win-64
https://conda.anaconda.org/conda-forge/noarch
package cache : C:\Miniconda3\pkgs
C:\Users\debionne\.conda\pkgs
C:\Users\debionne\AppData\Local\conda\conda\pkgs
envs directories : C:\Miniconda3\envs
C:\Users\debionne\.conda\envs
C:\Users\debionne\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/23.7.1 requests/2.27.1 CPython/3.9.16 Windows/10 Windows/10.0.19045
administrator : True
netrc file : None
offline mode : False
I am trying to update a bioconda recipe for a package requiring the BOOST static libraries to build (SKESA).
However, it seems that the static libraries are missing from the /lib folder of the conda environment.
On debian 10:
mamba create -n boost boost zlib
~/anaconda3/envs/boost/include/boost/ exists
~/anaconda3/envs/boost/lib contains the libboost_xxx.so files but no libboost_xxx.a file.
Looking at the recipe here it seems like the static libraries should be installed. I am a bit confused with the otrher stock (boost-cpp) for which the static libraries are not installed. The mamba log lists both packages:
__ __ __ __
/ \ / \ / \ / \
/ \/ \/ \/ \
███████████████/ /██/ /██/ /██/ /████████████████████████
/ / \ / \ / \ / \ \____
/ / \_/ \_/ \_/ \ o \__,
/ _/ \_____/ `
|/
███╗ ███╗ █████╗ ███╗ ███╗██████╗ █████╗
████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
██╔████╔██║███████║██╔████╔██║██████╔╝███████║
██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
██║ ╚═╝ ██║██║ ██║██║ ╚═╝ ██║██████╔╝██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝
mamba (1.0.0) supported by @QuantStack
GitHub: https://github.com/mamba-org/mamba
Twitter: https://twitter.com/QuantStack
█████████████████████████████████████████████████████████████
Looking for: ['boost', 'zlib']
pkgs/main/linux-64 No change
bioconda/linux-64 No change
bioconda/noarch No change
r/linux-64 No change
pkgs/main/noarch No change
pkgs/r/linux-64 No change
pkgs/r/noarch No change
r/noarch No change
conda-forge/noarch 10.7MB @ 2.8MB/s 4.1s
conda-forge/linux-64 28.7MB @ 5.1MB/s 6.6s
Transaction
Prefix: /home/debian/anaconda3/envs/boost
Updating specs:
- boost
- zlib
Package Version Build Channel Size
───────────────────────────────────────────────────────────────────────────────────────
Install:
───────────────────────────────────────────────────────────────────────────────────────
+ _libgcc_mutex 0.1 conda_forge conda-forge/linux-64 Cached
+ _openmp_mutex 4.5 2_gnu conda-forge/linux-64 Cached
+ boost 1.80.0 py311h59ea3da_4 conda-forge/linux-64 Cached
+ boost-cpp 1.80.0 h75c5d50_0 conda-forge/linux-64 Cached
+ bzip2 1.0.8 h7f98852_4 conda-forge/linux-64 Cached
+ ca-certificates 2022.12.7 ha878542_0 conda-forge/linux-64 Cached
+ icu 70.1 h27087fc_0 conda-forge/linux-64 Cached
+ ld_impl_linux-64 2.39 hcc3a1bd_1 conda-forge/linux-64 Cached
+ libblas 3.9.0 16_linux64_openblas conda-forge/linux-64 Cached
+ libcblas 3.9.0 16_linux64_openblas conda-forge/linux-64 Cached
+ libffi 3.4.2 h7f98852_5 conda-forge/linux-64 Cached
+ libgcc-ng 12.2.0 h65d4601_19 conda-forge/linux-64 Cached
+ libgfortran-ng 12.2.0 h69a702a_19 conda-forge/linux-64 Cached
+ libgfortran5 12.2.0 h337968e_19 conda-forge/linux-64 Cached
+ libgomp 12.2.0 h65d4601_19 conda-forge/linux-64 Cached
+ liblapack 3.9.0 16_linux64_openblas conda-forge/linux-64 Cached
+ libnsl 2.0.0 h7f98852_0 conda-forge/linux-64 Cached
+ libopenblas 0.3.21 pthreads_h78a6416_3 conda-forge/linux-64 Cached
+ libsqlite 3.40.0 h753d276_0 conda-forge/linux-64 Cached
+ libstdcxx-ng 12.2.0 h46fd767_19 conda-forge/linux-64 Cached
+ libuuid 2.32.1 h7f98852_1000 conda-forge/linux-64 Cached
+ libzlib 1.2.13 h166bdaf_4 conda-forge/linux-64 Cached
+ ncurses 6.3 h27087fc_1 conda-forge/linux-64 Cached
+ numpy 1.24.0 py311hbde0eaa_0 conda-forge/linux-64 Cached
+ openssl 3.0.7 h0b41bf4_1 conda-forge/linux-64 Cached
+ pip 22.3.1 pyhd8ed1ab_0 conda-forge/noarch Cached
+ python 3.11.0 ha86cf86_0_cpython conda-forge/linux-64 Cached
+ python_abi 3.11 3_cp311 conda-forge/linux-64 Cached
+ readline 8.2 h5eee18b_0 pkgs/main/linux-64 Cached
+ setuptools 65.6.3 pyhd8ed1ab_0 conda-forge/noarch Cached
+ tk 8.6.12 h27826a3_0 conda-forge/linux-64 Cached
+ tzdata 2022g h191b570_0 conda-forge/noarch Cached
+ wheel 0.38.4 pyhd8ed1ab_0 conda-forge/noarch Cached
+ xz 5.2.8 h5eee18b_0 pkgs/main/linux-64 Cached
+ zlib 1.2.13 h166bdaf_4 conda-forge/linux-64 Cached
+ zstd 1.5.2 h6239696_4 conda-forge/linux-64 Cached
Summary:
Install: 36 packages
Total download: 0 B
───────────────────────────────────────────────────────────────────────────────────────
Confirm changes: [Y/n] Y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
To activate this environment, use
$ mamba activate boost
To deactivate an active environment, use
$ mamba deactivate
What am I missing?
How hard would it be to include MPI support? Any plans for this? Or do you think this should better be done with a "split", i.e. a seperate boost-mpi
package?
Currently we are putting MPI in our boost recipe (for linux only) as in
https://github.com/xdata-skylark/libskylark/tree/master/conda/boost
but obviously we would love to be able to just point to the "official" conda-forge package(s) for the dependencies :)
I'm trying to compile a program (caffe) that expects libboost_thread-mt
in addition to libboost_thread
. Installing boost with brew creates this library, but not with conda-forge.
How can I get this package to include the -mt
library as well?
Checking if main branch is still buildable
In conda-forge/rdkit-feedstock#14, the boost version got updated from 1.66 to 1.67, but now all builds are failing with
Boost version: 1.67.0
...
Could not find the following Boost libraries:
boost_python
Is there another feedstock I should be using to get python bindings for boost?
The AnacondaRecipes version of this feedstock (https://github.com/anacondarecipes/boost-cpp-feedstock) incorporates boost-python and libboost, as well as "boost" and "boost-cpp" as metapackages. As part of the unification with defaults, we should discuss how to deprecate this repo and have only one boost feedstock that has the package splitting.
@conda-forge-admin, please re-render.
Hi,
Would you be able to add --with-libraries=graph,filesystem
?
Thank you in advance.
Best wishes,
MIchal
It seems our recent builds of Boost now do not have headers for Boost.Python on OS X or Linux. However, on Windows it appears all of the headers are included.
This is not really a Boost issue, rather a CMake one, but I figured it would be worth to record it here.
Since version 1.66, the name of the Boost libraries includes a tag representing the architecture the library was built for (e.g., x64
). CMake's FindBoost gets confused by this new tag, and it fails to find the Boost Python library on our CI pipeline:
https://ci.appveyor.com/project/ci4esa/pagmo2/build/1.0.827/job/9hpk9pcjbc004o19#L702
The issue has been reported and discussed here:
https://gitlab.kitware.com/cmake/cmake/issues/17575
Should we try to include one of the proposed solutions as a patch to the current conda CMake version? Or should we just wait for a proper CMake update?
As it stands, Boost 1.66 is unusable in CMake projects.
How are you able to write portable code using boost if you don't build it using the same dependencies?
Issue:
(see full environment list below)
This error occurs while compiling either osmium tool (https://github.com/osmcode/osmium-tool) or libLAS (https://github.com/libLAS/libLAS).
Both libraries use CMake, and set "Boost_USE_STATIC_LIBS=ON". All fine and good, I've verified that this 'boost' package from conda-forge provides both static and shared libraries. The problem is caused by missing CMake configuration from Boost, for the shared variant.
For example, for boost-chrono, in D:\cvrs-root-test\Library\lib\cmake\boost_chrono-1.74.0\boost_chrono-config.cmake
, there is this glob logic to find all build variants:
file(GLOB __boost_variants "${CMAKE_CURRENT_LIST_DIR}/libboost_chrono-variant*.cmake")
But this is the directory listing under Library\lib\cmake\boost_chrono-1.74.0
So it has libboost_chrono-variant-shared.cmake
, but seems to be missing something like libboost_chrono-variant-static.cmake
. This causes the find_package(Boost...
call to fail when Boost_USE_STATIC_LIBS is ON.
I've tried building with it off, but get other linking errors. I have verified that I am able to compile and link some simple boost example programs in the environment (with dynamic linking). So I think that means these libraries really do need static linking, I'm not exactly clear on why though.
Full error:
CMake Error at D:/cvrs-root-test/Library/lib/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package):
Found package configuration file:
D:/cvrs-root-test/Library/lib/cmake/boost_program_options-1.74.0/boost_program_options-config.cmake
but it set boost_program_options_FOUND to FALSE so package
"boost_program_options" is considered to be NOT FOUND. Reason given by
package:
No suitable build variant has been found.
The following variants have been tried and rejected:
* boost_program_options.lib (shared, Boost_USE_STATIC_LIBS=ON)
$ conda info
active environment : D:\cvrs-root-test
active env location : D:\cvrs-root-test
shell level : 2
user config file : C:\Users\nmaxwell\.condarc
populated config files : C:\Users\nmaxwell\.condarc
conda version : 4.10.3
conda-build version : 3.20.5
python version : 3.8.5.final.0
virtual packages : __win=0=0
__archspec=1=x86_64
base environment : C:\Users\nmaxwell\Anaconda3 (writable)
conda av data dir : C:\Users\nmaxwell\Anaconda3\etc\conda
conda av metadata url : None
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : C:\Users\nmaxwell\Anaconda3\pkgs
C:\Users\nmaxwell\.conda\pkgs
C:\Users\nmaxwell\AppData\Local\conda\conda\pkgs
envs directories : C:\Users\nmaxwell\Anaconda3\envs
C:\Users\nmaxwell\.conda\envs
C:\Users\nmaxwell\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/4.10.3 requests/2.24.0 CPython/3.8.5 Windows/10 Windows/10.0.18362
administrator : False
netrc file : None
offline mode : False
$ conda list
# Name Version Build Channel
blas 1.0 mkl
blas-devel 3.9.0 11_win64_mkl conda-forge
blosc 1.21.0 h0e60522_0 conda-forge
boost 1.74.0 py38h1266d08_3 conda-forge
boost-cpp 1.74.0 h5b4e17d_4 conda-forge
bzip2 1.0.8 h8ffe710_4 conda-forge
c-compiler 1.3.0 h8ffe710_0 conda-forge
ca-certificates 2021.10.8 h5b45459_0 conda-forge
cairo 1.16.0 hb19e0ff_1008 conda-forge
cfitsio 3.470 h0af3d06_7 conda-forge
clangdev 5.0.0 flang_3 [flang] conda-forge
cmake 3.21.3 h39d44d4_0 conda-forge
compilers 1.3.0 h57928b3_0 conda-forge
cpp-filesystem 1.3.8 h5362a0b_0 conda-forge
cudatoolkit 11.4.2 h0e0bcb6_9 conda-forge
curl 7.79.1 h789b8ee_1 conda-forge
cxx-compiler 1.3.0 h2d74725_0 conda-forge
dlib 19.22.0 py38h085cf52_0 conda-forge
draco 1.4.1 h5362a0b_0 conda-forge
eigen 3.4.0 h2d74725_0 conda-forge
expat 2.4.1 h39d44d4_0 conda-forge
filelock 3.3.0 pyhd8ed1ab_0 conda-forge
flang 5.0.0 he025d50_20180525 conda-forge
flang_win-64 5.0.0 h13ae965_20180526 conda-forge
font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge
font-ttf-inconsolata 3.000 h77eed37_0 conda-forge
font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge
font-ttf-ubuntu 0.83 hab24e00_0 conda-forge
fontconfig 2.13.1 h1989441_1005 conda-forge
fonts-conda-ecosystem 1 0 conda-forge
fonts-conda-forge 1 0 conda-forge
fortran-compiler 1.3.0 h9655429_0 conda-forge
freeglut 3.2.1 h0e60522_2 conda-forge
freetype 2.10.4 h546665d_1 conda-forge
freexl 1.0.6 ha8e266a_0 conda-forge
gdal 3.3.2 py38hc3a09ef_4 conda-forge
geos 3.9.1 h39d44d4_2 conda-forge
geotiff 1.7.0 h350af67_3 conda-forge
gettext 0.19.8.1 ha2e2712_1008 conda-forge
git 2.33.0 h57928b3_2 conda-forge
gtest 1.10.0 h2d74725_7 conda-forge
hdf4 4.2.15 h0e5069d_3 conda-forge
hdf5 1.12.1 nompi_h2a0e4a3_101 conda-forge
icu 68.1 h0e60522_0 conda-forge
intel-openmp 2021.3.0 h57928b3_3372 conda-forge
jasper 2.0.14 h77af90b_2 conda-forge
jbig 2.1 h8d14728_2003 conda-forge
jpeg 9d h8ffe710_0 conda-forge
jsoncpp 1.9.4 h2d74725_3 conda-forge
kealib 1.4.14 h8995ca9_3 conda-forge
krb5 1.19.2 hbae68bd_2 conda-forge
laszip 3.4.3 h6538335_1 conda-forge
laz-perf 2.1.0 py38h885f38d_3 conda-forge
lcms2 2.12 h2a16943_0 conda-forge
lerc 2.2.1 h0e60522_0 conda-forge
libblas 3.9.0 11_win64_mkl conda-forge
libcblas 3.9.0 11_win64_mkl conda-forge
libclang 11.1.0 default_h5c34c98_1 conda-forge
libcurl 7.79.1 h789b8ee_1 conda-forge
libdeflate 1.7 h8ffe710_5 conda-forge
libffi 3.4.2 h0e60522_4 conda-forge
libflac 1.3.3 h0e60522_1 conda-forge
libflang 5.0.0 h6538335_20180525 conda-forge
libgdal 3.3.2 h08edb8f_4 conda-forge
libglib 2.68.4 h3be07f2_1 conda-forge
libiconv 1.16 he774522_0 conda-forge
libkml 1.3.0 h9859afa_1014 conda-forge
liblapack 3.9.0 11_win64_mkl conda-forge
liblapacke 3.9.0 11_win64_mkl conda-forge
libnetcdf 4.8.1 nompi_h1cc8e9d_101 conda-forge
libogg 1.3.4 h8ffe710_1 conda-forge
libopencv 4.5.3 py38hb110498_5 conda-forge
libopus 1.3.1 h8ffe710_1 conda-forge
libpng 1.6.37 h1d00b33_2 conda-forge
libpq 13.3 hfcc5ef8_1 conda-forge
libprotobuf 3.18.1 h7755175_0 conda-forge
librttopo 1.1.0 hb340de5_6 conda-forge
libsndfile 1.0.31 h0e60522_1 conda-forge
libspatialindex 1.9.3 h39d44d4_4 conda-forge
libspatialite 5.0.1 h6a90f17_9 conda-forge
libssh2 1.10.0 h680486a_2 conda-forge
libtiff 4.3.0 h0c97f57_1 conda-forge
libvorbis 1.3.7 h0e60522_0 conda-forge
libwebp-base 1.2.1 h8ffe710_0 conda-forge
libxml2 2.9.12 hf5bbc77_0 conda-forge
libzip 1.8.0 hfed4ece_1 conda-forge
libzlib 1.2.11 h8ffe710_1013 conda-forge
llvm-meta 5.0.0 0 conda-forge
lz4-c 1.9.3 h8ffe710_1 conda-forge
m2w64-gcc-libgfortran 5.3.0 6 conda-forge
m2w64-gcc-libs 5.3.0 7 conda-forge
m2w64-gcc-libs-core 5.3.0 7 conda-forge
m2w64-gmp 6.1.0 2 conda-forge
m2w64-libwinpthread-git 5.0.0.4634.697f757 2 conda-forge
mkl 2021.3.0 hb70f87d_564 conda-forge
mkl-devel 2021.3.0 h57928b3_565 conda-forge
mkl-include 2021.3.0 hb70f87d_564 conda-forge
mkl-service 2.4.0 py38h294d835_0 conda-forge
mkl_fft 1.3.0 py38h277e83a_2
msys2-conda-epoch 20160418 1 conda-forge
ninja 1.10.2 h2d74725_1 conda-forge
nitro 2.7.dev6 h33f27b4_3 conda-forge
numpy 1.21.2 py38h089cfbf_0 conda-forge
opencv 4.5.3 py38haa244fe_5 conda-forge
openjpeg 2.4.0 hb211442_1 conda-forge
openmp 5.0.0 vc14_1 conda-forge
openssl 1.1.1l h8ffe710_0 conda-forge
pcre 8.45 h0e60522_0 conda-forge
pdal 2.3.0 h610f668_8 conda-forge
pip 21.2.4 pyhd8ed1ab_0 conda-forge
pixman 0.40.0 h8ffe710_0 conda-forge
pkg-config 0.29.2 h2bf4dc2_1008 conda-forge
pkgconfig 1.5.5 py38haa244fe_0 conda-forge
poppler 21.09.0 h24fffdf_3 conda-forge
poppler-data 0.4.11 hd8ed1ab_0 conda-forge
postgresql 13.3 h1c22c4f_1 conda-forge
proj 8.1.1 h1cfcee9_2 conda-forge
protobuf 3.18.1 py38h885f38d_0 conda-forge
py-opencv 4.5.3 py38h595d716_5 conda-forge
pybind11 2.8.0 py38hbd9d945_0 conda-forge
pybind11-global 2.8.0 py38hbd9d945_0 conda-forge
python 3.8.12 h7840368_1_cpython conda-forge
python_abi 3.8 2_cp38 conda-forge
qt 5.12.9 h5909a2a_4 conda-forge
rapidjson 1.1.0 ha925a31_1002 conda-forge
rtree 0.9.7 py38h8b54edf_2 conda-forge
scipy 1.7.1 py38ha1292f7_0 conda-forge
setuptools 58.2.0 py38haa244fe_0 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
sqlite 3.36.0 h8ffe710_2 conda-forge
tbb 2021.3.0 h2d74725_0 conda-forge
tiledb 2.3.4 h78dabda_0 conda-forge
tk 8.6.11 h8ffe710_1 conda-forge
ucrt 10.0.20348.0 h57928b3_0 conda-forge
vc 14.2 hb210afc_5 conda-forge
vs2015_runtime 14.29.30037 h902a5da_5 conda-forge
vs2017_win-64 19.16.27038 h2e3bad8_2 conda-forge
vswhere 2.8.4 h57928b3_0 conda-forge
wheel 0.37.0 pyhd8ed1ab_1 conda-forge
xerces-c 3.2.3 h0e60522_2 conda-forge
xsimd 7.6.0 h2d74725_0 conda-forge
xtensor 0.23.10 h5362a0b_0 conda-forge
xtensor-blas 0.19.1 h5362a0b_0 conda-forge
xtensor-io 0.12.9 h5362a0b_0 conda-forge
xtensor-python 0.25.3 py38hf0438ff_0 conda-forge
xtl 0.7.2 h5362a0b_1 conda-forge
xz 5.2.5 h62dcd97_1 conda-forge
zlib 1.2.11 h8ffe710_1013 conda-forge
zstd 1.5.0 h6255e5f_0 conda-forge
@conda-forge-admin, please re-render.
Issue: Unresolved symbols related to icu (coming from boost_regex and others)
I have a package that relies on the conda-forge build of boost, which is used by the bioconda project. However, the package fails to compile under OSX. The relevant CI logs are available here. Essentially, however, it seems unable to find a number of symbols originating in the icu58 library. This results in a large number of linker errors like the following:
Undefined symbols for architecture x86_64:
"icu_58::Locale::Locale(icu_58::Locale const&)", referenced from:
boost::basic_regex<int, boost::icu_regex_traits>::imbue(icu_58::Locale) in libboost_regex.a(icu.o)
boost::icu_regex_traits::imbue(icu_58::Locale) in libboost_regex.a(icu.o)
boost::re_detail_106700::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_58::Locale const&) in libboost_regex.a(icu.o)
"icu_58::Locale::Locale()", referenced from:
boost::re_detail_106700::regex_data<int, boost::icu_regex_traits>::regex_data() in libboost_regex.a(icu.o)
"icu_58::Locale::~Locale()", referenced from:
boost::basic_regex<int, boost::icu_regex_traits>::imbue(icu_58::Locale) in libboost_regex.a(icu.o)
boost::icu_regex_traits::imbue(icu_58::Locale) in libboost_regex.a(icu.o)
void boost::detail::sp_pointer_construct<boost::re_detail_106700::icu_regex_traits_implementation, boost::re_detail_106700::icu_regex_traits_implementation>(boost::shared_ptr<boost::re_detail_106700::icu_regex_traits_implementation>*, boost::re_detail_106700::icu_regex_traits_implementation*, boost::detail::shared_count&) in libboost_regex.a(icu.o)
boost::detail::sp_counted_impl_p<boost::re_detail_106700::icu_regex_traits_implementation>::dispose() in libboost_regex.a(icu.o)
boost::re_detail_106700::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_58::Locale const&) in libboost_regex.a(icu.o)
boost::re_detail_106700::regex_data<int, boost::icu_regex_traits>::regex_data() in libboost_regex.a(icu.o)
"icu_58::Collator::createInstance(icu_58::Locale const&, UErrorCode&)", referenced from:
boost::re_detail_106700::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_58::Locale const&) in libboost_regex.a(icu.o)
"_u_charFromName_58", referenced from:
boost::icu_regex_traits::lookup_collatename(int const*, int const*) const in libboost_regex.a(icu.o)
"_u_charType_58", referenced from:
boost::icu_regex_traits::isctype(int, unsigned long long) const in libboost_regex.a(icu.o)
"_u_digit_58", referenced from:
boost::icu_regex_traits::isctype(int, unsigned long long) const in libboost_regex.a(icu.o)
boost::re_detail_106700::basic_regex_parser<int, boost::icu_regex_traits>::unescape_character() in libboost_regex.a(icu.o)
boost::re_detail_106700::basic_regex_parser<int, boost::icu_regex_traits>::parse_repeat_range(bool) in libboost_regex.a(icu.o)
boost::re_detail_106700::basic_regex_parser<int, boost::icu_regex_traits>::parse_backref() in libboost_regex.a(icu.o)
boost::re_detail_106700::basic_regex_parser<int, boost::icu_regex_traits>::parse_perl_extension() in libboost_regex.a(icu.o)
boost::re_detail_106700::basic_regex_parser<int, boost::icu_regex_traits>::parse_extended_escape() in libboost_regex.a(icu.o)
"_u_isblank_58", referenced from:
boost::icu_regex_traits::isctype(int, unsigned long long) const in libboost_regex.a(icu.o)
...
Looking at the environment, however, it's clear that the icu58 dependency is found and installed. So, it's not clear to me why these symbols can't be found. Any help would be greatly appreciated.
Similar to other C++ libraries where we've addressed static linking issues, boost also needs -fPIC
in its CXXFLAGS to be able to be statically linked when creating other shared libraries. It turns out that Ubuntu 14.04's boost also does not do this, and I just got this error in another build:
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_filesystem.a(path.o): relocation R_X86_64_32S against `_ZNSs4_Rep20_S_empty_rep_storageE' can not be used when making a shared object; recompile with -fPIC
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
To be clear, the use case is creating libfoo.so
with its dependencies statically linked (so users of libfoo
do not need to install its transitive dependencies as other shared libraries). Is there some other way around this other than always compiling with -fPIC
(the known solution)?
I want to include the conda package that has been installed in my C++ project using the props file. Is there a way to generate a props file in conda for an installed package?
If not, what are the other ways to include the installed conda package in a C++ project? I do not want to use CMake, hence taking the props file approach.
Just noticed this in CI:
SafetyError: The package for libboost located at /Users/runner/miniforge3/pkgs/libboost-1.82.0-h72cdd8a_4
appears to be corrupted. The path 'lib/libboost_atomic.dylib'
has an incorrect size.
reported size: 87312 bytes
actual size: 86178 bytes
SafetyError: The package for libboost located at /Users/runner/miniforge3/pkgs/libboost-1.82.0-h72cdd8a_4
appears to be corrupted. The path 'lib/libboost_chrono.dylib'
has an incorrect size.
reported size: 61328 bytes
actual size: 60194 bytes
SafetyError: The package for libboost located at /Users/runner/miniforge3/pkgs/libboost-1.82.0-h72cdd8a_4
appears to be corrupted. The path 'lib/libboost_container.dylib'
has an incorrect size.
reported size: 123552 bytes
actual size: 122421 bytes
and so on...
This seems to have been overlooked in #164, unfortunately. 😑
We did have some other SafetyErrors for the unification related to CMake metadata, which got fixed in 43373e6 and 3c87dcf; this could be similar in principle.
What I could imagine happening: we're generating signature with cctools upon first installation (for libboost
), which changes the artefacts. Once we copy them again for libboost-devel
, the signature doesn't get generated, and so conda gets confused with the sizes?
After the update from 1.63 to 1.64, our conda-based CI over at pagmo is failing on linux/osx. Python3-based builds are unable to detect the Boost Python libs:
https://travis-ci.org/esa/pagmo2/jobs/228139108
Python2-based builds compile but they are giving an error which is reminiscent of when there is a mismatch bettwen Python version and Boost.Python version:
https://travis-ci.org/esa/pagmo2/jobs/228139109
(see the last line: ImportError: dynamic module does not define init function (initcore)
)
Weirdly enough, the appveyor builds are ok:
https://ci.appveyor.com/project/ci4esa/pagmo2/build/job/p4dr4u8x5phkoet3
(nevermind the test failure, I am breaking code in that PR :)
I suspect that the issue on linux/osx is partly connected to the fact that, in 1.64, there's fewer .so
files in the lib
directory: with respect to 1.63, for instance, the libboost_python.so.1.64.0
is missing, and there is only libboost_python3.so.1.64.0
file, which I believe is what is bothering CMake?
No idea about the Python 2 failure though. Switching back to 1.63 in our CI restores the situation:
https://travis-ci.org/esa/pagmo2/jobs/228251332
https://travis-ci.org/esa/pagmo2/jobs/228251334
(again, nevermind the test failures)
Currently, our clangxx on macOS builds with -std=c++14
whereas the gcc
on Linux builds with -std=c++17
. We should change macOS to also use -std=c++17
.
While in general there seem not to be any breaking ABI changes with this switch, boost breaks conda-forge/boost-cpp-feedstock#43.
When boost gets upgraded next time, we likely need a migration anyway. We should use that opportunity to change the CXXFLAGS for clangxx to include -std=c++17
as boost seems to be the only library affected by these issues.
Unlike the package in the defaults channel, this package doesn't create a libboost_python
symbolic link. This means that programs linking against libboost_python
fail to find the correct shared object.
For example, on Linux:
(test) ~ ❯❯❯ conda install -c default boost
(test) ~ ❯❯❯ ls -l ~/.conda/envs/test/lib/libboost_python*
-rw-rw-r-- 2 lester lester 564K Jul 5 2018 /home/lester/.conda/envs/sire-test/lib/libboost_python37.a
lrwxrwxrwx 1 lester lester 27 Mar 22 16:04 /home/lester/.conda/envs/sire-test/lib/libboost_python37.so -> libboost_python37.so.1.67.0
-rwxrwxr-x 2 lester lester 320K Jul 5 2018 /home/lester/.conda/envs/sire-test/lib/libboost_python37.so.1.67.0
lrwxrwxrwx 1 lester lester 19 Mar 22 16:04 /home/lester/.conda/envs/sire-test/lib/libboost_python.a -> libboost_python37.a
lrwxrwxrwx 1 lester lester 27 Mar 22 16:04 /home/lester/.conda/envs/sire-test/lib/libboost_python.so -> libboost_python37.so.1.67.0
(test) ~ ❯❯❯ conda install -c conda-forge boost
(test) ~ ❯❯❯ ls -l ~/.conda/envs/test/lib/libboost_python*
-rw-rw-r-- 2 lester lester 583K Feb 10 21:27 /home/lester/.conda/envs/sire-test/lib/libboost_python37.a
lrwxrwxrwx 1 lester lester 27 Mar 22 16:12 /home/lester/.conda/envs/sire-test/lib/libboost_python37.so -> libboost_python37.so.1.69.0
-rwxrwxr-x 2 lester lester 317K Feb 10 21:28 /home/lester/.conda/envs/sire-test/lib/libboost_python37.so.1.69.0
The same behaviour is observed on macOS, where the libboost_python.dylib
symbolic link is missing.
We just added static libraries. However, our testing of these is a bit incomplete at the moment. For instance, we are not testing Windows static libraries, which start with libboost_*
. Also, we should make sure we are really testing all the static libraries on the Unix platforms.
Issue:
This issue is a sequel to #81
I experience now a weird malloc problem for a minimalistic boost-python example using std::throw
in conda environment on macosx.
The given example (see below) was tested on linux, windows and macos, and only the mac version for macos gives:
python(15723,0x109c09dc0) malloc: *** error for object 0x7f95c15011f8: pointer being freed was not allocated
python(15723,0x109c09dc0) malloc: *** set a breakpoint in malloc_error_break to debug
It would be great if you also know a solution or give me some hints to debug this problem.
Environment (conda list
):
# Name Version Build Channel
boost 1.70.0 py36hbf1eeb5_1 conda-forge
boost-cpp 1.70.0 h75728bb_2 conda-forge
bzip2 1.0.8 h0b31af3_2 conda-forge
ca-certificates 2019.11.28 hecc5488_0 conda-forge
certifi 2019.11.28 py36_0 conda-forge
icu 64.2 h6de7cb9_1 conda-forge
libblas 3.8.0 14_openblas conda-forge
libcblas 3.8.0 14_openblas conda-forge
libcxx 9.0.1 0 conda-forge
libcxxabi 9.0.1 0 conda-forge
libffi 3.2.1 h6de7cb9_1006 conda-forge
libgfortran 4.0.0 2 conda-forge
liblapack 3.8.0 14_openblas conda-forge
libopenblas 0.3.7 h3d69b6c_6 conda-forge
llvm-openmp 9.0.1 h40edb58_0 conda-forge
ncurses 6.1 h0a44026_1002 conda-forge
numpy 1.17.3 py36hde6bac1_0 conda-forge
openssl 1.1.1d h0b31af3_0 conda-forge
pip 19.3.1 py36_0 conda-forge
python 3.6.7 h4285619_1006 conda-forge
readline 8.0 hcfe32e1_0 conda-forge
setuptools 44.0.0 py36_0 conda-forge
sqlite 3.30.1 h93121df_0 conda-forge
tk 8.6.10 hbbe82c9_0 conda-forge
wheel 0.33.6 py36_0 conda-forge
xz 5.2.4 h1de35cc_1001 conda-forge
zlib 1.2.11 h0b31af3_1006 conda-forge
conda
and system ( conda info
):
active environment : base
active env location : /Users/florian/opt/anaconda3
shell level : 1
user config file : /Users/florian/.condarc
populated config files : /Users/florian/.condarc
conda version : 4.8.0
conda-build version : 3.18.11
python version : 3.6.9.final.0
virtual packages : __osx=10.15.1
base environment : /Users/florian/opt/anaconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /Users/florian/opt/anaconda3/pkgs
/Users/florian/.conda/pkgs
envs directories : /Users/florian/opt/anaconda3/envs
/Users/florian/.conda/envs
platform : osx-64
user-agent : conda/4.8.0 requests/2.22.0 CPython/3.6.9 Darwin/19.0.0 OSX/10.15.1
UID:GID : 501:20
netrc file : None
offline mode : False
Steps to reproduce:
The minimalistic cpp example (save as bpt.cpp):
#include "boost/python.hpp"
#include <iostream>
void t(){
std::cout << "test throw std::out_of_range" << std::endl;
throw std::out_of_range ("std::out_of_range");
}
namespace bp = boost::python;
BOOST_PYTHON_MODULE(_bpt_){
bp::def("t", t, "");
}
The python test file: (save as bpt.py
)
import _bpt_
print(dir(_bpt_))
try:
_bpt_.t()
except Exception as e:
print("catched:", e) # Exception will not be catched but throws the malloc problem
A Makefile to build the bindings (save as Makefile
) and you probably need to correct the ENV variable
TARGET=_bpt_
ENV=/Users/florian/opt/anaconda3/envs/boost
PYINC=-I $(ENV)/include/python3.6m/
BPLIB=$(ENV)/lib/libboost_python36.dylib
BPINC=-I $(ENV)/include
CXX=clang++
AR=clang++ -bundle -undefined dynamic_lookup
default:
$(CXX) -fPIC -c bpt.cpp $(PYINC) $(BPINC)
$(AR) -o $(TARGET).so *.o $(BPLIB)
test:
python bpt.py
clean:
rm -f *.o *.so *~
Finally create the environment and test the problem.
conda create -c conda-forge -n boost boost python=3.6
conda activate boost
make
make test
The method t()
should throw the exception but the uncatchable malloc problems occurs instead.
Best regards and thank you,
Carsten
We now have a C++11 capable gcc
compiler in the docker image. It would be nice if you could do the following to try this.
gcc
and libgcc
.Please ping me when you have done these things.
Issue:
For the h3a889e0_1_cpython
build of Python 3.8.10 for osx-64
, the package I maintain has a problem with one of our conversions between Python and C++ using Boost.Python. To reproduce the issue on an Intel Mac,
conda create -n test cctbx-base python=3.8.10=h3a889e0_1_cpython
conda activate test
python
>>> from scitbx.array_family import flex
>>> a = flex.complex_double([None])
>>> a[0]
(4e-323+0j)
>>>
What should happen is a TypeError
because None
should not be converted into a number for constructing a complex number. Sometimes, the value is (5e-323+0j)
. Generally, the argument is a list of numbers (e.g. [1, 2, 3j, 4+5j]
). I have tested this on macOS 10.14.6, 10.15.7, and 11.4. They all show the same behavior.
To get the expected behavior, you can change the Python to the earlier build by running,
conda activate test
conda install python=3.8.10=h0e5c897_0_cpython
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: No registered converter was able to produce a C++ rvalue of type std::__1::complex<double> from this Python object of type NoneType
So I thought the problem might be that the Boost.Python package is not compiled the same way as the latest Python 3.8.10 with macOS SDK 11.0 and linking to CoreFoundation. But I have rebuilt boost
and cctbx-base
with the latest SDK, with and without linking to CoreFoundation, but the problematic behavior persists for Python 3.8.10 (h3a889e0_1_cpython
).
The normal behavior occurs in the osx-arm64
builds, which was another reason why I though boost
was the issue, but Python 3.9.4 is fine even though it is built with macOS SDK 11 and links to CoreFoundation while boost
is built with macOS SDK 10.9 (from looking at the build logs, but I could be misinterpreting the output).
Lastly, this different behavior is only for Python 3.8.10 (h3a889e0_1_cpython
) on osx-64
. The other platforms and other versions of Python behave properly. I am running nightly tests here (status badges at the bottom of the README).
The issue is also discussed here
conda-forge/cctbx-base-feedstock#22
Any suggestions for debugging are welcome. Thanks!
conda list
):
$ conda list
# packages in environment at /Users/builder/software/miniconda3/envs/test:
#
# Name Version Build Channel
biopython 1.78 py38h96a0964_2 conda-forge
boost 1.74.0 py38h692b87f_3 conda-forge
boost-cpp 1.74.0 hff03dee_4 conda-forge
brotlipy 0.7.0 py38h5406a74_1001 conda-forge
bzip2 1.0.8 h0d85af4_4 conda-forge
ca-certificates 2021.5.30 h033912b_0 conda-forge
cctbx-base 2021.5 py38hfaf3399_0 conda-forge
certifi 2021.5.30 py38h50d1736_0 conda-forge
cffi 1.14.5 py38ha97d567_0 conda-forge
chardet 4.0.0 py38h50d1736_1 conda-forge
cryptography 3.4.7 py38h1fa4640_0 conda-forge
cycler 0.10.0 py_2 conda-forge
freetype 2.10.4 h4cff582_1 conda-forge
future 0.18.2 py38h50d1736_3 conda-forge
icu 68.1 h74dc148_0 conda-forge
idna 2.10 pyh9f0ad1d_0 conda-forge
jbig 2.1 h0d85af4_2003 conda-forge
jpeg 9d hbcb3906_0 conda-forge
kiwisolver 1.3.1 py38hd9c93a9_1 conda-forge
lcms2 2.12 h577c468_0 conda-forge
lerc 2.2.1 h046ec9c_0 conda-forge
libblas 3.9.0 9_openblas conda-forge
libcblas 3.9.0 9_openblas conda-forge
libcxx 11.1.0 habf9029_0 conda-forge
libdeflate 1.7 h35c211d_5 conda-forge
libffi 3.3 h046ec9c_2 conda-forge
libgfortran 5.0.0 9_3_0_h6c81a4c_22 conda-forge
libgfortran5 9.3.0 h6c81a4c_22 conda-forge
liblapack 3.9.0 9_openblas conda-forge
libopenblas 0.3.15 openmp_h5e1b9a4_1 conda-forge
libpng 1.6.37 h7cec526_2 conda-forge
libsvm 325 he49afe7_0 conda-forge
libtiff 4.3.0 h1167814_1 conda-forge
libwebp-base 1.2.0 h0d85af4_2 conda-forge
llvm-openmp 11.1.0 hda6cdc1_1 conda-forge
lz4-c 1.9.3 h046ec9c_0 conda-forge
matplotlib-base 3.4.2 py38h6152e83_0 conda-forge
mrcfile 1.3.0 pyh44b312d_0 conda-forge
ncurses 6.2 h2e338ed_4 conda-forge
numpy 1.20.3 py38had91d27_1 conda-forge
olefile 0.46 pyh9f0ad1d_1 conda-forge
openjpeg 2.4.0 h6e7aa92_1 conda-forge
openssl 1.1.1k h0d85af4_0 conda-forge
pillow 8.2.0 py38h83525de_1 conda-forge
pip 21.1.2 pyhd8ed1ab_0 conda-forge
psutil 5.8.0 py38h96a0964_1 conda-forge
pycparser 2.20 pyh9f0ad1d_2 conda-forge
pyopenssl 20.0.1 pyhd8ed1ab_0 conda-forge
pyparsing 2.4.7 pyh9f0ad1d_0 conda-forge
pysocks 1.7.1 py38h50d1736_3 conda-forge
python 3.8.10 h3a889e0_1_cpython conda-forge
python-dateutil 2.8.1 py_0 conda-forge
python.app 1.3 py38h5406a74_4 conda-forge
python_abi 3.8 1_cp38 conda-forge
readline 8.1 h05e3726_0 conda-forge
reportlab 3.5.67 py38hf6ac518_0 conda-forge
requests 2.25.1 pyhd3deb0d_0 conda-forge
setuptools 49.6.0 py38h50d1736_3 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
sqlite 3.35.5 h44b9ce1_0 conda-forge
tk 8.6.10 h0419947_1 conda-forge
tornado 6.1 py38h5406a74_1 conda-forge
urllib3 1.26.5 pyhd8ed1ab_0 conda-forge
wheel 0.36.2 pyhd3deb0d_0 conda-forge
xz 5.2.5 haf1e3a3_1 conda-forge
zlib 1.2.11 h7795811_1010 conda-forge
zstd 1.5.0 h582d3a0_0 conda-forge
conda
and system ( conda info
):
$ conda info
active environment : None
shell level : 0
user config file : /Users/builder/.condarc
populated config files : /Users/builder/.condarc
conda version : 4.10.1
conda-build version : not installed
python version : 3.8.10.final.0
virtual packages : __osx=10.14.6=0
__unix=0=0
__archspec=1=x86_64
base environment : /Users/builder/software/miniconda3 (writable)
conda av data dir : /Users/builder/software/miniconda3/etc/conda
conda av metadata url : https://repo.anaconda.com/pkgs/main
channel URLs : https://conda.anaconda.org/conda-forge/osx-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
https://conda.anaconda.org/cctbx/osx-64
https://conda.anaconda.org/cctbx/noarch
https://conda.anaconda.org/phenix-project/osx-64
https://conda.anaconda.org/phenix-project/noarch
https://conda.anaconda.org/ambermd/osx-64
https://conda.anaconda.org/ambermd/noarch
package cache : /Users/builder/software/miniconda3/pkgs
/Users/builder/.conda/pkgs
envs directories : /Users/builder/software/miniconda3/envs
/Users/builder/.conda/envs
platform : osx-64
user-agent : conda/4.10.1 requests/2.25.1 CPython/3.8.10 Darwin/18.7.0 OSX/10.14.6
UID:GID : 502:20
netrc file : None
offline mode : False
Currently only dynamic libraries are being built. This causes problems in projects with build dependencies on boost requiring the static libraries:
https://circleci.com/gh/conda-forge/staged-recipes/3253
CMake Error at /opt/conda/envs/_build/share/cmake-3.5/Modules/FindBoost.cmake:1647 (message):
Unable to find the requested Boost libraries.
Boost version: 1.60.0
Boost include path: /opt/conda/envs/_build/include
Could not find the following static Boost libraries:
boost_filesystem
boost_thread
boost_unit_test_framework
boost_date_time
boost_atomic
If no one beats me to it, here is one example of building the complete Boost library stack:
https://github.com/cloudera/native-toolchain/blob/master/source/boost/build.sh
linux: pentantic error (works with boost 1.68)
[3/45] Building CXX object CMakeFiles/ocl.dir/pythonlib/ocl_algo.cpp.o
FAILED: CMakeFiles/ocl.dir/pythonlib/ocl_algo.cpp.o
$BUILD_PREFIX/bin/x86_64-conda_cos6-linux-gnu-c++ -Docl_EXPORTS -I. -I$PREFIX/include/python3.6m -I$SRC_DIR/src/cutters -I$SRC_DIR/src/geo -I$SRC_DIR/src/algo -I$SRC_DIR/src/dropcutter -I$SRC_DIR/src/common -I$SRC_DIR/src -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -I$PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/opencamlib-2018.08 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -fopenmp -O3 -DNDEBUG -fPIC -Wall -Wno-deprecated -pedantic-errors -std=gnu++11 -MD -MT CMakeFiles/ocl.dir/pythonlib/ocl_algo.cpp.o -MF CMakeFiles/ocl.dir/pythonlib/ocl_algo.cpp.o.d -o CMakeFiles/ocl.dir/pythonlib/ocl_algo.cpp.o -c $SRC_DIR/src/pythonlib/ocl_algo.cpp
In file included from $PREFIX/include/boost/python/object/function_handle.hpp:8:0,
from $PREFIX/include/boost/python/converter/arg_to_python.hpp:19,
from $PREFIX/include/boost/python/call.hpp:15,
from $PREFIX/include/boost/python/object_core.hpp:14,
from $PREFIX/include/boost/python/args.hpp:22,
from $PREFIX/include/boost/python.hpp:11,
from $SRC_DIR/src/pythonlib/ocl_algo.cpp:22:
$PREFIX/include/boost/python/detail/caller.hpp:127:2: error: extra ';' [-Wpedantic]
maybe this should be reported to boost directly.
In the boost unification (#164), we tried as much as possible - aside from the output reshuffling - to keep the build exactly as before. In particular, the build script is taken essentially verbatim from the previous boost-cpp (with the exception of adding the python build to have all the headers at once).
However, during the migration I'm now seeing cases of missing components, e.g. here
-- Could NOT find Boost (missing: system serialization iostreams) (found suitable version "1.82.0", minimum required is "1.58.0")
or here
Could NOT find Boost (missing: thread system date_time chrono) (found suitable version "1.82.0", minimum required is "1.55.0")
These all sound very stdlib-related, so perhaps those feedstocks are defaulting to a too-old C++ version?
Hi maintainers,
I'm running into trouble when compiling something for bioconda which depends on boost 1.57.0. cmake complains boost-filesystem and boost-system are missing.
Since the original outside-conda compile script contains --with-system
and --with-filesystem
passed to bjam (b2), I wondered if it was a good idea to add those to this compile also, or that there may be another package for that.
Boost 1.63.0 introduced new Boost Numpy bindings. There are not built here, I guess because numpy is not found.
What about including numpy as a dependency?
I expected conda to lower the problems with mixing python versions when distribution an application using Boost.Python, but reading e.g. #1 it seems that even here it is always a topic.
In particular I'm trying to make a package which depends on boost-python and I get some weird failure in the tests, as if the python/numpy versions do not match. Is there a way to force the version of python to be the same as the one used for building boost? Or the other way around.
I tried to make a simple test that I pushed as a PR conda-forge/staged-recipes#2056.
Could you please help debugging the simple example?
Thanks!
*I'm not sure if this is strictly related to this feedstock. *
I'm using some header-only math functions from Boost. I can just install libboost-headers
. I still use the Boost::headers
target, such that my library has a find_dependency(Boost REQUIRED)
call. The FindBoost
is I believe provided by CMake and not by this feedstock.
Yet on my Linux machine I keep getting an error
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Boost (missing: Boost_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindBoost.cmake:2344 (find_package_handle_standard_args)
/usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/tdegeus/miniforge3/envs/code_epm_jed/lib/cmake/prrng/prrngConfig.cmake:31 (find_dependency)
CMakeLists.txt:42 (find_package)
Strangely I'm not getting this error in the equivalent CI : https://github.com/tdegeus/GooseEPM/actions/runs/7017121385/job/19089767396
conda list
# packages in environment at /home/tdegeus/miniforge3/envs/code_epm_jed:
#
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 2_gnu conda-forge
alabaster 0.7.13 pyhd8ed1ab_0 conda-forge
autodocsumm 0.2.11 pyhd8ed1ab_0 conda-forge
babel 2.13.1 pyhd8ed1ab_0 conda-forge
brotli 1.1.0 hd590300_1 conda-forge
brotli-bin 1.1.0 hd590300_1 conda-forge
brotli-python 1.1.0 py312h30efb56_1 conda-forge
bzip2 1.0.8 hd590300_5 conda-forge
c-ares 1.22.1 hd590300_0 conda-forge
ca-certificates 2023.11.17 hbcca054_0 conda-forge
cached-property 1.5.2 hd8ed1ab_1 conda-forge
cached_property 1.5.2 pyha770c72_1 conda-forge
certifi 2023.11.17 pyhd8ed1ab_0 conda-forge
cffi 1.16.0 py312hf06ca03_0 conda-forge
cfgv 3.3.1 pyhd8ed1ab_0 conda-forge
charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge
click 8.1.7 unix_pyh707e725_0 conda-forge
cmake 3.27.8 hcfe8598_0 conda-forge
colorama 0.4.6 pyhd8ed1ab_0 conda-forge
conda_envfile 0.4.2 pyhd8ed1ab_0 conda-forge
contourpy 1.2.0 py312h8572e83_0 conda-forge
cycler 0.12.1 pyhd8ed1ab_0 conda-forge
deprecation 2.1.0 pyh9f0ad1d_0 conda-forge
distlib 0.3.7 pyhd8ed1ab_0 conda-forge
distro 1.8.0 pyhd8ed1ab_0 conda-forge
docopt 0.6.2 py_1 conda-forge
docutils 0.17.1 py312h7900ff3_4 conda-forge
doxygen 1.9.8 h661eb56_0 conda-forge
enstat 0.9.7 pyhd8ed1ab_0 conda-forge
filelock 3.13.1 pyhd8ed1ab_0 conda-forge
fonttools 4.45.1 py312h98912ed_0 conda-forge
freetype 2.12.1 h267a509_2 conda-forge
ghostscript 10.02.1 h59595ed_0 conda-forge
goosehdf5 0.26.1 pyhd8ed1ab_0 conda-forge
goosempl 0.14.0 pyhd8ed1ab_0 conda-forge
gooseslurm 0.13.4 pyhd8ed1ab_0 conda-forge
h5glance 0.8.1 pyhd8ed1ab_0 conda-forge
h5py 3.10.0 nompi_py312h819072b_100 conda-forge
hdf5 1.14.2 nompi_h4f84152_100 conda-forge
htmlgen 2.0.0 pyhd8ed1ab_0 conda-forge
identify 2.5.32 pyhd8ed1ab_0 conda-forge
idna 3.6 pyhd8ed1ab_0 conda-forge
imagesize 1.4.1 pyhd8ed1ab_0 conda-forge
importlib-metadata 6.8.0 pyha770c72_0 conda-forge
jinja2 3.1.2 pyhd8ed1ab_1 conda-forge
keyutils 1.6.1 h166bdaf_0 conda-forge
kiwisolver 1.4.5 py312h8572e83_1 conda-forge
krb5 1.21.2 h659d440_0 conda-forge
lcms2 2.15 hb7c19ff_3 conda-forge
ld_impl_linux-64 2.40 h41732ed_0 conda-forge
lerc 4.0.0 h27087fc_0 conda-forge
libaec 1.1.2 h59595ed_1 conda-forge
libblas 3.9.0 20_linux64_openblas conda-forge
libboost-headers 1.83.0 ha770c72_0 conda-forge
libbrotlicommon 1.1.0 hd590300_1 conda-forge
libbrotlidec 1.1.0 hd590300_1 conda-forge
libbrotlienc 1.1.0 hd590300_1 conda-forge
libcblas 3.9.0 20_linux64_openblas conda-forge
libcurl 8.4.0 hca28451_0 conda-forge
libdeflate 1.19 hd590300_0 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libev 4.33 h516909a_1 conda-forge
libexpat 2.5.0 hcb278e6_1 conda-forge
libffi 3.4.2 h7f98852_5 conda-forge
libgcc-ng 13.2.0 h807b86a_3 conda-forge
libgfortran-ng 13.2.0 h69a702a_3 conda-forge
libgfortran5 13.2.0 ha4646dd_3 conda-forge
libgomp 13.2.0 h807b86a_3 conda-forge
libiconv 1.17 h166bdaf_0 conda-forge
libjpeg-turbo 3.0.0 hd590300_1 conda-forge
liblapack 3.9.0 20_linux64_openblas conda-forge
libnghttp2 1.58.0 h47da74e_0 conda-forge
libnsl 2.0.1 hd590300_0 conda-forge
libopenblas 0.3.25 pthreads_h413a1c8_0 conda-forge
libpng 1.6.39 h753d276_0 conda-forge
libsqlite 3.44.2 h2797004_0 conda-forge
libssh2 1.11.0 h0841786_0 conda-forge
libstdcxx-ng 13.2.0 h7e041cc_3 conda-forge
libtiff 4.6.0 ha9c0a0a_2 conda-forge
libuuid 2.38.1 h0b41bf4_0 conda-forge
libuv 1.46.0 hd590300_0 conda-forge
libwebp-base 1.3.2 hd590300_0 conda-forge
libxcb 1.15 h0b41bf4_0 conda-forge
libzlib 1.2.13 hd590300_5 conda-forge
markupsafe 2.1.3 py312h98912ed_1 conda-forge
mathjax 3.2.2 ha770c72_0 conda-forge
matplotlib-base 3.8.2 py312he5832f3_0 conda-forge
munkres 1.1.4 pyh9f0ad1d_0 conda-forge
mv_regex 0.3.0 pyhd8ed1ab_0 conda-forge
mycluster 1.6 pypi_0 pypi
ncurses 6.4 h59595ed_2 conda-forge
ninja 1.11.1 h924138e_0 conda-forge
nodeenv 1.8.0 pyhd8ed1ab_0 conda-forge
numpy 1.26.2 py312heda63a1_0 conda-forge
openjpeg 2.5.0 h488ebb8_3 conda-forge
openssl 3.2.0 hd590300_1 conda-forge
packaging 23.2 pyhd8ed1ab_0 conda-forge
parallel 20231122 ha770c72_0 conda-forge
pdfcombine 1.1.5 pyhd8ed1ab_0 conda-forge
perl 5.32.1 4_hd590300_perl5 conda-forge
pillow 10.1.0 py312hf3581a9_0 conda-forge
pip 23.3.1 pyhd8ed1ab_0 conda-forge
platformdirs 4.0.0 pyhd8ed1ab_0 conda-forge
pre-commit 3.5.0 pyha770c72_0 conda-forge
prettytable 3.9.0 pyhd8ed1ab_0 conda-forge
prrng 1.12.0 h00ab1b0_3 conda-forge
pthread-stubs 0.4 h36c2ea0_1001 conda-forge
pybind11 2.11.1 py312h8572e83_2 conda-forge
pybind11-abi 4 hd8ed1ab_3 conda-forge
pybind11-global 2.11.1 py312h8572e83_2 conda-forge
pycparser 2.21 pyhd8ed1ab_0 conda-forge
pygments 2.17.2 pyhd8ed1ab_0 conda-forge
pyparsing 3.1.1 pyhd8ed1ab_0 conda-forge
pysocks 1.7.1 pyha2e5f31_6 conda-forge
python 3.12.0 hab00c5b_0_cpython conda-forge
python-cppcolormap 1.4.5 py312h5b9907d_1 conda-forge
python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge
python-gooseeye 0.8.0 py312h5b9907d_0 conda-forge
python_abi 3.12 4_cp312 conda-forge
pytz 2023.3.post1 pyhd8ed1ab_0 conda-forge
pyyaml 6.0.1 py312h98912ed_1 conda-forge
readline 8.2 h8228510_1 conda-forge
requests 2.31.0 pyhd8ed1ab_0 conda-forge
rhash 1.4.4 hd590300_0 conda-forge
scikit-build 0.17.6 pyh4af843d_0 conda-forge
scipy 1.11.4 py312heda63a1_0 conda-forge
setuptools 68.2.2 pyhd8ed1ab_0 conda-forge
setuptools-scm 8.0.4 pyhd8ed1ab_0 conda-forge
setuptools_scm 8.0.4 hd8ed1ab_0 conda-forge
shelephant 0.24.0 pyhd8ed1ab_0 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
snowballstemmer 2.2.0 pyhd8ed1ab_0 conda-forge
sphinx 5.0.0 pyh6c4a22f_1 conda-forge
sphinxcontrib-applehelp 1.0.7 pyhd8ed1ab_0 conda-forge
sphinxcontrib-devhelp 1.0.5 pyhd8ed1ab_0 conda-forge
sphinxcontrib-htmlhelp 2.0.4 pyhd8ed1ab_0 conda-forge
sphinxcontrib-jsmath 1.0.1 pyhd8ed1ab_0 conda-forge
sphinxcontrib-qthelp 1.0.6 pyhd8ed1ab_0 conda-forge
sphinxcontrib-serializinghtml 1.1.9 pyhd8ed1ab_0 conda-forge
termcolor 2.3.0 pyhd8ed1ab_0 conda-forge
tk 8.6.13 noxft_h4845f30_101 conda-forge
tomli 2.0.1 pyhd8ed1ab_0 conda-forge
tqdm 4.66.1 pyhd8ed1ab_0 conda-forge
typing-extensions 4.8.0 hd8ed1ab_0 conda-forge
typing_extensions 4.8.0 pyha770c72_0 conda-forge
tzdata 2023c h71feb2d_0 conda-forge
ukkonen 1.0.1 py312h8572e83_4 conda-forge
urllib3 2.1.0 pyhd8ed1ab_0 conda-forge
virtualenv 20.24.7 pyhd8ed1ab_0 conda-forge
wcwidth 0.2.12 pyhd8ed1ab_0 conda-forge
wheel 0.42.0 pyhd8ed1ab_0 conda-forge
xorg-libxau 1.0.11 hd590300_0 conda-forge
xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge
xsimd 10.0.0 h924138e_0 conda-forge
xtensor 0.24.7 h00ab1b0_0 conda-forge
xtensor-python 0.26.1 py312hfb10629_2 conda-forge
xtl 0.7.5 hf52228f_0 conda-forge
xz 5.2.6 h166bdaf_0 conda-forge
yaml 0.2.5 h7f98852_2 conda-forge
zipp 3.17.0 pyhd8ed1ab_0 conda-forge
zstd 1.5.5 hfc55251_0 conda-forge
conda info
active environment : code_epm_jed
active env location : /home/tdegeus/miniforge3/envs/code_epm_jed
shell level : 2
user config file : /home/tdegeus/.condarc
populated config files : /home/tdegeus/miniforge3/.condarc
/home/tdegeus/.condarc
conda version : 23.10.0
conda-build version : not installed
python version : 3.11.6.final.0
virtual packages : __archspec=1=icelake
__glibc=2.28=0
__linux=4.18.0=0
__unix=0=0
base environment : /home/tdegeus/miniforge3 (writable)
conda av data dir : /home/tdegeus/miniforge3/etc/conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/linux-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /home/tdegeus/miniforge3/pkgs
/home/tdegeus/.conda/pkgs
envs directories : /home/tdegeus/miniforge3/envs
/home/tdegeus/.conda/envs
platform : linux-64
user-agent : conda/23.10.0 requests/2.31.0 CPython/3.11.6 Linux/4.18.0-348.23.1.el8_5.x86_64 rhel/8.5 glibc/2.28 solver/libmamba conda-libmamba-solver/23.11.1 libmambapy/1.5.3
UID:GID : 177478:10532
netrc file : None
offline mode : False
I've been pulling my hair out trying to build (Boost 1.82.0 version) boost.python in a conda environment running Python3.11. I've successfully built the boost.python.so libraries, but a subsequent compile of a c++ library using the correct Boost.Python includes and linker (from my Boost.Python build, which I've isolated in a ~/test_dir) results in abstract symbols being populated into the compiled c++ library. The library is completely unuseable. This happens even when compiling the simple "hello world" example directly from the Boost docs.
Today I discovered the conda-forge libraries for installing boost and boost.python into a conda env, but my big question is how do those libraries match up with whatever particular flavor of Python I might be using in that specific conda env? For example, I create a conda env with Python3.11, and want to build boost 1.82.0. What conda-forge files should I install? What if I want to run the Boost Python files in a different env running Python 3.7? Thanks.
Issue:
the boost/python.hpp file is not found when trying to compile
Used this to install boost into active conda env: conda install -c conda-forge boost
Environment (conda list
):
# Name Version Build Channel
absl-py 0.4.0 <pip>
astor 0.7.1 <pip>
bleach 1.5.0 <pip>
boost 1.68.0 py36h3e44d54_0 conda-forge
boost-cpp 1.68.0 h3a22d5f_0 conda-forge
bzip2 1.0.6 1 conda-forge
ca-certificates 2018.8.24 ha4d7672_0 conda-forge
certifi 2018.8.24 py36_1 conda-forge
cycler 0.10.0 <pip>
decorator 4.3.0 <pip>
Deprecated 1.2.1 <pip>
gast 0.2.0 <pip>
graphviz 0.9 <pip>
grpcio 1.14.1 <pip>
h5py 2.8.0 <pip>
html5lib 0.9999999 <pip>
icu 58.2 hfc679d8_0 conda-forge
Keras 2.1.6 <pip>
kiwisolver 1.0.1 <pip>
libcxx 4.0.1 h579ed51_0
libcxxabi 4.0.1 hebd6815_0
libedit 3.1.20170329 hb402a30_2
libffi 3.2.1 h475c297_4
libgfortran 3.0.1 h93005f0_2
libopenblas 0.2.20 hdc02c5d_7
Markdown 2.6.11 <pip>
matplotlib 2.2.3 <pip>
ncurses 6.1 h0a44026_0
networkx 2.1 <pip>
numpy 1.14.3 py36he6379a5_1
numpy 1.15.1 <pip>
numpy-base 1.14.3 py36h7ef55bc_1
opencv-python 3.4.2.17 <pip>
openssl 1.0.2p h470a237_0 conda-forge
Pillow 5.2.0 <pip>
pip 10.0.1 py36_0
protobuf 3.6.1 <pip>
psutil 5.4.7 <pip>
pydot 1.2.4 <pip>
pyparsing 2.2.0 <pip>
python 3.6.6 hc167b69_0
python-dateutil 2.7.3 <pip>
pytz 2018.5 <pip>
PyWavelets 0.5.2 <pip>
PyYAML 3.13 <pip>
readline 7.0 hc1231fa_4
scikit-image 0.13.1 <pip>
scipy 1.1.0 <pip>
setuptools 40.0.0 py36_0
six 1.11.0 <pip>
sqlite 3.24.0 ha441bb4_0
tensorboard 1.8.0 <pip>
tensorflow 1.8.0 <pip>
termcolor 1.1.0 <pip>
tk 8.6.7 h35a86e2_3
Werkzeug 0.14.1 <pip>
wheel 0.31.1 py36_0
wrapt 1.10.11 <pip>
xz 5.2.4 h1de35cc_4
zlib 1.2.11 hf3cbc9b_2
conda
and system ( conda info
):
active environment : tf
active env location : /Users/arjundesai/anaconda3/envs/tf
shell level : 1
user config file : /Users/arjundesai/.condarc
populated config files :
conda version : 4.5.11
conda-build version : 3.10.5
python version : 3.6.5.final.0
base environment : /Users/arjundesai/anaconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/free/osx-64
https://repo.anaconda.com/pkgs/free/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/pro/osx-64
https://repo.anaconda.com/pkgs/pro/noarch
package cache : /Users/arjundesai/anaconda3/pkgs
/Users/arjundesai/.conda/pkgs
envs directories : /Users/arjundesai/anaconda3/envs
/Users/arjundesai/.conda/envs
platform : osx-64
user-agent : conda/4.5.11 requests/2.18.4 CPython/3.6.5 Darwin/17.7.0 OSX/10.13.6
UID:GID : 501:20
netrc file : None
offline mode : False
Issue:
I experienced a segfault for a minimalistic boost-python example in conda environment on macosx.
The given example (see below) was tested on linux, windows and macos, each with and without conda and only the conda version for macos gives a segfault, so I assume its a specific conda related problem on macos.
It would be great if you know a solution or give me some hints to debug this problem.
conda list
):
# packages in environment at /Users/florian/opt/anaconda3/envs/boost:
#
# Name Version Build Channel
boost 1.70.0 py36hbf1eeb5_1 conda-forge
boost-cpp 1.70.0 h75728bb_2 conda-forge
bzip2 1.0.8 h0b31af3_2 conda-forge
ca-certificates 2019.11.28 hecc5488_0 conda-forge
certifi 2019.11.28 py36_0 conda-forge
icu 64.2 h6de7cb9_1 conda-forge
libblas 3.8.0 14_openblas conda-forge
libcblas 3.8.0 14_openblas conda-forge
libcxx 9.0.1 0 conda-forge
libcxxabi 9.0.1 0 conda-forge
libffi 3.2.1 h6de7cb9_1006 conda-forge
libgfortran 4.0.0 2 conda-forge
liblapack 3.8.0 14_openblas conda-forge
libopenblas 0.3.7 h3d69b6c_6 conda-forge
llvm-openmp 9.0.1 h40edb58_0 conda-forge
ncurses 6.1 h0a44026_1002 conda-forge
numpy 1.17.3 py36hde6bac1_0 conda-forge
openssl 1.1.1d h0b31af3_0 conda-forge
pip 19.3.1 py36_0 conda-forge
python 3.6.7 h4285619_1006 conda-forge
readline 8.0 hcfe32e1_0 conda-forge
setuptools 44.0.0 py36_0 conda-forge
sqlite 3.30.1 h93121df_0 conda-forge
tk 8.6.10 hbbe82c9_0 conda-forge
wheel 0.33.6 py36_0 conda-forge
xz 5.2.4 h1de35cc_1001 conda-forge
zlib 1.2.11 h0b31af3_1006 conda-forge
conda
and system ( conda info
):
active environment : boost
active env location : /Users/florian/opt/anaconda3/envs/boost
shell level : 1
user config file : /Users/florian/.condarc
populated config files : /Users/florian/.condarc
conda version : 4.8.0
conda-build version : 3.18.11
python version : 3.6.9.final.0
virtual packages : __osx=10.15.1
base environment : /Users/florian/opt/anaconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /Users/florian/opt/anaconda3/pkgs
/Users/florian/.conda/pkgs
envs directories : /Users/florian/opt/anaconda3/envs
/Users/florian/.conda/envs
platform : osx-64
user-agent : conda/4.8.0 requests/2.22.0 CPython/3.6.9 Darwin/19.0.0 OSX/10.15.1
UID:GID : 501:20
netrc file : None
offline mode : False
The minimalistic cpp example (save as bpt.cpp
):
#include "boost/python.hpp"
double t1(){ return 1.0;}
int t2(){ return 2;}
namespace bp = boost::python;
BOOST_PYTHON_MODULE(_bpt_){
bp::def("t1", t1, ""); // works
bp::def("t2", t2, ""); // will segfault
}
import _bpt_
print(dir(_bpt_)) # shows the bound methods
print(_bpt_.t1()) # expecting 1 , works
print(_bpt_.t2()) # expection 2 , segfault
TARGET=_bpt_
ENV=/Users/florian/opt/anaconda3/envs/boost
PYINC=-I $(ENV)/include/python3.6m/
BPLIB=$(ENV)/lib/libboost_python36.dylib
BPINC=-I $(ENV)/include
PYLIB=$(ENV)/lib/libpython3.6m.dylib
CXX=clang++
AR=clang++ -bundle
default:
$(CXX) -fPIC -c bpt.cpp $(PYINC) $(BPINC)
$(AR) -o $(TARGET).so *.o $(BPLIB) $(PYLIB)
test:
python bpt.py
clean:
rm -f *.o *.so *~
conda create -c conda-forge -n boost boost python=3.6
conda activate boost
make
make test
The binding with the int
return value segfaults, also with long
or size_t
.
double
, float
, std::string
etc. work without problem.
On the same machine everything works as expected with brew install and boost 1.72.
Best regards and thank you,
Carsten
Dear package managers,
As reported in conda-forge/eigenpy-feedstock#100 (comment), we currently have some known issues with boost-python and Python 3.11 regarding the support of enum types reported in this issue boostorg/python#385.
Would it be possible to patch the latest release of boost-python with the fix provided in boostorg/python#385?
Thanks in advance for your help and for your great efforts you put in conda,
Best,
Justin
None
None
After installing all packages, I still cannot find a boost/assert.hpp
in the conda-forge install.
Usually, this file is part of the default boost headers that are installed.
conda list
:
...
boost 1.82.0 h781c19f_6 conda-forge
boost-cpp 1.82.0 h44aadfe_6 conda-forge
libboost 1.82.0 h6fcfa73_6 conda-forge
libboost-devel 1.82.0 h00ab1b0_6 conda-forge
libboost-headers 1.82.0 ha770c72_6 conda-forge
libboost-python 1.82.0 py311h92ebd52_6 conda-forge
libboost-python-devel 1.82.0 py311h781c19f_6 conda-forge
...
### Environment info
`conda info`:
...
environment : warpx-openmp-dev (active)
env location : /home/axel/micromamba/envs/warpx-openmp-dev
user config files : /home/axel/.mambarc
populated config files :
libmamba version : 1.3.1
micromamba version : 1.3.1
curl version : libcurl/7.87.0 OpenSSL/3.0.8 zlib/1.2.13 libssh2/1.10.0 nghttp2/1.47.0
libarchive version : libarchive 3.6.2 zlib/1.2.13 bz2lib/1.0.8 libzstd/1.5.2
virtual packages : __unix=0=0
__linux=6.2.0=0
__glibc=2.35=0
__archspec=1=x86_64
__cuda=12.3=0
channels :
base environment : /home/axel/micromamba
platform : linux-64
I am not too familiar with conda-forge, but I just recently discovered this package and conda-installed it, and noticed that the debug libraries are not included. This is an issue at least on Windows, where it is not recommended - and may not even work - to combine the Boost release libraries with a debug build.
When building Boost, this is controlled by the "variant" option AFAIK, which can be set to either debug or release (or both).
After some searching I realize that this issue may also be relevant for the boost-cpp feedstock.
Issue:
Due to NEP 42 being accepted as being the new datatype system for numpy 1.21, C++ extensions wrapped with Boost.Python will get segmentation faults. There is an issue created upstream by @jawsc-alan (boostorg/python#376). @dwpaley did the work to find the commit where the behavior changed. It is also possible to reproduce the behavior in numpy 1.20 by building with the NPY_USE_NEW_CASTINGIMPL
environment variable.
Most likely, Boost.Python will need to be updated to handle the new datatype system.
PR to enable testing NEP 42 (numpy/numpy#17401)
PR to set NEP 42 as the default (numpy/numpy#18676)
conda list
):
$ conda list
conda
and system ( conda info
):
$ conda info
@conda-forge-admin please rerender
We're looking to use Boost.Python instead of Cython to access some of our existing C++ libraries.
Would it be possible to add Boost.Python into Anaconda's Boost library ?
https://www.boost.org/doc/libs/1_67_0/libs/python/doc/html/index.html
Thank you!
Is there any plan to compile also Boost.MPI?
By taking a quick look at this repository I see that besides checking for existence of files it does not contain any other tests. Is there any make check or similar that can be added here?
After the compiler migration, boost-python
on Mac seems to have a major problem. Under certain common scenarios, the new package segfaults.
Here's a tiny example repo that reproduces the problem:
https://github.com/stuarteberg/testboost
I would appreciate it if someone with a Mac could verify the problem on their own machine.
Have a look at compare.sh
to see what I mean. Basically, if I use:
conda install boost=1.68 -c conda-forge/label/cf201901
...then the module builds correctly and can be used without a segfault. But if I use:
conda install boost=1.68 -c conda-forge
... then the resulting compiled extension can't even be imported without triggering a segfault.
Here's the output from running compare.sh
on my machine. Notice that the "old" build prints "hello world", but the "new" build segfaults.
In this example, I'm using boost=1.68
, but I've tried several other versions (as old as 1.64
), and that doesn't seem to make a difference.
$ ./compare.sh
***********************************************************************
***********************************************************************
Creating old-build environment
***********************************************************************
***********************************************************************
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /miniforge/envs/old-build
added / updated specs:
- boost=1.68
- clangxx_osx-64
- cmake
- python=3.6
The following packages will be downloaded:
package | build
---------------------------|-----------------
libcxx-4.0.1 | h579ed51_0 957 KB conda-forge/label/cf201901
------------------------------------------------------------
Total: 957 KB
The following NEW packages will be INSTALLED:
boost conda-forge/label/cf201901/osx-64::boost-1.68.0-py36h3e44d54_1
boost-cpp conda-forge/label/cf201901/osx-64::boost-cpp-1.68.0-h3a22d5f_0
bzip2 conda-forge/label/cf201901/osx-64::bzip2-1.0.6-1
ca-certificates conda-forge/label/cf201901/osx-64::ca-certificates-2018.11.29-ha4d7672_0
cctools conda-forge/osx-64::cctools-895-h7512d6f_0
certifi conda-forge/label/cf201901/osx-64::certifi-2018.11.29-py36_1000
clang conda-forge/osx-64::clang-4.0.1-h662ec87_0
clang_osx-64 pkgs/main/osx-64::clang_osx-64-4.0.1-h1ce6c1d_11
clangxx pkgs/main/osx-64::clangxx-4.0.1-hc9b4283_0
clangxx_osx-64 pkgs/main/osx-64::clangxx_osx-64-4.0.1-h22b1bf0_11
cmake conda-forge/label/cf201901/osx-64::cmake-3.13.2-h011004d_0
compiler-rt conda-forge/osx-64::compiler-rt-4.0.1-h5487866_0
curl conda-forge/label/cf201901/osx-64::curl-7.63.0-h74213dd_0
expat conda-forge/label/cf201901/osx-64::expat-2.2.5-hfc679d8_2
icu conda-forge/label/cf201901/osx-64::icu-58.2-hfc679d8_0
krb5 conda-forge/label/cf201901/osx-64::krb5-1.16.3-hbb41f41_0
ld64 conda-forge/osx-64::ld64-274.2-h7c2db76_0
libblas conda-forge/osx-64::libblas-3.8.0-6_openblas
libcblas conda-forge/osx-64::libcblas-3.8.0-6_openblas
libcurl conda-forge/label/cf201901/osx-64::libcurl-7.63.0-hbdb9355_0
libcxx conda-forge/label/cf201901/osx-64::libcxx-4.0.1-h579ed51_0
libcxxabi pkgs/main/osx-64::libcxxabi-4.0.1-hebd6815_0
libedit conda-forge/label/cf201901/osx-64::libedit-3.1.20170329-haf1bffa_1
libffi conda-forge/label/cf201901/osx-64::libffi-3.2.1-hfc679d8_5
libgfortran conda-forge/label/cf201901/osx-64::libgfortran-3.0.0-1001
liblapack conda-forge/osx-64::liblapack-3.8.0-6_openblas
libssh2 conda-forge/label/cf201901/osx-64::libssh2-1.8.0-h5b517e9_3
libuv conda-forge/label/cf201901/osx-64::libuv-1.24.0-h470a237_0
llvm conda-forge/osx-64::llvm-4.0.1-hc748206_0
llvm-lto-tapi conda-forge/osx-64::llvm-lto-tapi-4.0.1-h6701bc3_0
ncurses conda-forge/label/cf201901/osx-64::ncurses-6.1-hfc679d8_2
numpy conda-forge/osx-64::numpy-1.16.3-py36hdf140aa_0
openblas conda-forge/label/cf201901/osx-64::openblas-0.3.5-ha44fe06_0
openssl conda-forge/label/cf201901/osx-64::openssl-1.0.2p-h470a237_2
pip conda-forge/label/cf201901/osx-64::pip-18.1-py36_1000
python conda-forge/label/cf201901/osx-64::python-3.6.7-h5001a0f_1
readline conda-forge/label/cf201901/osx-64::readline-7.0-haf1bffa_1
rhash conda-forge/label/cf201901/osx-64::rhash-1.3.6-h470a237_1
setuptools conda-forge/label/cf201901/osx-64::setuptools-40.6.3-py36_0
sqlite conda-forge/label/cf201901/osx-64::sqlite-3.26.0-hb1c47c0_0
tk conda-forge/label/cf201901/osx-64::tk-8.6.9-ha92aebf_0
wheel conda-forge/label/cf201901/osx-64::wheel-0.32.3-py36_0
xz conda-forge/label/cf201901/osx-64::xz-5.2.4-h470a237_1
zlib conda-forge/label/cf201901/osx-64::zlib-1.2.11-h470a237_4
Downloading and Extracting Packages
libcxx-4.0.1 | 957 KB | ####################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate old-build
#
# To deactivate an active environment, use
#
# $ conda deactivate
Building with OLD packages
mkdir: build-old: File exists
Using /miniforge/envs/old-build/bin/python
Using /miniforge/envs/old-build/lib/libpython3.6m.dylib
-- Boost version: 1.68.0
-- Found boost_python library: /miniforge/envs/old-build/lib/libboost_python36.dylib
-- Configuring done
-- Generating done
-- Build files have been written to: /magnetic/workspace/testboost/build-old
[ 50%] Linking CXX shared library testboost.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[100%] Built target testboost
Testing with OLD packages
hello, world
0
***********************************************************************
***********************************************************************
Creating new-build environment
***********************************************************************
***********************************************************************
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /miniforge/envs/new-build
added / updated specs:
- boost=1.68
- clangxx_osx-64
- cmake
- python=3.6
The following packages will be downloaded:
package | build
---------------------------|-----------------
libcxx-4.0.1 | h579ed51_0 957 KB
------------------------------------------------------------
Total: 957 KB
The following NEW packages will be INSTALLED:
boost conda-forge/osx-64::boost-1.68.0-py36h9888f84_1001
boost-cpp conda-forge/osx-64::boost-cpp-1.68.0-h6f8c590_1000
bzip2 conda-forge/osx-64::bzip2-1.0.6-h1de35cc_1002
ca-certificates conda-forge/osx-64::ca-certificates-2019.3.9-hecc5488_0
cctools conda-forge/osx-64::cctools-895-h7512d6f_0
certifi conda-forge/osx-64::certifi-2019.3.9-py36_0
clang conda-forge/osx-64::clang-4.0.1-h662ec87_0
clang_osx-64 pkgs/main/osx-64::clang_osx-64-4.0.1-h1ce6c1d_11
clangxx pkgs/main/osx-64::clangxx-4.0.1-hc9b4283_0
clangxx_osx-64 pkgs/main/osx-64::clangxx_osx-64-4.0.1-h22b1bf0_11
cmake conda-forge/osx-64::cmake-3.14.3-hdd2e4aa_0
compiler-rt conda-forge/osx-64::compiler-rt-4.0.1-h5487866_0
curl conda-forge/osx-64::curl-7.64.1-h22ea746_0
expat conda-forge/osx-64::expat-2.2.5-h0a44026_1002
icu conda-forge/osx-64::icu-58.2-h0a44026_1000
krb5 conda-forge/osx-64::krb5-1.16.3-hcfa6398_1001
ld64 conda-forge/osx-64::ld64-274.2-h7c2db76_0
libblas conda-forge/osx-64::libblas-3.8.0-6_openblas
libcblas conda-forge/osx-64::libcblas-3.8.0-6_openblas
libcurl conda-forge/osx-64::libcurl-7.64.1-h16faf7d_0
libcxx pkgs/main/osx-64::libcxx-4.0.1-h579ed51_0
libcxxabi pkgs/main/osx-64::libcxxabi-4.0.1-hebd6815_0
libedit conda-forge/osx-64::libedit-3.1.20170329-hcfe32e1_1001
libffi conda-forge/osx-64::libffi-3.2.1-h6de7cb9_1006
libgfortran conda-forge/osx-64::libgfortran-3.0.1-0
liblapack conda-forge/osx-64::liblapack-3.8.0-6_openblas
libssh2 conda-forge/osx-64::libssh2-1.8.2-hcdc9a53_2
libuv conda-forge/osx-64::libuv-1.28.0-h01d97ff_0
llvm conda-forge/osx-64::llvm-4.0.1-hc748206_0
llvm-lto-tapi conda-forge/osx-64::llvm-lto-tapi-4.0.1-h6701bc3_0
ncurses conda-forge/osx-64::ncurses-6.1-h0a44026_1002
numpy conda-forge/osx-64::numpy-1.16.3-py36hdf140aa_0
openblas conda-forge/osx-64::openblas-0.3.5-h436c29b_1001
openssl conda-forge/osx-64::openssl-1.1.1b-h01d97ff_2
pip conda-forge/osx-64::pip-19.1-py36_0
python conda-forge/osx-64::python-3.6.7-h8dc6b48_1004
readline conda-forge/osx-64::readline-7.0-hcfe32e1_1001
rhash conda-forge/osx-64::rhash-1.3.6-h1de35cc_1001
setuptools conda-forge/osx-64::setuptools-41.0.1-py36_0
sqlite conda-forge/osx-64::sqlite-3.26.0-h1765d9f_1001
tk conda-forge/osx-64::tk-8.6.9-ha441bb4_1001
wheel conda-forge/osx-64::wheel-0.33.1-py36_0
xz conda-forge/osx-64::xz-5.2.4-h1de35cc_1001
zlib conda-forge/osx-64::zlib-1.2.11-h1de35cc_1004
Downloading and Extracting Packages
libcxx-4.0.1 | 957 KB | ####################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate new-build
#
# To deactivate an active environment, use
#
# $ conda deactivate
Building with NEW packages
mkdir: build-new: File exists
Using /miniforge/envs/new-build/bin/python
Using /miniforge/envs/new-build/lib/libpython3.6m.a
-- Boost version: 1.68.0
-- Found boost_python library: /miniforge/envs/new-build/lib/libboost_python36.dylib
-- Configuring done
-- Generating done
-- Build files have been written to: /magnetic/workspace/testboost/build-new
[100%] Built target testboost
Testing with NEW packages
./compare.sh: line 52: 70156 Segmentation fault: 11 PYTHONPATH=. python -c 'from testboost import greet; print(greet())'
139
conda list -n base
):
$ conda --version
conda 4.6.14
$ conda list
# packages in environment at /miniforge:
#
# Name Version Build Channel
anaconda-client 1.7.2 py36_0
apipkg 1.4 pypi_0 pypi
argcomplete 1.8.2 py36_0 conda-forge
arrow 0.10.0 pypi_0 pypi
asn1crypto 0.24.0 py36_0
beautifulsoup4 4.5.3 py36_0 conda-forge
binaryornot 0.4.4 pypi_0 pypi
blinker 1.4 py_1 conda-forge
bzip2 1.0.6 1 conda-forge
ca-certificates 2019.3.9 hecc5488_0 conda-forge
certifi 2019.3.9 py36_0 conda-forge
cffi 1.9.1 py36_0
chardet 3.0.4 pypi_0 pypi
click 6.7 pypi_0 pypi
clyent 1.2.2 py36_1
conda 4.6.14 py36_0 conda-forge
conda-build 3.17.8 py36_1 conda-forge
conda-build-all 1.1.1 py_2 conda-forge
conda-env 2.6.0 h36134e3_0
conda-forge-pinning 2019.04.18 0 conda-forge
conda-smithy 3.3.3 py_0 conda-forge
conda-verify 3.1.0 py36_0
cryptography 2.6.1 py36h212c5bf_0 conda-forge
cryptography-vectors 2.3.1 py36_1000 conda-forge/label/cf201901
curl 7.64.1 h22ea746_0 conda-forge
decorator 4.3.0 py_0 conda-forge
dvid-resource-manager 0.1.post3 0_g3fbdf5d flyem-forge
execnet 1.5.0 pypi_0 pypi
expat 2.2.5 hfc679d8_2 conda-forge
filelock 2.0.6 py36_0 conda-forge
flake8 3.3.0 py36_0 conda-forge
flake8-import-order 0.12 py36_0 conda-forge
future 0.16.0 pypi_0 pypi
gettext 0.19.8.1 h46ab8bc_1002 conda-forge
git 2.21.0 pl526h3e3e3d1_0 conda-forge
gitdb 0.6.4 py36_1 conda-forge
gitpython 2.1.1 py36_0 conda-forge
glob2 0.6 py_0 conda-forge
icu 58.2 h4b95b61_1
idna 2.8 py36_0
ipython_genutils 0.2.0 py36_0 conda-forge
isodate 0.6.0 py_1 conda-forge
jinja2 2.9.5 py36_0 conda-forge
jinja2-time 0.2.0 pypi_0 pypi
jsonschema 2.6.0 py36_1 conda-forge
jupyter_core 4.4.0 py_0 conda-forge
krb5 1.16.3 hcfa6398_1001 conda-forge
libarchive 3.3.3 h786848e_5
libcurl 7.64.1 h16faf7d_0 conda-forge
libcxx 7.0.0 h2d50403_2 conda-forge
libedit 3.1.20170329 hcfe32e1_1001 conda-forge
libffi 3.2.1 hfc679d8_5 conda-forge
libiconv 1.15 h470a237_3 conda-forge
liblief 0.9.0 h2a1bed3_0
libsodium 1.0.10 0 conda-forge
libssh2 1.8.2 hcdc9a53_2 conda-forge
libxml2 2.9.9 hab757c2_0
llvm-meta 7.0.0 0 conda-forge
lz4-c 1.8.1.2 h1de35cc_0
lzo 2.10 h362108e_2
markupsafe 0.23 py36_1 conda-forge
mccabe 0.6.1 py36_0 conda-forge
mock 2.0.0 py36_0 conda-forge
mocker 1.1.1 pypi_0 pypi
msrest 0.6.6 py_0 conda-forge
nbformat 4.4.0 py36_0 conda-forge
ncurses 6.1 hfc679d8_1 conda-forge
oauthlib 3.0.1 py_0 conda-forge
openssl 1.1.1b h01d97ff_2 conda-forge
pbr 3.1.1 py36_0 conda-forge
pep8-naming 0.4.1 py36_0 conda-forge
perl 5.26.2 haec8ef5_1006 conda-forge
pip 9.0.1 py36_1
pkginfo 1.2.1 py36_0 conda-forge
poyo 0.4.1 pypi_0 pypi
psutil 5.4.5 py36_0 conda-forge
publish-conda-stack 0.2.3.dev18 dev_0 <develop>
py 1.4.34 py36_0
py-lief 0.9.0 py36hd4eaf27_0
pyasn1 0.1.9 py36_0
pycodestyle 2.3.1 py36_0 conda-forge
pycosat 0.6.3 py36hee92d8f_0
pycparser 2.17 py36_0
pycrypto 2.6.1 py36_4
pyflakes 1.5.0 py36_0 conda-forge
pygithub 1.34 py36_0 conda-forge
pyjwt 1.5.2 py36_0 conda-forge
pyopenssl 16.2.0 py36_0
pysocks 1.6.8 py36_0
pytest 3.2.3 py36_0 conda-forge
pytest-forked 0.2 pypi_0 pypi
pytest-xdist 1.20.1 pypi_0 pypi
python 3.6.7 h8dc6b48_1004 conda-forge
python-dateutil 2.8.0 pypi_0 pypi
python-libarchive-c 2.8 py36_1004 conda-forge
pytz 2017.2 py36_0 conda-forge
pyyaml 3.12 py36_1 conda-forge
pyzmq 16.0.2 py36_2 conda-forge
readline 7.0 haf1bffa_1 conda-forge
requests 2.21.0 py36_0
requests-oauthlib 1.2.0 py_0 conda-forge
ruamel.yaml 0.15.18 py36_0 conda-forge
ruamel_yaml 0.11.14 py36_1
setuptools 38.4.0 py36_0
six 1.10.0 py36_0
smmap 2.0.1 py36_0 conda-forge
sqlite 3.26.0 h1765d9f_1001 conda-forge
tk 8.6.9 ha92aebf_0 conda-forge/label/cf201901
tqdm 4.25.0 py_0 conda-forge
traitlets 4.3.2 py36_0 conda-forge
urllib3 1.24.1 py36_0
vsts-python-api 0.1.22 py_0 conda-forge
wheel 0.29.0 py36_0
whichcraft 0.4.1 pypi_0 pypi
xz 5.2.4 h470a237_1 conda-forge
yaml 0.1.6 0
zeromq 4.2.1 1 conda-forge
zlib 1.2.11 h470a237_3 conda-forge
zstd 1.3.7 h5bba6e5_0
conda
and system ( conda info
):
$ conda info
active environment : base
active env location : /miniforge
shell level : 4
user config file : /Users/bergs/.condarc
populated config files : /miniforge/.condarc
conda version : 4.6.14
conda-build version : 3.17.8
python version : 3.6.7.final.0
base environment : /miniforge (writable)
channel URLs : https://conda.anaconda.org/flyem-forge/label/upgrade201904/osx-64
https://conda.anaconda.org/flyem-forge/label/upgrade201904/noarch
https://conda.anaconda.org/conda-forge/osx-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/free/osx-64
https://repo.anaconda.com/pkgs/free/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /miniforge/pkgs
/Users/bergs/.conda/pkgs
envs directories : /miniforge/envs
/Users/bergs/.conda/envs
platform : osx-64
user-agent : conda/4.6.14 requests/2.21.0 CPython/3.6.7 Darwin/16.7.0 OSX/10.12.6
UID:GID : 1633079952:1899195968
netrc file : None
offline mode : False
I am creating a new build for pixsfm (I am not the maintainer), that needs to run with pycolmap 0.4.0
and ceres-solver 2.1.0
, due to the issues listed in conda-forge/pixsfm-feedstock#17. In short: the package does not work with pycolmap >= 0.5.0
and ceres-solver >= 2.2.0
.
The package does not really need libboost
for building or host, but it requires boost-cpp=1.78
to be linked in as running dependency, because pycolmap 0.4.0
, so I need to add it in deps.run. That way, it compiles and finishes correctly with ./build-locally.py
.
However, when building in the CI pipeline, boost-cpp
seems to be superseeded. The message from conda-forge-webservices says:
The boost-cpp output has been superseded by libboost-devel (as of 1.82), which now comes with a run-export (on libboost) as well. In case you only needed the boost headers, you should use libboost-headers.
I understand this is due to a recent consolidation of boost. However, in the CI, the building process seems to fail because it tries to install versions of pycolmap
that run on libboost >=1.82.0,<1.83.0a0
, so I get the error:
- package pycolmap-0.4.0-cuda112py310h2ee5878_5 requires ceres-solver >=2.2.0,<2.3.0a0, but none of the providers can be installed
More details in the PR.
This is telling me that my specification of boost-cpp =1.78=*
is being ignored, and libboost
only has versions from 1.82
onwards.
How can I solve this?
Because boost is build with c++17 all dependencies of boost (especially if build against boost.system) must use c++17 too. I guess boost should be more compatible if build with -std=c++14 (But I am not sure)
Maybe it is possible to build with -std=c++14?
So, I recently hit a painful problem and am now seriously considering following Homebrew's path of breaking Boost into a non-Python package and having a Boost.Python package for just that part. The reason I am thinking about doing this is that it is causing me trouble when I build with SCons and require Boost. The net effect I fear is we have some package that becomes pinned in some artificial manner against Python 2.x when it has no Python dependency outside of Boost.
In particular, I am working on a build of MongoDB. See this PR ( conda-forge/staged-recipes#392 ). I would be very curious to here others' thoughts about this proposal and if they have any other ideas about how to proceed.
The boost headers are about 169 MB extracted. Seems a little silly to have them installed. That said, I understand that this kind of optimization is not something that was in the ethos of conda.
I just wanted to flag this.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.