예제 #1
0
def export_recipe(conanfile, origin_folder, destination_folder):
    if isinstance(conanfile.exports, str):
        conanfile.exports = (conanfile.exports, )

    output = conanfile.output
    package_output = ScopedOutput("%s exports" % output.scope, output)

    if os.path.exists(os.path.join(origin_folder, DATA_YML)):
        package_output.info(
            "File '{}' found. Exporting it...".format(DATA_YML))
        tmp = [DATA_YML]
        if conanfile.exports:
            tmp.extend(conanfile.exports
                       )  # conanfile.exports could be a tuple (immutable)
        conanfile.exports = tmp

    included_exports, excluded_exports = _classify_patterns(conanfile.exports)

    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except OSError:
        pass

    copier = FileCopier([origin_folder], destination_folder)
    for pattern in included_exports:
        copier(pattern, links=True, excludes=excluded_exports)

    copier.report(package_output)
예제 #2
0
파일: export.py 프로젝트: uael/conan
def execute_export(conanfile, origin_folder, destination_folder, output):
    def classify(patterns):
        patterns = patterns or []
        included, excluded = [], []
        for p in patterns:
            if p.startswith("!"):
                excluded.append(p[1:])
            else:
                included.append(p)
        return included, excluded

    included_exports, excluded_exports = classify(conanfile.exports)
    included_sources, excluded_sources = classify(conanfile.exports_sources)

    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in included_exports:
        copier(pattern, links=True, excludes=excluded_exports)
    # create directory for sources, and import them
    export_sources_dir = os.path.join(destination_folder, EXPORT_SOURCES_DIR)
    mkdir(export_sources_dir)
    copier = FileCopier(origin_folder, export_sources_dir)
    for pattern in included_sources:
        copier(pattern, links=True, excludes=excluded_sources)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(os.path.join(origin_folder, CONANFILE), destination_folder)
예제 #3
0
def _execute_export(conanfile_path, conanfile, destination_folder,
                    destination_source_folder, output):

    origin_folder = os.path.dirname(conanfile_path)

    def classify_patterns(patterns):
        patterns = patterns or []
        included, excluded = [], []
        for p in patterns:
            if p.startswith("!"):
                excluded.append(p[1:])
            else:
                included.append(p)
        return included, excluded

    included_exports, excluded_exports = classify_patterns(conanfile.exports)
    included_sources, excluded_sources = classify_patterns(conanfile.exports_sources)

    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except OSError:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in included_exports:
        copier(pattern, links=True, excludes=excluded_exports)
    copier = FileCopier(origin_folder, destination_source_folder)
    for pattern in included_sources:
        copier(pattern, links=True, excludes=excluded_sources)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(conanfile_path,
                 os.path.join(destination_folder, CONANFILE))
예제 #4
0
파일: export.py 프로젝트: nesono/conan
def execute_export(conanfile, origin_folder, destination_folder, output, filename=None):

    def classify_patterns(patterns):
        patterns = patterns or []
        included, excluded = [], []
        for p in patterns:
            if p.startswith("!"):
                excluded.append(p[1:])
            else:
                included.append(p)
        return included, excluded

    included_exports, excluded_exports = classify_patterns(conanfile.exports)
    included_sources, excluded_sources = classify_patterns(conanfile.exports_sources)

    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in included_exports:
        copier(pattern, links=True, excludes=excluded_exports)
    # create directory for sources, and import them
    export_sources_dir = os.path.join(destination_folder, EXPORT_SOURCES_DIR)
    mkdir(export_sources_dir)
    copier = FileCopier(origin_folder, export_sources_dir)
    for pattern in included_sources:
        copier(pattern, links=True, excludes=excluded_sources)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(os.path.join(origin_folder, filename or CONANFILE),
                 os.path.join(destination_folder, CONANFILE))
예제 #5
0
파일: export.py 프로젝트: sshyran/conan
def export_source(conanfile, origin_folder, destination_source_folder):
    if isinstance(conanfile.exports_sources, str):
        conanfile.exports_sources = (conanfile.exports_sources, )

    included_sources, excluded_sources = _classify_patterns(conanfile.exports_sources)
    copier = FileCopier([origin_folder], destination_source_folder)
    for pattern in included_sources:
        copier(pattern, links=True, excludes=excluded_sources)
    output = conanfile.output
    package_output = ScopedOutput("%s exports_sources" % output.scope, output)
    copier.report(package_output)
예제 #6
0
파일: packager.py 프로젝트: rukgar/conan
def export_pkg(conanfile, src_package_folder, package_folder, output):
    mkdir(package_folder)

    output.info("Exporting to cache existing package from user folder")
    output.info("Package folder %s" % (package_folder))

    copier = FileCopier(src_package_folder, package_folder)
    copier("*", symlinks=True)
    copier.report(output, warn=True)

    save(os.path.join(package_folder, CONANINFO), conanfile.info.dumps())
    digest = FileTreeManifest.create(package_folder)
    save(os.path.join(package_folder, CONAN_MANIFEST), str(digest))
    output.success("Package '%s' created" % os.path.basename(package_folder))
예제 #7
0
파일: export.py 프로젝트: conan-io/conan
def _export(file_patterns, origin_folder, destination_folder, output):
    file_patterns = file_patterns or []
    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in file_patterns:
        copier(pattern)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(os.path.join(origin_folder, CONANFILE), destination_folder)
예제 #8
0
파일: export.py 프로젝트: tnovits-d2d/conan
def _export(file_patterns, origin_folder, destination_folder, output):
    file_patterns = file_patterns or []
    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in file_patterns:
        copier(pattern)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(os.path.join(origin_folder, CONANFILE), destination_folder)
예제 #9
0
def export_pkg(conanfile, pkg_id, src_package_folder, package_folder, output,
               hook_manager, conanfile_path, reference):
    mkdir(package_folder)
    conanfile.package_folder = src_package_folder
    output.info("Exporting to cache existing package from user folder")
    output.info("Package folder %s" % package_folder)
    hook_manager.execute("pre_package",
                         conanfile=conanfile,
                         conanfile_path=conanfile_path,
                         reference=reference,
                         package_id=pkg_id)

    copier = FileCopier(src_package_folder, package_folder)
    copier("*", symlinks=True)

    copy_done = copier.report(output)
    if not copy_done:
        output.warn("No files copied from package folder!")

    save(os.path.join(package_folder, CONANINFO), conanfile.info.dumps())
    digest = FileTreeManifest.create(package_folder)
    digest.save(package_folder)
    output.success("Package '%s' created" % pkg_id)
    conanfile.package_folder = package_folder
    hook_manager.execute("post_package",
                         conanfile=conanfile,
                         conanfile_path=conanfile_path,
                         reference=reference,
                         package_id=pkg_id)
예제 #10
0
파일: export.py 프로젝트: xj361685640/conan
def export_recipe(conanfile, origin_folder, destination_folder, output):
    if isinstance(conanfile.exports, str):
        conanfile.exports = (conanfile.exports, )

    included_exports, excluded_exports = _classify_patterns(conanfile.exports)

    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except OSError:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in included_exports:
        copier(pattern, links=True, excludes=excluded_exports)
    package_output = ScopedOutput("%s exports" % output.scope, output)
    copier.report(package_output)
예제 #11
0
def export_source(conanfile, origin_folder, destination_source_folder):
    if callable(conanfile.exports_sources):
        raise ConanException(
            "conanfile 'exports_sources' shouldn't be a method, "
            "use 'export_sources()' instead")

    if isinstance(conanfile.exports_sources, str):
        conanfile.exports_sources = (conanfile.exports_sources, )

    included_sources, excluded_sources = _classify_patterns(
        conanfile.exports_sources)
    copier = FileCopier([origin_folder], destination_source_folder)
    for pattern in included_sources:
        copier(pattern, links=True, excludes=excluded_sources)
    output = conanfile.output
    package_output = ScopedOutput("%s exports_sources" % output.scope, output)
    copier.report(package_output)

    _run_method(conanfile, "export_sources", origin_folder,
                destination_source_folder, output)
예제 #12
0
def _run_method(conanfile, method, origin_folder, destination_folder, output):
    export_method = getattr(conanfile, method, None)
    if export_method:
        if not callable(export_method):
            raise ConanException("conanfile '%s' must be a method" % method)
        output.highlight("Calling %s()" % method)
        copier = FileCopier([origin_folder], destination_folder)
        conanfile.copy = copier
        default_options = conanfile.default_options
        try:
            # TODO: Poor man attribute control access. Convert to nice decorator
            conanfile.default_options = None
            with chdir(origin_folder):
                with conanfile_exception_formatter(str(conanfile), method):
                    export_method()
        finally:
            conanfile.default_options = default_options
        export_method_output = ScopedOutput(
            "%s %s() method" % (output.scope, method), output)
        copier.report(export_method_output)
예제 #13
0
파일: export.py 프로젝트: xlk3099/conan
def _export(conanfile, origin_folder, destination_folder, output):
    exports = conanfile.exports or []
    exports_sources = conanfile.exports_sources or []
    try:
        os.unlink(os.path.join(origin_folder, CONANFILE + 'c'))
    except:
        pass

    copier = FileCopier(origin_folder, destination_folder)
    for pattern in exports:
        copier(pattern, links=True)
    # create directory for sources, and import them
    export_sources_dir = os.path.join(destination_folder, EXPORT_SOURCES_DIR)
    mkdir(export_sources_dir)
    copier = FileCopier(origin_folder, export_sources_dir)
    for pattern in exports_sources:
        copier(pattern, links=True)
    package_output = ScopedOutput("%s export" % output.scope, output)
    copier.report(package_output)

    shutil.copy2(os.path.join(origin_folder, CONANFILE), destination_folder)
예제 #14
0
파일: packager.py 프로젝트: ytimenkov/conan
def export_pkg(conanfile, src_package_folder, package_folder, output):
    mkdir(package_folder)

    output.info("Exporting to cache existing package from user folder")
    output.info("Package folder %s" % package_folder)

    copier = FileCopier(src_package_folder, package_folder)
    copier("*", symlinks=True)

    copy_done = copier.report(output)
    if not copy_done:
        output.warn("No files copied from package folder!")

    save(os.path.join(package_folder, CONANINFO), conanfile.info.dumps())
    digest = FileTreeManifest.create(package_folder)
    digest.save(package_folder)
    output.success("Package '%s' created" % os.path.basename(package_folder))
예제 #15
0
파일: packager.py 프로젝트: 19317362/conan
def export_pkg(conanfile, src_package_folder, package_folder, output):
    mkdir(package_folder)

    output.info("Exporting to cache existing package from user folder")
    output.info("Package folder %s" % package_folder)

    copier = FileCopier(src_package_folder, package_folder)
    copier("*", symlinks=True)

    copy_done = copier.report(output)
    if not copy_done:
        output.warn("No files copied from package folder!")

    save(os.path.join(package_folder, CONANINFO), conanfile.info.dumps())
    digest = FileTreeManifest.create(package_folder)
    digest.save(package_folder)
    output.success("Package '%s' created" % os.path.basename(package_folder))