def _get_metadata(self, temp_dir):
        runner = SubprocessModuleRunner(
            self.get_setup_py(temp_dir),
            *settings.EXTRACT_DIST_COMMAND_ARGS + ['--stdout'])

        current_version = self.base_python_version or str(sys.version_info[0])
        # the version provided with `-b` option or default
        paths_to_attempt = (
            get_interpreter_path(version=ver) for ver in (
                current_version,
                '2' if current_version ==
                '3' else '3'  # alternative Python version
            ))
        for path in paths_to_attempt:
            try:
                logger.info(
                    "Running extract_dist command with: {0}".format(path))
                runner.run(path)
                return runner.results
            except (JSONDecodeError, exc.ExtractionError) as e:
                logger.error(
                    "Could not extract metadata with: {0}".format(path))
                if all(hasattr(e, a) for a in ('msg', 'pos', 'doc')):
                    logger.error("Could not parse JSON: {0} at {1}".format(
                        e.msg, e.pos))
                    logger.error("The JSON was: {0}".format(e.doc))
                self.unsupported_version = current_version
        else:
            sys.stderr.write("Failed to extract data from setup.py script.\n")
            sys.stderr.write("Check the log for details: {0}\n".format(
                ', '.join(pyp2rpm.logger.destinations)))
            raise SystemExit(3)
Beispiel #2
0
    def _get_metadata(self, temp_dir):
        runner = SubprocessModuleRunner(
            self.get_setup_py(temp_dir),
            *settings.EXTRACT_DIST_COMMAND_ARGS + ['--stdout'])

        current_version = self.base_python_version or str(sys.version_info[0])
        # the version provided with `-b` option or default
        paths_to_attempt = (
            get_interpreter_path(version=ver) for ver in (
                current_version,
                '2' if current_version ==
                '3' else '3'  # alternative Python version
            ))
        for path in paths_to_attempt:
            try:
                logger.info(
                    "Running extract_dist command with: {0}".format(path))
                runner.run(path)
                return runner.results
            except (JSONDecodeError, exc.ExtractionError):
                logger.error(
                    "Could not extract metadata with: {0}".format(path))
                self.unsupported_version = current_version
        else:
            sys.stdout.write("Failed to extract data from setup.py script.\n")
            raise SystemExit(3)