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