Source: pythran
Version: 0.10.0+ds2-8
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: [email protected]
Usertags: ftbfs-20220624 ftbfs-bookworm
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_test
> I: pybuild pybuild:300: cp -r /<<PKGBUILDDIR>>/pythran/tests
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran
> I: pybuild base:239: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build;
> python3.9 -m pytest pythran/tests/test_base.py
> ============================= test session starts
> ==============================
> platform linux -- Python 3.9.13, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
> rootdir: /<<PKGBUILDDIR>>
> collected 196 items
>
> pythran/tests/test_base.py .....................................F....... [
> 22%]
> .......s................................................................ [
> 59%]
> ........................................................................ [
> 96%]
> .......
> [100%]
>
> =================================== FAILURES
> ===================================
> __________________________ TestBase.test_complex_conj
> __________________________
>
> attrs = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...t.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>], 'headers': [], 'name': 'test_complex_conjugate', ...}
> klass = <class 'numpy.distutils.numpy_distribution.NumpyDistribution'>
> dist = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7fc214d70d90>
> ok = True
>
> def setup (**attrs):
> """The gateway to the Distutils: do everything your setup script needs
> to do, in a highly flexible and user-driven way. Briefly: create a
> Distribution instance; find and parse config files; parse the command
> line; run each Distutils command found there, customized by the
> options
> supplied to 'setup()' (as keyword arguments), in config files, and on
> the command line.
>
> The Distribution instance might be an instance of a class supplied via
> the 'distclass' keyword argument to 'setup'; if no such class is
> supplied, then the Distribution class (in dist.py) is instantiated.
> All other arguments to 'setup' (except for 'cmdclass') are used to set
> attributes of the Distribution instance.
>
> The 'cmdclass' argument, if supplied, is a dictionary mapping command
> names to command classes. Each command encountered on the command
> line
> will be turned into a command class, which is in turn instantiated;
> any
> class found in 'cmdclass' is used in place of the default, which is
> (for command 'foo_bar') class 'foo_bar' in module
> 'distutils.command.foo_bar'. The command class must provide a
> 'user_options' attribute which is a list of option specifiers for
> 'distutils.fancy_getopt'. Any command-line options between the
> current
> and the next command are used to set attributes of the current command
> object.
>
> When the entire command-line has been successfully parsed, calls the
> 'run()' method on each command object in turn. This method will be
> driven entirely by the Distribution object (which each command object
> has a reference to, thanks to its constructor), and the
> command-specific options that became attributes of each command
> object.
> """
>
> global _setup_stop_after, _setup_distribution
>
> # Determine the distribution class -- either caller-supplied or
> # our Distribution (see below).
> klass = attrs.get('distclass')
> if klass:
> del attrs['distclass']
> else:
> klass = Distribution
>
> if 'script_name' not in attrs:
> attrs['script_name'] = os.path.basename(sys.argv[0])
> if 'script_args' not in attrs:
> attrs['script_args'] = sys.argv[1:]
>
> # Create the Distribution instance, using the remaining arguments
> # (ie. everything except distclass) to initialize it
> try:
> _setup_distribution = dist = klass(attrs)
> except DistutilsSetupError as msg:
> if 'name' not in attrs:
> raise SystemExit("error in setup command: %s" % msg)
> else:
> raise SystemExit("error in %s setup command: %s" % \
> (attrs['name'], msg))
>
> if _setup_stop_after == "init":
> return dist
>
> # Find and parse the config file(s): they will override options from
> # the setup script, but be overridden by the command line.
> dist.parse_config_files()
>
> if DEBUG:
> print("options (after parsing config files):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "config":
> return dist
>
> # Parse the command line and override config files; any
> # command-line errors are the end user's fault, so turn them into
> # SystemExit to suppress tracebacks.
> try:
> ok = dist.parse_command_line()
> except DistutilsArgError as msg:
> raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" %
> msg)
>
> if DEBUG:
> print("options (after parsing command line):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "commandline":
> return dist
>
> # And finally, run all the commands found on the command line.
> if ok:
> try:
> > dist.run_commands()
>
> /usr/lib/python3.9/distutils/core.py:148:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7fc214d70d90>
>
> def run_commands(self):
> """Run each command that was seen on the setup script command line.
> Uses the list of commands found and cache of command objects
> created by 'get_command_obj()'.
> """
> for cmd in self.commands:
> > self.run_command(cmd)
>
> /usr/lib/python3.9/distutils/dist.py:966:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7fc214d70d90>
> command = 'build_ext'
>
> def run_command(self, command):
> """Do whatever it takes to run a command (including nothing at all,
> if the command has already been run). Specifically: if we have
> already created and run the command named by 'command', return
> silently without doing anything. If the command named by 'command'
> doesn't even have a command object yet, create one. Then invoke
> 'run()' on that command object (or an existing one).
> """
> # Already been here, done that? then return silently.
> if self.have_run.get(command):
> return
>
> log.info("running %s", command)
> cmd_obj = self.get_command_obj(command)
> cmd_obj.ensure_finalized()
> > cmd_obj.run()
>
> /usr/lib/python3.9/distutils/dist.py:985:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7fc214d893a0>
>
> def run(self):
> from distutils.ccompiler import new_compiler
>
> # 'self.extensions', as supplied by setup.py, is a list of
> # Extension instances. See the documentation for Extension (in
> # distutils.extension) for details.
> #
> # For backwards compatibility with Distutils 0.8.2 and earlier, we
> # also allow the 'extensions' list to be a list of tuples:
> # (ext_name, build_info)
> # where build_info is a dictionary containing everything that
> # Extension instances do except the name, with a few things being
> # differently named. We convert these 2-tuples to Extension
> # instances as needed.
>
> if not self.extensions:
> return
>
> # If we were asked to build any C/C++ libraries, make sure that the
> # directory where we put them is in the library search path for
> # linking extensions.
> if self.distribution.has_c_libraries():
> build_clib = self.get_finalized_command('build_clib')
> self.libraries.extend(build_clib.get_library_names() or [])
> self.library_dirs.append(build_clib.build_clib)
>
> # Setup the CCompiler object that we'll use to do all the
> # compiling and linking
> self.compiler = new_compiler(compiler=self.compiler,
> verbose=self.verbose,
> dry_run=self.dry_run,
> force=self.force)
> customize_compiler(self.compiler)
> # If we are cross-compiling, init the compiler now (if we are not
> # cross-compiling, init would not hurt, but people may rely on
> # late initialization of compiler even if they shouldn't...)
> if os.name == 'nt' and self.plat_name != get_platform():
> self.compiler.initialize(self.plat_name)
>
> # And make sure that any compile/link-related options (which might
> # come from the command-line or from the setup script) are set in
> # that CCompiler object -- that way, they automatically apply to
> # all compiling and linking done here.
> if self.include_dirs is not None:
> self.compiler.set_include_dirs(self.include_dirs)
> if self.define is not None:
> # 'define' option is a list of (name,value) tuples
> for (name, value) in self.define:
> self.compiler.define_macro(name, value)
> if self.undef is not None:
> for macro in self.undef:
> self.compiler.undefine_macro(macro)
> if self.libraries is not None:
> self.compiler.set_libraries(self.libraries)
> if self.library_dirs is not None:
> self.compiler.set_library_dirs(self.library_dirs)
> if self.rpath is not None:
> self.compiler.set_runtime_library_dirs(self.rpath)
> if self.link_objects is not None:
> self.compiler.set_link_objects(self.link_objects)
>
> # Now actually compile and link everything.
> > self.build_extensions()
>
> /usr/lib/python3.9/distutils/command/build_ext.py:340:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7fc214d893a0>
>
> def build_extensions(self):
> # First, sanity-check the 'extensions' list
> self.check_extensions_list(self.extensions)
> if self.parallel:
> self._build_extensions_parallel()
> else:
> > self._build_extensions_serial()
>
> /usr/lib/python3.9/distutils/command/build_ext.py:449:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7fc214d893a0>
>
> def _build_extensions_serial(self):
> for ext in self.extensions:
> with self._filter_build_errors(ext):
> > self.build_extension(ext)
>
> /usr/lib/python3.9/distutils/command/build_ext.py:474:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7fc214d893a0>
> ext = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>
>
> def build_extension(self, ext):
> StringTypes = str,
>
> def get_value(obj, key):
> var = getattr(obj, key)
> if isinstance(var, Iterable) and not isinstance(var, StringTypes):
> return var[0]
> else:
> return var
>
> def set_value(obj, key, value):
> var = getattr(obj, key)
> if isinstance(var, Iterable) and not isinstance(var, StringTypes):
> var[0] = value
> else:
> setattr(obj, key, value)
>
> prev = {
> # linux-like
> 'preprocessor': None,
> 'compiler_cxx': None,
> 'compiler_so': None,
> 'compiler': None,
> 'linker_exe': None,
> 'linker_so': None,
> # Windows-like
> 'cc': None,
> }
> # Backup compiler settings
> for key in list(prev.keys()):
> if hasattr(self.compiler, key):
> prev[key] = get_value(self.compiler, key)
> else:
> del prev[key]
>
> # try hard to modify the compiler
> if getattr(ext, 'cxx', None) is not None:
> for comp in prev:
> if hasattr(self.compiler, comp):
> set_value(self.compiler, comp, ext.cxx)
>
> find_exe = None
> if getattr(ext, 'cc', None) is not None:
> try:
> import distutils._msvccompiler as msvc
> # install hook
> find_exe = msvc._find_exe
>
> def _find_exe(exe, *args, **kwargs):
> if exe == 'cl.exe':
> exe = ext.cc
> return find_exe(exe, *args, **kwargs)
>
> msvc._find_exe = _find_exe
> except ImportError:
> pass
>
> # In general, distutils uses -Wstrict-prototypes, but this option
> # is not valid for C++ code, only for C. Remove it if it's there
> # to avoid a spurious warning on every compilation.
> for flag in cfg.cfg.get('compiler', "ignoreflags").split():
> for target in ('compiler_so', 'linker_so'):
> try:
> while True:
> getattr(self.compiler, target).remove(flag)
> except (AttributeError, ValueError):
> pass
>
> # Remove -arch i386 if 'x86_64' is specified, otherwise incorrect
> # code is generated, at least on OSX
> if hasattr(self.compiler, 'compiler_so'):
> archs = defaultdict(list)
> for i, flag in enumerate(self.compiler.compiler_so[1:]):
> if self.compiler.compiler_so[i] == '-arch':
> archs[flag].append(i + 1)
> if 'x86_64' in archs and 'i386' in archs:
> for i in archs['i386']:
> self.compiler.compiler_so[i] = 'x86_64'
>
> try:
> > return super(PythranBuildExtMixIn, self).build_extension(ext)
>
> pythran/dist.py:109:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7fc214d893a0>
> ext = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>
>
> def build_extension(self, ext):
> sources = ext.sources
> if sources is None or not isinstance(sources, (list, tuple)):
> raise DistutilsSetupError(
> "in 'ext_modules' option (extension '%s'), "
> "'sources' must be present and must be "
> "a list of source filenames" % ext.name)
> # sort to make the resulting .so file build reproducible
> sources = sorted(sources)
>
> ext_path = self.get_ext_fullpath(ext.name)
> depends = sources + ext.depends
> if not (self.force or newer_group(depends, ext_path, 'newer')):
> log.debug("skipping '%s' extension (up-to-date)", ext.name)
> return
> else:
> log.info("building '%s' extension", ext.name)
>
> # First, scan the sources for SWIG definition files (.i), run
> # SWIG on 'em to create .c files, and modify the sources list
> # accordingly.
> sources = self.swig_sources(sources, ext)
>
> # Next, compile the source code to object files.
>
> # XXX not honouring 'define_macros' or 'undef_macros' -- the
> # CCompiler API needs to change to accommodate this, and I
> # want to do one thing at a time!
>
> # Two possible sources for extra compiler arguments:
> # - 'extra_compile_args' in Extension object
> # - CFLAGS environment variable (not particularly
> # elegant, but people seem to expect it and I
> # guess it's useful)
> # The environment variable should take precedence, and
> # any sensible compiler will give precedence to later
> # command line args. Hence we combine them in order:
> extra_args = ext.extra_compile_args or []
>
> macros = ext.define_macros[:]
> for undef in ext.undef_macros:
> macros.append((undef,))
>
> > objects = self.compiler.compile(sources,
> output_dir=self.build_temp,
> macros=macros,
> include_dirs=ext.include_dirs,
> debug=self.debug,
> extra_postargs=extra_args,
> depends=ext.depends)
>
> /usr/lib/python3.9/distutils/command/build_ext.py:529:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7fc214d89580>
> args = (['/tmp/tmp686izx2b.cpp'],)
> kw = {'debug': None, 'depends': [], 'extra_postargs': ['-std=c++11',
> '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv'...ythran/build/pythran',
> '/usr/lib/python3/dist-packages/numpy/core/include', '/usr/local/include',
> '/usr/include'], ...}
>
> > m = lambda self, *args, **kw: func(self, *args, **kw)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:89:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7fc214d89580>
> sources = ['/tmp/tmp686izx2b.cpp'], output_dir = '/tmp/tmpch4dkgb_'
> macros = [('ENABLE_PYTHON_MODULE', None), ('__PYTHRAN__', '3'),
> ('PYTHRAN_BLAS_BLAS', None)]
> include_dirs =
> ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran',
> '/usr/lib/python3/dist-packages/numpy/core/include', '/usr/local/include',
> '/usr/include']
> debug = None, extra_preargs = None
> extra_postargs = ['-std=c++11', '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv', '-Wno-unused-function', '-Wno-int-in-bool-context', ...]
> depends = []
>
> def CCompiler_compile(self, sources, output_dir=None, macros=None,
> include_dirs=None, debug=0, extra_preargs=None,
> extra_postargs=None, depends=None):
> """
> Compile one or more source files.
>
> Please refer to the Python distutils API reference for more details.
>
> Parameters
> ----------
> sources : list of str
> A list of filenames
> output_dir : str, optional
> Path to the output directory.
> macros : list of tuples
> A list of macro definitions.
> include_dirs : list of str, optional
> The directories to add to the default include file search path for
> this compilation only.
> debug : bool, optional
> Whether or not to output debug symbols in or alongside the object
> file(s).
> extra_preargs, extra_postargs : ?
> Extra pre- and post-arguments.
> depends : list of str, optional
> A list of file names that all targets depend on.
>
> Returns
> -------
> objects : list of str
> A list of object file names, one per source file `sources`.
>
> Raises
> ------
> CompileError
> If compilation fails.
>
> """
> # This method is effective only with Python >=2.3 distutils.
> # Any changes here should be applied also to fcompiler.compile
> # method to support pre Python 2.3 distutils.
> global _job_semaphore
>
> jobs = get_num_build_jobs()
>
> # setup semaphore to not exceed number of compile jobs when
> parallelized at
> # extension level (python >= 3.5)
> with _global_lock:
> if _job_semaphore is None:
> _job_semaphore = threading.Semaphore(jobs)
>
> if not sources:
> return []
> from numpy.distutils.fcompiler import (FCompiler, is_f_file,
> has_f90_header)
> if isinstance(self, FCompiler):
> display = []
> for fc in ['f77', 'f90', 'fix']:
> fcomp = getattr(self, 'compiler_'+fc)
> if fcomp is None:
> continue
> display.append("Fortran %s compiler: %s" % (fc, '
> '.join(fcomp)))
> display = '\n'.join(display)
> else:
> ccomp = self.compiler_so
> display = "C compiler: %s\n" % (' '.join(ccomp),)
> log.info(display)
> macros, objects, extra_postargs, pp_opts, build = \
> self._setup_compile(output_dir, macros, include_dirs, sources,
> depends, extra_postargs)
> cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
> display = "compile options: '%s'" % (' '.join(cc_args))
> if extra_postargs:
> display += "\nextra options: '%s'" % (' '.join(extra_postargs))
> log.info(display)
>
> def single_compile(args):
> obj, (src, ext) = args
> if not _needs_build(obj, cc_args, extra_postargs, pp_opts):
> return
>
> # check if we are currently already processing the same object
> # happens when using the same source in multiple extensions
> while True:
> # need explicit lock as there is no atomic check and add with
> GIL
> with _global_lock:
> # file not being worked on, start working
> if obj not in _processing_files:
> _processing_files.add(obj)
> break
> # wait for the processing to end
> time.sleep(0.1)
>
> try:
> # retrieve slot from our #job semaphore and build
> with _job_semaphore:
> self._compile(obj, src, ext, cc_args, extra_postargs,
> pp_opts)
> finally:
> # register being done processing
> with _global_lock:
> _processing_files.remove(obj)
>
>
> if isinstance(self, FCompiler):
> objects_to_build = list(build.keys())
> f77_objects, other_objects = [], []
> for obj in objects:
> if obj in objects_to_build:
> src, ext = build[obj]
> if self.compiler_type=='absoft':
> obj = cyg2win32(obj)
> src = cyg2win32(src)
> if is_f_file(src) and not has_f90_header(src):
> f77_objects.append((obj, (src, ext)))
> else:
> other_objects.append((obj, (src, ext)))
>
> # f77 objects can be built in parallel
> build_items = f77_objects
> # build f90 modules serial, module files are generated during
> # compilation and may be used by files later in the list so the
> # ordering is important
> for o in other_objects:
> single_compile(o)
> else:
> build_items = build.items()
>
> if len(build) > 1 and jobs > 1:
> # build parallel
> import multiprocessing.pool
> pool = multiprocessing.pool.ThreadPool(jobs)
> pool.map(single_compile, build_items)
> pool.close()
> else:
> # build serial
> for o in build_items:
> > single_compile(o)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:366:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> args = ('/tmp/tmpch4dkgb_/tmp/tmp686izx2b.o', ('/tmp/tmp686izx2b.cpp',
> '.cpp'))
>
> def single_compile(args):
> obj, (src, ext) = args
> if not _needs_build(obj, cc_args, extra_postargs, pp_opts):
> return
>
> # check if we are currently already processing the same object
> # happens when using the same source in multiple extensions
> while True:
> # need explicit lock as there is no atomic check and add with GIL
> with _global_lock:
> # file not being worked on, start working
> if obj not in _processing_files:
> _processing_files.add(obj)
> break
> # wait for the processing to end
> time.sleep(0.1)
>
> try:
> # retrieve slot from our #job semaphore and build
> with _job_semaphore:
> > self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:326:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7fc214d89580>
> args = ('/tmp/tmpch4dkgb_/tmp/tmp686izx2b.o', '/tmp/tmp686izx2b.cpp', '.cpp',
> ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '...ython3_3.9_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...])
> kw = {}
>
> > m = lambda self, *args, **kw: func(self, *args, **kw)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:89:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7fc214d89580>
> obj = '/tmp/tmpch4dkgb_/tmp/tmp686izx2b.o', src = '/tmp/tmp686izx2b.cpp'
> ext = '.cpp'
> cc_args = ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '-DPYTHRAN_BLAS_BLAS',
> '-I/<<PKGBUILDDIR>>/.pybu...python3_3.9_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...]
> extra_postargs = ['-std=c++11', '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv', '-Wno-unused-function', '-Wno-int-in-bool-context', ...]
> pp_opts = ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '-DPYTHRAN_BLAS_BLAS',
> '-I/<<PKGBUILDDIR>>/.pybu...python3_3.9_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...]
>
> def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs,
> pp_opts):
> """Compile a single source files with a Unix-style compiler."""
> # HP ad-hoc fix, see ticket 1383
> ccomp = self.compiler_so
> if ccomp[0] == 'aCC':
> # remove flags that will trigger ANSI-C mode for aCC
> if '-Ae' in ccomp:
> ccomp.remove('-Ae')
> if '-Aa' in ccomp:
> ccomp.remove('-Aa')
> # add flags for (almost) sane C++ handling
> ccomp += ['-AA']
> self.compiler_so = ccomp
> # ensure OPT environment variable is read
> if 'OPT' in os.environ:
> # XXX who uses this?
> from sysconfig import get_config_vars
> opt = " ".join(os.environ['OPT'].split())
> gcv_opt = " ".join(get_config_vars('OPT')[0].split())
> ccomp_s = " ".join(self.compiler_so)
> if opt not in ccomp_s:
> ccomp_s = ccomp_s.replace(gcv_opt, opt)
> self.compiler_so = ccomp_s.split()
> llink_s = " ".join(self.linker_so)
> if opt not in llink_s:
> self.linker_so = llink_s.split() + opt.split()
>
> display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
>
> # gcc style automatic dependencies, outputs a makefile (-MF) that
> lists
> # all headers needed by a c file as a side effect of compilation
> (-MMD)
> if getattr(self, '_auto_depends', False):
> deps = ['-MMD', '-MF', obj + '.d']
> else:
> deps = []
>
> try:
> self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
> extra_postargs, display = display)
> except DistutilsExecError as e:
> msg = str(e)
> > raise CompileError(msg) from None
> E distutils.errors.CompileError: Command "x86_64-linux-gnu-gcc
> -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g
> -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.9 -c /tmp/tmp686izx2b.cpp -o
> /tmp/tmpch4dkgb_/tmp/tmp686izx2b.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> /usr/lib/python3/dist-packages/numpy/distutils/unixccompiler.py:57:
> CompileError
>
> During handling of the above exception, another exception occurred:
>
> module_name = 'test_complex_conjugate', cxxfile = '/tmp/tmp686izx2b.cpp'
> output_binary = None
> kwargs = {'extra_compile_args': ['-O0', '-Wall', '-Werror', '-UNDEBUG',
> '-Wno-unused-function', '-Wno-int-in-bool-context', ...]}
> builddir = '/tmp/tmpbgv4we0u', buildtmp = '/tmp/tmpch4dkgb_'
> extension = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>
>
> def compile_cxxfile(module_name, cxxfile, output_binary=None, **kwargs):
> '''c++ file -> native module
> Return the filename of the produced shared library
> Raises CompileError on failure
>
> '''
>
> builddir = mkdtemp()
> buildtmp = mkdtemp()
>
> extension = PythranExtension(module_name,
> [cxxfile],
> **kwargs)
>
> try:
> > setup(name=module_name,
> ext_modules=[extension],
> cmdclass={"build_ext": PythranBuildExt},
> # fake CLI call
> script_name='setup.py',
> script_args=['--verbose'
> if logger.isEnabledFor(logging.INFO)
> else '--quiet',
> 'build_ext',
> '--build-lib', builddir,
> '--build-temp', buildtmp]
> )
>
> pythran/toolchain.py:299:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> attr = {'cmdclass': {'build_ext': <class 'pythran.dist.PythranBuildExt'>},
> 'ext_modules': [<pythran.dist.PythranExtension('te... 'script_args':
> ['--verbose', 'build_ext', '--build-lib', '/tmp/tmpbgv4we0u', '--build-temp',
> '/tmp/tmpch4dkgb_'], ...}
> cmdclass = {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.command.build.bu...ib': <class
> 'numpy.distutils.command.build_clib.build_clib'>, 'build_ext': <class
> 'pythran.dist.PythranBuildExt'>, ...}
> new_attr = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...on'>, 'ext_modules':
> [<pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>], 'headers': [], ...}
>
> def setup(**attr):
>
> cmdclass = numpy_cmdclass.copy()
>
> new_attr = attr.copy()
> if 'cmdclass' in new_attr:
> cmdclass.update(new_attr['cmdclass'])
> new_attr['cmdclass'] = cmdclass
>
> if 'configuration' in new_attr:
> # To avoid calling configuration if there are any errors
> # or help request in command in the line.
> configuration = new_attr.pop('configuration')
>
> old_dist = distutils.core._setup_distribution
> old_stop = distutils.core._setup_stop_after
> distutils.core._setup_distribution = None
> distutils.core._setup_stop_after = "commandline"
> try:
> dist = setup(**new_attr)
> finally:
> distutils.core._setup_distribution = old_dist
> distutils.core._setup_stop_after = old_stop
> if dist.help or not _command_line_ok():
> # probably displayed help, skip running any commands
> return dist
>
> # create setup dictionary and append to new_attr
> config = configuration()
> if hasattr(config, 'todict'):
> config = config.todict()
> _dict_append(new_attr, **config)
>
> # Move extension source libraries to libraries
> libraries = []
> for ext in new_attr.get('ext_modules', []):
> new_libraries = []
> for item in ext.libraries:
> if is_sequence(item):
> lib_name, build_info = item
> _check_append_ext_library(libraries, lib_name, build_info)
> new_libraries.append(lib_name)
> elif is_string(item):
> new_libraries.append(item)
> else:
> raise TypeError("invalid description of extension module "
> "library %r" % (item,))
> ext.libraries = new_libraries
> if libraries:
> if 'libraries' not in new_attr:
> new_attr['libraries'] = []
> for item in libraries:
> _check_append_library(new_attr['libraries'], item)
>
> # sources in ext_modules or libraries may contain header files
> if ('ext_modules' in new_attr or 'libraries' in new_attr) \
> and 'headers' not in new_attr:
> new_attr['headers'] = []
>
> # Use our custom NumpyDistribution class instead of distutils' one
> new_attr['distclass'] = NumpyDistribution
>
> > return old_setup(**new_attr)
>
> /usr/lib/python3/dist-packages/numpy/distutils/core.py:169:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> attrs = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...t.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>], 'headers': [], 'name': 'test_complex_conjugate', ...}
> klass = <class 'numpy.distutils.numpy_distribution.NumpyDistribution'>
> dist = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7fc214d70d90>
> ok = True
>
> def setup (**attrs):
> """The gateway to the Distutils: do everything your setup script needs
> to do, in a highly flexible and user-driven way. Briefly: create a
> Distribution instance; find and parse config files; parse the command
> line; run each Distutils command found there, customized by the
> options
> supplied to 'setup()' (as keyword arguments), in config files, and on
> the command line.
>
> The Distribution instance might be an instance of a class supplied via
> the 'distclass' keyword argument to 'setup'; if no such class is
> supplied, then the Distribution class (in dist.py) is instantiated.
> All other arguments to 'setup' (except for 'cmdclass') are used to set
> attributes of the Distribution instance.
>
> The 'cmdclass' argument, if supplied, is a dictionary mapping command
> names to command classes. Each command encountered on the command
> line
> will be turned into a command class, which is in turn instantiated;
> any
> class found in 'cmdclass' is used in place of the default, which is
> (for command 'foo_bar') class 'foo_bar' in module
> 'distutils.command.foo_bar'. The command class must provide a
> 'user_options' attribute which is a list of option specifiers for
> 'distutils.fancy_getopt'. Any command-line options between the
> current
> and the next command are used to set attributes of the current command
> object.
>
> When the entire command-line has been successfully parsed, calls the
> 'run()' method on each command object in turn. This method will be
> driven entirely by the Distribution object (which each command object
> has a reference to, thanks to its constructor), and the
> command-specific options that became attributes of each command
> object.
> """
>
> global _setup_stop_after, _setup_distribution
>
> # Determine the distribution class -- either caller-supplied or
> # our Distribution (see below).
> klass = attrs.get('distclass')
> if klass:
> del attrs['distclass']
> else:
> klass = Distribution
>
> if 'script_name' not in attrs:
> attrs['script_name'] = os.path.basename(sys.argv[0])
> if 'script_args' not in attrs:
> attrs['script_args'] = sys.argv[1:]
>
> # Create the Distribution instance, using the remaining arguments
> # (ie. everything except distclass) to initialize it
> try:
> _setup_distribution = dist = klass(attrs)
> except DistutilsSetupError as msg:
> if 'name' not in attrs:
> raise SystemExit("error in setup command: %s" % msg)
> else:
> raise SystemExit("error in %s setup command: %s" % \
> (attrs['name'], msg))
>
> if _setup_stop_after == "init":
> return dist
>
> # Find and parse the config file(s): they will override options from
> # the setup script, but be overridden by the command line.
> dist.parse_config_files()
>
> if DEBUG:
> print("options (after parsing config files):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "config":
> return dist
>
> # Parse the command line and override config files; any
> # command-line errors are the end user's fault, so turn them into
> # SystemExit to suppress tracebacks.
> try:
> ok = dist.parse_command_line()
> except DistutilsArgError as msg:
> raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" %
> msg)
>
> if DEBUG:
> print("options (after parsing command line):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "commandline":
> return dist
>
> # And finally, run all the commands found on the command line.
> if ok:
> try:
> dist.run_commands()
> except KeyboardInterrupt:
> raise SystemExit("interrupted")
> except OSError as exc:
> if DEBUG:
> sys.stderr.write("error: %s\n" % (exc,))
> raise
> else:
> raise SystemExit("error: %s" % (exc,))
>
> except (DistutilsError,
> CCompilerError) as msg:
> if DEBUG:
> raise
> else:
> > raise SystemExit("error: " + str(msg))
> E SystemExit: error: Command "x86_64-linux-gnu-gcc -pthread
> -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g
> -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.9 -c /tmp/tmp686izx2b.cpp -o
> /tmp/tmpch4dkgb_/tmp/tmp686izx2b.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> /usr/lib/python3.9/distutils/core.py:163: SystemExit
>
> During handling of the above exception, another exception occurred:
>
> self = <pythran.tests.test_base.TestBase testMethod=test_complex_conj>
>
> def test_complex_conj(self):
> > self.run_test("def complex_conjugate(c): return c.conjugate()",
> > complex(0,1), complex_conjugate=[complex])
>
> pythran/tests/test_base.py:540:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> pythran/tests/__init__.py:311: in run_test
> cxx_compiled = compile_pythrancode(
> pythran/toolchain.py:414: in compile_pythrancode
> output_file = compile_cxxcode(module_name,
> pythran/toolchain.py:354: in compile_cxxcode
> output_binary = compile_cxxfile(module_name, fdpath,
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> module_name = 'test_complex_conjugate', cxxfile = '/tmp/tmp686izx2b.cpp'
> output_binary = None
> kwargs = {'extra_compile_args': ['-O0', '-Wall', '-Werror', '-UNDEBUG',
> '-Wno-unused-function', '-Wno-int-in-bool-context', ...]}
> builddir = '/tmp/tmpbgv4we0u', buildtmp = '/tmp/tmpch4dkgb_'
> extension = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7fc214d70e20>
>
> def compile_cxxfile(module_name, cxxfile, output_binary=None, **kwargs):
> '''c++ file -> native module
> Return the filename of the produced shared library
> Raises CompileError on failure
>
> '''
>
> builddir = mkdtemp()
> buildtmp = mkdtemp()
>
> extension = PythranExtension(module_name,
> [cxxfile],
> **kwargs)
>
> try:
> setup(name=module_name,
> ext_modules=[extension],
> cmdclass={"build_ext": PythranBuildExt},
> # fake CLI call
> script_name='setup.py',
> script_args=['--verbose'
> if logger.isEnabledFor(logging.INFO)
> else '--quiet',
> 'build_ext',
> '--build-lib', builddir,
> '--build-temp', buildtmp]
> )
> except SystemExit as e:
> > raise CompileError(str(e))
> E distutils.errors.CompileError: error: Command
> "x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g
> -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat
> -Werror=format-security -g -fwrapv -O2 -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.9 -c /tmp/tmp686izx2b.cpp -o
> /tmp/tmpch4dkgb_/tmp/tmp686izx2b.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> pythran/toolchain.py:312: CompileError
> ----------------------------- Captured stdout call
> -----------------------------
> running build_ext
> new_compiler returns <class 'distutils.unixccompiler.UnixCCompiler'>
> building 'test_complex_conjugate' extension
> C compiler: x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare
> -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat
> -Werror=format-security -g -fwrapv -O2 -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
>
> creating /tmp/tmpch4dkgb_/tmp
> compile options: '-DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.9 -c'
> extra options: '-std=c++11 -fno-math-errno -fvisibility=hidden -fno-wrapv
> -Wno-unused-function -Wno-int-in-bool-context -Wno-unknown-warning-option -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -O0 -Wall -Werror -UNDEBUG -Wno-unused-function
> -Wno-int-in-bool-context -Wno-unknown-warning-option
> -Wno-unused-local-typedefs -Wno-missing-braces -Wno-unknown-pragmas'
> x86_64-linux-gnu-gcc: /tmp/tmp686izx2b.cpp
> ----------------------------- Captured stderr call
> -----------------------------
> In file included from
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/__dispatch__/conjugate.hpp:4,
> from /tmp/tmp686izx2b.cpp:10:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:22:36:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 22 | xsimd::batch<std::complex<T>, N>
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:22:36:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:46:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 23 | conjugate(xsimd::batch<std::complex<T>, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:46:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:
> In function ‘int {anonymous}::pythonic::numpy::wrapper::conjugate(const
> int&)’:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:25:25:
> error: cannot convert ‘std::complex<double>’ to ‘int’ in return
> 25 | return xsimd::conj(v);
> | ~~~~~~~~~~~^~~
> | |
> | std::complex<double>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:
> At global scope:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:22:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:22:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:51:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:51:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:24:
> error: redefinition of ‘template<class T, long unsigned int N> int
> {anonymous}::pythonic::numpy::wrapper::conjugate(const int&)’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^~~~~~~~~
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:5:
> note: ‘template<class T, long unsigned int N> int
> {anonymous}::pythonic::numpy::wrapper::conjugate(const int&)’ previously
> declared here
> 23 | conjugate(xsimd::batch<std::complex<T>, N> const &v)
> | ^~~~~~~~~
> cc1plus: note: unrecognized command-line option ‘-Wno-unknown-warning-option’
> may have been intended to silence earlier diagnostics
> cc1plus: note: unrecognized command-line option ‘-Wno-unknown-warning-option’
> may have been intended to silence earlier diagnostics
> WARNING: Compilation error, trying hard to find its origin...
> WARNING: Nop, I'm going to flood you with C++ errors!
> ------------------------------ Captured log call
> -------------------------------
> WARNING pythran:toolchain.py:419 Compilation error, trying hard to find its
> origin...
> WARNING pythran:toolchain.py:422 Nop, I'm going to flood you with C++ errors!
> =============================== warnings summary
> ===============================
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`.
> To silence this warning, use `bool` by itself. Doing this will not modify any
> behavior and is safe. If you specifically wanted the numpy scalar type, use
> `np.bool_` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.complex` is a deprecated alias for the builtin
> `complex`. To silence this warning, use `complex` by itself. Doing this will
> not modify any behavior and is safe. If you specifically wanted the numpy
> scalar type, use `np.complex128` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`.
> To silence this warning, use `float` by itself. Doing this will not modify
> any behavior and is safe. If you specifically wanted the numpy scalar type,
> use `np.float64` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`.
> To silence this warning, use `bool` by itself. Doing this will not modify any
> behavior and is safe. If you specifically wanted the numpy scalar type, use
> `np.bool_` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.complex` is a deprecated alias for the builtin
> `complex`. To silence this warning, use `complex` by itself. Doing this will
> not modify any behavior and is safe. If you specifically wanted the numpy
> scalar type, use `np.complex128` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`.
> To silence this warning, use `float` by itself. Doing this will not modify
> any behavior and is safe. If you specifically wanted the numpy scalar type,
> use `np.float64` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tests/__init__.py:72
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build/pythran/tests/__init__.py:72:
> PytestUnknownMarkWarning: Unknown pytest.mark.module - is this a typo? You
> can register custom marks to avoid this warning - for details, see
> https://docs.pytest.org/en/stable/mark.html
> module = pytest.mark.module
>
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_declarations
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return1
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return2
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return3
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_shadow_parameters
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_shadow_parameters
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_sorted1
> .pybuild/cpython3_3.9_pythran/build/pythran/tests/test_base.py::TestBase::test_sorted3
> /usr/lib/python3.9/ast.py:407: DeprecationWarning: visit_NameConstant is
> deprecated; add visit_Constant
> return visitor(node)
>
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info
> ============================
> FAILED pythran/tests/test_base.py::TestBase::test_complex_conj -
> distutils.er...
> ====== 1 failed, 194 passed, 1 skipped, 15 warnings in 443.85s (0:07:23)
> =======
> E: pybuild pybuild:369: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_pythran/build; python3.9 -m pytest
> pythran/tests/test_base.py
> I: pybuild pybuild:300: cp -r /<<PKGBUILDDIR>>/pythran/tests
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran
> I: pybuild base:239: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build; python3.10 -m pytest
> pythran/tests/test_base.py
> ============================= test session starts
> ==============================
> platform linux -- Python 3.10.5, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
> rootdir: /<<PKGBUILDDIR>>
> collected 196 items
>
> pythran/tests/test_base.py .....................................F....... [
> 22%]
> .......s................................................................ [
> 59%]
> ........................................................................ [
> 96%]
> .......
> [100%]
>
> =================================== FAILURES
> ===================================
> __________________________ TestBase.test_complex_conj
> __________________________
>
> attrs = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...t.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>], 'headers': [], 'name': 'test_complex_conjugate', ...}
> klass = <class 'numpy.distutils.numpy_distribution.NumpyDistribution'>
> dist = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7febbcb20970>
> ok = True
>
> def setup (**attrs):
> """The gateway to the Distutils: do everything your setup script needs
> to do, in a highly flexible and user-driven way. Briefly: create a
> Distribution instance; find and parse config files; parse the command
> line; run each Distutils command found there, customized by the
> options
> supplied to 'setup()' (as keyword arguments), in config files, and on
> the command line.
>
> The Distribution instance might be an instance of a class supplied via
> the 'distclass' keyword argument to 'setup'; if no such class is
> supplied, then the Distribution class (in dist.py) is instantiated.
> All other arguments to 'setup' (except for 'cmdclass') are used to set
> attributes of the Distribution instance.
>
> The 'cmdclass' argument, if supplied, is a dictionary mapping command
> names to command classes. Each command encountered on the command
> line
> will be turned into a command class, which is in turn instantiated;
> any
> class found in 'cmdclass' is used in place of the default, which is
> (for command 'foo_bar') class 'foo_bar' in module
> 'distutils.command.foo_bar'. The command class must provide a
> 'user_options' attribute which is a list of option specifiers for
> 'distutils.fancy_getopt'. Any command-line options between the
> current
> and the next command are used to set attributes of the current command
> object.
>
> When the entire command-line has been successfully parsed, calls the
> 'run()' method on each command object in turn. This method will be
> driven entirely by the Distribution object (which each command object
> has a reference to, thanks to its constructor), and the
> command-specific options that became attributes of each command
> object.
> """
>
> global _setup_stop_after, _setup_distribution
>
> # Determine the distribution class -- either caller-supplied or
> # our Distribution (see below).
> klass = attrs.get('distclass')
> if klass:
> del attrs['distclass']
> else:
> klass = Distribution
>
> if 'script_name' not in attrs:
> attrs['script_name'] = os.path.basename(sys.argv[0])
> if 'script_args' not in attrs:
> attrs['script_args'] = sys.argv[1:]
>
> # Create the Distribution instance, using the remaining arguments
> # (ie. everything except distclass) to initialize it
> try:
> _setup_distribution = dist = klass(attrs)
> except DistutilsSetupError as msg:
> if 'name' not in attrs:
> raise SystemExit("error in setup command: %s" % msg)
> else:
> raise SystemExit("error in %s setup command: %s" % \
> (attrs['name'], msg))
>
> if _setup_stop_after == "init":
> return dist
>
> # Find and parse the config file(s): they will override options from
> # the setup script, but be overridden by the command line.
> dist.parse_config_files()
>
> if DEBUG:
> print("options (after parsing config files):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "config":
> return dist
>
> # Parse the command line and override config files; any
> # command-line errors are the end user's fault, so turn them into
> # SystemExit to suppress tracebacks.
> try:
> ok = dist.parse_command_line()
> except DistutilsArgError as msg:
> raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" %
> msg)
>
> if DEBUG:
> print("options (after parsing command line):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "commandline":
> return dist
>
> # And finally, run all the commands found on the command line.
> if ok:
> try:
> > dist.run_commands()
>
> /usr/lib/python3.10/distutils/core.py:148:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7febbcb20970>
>
> def run_commands(self):
> """Run each command that was seen on the setup script command line.
> Uses the list of commands found and cache of command objects
> created by 'get_command_obj()'.
> """
> for cmd in self.commands:
> > self.run_command(cmd)
>
> /usr/lib/python3.10/distutils/dist.py:966:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7febbcb20970>
> command = 'build_ext'
>
> def run_command(self, command):
> """Do whatever it takes to run a command (including nothing at all,
> if the command has already been run). Specifically: if we have
> already created and run the command named by 'command', return
> silently without doing anything. If the command named by 'command'
> doesn't even have a command object yet, create one. Then invoke
> 'run()' on that command object (or an existing one).
> """
> # Already been here, done that? then return silently.
> if self.have_run.get(command):
> return
>
> log.info("running %s", command)
> cmd_obj = self.get_command_obj(command)
> cmd_obj.ensure_finalized()
> > cmd_obj.run()
>
> /usr/lib/python3.10/distutils/dist.py:985:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7febbcb22e00>
>
> def run(self):
> from distutils.ccompiler import new_compiler
>
> # 'self.extensions', as supplied by setup.py, is a list of
> # Extension instances. See the documentation for Extension (in
> # distutils.extension) for details.
> #
> # For backwards compatibility with Distutils 0.8.2 and earlier, we
> # also allow the 'extensions' list to be a list of tuples:
> # (ext_name, build_info)
> # where build_info is a dictionary containing everything that
> # Extension instances do except the name, with a few things being
> # differently named. We convert these 2-tuples to Extension
> # instances as needed.
>
> if not self.extensions:
> return
>
> # If we were asked to build any C/C++ libraries, make sure that the
> # directory where we put them is in the library search path for
> # linking extensions.
> if self.distribution.has_c_libraries():
> build_clib = self.get_finalized_command('build_clib')
> self.libraries.extend(build_clib.get_library_names() or [])
> self.library_dirs.append(build_clib.build_clib)
>
> # Setup the CCompiler object that we'll use to do all the
> # compiling and linking
> self.compiler = new_compiler(compiler=self.compiler,
> verbose=self.verbose,
> dry_run=self.dry_run,
> force=self.force)
> customize_compiler(self.compiler)
> # If we are cross-compiling, init the compiler now (if we are not
> # cross-compiling, init would not hurt, but people may rely on
> # late initialization of compiler even if they shouldn't...)
> if os.name == 'nt' and self.plat_name != get_platform():
> self.compiler.initialize(self.plat_name)
>
> # And make sure that any compile/link-related options (which might
> # come from the command-line or from the setup script) are set in
> # that CCompiler object -- that way, they automatically apply to
> # all compiling and linking done here.
> if self.include_dirs is not None:
> self.compiler.set_include_dirs(self.include_dirs)
> if self.define is not None:
> # 'define' option is a list of (name,value) tuples
> for (name, value) in self.define:
> self.compiler.define_macro(name, value)
> if self.undef is not None:
> for macro in self.undef:
> self.compiler.undefine_macro(macro)
> if self.libraries is not None:
> self.compiler.set_libraries(self.libraries)
> if self.library_dirs is not None:
> self.compiler.set_library_dirs(self.library_dirs)
> if self.rpath is not None:
> self.compiler.set_runtime_library_dirs(self.rpath)
> if self.link_objects is not None:
> self.compiler.set_link_objects(self.link_objects)
>
> # Now actually compile and link everything.
> > self.build_extensions()
>
> /usr/lib/python3.10/distutils/command/build_ext.py:340:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7febbcb22e00>
>
> def build_extensions(self):
> # First, sanity-check the 'extensions' list
> self.check_extensions_list(self.extensions)
> if self.parallel:
> self._build_extensions_parallel()
> else:
> > self._build_extensions_serial()
>
> /usr/lib/python3.10/distutils/command/build_ext.py:449:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7febbcb22e00>
>
> def _build_extensions_serial(self):
> for ext in self.extensions:
> with self._filter_build_errors(ext):
> > self.build_extension(ext)
>
> /usr/lib/python3.10/distutils/command/build_ext.py:474:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7febbcb22e00>
> ext = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>
>
> def build_extension(self, ext):
> StringTypes = str,
>
> def get_value(obj, key):
> var = getattr(obj, key)
> if isinstance(var, Iterable) and not isinstance(var, StringTypes):
> return var[0]
> else:
> return var
>
> def set_value(obj, key, value):
> var = getattr(obj, key)
> if isinstance(var, Iterable) and not isinstance(var, StringTypes):
> var[0] = value
> else:
> setattr(obj, key, value)
>
> prev = {
> # linux-like
> 'preprocessor': None,
> 'compiler_cxx': None,
> 'compiler_so': None,
> 'compiler': None,
> 'linker_exe': None,
> 'linker_so': None,
> # Windows-like
> 'cc': None,
> }
> # Backup compiler settings
> for key in list(prev.keys()):
> if hasattr(self.compiler, key):
> prev[key] = get_value(self.compiler, key)
> else:
> del prev[key]
>
> # try hard to modify the compiler
> if getattr(ext, 'cxx', None) is not None:
> for comp in prev:
> if hasattr(self.compiler, comp):
> set_value(self.compiler, comp, ext.cxx)
>
> find_exe = None
> if getattr(ext, 'cc', None) is not None:
> try:
> import distutils._msvccompiler as msvc
> # install hook
> find_exe = msvc._find_exe
>
> def _find_exe(exe, *args, **kwargs):
> if exe == 'cl.exe':
> exe = ext.cc
> return find_exe(exe, *args, **kwargs)
>
> msvc._find_exe = _find_exe
> except ImportError:
> pass
>
> # In general, distutils uses -Wstrict-prototypes, but this option
> # is not valid for C++ code, only for C. Remove it if it's there
> # to avoid a spurious warning on every compilation.
> for flag in cfg.cfg.get('compiler', "ignoreflags").split():
> for target in ('compiler_so', 'linker_so'):
> try:
> while True:
> getattr(self.compiler, target).remove(flag)
> except (AttributeError, ValueError):
> pass
>
> # Remove -arch i386 if 'x86_64' is specified, otherwise incorrect
> # code is generated, at least on OSX
> if hasattr(self.compiler, 'compiler_so'):
> archs = defaultdict(list)
> for i, flag in enumerate(self.compiler.compiler_so[1:]):
> if self.compiler.compiler_so[i] == '-arch':
> archs[flag].append(i + 1)
> if 'x86_64' in archs and 'i386' in archs:
> for i in archs['i386']:
> self.compiler.compiler_so[i] = 'x86_64'
>
> try:
> > return super(PythranBuildExtMixIn, self).build_extension(ext)
>
> pythran/dist.py:109:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <pythran.dist.PythranBuildExt object at 0x7febbcb22e00>
> ext = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>
>
> def build_extension(self, ext):
> sources = ext.sources
> if sources is None or not isinstance(sources, (list, tuple)):
> raise DistutilsSetupError(
> "in 'ext_modules' option (extension '%s'), "
> "'sources' must be present and must be "
> "a list of source filenames" % ext.name)
> # sort to make the resulting .so file build reproducible
> sources = sorted(sources)
>
> ext_path = self.get_ext_fullpath(ext.name)
> depends = sources + ext.depends
> if not (self.force or newer_group(depends, ext_path, 'newer')):
> log.debug("skipping '%s' extension (up-to-date)", ext.name)
> return
> else:
> log.info("building '%s' extension", ext.name)
>
> # First, scan the sources for SWIG definition files (.i), run
> # SWIG on 'em to create .c files, and modify the sources list
> # accordingly.
> sources = self.swig_sources(sources, ext)
>
> # Next, compile the source code to object files.
>
> # XXX not honouring 'define_macros' or 'undef_macros' -- the
> # CCompiler API needs to change to accommodate this, and I
> # want to do one thing at a time!
>
> # Two possible sources for extra compiler arguments:
> # - 'extra_compile_args' in Extension object
> # - CFLAGS environment variable (not particularly
> # elegant, but people seem to expect it and I
> # guess it's useful)
> # The environment variable should take precedence, and
> # any sensible compiler will give precedence to later
> # command line args. Hence we combine them in order:
> extra_args = ext.extra_compile_args or []
>
> macros = ext.define_macros[:]
> for undef in ext.undef_macros:
> macros.append((undef,))
>
> > objects = self.compiler.compile(sources,
> output_dir=self.build_temp,
> macros=macros,
> include_dirs=ext.include_dirs,
> debug=self.debug,
> extra_postargs=extra_args,
> depends=ext.depends)
>
> /usr/lib/python3.10/distutils/command/build_ext.py:529:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7febbc6706a0>
> args = (['/tmp/tmpkcww606t.cpp'],)
> kw = {'debug': None, 'depends': [], 'extra_postargs': ['-std=c++11',
> '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv'...ythran/build/pythran',
> '/usr/lib/python3/dist-packages/numpy/core/include', '/usr/local/include',
> '/usr/include'], ...}
>
> > m = lambda self, *args, **kw: func(self, *args, **kw)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:89:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7febbc6706a0>
> sources = ['/tmp/tmpkcww606t.cpp'], output_dir = '/tmp/tmpo9ql5e8_'
> macros = [('ENABLE_PYTHON_MODULE', None), ('__PYTHRAN__', '3'),
> ('PYTHRAN_BLAS_BLAS', None)]
> include_dirs =
> ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran',
> '/usr/lib/python3/dist-packages/numpy/core/include', '/usr/local/include',
> '/usr/include']
> debug = None, extra_preargs = None
> extra_postargs = ['-std=c++11', '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv', '-Wno-unused-function', '-Wno-int-in-bool-context', ...]
> depends = []
>
> def CCompiler_compile(self, sources, output_dir=None, macros=None,
> include_dirs=None, debug=0, extra_preargs=None,
> extra_postargs=None, depends=None):
> """
> Compile one or more source files.
>
> Please refer to the Python distutils API reference for more details.
>
> Parameters
> ----------
> sources : list of str
> A list of filenames
> output_dir : str, optional
> Path to the output directory.
> macros : list of tuples
> A list of macro definitions.
> include_dirs : list of str, optional
> The directories to add to the default include file search path for
> this compilation only.
> debug : bool, optional
> Whether or not to output debug symbols in or alongside the object
> file(s).
> extra_preargs, extra_postargs : ?
> Extra pre- and post-arguments.
> depends : list of str, optional
> A list of file names that all targets depend on.
>
> Returns
> -------
> objects : list of str
> A list of object file names, one per source file `sources`.
>
> Raises
> ------
> CompileError
> If compilation fails.
>
> """
> # This method is effective only with Python >=2.3 distutils.
> # Any changes here should be applied also to fcompiler.compile
> # method to support pre Python 2.3 distutils.
> global _job_semaphore
>
> jobs = get_num_build_jobs()
>
> # setup semaphore to not exceed number of compile jobs when
> parallelized at
> # extension level (python >= 3.5)
> with _global_lock:
> if _job_semaphore is None:
> _job_semaphore = threading.Semaphore(jobs)
>
> if not sources:
> return []
> from numpy.distutils.fcompiler import (FCompiler, is_f_file,
> has_f90_header)
> if isinstance(self, FCompiler):
> display = []
> for fc in ['f77', 'f90', 'fix']:
> fcomp = getattr(self, 'compiler_'+fc)
> if fcomp is None:
> continue
> display.append("Fortran %s compiler: %s" % (fc, '
> '.join(fcomp)))
> display = '\n'.join(display)
> else:
> ccomp = self.compiler_so
> display = "C compiler: %s\n" % (' '.join(ccomp),)
> log.info(display)
> macros, objects, extra_postargs, pp_opts, build = \
> self._setup_compile(output_dir, macros, include_dirs, sources,
> depends, extra_postargs)
> cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
> display = "compile options: '%s'" % (' '.join(cc_args))
> if extra_postargs:
> display += "\nextra options: '%s'" % (' '.join(extra_postargs))
> log.info(display)
>
> def single_compile(args):
> obj, (src, ext) = args
> if not _needs_build(obj, cc_args, extra_postargs, pp_opts):
> return
>
> # check if we are currently already processing the same object
> # happens when using the same source in multiple extensions
> while True:
> # need explicit lock as there is no atomic check and add with
> GIL
> with _global_lock:
> # file not being worked on, start working
> if obj not in _processing_files:
> _processing_files.add(obj)
> break
> # wait for the processing to end
> time.sleep(0.1)
>
> try:
> # retrieve slot from our #job semaphore and build
> with _job_semaphore:
> self._compile(obj, src, ext, cc_args, extra_postargs,
> pp_opts)
> finally:
> # register being done processing
> with _global_lock:
> _processing_files.remove(obj)
>
>
> if isinstance(self, FCompiler):
> objects_to_build = list(build.keys())
> f77_objects, other_objects = [], []
> for obj in objects:
> if obj in objects_to_build:
> src, ext = build[obj]
> if self.compiler_type=='absoft':
> obj = cyg2win32(obj)
> src = cyg2win32(src)
> if is_f_file(src) and not has_f90_header(src):
> f77_objects.append((obj, (src, ext)))
> else:
> other_objects.append((obj, (src, ext)))
>
> # f77 objects can be built in parallel
> build_items = f77_objects
> # build f90 modules serial, module files are generated during
> # compilation and may be used by files later in the list so the
> # ordering is important
> for o in other_objects:
> single_compile(o)
> else:
> build_items = build.items()
>
> if len(build) > 1 and jobs > 1:
> # build parallel
> import multiprocessing.pool
> pool = multiprocessing.pool.ThreadPool(jobs)
> pool.map(single_compile, build_items)
> pool.close()
> else:
> # build serial
> for o in build_items:
> > single_compile(o)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:366:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> args = ('/tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o', ('/tmp/tmpkcww606t.cpp',
> '.cpp'))
>
> def single_compile(args):
> obj, (src, ext) = args
> if not _needs_build(obj, cc_args, extra_postargs, pp_opts):
> return
>
> # check if we are currently already processing the same object
> # happens when using the same source in multiple extensions
> while True:
> # need explicit lock as there is no atomic check and add with GIL
> with _global_lock:
> # file not being worked on, start working
> if obj not in _processing_files:
> _processing_files.add(obj)
> break
> # wait for the processing to end
> time.sleep(0.1)
>
> try:
> # retrieve slot from our #job semaphore and build
> with _job_semaphore:
> > self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:326:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7febbc6706a0>
> args = ('/tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o', '/tmp/tmpkcww606t.cpp', '.cpp',
> ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '...thon3_3.10_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...])
> kw = {}
>
> > m = lambda self, *args, **kw: func(self, *args, **kw)
>
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:89:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <distutils.unixccompiler.UnixCCompiler object at 0x7febbc6706a0>
> obj = '/tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o', src = '/tmp/tmpkcww606t.cpp'
> ext = '.cpp'
> cc_args = ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '-DPYTHRAN_BLAS_BLAS',
> '-I/<<PKGBUILDDIR>>/.pybu...ython3_3.10_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...]
> extra_postargs = ['-std=c++11', '-fno-math-errno', '-fvisibility=hidden',
> '-fno-wrapv', '-Wno-unused-function', '-Wno-int-in-bool-context', ...]
> pp_opts = ['-DENABLE_PYTHON_MODULE', '-D__PYTHRAN__=3',
> '-DPYTHRAN_BLAS_BLAS',
> '-I/<<PKGBUILDDIR>>/.pybu...ython3_3.10_pythran/build/pythran',
> '-I/usr/lib/python3/dist-packages/numpy/core/include',
> '-I/usr/local/include', ...]
>
> def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs,
> pp_opts):
> """Compile a single source files with a Unix-style compiler."""
> # HP ad-hoc fix, see ticket 1383
> ccomp = self.compiler_so
> if ccomp[0] == 'aCC':
> # remove flags that will trigger ANSI-C mode for aCC
> if '-Ae' in ccomp:
> ccomp.remove('-Ae')
> if '-Aa' in ccomp:
> ccomp.remove('-Aa')
> # add flags for (almost) sane C++ handling
> ccomp += ['-AA']
> self.compiler_so = ccomp
> # ensure OPT environment variable is read
> if 'OPT' in os.environ:
> # XXX who uses this?
> from sysconfig import get_config_vars
> opt = " ".join(os.environ['OPT'].split())
> gcv_opt = " ".join(get_config_vars('OPT')[0].split())
> ccomp_s = " ".join(self.compiler_so)
> if opt not in ccomp_s:
> ccomp_s = ccomp_s.replace(gcv_opt, opt)
> self.compiler_so = ccomp_s.split()
> llink_s = " ".join(self.linker_so)
> if opt not in llink_s:
> self.linker_so = llink_s.split() + opt.split()
>
> display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
>
> # gcc style automatic dependencies, outputs a makefile (-MF) that
> lists
> # all headers needed by a c file as a side effect of compilation
> (-MMD)
> if getattr(self, '_auto_depends', False):
> deps = ['-MMD', '-MF', obj + '.d']
> else:
> deps = []
>
> try:
> self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
> extra_postargs, display = display)
> except DistutilsExecError as e:
> msg = str(e)
> > raise CompileError(msg) from None
> E distutils.errors.CompileError: Command "x86_64-linux-gnu-gcc
> -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g
> -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.10 -c /tmp/tmpkcww606t.cpp -o
> /tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> /usr/lib/python3/dist-packages/numpy/distutils/unixccompiler.py:57:
> CompileError
>
> During handling of the above exception, another exception occurred:
>
> module_name = 'test_complex_conjugate', cxxfile = '/tmp/tmpkcww606t.cpp'
> output_binary = None
> kwargs = {'extra_compile_args': ['-O0', '-Wall', '-Werror', '-UNDEBUG',
> '-Wno-unused-function', '-Wno-int-in-bool-context', ...]}
> builddir = '/tmp/tmpvzyjge_a', buildtmp = '/tmp/tmpo9ql5e8_'
> extension = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>
>
> def compile_cxxfile(module_name, cxxfile, output_binary=None, **kwargs):
> '''c++ file -> native module
> Return the filename of the produced shared library
> Raises CompileError on failure
>
> '''
>
> builddir = mkdtemp()
> buildtmp = mkdtemp()
>
> extension = PythranExtension(module_name,
> [cxxfile],
> **kwargs)
>
> try:
> > setup(name=module_name,
> ext_modules=[extension],
> cmdclass={"build_ext": PythranBuildExt},
> # fake CLI call
> script_name='setup.py',
> script_args=['--verbose'
> if logger.isEnabledFor(logging.INFO)
> else '--quiet',
> 'build_ext',
> '--build-lib', builddir,
> '--build-temp', buildtmp]
> )
>
> pythran/toolchain.py:299:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> attr = {'cmdclass': {'build_ext': <class 'pythran.dist.PythranBuildExt'>},
> 'ext_modules': [<pythran.dist.PythranExtension('te... 'script_args':
> ['--verbose', 'build_ext', '--build-lib', '/tmp/tmpvzyjge_a', '--build-temp',
> '/tmp/tmpo9ql5e8_'], ...}
> cmdclass = {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.command.build.bu...ib': <class
> 'numpy.distutils.command.build_clib.build_clib'>, 'build_ext': <class
> 'pythran.dist.PythranBuildExt'>, ...}
> new_attr = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...on'>, 'ext_modules':
> [<pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>], 'headers': [], ...}
>
> def setup(**attr):
>
> cmdclass = numpy_cmdclass.copy()
>
> new_attr = attr.copy()
> if 'cmdclass' in new_attr:
> cmdclass.update(new_attr['cmdclass'])
> new_attr['cmdclass'] = cmdclass
>
> if 'configuration' in new_attr:
> # To avoid calling configuration if there are any errors
> # or help request in command in the line.
> configuration = new_attr.pop('configuration')
>
> old_dist = distutils.core._setup_distribution
> old_stop = distutils.core._setup_stop_after
> distutils.core._setup_distribution = None
> distutils.core._setup_stop_after = "commandline"
> try:
> dist = setup(**new_attr)
> finally:
> distutils.core._setup_distribution = old_dist
> distutils.core._setup_stop_after = old_stop
> if dist.help or not _command_line_ok():
> # probably displayed help, skip running any commands
> return dist
>
> # create setup dictionary and append to new_attr
> config = configuration()
> if hasattr(config, 'todict'):
> config = config.todict()
> _dict_append(new_attr, **config)
>
> # Move extension source libraries to libraries
> libraries = []
> for ext in new_attr.get('ext_modules', []):
> new_libraries = []
> for item in ext.libraries:
> if is_sequence(item):
> lib_name, build_info = item
> _check_append_ext_library(libraries, lib_name, build_info)
> new_libraries.append(lib_name)
> elif is_string(item):
> new_libraries.append(item)
> else:
> raise TypeError("invalid description of extension module "
> "library %r" % (item,))
> ext.libraries = new_libraries
> if libraries:
> if 'libraries' not in new_attr:
> new_attr['libraries'] = []
> for item in libraries:
> _check_append_library(new_attr['libraries'], item)
>
> # sources in ext_modules or libraries may contain header files
> if ('ext_modules' in new_attr or 'libraries' in new_attr) \
> and 'headers' not in new_attr:
> new_attr['headers'] = []
>
> # Use our custom NumpyDistribution class instead of distutils' one
> new_attr['distclass'] = NumpyDistribution
>
> > return old_setup(**new_attr)
>
> /usr/lib/python3/dist-packages/numpy/distutils/core.py:169:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> attrs = {'cmdclass': {'bdist_rpm': <class
> 'numpy.distutils.command.bdist_rpm.bdist_rpm'>, 'build': <class
> 'numpy.distutils.com...t.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>], 'headers': [], 'name': 'test_complex_conjugate', ...}
> klass = <class 'numpy.distutils.numpy_distribution.NumpyDistribution'>
> dist = <numpy.distutils.numpy_distribution.NumpyDistribution object at
> 0x7febbcb20970>
> ok = True
>
> def setup (**attrs):
> """The gateway to the Distutils: do everything your setup script needs
> to do, in a highly flexible and user-driven way. Briefly: create a
> Distribution instance; find and parse config files; parse the command
> line; run each Distutils command found there, customized by the
> options
> supplied to 'setup()' (as keyword arguments), in config files, and on
> the command line.
>
> The Distribution instance might be an instance of a class supplied via
> the 'distclass' keyword argument to 'setup'; if no such class is
> supplied, then the Distribution class (in dist.py) is instantiated.
> All other arguments to 'setup' (except for 'cmdclass') are used to set
> attributes of the Distribution instance.
>
> The 'cmdclass' argument, if supplied, is a dictionary mapping command
> names to command classes. Each command encountered on the command
> line
> will be turned into a command class, which is in turn instantiated;
> any
> class found in 'cmdclass' is used in place of the default, which is
> (for command 'foo_bar') class 'foo_bar' in module
> 'distutils.command.foo_bar'. The command class must provide a
> 'user_options' attribute which is a list of option specifiers for
> 'distutils.fancy_getopt'. Any command-line options between the
> current
> and the next command are used to set attributes of the current command
> object.
>
> When the entire command-line has been successfully parsed, calls the
> 'run()' method on each command object in turn. This method will be
> driven entirely by the Distribution object (which each command object
> has a reference to, thanks to its constructor), and the
> command-specific options that became attributes of each command
> object.
> """
>
> global _setup_stop_after, _setup_distribution
>
> # Determine the distribution class -- either caller-supplied or
> # our Distribution (see below).
> klass = attrs.get('distclass')
> if klass:
> del attrs['distclass']
> else:
> klass = Distribution
>
> if 'script_name' not in attrs:
> attrs['script_name'] = os.path.basename(sys.argv[0])
> if 'script_args' not in attrs:
> attrs['script_args'] = sys.argv[1:]
>
> # Create the Distribution instance, using the remaining arguments
> # (ie. everything except distclass) to initialize it
> try:
> _setup_distribution = dist = klass(attrs)
> except DistutilsSetupError as msg:
> if 'name' not in attrs:
> raise SystemExit("error in setup command: %s" % msg)
> else:
> raise SystemExit("error in %s setup command: %s" % \
> (attrs['name'], msg))
>
> if _setup_stop_after == "init":
> return dist
>
> # Find and parse the config file(s): they will override options from
> # the setup script, but be overridden by the command line.
> dist.parse_config_files()
>
> if DEBUG:
> print("options (after parsing config files):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "config":
> return dist
>
> # Parse the command line and override config files; any
> # command-line errors are the end user's fault, so turn them into
> # SystemExit to suppress tracebacks.
> try:
> ok = dist.parse_command_line()
> except DistutilsArgError as msg:
> raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" %
> msg)
>
> if DEBUG:
> print("options (after parsing command line):")
> dist.dump_option_dicts()
>
> if _setup_stop_after == "commandline":
> return dist
>
> # And finally, run all the commands found on the command line.
> if ok:
> try:
> dist.run_commands()
> except KeyboardInterrupt:
> raise SystemExit("interrupted")
> except OSError as exc:
> if DEBUG:
> sys.stderr.write("error: %s\n" % (exc,))
> raise
> else:
> raise SystemExit("error: %s" % (exc,))
>
> except (DistutilsError,
> CCompilerError) as msg:
> if DEBUG:
> raise
> else:
> > raise SystemExit("error: " + str(msg))
> E SystemExit: error: Command "x86_64-linux-gnu-gcc -pthread
> -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g
> -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.10 -c /tmp/tmpkcww606t.cpp -o
> /tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> /usr/lib/python3.10/distutils/core.py:163: SystemExit
>
> During handling of the above exception, another exception occurred:
>
> self = <pythran.tests.test_base.TestBase testMethod=test_complex_conj>
>
> def test_complex_conj(self):
> > self.run_test("def complex_conjugate(c): return c.conjugate()",
> > complex(0,1), complex_conjugate=[complex])
>
> pythran/tests/test_base.py:540:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> pythran/tests/__init__.py:311: in run_test
> cxx_compiled = compile_pythrancode(
> pythran/toolchain.py:414: in compile_pythrancode
> output_file = compile_cxxcode(module_name,
> pythran/toolchain.py:354: in compile_cxxcode
> output_binary = compile_cxxfile(module_name, fdpath,
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> module_name = 'test_complex_conjugate', cxxfile = '/tmp/tmpkcww606t.cpp'
> output_binary = None
> kwargs = {'extra_compile_args': ['-O0', '-Wall', '-Werror', '-UNDEBUG',
> '-Wno-unused-function', '-Wno-int-in-bool-context', ...]}
> builddir = '/tmp/tmpvzyjge_a', buildtmp = '/tmp/tmpo9ql5e8_'
> extension = <pythran.dist.PythranExtension('test_complex_conjugate') at
> 0x7febbcb20580>
>
> def compile_cxxfile(module_name, cxxfile, output_binary=None, **kwargs):
> '''c++ file -> native module
> Return the filename of the produced shared library
> Raises CompileError on failure
>
> '''
>
> builddir = mkdtemp()
> buildtmp = mkdtemp()
>
> extension = PythranExtension(module_name,
> [cxxfile],
> **kwargs)
>
> try:
> setup(name=module_name,
> ext_modules=[extension],
> cmdclass={"build_ext": PythranBuildExt},
> # fake CLI call
> script_name='setup.py',
> script_args=['--verbose'
> if logger.isEnabledFor(logging.INFO)
> else '--quiet',
> 'build_ext',
> '--build-lib', builddir,
> '--build-temp', buildtmp]
> )
> except SystemExit as e:
> > raise CompileError(str(e))
> E distutils.errors.CompileError: error: Command
> "x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g
> -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat
> -Werror=format-security -g -fwrapv -O2 -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
> -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.10 -c /tmp/tmpkcww606t.cpp -o
> /tmp/tmpo9ql5e8_/tmp/tmpkcww606t.o -std=c++11 -fno-math-errno
> -fvisibility=hidden -fno-wrapv -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
> -fstack-protector-strong -Wformat -Werror=format-security -O0 -Wall -Werror
> -UNDEBUG -Wno-unused-function -Wno-int-in-bool-context
> -Wno-unknown-warning-option -Wno-unused-local-typedefs -Wno-missing-braces
> -Wno-unknown-pragmas" failed with exit status 1
>
> pythran/toolchain.py:312: CompileError
> ----------------------------- Captured stdout call
> -----------------------------
> running build_ext
> new_compiler returns <class 'distutils.unixccompiler.UnixCCompiler'>
> building 'test_complex_conjugate' extension
> C compiler: x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare
> -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat
> -Werror=format-security -g -fwrapv -O2 -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC
>
> creating /tmp/tmpo9ql5e8_/tmp
> compile options: '-DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_BLAS
> -I/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran
> -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/local/include
> -I/usr/include -I/usr/include/python3.10 -c'
> extra options: '-std=c++11 -fno-math-errno -fvisibility=hidden -fno-wrapv
> -Wno-unused-function -Wno-int-in-bool-context -Wno-unknown-warning-option -g
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
> -Werror=format-security -O0 -Wall -Werror -UNDEBUG -Wno-unused-function
> -Wno-int-in-bool-context -Wno-unknown-warning-option
> -Wno-unused-local-typedefs -Wno-missing-braces -Wno-unknown-pragmas'
> x86_64-linux-gnu-gcc: /tmp/tmpkcww606t.cpp
> ----------------------------- Captured stderr call
> -----------------------------
> In file included from
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/__dispatch__/conjugate.hpp:4,
> from /tmp/tmpkcww606t.cpp:10:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:22:36:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 22 | xsimd::batch<std::complex<T>, N>
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:22:36:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:46:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 23 | conjugate(xsimd::batch<std::complex<T>, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:46:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:
> In function ‘int {anonymous}::pythonic::numpy::wrapper::conjugate(const
> int&)’:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:25:25:
> error: cannot convert ‘std::complex<double>’ to ‘int’ in return
> 25 | return xsimd::conj(v);
> | ~~~~~~~~~~~^~~
> | |
> | std::complex<double>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:
> At global scope:
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:22:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:22:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:51:
> error: type/value mismatch at argument 2 in template parameter list for
> ‘template<class T, class A> class xsimd::batch’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:51:
> note: expected a type, got ‘N’
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:28:24:
> error: redefinition of ‘template<class T, long unsigned int N> int
> {anonymous}::pythonic::numpy::wrapper::conjugate(const int&)’
> 28 | xsimd::batch<T, N> conjugate(xsimd::batch<T, N> const &v)
> | ^~~~~~~~~
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/pythonic/include/numpy/conjugate.hpp:23:5:
> note: ‘template<class T, long unsigned int N> int
> {anonymous}::pythonic::numpy::wrapper::conjugate(const int&)’ previously
> declared here
> 23 | conjugate(xsimd::batch<std::complex<T>, N> const &v)
> | ^~~~~~~~~
> cc1plus: note: unrecognized command-line option ‘-Wno-unknown-warning-option’
> may have been intended to silence earlier diagnostics
> cc1plus: note: unrecognized command-line option ‘-Wno-unknown-warning-option’
> may have been intended to silence earlier diagnostics
> WARNING: Compilation error, trying hard to find its origin...
> WARNING: Nop, I'm going to flood you with C++ errors!
> ------------------------------ Captured log call
> -------------------------------
> WARNING pythran:toolchain.py:419 Compilation error, trying hard to find its
> origin...
> WARNING pythran:toolchain.py:422 Nop, I'm going to flood you with C++ errors!
> =============================== warnings summary
> ===============================
> ../../../../../../usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:8
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:8:
> DeprecationWarning: The distutils package is deprecated and slated for
> removal in Python 3.12. Use setuptools or check PEP 632 for potential
> alternatives
> from distutils import ccompiler
>
> ../../../../../../usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:17
> /usr/lib/python3/dist-packages/numpy/distutils/ccompiler.py:17:
> DeprecationWarning: The distutils.sysconfig module is deprecated, use
> sysconfig instead
> from distutils.sysconfig import customize_compiler
>
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`.
> To silence this warning, use `bool` by itself. Doing this will not modify any
> behavior and is safe. If you specifically wanted the numpy scalar type, use
> `np.bool_` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.complex` is a deprecated alias for the builtin
> `complex`. To silence this warning, use `complex` by itself. Doing this will
> not modify any behavior and is safe. If you specifically wanted the numpy
> scalar type, use `np.complex128` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4520
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4520:
> DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`.
> To silence this warning, use `float` by itself. Doing this will not modify
> any behavior and is safe. If you specifically wanted the numpy scalar type,
> use `np.float64` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> if not hasattr(numpy, method):
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`.
> To silence this warning, use `bool` by itself. Doing this will not modify any
> behavior and is safe. If you specifically wanted the numpy scalar type, use
> `np.bool_` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.complex` is a deprecated alias for the builtin
> `complex`. To silence this warning, use `complex` by itself. Doing this will
> not modify any behavior and is safe. If you specifically wanted the numpy
> scalar type, use `np.complex128` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tables.py:4553
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tables.py:4553:
> DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`.
> To silence this warning, use `float` by itself. Doing this will not modify
> any behavior and is safe. If you specifically wanted the numpy scalar type,
> use `np.float64` here.
> Deprecated in NumPy 1.20; for more details and guidance:
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
> obj = getattr(themodule, elem)
>
> pythran/tests/__init__.py:72
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build/pythran/tests/__init__.py:72:
> PytestUnknownMarkWarning: Unknown pytest.mark.module - is this a typo? You
> can register custom marks to avoid this warning - for details, see
> https://docs.pytest.org/en/stable/mark.html
> module = pytest.mark.module
>
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_declarations
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return1
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return2
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_multiple_return3
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_shadow_parameters
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_shadow_parameters
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_sorted1
> .pybuild/cpython3_3.10_pythran/build/pythran/tests/test_base.py::TestBase::test_sorted3
> /usr/lib/python3.10/ast.py:410: DeprecationWarning: visit_NameConstant is
> deprecated; add visit_Constant
> return visitor(node)
>
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info
> ============================
> FAILED pythran/tests/test_base.py::TestBase::test_complex_conj -
> distutils.er...
> ====== 1 failed, 194 passed, 1 skipped, 17 warnings in 437.16s (0:07:17)
> =======
> E: pybuild pybuild:369: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pythran/build; python3.10 -m pytest
> pythran/tests/test_base.py
> dh_auto_test: error: pybuild --test -i python{version} -p "3.9 3.10" returned
> exit code 13
> make[1]: *** [debian/rules:30: override_dh_auto_test] Error 25
The full build log is available from:
http://qa-logs.debian.net/2022/06/24/pythran_0.10.0+ds2-8_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20220624;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20220624&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.