From 6c8fee41b0ea3bc752f6ce0e946a4991acb3146a Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Mon, 4 Jan 2021 18:53:40 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/numpy.git#a9f53565fc989fda4e892435bcf9ce9672db5a9c --- 18100.patch | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++ numpy.spec | 8 ++- 2 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 18100.patch diff --git a/18100.patch b/18100.patch new file mode 100644 index 0000000..8af9ca2 --- /dev/null +++ b/18100.patch @@ -0,0 +1,179 @@ +From caec7f21ce3ca2672e93781a379734295c00debe Mon Sep 17 00:00:00 2001 +From: Sayed Adel +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") diff --git a/numpy.spec b/numpy.spec index b686bb5..6c5274c 100644 --- a/numpy.spec +++ b/numpy.spec @@ -20,7 +20,7 @@ Name: numpy Version: 1.20.0 -Release: 0.rc2%{?dist} +Release: 0.1.rc2%{?dist} Epoch: 1 Summary: A fast multidimensional array facility for Python @@ -30,6 +30,9 @@ URL: http://www.numpy.org/ Source0: https://github.com/%{name}/%{name}/releases/download/v%{version}rc2/%{name}-%{version}rc2.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 @@ -194,6 +197,9 @@ python3 runtests.py %changelog +* Mon Jan 04 2021 Nikola Forró - 1:1.20.0-0.1.rc2 +- Generate the main dispatcher config header into the build dir + * Mon Dec 28 2020 Gwyn Ciesla - 1:1.20.0-0.rc2 - 1.20.0 rc2