Exemplo n.º 1
0
    def test__basic(self):
        fs = FileSystem(path=['don\'t', 'care'], rootdirectory=make_package())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])

        plainfile_data = package.rootbuilder().find_entry_builder(
            ['plainfile_data'])
        plainfile_prefix = package.rootbuilder().find_entry_builder(
            ['plainfile_prefix'])
        self.failIf(plainfile_data is None)
        self.failIf(plainfile_prefix is None)
        self.failUnless(isinstance(plainfile_data, PlainFileBuilder))
        self.failUnless(isinstance(plainfile_prefix, PlainFileBuilder))
        pass
Exemplo n.º 2
0
def main():
    # Setup logger
    logger.setLevel(logging.DEBUG)
    # Create console handler and set level to debug
    chandler = logging.StreamHandler()
    chandler.setLevel(logging.DEBUG)
    # Create file handler and set level to debug
    fhandler = logging.FileHandler('build.log')
    fhandler.setLevel(logging.DEBUG)
    # Create formatter
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # Add formatter to handlers
    chandler.setFormatter(formatter)
    fhandler.setFormatter(formatter)
    # Add handlers to logger
    logger.addHandler(chandler)
    logger.addHandler(fhandler)
    
    try:
        optparser = optparse.OptionParser(usage="build [options]", version="PySide package builder")
        optparser.add_option("-e", "--check-environ", dest="check_environ",                         
                             action="store_true", default=False, help="Check the environment.")
        optparser.add_option("-q", "--qmake", dest="qmake_path",                         
                             default=None, help="Locate qmake")
        optparser.add_option("-d", "--download", dest="download",
                             action="store_true", default=False, help="Download sources from git repository.")
        optparser.add_option("-m", "--modules-version", dest="modules_version",
                             default=VERSION, help="Specify what version of modules to checkout from git repository: 'master' or '" + VERSION + "'. Default is '" + VERSION + "'.")
        optparser.add_option("-p", "--package-version", dest="package_version",
                             default=VERSION, help="Specify package version. Default is %s" % VERSION)
        optparser.add_option("-u", "--debug", dest="debug",
                             action="store_true", default=False, help="Build the debug version of pyside binaries.")
        optparser.add_option("-b", "--build-module", dest="build_module",
                             default=None, help="Specify what module to build")
        optparser.add_option("-o", "--only-package", dest="only_package",
                             action="store_true", default=False, help="Create a distribution package only using existing binaries.")
        optparser.add_option("-x", "--pack-exmaples", dest="pack_examples",
                             action="store_true", default=True, help="Add pyside examples to package.")
        options, args = optparser.parse_args(sys.argv)
        
        build_type = "Release"
        if options.debug:
            build_type = "Debug"
        
        py_version = "%s.%s" % (sys.version_info[0], sys.version_info[1])
        py_include_dir = distutils.sysconfig.get_config_var("INCLUDEPY")
        py_prefix = distutils.sysconfig.get_config_var("prefix")
        py_executable = sys.executable
        
        dbgPostfix = ""
        if build_type == "Debug":
            dbgPostfix = "_d"
            py_executable = py_executable[:-4] + "_d.exe"
        
        if sys.platform == "win32":
            py_library = os.path.join(py_prefix, "libs/python%s%s.lib" % \
                (py_version.replace(".", ""), dbgPostfix))
        else:
            py_library = os.path.join(py_prefix, "lib/libpython%s.so" % \
                (py_version, dbgPostfix))
        
        if not os.path.exists(py_library):
            logger.error("Failed to locate the Python library %s" % py_library)
            sys.exit(1)
        
        if not options.modules_version in modules:
            logger.error("Invalid modules version specified [%s]. Available options: [%s]" % \
                (options.modules_version, ', '.join(modules.keys())))
            sys.exit(1)
        
        qtinfo = QtInfo(options.qmake_path)
        if not qtinfo.qmake_path or not os.path.exists(qtinfo.qmake_path):
            logger.error("Failed to find qmake. Please specify the path to qmake with --qmake parameter.")
            sys.exit(1)
        
        # Update os.path
        paths = os.environ['PATH'].lower().split(os.pathsep)
        def updatepath(path):
            if not path.lower() in paths:
                logger.info("Adding path \"%s\" to environment" % path)
                paths.append(path)
        qt_dir = os.path.dirname(qtinfo.qmake_path)
        updatepath(qt_dir)
        os.environ['PATH'] = os.pathsep.join(paths)
        
        qt_version = qtinfo.version
        
        if not qt_version:
            logger.error("Failed to query the Qt version with qmake %s" % qtinfo.qmake_path)
            sys.exit(1)
        
        build_name = "py%s-qt%s-%s-%s" % \
            (py_version, qt_version, platform.architecture()[0], build_type.lower())
        
        script_dir = os.getcwd()
        sources_dir = os.path.join(script_dir, "sources")
        build_dir = os.path.join(script_dir, os.path.join("build", "%s" % build_name))
        install_dir = os.path.join(script_dir, os.path.join("install", "%s" % build_name))
        
        logger.info("------------------------------------------")
        logger.info("Build type: %s" % build_type)
        if options.build_module:
            logger.info("Build module: %s" % options.build_module)
        if options.download:
            logger.info("Download modules version: %s" % options.modules_version)
        logger.info("Package version: %s" % options.package_version)
        logger.info("Python prefix: %s" % py_prefix)
        logger.info("Python version: %s" % py_version)
        logger.info("Python executable: %s" % py_executable)
        logger.info("Python includes: %s" % py_include_dir)
        logger.info("Python library: %s" % py_library)
        logger.info("Script directory: %s" % script_dir)
        logger.info("Sources directory: %s" % sources_dir)
        logger.info("Build directory: %s" % build_dir)
        logger.info("Install directory: %s" % install_dir)
        logger.info("Qt qmake: %s" % qtinfo.qmake_path)
        logger.info("Qt version: %s" % qt_version)
        logger.info("Qt bins: %s" % qtinfo.bins_dir)
        logger.info("Qt plugins: %s" % qtinfo.plugins_dir)
        logger.info("------------------------------------------")
        
        if not options.only_package:
            check_env(options.download)
        
        if options.check_environ:
            return
        
        # Prepare folders
        if not os.path.exists(sources_dir):
            logger.info("Creating sources folder %s..." % sources_dir)
            os.makedirs(sources_dir)
        if not os.path.exists(build_dir):
            logger.info("Creating build folder %s..." % build_dir)
            os.makedirs(build_dir)
        if not os.path.exists(install_dir):
            logger.info("Creating install folder %s..." % install_dir)
            os.makedirs(install_dir)
        
        if options.pack_examples:
            for k in modules:
                modules[k].append(examples_module)
        
        if not options.only_package:
            process_modules(options.build_module, options.download, modules[options.modules_version],
                script_dir, sources_dir, build_dir, install_dir, qtinfo, py_executable, py_include_dir, py_library, build_type)
        
        if options.build_module is None and options.package_version is not None:
            make_package(options.package_version, script_dir, sources_dir, build_dir, install_dir, py_version,
                options.pack_examples, options.debug, qtinfo, logger)
    
    except Exception:
        logger.error(''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(1)
    
    sys.exit(0)
Exemplo n.º 3
0
def main():
    # Setup logger
    logger.setLevel(logging.DEBUG)
    # Create console handler and set level to debug
    chandler = logging.StreamHandler()
    chandler.setLevel(logging.DEBUG)
    # Create file handler and set level to debug
    fhandler = logging.FileHandler("build.log")
    fhandler.setLevel(logging.DEBUG)
    # Create formatter
    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    # Add formatter to handlers
    chandler.setFormatter(formatter)
    fhandler.setFormatter(formatter)
    # Add handlers to logger
    logger.addHandler(chandler)
    logger.addHandler(fhandler)

    try:
        optparser = optparse.OptionParser(usage="create_package [options]", version="PySide package creator")
        optparser.add_option(
            "-e",
            "--check-environ",
            dest="check_environ",
            action="store_true",
            default=False,
            help="Check the environment",
        )
        optparser.add_option("-q", "--qmake", dest="qmake_path", default=None, help="Locate qmake")
        optparser.add_option(
            "-d",
            "--download",
            dest="download",
            action="store_true",
            default=False,
            help="Download sources from git repository",
        )
        optparser.add_option(
            "-m",
            "--pyside-version",
            dest="pyside_version",
            default="stable",
            help="Specify what version of modules to download from git repository: 'dev' or 'stable'. Default is 'stable'.",
        )
        optparser.add_option(
            "-p",
            "--package-version",
            dest="package_version",
            default=PYSIDE_VERSION,
            help="Specify package version. Default is %s" % PYSIDE_VERSION,
        )
        optparser.add_option(
            "-b", "--build-module", dest="build_module", default=None, help="Specify what module to build"
        )
        optparser.add_option(
            "-o",
            "--only-package",
            dest="only_package",
            action="store_true",
            default=False,
            help="Create a distribution package only using existing binaries.",
        )
        options, args = optparser.parse_args(sys.argv)

        py_version = "%s.%s" % (sys.version_info[0], sys.version_info[1])

        py_include_dir = distutils.sysconfig.get_config_var("INCLUDEPY")

        py_prefix = distutils.sysconfig.get_config_var("prefix")

        if sys.platform == "win32":
            py_library = os.path.join(py_prefix, "libs/python%s.lib" % py_version.replace(".", ""))
        else:
            py_library = os.path.join(py_prefix, "lib/libpython%s.so" % py_version)

        if not os.path.exists(py_library):
            logger.error("Failed to locate the Python library %s" % py_library)
            sys.exit(1)

        if not options.pyside_version in modules:
            logger.error(
                "Invalid pyside version specified [%s]. Available options: [%s]"
                % (options.pyside_version, ", ".join(modules.keys()))
            )
            sys.exit(1)

        script_dir = os.getcwd()

        modules_dir = os.path.join(script_dir, "modules")

        qtinfo = QtInfo(options.qmake_path)
        if not qtinfo.qmake_path or not os.path.exists(qtinfo.qmake_path):
            logger.error("Failed to find qmake. Please specify the path to qmake with --qmake parameter.")
            sys.exit(1)

        # Add path to this version of Qt to environment if it's not there.
        # Otherwise the "generatorrunner" will not find the Qt libraries
        paths = os.environ["PATH"].lower().split(os.pathsep)
        qt_dir = os.path.dirname(qtinfo.qmake_path)
        if not qt_dir.lower() in paths:
            logger.info('Adding path "%s" to environment' % qt_dir)
            paths.append(qt_dir)
        os.environ["PATH"] = os.pathsep.join(paths)

        qt_version = qtinfo.version

        if not qt_version:
            logger.error("Failed to query the Qt version with qmake %s" % qtinfo.qmake_path)
            sys.exit(1)

        install_dir = os.path.join(script_dir, "install-py%s-qt%s") % (py_version, qt_version)

        logger.info("------------------------------------------")
        if options.build_module:
            logger.info("Build module: %s" % options.build_module)
        logger.info("Generate package version: %s" % options.package_version)
        if options.download:
            logger.info("Download modules version: %s" % options.pyside_version)
        logger.info("Python version: %s" % py_version)
        logger.info("Python executable: %s" % sys.executable)
        logger.info("Python includes: %s" % py_include_dir)
        logger.info("Python library: %s" % py_library)
        logger.info("Script directory: %s" % script_dir)
        logger.info("Modules directory: %s" % modules_dir)
        logger.info("Install directory: %s" % install_dir)
        logger.info("qmake path: %s" % qtinfo.qmake_path)
        logger.info("Qt version: %s" % qt_version)
        logger.info("Qt bins: %s" % qtinfo.bins_dir)
        logger.info("Qt plugins: %s" % qtinfo.plugins_dir)
        logger.info("------------------------------------------")

        check_env(options.download)
        if options.check_environ:
            return

        if not options.only_package:
            process_modules(
                options.build_module,
                options.download,
                modules[options.pyside_version],
                modules_dir,
                install_dir,
                qtinfo,
                py_include_dir,
                py_library,
            )

        if options.build_module is None and options.package_version is not None:
            from package import make_package

            make_package(options.package_version, script_dir, modules_dir, install_dir, py_version, qtinfo, logger)

    except Exception:
        logger.error("".join(traceback.format_exception(*sys.exc_info())))
        sys.exit(1)

    sys.exit(0)
Exemplo n.º 4
0
def main():
    # Setup logger
    logger.setLevel(logging.DEBUG)
    # Create console handler and set level to debug
    chandler = logging.StreamHandler()
    chandler.setLevel(logging.DEBUG)
    # Create file handler and set level to debug
    fhandler = logging.FileHandler('build.log')
    fhandler.setLevel(logging.DEBUG)
    # Create formatter
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # Add formatter to handlers
    chandler.setFormatter(formatter)
    fhandler.setFormatter(formatter)
    # Add handlers to logger
    logger.addHandler(chandler)
    logger.addHandler(fhandler)

    try:
        optparser = optparse.OptionParser(usage="build [options]",
                                          version="PySide package builder")
        optparser.add_option("-e",
                             "--check-environ",
                             dest="check_environ",
                             action="store_true",
                             default=False,
                             help="Check the environment.")
        optparser.add_option("-q",
                             "--qmake",
                             dest="qmake_path",
                             default=None,
                             help="Locate qmake")
        optparser.add_option("-d",
                             "--download",
                             dest="download",
                             action="store_true",
                             default=False,
                             help="Download sources from git repository.")
        optparser.add_option(
            "-m",
            "--modules-version",
            dest="modules_version",
            default=VERSION,
            help=
            "Specify what version of modules to checkout from git repository: 'master' or '"
            + VERSION + "'. Default is '" + VERSION + "'.")
        optparser.add_option("-p",
                             "--package-version",
                             dest="package_version",
                             default=VERSION,
                             help="Specify package version. Default is %s" %
                             VERSION)
        optparser.add_option(
            "-u",
            "--debug",
            dest="debug",
            action="store_true",
            default=False,
            help="Build the debug version of pyside binaries.")
        optparser.add_option("-b",
                             "--build-module",
                             dest="build_module",
                             default=None,
                             help="Specify what module to build")
        optparser.add_option(
            "-o",
            "--only-package",
            dest="only_package",
            action="store_true",
            default=False,
            help="Create a distribution package only using existing binaries.")
        optparser.add_option("-x",
                             "--pack-exmaples",
                             dest="pack_examples",
                             action="store_true",
                             default=True,
                             help="Add pyside examples to package.")
        options, args = optparser.parse_args(sys.argv)

        build_type = "Release"
        if options.debug:
            build_type = "Debug"

        py_version = "%s.%s" % (sys.version_info[0], sys.version_info[1])
        py_include_dir = distutils.sysconfig.get_config_var("INCLUDEPY")
        py_prefix = distutils.sysconfig.get_config_var("prefix")
        py_executable = sys.executable

        dbgPostfix = ""
        if build_type == "Debug":
            dbgPostfix = "_d"
            py_executable = py_executable[:-4] + "_d.exe"

        if sys.platform == "win32":
            py_library = os.path.join(py_prefix, "libs/python%s%s.lib" % \
                (py_version.replace(".", ""), dbgPostfix))
        else:
            py_library = os.path.join(py_prefix, "lib/libpython%s.so" % \
                (py_version, dbgPostfix))

        if not os.path.exists(py_library):
            logger.error("Failed to locate the Python library %s" % py_library)
            sys.exit(1)

        if not options.modules_version in modules:
            logger.error("Invalid modules version specified [%s]. Available options: [%s]" % \
                (options.modules_version, ', '.join(modules.keys())))
            sys.exit(1)

        qtinfo = QtInfo(options.qmake_path)
        if not qtinfo.qmake_path or not os.path.exists(qtinfo.qmake_path):
            logger.error(
                "Failed to find qmake. Please specify the path to qmake with --qmake parameter."
            )
            sys.exit(1)

        # Update os.path
        paths = os.environ['PATH'].lower().split(os.pathsep)

        def updatepath(path):
            if not path.lower() in paths:
                logger.info("Adding path \"%s\" to environment" % path)
                paths.append(path)

        qt_dir = os.path.dirname(qtinfo.qmake_path)
        updatepath(qt_dir)
        os.environ['PATH'] = os.pathsep.join(paths)

        qt_version = qtinfo.version

        if not qt_version:
            logger.error("Failed to query the Qt version with qmake %s" %
                         qtinfo.qmake_path)
            sys.exit(1)

        build_name = "py%s-qt%s-%s-%s" % \
            (py_version, qt_version, platform.architecture()[0], build_type.lower())

        script_dir = os.getcwd()
        sources_dir = os.path.join(script_dir, "sources")
        build_dir = os.path.join(script_dir,
                                 os.path.join("build", "%s" % build_name))
        install_dir = os.path.join(script_dir,
                                   os.path.join("install", "%s" % build_name))

        logger.info("------------------------------------------")
        logger.info("Build type: %s" % build_type)
        if options.build_module:
            logger.info("Build module: %s" % options.build_module)
        if options.download:
            logger.info("Download modules version: %s" %
                        options.modules_version)
        logger.info("Package version: %s" % options.package_version)
        logger.info("Python prefix: %s" % py_prefix)
        logger.info("Python version: %s" % py_version)
        logger.info("Python executable: %s" % py_executable)
        logger.info("Python includes: %s" % py_include_dir)
        logger.info("Python library: %s" % py_library)
        logger.info("Script directory: %s" % script_dir)
        logger.info("Sources directory: %s" % sources_dir)
        logger.info("Build directory: %s" % build_dir)
        logger.info("Install directory: %s" % install_dir)
        logger.info("Qt qmake: %s" % qtinfo.qmake_path)
        logger.info("Qt version: %s" % qt_version)
        logger.info("Qt bins: %s" % qtinfo.bins_dir)
        logger.info("Qt plugins: %s" % qtinfo.plugins_dir)
        logger.info("------------------------------------------")

        if not options.only_package:
            check_env(options.download)

        if options.check_environ:
            return

        # Prepare folders
        if not os.path.exists(sources_dir):
            logger.info("Creating sources folder %s..." % sources_dir)
            os.makedirs(sources_dir)
        if not os.path.exists(build_dir):
            logger.info("Creating build folder %s..." % build_dir)
            os.makedirs(build_dir)
        if not os.path.exists(install_dir):
            logger.info("Creating install folder %s..." % install_dir)
            os.makedirs(install_dir)

        if options.pack_examples:
            for k in modules:
                modules[k].append(examples_module)

        if not options.only_package:
            process_modules(options.build_module, options.download,
                            modules[options.modules_version], script_dir,
                            sources_dir, build_dir, install_dir, qtinfo,
                            py_executable, py_include_dir, py_library,
                            build_type)

        if options.build_module is None and options.package_version is not None:
            make_package(options.package_version, script_dir, sources_dir,
                         build_dir, install_dir, py_version,
                         options.pack_examples, options.debug, qtinfo, logger)

    except Exception:
        logger.error(''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(1)

    sys.exit(0)