8000 Revert 5614 by charris · Pull Request #6536 · numpy/numpy · GitHub
[go: up one dir, main page]

Skip to content

Revert 5614 #6536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 20, 2015
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Revert "Merge pull request #5614 from charris/cleanup-gh-5587"
Revert mingwpy distutils modifications they cause problems on
non-windows platforms.

This reverts commit 96abd32, reversing
changes made to 06af991.
  • Loading branch information
charris committed Oct 20, 2015
commit f2d9c138f4ddc3d73307b7966714b044d2861070
32 changes: 0 additions & 32 deletions INSTALL.txt
8000
Original file line number Diff line number Diff line change
Expand Up @@ -152,38 +152,6 @@ is broken). gcc 4.4 will hopefully be able to run natively.
This is the only tested way to get a numpy with a FULL blas/lapack (scipy
does not work because of C++).

Carl Kleffner's mingw-w64 toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Carl Kleffner has been working on mingw-w64 / OpenBLAS support and has put
together toolchains for that option. The toolchains are available at
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads. The site.cfg
should be configured like so:

[openblas]
libraries = openblaspy
library_dirs = <openblaspath>/lib
include_dirs = <openblaspath>/include

The libopenblaspy.dll from <openblaspath>/bin must be copied to numpy/core
before the build. For this mingw-w64 toolchain manual creation of the python
import libs is necessary, i.e.:

gendef python2.7.dll
dlltool -D python27.dll -d python27.def -l libpython27.dll.a
move libpython27.dll.a libs\libpython27.dll.a

For python-2.6 up to python 3.2 use
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads/mingwpy_win32_vc90.tar.xz
or
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads/mingwpy_amd64_vc90.tar.xz

For python-3.3 and python-3.4 use
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads/mingwpy_win32_vc100.tar.xz
or
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads/mingwpy_amd64_vc100.tar.xz


MS compilers
------------

Expand Down
9 changes: 9 additions & 0 deletions numpy/core/src/multiarray/multiarraymodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -4476,6 +4476,15 @@ PyMODINIT_FUNC initmultiarray(void) {
goto err;
}

#if defined(MS_WIN64) && defined(__GNUC__)
PyErr_WarnEx(PyExc_Warning,
"Numpy built with MINGW-W64 on Windows 64 bits is experimental, " \
"and only available for \n" \
"testing. You are advised not to use it for production. \n\n" \
"CRASHES ARE TO BE EXPECTED - PLEASE REPORT THEM TO NUMPY DEVELOPERS",
1);
#endif

/* Initialize access to the PyDateTime API */
numpy_pydatetime_import();

Expand Down
32 changes: 10 additions & 22 deletions numpy/distutils/fcompiler/gnu.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
# XXX: handle cross compilation
def is_win64():
return sys.platform == "win32" and platform.architecture()[0] == "64bit"
def is_win32():
return sys.platform == "win32" and platform.architecture()[0] == "32bit"

if is_win64():
#_EXTRAFLAGS = ["-fno-leading-underscore"]
Expand Down Expand Up @@ -138,7 +136,7 @@ def get_flags_linker_so(self):

opt.extend(['-undefined', 'dynamic_lookup', '-bundle'])
else:
opt.append("-shared -Wl,-gc-sections -Wl,-s")
opt.append("-shared")
if sys.platform.startswith('sunos'):
# SunOS often has dynamically loaded symbols defined in the
# static library libg2c.a The linker doesn't like this. To
Expand Down Expand Up @@ -210,18 +208,9 @@ def get_flags_opt(self):
# With this compiler version building Fortran BLAS/LAPACK
# with -O3 caused failures in lib.lapack heevr,syevr tests.
opt = ['-O2']
elif v and v >= '4.6.0':
if is_win32():
# use -mincoming-stack-boundary=2
# due to the change to 16 byte stack alignment since GCC 4.6
# but 32 bit Windows ABI defines 4 bytes stack alignment
opt = ['-O2 -march=core2 -mtune=generic -mfpmath=sse -msse2 '
'-mincoming-stack-boundary=2']
else:
opt = ['-O2 -march=x86-64 -DMS_WIN64 -mtune=generic -msse2']
else:
opt = ['-O2']

opt = ['-O3']
opt.append('-funroll-loops')
return opt

def _c_arch_flags(self):
Expand Down Expand Up @@ -361,7 +350,10 @@ def get_target(self):
return ""

def get_flags_opt(self):
return GnuFCompiler.get_flags_opt(self)
if is_win64():
return ['-O0']
else:
return GnuFCompiler.get_flags_opt(self)

def _can_target(cmd, arch):
"""Return true if the architecture supports the -arch flag"""
Expand All @@ -386,13 +378,9 @@ def _can_target(cmd, arch):
from distutils import log
log.set_verbosity(2)

try:
compiler = GnuFCompiler()
compiler.customize()
print(compiler.get_version())
except Exception:
msg = get_exception()
print(msg)
compiler = GnuFCompiler()
compiler.customize()
print(compiler.get_version())

try:
compiler = Gnu95FCompiler()
Expand Down
67 changes: 22 additions & 45 deletions numpy/distutils/mingw32ccompiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,30 +87,17 @@ def __init__ (self,
elif self.linker_dll == 'gcc':
self.linker = 'g++'

p = subprocess.Popen(['gcc', '--version'], shell=True,
stdout=subprocess.PIPE)
out_string = p.stdout.read()
p.stdout.close()

# Before build with MinGW-W64 generate the python import library
# with gendef and dlltool according to the MingW-W64 FAQ.
# Use the MinGW-W64 provided msvc runtime import libraries.
# Don't call build_import_library() and build_msvcr_library.

if 'MinGW-W64' not in str(out_string):

# **changes: eric jones 4/11/01
# 1. Check for import library on Windows. Build if it doesn't
# exist.
build_import_library()

# Check for custom msvc runtime library on Windows. Build if it
# doesn't exist.
msvcr_success = build_msvcr_library()
msvcr_dbg_success = build_msvcr_library(debug=True)
if msvcr_success or msvcr_dbg_success:
# add preprocessor statement for using customized msvcr lib
self.define_macro('NPY_MINGW_USE_CUSTOM_MSVCR')
# **changes: eric jones 4/11/01
# 1. Check for import library on Windows. Build if it doesn't exist.

build_import_library()

# Check for custom msvc runtime library on Windows. Build if it doesn't exist.
msvcr_success = build_msvcr_library()
msvcr_dbg_success = build_msvcr_library(debug=True)
if msvcr_success or msvcr_dbg_success:
# add preprocessor statement for using customized msvcr lib
self.define_macro('NPY_MINGW_USE_CUSTOM_MSVCR')

# Define the MSVC version as hint for MinGW
msvcr_version = '0x%03i0' % int(msvc_runtime_library().lstrip('msvcr'))
Expand All @@ -131,12 +118,10 @@ def __init__ (self,
else:
# gcc-4 series releases do not support -mno-cygwin option
self.set_executables(
compiler='gcc -march=x86-64 -mtune=generic -DMS_WIN64'
' -O2 -msse2 -Wall',
compiler_so='gcc -march=x86-64 -mtune=generic -DMS_WIN64'
' -O2 -msse2 -Wall -Wstrict-prototypes',
linker_exe='gcc',
linker_so='gcc -shared -Wl,-gc-sections -Wl,-s')
compiler='gcc -g -DDEBUG -DMS_WIN64 -O0 -Wall',
compiler_so='gcc -g -DDEBUG -DMS_WIN64 -O0 -Wall -Wstrict-prototypes',
linker_exe='gcc -g',
linker_so='gcc -g -shared')
else:
if self.gcc_version <= "3.0.0":
self.set_executables(
Expand All @@ -154,21 +139,13 @@ def __init__ (self,
linker_exe='g++ -mno-cygwin',
linker_so='g++ -mno-cygwin -shared')
else:
# gcc-4 series releases do not support -mno-cygwin option i686
# build needs '-mincoming-stack-boundary=2' due to ABI
# incompatibility to Win32 ABI
self.set_executables(
compiler='gcc -O2 -march=core2 -mtune=generic'
' -mfpmath=sse -msse2'
' -mincoming-stack-boundary=2 -Wall',
compiler_so='gcc -O2 -march=core2 -mtune=generic'
' -mfpmath=sse -msse2'
' -mincoming-stack-boundary=2 -Wall'
' -Wstrict-prototypes',
linker_exe='g++ ',
linker_so='g++ -shared -Wl,-gc-sections -Wl,-s')
# added for python2.3 support we can't pass it through set_executables
# because pre 2.2 would fail
# gcc-4 series releases do not support -mno-cygwin option
self.set_executables(compiler='gcc -O2 -Wall',
compiler_so='gcc -O2 -Wall -Wstrict-prototypes',
linker_exe='g++ ',
linker_so='g++ -shared')
# added for python2.3 support
# we can't pass it through set_executables because pre 2.2 would fail
self.compiler_cxx = ['g++']

# Maybe we should also append -mthreads, but then the finished dlls
Expand Down
18 changes: 0 additions & 18 deletions numpy/distutils/system_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -1751,24 +1751,6 @@ def check_embedded_lapack(self, info):
res = False
finally:
shutil.rmtree(tmpdir)
if sys.platform == 'win32' and not res:
c = distutils.ccompiler.new_compiler(compiler='mingw32')
tmpdir = tempfile.mkdtemp()
src = os.path.join(tmpdir, 'source.c')
out = os.path.join(tmpdir, 'a.out')
try:
with open(src, 'wt') as f:
f.write(s)
obj = c.compile([src], output_dir=tmpdir)
try:
c.link_executable(obj, out, libraries=info['libraries'],
library_dirs=info['library_dirs'],
extra_postargs=extra_args)
res = True
except distutils.ccompiler.LinkError:
res = False
finally:
shutil.rmtree(tmpdir)
return res


Expand Down
2 changes: 1 addition & 1 deletion numpy/lib/tests/test_function_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ def test_ufunc(self):
args = np.array([0, 0.5 * np.pi, np.pi, 1.5 * np.pi, 2 * np.pi])
r1 = f(args)
r2 = np.cos(args)
assert_array_almost_equal(r1, r2)
assert_array_equal(r1, r2)

def test_keywords(self):

Expand Down
1 change: 0 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,6 @@ def setup_package():
platforms = ["Windows", "Linux", "Solaris", "Mac OS-X", "Unix"],
test_suite='nose.collector',
cmdclass={"sdist": sdist_checked},
package_data={'numpy.core': ['libopenblaspy.dll']},
)

# Run build
Expand Down
0