Update dev-libs/boost to 1.62.

Boost version 1.62 can be built with clang.

BUG=chromium:706925
TEST=Builds on caroline,kevin,daisy.
TEST=cbuildbot --latest-toolchain --hwtest {daisy,kevin,caroline}-release works.

CQ-DEPEND=CL:457640

Change-Id: Icc740f33d8ec7a884ef8a6380f21b01386a06cee
Reviewed-on: https://chromium-review.googlesource.com/457657
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
index 07a2d76..fdad401 100644
--- a/dev-libs/boost/Manifest
+++ b/dev-libs/boost/Manifest
@@ -1 +1 @@
-DIST boost_1_55_0.tar.bz2 58146647 SHA256 fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 SHA512 dc606477f4c303e8f40de2586c16394b6d758e198b35bf3a7d3e576a2f49171aadc4f95e8d685fa731bc4e61e19869d5a24e1e816febfca9de078d66e096e041 WHIRLPOOL 6ae111d6a956651bd91914432b743faffeb466703191b05193db47f02fd3528a14ce200f26c1ab77bf2c68994eb5b135b0176f66a746964d334b4793ba113ad5
+DIST boost_1_62_0.tar.bz2 84529021 SHA256 3b9df59619e07cf53e041c27efff7d9aeab7628e5d6867f4754eefb2b7b99dbb SHA512 8b7ec068cfd13e513c339f59440ff966d4e669beb82b6793937b5285f96bd515624444e718f5e70206a7cbec5e58ec9a3067700fd825c7ed95eedf9989fbede3 WHIRLPOOL 6b93771c66c9259af5fc2e3e2f2b3996cb6756edf70ec8a72d7ddf3b97291522b8fae3e201c984e54a245ab505a17e541a42de6bfefe5d8b4bf972a6038f8a9d
diff --git a/dev-libs/boost/boost-1.55.0-r2.ebuild b/dev-libs/boost/boost-1.62.0-r1.ebuild
similarity index 61%
rename from dev-libs/boost/boost-1.55.0-r2.ebuild
rename to dev-libs/boost/boost-1.62.0-r1.ebuild
index 4bdfbf2..7cc131f 100644
--- a/dev-libs/boost/boost-1.55.0-r2.ebuild
+++ b/dev-libs/boost/boost-1.62.0-r1.ebuild
@@ -1,18 +1,17 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/boost-1.55.0-r2.ebuild,v 1.15 2015/04/16 12:55:41 zlogene Exp $
 
-EAPI="5"
-PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+EAPI=5
+PYTHON_COMPAT=( python{2_7,3_4,3_5} )
 
-inherit eutils flag-o-matic multilib multiprocessing python-r1 toolchain-funcs versionator multilib-minimal
+inherit eutils flag-o-matic multiprocessing python-r1 toolchain-funcs versionator multilib-minimal
 
 MY_P="${PN}_$(replace_all_version_separators _)"
 MAJOR_V="$(get_version_component_range 1-2)"
 
 DESCRIPTION="Boost Libraries for C++"
 HOMEPAGE="http://www.boost.org/"
-SRC_URI="mirror://sourceforge/boost/${MY_P}.tar.bz2"
+SRC_URI="https://downloads.sourceforge.net/project/boost/${PN}/${PV}/${MY_P}.tar.bz2"
 
 LICENSE="Boost-1.0"
 SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
@@ -20,10 +19,9 @@
 
 IUSE="context debug doc icu +nls mpi python static-libs +threads tools"
 
-RDEPEND="abi_x86_32? ( !app-emulation/emul-linux-x86-cpplibs[-abi_x86_32(-)] )
-	icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
+RDEPEND="icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
 	!icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
-	mpi? ( virtual/mpi[cxx,threads] )
+	mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
 	python? ( ${PYTHON_DEPS} )
 	app-arch/bzip2[${MULTILIB_USEDEP}]
 	sys-libs/zlib[${MULTILIB_USEDEP}]
@@ -43,6 +41,17 @@
 # there is no point in having them in the ebuild to begin with.
 RESTRICT="test"
 
+PATCHES=(
+	"${FILESDIR}/${PN}-1.51.0-respect_python-buildid.patch"
+	"${FILESDIR}/${PN}-1.51.0-support_dots_in_python-buildid.patch"
+	"${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch"
+	"${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch"
+	"${FILESDIR}/${PN}-1.48.0-python_linking.patch"
+	"${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch"
+	"${FILESDIR}/${PN}-1.55.0-context-x32.patch"
+	"${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch"
+)
+
 python_bindings_needed() {
 	multilib_is_native_abi && use python
 }
@@ -51,11 +60,6 @@
 	multilib_is_native_abi && use tools
 }
 
-# MPI stuff is not ported on multilib yet, disabling it for non-native ABIs
-mpi_needed() {
-	multilib_is_native_abi && use mpi
-}
-
 create_user-config.jam() {
 	local compiler compiler_version compiler_executable
 
@@ -70,15 +74,28 @@
 	fi
 	local mpi_configuration python_configuration
 
-	if mpi_needed; then
+	if use mpi; then
 		mpi_configuration="using mpi ;"
 	fi
 
 	if python_bindings_needed; then
-		python_configuration="using python : : ${PYTHON} ;"
+		# boost expects libpython$(pyver) and doesn't allow overrides
+		# and the build system is so creepy that it's easier just to
+		# provide a symlink (linker's going to use SONAME anyway)
+		# TODO: replace it with proper override one day
+		ln -f -s "$(python_get_library_path)" "${T}/lib${EPYTHON}$(get_libname)" || die
+
+		if tc-is-cross-compiler; then
+			python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;"
+		else
+			# note: we need to provide version explicitly because of
+			# a bug in the build system:
+			# https://github.com/boostorg/build/pull/104
+			python_configuration="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) : ${T} ;"
+		fi
 	fi
 
-	cat > "${BOOST_ROOT}/user-config.jam" << __EOF__
+	cat > "${BOOST_ROOT}/user-config.jam" << __EOF__ || die
 using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
 ${mpi_configuration}
 ${python_configuration}
@@ -87,45 +104,46 @@
 
 pkg_setup() {
 	# Bail out on unsupported build configuration, bug #456792
-	if [[ -f "${EROOT}etc/site-config.jam" ]]; then
-		grep -q gentoorelease "${EROOT}etc/site-config.jam" && grep -q gentoodebug "${EROOT}etc/site-config.jam" ||
+	if [[ -f "${EROOT%/}/etc/site-config.jam" ]]; then
+		grep -q gentoorelease "${EROOT%/}/etc/site-config.jam" && grep -q gentoodebug "${EROOT%/}/etc/site-config.jam" ||
 		(
-			eerror "You are using custom ${EROOT}etc/site-config.jam without defined gentoorelease/gentoodebug targets."
+			eerror "You are using custom ${EROOT%/}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
 			eerror "Boost can not be built in such configuration."
-			eerror "Please, either remove this file or add targets from ${EROOT}usr/share/boost-build/site-config.jam to it."
+			eerror "Please, either remove this file or add targets from ${EROOT%/}/usr/share/boost-build/site-config.jam to it."
 			die
 		)
 	fi
 }
 
 src_prepare() {
-	epatch \
-		"${FILESDIR}/${PN}-1.51.0-respect_python-buildid.patch" \
-		"${FILESDIR}/${PN}-1.51.0-support_dots_in_python-buildid.patch" \
-		"${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch" \
-		"${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch" \
-		"${FILESDIR}/${PN}-1.48.0-python_linking.patch" \
-		"${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch" \
-		"${FILESDIR}/${PN}-1.55.0-context-x32.patch" \
-		"${FILESDIR}/${PN}-1.55.0-tools-c98-compat.patch" \
-		"${FILESDIR}/${PN}-1.52.0-threads.patch"
+	epatch "${PATCHES[@]}"
 
-	epatch_user
+	# Do not try to build missing 'wave' tool, bug #522682
+	# Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507
+	sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die
 
 	multilib_copy_sources
 }
 
 ejam() {
-	local b2_opts="--user-config=${BOOST_ROOT}/user-config.jam $@"
-	echo b2 ${b2_opts}
-	b2 ${b2_opts}
+	local b2_opts=(
+		"--user-config=${BOOST_ROOT}/user-config.jam"
+		"$@"
+	)
+	echo b2 "${b2_opts[@]}"
+	b2 "${b2_opts[@]}"
 }
 
 src_configure() {
 	# Workaround for too many parallel processes requested, bug #506064
-	[ "$(makeopts_jobs)" -gt 64 ] && MAKEOPTS="${MAKEOPTS} -j64"
+	[[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
 
-	OPTIONS="$(usex debug gentoodebug gentoorelease) -j$(makeopts_jobs) -q -d+2"
+	OPTIONS=(
+		$(usex debug gentoodebug gentoorelease)
+		"-j$(makeopts_jobs)"
+		-q
+		-d+2
+	)
 
 	if [[ ${CHOST} == *-darwin* ]]; then
 		# We need to add the prefix, and in two cases this exceeds, so prepare
@@ -147,21 +165,46 @@
 		[[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec
 	fi
 
-	# Do _not_ use C++11 yet, make sure to force GNU C++ 98 standard.
-	append-cxxflags -std=gnu++98
+	# Use C++14 globally as of 1.62
+	append-cxxflags -std=c++14
 
-	use icu && OPTIONS+=" -sICU_PATH=${EPREFIX}/usr"
-	use icu || OPTIONS+=" --disable-icu boost.locale.icu=off"
-	mpi_needed || OPTIONS+=" --without-mpi"
-	use nls || OPTIONS+=" --without-locale"
-	use context || OPTIONS+=" --without-context --without-coroutine"
+	use icu && OPTIONS+=(
+			"-sICU_PATH=${EPREFIX}/usr"
+		)
+	use icu || OPTIONS+=(
+			--disable-icu
+			boost.locale.icu=off
+		)
+	use mpi || OPTIONS+=(
+			--without-mpi
+		)
+	use nls || OPTIONS+=(
+			--without-locale
+		)
+	use context || OPTIONS+=(
+			--without-context
+			--without-coroutine
+			--without-coroutine2
+			--without-fiber
+		)
+	use threads || OPTIONS+=(
+			--without-thread
+		)
 
-	OPTIONS+=" pch=off"
-	OPTIONS+=" --boost-build=${EPREFIX}/usr/share/boost-build --prefix=\"${ED}usr\""
-	OPTIONS+=" --layout=system"
-	OPTIONS+=" threading=$(usex threads multi single) link=$(usex static-libs shared,static shared)"
+	OPTIONS+=(
+		pch=off
+		--boost-build="${EPREFIX}"/usr/share/boost-build
+		--prefix="${ED%/}/usr"
+		--layout=system
+		# building with threading=single is currently not possible
+		# https://svn.boost.org/trac/boost/ticket/7105
+		threading=multi
+		link=$(usex static-libs shared,static shared)
+	)
 
-	[[ ${CHOST} == *-winnt* ]] && OPTIONS+=" -sNO_BZIP2=1"
+	[[ ${CHOST} == *-winnt* ]] && OPTIONS+=(
+			-sNO_BZIP2=1
+		)
 }
 
 multilib_src_compile() {
@@ -180,7 +223,7 @@
 		fi
 
 		ejam \
-			${OPTIONS} \
+			"${OPTIONS[@]}" \
 			${PYTHON_OPTIONS} \
 			|| die "Building of Boost libraries failed"
 
@@ -199,7 +242,7 @@
 					|| die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed"
 			done
 
-			if mpi_needed; then
+			if use mpi; then
 				if [[ -z "${MPI_PYTHON_MODULE}" ]]; then
 					MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)"
 					if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then
@@ -223,44 +266,44 @@
 	fi
 
 	if tools_needed; then
-		pushd tools > /dev/null || die
+		pushd tools >/dev/null || die
 
 		ejam \
-			${OPTIONS} \
+			"${OPTIONS[@]}" \
 			${PYTHON_OPTIONS} \
 			|| die "Building of Boost tools failed"
-		popd > /dev/null || die
+		popd >/dev/null || die
 	fi
 }
 
 multilib_src_install_all() {
 	if ! use python; then
-		rm -r "${ED}"/usr/include/boost/python* || die
+		rm -r "${ED%/}"/usr/include/boost/python* || die
 	fi
 
 	if ! use nls; then
-		rm -r "${ED}"/usr/include/boost/locale || die
+		rm -r "${ED%/}"/usr/include/boost/locale || die
 	fi
 
 	if ! use context; then
-		rm -r "${ED}"/usr/include/boost/context || die
-		rm -r "${ED}"/usr/include/boost/coroutine || die
+		rm -r "${ED%/}"/usr/include/boost/context || die
+		rm -r "${ED%/}"/usr/include/boost/coroutine{,2} || die
+		rm "${ED%/}"/usr/include/boost/asio/spawn.hpp || die
 	fi
 
 	if use doc; then
-		find libs/*/* -iname "test" -or -iname "src" | xargs rm -rf
-		dohtml \
-			-A pdf,txt,cpp,hpp \
-			*.{htm,html,png,css} \
-			-r doc
-		dohtml -A pdf,txt -r tools
-		insinto /usr/share/doc/${PF}/html
-		doins -r libs
-		doins -r more
+		# find extraneous files that shouldn't be installed
+		# as part of the documentation and remove them.
+		find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
+		find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
+		find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
+
+		docinto html
+		dodoc *.{htm,html,png,css}
+		dodoc -r doc libs more tools
 
 		# To avoid broken links
-		insinto /usr/share/doc/${PF}/html
-		doins LICENSE_1_0.txt
+		dodoc LICENSE_1_0.txt
 
 		dosym /usr/include/boost /usr/share/doc/${PF}/html/boost
 	fi
@@ -279,7 +322,7 @@
 					|| die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed"
 			done
 
-			if mpi_needed; then
+			if use mpi; then
 				cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \
 					|| die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed"
 				cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \
@@ -291,10 +334,10 @@
 		fi
 
 		ejam \
-			${OPTIONS} \
+			"${OPTIONS[@]}" \
 			${PYTHON_OPTIONS} \
-			--includedir="${ED}usr/include" \
-			--libdir="${ED}usr/$(get_libdir)" \
+			--includedir="${ED%/}/usr/include" \
+			--libdir="${ED%/}/usr/$(get_libdir)" \
 			install || die "Installation of Boost libraries failed"
 
 		if python_bindings_needed; then
@@ -302,11 +345,11 @@
 
 			# Move mpi.so Python module to Python site-packages directory.
 			# https://svn.boost.org/trac/boost/ticket/2838
-			if mpi_needed; then
+			if use mpi; then
 				local moddir=$(python_get_sitedir)/boost
 				# moddir already includes eprefix
 				mkdir -p "${D}${moddir}" || die
-				mv "${ED}usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
+				mv "${ED%/}/usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
 				cat << EOF > "${D}${moddir}/__init__.py" || die
 import sys
 if sys.platform.startswith('linux'):
@@ -331,7 +374,7 @@
 		installation
 	fi
 
-	pushd "${ED}usr/$(get_libdir)" > /dev/null || die
+	pushd "${ED%/}/usr/$(get_libdir)" >/dev/null || die
 
 	local ext=$(get_libname)
 	if use threads; then
@@ -341,7 +384,7 @@
 		done
 	fi
 
-	popd > /dev/null || die
+	popd >/dev/null || die
 
 	if tools_needed; then
 		dobin dist/bin/*
@@ -358,7 +401,7 @@
 	if [[ ${CHOST} == *-darwin* ]]; then
 		einfo "Working around completely broken build-system(tm)"
 		local d
-		for d in "${ED}"usr/lib/*.dylib; do
+		for d in "${ED%/}"/usr/lib/*.dylib; do
 			if [[ -f ${d} ]]; then
 				# fix the "soname"
 				ebegin "  correcting install_name of ${d#${ED}}"
@@ -388,7 +431,14 @@
 	# resorting to dirty hacks like these. Removes lingering symlinks
 	# from the slotted versions.
 	local symlink
-	for symlink in "${EROOT}usr/include/boost" "${EROOT}usr/share/boostbook"; do
-		[[ -L ${symlink} ]] && rm -f "${symlink}"
+	for symlink in "${EROOT%/}/usr/include/boost" "${EROOT%/}/usr/share/boostbook"; do
+		if [[ -L ${symlink} ]]; then
+			rm -f "${symlink}" || die
+		fi
 	done
+
+	# some ancient installs still have boost cruft lying around
+	# for unknown reasons, causing havoc for reverse dependencies
+	# Bug: 607734
+	rm -rf "${EROOT%/}"/usr/include/boost-1_[3-5]? || die
 }
diff --git a/dev-libs/boost/files/boost-1.52.0-threads.patch b/dev-libs/boost/files/boost-1.52.0-threads.patch
deleted file mode 100644
index e078fc2..0000000
--- a/dev-libs/boost/files/boost-1.52.0-threads.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Index: /trunk/boostcpp.jam

-===================================================================

---- /trunk/boostcpp.jam	(revision 79301)

-+++ /trunk/boostcpp.jam	(revision 81000)

-@@ -210,6 +210,44 @@

- }

- 

-+rule filtered-target ( name : message + : sources + : requirements * )

-+{

-+    message $(name)-message : warning: $(message) ;

-+    alias $(name) : $(sources) : $(requirements) ;

-+    alias $(name) : $(name)-message ;

-+

-+    local p = [ project.current ] ;

-+    $(p).mark-target-as-explicit $(name) ;

-+    $(p).mark-target-as-explicit $(name)-message ;

-+}

-+

- rule declare_install_and_stage_proper_targets ( libraries * : headers * )

- {

-+    for local l in $(libraries)

-+    {

-+        if $(l) = locale

-+        {

-+            filtered-target $(l)-for-install :

-+                Skipping Boost.Locale library with threading=single. :

-+                libs/$(l)/build : <threading>multi ;

-+        }

-+        else if $(l) = wave

-+        {

-+            filtered-target $(l)-for-install :

-+                Skipping Boost.Wave library with threading=single. :

-+                libs/$(l)/build : <threading>multi ;

-+        }

-+        else if $(l) = thread

-+        {

-+            filtered-target $(l)-for-install :

-+                Skipping Boost.Thread library with threading=single. :

-+                libs/$(l)/build : <threading>multi ;

-+        }

-+        else

-+        {

-+            alias $(l)-for-install : libs/$(l)/build ; 

-+        }

-+    }

-+    local library-targets = $(libraries)-for-install ;

-+

-     install-requirements = <install-source-root>$(BOOST_ROOT)/boost ;

- 

-@@ -239,5 +277,5 @@

-         : $(install-requirements) <install-no-version-symlinks>on

-         :

--        : libs/$(libraries)/build

-+        : $(libraries)-for-install

-         : $(headers)

-         ;

-@@ -246,5 +284,5 @@

-     # Install just library.

-     install stage-proper

--        : libs/$(libraries)/build

-+        : $(libraries)-for-install

-         : <location>$(stage-locate)/lib

-           <install-dependencies>on <install-type>LIB

diff --git a/dev-libs/boost/files/boost-1.55.0-tools-c98-compat.patch b/dev-libs/boost/files/boost-1.55.0-tools-c98-compat.patch
deleted file mode 100644
index df2a14a..0000000
--- a/dev-libs/boost/files/boost-1.55.0-tools-c98-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Make tools compiled successfully with forced C++98
-
-Gentoo bugreport: https://bugs.gentoo.org/show_bug.cgi?id=503468
-
-diff --git a/tools/regression/src/compiler_status.cpp b/tools/regression/src/compiler_status.cpp
-index 63f8134..3f3374a 100644
---- a/tools/regression/src/compiler_status.cpp
-+++ b/tools/regression/src/compiler_status.cpp
-@@ -128,7 +128,7 @@ namespace
-         string ln(line);
-         if (ln.find("Revision: ") != string::npos)
-         {
--          for(auto itr = ln.begin()+10; itr != ln.end() && isdigit(*itr); ++itr)
-+          for(string::iterator itr = ln.begin()+10; itr != ln.end() && isdigit(*itr); ++itr)
-             rev += *itr;
-         }
-       }
diff --git a/dev-libs/boost/files/boost-1.56.0-build-auto_index-tool.patch b/dev-libs/boost/files/boost-1.56.0-build-auto_index-tool.patch
new file mode 100644
index 0000000..48ca513
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.56.0-build-auto_index-tool.patch
@@ -0,0 +1,13 @@
+Build auto_index tool with USE="tools"
+Gentoo bug report: https://bugs.gentoo.org/show_bug.cgi?id=529066
+
+--- a/tools/Jamfile.v2.orig	2014-12-24 12:57:32.290880067 +0300
++++ b/tools/Jamfile.v2	2014-12-24 12:58:38.403883250 +0300
+@@ -20,6 +20,7 @@
+ use-project /boost/regression : regression/build ;
+ 
+ TOOLS =
++    auto_index/build//auto_index
+     bcp//bcp
+     inspect/build//inspect
+     quickbook//quickbook
diff --git a/dev-util/boost-build/Manifest b/dev-util/boost-build/Manifest
index 07a2d76..fdad401 100644
--- a/dev-util/boost-build/Manifest
+++ b/dev-util/boost-build/Manifest
@@ -1 +1 @@
-DIST boost_1_55_0.tar.bz2 58146647 SHA256 fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 SHA512 dc606477f4c303e8f40de2586c16394b6d758e198b35bf3a7d3e576a2f49171aadc4f95e8d685fa731bc4e61e19869d5a24e1e816febfca9de078d66e096e041 WHIRLPOOL 6ae111d6a956651bd91914432b743faffeb466703191b05193db47f02fd3528a14ce200f26c1ab77bf2c68994eb5b135b0176f66a746964d334b4793ba113ad5
+DIST boost_1_62_0.tar.bz2 84529021 SHA256 3b9df59619e07cf53e041c27efff7d9aeab7628e5d6867f4754eefb2b7b99dbb SHA512 8b7ec068cfd13e513c339f59440ff966d4e669beb82b6793937b5285f96bd515624444e718f5e70206a7cbec5e58ec9a3067700fd825c7ed95eedf9989fbede3 WHIRLPOOL 6b93771c66c9259af5fc2e3e2f2b3996cb6756edf70ec8a72d7ddf3b97291522b8fae3e201c984e54a245ab505a17e541a42de6bfefe5d8b4bf972a6038f8a9d
diff --git a/dev-util/boost-build/boost-build-1.55.0.ebuild b/dev-util/boost-build/boost-build-1.55.0.ebuild
deleted file mode 100644
index 47c1da8..0000000
--- a/dev-util/boost-build/boost-build-1.55.0.ebuild
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/boost-build/boost-build-1.55.0.ebuild,v 1.14 2015/04/16 12:54:26 zlogene Exp $
-
-EAPI="5"
-PYTHON_DEPEND="python? 2"
-
-RESTRICT="test"
-
-inherit eutils flag-o-matic multilib python toolchain-funcs versionator
-
-MY_PV=$(replace_all_version_separators _)
-
-DESCRIPTION="A system for large project software construction, which is simple to use and powerful"
-HOMEPAGE="http://www.boost.org/doc/tools/build/index.html"
-SRC_URI="mirror://sourceforge/boost/boost_${MY_PV}.tar.bz2"
-
-LICENSE="Boost-1.0"
-SLOT=0
-KEYWORDS="*"
-IUSE="examples python test"
-
-REQUIRED_USE="test? ( python )"
-
-RDEPEND="!<dev-libs/boost-1.34.0
-	!<=dev-util/boost-build-1.35.0-r1"
-DEPEND="${RDEPEND}
-	test? ( sys-apps/diffutils )"
-
-S="${WORKDIR}/boost_${MY_PV}/tools/build/v2"
-
-pkg_setup() {
-	if use python; then
-		python_set_active_version 2
-		python_pkg_setup
-	fi
-}
-
-src_unpack() {
-	tar xjpf "${DISTDIR}/${A}" boost_${MY_PV}/tools/build/v2 || die "unpacking tar failed"
-}
-
-src_prepare() {
-	epatch \
-		"${FILESDIR}/${PN}-1.48.0-disable_python_rpath.patch" \
-		"${FILESDIR}/${PN}-1.50.0-respect-c_ld-flags.patch" \
-		"${FILESDIR}/${PN}-1.49.0-darwin-gentoo-toolchain.patch" \
-		"${FILESDIR}/${PN}-1.52.0-darwin-no-python-framework.patch" \
-		"${FILESDIR}/${PN}-1.54.0-fix-test.patch" \
-		"${FILESDIR}/${PN}-1.54.0-support_dots_in_python-buildid.patch" \
-		"${FILESDIR}/${PN}-1.55.0-ppc-aix.patch"
-
-	# Remove stripping option
-	# Fix python components build on multilib systems, bug #496446
-	cd "${S}/engine"
-	sed -i \
-		-e 's|-s\b||' \
-		-e "/libpython/s/lib ]/$(get_libdir) ]/" \
-		build.jam || die "sed failed"
-
-	# Force regeneration
-	rm jambase.c || die
-
-	# This patch allows us to fully control optimization
-	# and stripping flags when bjam is used as build-system
-	# We simply extend the optimization and debug-symbols feature
-	# with empty dummies called 'none'
-	cd "${S}"
-	sed -i \
-		-e 's/\(off speed space\)/\1 none/' \
-		-e 's/\(debug-symbols      : on off\)/\1 none/' \
-		tools/builtin.jam || die "sed failed"
-}
-
-src_configure() {
-	if use python; then
-		# replace versions by user-selected one (TODO: fix this when slot-op
-		# deps are available to always match the best version available)
-		sed -i \
-			-e "s|2.7 2.6 2.5 2.4 2.3 2.2|${PYTHON_ABI}|" \
-			engine/build.jam || die "sed failed"
-	fi
-}
-
-src_compile() {
-	cd engine
-
-	local toolset
-
-	if [[ ${CHOST} == *-darwin* ]]; then
-		toolset=darwin
-	else
-		# Using boost's generic toolset here, which respects CC and CFLAGS
-		toolset=cc
-	fi
-
-	CC=$(tc-getCC) ./build.sh ${toolset} -d+2 $(use_with python python "${EROOT}"/usr) || die "building bjam failed"
-}
-
-src_install() {
-	dobin engine/bin.*/{bjam,b2}
-
-	insinto /usr/share/boost-build
-	doins -r "${FILESDIR}/site-config.jam" \
-		boost-build.jam bootstrap.jam build-system.jam user-config.jam *.py \
-		build kernel options tools util
-
-	rm "${ED}/usr/share/boost-build/build/project.ann.py" || die "removing faulty python file failed"
-	if ! use python; then
-		find "${ED}/usr/share/boost-build" -iname "*.py" -delete || die "removing experimental python files failed"
-	fi
-
-	dodoc changes.txt hacking.txt release_procedure.txt \
-		notes/build_dir_option.txt notes/relative_source_paths.txt
-
-	if use examples; then
-		insinto /usr/share/doc/${PF}
-		doins -r example
-	fi
-}
-
-src_test() {
-	cd test
-
-	export TMP="${T}"
-
-	DO_DIFF="${PREFIX}/usr/bin/diff" $(PYTHON -2) test_all.py
-
-	if [[ -s test_results.txt ]]; then
-		eerror "At least one test failed: $(<test_results.txt)"
-		die "tests failed"
-	fi
-}
-
-pkg_postinst() {
-	use python && python_mod_optimize /usr/share/boost-build
-}
-
-pkg_postrm() {
-	use python && python_mod_cleanup /usr/share/boost-build
-}
diff --git a/dev-util/boost-build/boost-build-1.62.0-r1.ebuild b/dev-util/boost-build/boost-build-1.62.0-r1.ebuild
new file mode 100644
index 0000000..619d0ce
--- /dev/null
+++ b/dev-util/boost-build/boost-build-1.62.0-r1.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+RESTRICT="test"
+
+PYTHON_COMPAT=( python2_7 )
+inherit eutils flag-o-matic python-single-r1 toolchain-funcs versionator
+
+MY_PV="$(replace_all_version_separators _)"
+
+DESCRIPTION="A system for large project software construction, simple to use and powerful"
+HOMEPAGE="http://www.boost.org/doc/tools/build/index.html"
+SRC_URI="https://downloads.sourceforge.net/project/boost/boost/${PV}/boost_${MY_PV}.tar.bz2"
+
+LICENSE="Boost-1.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE="examples python test"
+
+RDEPEND="python? ( ${PYTHON_DEPS} )
+	!<dev-libs/boost-1.34.0
+	!<=dev-util/boost-build-1.35.0-r1"
+DEPEND="${RDEPEND}
+	test? ( sys-apps/diffutils
+		${PYTHON_DEPS} )"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
+	test? ( ${PYTHON_REQUIRED_USE} )"
+
+S="${WORKDIR}/boost_${MY_PV}/tools/build/src"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-1.48.0-disable_python_rpath.patch"
+	"${FILESDIR}/${PN}-1.50.0-respect-c_ld-flags.patch"
+	"${FILESDIR}/${PN}-1.49.0-darwin-gentoo-toolchain.patch"
+	"${FILESDIR}/${PN}-1.52.0-darwin-no-python-framework.patch"
+	"${FILESDIR}/${PN}-1.54.0-support_dots_in_python-buildid.patch"
+	"${FILESDIR}/${PN}-1.55.0-ppc-aix.patch"
+)
+
+pkg_setup() {
+	if use python || use test; then
+		python-single-r1_pkg_setup
+	fi
+}
+
+src_unpack() {
+	tar xjf "${DISTDIR}/${A}" boost_${MY_PV}/tools/build || die "unpacking tar failed"
+}
+
+src_prepare() {
+	epatch "${PATCHES[@]}"
+
+	pushd ../ >/dev/null || die
+	eapply "${FILESDIR}/${PN}-1.54.0-fix-test.patch"
+	popd >/dev/null || die
+
+	# Remove stripping option
+	# Fix python components build on multilib systems, bug #496446
+	cd "${S}/engine" || die
+	sed -i \
+		-e 's|-s\b||' \
+		-e "/libpython/s/lib ]/$(get_libdir) ]/" \
+		build.jam || die "sed failed"
+
+	# Force regeneration
+	rm jambase.c || die
+
+	# This patch allows us to fully control optimization
+	# and stripping flags when bjam is used as build-system
+	# We simply extend the optimization and debug-symbols feature
+	# with empty dummies called 'none'
+	cd "${S}" || die
+	sed -i \
+		-e 's/\(off speed space\)/\1 none/' \
+		-e 's/\(debug-symbols      : on off\)/\1 none/' \
+		tools/builtin.jam || die "sed failed"
+}
+
+src_configure() {
+	if use python; then
+		# replace versions by user-selected one (TODO: fix this when slot-op
+		# deps are available to always match the best version available)
+		sed -i \
+			-e "s|27 26 25 24 23 22|${EPYTHON#python}|" \
+			engine/build.jam || die "sed failed"
+	fi
+}
+
+src_compile() {
+	cd engine || die
+
+	local toolset
+
+	if [[ ${CHOST} == *-darwin* ]]; then
+		toolset=darwin
+	else
+		# Using boost's generic toolset here, which respects CC and CFLAGS
+		toolset=cc
+	fi
+
+	CC=$(tc-getCC) ./build.sh ${toolset} -d+2 $(use_with python python "${EROOT%/}"/usr) || die "building bjam failed"
+}
+
+src_install() {
+	dobin engine/bin.*/{bjam,b2}
+
+	insinto /usr/share/boost-build
+	doins -r "${FILESDIR}/site-config.jam" \
+		../boost-build.jam bootstrap.jam build-system.jam ../example/user-config.jam *.py \
+		build kernel options tools util
+
+	rm "${ED%/}/usr/share/boost-build/build/project.ann.py" || die "removing faulty python file failed"
+	if ! use python; then
+		find "${ED%/}/usr/share/boost-build" -iname "*.py" -delete || die "removing experimental python files failed"
+	fi
+
+	dodoc ../notes/{changes,hacking,release_procedure,build_dir_option,relative_source_paths}.txt
+
+	if use examples; then
+		dodoc -r ../example
+		docompress -x "/usr/share/doc/${PF}/example"
+	fi
+}
+
+src_test() {
+	cd ../test || die
+
+	export TMP="${T}"
+
+	DO_DIFF="${PREFIX}/usr/bin/diff" ${PYTHON} test_all.py
+
+	if [[ -s test_results.txt ]]; then
+		eerror "At least one test failed: $(<test_results.txt)"
+		die "tests failed"
+	fi
+}