1.20.0 final.

This commit is contained in:
Gwyn Ciesla 2021-02-01 09:38:53 -06:00
parent 432691bcac
commit d9d4c7ceaf
4 changed files with 8 additions and 187 deletions

1
.gitignore vendored
View File

@ -83,3 +83,4 @@ numpy-1.4.1.tar.gz
/numpy-1.19.3.tar.gz
/numpy-1.19.4.tar.gz
/numpy-1.20.0rc2.tar.gz
/numpy-1.20.0.tar.gz

View File

@ -1,179 +0,0 @@
From caec7f21ce3ca2672e93781a379734295c00debe Mon Sep 17 00:00:00 2001
From: Sayed Adel <seiko@imavr.com>
Date: Wed, 30 Dec 2020 10:15:55 +0000
Subject: [PATCH] BUG, BLD: Generate the main dispatcher config header into the
build dir
The new path becomes `build/src.*/numpy/distutils/include/npy_cpu_dispatch_config.h`
instead of `numpy/core/src/common/_cpu_dispatch.h`.
The new path allows other projects to re-use the CPU dispatcher
once we decide to expose the following headers:
- `numpy/core/src/common/npy_cpu_dispatch.h`
- `numpy/core/src/common/npy_cpu_features.h`
---
numpy/core/src/common/npy_cpu_dispatch.h | 4 +--
numpy/distutils/ccompiler_opt.py | 32 +++++++++++++-----------
numpy/distutils/command/build_clib.py | 18 +++++++++----
numpy/distutils/command/build_ext.py | 22 +++++++++++-----
5 files changed, 48 insertions(+), 31 deletions(-)
diff --git a/numpy/core/src/common/npy_cpu_dispatch.h b/numpy/core/src/common/npy_cpu_dispatch.h
index a0f82fa3da0..f69fd2b2ee8 100644
--- a/numpy/core/src/common/npy_cpu_dispatch.h
+++ b/numpy/core/src/common/npy_cpu_dispatch.h
@@ -7,7 +7,7 @@
#include "npy_cpu_features.h" // NPY_CPU_HAVE
#include "numpy/utils.h" // NPY_EXPAND, NPY_CAT
/**
- * Bringing the main configration header '_cpu_dispatch.h'.
+ * Bringing the main configration header 'npy_cpu_dispatch_config.h'.
*
* This header is generated by the distutils module 'ccompiler_opt',
* and contains all the #definitions and headers of instruction-sets,
@@ -33,7 +33,7 @@
#define NPY__DISPATCH_DEFBOOL
typedef bool npy__dispatch_bkbool;
#endif
- #include "_cpu_dispatch.h"
+ #include "npy_cpu_dispatch_config.h"
#ifdef NPY_HAVE_VSX
#undef bool
#undef vector
diff --git a/numpy/distutils/ccompiler_opt.py b/numpy/distutils/ccompiler_opt.py
index ecf5172ccca..39c08d36b2a 100644
--- a/numpy/distutils/ccompiler_opt.py
+++ b/numpy/distutils/ccompiler_opt.py
@@ -2240,6 +2240,14 @@ def generate_dispatch_header(self, header_path):
baseline_len = len(baseline_names)
dispatch_len = len(dispatch_names)
+ header_dir = os.path.dirname(header_path)
+ if not os.path.exists(header_dir):
+ self.dist_log(
+ f"dispatch header dir {header_dir} isn't exist, creating it",
+ stderr=True
+ )
+ os.makedirs(header_dir)
+
with open(header_path, 'w') as f:
baseline_calls = ' \\\n'.join([
(
@@ -2504,30 +2512,24 @@ def _generate_config(self, output_dir, dispatch_src, targets, has_baseline=False
))
return False
-def new_ccompiler_opt(compiler, **kwargs):
+def new_ccompiler_opt(compiler, dispatch_hpath, **kwargs):
"""
Create a new instance of 'CCompilerOpt' and generate the dispatch header
- inside NumPy source dir.
+ which containing all definitions and headers of instruction-sets for
+ the enabled CPU baseline and dispatch-able features.
Parameters
----------
- 'compiler' : CCompiler instance
- '**kwargs': passed as-is to `CCompilerOpt(...)`
+ compiler : CCompiler instance
+ dispatch_hpath : str
+ path of the dispatch header
+ **kwargs: passed as-is to `CCompilerOpt(...)`
Returns
-------
new instance of CCompilerOpt
"""
opt = CCompilerOpt(compiler, **kwargs)
- npy_path = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
- header_dir = os.path.join(npy_path, *("core/src/common".split("/")))
- header_path = os.path.join(header_dir, "_cpu_dispatch.h")
- if not os.path.exists(header_path) or not opt.is_cached():
- if not os.path.exists(header_dir):
- opt.dist_log(
- "dispatch header dir '%s' isn't exist, creating it" % header_dir,
- stderr=True
- )
- os.makedirs(header_dir)
- opt.generate_dispatch_header(header_path)
+ if not os.path.exists(dispatch_hpath) or not opt.is_cached():
+ opt.generate_dispatch_header(dispatch_hpath)
return opt
diff --git a/numpy/distutils/command/build_clib.py b/numpy/distutils/command/build_clib.py
index a0db6f31f7e..1b3004c2f09 100644
--- a/numpy/distutils/command/build_clib.py
+++ b/numpy/distutils/command/build_clib.py
@@ -118,12 +118,15 @@ def run(self):
self.compiler.show_customization()
if not self.disable_optimization:
+ dispatch_hpath = os.path.join("numpy", "distutils", "include", "npy_cpu_dispatch_config.h")
+ dispatch_hpath = os.path.join(self.get_finalized_command("build_src").build_src, dispatch_hpath)
opt_cache_path = os.path.abspath(
- os.path.join(self.build_temp, 'ccompiler_opt_cache_clib.py'
- ))
+ os.path.join(self.build_temp, 'ccompiler_opt_cache_clib.py')
+ )
self.compiler_opt = new_ccompiler_opt(
- compiler=self.compiler, cpu_baseline=self.cpu_baseline,
- cpu_dispatch=self.cpu_dispatch, cache_path=opt_cache_path
+ compiler=self.compiler, dispatch_hpath=dispatch_hpath,
+ cpu_baseline=self.cpu_baseline, cpu_dispatch=self.cpu_dispatch,
+ cache_path=opt_cache_path
)
if not self.compiler_opt.is_cached():
log.info("Detected changes on compiler optimizations, force rebuilding")
@@ -271,7 +274,12 @@ def build_a_library(self, build_info, lib_name, libraries):
copt_baseline_flags = []
copt_macros = []
if not self.disable_optimization:
- copt_build_src = None if self.inplace else self.get_finalized_command("build_src").build_src
+ bsrc_dir = self.get_finalized_command("build_src").build_src
+ dispatch_hpath = os.path.join("numpy", "distutils", "include")
+ dispatch_hpath = os.path.join(bsrc_dir, dispatch_hpath)
+ include_dirs.append(dispatch_hpath)
+
+ copt_build_src = None if self.inplace else bsrc_dir
copt_c_sources = [
c_sources.pop(c_sources.index(src))
for src in c_sources[:] if src.endswith(".dispatch.c")
diff --git a/numpy/distutils/command/build_ext.py b/numpy/distutils/command/build_ext.py
index ca6f8bcd24d..448f7941cd9 100644
--- a/numpy/distutils/command/build_ext.py
+++ b/numpy/distutils/command/build_ext.py
@@ -146,11 +146,16 @@ def run(self):
self.compiler.show_customization()
if not self.disable_optimization:
- opt_cache_path = os.path.abspath(os.path.join(self.build_temp, 'ccompiler_opt_cache_ext.py'))
- self.compiler_opt = new_ccompiler_opt(compiler=self.compiler,
- cpu_baseline=self.cpu_baseline,
- cpu_dispatch=self.cpu_dispatch,
- cache_path=opt_cache_path)
+ dispatch_hpath = os.path.join("numpy", "distutils", "include", "npy_cpu_dispatch_config.h")
+ dispatch_hpath = os.path.join(self.get_finalized_command("build_src").build_src, dispatch_hpath)
+ opt_cache_path = os.path.abspath(
+ os.path.join(self.build_temp, 'ccompiler_opt_cache_ext.py')
+ )
+ self.compiler_opt = new_ccompiler_opt(
+ compiler=self.compiler, dispatch_hpath=dispatch_hpath,
+ cpu_baseline=self.cpu_baseline, cpu_dispatch=self.cpu_dispatch,
+ cache_path=opt_cache_path
+ )
if not self.compiler_opt.is_cached():
log.info("Detected changes on compiler optimizations, force rebuilding")
self.force = True
@@ -416,7 +421,12 @@ def build_extension(self, ext):
copt_baseline_flags = []
copt_macros = []
if not self.disable_optimization:
- copt_build_src = None if self.inplace else self.get_finalized_command("build_src").build_src
+ bsrc_dir = self.get_finalized_command("build_src").build_src
+ dispatch_hpath = os.path.join("numpy", "distutils", "include")
+ dispatch_hpath = os.path.join(bsrc_dir, dispatch_hpath)
+ include_dirs.append(dispatch_hpath)
+
+ copt_build_src = None if self.inplace else bsrc_dir
copt_c_sources = [
c_sources.pop(c_sources.index(src))
for src in c_sources[:] if src.endswith(".dispatch.c")

View File

@ -20,19 +20,16 @@
Name: numpy
Version: 1.20.0
Release: 0.2.rc2%{?dist}
Release: 1%{?dist}
Epoch: 1
Summary: A fast multidimensional array facility for Python
# Everything is BSD except for class SafeEval in numpy/lib/utils.py which is Python
License: BSD and Python and ASL 2.0
URL: http://www.numpy.org/
Source0: https://github.com/%{name}/%{name}/releases/download/v%{version}rc2/%{name}-%{version}rc2.tar.gz
Source0: https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
Source1: https://numpy.org/doc/1.19/numpy-html.zip
# https://github.com/numpy/numpy/pull/18100
Patch0: 18100.patch
%description
NumPy is a general-purpose array-processing package designed to
efficiently manipulate large multi-dimensional arrays of arbitrary
@ -105,7 +102,7 @@ This package provides the complete documentation for NumPy.
%prep
%autosetup -n %{name}-%{version}rc2 -p1
%autosetup -n %{name}-%{version} -p1
# Force re-cythonization (ifed for PKG-INFO presence in setup.py)
rm PKG-INFO
@ -197,6 +194,9 @@ python3 runtests.py
%changelog
* Mon Feb 01 2021 Gwyn Ciesla <gwync@protonmail.com> - 1:1.20.0-1
- 1.20.0 final.
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.20.0-0.2.rc2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

View File

@ -1,2 +1 @@
SHA512 (numpy-1.20.0rc2.tar.gz) = f723e1951de7dd4598355e09f64293781808c78e532794e90603c3198ba24291a84dc2bc4748a6dd79a0caa13db864e8f1920b31b28956481bb237dcae4614a5
SHA512 (numpy-html.zip) = 4a421636523424a0703290b6a0ba53b85a9a9e8a6256363e2481f1c02ae278825c09f2f13d39e99f8aae21f57a4978723f3fc690693520f8c3b45a5b4c5a38ab
SHA512 (numpy-1.20.0.tar.gz) = 98d8a8dac30452001ca82351d91e9adcabda601a1d011ed6d994cfa286cea66c0f44ac195ca0a7d5399452debd425f8d70ab4091f1b4a61d77133676b2faa2d3