用于管理存储库工作区的轻量级工具

wst的Python项目详细描述


工作区工具

ws是用于管理代码存储库集合的轻量级工具。它是 旨在处理项目之间的粗略依赖关系,构建多个 以正确的顺序进行项目并向每个项目传递正确的标志(例如 pkg_config_path和类似)。它不打算是一个成熟的建设 系统,但是应该只按照正确的顺序和 正确的环境胶。它所做的一切都可以用手做,所以 与替换现有的构建工具相比,它仅仅自动化了 在中手动指定--prefix、设置env vars和重新生成项目 更改时请按正确顺序进行。

请注意,这些工具不直接处理源代码同步。那份工作是 留给回购和类似工具。

依赖关系

ws取决于python3 pyyaml,您可以使用sudo apt install python3 yaml或从顶部的pip3install-r requirements.txt 存储库。

安装

要安装ws,可以在 存储库:python3 setup.py install<;在此处添加任何自定义选项>;。你可以 同时使用pip:pip3安装。从存储库的顶部。最后,如果你 希望安装的ws直接符号链接到源目录 要成为代码的一次性副本,请使用激活 pip"开发模式"。这样,代码更改立即生效 重新运行安装步骤。

WS

ws脚本是与工作区交互的主要点。它 假设您已经使用repo或其他工具同步了一堆代码 而且,除非您使用特殊选项,否则它假定您当前在某个位置 在ws管理的源的根中。但是,你可以在任何地方 在那棵树里面,不必在树顶。

ws的正常工作流程如下:

repo init -u MANIFEST-REPO-URL
repo sync
ws init -s repo
ws build

默认情况下,ws init将在根目录中查找名为ws manifest.yaml的文件 包含git repo清单(我们传递的-u 当我们调用repo init时。此文件包含依赖项和生成系统 ws管理的项目的信息。注意ws不必 管理repo管理的所有相同项目,但它可以。完整格式 forws manifest.yaml位于自述文件的底部。

如果不使用git repo工具,则可以传入自己的ws 通过ws init-s fs-m清单。这允许您管理清单,但是 类似(例如子模块或手动)。

bash完成

如果您喜欢bash补全和快速键入内容,可以这样做:

. bash-completion/ws

并自动完成ws命令。

WS初始化

当您运行ws init时,ws会在当前工作目录中创建一个.ws目录 目录。此目录可以包含多个工作区,但始终存在 默认工作区,如果不指定 使用-w选项替换工作区。创建多个 工作区是管理多个生成配置,例如单独的调试 发布版本。但是,同一.ws目录中的所有工作区都将 仍然在相同的源代码上操作(在 ws manifest.yaml)。

如果希望创建多个工作区,可以将ws init与 这样做的理由。例如,ws init new将创建一个新的工作区 调用了new。H但是,在运行ws default new之前,默认情况下不会使用它。也就是说,您还可以使用-w对其进行操作(例如ws-w new build)。

如果指定-m,则可以手动指向要使用的ws manifest.yaml。通过 默认情况下,这与包含Git回购清单的存储库相关(例如 如果在运行repo init之后有一个.repo目录,那么它是相对的 到.repo/manifests)。如果指定-s fs,则它可以指向 文件系统上的任何地方。

WS默认值

ws default用于更改默认工作区(当您 不要指定-w选项。

WS构建

ws build是您运行的主命令。如果您没有指定参数,它将 构建repo知道的每个项目。如果指定项目或 项目列表,它将只生成那些项目,加上它们的任何依赖项。 此外,ws将根据每个repo对源代码进行校验和,并避免 重建任何没有改变的东西。校验和逻辑使用git 速度和可靠性,因此由ws管理的源代码必须使用git。

WS清洁

ws clean清除指定的项目,如果没有参数,则清除所有项目 给出。默认情况下,它只运行底层构建的clean命令 系统(介子、cmake等)。如果您还使用-f/--force开关,它将 而是删除整个生成目录,而不是信任底层 建立系统。

WS环境

ws env允许您输入给定项目的生成环境。如果给出 没有参数,它在生成目录中为 项目。如果给定参数,它将从中运行指定的命令 目录。在这两种情况下,它都建立了正确的构建环境,所以构建 您可能使用的命令将正常工作,您可以检查 似乎错了。

ws env的一个示例用法是手动构建某些内容或调整构建 以ws不知道如何处理的方式配置给定项目。

WS配置

ws config设置工作区范围或每个项目的配置设置。 支持以下设置:

工作区范围的设置

  • 键入调试发布。指定工作区生成类型。

每个项目设置

  • 启用:设置是否生成给定项目。通常你想 构建所有内容,但您可以满足 发行或手动构建并安装在工作区之外。
  • args:为直接传递的特定项目设置生成参数 对于构建器(例如cmakemeson)。example将传递-d key=val来设置预处理器变量。

WS清单

wsmanifest是一个yaml文件,指定有关项目的一些内容ws 管理:

  • 他们使用什么构建系统(目前支持mesoncmake)。
  • 他们对由ws
  • 管理的其他项目有哪些依赖关系
  • 他们需要的任何特殊环境变量。
  • 任何需要的特殊生成器选项(例如-dcmake\u选项类型)。这些 选项直接传递到每个构建系统中 修改。
  • 应包括的任何其他清单。包含路径可以是绝对路径或 相对的。如果它们是相对的,则解释为相对于父对象 包含清单的目录。目录也可以包括在 哪种情况下目录文件中的每个清单文件都包含在内。
  • 搜索清单的任何搜索路径li在"包含"中列出。可以是 绝对的或相对的。如果是相对的,它是相对于 此清单。

语法如下:

include:
    - some-other-manifest.yaml
    - some-directory-of-manifests

search-path:
    - ../projects # a directory containing manifests

projects:
    some-project:
        build: meson
        deps:
            - gstreamer
            - ...
        targets:
            - test
            - docs
            - install
        env:
            GST_PLUGIN_PATH: ${LIBDIR}/gstreamer-1.0

    gstreamer:
        build: meson
        args:
            - -D gtk_doc=disabled

在本例中,某些项目用meson构建,需要gstreamer和 其他一些依赖关系。为了找到gstreamer插件,它需要 gst_plugin_path设置。它使用模板语法引用${libdir},这将 填写项目的库路径。

以下是可用模板变量的完整列表:

- ${LIBDIR}: the library path for the project (what `LD_LIBRARY_PATH` will be
  set to for the project's build environment.
- ${PREFIX}: the project's prefix (what you would pass to `--prefix`).

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

推荐PyPI第三方库


热门话题
java 安卓画布在画布上绘制路径,无需触摸方向   java如何执行HTTP删除?我得到的只是网址   java在main方法中使用getter和setter   java修改元模型的模式以更改/重命名列名   java如何在另一个片段中更改数据时刷新一个片段中的RecyclerView   在java中,进度条不会显示在从一个驱动器复制到另一个程序的文件中   java AWS API网关获取API密钥   java无法将sql(jpa查询)返回的列转换为自定义类   在Java中将JTable autoscroll摆动到底部   java读取文件列表列表   java在setText之后向下滚动   java运算符/未定义参数类型float,可选<float>   java如何禁用标准ant任务?   不使用任何现有类(如LinkedList)的JavaDeque?   java如何通过主函数的参数获取用户对数组的输入?   java制作一个包含方法的超类   java requestaudiofocus的正确参数是什么?