commit:     bd611864247f545397823f2b566f1361148bb2fd
Author:     Jory A. Pratt <anarchy <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  3 16:43:11 2016 +0000
Commit:     Jory Pratt <anarchy <AT> gentoo <DOT> org>
CommitDate: Sun Jan  3 16:43:11 2016 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=bd611864

dev-python/numphy - Add support for musl

 dev-python/numpy/Manifest                          |   9 ++
 .../numpy/files/numpy-1.10.1-backport-1.patch      | 127 +++++++++++++++++
 .../numpy/files/numpy-1.10.1-backport-2.patch      |  73 ++++++++++
 dev-python/numpy/files/numpy-1.10.1-musl-fix.patch |  20 +++
 .../numpy/files/numpy-1.9.2-no-hardcode-blas.patch |  35 +++++
 dev-python/numpy/numpy-1.10.1-r1.ebuild            | 156 +++++++++++++++++++++
 6 files changed, 420 insertions(+)

diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
new file mode 100644
index 0000000..68da0e0
--- /dev/null
+++ b/dev-python/numpy/Manifest
@@ -0,0 +1,9 @@
+AUX numpy-1.10.1-backport-1.patch 6086 SHA256 
386920fcba91099aedfe0c8105aa53f10f596f62d300684d802397769ba9b1e1 SHA512 
359076cdf1962744f1e0381d6e690422787307400db6ca51fb8f759f6af459666e9b4aad278bf4e89848fea5277204eab9459edb092fc2d9aa8dab14096eefe9
 WHIRLPOOL 
e9bc09688dace432c9b112535415f0c60d97eb8b464da615368c031a9a7440ff9e39092ef9d020332b91e4af1203e2ae16a78176935df4d3e7b3617bd9235a12
+AUX numpy-1.10.1-backport-2.patch 2904 SHA256 
ec6faad4e0105f3f291a43defed5c0f33ca669832589372a0b6ae92d9f5e4dd1 SHA512 
8e1db75cd00209762b49f636549a4afccea1467f93b4ce94e02f3ada2f8be78a70fdfea51eb98a12690ef67b84734eb24d5a647def8022a4fddfc22cda4cb512
 WHIRLPOOL 
f8fda61187660136537af662f85d7886272bc9f3bb0d05321f950a7ed6844acbfc8b5c64cd06764e8414adfce4d9d139af6f3bf9cd72330a8862160d2144eb2b
+AUX numpy-1.10.1-musl-fix.patch 543 SHA256 
2d3f0358f9a5a33f783817964d1985f48eaffb5f239f494b9a57cab1c35565d7 SHA512 
b832d756e2518471c117e72bba01c5b93859d694948f545f136a12cca69dc9f9a459539fce8fde740c0822c423572ec6aa9e805a28a6d9620df36b54c52b1d8f
 WHIRLPOOL 
8708b667ce5d86ef5e7b468d5e059cf7d3ca572fff5e462f0f12f3855e0addd0dc9170390f720b90ccbb01c330c308124596d9808ad05f8ea8c0658de63e8284
+AUX numpy-1.9.2-no-hardcode-blas.patch 1821 SHA256 
a51524eb39ed9f71667e89179fda3e16a974949629b9a0acb7a0994202a2db63 SHA512 
59d498f7b0a1e6f4bc37e0eb7121812e1fe974e06176c7b80e99e41c49067a618bc98d925bcb667607462f5e7823f0f55235c8ddd685e318dfb3385b7eb7dad6
 WHIRLPOOL 
09e8cf5f27431fa7d5028b5d73690492e7da061f8ac5b82be1d1dbcc46c61c83cb6c5c3fb5f112bb61776075b98f7e1ef7b8a9fd828986f2c4b9358d9acb8d97
+DIST numpy-1.10.1.tar.gz 4048478 SHA256 
8b9f453f29ce96a14e625100d3dcf8926301d36c5f622623bf8820e748510858 SHA512 
ea717bac913a8e63bf93822bddbfe7701a3de00051bf3c7020f5e22756987becb5a2f96a6a52a36fc7c2b856815a782e450099688ce86b21fa94b0076b9ef376
 WHIRLPOOL 
7671368bec55c7f53ffa78a509946acc998e6f4223da4f3429b82a5a38b5e0277a0f89773ec2335f8e46b5c695620a4119af5ab59734184054c31b11841de44b
+DIST numpy-html-1.9.1.zip 9839137 SHA256 
12a24937f8273fcf79090c99b6c4154a0ecfc378386498cf2afe727ea171407c SHA512 
647a6be9f93995aca14185e283a2b412678c6e8080fe4f14e7cc9ee63c28eebb64dea6bbe28f30ef6850a5565dd1e06928fd660ac762e9a91454d309eff96ed4
 WHIRLPOOL 
68c367fd0416d27b1cf43edf7ca48bc8845c02856bbbacdf63c88fe8bbffd5dd86fb3e5cdea8f669dd78adf7bcc4d184953048783802df323126c1b22baf8e92
+DIST numpy-ref-1.9.1.pdf 5318122 SHA256 
3c8e5881a3460e1cc9da95fe2167044e8f832ab8e980c3606d1f353e7ac6dcee SHA512 
5171bb22588117a53e0eac355520581f7817a7e7a099ae83bb73f2ac8248a60e139ae9719dc543b44f25ccf8319c9f149fec1bf5aa55d943fad06a8e6da0d9ba
 WHIRLPOOL 
5c99daf3ae2e6bf235aed287682f1b96d5b6afc9d290f544a8baab892b39c9f6dd9f649abe3e103cc90c990d87e4d653d8157d774a8bd35eccc9cc6ac7a870f9
+DIST numpy-user-1.9.1.pdf 418111 SHA256 
e1f6baed0b73f3d4b106c88924c083f9a519e860c1beb718830bf1aee1892232 SHA512 
724302468a8e93daf70d379bb1ee7369953e297c40ea260f080b7aca3c9c81e619a81705bdfb2ea214da5b5325ec2b48e953eceeaa1d60c07593b00c35989f45
 WHIRLPOOL 
f93ed20c5da7b379e3afcafab97c7eb60231ed4f73cebf18184e00b9a8a5a531fa32992f7f28f16d2714b3056c61153c29267c8c6b93cb100e06f53bced1bd6a
+EBUILD numpy-1.10.1-r1.ebuild 4293 SHA256 
93ff64945e1813118fba4787b14924377c46092b6785d9ad7a3e0ba0d4567c66 SHA512 
7c654383a424ab28df86e3f535acbf8833c41f244601fa34314878a0686ccaafca32379b73565ced19e47ce5d84b34c853118b21d9e15584e93647dfaca0c666
 WHIRLPOOL 
7082b39850bc873ad663f6cfeec46a1718e2d14a4eb22a4c0cfa0186605b94d740b1865c3e2dbf0203b993090bb18cd6ce5fc5ff046d915e95adf29f1444ab38

diff --git a/dev-python/numpy/files/numpy-1.10.1-backport-1.patch 
b/dev-python/numpy/files/numpy-1.10.1-backport-1.patch
new file mode 100644
index 0000000..77a3c01
--- /dev/null
+++ b/dev-python/numpy/files/numpy-1.10.1-backport-1.patch
@@ -0,0 +1,127 @@
+From 3a816a4db9b498eb64eb837fdcca0fa8ddbe063e Mon Sep 17 00:00:00 2001
+From: Allan Haldane <allan.hald...@gmail.com>
+Date: Sat, 17 Oct 2015 14:00:36 -0400
+Subject: [PATCH] BUG: recarrays viewed as subarrays don't convert to np.record
+ type
+
+Record array views were updated in #5943 to return np.record dtype
+where possible, but forgot about the case of sub-arrays.
+
+That's fixed here, so accessing subarray fields by attribute or index
+works sensibly, as well as viewing a record array as a subarray dtype,
+and printing subarrays.
+
+This also happens to fix #6459, since it affects the same lines.
+
+Fixes #6497 #6459
+---
+ numpy/core/records.py            | 30 +++++++++++++++++++-----------
+ numpy/core/tests/test_records.py | 23 +++++++++++++++++++++++
+ 2 files changed, 42 insertions(+), 11 deletions(-)
+
+diff --git a/numpy/core/records.py b/numpy/core/records.py
+index 4a99553..4ce3fe9 100644
+--- a/numpy/core/records.py
++++ b/numpy/core/records.py
+@@ -448,12 +448,14 @@ def __getattribute__(self, attr):
+ 
+         # At this point obj will always be a recarray, since (see
+         # PyArray_GetField) the type of obj is inherited. Next, if obj.dtype 
is
+-        # non-structured, convert it to an ndarray. If obj is structured leave
+-        # it as a recarray, but make sure to convert to the same dtype.type 
(eg
+-        # to preserve numpy.record type if present), since nested structured
+-        # fields do not inherit type.
++        # non-structured, convert it to an ndarray. Then if obj is structured
++        # with void type convert it to the same dtype.type (eg to preserve
++        # numpy.record type if present), since nested structured fields do not
++        # inherit type. Don't do this for non-void structures though.
+         if obj.dtype.fields:
+-            return obj.view(dtype=(self.dtype.type, obj.dtype.fields))
++            if issubclass(obj.dtype.type, nt.void):
++                return obj.view(dtype=(self.dtype.type, obj.dtype))
++            return obj
+         else:
+             return obj.view(ndarray)
+ 
+@@ -463,8 +465,9 @@ def __getattribute__(self, attr):
+     # Thus, you can't create attributes on-the-fly that are field names.
+     def __setattr__(self, attr, val):
+ 
+-        # Automatically convert (void) dtypes to records.
+-        if attr == 'dtype' and issubclass(val.type, nt.void):
++        # Automatically convert (void) structured types to records
++        # (but not non-void structures, subarrays, or non-structured voids)
++        if attr == 'dtype' and issubclass(val.type, nt.void) and val.fields:
+             val = sb.dtype((record, val))
+ 
+         newattr = attr not in self.__dict__
+@@ -499,7 +502,9 @@ def __getitem__(self, indx):
+         # we might also be returning a single element
+         if isinstance(obj, ndarray):
+             if obj.dtype.fields:
+-                return obj.view(dtype=(self.dtype.type, obj.dtype.fields))
++                if issubclass(obj.dtype.type, nt.void):
++                    return obj.view(dtype=(self.dtype.type, obj.dtype))
++                return obj
+             else:
+                 return obj.view(type=ndarray)
+         else:
+@@ -519,11 +524,14 @@ def __repr__(self):
+             # If this is a full record array (has numpy.record dtype),
+             # or if it has a scalar (non-void) dtype with no records,
+             # represent it using the rec.array function. Since rec.array
+-            # converts dtype to a numpy.record for us, use only dtype.descr,
+-            # not repr(dtype).
++            # converts dtype to a numpy.record for us, convert back
++            # to non-record before printing
++            plain_dtype = self.dtype
++            if plain_dtype.type is record:
++                plain_dtype = sb.dtype((nt.void, plain_dtype))
+             lf = '\n'+' '*len("rec.array(")
+             return ('rec.array(%s, %sdtype=%s)' %
+-                          (lst, lf, repr(self.dtype.descr)))
++                          (lst, lf, plain_dtype))
+         else:
+             # otherwise represent it using np.array plus a view
+             # This should only happen if the user is playing
+diff --git a/numpy/core/tests/test_records.py 
b/numpy/core/tests/test_records.py
+index 7a18f29..290bc4f 100644
+--- a/numpy/core/tests/test_records.py
++++ b/numpy/core/tests/test_records.py
+@@ -121,6 +121,23 @@ def test_recarray_views(self):
+         assert_equal(type(rv), np.recarray)
+         assert_equal(rv.dtype.type, np.record)
+ 
++        # check that accessing nested structures keep record type, but
++        # not for subarrays, non-void structures, non-structured voids
++        test_dtype = [('a', 'f4,f4'), ('b', 'V8'), ('c', ('f4',2)),
++                      ('d', ('i8', 'i4,i4'))]
++        r = np.rec.array([((1,1), b'11111111', [1,1], 1),
++                          ((1,1), b'11111111', [1,1], 1)], dtype=test_dtype)
++        assert_equal(r.a.dtype.type, np.record)
++        assert_equal(r.b.dtype.type, np.void)
++        assert_equal(r.c.dtype.type, np.float32)
++        assert_equal(r.d.dtype.type, np.int64)
++        # check the same, but for views
++        r = np.rec.array(np.ones(4, dtype='i4,i4'))
++        assert_equal(r.view('f4,f4').dtype.type, np.record)
++        assert_equal(r.view(('i4',2)).dtype.type, np.int32)
++        assert_equal(r.view('V8').dtype.type, np.void)
++        assert_equal(r.view(('i8', 'i4,i4')).dtype.type, np.int64)
++
+         #check that we can undo the view
+         arrs = [np.ones(4, dtype='f4,i4'), np.ones(4, dtype='f8')]
+         for arr in arrs:
+@@ -135,6 +152,12 @@ def test_recarray_repr(self):
+         a = np.array(np.ones(4, dtype='f8'))
+         assert_(repr(np.rec.array(a)).startswith('rec.array'))
+ 
++        # check that the 'np.record' part of the dtype isn't shown
++        a = np.rec.array(np.ones(3, dtype='i4,i4'))
++        assert_equal(repr(a).find('numpy.record'), -1)
++        a = np.rec.array(np.ones(3, dtype='i4'))
++        assert_(repr(a).find('dtype=int32') != -1)
++
+     def test_recarray_from_names(self):
+         ra = np.rec.array([
+             (1, 'abc', 3.7000002861022949, 0),

diff --git a/dev-python/numpy/files/numpy-1.10.1-backport-2.patch 
b/dev-python/numpy/files/numpy-1.10.1-backport-2.patch
new file mode 100644
index 0000000..9c33704
--- /dev/null
+++ b/dev-python/numpy/files/numpy-1.10.1-backport-2.patch
@@ -0,0 +1,73 @@
+From 0d25dc4175e00cdaf9545e8b1b1a5b879cf67248 Mon Sep 17 00:00:00 2001
+From: Ethan Kruse <eakr...@uw.edu>
+Date: Mon, 19 Oct 2015 13:29:01 -0700
+Subject: [PATCH 1/2] Potential fix for #6462
+
+---
+ numpy/lib/function_base.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/numpy/lib/function_base.py b/numpy/lib/function_base.py
+index 555d083..fef69df 100644
+--- a/numpy/lib/function_base.py
++++ b/numpy/lib/function_base.py
+@@ -3339,7 +3339,7 @@ def _median(a, axis=None, out=None, 
overwrite_input=False):
+         indexer[axis] = slice(index-1, index+1)
+ 
+     # Check if the array contains any nan's
+-    if np.issubdtype(a.dtype, np.inexact):
++    if np.issubdtype(a.dtype, np.inexact) and sz > 0:
+         # warn and return nans like mean would
+         rout = mean(part[indexer], axis=axis, out=out)
+         part = np.rollaxis(part, axis, part.ndim)
+
+From 59d859fb2160950ac93267d7461ad952145c8724 Mon Sep 17 00:00:00 2001
+From: Ethan Kruse <eakr...@uw.edu>
+Date: Tue, 20 Oct 2015 11:40:49 -0700
+Subject: [PATCH 2/2] Added tests for median of empty arrays
+
+---
+ numpy/lib/tests/test_function_base.py | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+diff --git a/numpy/lib/tests/test_function_base.py 
b/numpy/lib/tests/test_function_base.py
+index 4516c92..aa41c1f 100644
+--- a/numpy/lib/tests/test_function_base.py
++++ b/numpy/lib/tests/test_function_base.py
+@@ -2597,6 +2597,36 @@ def test_nan_behavior(self):
+             assert_equal(np.median(a, (0, 2)), b)
+             assert_equal(len(w), 1)
+ 
++    def test_empty(self):
++        # empty arrays
++        a = np.array([], dtype=float)
++        with warnings.catch_warnings(record=True) as w:
++            warnings.filterwarnings('always', '', RuntimeWarning)
++            assert_equal(np.median(a), np.nan)
++            assert_(w[0].category is RuntimeWarning)
++
++        # multiple dimensions
++        a = np.array([], dtype=float, ndmin=3)
++        # no axis
++        with warnings.catch_warnings(record=True) as w:
++            warnings.filterwarnings('always', '', RuntimeWarning)
++            assert_equal(np.median(a), np.nan)
++            assert_(w[0].category is RuntimeWarning)
++
++        # axis 0 and 1
++        b = np.array([], dtype=float, ndmin=2)
++        with warnings.catch_warnings(record=True) as w:
++            warnings.filterwarnings('always', '', RuntimeWarning)
++            assert_equal(np.median(a, axis=0), b)
++            assert_equal(np.median(a, axis=1), b)
++
++        # axis 2
++        b = np.array(np.nan, dtype=float, ndmin=2)
++        with warnings.catch_warnings(record=True) as w:
++            warnings.filterwarnings('always', '', RuntimeWarning)
++            assert_equal(np.median(a, axis=2), b)
++            assert_(w[0].category is RuntimeWarning)
++
+     def test_object(self):
+         o = np.arange(7.)
+         assert_(type(np.median(o.astype(object))), float)

diff --git a/dev-python/numpy/files/numpy-1.10.1-musl-fix.patch 
b/dev-python/numpy/files/numpy-1.10.1-musl-fix.patch
new file mode 100644
index 0000000..b5b891c
--- /dev/null
+++ b/dev-python/numpy/files/numpy-1.10.1-musl-fix.patch
@@ -0,0 +1,20 @@
+--- a/numpy/core/src/private/npy_config.h.orig 2015-08-11 19:03:43.000000000 
+0200
++++ b/numpy/core/src/private/npy_config.h      2015-10-08 08:20:25.489203036 
+0200
+@@ -71,7 +71,7 @@
+ 
+ 
+ /* Disable broken gnu trig functions on linux */
+-#if defined(__linux__) && defined(__GNUC__)
++#if defined(__linux__) && defined(__GLIBC__)
+ 
+ #if defined(HAVE_FEATURES_H)
+ #include <features.h>
+@@ -96,6 +96,6 @@
+ #endif
+ #undef TRIG_OK
+ 
+-#endif /* defined(__linux__) && defined(__GNUC__) */
++#endif /* defined(__linux__) && defined(__GLIBC__) */
+ 
+ #endif
+

diff --git a/dev-python/numpy/files/numpy-1.9.2-no-hardcode-blas.patch 
b/dev-python/numpy/files/numpy-1.9.2-no-hardcode-blas.patch
new file mode 100644
index 0000000..674dbfa
--- /dev/null
+++ b/dev-python/numpy/files/numpy-1.9.2-no-hardcode-blas.patch
@@ -0,0 +1,35 @@
+ numpy/distutils/system_info.py | 21 +--------------------
+ 1 file changed, 1 insertion(+), 20 deletions(-)
+
+diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py
+index a050430..d0878a5 100644
+--- a/numpy/distutils/system_info.py
++++ b/numpy/distutils/system_info.py
+@@ -303,26 +303,7 @@ def get_info(name, notfound_action=0):
+       1 - display warning message
+       2 - raise error
+     """
+-    cl = {'atlas': atlas_info,  # use lapack_opt or blas_opt instead
+-          'atlas_threads': atlas_threads_info,                # ditto
+-          'atlas_blas': atlas_blas_info,
+-          'atlas_blas_threads': atlas_blas_threads_info,
+-          'lapack_atlas': lapack_atlas_info,  # use lapack_opt instead
+-          'lapack_atlas_threads': lapack_atlas_threads_info,  # ditto
+-          'atlas_3_10': atlas_3_10_info,  # use lapack_opt or blas_opt instead
+-          'atlas_3_10_threads': atlas_3_10_threads_info,                # 
ditto
+-          'atlas_3_10_blas': atlas_3_10_blas_info,
+-          'atlas_3_10_blas_threads': atlas_3_10_blas_threads_info,
+-          'lapack_atlas_3_10': lapack_atlas_3_10_info,  # use lapack_opt 
instead
+-          'lapack_atlas_3_10_threads': lapack_atlas_3_10_threads_info,  # 
ditto
+-          'mkl': mkl_info,
+-          # openblas which may or may not have embedded lapack
+-          'openblas': openblas_info,          # use blas_opt instead
+-          # openblas with embedded lapack
+-          'openblas_lapack': openblas_lapack_info, # use blas_opt instead
+-          'lapack_mkl': lapack_mkl_info,      # use lapack_opt instead
+-          'blas_mkl': blas_mkl_info,          # use blas_opt instead
+-          'x11': x11_info,
++    cl = {'x11': x11_info,
+           'fft_opt': fft_opt_info,
+           'fftw': fftw_info,
+           'fftw2': fftw2_info,

diff --git a/dev-python/numpy/numpy-1.10.1-r1.ebuild 
b/dev-python/numpy/numpy-1.10.1-r1.ebuild
new file mode 100644
index 0000000..ab6df8b
--- /dev/null
+++ b/dev-python/numpy/numpy-1.10.1-r1.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_{3,4,5} )
+PYTHON_REQ_USE="threads(+)"
+
+FORTRAN_NEEDED=lapack
+
+inherit distutils-r1 eutils flag-o-matic fortran-2 multilib multiprocessing 
toolchain-funcs versionator
+
+DOC_PV="1.9.1"
+DOC_P="${PN}-${DOC_PV}"
+
+DESCRIPTION="Fast array and numerical python library"
+HOMEPAGE="http://www.numpy.org/";
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz
+       doc? (
+               http://docs.scipy.org/doc/${DOC_P}/${PN}-html-${DOC_PV}.zip
+               http://docs.scipy.org/doc/${DOC_P}/${PN}-ref-${DOC_PV}.pdf
+               http://docs.scipy.org/doc/${DOC_P}/${PN}-user-${DOC_PV}.pdf
+       )"
+# It appears the docs haven't been upgraded, still @ 1.8.1
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux 
~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris 
~x64-solaris ~x86-solaris"
+IUSE="doc lapack test"
+
+RDEPEND="
+       dev-python/setuptools[${PYTHON_USEDEP}]
+       lapack? ( virtual/cblas virtual/lapack )"
+DEPEND="${RDEPEND}
+       doc? ( app-arch/unzip )
+       lapack? ( virtual/pkgconfig )
+       test? ( >=dev-python/nose-1.0[${PYTHON_USEDEP}] )"
+
+# Uses distutils.command.config.
+DISTUTILS_IN_SOURCE_BUILD=1
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.9.2-no-hardcode-blas.patch
+       "${FILESDIR}"/${PN}-1.10.1-musl-fix.patch
+       "${FILESDIR}"/${P}-backport-1.patch
+       "${FILESDIR}"/${P}-backport-2.patch
+)
+
+src_unpack() {
+       default
+       if use doc; then
+               unzip -qo "${DISTDIR}"/${PN}-html-${DOC_PV}.zip -d html || die
+       fi
+}
+
+pc_incdir() {
+       $(tc-getPKG_CONFIG) --cflags-only-I $@ | \
+               sed -e 's/^-I//' -e 's/[ ]*-I/:/g' -e 's/[ ]*$//' -e 's|^:||'
+}
+
+pc_libdir() {
+       $(tc-getPKG_CONFIG) --libs-only-L $@ | \
+               sed -e 's/^-L//' -e 's/[ ]*-L/:/g' -e 's/[ ]*$//' -e 's|^:||'
+}
+
+pc_libs() {
+       $(tc-getPKG_CONFIG) --libs-only-l $@ | \
+               sed -e 's/[ ]-l*\(pthread\|m\)\([ ]\|$\)//g' \
+               -e 's/^-l//' -e 's/[ ]*-l/,/g' -e 's/[ ]*$//' \
+               | tr ',' '\n' | sort -u | tr '\n' ',' | sed -e 's|,$||'
+}
+
+python_prepare_all() {
+       if use lapack; then
+               append-ldflags "$($(tc-getPKG_CONFIG) --libs-only-other cblas 
lapack)"
+               local libdir="${EPREFIX}"/usr/$(get_libdir)
+               # make sure _dotblas.so gets built
+               sed -i -e '/NO_ATLAS_INFO/,+1d' numpy/core/setup.py || die
+               cat >> site.cfg <<-EOF
+                       [blas]
+                       include_dirs = $(pc_incdir cblas)
+                       library_dirs = $(pc_libdir cblas blas):${libdir}
+                       blas_libs = $(pc_libs cblas blas)
+                       [lapack]
+                       library_dirs = $(pc_libdir lapack):${libdir}
+                       lapack_libs = $(pc_libs lapack)
+               EOF
+       else
+               export {ATLAS,PTATLAS,BLAS,LAPACK,MKL}=None
+       fi
+
+       export CC="$(tc-getCC) ${CFLAGS}"
+
+       append-flags -fno-strict-aliasing
+
+       # See progress in http://projects.scipy.org/scipy/numpy/ticket/573
+       # with the subtle difference that we don't want to break Darwin where
+       # -shared is not a valid linker argument
+       if [[ ${CHOST} != *-darwin* ]]; then
+               append-ldflags -shared
+       fi
+
+       # only one fortran to link with:
+       # linking with cblas and lapack library will force
+       # autodetecting and linking to all available fortran compilers
+       append-fflags -fPIC
+       if use lapack; then
+               NUMPY_FCONFIG="config_fc --noopt --noarch"
+               # workaround bug 335908
+               [[ $(tc-getFC) == *gfortran* ]] && NUMPY_FCONFIG+=" 
--fcompiler=gnu95"
+       fi
+
+       # don't version f2py, we will handle it.
+       sed -i -e '/f2py_exe/s:+os\.path.*$::' numpy/f2py/setup.py || die
+
+       # we don't have f2py-3.3
+       sed \
+               -e "/f2py_cmd/s:'f2py'.*:'f2py':g" \
+               -i numpy/tests/test_scripts.py || die
+
+       distutils-r1_python_prepare_all
+}
+
+python_compile() {
+       distutils-r1_python_compile -j $(makeopts_jobs) ${NUMPY_FCONFIG}
+}
+
+python_test() {
+       distutils_install_for_testing ${NUMPY_FCONFIG}
+
+       cd "${TMPDIR}" || die
+       ${EPYTHON} -c "
+import numpy, sys
+r = numpy.test(label='full', verbose=3)
+sys.exit(0 if r.wasSuccessful() else 1)" || die "Tests fail with ${EPYTHON}"
+}
+
+python_install() {
+       distutils-r1_python_install ${NUMPY_FCONFIG}
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+
+       dodoc COMPATIBILITY DEV_README.txt THANKS.txt
+
+       if use doc; then
+               dohtml -r "${WORKDIR}"/html/*
+               dodoc "${DISTDIR}"/${PN}-{user,ref}-${DOC_PV}.pdf
+       fi
+
+       # absent in 1.9
+       #docinto f2py
+       #dodoc numpy/f2py/docs/*.txt
+       #doman numpy/f2py/f2py.1
+}

Reply via email to