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.