...
 
Commits (15)
before_script:
- source /opt/conda/bin/activate
build:
.build-conda: &build-conda
stage: build
script:
- cd $CI_COMMIT_REF_NAME
- conda build . --prefix-length=80 --output-folder=../dist/ --python=2.7 --channel=file://conda
# - conda build . --prefix-length=80 --output-folder=../dist/ --python=3.6 --channel=file://conda
- conda build -c conda-forge -c http://bcu-ci.esrf.fr/stable --prefix-length=80 --output-folder=dist boost
artifacts:
paths:
- dist/
except:
- master
tags:
- conda
build-linux:
<<: *build-conda
tags:
- linux
build-win:
<<: *build-conda
tags:
- win
deploy:
stage: deploy
dependencies:
- build
- build-linux
- build-win
script:
- mv -f dist/linux-64/*.tar.bz2 /conda/linux-64/
- conda index /conda/linux-64/
- cp -Rf dist/* /conda/
- conda index /conda/
except:
- master
tags:
- conda
- linux
:: Start with bootstrap
call bootstrap.bat
if errorlevel 1 exit 1
:: Add "using mpi ;" to project config
echo &echo. >> %SRC_DIR%\project-config.jam
echo import os ; >> %SRC_DIR%\project-config.jam
echo local LIBRARY_INC = [ os.environ LIBRARY_INC ] ; >> %SRC_DIR%\project-config.jam
echo local LIBRARY_LIB = [ os.environ LIBRARY_LIB ] ; >> %SRC_DIR%\project-config.jam
echo using mpi : : >> %SRC_DIR%\project-config.jam
echo ^<include^>$(LIBRARY_INC) >> %SRC_DIR%\project-config.jam
echo ^<library-path^>$(LIBRARY_LIB) >> %SRC_DIR%\project-config.jam
echo ^<find-shared-library^>msmpi >> %SRC_DIR%\project-config.jam
echo ; >> %SRC_DIR%\project-config.jam
:: Build step
.\b2 install ^
--build-dir=buildboost ^
--prefix=%LIBRARY_PREFIX% ^
toolset=msvc-14.2 ^
address-model=%ARCH% ^
variant=debug,release ^
threading=multi ^
link=static ^
-j%CPU_COUNT% ^
--with-mpi ^
--with-program_options ^
--with-log ^
--with-test ^
--with-filesystem ^
--with-graph ^
--with-system
if errorlevel 1 exit 1
diff --git a/tools/build/src/tools/common.jam b/tools/build/src/tools/common.jam
index 109ba855..972362ef 100644
--- a/tools/build/src/tools/common.jam
+++ b/tools/build/src/tools/common.jam
@@ -970,7 +970,7 @@ local rule toolset-tag ( name : type ? : property-set )
}
# From GCC 5, versioning changes and minor becomes patch
- if $(tag) = gcc && [ numbers.less 4 $(version[1]) ]
+ if $(tag) = gcc
{
version = $(version[1]) ;
}
#!/bin/bash
# Hints:
# http://boost.2283326.n4.nabble.com/how-to-build-boost-with-bzip2-in-non-standard-location-td2661155.html
# http://www.gentoo.org/proj/en/base/amd64/howtos/?part=1&chap=3
# http://www.boost.org/doc/libs/1_55_0/doc/html/bbv2/reference.html
# Hints for OSX:
# http://stackoverflow.com/questions/20108407/how-do-i-compile-boost-for-os-x-64b-platforms-with-stdlibc
set -x -e
INCLUDE_PATH="${PREFIX}/include"
LIBRARY_PATH="${PREFIX}/lib"
# Always build PIC code for enable static linking into other shared libraries
CXXFLAGS="${CXXFLAGS} -fPIC"
if [ "$(uname)" == "Darwin" ]; then
TOOLSET=clang
elif [ "$(uname)" == "Linux" ]; then
TOOLSET=gcc
fi
# http://www.boost.org/build/doc/html/bbv2/tasks/crosscompile.html
cat <<EOF > ${SRC_DIR}/tools/build/src/site-config.jam
using ${TOOLSET} : custom : ${CXX} ;
using mpi ;
EOF
LINKFLAGS="${LINKFLAGS} -L${LIBRARY_PATH}"
./bootstrap.sh \
--prefix="${PREFIX}" \
--without-libraries=python \
--with-toolset=cc \
--with-icu="${PREFIX}" \
| tee bootstrap.log 2>&1
# https://svn.boost.org/trac10/ticket/5917
# https://stackoverflow.com/a/5244844/1005215
sed -i.bak "s,cc,${TOOLSET},g" ${SRC_DIR}/project-config.jam
./b2 -q \
variant=release \
address-model="${ARCH}" \
architecture=x86 \
debug-symbols=off \
threading=multi \
runtime-link=shared \
link=static,shared \
toolset=${TOOLSET}-custom \
include="${INCLUDE_PATH}" \
cxxflags="${CXXFLAGS}" \
linkflags="${LINKFLAGS}" \
-j"${CPU_COUNT}" \
--with-mpi \
--with-program_options \
--with-log \
--with-test \
--with-filesystem \
--with-graph \
--with-system \
install | sed -e "s|${PREFIX}|<PREFIX>|g" | tee b2.log 2>&1
c_compiler:
- vs2019 # [win]
cxx_compiler:
- vs2019 # [win]
# This differs from target_platform in that it determines what subdir the compiler
# will target, not what subdir the compiler package will be itself.
# For example, we need a win-64 vs2008_win-32 package, so that we compile win-32
# code on win-64 miniconda.
cross_compiler_target_platform:
- win-64 # [win]
target_platform:
- win-64 # [win]
vc:
- 14
zip_keys:
- # [win]
- vc # [win]
- c_compiler # [win]
- cxx_compiler # [win]
This diff is collapsed.
{% set version = "1.70.0" %}
{% set filename = "boost_%s.tar.bz2" % version.replace(".", "_") %}
package:
name: boost-cpp
version: {{ version }}
source:
url: https://dl.bintray.com/boostorg/release/{{ version }}/source/{{ filename }}
sha256: 430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
patches:
- build.patch
- hana.patch
- mpi.patch
- serialization.patch
build:
number: 4
requirements:
build:
- git
- {{ compiler('cxx') }}
host:
- msmpi # [win]
- mpich # [unix]
run:
- msmpi # [win]
- mpich # [unix]
# test:
# commands:
# # Verify Python headers are removed.
# - "! test -f $PREFIX/include/boost/python.hpp" # [unix]
# - "! test -d $PREFIX/include/boost/python" # [unix]
# - if exist %PREFIX%\\Library\\include\\boost\\python.hpp exit 1 # [win]
# - if exist %PREFIX%\\Library\\include\\boost\\python exit 1 # [win]
#
# # Verify static-only libraries.
# - test -f $PREFIX/lib/libboost_exception.a # [unix]
# - test -f $PREFIX/lib/libboost_test_exec_monitor.a # [unix]
#
# # Verify libraries.
# {% set boost_libs = [
# "atomic",
# "chrono",
# "container",
# "context",
# "contract",
# "coroutine",
# "date_time",
# "filesystem",
# "graph",
# "iostreams",
# "locale",
# "log",
# "log_setup",
# "math_c99",
# "math_c99f",
# "math_c99l",
# "math_tr1",
# "math_tr1f",
# "math_tr1l",
# "prg_exec_monitor",
# "program_options",
# "random",
# "regex",
# "serialization",
# "system",
# "thread",
# "timer",
# "type_erasure",
# "unit_test_framework",
# "wserialization"
# ] %}
# {% for each_boost_lib in boost_libs %}
# - test -f $PREFIX/lib/libboost_{{ each_boost_lib }}.a # [unix]
# - test -f $PREFIX/lib/libboost_{{ each_boost_lib }}.dylib # [osx]
# - test -f $PREFIX/lib/libboost_{{ each_boost_lib }}.so # [linux]
# - if not exist %PREFIX%\\Library\\bin\\boost_{{ each_boost_lib }}.dll exit 1 # [win]
# - if not exist %PREFIX%\\Library\\lib\\boost_{{ each_boost_lib }}.lib exit 1 # [win]
# - if not exist %PREFIX%\\Library\\lib\\libboost_{{ each_boost_lib }}.lib exit 1 # [win]
# {% endfor %}
# - conda inspect linkages -p $PREFIX $PKG_NAME # [not win]
# - conda inspect objects -p $PREFIX $PKG_NAME # [osx]
about:
home: http://www.boost.org/
license: Boost-1.0
license_file: LICENSE_1_0.txt
summary: Free peer-reviewed portable C++ source libraries.
diff --git a/boost/mpi/communicator.hpp b/boost/mpi/communicator.hpp
index 6e55b16..5bcd985 100644
--- a/boost/mpi/communicator.hpp
+++ b/boost/mpi/communicator.hpp
@@ -1760,6 +1760,8 @@ request::handle_serialized_irecv(request* self, request_action action)
// Wait for the count message to complete
BOOST_MPI_CHECK_RESULT(MPI_Wait,
(self->m_requests, &stat.m_status));
+ if (stat.cancelled())
+ return stat;
// Resize our buffer and get ready to receive its data
data->ia.resize(data->count);
BOOST_MPI_CHECK_RESULT(MPI_Irecv,
@@ -1772,6 +1774,8 @@ request::handle_serialized_irecv(request* self, request_action action)
BOOST_MPI_CHECK_RESULT(MPI_Wait,
(self->m_requests + 1, &stat.m_status));
+ if (stat.cancelled())
+ return stat;
data->deserialize(stat);
return stat;
} else if (action == ra_test) {
@@ -1783,6 +1787,9 @@ request::handle_serialized_irecv(request* self, request_action action)
BOOST_MPI_CHECK_RESULT(MPI_Test,
(self->m_requests, &flag, &stat.m_status));
if (flag) {
+ if (stat.cancelled())
+ return stat;
+
// Resize our buffer and get ready to receive its data
data->ia.resize(data->count);
BOOST_MPI_CHECK_RESULT(MPI_Irecv,
@@ -1797,11 +1804,22 @@ request::handle_serialized_irecv(request* self, request_action action)
BOOST_MPI_CHECK_RESULT(MPI_Test,
(self->m_requests + 1, &flag, &stat.m_status));
if (flag) {
+ if (stat.cancelled())
+ return stat;
data->deserialize(stat);
return stat;
} else
return optional<status>();
- } else {
+ }
+ else if (action == ra_cancel) {
+ status stat;
+ if (self->m_requests[0] != MPI_REQUEST_NULL)
+ BOOST_MPI_CHECK_RESULT(MPI_Cancel, (&self->m_requests[0]));
+ if (self->m_requests[1] != MPI_REQUEST_NULL)
+ BOOST_MPI_CHECK_RESULT(MPI_Cancel, (&self->m_requests[0]));
+ return optional<status>();
+ }
+ else {
return optional<status>();
}
}
This diff is collapsed.