Exemplo n.º 1
0
def build_pkg(dist, live_objects, top_node):
    if dist.package_dir is not None:
        for package, path in dist.package_dir.iteritems():
            if not os.path.samefile(package.replace(".", os.sep), path):
                raise ConvertionError("setup.py with package_dir arguments is not supported (was %r)." % dist.package_dir)

    pkg = distutils_to_package_description(dist)
    modules = []
    for m in pkg.py_modules:
        if isinstance(m, basestring):
            modules.append(m)
        else:
            warnings.warn("The module %s it not understood" % str(m))
    pkg.py_modules = modules

    path_options = []
    pkg.data_files = {}
    if live_objects["package_data"]:
        gendatafiles = {}
        for package, files in live_objects["package_data"].iteritems():
            if len(files) > 0:
                # FIXME: use nodes here instead of ugly path manipulations
                name = "gendata_%s" % package.replace(".", "_")
                target_dir = os.path.join("$gendatadir", package.replace(".", "/"))
                data_section = DataFiles(name, files, target_dir)
                pkg.data_files[name] = data_section
        path_options.append(PathOption("gendatadir", "$sitedir",
                "Directory for datafiles obtained from distutils conversion"
                ))

    extra_source_files = []
    if live_objects["extra_data"]:
        extra_source_files.extend([canonalize_path(f) 
                                  for f in live_objects["extra_data"]])
    pkg.extra_source_files = sorted(prune_extra_files(extra_source_files, pkg, top_node))

    if live_objects["data_files"]:
        data_files = live_objects["data_files"]
        for pkg_name, source_dir, _, files in data_files:
            if len(files) > 0:
                name = "%s_data" % pkg_name.replace(".", "_")
                target_dir = os.path.join("$sitedir", pkg_name.replace(".", os.sep))
                pkg.data_files[name] = DataFiles(name, files, target_dir, source_dir)

    if dist.scripts:
        name = "%s_scripts" % pkg.name
        target_dir = "$eprefix"
        pkg.data_files[name] = DataFiles(name, dist.scripts, target_dir, ".")

    # numpy.distutils bug: packages are appended twice to the Distribution
    # instance, so we prune the list here
    pkg.packages = sorted(list(set(pkg.packages)))
    options = {"path_options": path_options}
    
    return pkg, options
Exemplo n.º 2
0
def build_pkg(dist, package_objects, top_node):
    pkg = distutils_to_package_description(dist)
    modules = []
    for m in pkg.py_modules:
        if isinstance(m, basestring):
            modules.append(m)
        else:
            warnings.warn("The module %s it not understood" % str(m))
    pkg.py_modules = modules

    path_options = []
    data_sections = {}

    extra_source_files = []
    if package_objects.extra_source_files:
        extra_source_files.extend(
            [canonalize_path(f) for f in package_objects.extra_source_files])

    for pkg_name, source_dir, target_dir, files in package_objects.iter_data_files(
            top_node):
        if len(files) > 0:
            if len(pkg_name) > 0:
                name = "%s_data" % pkg_name.replace(".", "_")
            else:
                name = "dist_data"
            source_dir = canonalize_path(source_dir)
            target_dir = canonalize_path(target_dir)
            files = [canonalize_path(f) for f in files]
            data_sections[name] = DataFiles(name, files, target_dir,
                                            source_dir)
    pkg.data_files.update(data_sections)

    if dist.scripts:
        name = "%s_scripts" % pkg.name
        target_dir = "$bindir"
        pkg.data_files[name] = DataFiles(name, dist.scripts, target_dir, ".")

    # numpy.distutils bug: packages are appended twice to the Distribution
    # instance, so we prune the list here
    pkg.packages = sorted(list(set(pkg.packages)))
    options = {"path_options": path_options}

    pkg.extra_source_files = sorted(
        prune_extra_files(extra_source_files, pkg, top_node))

    return pkg, options
Exemplo n.º 3
0
Arquivo: core.py Projeto: B-Rich/Bento
def build_pkg(dist, package_objects, top_node):
    pkg = distutils_to_package_description(dist)
    modules = []
    for m in pkg.py_modules:
        if isinstance(m, basestring):
            modules.append(m)
        else:
            warnings.warn("The module %s it not understood" % str(m))
    pkg.py_modules = modules

    path_options = []
    data_sections = {}

    extra_source_files = []
    if package_objects.extra_source_files:
        extra_source_files.extend([canonalize_path(f) 
                                  for f in package_objects.extra_source_files])

    for pkg_name, source_dir, target_dir, files in package_objects.iter_data_files(top_node):
        if len(files) > 0:
            if len(pkg_name) > 0:
                name = "%s_data" % pkg_name.replace(".", "_")
            else:
                name = "dist_data"
            source_dir = canonalize_path(source_dir)
            target_dir = canonalize_path(target_dir)
            files = [canonalize_path(f) for f in files]
            data_sections[name] = DataFiles(name, files, target_dir, source_dir)
    pkg.data_files.update(data_sections)

    if dist.scripts:
        name = "%s_scripts" % pkg.name
        target_dir = "$bindir"
        pkg.data_files[name] = DataFiles(name, dist.scripts, target_dir, ".")

    # numpy.distutils bug: packages are appended twice to the Distribution
    # instance, so we prune the list here
    pkg.packages = sorted(list(set(pkg.packages)))
    options = {"path_options": path_options}

    pkg.extra_source_files = sorted(prune_extra_files(extra_source_files, pkg, top_node))

    return pkg, options
Exemplo n.º 4
0
def build_pkg(dist, live_objects):
    pkg = distutils_to_package_description(dist)
    modules = []
    for m in pkg.py_modules:
        if isinstance(m, basestring):
            modules.append(m)
        else:
            warnings.warn("The module %s it not understood" % str(m))
    pkg.py_modules = modules

    path_options = []
    pkg.data_files = {}
    if live_objects["package_data"]:
        gendatafiles = {}
        for d in live_objects["package_data"]:
            if len(d["files"]) > 0:
                name = "gendata_%s" % d["target"].replace(os.path.sep, "_")
                gendatafiles[name] = {
                    "srcdir": canonalize_path(d["srcdir"]),
                    "target": posjoin("$gendatadir", canonalize_path(d["target"])),
                    "files": [canonalize_path(f) for f in d["files"]]
                }
        path_options.append(PathOption("gendatadir", "$sitedir",
                "Directory for datafiles obtained from distutils conversion"
                ))
        pkg.data_files.update(gendatafiles)

    extra_source_files = []
    if live_objects["extra_data"]:
        extra_source_files.extend([canonalize_path(f) 
                                  for f in live_objects["extra_data"]])
    pkg.extra_source_files = sorted(prune_extra_files(extra_source_files, pkg))

    if live_objects["data_files"]:
        pkg.data_files = combine_groups(live_objects["data_files"])

    # numpy.distutils bug: packages are appended twice to the Distribution
    # instance, so we prune the list here
    pkg.packages = sorted(list(set(pkg.packages)))
    options = {"path_options": path_options}
    
    return pkg, options