summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Fabbro <bicatali@gentoo.org>2007-09-25 21:54:58 +0000
committerSebastien Fabbro <bicatali@gentoo.org>2007-09-25 21:54:58 +0000
commite42b968e0a74883579625a166b8d1c2ada035f30 (patch)
tree2c1d608de8186acc9f4f5748a8cb60c486da9b00 /sci-libs/scipy
parentRestrict strip (helperblocks is distributed without symbols table). (diff)
downloadgentoo-2-e42b968e0a74883579625a166b8d1c2ada035f30.tar.gz
gentoo-2-e42b968e0a74883579625a166b8d1c2ada035f30.tar.bz2
gentoo-2-e42b968e0a74883579625a166b8d1c2ada035f30.zip
Version bump. Added dev-python/imaging in RDEPEND. Re-organize sandbox modules building
(Portage version: 2.1.3.9)
Diffstat (limited to 'sci-libs/scipy')
-rw-r--r--sci-libs/scipy/ChangeLog10
-rw-r--r--sci-libs/scipy/files/digest-scipy-0.6.03
-rw-r--r--sci-libs/scipy/files/scipy-0.6.0-cdf.patch24
-rw-r--r--sci-libs/scipy/files/scipy-0.6.0-randomkit.patch552
-rw-r--r--sci-libs/scipy/scipy-0.6.0.ebuild126
5 files changed, 714 insertions, 1 deletions
diff --git a/sci-libs/scipy/ChangeLog b/sci-libs/scipy/ChangeLog
index 5908ea6da1eb..a3adfd7d15aa 100644
--- a/sci-libs/scipy/ChangeLog
+++ b/sci-libs/scipy/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for sci-libs/scipy
# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sci-libs/scipy/ChangeLog,v 1.22 2007/09/11 17:32:38 bicatali Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/scipy/ChangeLog,v 1.23 2007/09/25 21:54:57 bicatali Exp $
+
+*scipy-0.6.0 (25 Sep 2007)
+
+ 25 Sep 2007; Sébastien Fabbro <bicatali@gentoo.org>
+ +files/scipy-0.6.0-cdf.patch, +files/scipy-0.6.0-randomkit.patch,
+ +files/enabled_packages-0.6.0.txt, +scipy-0.6.0.ebuild:
+ Version bump. Added dev-python/imaging in RDEPEND. Re-organize
+ sandbox modules building.
11 Sep 2007; Sébastien Fabbro <bicatali@gentoo.org>
+files/scipy-0.5.2-cdf.patch, -files/scipy-0.5.2-getpath.patch,
diff --git a/sci-libs/scipy/files/digest-scipy-0.6.0 b/sci-libs/scipy/files/digest-scipy-0.6.0
new file mode 100644
index 000000000000..aa28d16fa675
--- /dev/null
+++ b/sci-libs/scipy/files/digest-scipy-0.6.0
@@ -0,0 +1,3 @@
+MD5 417adf3bfe03f4c23c9fb265018e545c scipy-0.6.0.tar.gz 6572954
+RMD160 391f2067f7dcc133e7e8622df93a2a0cd5ebbe5b scipy-0.6.0.tar.gz 6572954
+SHA256 5f70390963fb4e3ae8cf5effa301c160ef68c791098e2ea95b99380e298eac4f scipy-0.6.0.tar.gz 6572954
diff --git a/sci-libs/scipy/files/scipy-0.6.0-cdf.patch b/sci-libs/scipy/files/scipy-0.6.0-cdf.patch
new file mode 100644
index 000000000000..c9bb2dbbb5c7
--- /dev/null
+++ b/sci-libs/scipy/files/scipy-0.6.0-cdf.patch
@@ -0,0 +1,24 @@
+--- scipy/special/setup.py.orig 2007-09-11 18:11:04.457232054 +0100
++++ scipy/special/setup.py 2007-09-11 18:09:23.103456231 +0100
+@@ -20,9 +20,9 @@
+ # Fortran libraries
+ config.add_library('mach',sources=[join('mach','*.f')],
+ config_fc={'noopt':(__file__,1)})
+- config.add_library('toms',sources=[join('amos','*.f')])
+- config.add_library('amos',sources=[join('toms','*.f')])
+- config.add_library('cdf',sources=[join('cdflib','*.f')])
++ config.add_library('toms',sources=[join('toms','*.f')])
++ config.add_library('amos',sources=[join('amos','*.f')])
++ config.add_library('cdflib',sources=[join('cdflib','*.f')])
+ config.add_library('specfun',sources=[join('specfun','*.f')])
+
+ # Extension _cephes
+@@ -30,7 +30,7 @@
+ 'toms_wrappers.c','cdf_wrappers.c','ufunc_extras.c']
+ config.add_extension('_cephes', sources=sources,
+ libraries=['amos','toms','c_misc','cephes','mach',
+- 'cdf', 'specfun'],
++ 'cdflib', 'specfun'],
+ define_macros = define_macros
+ )
+ # Extension specfun
diff --git a/sci-libs/scipy/files/scipy-0.6.0-randomkit.patch b/sci-libs/scipy/files/scipy-0.6.0-randomkit.patch
new file mode 100644
index 000000000000..f760d4c33048
--- /dev/null
+++ b/sci-libs/scipy/files/scipy-0.6.0-randomkit.patch
@@ -0,0 +1,552 @@
+--- scipy/sandbox/montecarlo/src/randomkit.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ scipy/sandbox/montecarlo/src/randomkit.c 2007-06-06 17:15:22.505066000 +0100
+@@ -0,0 +1,357 @@
++/* Random kit 1.3 */
++
++/*
++ * Copyright (c) 2003-2005, Jean-Sebastien Roy (js@jeannot.org)
++ *
++ * The rk_random and rk_seed functions algorithms and the original design of
++ * the Mersenne Twister RNG:
++ *
++ * Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * 3. The names of its contributors may not be used to endorse or promote
++ * products derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
++ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * Original algorithm for the implementation of rk_interval function from
++ * Richard J. Wagner's implementation of the Mersenne Twister RNG, optimised by
++ * Magnus Jonsson.
++ *
++ * Constants used in the rk_double implementation by Isaku Wada.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included
++ * in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/* static char const rcsid[] =
++ "@(#) $Jeannot: randomkit.c,v 1.28 2005/07/21 22:14:09 js Exp $"; */
++
++#include <stddef.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <errno.h>
++#include <time.h>
++#include <limits.h>
++#include <math.h>
++
++#ifdef _WIN32
++/* Windows */
++#include <sys/timeb.h>
++#ifndef RK_NO_WINCRYPT
++/* Windows crypto */
++#ifndef _WIN32_WINNT
++#define _WIN32_WINNT 0x0400
++#endif
++#include <windows.h>
++#include <wincrypt.h>
++#endif
++#else
++/* Unix */
++#include <sys/time.h>
++#include <unistd.h>
++#endif
++
++#include "randomkit.h"
++
++#ifndef RK_DEV_URANDOM
++#define RK_DEV_URANDOM "/dev/urandom"
++#endif
++
++#ifndef RK_DEV_RANDOM
++#define RK_DEV_RANDOM "/dev/random"
++#endif
++
++char *rk_strerror[RK_ERR_MAX] =
++{
++ "no error",
++ "random device unvavailable"
++};
++
++/* static functions */
++static unsigned long rk_hash(unsigned long key);
++
++void rk_seed(unsigned long seed, rk_state *state)
++{
++ int pos;
++ seed &= 0xffffffffUL;
++
++ /* Knuth's PRNG as used in the Mersenne Twister reference implementation */
++ for (pos=0; pos<RK_STATE_LEN; pos++)
++ {
++ state->key[pos] = seed;
++ seed = (1812433253UL * (seed ^ (seed >> 30)) + pos + 1) & 0xffffffffUL;
++ }
++
++ state->pos = RK_STATE_LEN;
++ state->has_gauss = 0;
++ state->has_binomial = 0;
++}
++
++/* Thomas Wang 32 bits integer hash function */
++unsigned long rk_hash(unsigned long key)
++{
++ key += ~(key << 15);
++ key ^= (key >> 10);
++ key += (key << 3);
++ key ^= (key >> 6);
++ key += ~(key << 11);
++ key ^= (key >> 16);
++ return key;
++}
++
++rk_error rk_randomseed(rk_state *state)
++{
++#ifndef _WIN32
++ struct timeval tv;
++#else
++ struct _timeb tv;
++#endif
++ int i;
++
++ if(rk_devfill(state->key, sizeof(state->key), 0) == RK_NOERR)
++ {
++ state->key[0] |= 0x80000000UL; /* ensures non-zero key */
++ state->pos = RK_STATE_LEN;
++ state->has_gauss = 0;
++ state->has_binomial = 0;
++
++ for (i=0; i<624; i++)
++ {
++ state->key[i] &= 0xffffffffUL;
++ }
++
++ return RK_NOERR;
++ }
++
++#ifndef _WIN32
++ gettimeofday(&tv, NULL);
++ rk_seed(rk_hash(getpid()) ^ rk_hash(tv.tv_sec) ^ rk_hash(tv.tv_usec)
++ ^ rk_hash(clock()), state);
++#else
++ _ftime(&tv);
++ rk_seed(rk_hash(tv.time) ^ rk_hash(tv.millitm) ^ rk_hash(clock()), state);
++#endif
++
++ return RK_ENODEV;
++}
++
++/* Magic Mersenne Twister constants */
++#define N 624
++#define M 397
++#define MATRIX_A 0x9908b0dfUL
++#define UPPER_MASK 0x80000000UL
++#define LOWER_MASK 0x7fffffffUL
++
++/* Slightly optimised reference implementation of the Mersenne Twister */
++unsigned long rk_random(rk_state *state)
++{
++ unsigned long y;
++
++ if (state->pos == RK_STATE_LEN)
++ {
++ int i;
++
++ for (i=0;i<N-M;i++)
++ {
++ y = (state->key[i] & UPPER_MASK) | (state->key[i+1] & LOWER_MASK);
++ state->key[i] = state->key[i+M] ^ (y>>1) ^ (-(y & 1) & MATRIX_A);
++ }
++ for (;i<N-1;i++)
++ {
++ y = (state->key[i] & UPPER_MASK) | (state->key[i+1] & LOWER_MASK);
++ state->key[i] = state->key[i+(M-N)] ^ (y>>1) ^ (-(y & 1) & MATRIX_A);
++ }
++ y = (state->key[N-1] & UPPER_MASK) | (state->key[0] & LOWER_MASK);
++ state->key[N-1] = state->key[M-1] ^ (y>>1) ^ (-(y & 1) & MATRIX_A);
++
++ state->pos = 0;
++ }
++
++ y = state->key[state->pos++];
++
++ /* Tempering */
++ y ^= (y >> 11);
++ y ^= (y << 7) & 0x9d2c5680UL;
++ y ^= (y << 15) & 0xefc60000UL;
++ y ^= (y >> 18);
++
++ return y;
++}
++
++long rk_long(rk_state *state)
++{
++ return rk_ulong(state) >> 1;
++}
++
++unsigned long rk_ulong(rk_state *state)
++{
++#if ULONG_MAX <= 0xffffffffUL
++ return rk_random(state);
++#else
++ return (rk_random(state) << 32) | (rk_random(state));
++#endif
++}
++
++unsigned long rk_interval(unsigned long max, rk_state *state)
++{
++ unsigned long mask = max, value;
++
++ if (max == 0) return 0;
++
++ /* Smallest bit mask >= max */
++ mask |= mask >> 1;
++ mask |= mask >> 2;
++ mask |= mask >> 4;
++ mask |= mask >> 8;
++ mask |= mask >> 16;
++#if ULONG_MAX > 0xffffffffUL
++ mask |= mask >> 32;
++#endif
++
++ /* Search a random value in [0..mask] <= max */
++ while ((value = (rk_ulong(state) & mask)) > max);
++
++ return value;
++}
++
++double rk_double(rk_state *state)
++{
++ /* shifts : 67108864 = 0x4000000, 9007199254740992 = 0x20000000000000 */
++ long a = rk_random(state) >> 5, b = rk_random(state) >> 6;
++ return (a * 67108864.0 + b) / 9007199254740992.0;
++}
++
++void rk_fill(void *buffer, size_t size, rk_state *state)
++{
++ unsigned long r;
++ unsigned char *buf = buffer;
++
++ for (; size >= 4; size -= 4)
++ {
++ r = rk_random(state);
++ *(buf++) = r & 0xFF;
++ *(buf++) = (r >> 8) & 0xFF;
++ *(buf++) = (r >> 16) & 0xFF;
++ *(buf++) = (r >> 24) & 0xFF;
++ }
++
++ if (!size) return;
++
++ r = rk_random(state);
++
++ for (; size; r >>= 8, size --)
++ *(buf++) = (unsigned char)(r & 0xFF);
++}
++
++rk_error rk_devfill(void *buffer, size_t size, int strong)
++{
++#ifndef _WIN32
++ FILE *rfile;
++ int done;
++
++ if (strong)
++ rfile = fopen(RK_DEV_RANDOM, "rb");
++ else
++ rfile = fopen(RK_DEV_URANDOM, "rb");
++ if (rfile == NULL)
++ return RK_ENODEV;
++ done = fread(buffer, size, 1, rfile);
++ fclose(rfile);
++ if (done)
++ return RK_NOERR;
++#else
++
++#ifndef RK_NO_WINCRYPT
++ HCRYPTPROV hCryptProv;
++ BOOL done;
++
++ if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
++ CRYPT_VERIFYCONTEXT) || !hCryptProv)
++ return RK_ENODEV;
++ done = CryptGenRandom(hCryptProv, size, (unsigned char *)buffer);
++ CryptReleaseContext(hCryptProv, 0);
++ if (done)
++ return RK_NOERR;
++#endif
++
++#endif
++
++ return RK_ENODEV;
++}
++
++rk_error rk_altfill(void *buffer, size_t size, int strong, rk_state *state)
++{
++ rk_error err;
++
++ err = rk_devfill(buffer, size, strong);
++ if (err)
++ rk_fill(buffer, size, state);
++
++ return err;
++}
++
++double rk_gauss(rk_state *state)
++{
++ if (state->has_gauss)
++ {
++ state->has_gauss = 0;
++ return state->gauss;
++ }
++ else
++ {
++ double f, x1, x2, r2;
++ do
++ {
++ x1 = 2.0*rk_double(state) - 1.0;
++ x2 = 2.0*rk_double(state) - 1.0;
++ r2 = x1*x1 + x2*x2;
++ }
++ while (r2 >= 1.0 || r2 == 0.0);
++
++ f = sqrt(-2.0*log(r2)/r2); /* Box-Muller transform */
++ state->has_gauss = 1;
++ state->gauss = f*x1; /* Keep for next call */
++ return f*x2;
++ }
++}
++
++
+--- scipy/sandbox/montecarlo/src/randomkit.h.orig 1970-01-01 01:00:00.000000000 +0100
++++ scipy/sandbox/montecarlo/src/randomkit.h 2007-06-06 17:15:22.505066000 +0100
+@@ -0,0 +1,189 @@
++/* Random kit 1.3 */
++
++/*
++ * Copyright (c) 2003-2005, Jean-Sebastien Roy (js@jeannot.org)
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included
++ * in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/* @(#) $Jeannot: randomkit.h,v 1.24 2005/07/21 22:14:09 js Exp $ */
++
++/*
++ * Typical use:
++ *
++ * {
++ * rk_state state;
++ * unsigned long seed = 1, random_value;
++ *
++ * rk_seed(seed, &state); // Initialize the RNG
++ * ...
++ * random_value = rk_random(&state); // Generate random values in [0..RK_MAX]
++ * }
++ *
++ * Instead of rk_seed, you can use rk_randomseed which will get a random seed
++ * from /dev/urandom (or the clock, if /dev/urandom is unavailable):
++ *
++ * {
++ * rk_state state;
++ * unsigned long random_value;
++ *
++ * rk_randomseed(&state); // Initialize the RNG with a random seed
++ * ...
++ * random_value = rk_random(&state); // Generate random values in [0..RK_MAX]
++ * }
++ */
++
++/*
++ * Useful macro:
++ * RK_DEV_RANDOM: the device used for random seeding.
++ * defaults to "/dev/urandom"
++ */
++
++#include <stddef.h>
++
++#ifndef _RANDOMKIT_
++#define _RANDOMKIT_
++
++#define RK_STATE_LEN 624
++
++typedef struct rk_state_
++{
++ unsigned long key[RK_STATE_LEN];
++ int pos;
++ int has_gauss; /* !=0: gauss contains a gaussian deviate */
++ double gauss;
++
++ /* The rk_state structure has been extended to store the following
++ * information for the binomial generator. If the input values of n or p
++ * are different than nsave and psave, then the other parameters will be
++ * recomputed. RTK 2005-09-02 */
++
++ int has_binomial; /* !=0: following parameters initialized for
++ binomial */
++ double psave;
++ long nsave;
++ double r;
++ double q;
++ double fm;
++ long m;
++ double p1;
++ double xm;
++ double xl;
++ double xr;
++ double c;
++ double laml;
++ double lamr;
++ double p2;
++ double p3;
++ double p4;
++
++}
++rk_state;
++
++typedef enum {
++ RK_NOERR = 0, /* no error */
++ RK_ENODEV = 1, /* no RK_DEV_RANDOM device */
++ RK_ERR_MAX = 2
++} rk_error;
++
++/* error strings */
++extern char *rk_strerror[RK_ERR_MAX];
++
++/* Maximum generated random value */
++#define RK_MAX 0xFFFFFFFFUL
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++ * Initialize the RNG state using the given seed.
++ */
++extern void rk_seed(unsigned long seed, rk_state *state);
++
++/*
++ * Initialize the RNG state using a random seed.
++ * Uses /dev/random or, when unavailable, the clock (see randomkit.c).
++ * Returns RK_NOERR when no errors occurs.
++ * Returns RK_ENODEV when the use of RK_DEV_RANDOM failed (for example because
++ * there is no such device). In this case, the RNG was initialized using the
++ * clock.
++ */
++extern rk_error rk_randomseed(rk_state *state);
++
++/*
++ * Returns a random unsigned long between 0 and RK_MAX inclusive
++ */
++extern unsigned long rk_random(rk_state *state);
++
++/*
++ * Returns a random long between 0 and LONG_MAX inclusive
++ */
++extern long rk_long(rk_state *state);
++
++/*
++ * Returns a random unsigned long between 0 and ULONG_MAX inclusive
++ */
++extern unsigned long rk_ulong(rk_state *state);
++
++/*
++ * Returns a random unsigned long between 0 and max inclusive.
++ */
++extern unsigned long rk_interval(unsigned long max, rk_state *state);
++
++/*
++ * Returns a random double between 0.0 and 1.0, 1.0 excluded.
++ */
++extern double rk_double(rk_state *state);
++
++/*
++ * fill the buffer with size random bytes
++ */
++extern void rk_fill(void *buffer, size_t size, rk_state *state);
++
++/*
++ * fill the buffer with randombytes from the random device
++ * Returns RK_ENODEV if the device is unavailable, or RK_NOERR if it is
++ * On Unix, if strong is defined, RK_DEV_RANDOM is used. If not, RK_DEV_URANDOM
++ * is used instead. This parameter has no effect on Windows.
++ * Warning: on most unixes RK_DEV_RANDOM will wait for enough entropy to answer
++ * which can take a very long time on quiet systems.
++ */
++extern rk_error rk_devfill(void *buffer, size_t size, int strong);
++
++/*
++ * fill the buffer using rk_devfill if the random device is available and using
++ * rk_fill if is is not
++ * parameters have the same meaning as rk_fill and rk_devfill
++ * Returns RK_ENODEV if the device is unavailable, or RK_NOERR if it is
++ */
++extern rk_error rk_altfill(void *buffer, size_t size, int strong,
++ rk_state *state);
++
++/*
++ * return a random gaussian deviate with variance unity and zero mean.
++ */
++extern double rk_gauss(rk_state *state);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* _RANDOMKIT_ */
diff --git a/sci-libs/scipy/scipy-0.6.0.ebuild b/sci-libs/scipy/scipy-0.6.0.ebuild
new file mode 100644
index 000000000000..ce3b5b0f4597
--- /dev/null
+++ b/sci-libs/scipy/scipy-0.6.0.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/scipy/scipy-0.6.0.ebuild,v 1.1 2007/09/25 21:54:57 bicatali Exp $
+
+NEED_PYTHON=2.3
+
+inherit eutils distutils fortran
+
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+DESCRIPTION="Scientific algorithms library for Python"
+HOMEPAGE="http://www.scipy.org/"
+LICENSE="BSD"
+
+SLOT="0"
+
+IUSE="fftw umfpack sandbox"
+
+KEYWORDS="~amd64 ~ppc ~x86"
+
+DEPEND=">=dev-python/numpy-1.0.3.1
+ virtual/lapack
+ fftw? ( =sci-libs/fftw-2.1* )
+ umfpack? ( sci-libs/umfpack dev-lang/swig )
+ sandbox? ( >=sci-libs/netcdf-3.6 x11-libs/libX11 )"
+
+RDEPEND=">=dev-python/numpy-1.0.3.1
+ dev-python/imaging
+ virtual/lapack
+ fftw? ( =sci-libs/fftw-2.1* )
+ umfpack? ( sci-libs/umfpack )
+ sandbox? ( >=sci-libs/netcdf-3.6 x11-libs/libX11 )"
+
+# test still buggy on lapack with 2 failures on check_syevr
+# (lapack float). check every version bump.
+RESTRICT="test"
+
+DOCS="THANKS.txt DEVELOPERS.txt LATEST.txt TOCHANGE.txt FORMAT_GUIDELINES.txt"
+
+scipy_fortran_setup() {
+ FORTRAN="gfortran g77 ifc"
+ fortran_pkg_setup
+ local fc=
+ case ${FORTRANC} in
+ gfortran) fc=gnu95 ;;
+ g77) fc=gnu ;;
+ ifc|ifort)
+ if use ia64; then
+ fc=intele
+ elif use amd64; then
+ fc=intelem
+ else
+ fc=intel
+ fi
+ ;;
+ *) eerror "Unknown fortran compiler: ${FORTRANC}"
+ die "scipy_fortran_setup failed" ;;
+ esac
+
+ # when fortran flags are set, pic is removed.
+ use amd64 && [[ -n ${FFLAGS} ]] && FFLAGS="${FFLAGS} -fPIC"
+ export SCIPY_FCONFIG="config_fc --fcompiler=${fc}"
+}
+
+# see numpy ebuild about unsetting LDFLAGS
+LDFLAGS_sav="${LDFLAGS}"
+unset LDFLAGS
+
+pkg_setup() {
+ [[ -n ${LDFLAGS_sav} ]] && einfo "Ignoring LDFLAGS=${LDFLAGS_sav}"
+ if use umfpack && ! built_with_use dev-lang/swig python; then
+ eerror "With umfpack enabled you need"
+ eerror "dev-lang/swig with python enabled"
+ einfo "Please re-emerge swig with USE=python"
+ die "needs swig with python"
+ fi
+ # scipy automatically detects libraries by default
+ export FFTW=None FFTW3=None UMFPACK=None DJBFFT=None
+ use fftw && unset FFTW
+ use umfpack && unset UMFPACK
+ use sandbox && elog "Warning: using sandbox modules at your own risk!"
+ scipy_fortran_setup
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-randomkit.patch
+ epatch "${FILESDIR}"/${P}-cdf.patch
+
+ if use sandbox; then
+ cd scipy/sandbox
+ ls -1 */__init__.py \
+ | sed -e 's:/__init__.py::' \
+ | grep -v exmplpackage \
+ > enabled_packages.txt \
+ || die "sandbox listing failed"
+ fi
+}
+
+src_compile() {
+ distutils_src_compile ${SCIPY_FCONFIG}
+}
+
+src_test() {
+ "${python}" setup.py install \
+ --home="${S}"/test \
+ --no-compile \
+ ${SCIPY_FCONFIG} || die "install test failed"
+ pushd "${S}"/test/lib*/python
+ PYTHONPATH=. "${python}" -c \
+ "import scipy as s;import sys;sys.exit(s.test(10,3))" \
+ 2>&1 | tee test.log
+ grep -q OK test.log || die "test failed"
+ popd
+ rm -rf test
+}
+
+src_install() {
+ distutils_src_install ${SCIPY_FCONFIG}
+}
+
+pkg_postinst() {
+ elog "You might want to set the variable SCIPY_PIL_IMAGE_VIEWER"
+ elog "to your prefered image viewer if you don't like the default one. Ex:"
+ elog "\t echo \"export SCIPY_PIL_IMAGE_VIEWER=display\" >> ~/.bashrc"
+}