Gentoo Archives: gentoo-commits

From: "Sergey Popov (pinkbyte)" <pinkbyte@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in dev-libs/boost: boost-1.57.0.ebuild ChangeLog
Date: Fri, 27 Feb 2015 12:20:01
Message-Id: 20150227121955.C986212A98@oystercatcher.gentoo.org
1 pinkbyte 15/02/27 12:19:55
2
3 Modified: ChangeLog
4 Added: boost-1.57.0.ebuild
5 Log:
6 Version bump, wrt bug #528204
7
8 (Portage version: 2.2.17/cvs/Linux x86_64, signed Manifest commit with key 0x60C0742D1F357D42)
9
10 Revision Changes Path
11 1.344 dev-libs/boost/ChangeLog
12
13 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/boost/ChangeLog?rev=1.344&view=markup
14 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/boost/ChangeLog?rev=1.344&content-type=text/plain
15 diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/boost/ChangeLog?r1=1.343&r2=1.344
16
17 Index: ChangeLog
18 ===================================================================
19 RCS file: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v
20 retrieving revision 1.343
21 retrieving revision 1.344
22 diff -u -r1.343 -r1.344
23 --- ChangeLog 5 Jan 2015 17:58:25 -0000 1.343
24 +++ ChangeLog 27 Feb 2015 12:19:55 -0000 1.344
25 @@ -1,6 +1,11 @@
26 # ChangeLog for dev-libs/boost
27 # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
28 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v 1.343 2015/01/05 17:58:25 ottxor Exp $
29 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v 1.344 2015/02/27 12:19:55 pinkbyte Exp $
30 +
31 +*boost-1.57.0 (27 Feb 2015)
32 +
33 + 27 Feb 2015; Sergey Popov <pinkbyte@g.o> +boost-1.57.0.ebuild:
34 + Version bump, wrt bug #528204
35
36 05 Jan 2015; Christoph Junghans <ottxor@g.o> boost-1.56.0-r1.ebuild:
37 added prefix keywords (ebuild does not differ from prefix overlay)
38
39
40
41 1.1 dev-libs/boost/boost-1.57.0.ebuild
42
43 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/boost/boost-1.57.0.ebuild?rev=1.1&view=markup
44 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/boost/boost-1.57.0.ebuild?rev=1.1&content-type=text/plain
45
46 Index: boost-1.57.0.ebuild
47 ===================================================================
48 # Copyright 1999-2015 Gentoo Foundation
49 # Distributed under the terms of the GNU General Public License v2
50 # $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/boost-1.57.0.ebuild,v 1.1 2015/02/27 12:19:55 pinkbyte Exp $
51
52 EAPI="5"
53 PYTHON_COMPAT=( python{2_7,3_2,3_3,3_4} )
54
55 inherit eutils flag-o-matic multilib multiprocessing python-r1 toolchain-funcs versionator multilib-minimal
56
57 MY_P="${PN}_$(replace_all_version_separators _)"
58 MAJOR_V="$(get_version_component_range 1-2)"
59
60 DESCRIPTION="Boost Libraries for C++"
61 HOMEPAGE="http://www.boost.org/"
62 SRC_URI="mirror://sourceforge/boost/${MY_P}.tar.bz2"
63
64 LICENSE="Boost-1.0"
65 SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
66 KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt"
67
68 IUSE="context debug doc icu +nls mpi python static-libs +threads tools"
69
70 RDEPEND="abi_x86_32? ( !app-emulation/emul-linux-x86-cpplibs[-abi_x86_32(-)] )
71 icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
72 !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
73 mpi? ( || ( sys-cluster/openmpi[cxx] sys-cluster/mpich2[cxx,threads] ) )
74 python? ( ${PYTHON_DEPS} )
75 app-arch/bzip2[${MULTILIB_USEDEP}]
76 sys-libs/zlib[${MULTILIB_USEDEP}]
77 !app-admin/eselect-boost"
78 DEPEND="${RDEPEND}
79 =dev-util/boost-build-${MAJOR_V}*"
80 REQUIRED_USE="
81 mpi? ( threads )
82 python? ( ${PYTHON_REQUIRED_USE} )"
83
84 S="${WORKDIR}/${MY_P}"
85
86 # the tests will never fail because these are not intended as sanity
87 # tests at all. They are more a way for upstream to check their own code
88 # on new compilers. Since they would either be completely unreliable
89 # (failing for no good reason) or completely useless (never failing)
90 # there is no point in having them in the ebuild to begin with.
91 RESTRICT="test"
92
93 python_bindings_needed() {
94 multilib_is_native_abi && use python
95 }
96
97 tools_needed() {
98 multilib_is_native_abi && use tools
99 }
100
101 # MPI stuff is not ported on multilib yet, disabling it for non-native ABIs
102 mpi_needed() {
103 multilib_is_native_abi && use mpi
104 }
105
106 create_user-config.jam() {
107 local compiler compiler_version compiler_executable
108
109 if [[ ${CHOST} == *-darwin* ]]; then
110 compiler="darwin"
111 compiler_version="$(gcc-fullversion)"
112 compiler_executable="$(tc-getCXX)"
113 else
114 compiler="gcc"
115 compiler_version="$(gcc-version)"
116 compiler_executable="$(tc-getCXX)"
117 fi
118 local mpi_configuration python_configuration
119
120 if mpi_needed; then
121 mpi_configuration="using mpi ;"
122 fi
123
124 if python_bindings_needed; then
125 if tc-is-cross-compiler; then
126 python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;"
127 else
128 python_configuration="using python : : ${PYTHON} ;"
129 fi
130 fi
131
132 cat > "${BOOST_ROOT}/user-config.jam" << __EOF__
133 using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
134 ${mpi_configuration}
135 ${python_configuration}
136 __EOF__
137 }
138
139 pkg_setup() {
140 # Bail out on unsupported build configuration, bug #456792
141 if [[ -f "${EROOT}etc/site-config.jam" ]]; then
142 grep -q gentoorelease "${EROOT}etc/site-config.jam" && grep -q gentoodebug "${EROOT}etc/site-config.jam" ||
143 (
144 eerror "You are using custom ${EROOT}etc/site-config.jam without defined gentoorelease/gentoodebug targets."
145 eerror "Boost can not be built in such configuration."
146 eerror "Please, either remove this file or add targets from ${EROOT}usr/share/boost-build/site-config.jam to it."
147 die
148 )
149 fi
150 }
151
152 src_prepare() {
153 epatch \
154 "${FILESDIR}/${PN}-1.51.0-respect_python-buildid.patch" \
155 "${FILESDIR}/${PN}-1.51.0-support_dots_in_python-buildid.patch" \
156 "${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch" \
157 "${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch" \
158 "${FILESDIR}/${PN}-1.48.0-python_linking.patch" \
159 "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch" \
160 "${FILESDIR}/${PN}-1.55.0-context-x32.patch" \
161 "${FILESDIR}/${PN}-1.55.0-tools-c98-compat.patch" \
162 "${FILESDIR}/${PN}-1.52.0-threads.patch" \
163 "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch"
164
165 # Do not try to build missing 'wave' tool, bug #522682
166 # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507
167 sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die
168
169 epatch_user
170
171 multilib_copy_sources
172 }
173
174 ejam() {
175 local b2_opts="--user-config=${BOOST_ROOT}/user-config.jam $@"
176 echo b2 ${b2_opts}
177 b2 ${b2_opts}
178 }
179
180 src_configure() {
181 # Workaround for too many parallel processes requested, bug #506064
182 [ "$(makeopts_jobs)" -gt 64 ] && MAKEOPTS="${MAKEOPTS} -j64"
183
184 OPTIONS="$(usex debug gentoodebug gentoorelease) -j$(makeopts_jobs) -q -d+2"
185
186 if [[ ${CHOST} == *-darwin* ]]; then
187 # We need to add the prefix, and in two cases this exceeds, so prepare
188 # for the largest possible space allocation.
189 append-ldflags -Wl,-headerpad_max_install_names
190 elif [[ ${CHOST} == *-winnt* ]]; then
191 compiler=parity
192 if [[ $($(tc-getCXX) -v) == *trunk* ]]; then
193 compilerVersion=trunk
194 else
195 compilerVersion=$($(tc-getCXX) -v | sed '1q' \
196 | sed -e 's,\([a-z]*\) \([0-9]\.[0-9]\.[0-9][^ \t]*\) .*,\2,')
197 fi
198 compilerExecutable=$(tc-getCXX)
199 fi
200
201 # bug 298489
202 if use ppc || use ppc64; then
203 [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec
204 fi
205
206 # Do _not_ use C++11 yet, make sure to force GNU C++ 98 standard.
207 append-cxxflags -std=gnu++98
208
209 use icu && OPTIONS+=" -sICU_PATH=${EPREFIX}/usr"
210 use icu || OPTIONS+=" --disable-icu boost.locale.icu=off"
211 mpi_needed || OPTIONS+=" --without-mpi"
212 use nls || OPTIONS+=" --without-locale"
213 use context || OPTIONS+=" --without-context --without-coroutine"
214
215 OPTIONS+=" pch=off"
216 OPTIONS+=" --boost-build=${EPREFIX}/usr/share/boost-build --prefix=\"${ED}usr\""
217 OPTIONS+=" --layout=system"
218 OPTIONS+=" threading=$(usex threads multi single) link=$(usex static-libs shared,static shared)"
219
220 [[ ${CHOST} == *-winnt* ]] && OPTIONS+=" -sNO_BZIP2=1"
221 }
222
223 multilib_src_compile() {
224 local -x BOOST_ROOT="${BUILD_DIR}"
225 PYTHON_DIRS=""
226 MPI_PYTHON_MODULE=""
227
228 building() {
229 create_user-config.jam
230
231 local PYTHON_OPTIONS
232 if python_bindings_needed; then
233 PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
234 else
235 PYTHON_OPTIONS=" --without-python"
236 fi
237
238 ejam \
239 ${OPTIONS} \
240 ${PYTHON_OPTIONS} \
241 || die "Building of Boost libraries failed"
242
243 if python_bindings_needed; then
244 if [[ -z "${PYTHON_DIRS}" ]]; then
245 PYTHON_DIRS="$(find bin.v2/libs -name python | sort)"
246 else
247 if [[ "${PYTHON_DIRS}" != "$(find bin.v2/libs -name python | sort)" ]]; then
248 die "Inconsistent structure of build directories"
249 fi
250 fi
251
252 local dir
253 for dir in ${PYTHON_DIRS}; do
254 mv ${dir} ${dir}-${EPYTHON} \
255 || die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed"
256 done
257
258 if mpi_needed; then
259 if [[ -z "${MPI_PYTHON_MODULE}" ]]; then
260 MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)"
261 if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then
262 die "Multiple mpi.so files found"
263 fi
264 else
265 if [[ "${MPI_PYTHON_MODULE}" != "$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)" ]]; then
266 die "Inconsistent structure of build directories"
267 fi
268 fi
269
270 mv stage/lib/mpi.so stage/lib/mpi.so-${EPYTHON} \
271 || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${EPYTHON}' failed"
272 fi
273 fi
274 }
275 if python_bindings_needed; then
276 python_foreach_impl building
277 else
278 building
279 fi
280
281 if tools_needed; then
282 pushd tools > /dev/null || die
283
284 ejam \
285 ${OPTIONS} \
286 ${PYTHON_OPTIONS} \
287 || die "Building of Boost tools failed"
288 popd > /dev/null || die
289 fi
290 }
291
292 multilib_src_install_all() {
293 if ! use python; then
294 rm -r "${ED}"/usr/include/boost/python* || die
295 fi
296
297 if ! use nls; then
298 rm -r "${ED}"/usr/include/boost/locale || die
299 fi
300
301 if ! use context; then
302 rm -r "${ED}"/usr/include/boost/context || die
303 rm -r "${ED}"/usr/include/boost/coroutine || die
304 fi
305
306 if use doc; then
307 find libs/*/* -iname "test" -or -iname "src" | xargs rm -rf
308 dohtml \
309 -A pdf,txt,cpp,hpp \
310 *.{htm,html,png,css} \
311 -r doc
312 dohtml -A pdf,txt -r tools
313 insinto /usr/share/doc/${PF}/html
314 doins -r libs
315 doins -r more
316
317 # To avoid broken links
318 insinto /usr/share/doc/${PF}/html
319 doins LICENSE_1_0.txt
320
321 dosym /usr/include/boost /usr/share/doc/${PF}/html/boost
322 fi
323 }
324
325 multilib_src_install() {
326 local -x BOOST_ROOT="${BUILD_DIR}"
327 installation() {
328 create_user-config.jam
329
330 local PYTHON_OPTIONS
331 if python_bindings_needed; then
332 local dir
333 for dir in ${PYTHON_DIRS}; do
334 cp -pr ${dir}-${EPYTHON} ${dir} \
335 || die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed"
336 done
337
338 if mpi_needed; then
339 cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \
340 || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed"
341 cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \
342 || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to 'stage/lib/mpi.so' failed"
343 fi
344 PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
345 else
346 PYTHON_OPTIONS=" --without-python"
347 fi
348
349 ejam \
350 ${OPTIONS} \
351 ${PYTHON_OPTIONS} \
352 --includedir="${ED}usr/include" \
353 --libdir="${ED}usr/$(get_libdir)" \
354 install || die "Installation of Boost libraries failed"
355
356 if python_bindings_needed; then
357 rm -r ${PYTHON_DIRS} || die
358
359 # Move mpi.so Python module to Python site-packages directory.
360 # https://svn.boost.org/trac/boost/ticket/2838
361 if mpi_needed; then
362 local moddir=$(python_get_sitedir)/boost
363 # moddir already includes eprefix
364 mkdir -p "${D}${moddir}" || die
365 mv "${ED}usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
366 cat << EOF > "${D}${moddir}/__init__.py" || die
367 import sys
368 if sys.platform.startswith('linux'):
369 import DLFCN
370 flags = sys.getdlopenflags()
371 sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL)
372 from . import mpi
373 sys.setdlopenflags(flags)
374 del DLFCN, flags
375 else:
376 from . import mpi
377 del sys
378 EOF
379 fi
380
381 python_optimize
382 fi
383 }
384 if python_bindings_needed; then
385 python_foreach_impl installation
386 else
387 installation
388 fi
389
390 pushd "${ED}usr/$(get_libdir)" > /dev/null || die
391
392 local ext=$(get_libname)
393 if use threads; then
394 local f
395 for f in *${ext}; do
396 dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
397 done
398 fi
399
400 popd > /dev/null || die
401
402 if tools_needed; then
403 dobin dist/bin/*
404
405 insinto /usr/share
406 doins -r dist/share/boostbook
407 fi
408
409 # boost's build system truely sucks for not having a destdir. Because for
410 # this reason we are forced to build with a prefix that includes the
411 # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
412 # DESTROOT instread of the actual EPREFIX. There is no way out of here
413 # but to do it the dirty way of manually setting the right install_names.
414 if [[ ${CHOST} == *-darwin* ]]; then
415 einfo "Working around completely broken build-system(tm)"
416 local d
417 for d in "${ED}"usr/lib/*.dylib; do
418 if [[ -f ${d} ]]; then
419 # fix the "soname"
420 ebegin " correcting install_name of ${d#${ED}}"
421 install_name_tool -id "/${d#${D}}" "${d}"
422 eend $?
423 # fix references to other libs
424 refs=$(otool -XL "${d}" | \
425 sed -e '1d' -e 's/^\t//' | \
426 grep "^libboost_" | \
427 cut -f1 -d' ')
428 local r
429 for r in ${refs}; do
430 ebegin " correcting reference to ${r}"
431 install_name_tool -change \
432 "${r}" \
433 "${EPREFIX}/usr/lib/${r}" \
434 "${d}"
435 eend $?
436 done
437 fi
438 done
439 fi
440 }
441
442 pkg_preinst() {
443 # Yai for having symlinks that are nigh-impossible to remove without
444 # resorting to dirty hacks like these. Removes lingering symlinks
445 # from the slotted versions.
446 local symlink
447 for symlink in "${EROOT}usr/include/boost" "${EROOT}usr/share/boostbook"; do
448 [[ -L ${symlink} ]] && rm -f "${symlink}"
449 done
450 }