从Debian打包存储库目录生成构建顺序图

controlgraph的Python项目详细描述


控制图

PyPI versionBuild status

controlgraph是一个有向图,它可以被遍历以支持并行的debian包构建。

从具有有效debian打包的可用目录中,生成一个包含节点的目录(表示源包)和边的构建依赖关系的图。此图的反面可以通过广度优先搜索遍历,以按依赖顺序构建。

controlgraph是以线性或点格式返回要生成的目录的控制图的程序。

安装

pip3 install controlgraph

库使用

importsysfrompathlibimportPathimportcontrolgraphimportnetworkxasnx# get all directoriesdirs=[pforpinPath.cwd().iterdir()ifp.is_dir()]# get map of local binary packages to locally-available source build dependenciespkgs=controlgraph.parse_all_controlfiles(dirs)# generate build dependency graph from mapdep_graph=controlgraph.graph(pkgs)# print full dot graphnx.nx_pydot.write_dot(dep_graph,sys.stdout)# print linear order from depth-first searchprint(" ".join(list(nx.dfs_postorder_nodes(dep_graph))))

输出

strict digraph  {
"opx-nas-daemon";
"opx-common-utils";
"opx-cps";
"opx-logging";
"opx-nas-acl";
"opx-sdi-sys";
"opx-nas-daemon" -> "opx-common-utils";
"opx-nas-daemon" -> "opx-cps";
"opx-nas-daemon" -> "opx-logging";
"opx-nas-daemon" -> "opx-nas-acl";
"opx-common-utils" -> "opx-logging";
"opx-cps" -> "opx-common-utils";
"opx-cps" -> "opx-logging";
"opx-nas-acl" -> "opx-common-utils";
"opx-nas-acl" -> "opx-cps";
"opx-nas-acl" -> "opx-logging";
"opx-sdi-sys" -> "opx-common-utils";
"opx-sdi-sys" -> "opx-logging";
}

opx-logging opx-common-utils opx-cps opx-nas-acl opx-nas-daemon opx-sdi-sys

cli用法

当存在一个或多个目录时,运行controlgraph

$ for r in opx-nas-acl opx-nas-daemon opx-alarm opx-logging opx-common-utils;do
    git clone "https://github.com/open-switch/$r"done

$ controlgraph
opx-alarm opx-logging opx-common-utils opx-nas-acl opx-nas-daemon

$ controlgraph --graph
strict digraph  {"opx-alarm";"opx-nas-daemon";"opx-common-utils";"opx-logging";"opx-nas-acl";"opx-nas-daemon" -> "opx-common-utils";"opx-nas-daemon" -> "opx-logging";"opx-nas-daemon" -> "opx-nas-acl";"opx-common-utils" -> "opx-logging";"opx-nas-acl" -> "opx-common-utils";"opx-nas-acl" -> "opx-logging";}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频