Source: pythran
Version: 0.10.0+ds2-8
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
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;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20220624&fusertaguser=lu...@debian.org&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.

Reply via email to