xf-build


Namexf-build JSON
Version 0.3.8 PyPI version JSON
download
home_pagehttp://www.coral-zone.cc/
SummaryA tools for xfusion
upload_time2024-11-04 07:19:10
maintainerNone
docs_urlNone
authorkirto
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # xf build

基于python制作的构建系统,目的是为了生成成makefile cmake等其它的构建方式的构建器。
与传统的构建方式不同的是,本构建方式不会直接编译,且不会产生直接用于编译的其它构建脚本。
而是收集编译需要的相关信息生成json,最终需要配合插件系统适配不同底层环境,最终完成与底层sdk工程的合作编译。

# 原理

首先,我们了解一下环境变量

XF_ROOT: 记录 xfusion 根目录绝对路径
XF_TARGET:记录具体激活的平台
XF_TARGET_PATH: 记录激活平台的源工程绝对路径

XF_PROJECT_PATH(可选): 记录当前工程绝对路径,如果没有设置,则会将当前执行命令的路径设置为工程路径 
XF_PROJECT(可选): 记录当前工程名称,如果没有设置,则会将当前执行命令的文件夹名设置为工程路径

# 开源地址

[github](https://github.com/x-eks-fusion/xf_build)

[gitee](https://gitee.com/x-eks-fusion/xf_build)

# 安装

```shell
pip install xf_build
```

# 命令介绍

```shell
xf --help
Usage: xf [OPTIONS] COMMAND [ARGS]...

Options:
  -v, --verbose  打印更多日志信息
  -r, --rich     使用rich库打印日志
  -t, --test     测试模式(不会调用插件)
  --help         Show this message and exit.

Commands:
  build       编译工程
  clean       清空编译中间产物
  create      初始化创建一个新工程
  export      导出对应sdk的工程(需要port对接)
  flash       烧录工程(需要port对接)
  install     安装指定的包
  menuconfig  全局宏的配置
  monitor     串口监视器
  search      模糊搜索包名
  target      target 相关操作:展示目标或下载SDK
  uninstall   卸载指定的包
  update      更新对应sdk的工程(需要port对接)
```

### build 命令

build 命令在执行时,会检查当前路径下是否有 xf_project.py 来判断是否出于工程文件夹中。如果不是则无法继续执行。而后,会检查当前的 target 和 project 是与上次不同则会调用 clean 命令清除之前编译生成的中间文件。然后,直接执行当前的 xf_project.py ,xf_project.py 来将 XF_ROOT/components/\*/xf_collect.py , XF_PROJECT_PATH/components/\*/xf_collect.py 和 XF_PROJECT_PATH/main/xf_collect.py 执行一遍。最后,收集成为 build 文件夹下 build_info.json 文件。
然后调用 XF_ROOT/plugins/XF_TARGET 路径下的插件。完成后续 build_info.json 转换成构建脚本,并编译的功能。

### clean 命令

clean 会删除当前的 build 文件夹,而后会调用插件的 clean 命令。

### create 命令

create 命令会复制 XF_ROOT/example/get_started/template_project 到当前目录并改名

### export 命令

export 命令需要插件实现其功能

### flash 命令

flash 命令需要插件实现其功能

### install 命令

install 命令是通过 requests 请求远端的服务器下载指定的软件包。
如果远端有则下载后解压并放入 compoents 文件夹中

### menuconfig 命令

install 命令是收集 XF_ROOT/components/\*/XFKconfig 和 XF_PROJECT_PATH/components/\*/XFKconfig 并生成命令行可视化配置界面。配置完成后会在 build/header_config 文件夹下,生成 xfconfig.h 文件。

### monitor 命令

使用命令行串口监视器,Ctrl+]退出串口监视器

### search 命令

search 命令是可以查询包名是否存在

### target 命令

该命令主要用于和target相关的操作,-s展示当前的target信息,-d下载当前的target sdk

### uninstall 命令

uninstall 命令可以帮你删除指定的组件

### update 命令

update 命令需要底层插件支持,其功能是更新导出的工程。与 export 不同的是,该命令不会创建新工程


# 历史更新记录

**v0.3.7**
1. 修复 user_dirs 在 apply_components_template() 中无效的bug
2. 新增获取target的sdk路径的API

**v0.3.6**
1. 新增monitor功能,用户可以通过monitor使用命令行串口监视器
2. 新增target功能,-s可以查询当前target信息,-d可以下载对应的sdk
3. 当某些指令判断当前不是project工程,则直接raise报错
4. 修改了文件夹结构

**v0.3.1**
1. 预编译阶段调用xf_project.py从被动的执行,改为读取后exec执行。
2. 预编译前期会搜索:public components,user components 的所有子文件夹下是否含有xf_collect.py ,然后将user_dirs也搜索一遍,最后将user_main。构成初期的检索结果 build_info.json
3. 中期调用menuconfig进行生成,menuconfig也会通过build_info.json的路径,进行XFKconfig的搜索
4. 后期会将build_info.json的路径下的xf_collect.py全部执行一遍


**v0.2.3**
1. collect方法添加cflag参数
2. 支持用户自定义文件夹
3. 修改XFKconfig的扫描逻辑,现在会根据build_environ.json进行扫描。
4. port部分的XFConfig会加入扫描中

            

Raw data

            {
    "_id": null,
    "home_page": "http://www.coral-zone.cc/",
    "name": "xf-build",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "kirto",
    "author_email": "sky.kirto@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/95/3e/0a20b1aa7e75f8401d41c451497aa670f167205ba42d6f9ad5bcd271c0ca/xf_build-0.3.8.tar.gz",
    "platform": null,
    "description": "# xf build\n\n\u57fa\u4e8epython\u5236\u4f5c\u7684\u6784\u5efa\u7cfb\u7edf\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u751f\u6210\u6210makefile cmake\u7b49\u5176\u5b83\u7684\u6784\u5efa\u65b9\u5f0f\u7684\u6784\u5efa\u5668\u3002\n\u4e0e\u4f20\u7edf\u7684\u6784\u5efa\u65b9\u5f0f\u4e0d\u540c\u7684\u662f\uff0c\u672c\u6784\u5efa\u65b9\u5f0f\u4e0d\u4f1a\u76f4\u63a5\u7f16\u8bd1\uff0c\u4e14\u4e0d\u4f1a\u4ea7\u751f\u76f4\u63a5\u7528\u4e8e\u7f16\u8bd1\u7684\u5176\u5b83\u6784\u5efa\u811a\u672c\u3002\n\u800c\u662f\u6536\u96c6\u7f16\u8bd1\u9700\u8981\u7684\u76f8\u5173\u4fe1\u606f\u751f\u6210json\uff0c\u6700\u7ec8\u9700\u8981\u914d\u5408\u63d2\u4ef6\u7cfb\u7edf\u9002\u914d\u4e0d\u540c\u5e95\u5c42\u73af\u5883\uff0c\u6700\u7ec8\u5b8c\u6210\u4e0e\u5e95\u5c42sdk\u5de5\u7a0b\u7684\u5408\u4f5c\u7f16\u8bd1\u3002\n\n# \u539f\u7406\n\n\u9996\u5148\uff0c\u6211\u4eec\u4e86\u89e3\u4e00\u4e0b\u73af\u5883\u53d8\u91cf\n\nXF_ROOT: \u8bb0\u5f55 xfusion \u6839\u76ee\u5f55\u7edd\u5bf9\u8def\u5f84\nXF_TARGET\uff1a\u8bb0\u5f55\u5177\u4f53\u6fc0\u6d3b\u7684\u5e73\u53f0\nXF_TARGET_PATH: \u8bb0\u5f55\u6fc0\u6d3b\u5e73\u53f0\u7684\u6e90\u5de5\u7a0b\u7edd\u5bf9\u8def\u5f84\n\nXF_PROJECT_PATH(\u53ef\u9009): \u8bb0\u5f55\u5f53\u524d\u5de5\u7a0b\u7edd\u5bf9\u8def\u5f84\uff0c\u5982\u679c\u6ca1\u6709\u8bbe\u7f6e\uff0c\u5219\u4f1a\u5c06\u5f53\u524d\u6267\u884c\u547d\u4ee4\u7684\u8def\u5f84\u8bbe\u7f6e\u4e3a\u5de5\u7a0b\u8def\u5f84 \nXF_PROJECT(\u53ef\u9009): \u8bb0\u5f55\u5f53\u524d\u5de5\u7a0b\u540d\u79f0\uff0c\u5982\u679c\u6ca1\u6709\u8bbe\u7f6e\uff0c\u5219\u4f1a\u5c06\u5f53\u524d\u6267\u884c\u547d\u4ee4\u7684\u6587\u4ef6\u5939\u540d\u8bbe\u7f6e\u4e3a\u5de5\u7a0b\u8def\u5f84\n\n# \u5f00\u6e90\u5730\u5740\n\n[github](https://github.com/x-eks-fusion/xf_build)\n\n[gitee](https://gitee.com/x-eks-fusion/xf_build)\n\n# \u5b89\u88c5\n\n```shell\npip install xf_build\n```\n\n# \u547d\u4ee4\u4ecb\u7ecd\n\n```shell\nxf --help\nUsage: xf [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n  -v, --verbose  \u6253\u5370\u66f4\u591a\u65e5\u5fd7\u4fe1\u606f\n  -r, --rich     \u4f7f\u7528rich\u5e93\u6253\u5370\u65e5\u5fd7\n  -t, --test     \u6d4b\u8bd5\u6a21\u5f0f\uff08\u4e0d\u4f1a\u8c03\u7528\u63d2\u4ef6\uff09\n  --help         Show this message and exit.\n\nCommands:\n  build       \u7f16\u8bd1\u5de5\u7a0b\n  clean       \u6e05\u7a7a\u7f16\u8bd1\u4e2d\u95f4\u4ea7\u7269\n  create      \u521d\u59cb\u5316\u521b\u5efa\u4e00\u4e2a\u65b0\u5de5\u7a0b\n  export      \u5bfc\u51fa\u5bf9\u5e94sdk\u7684\u5de5\u7a0b\uff08\u9700\u8981port\u5bf9\u63a5\uff09\n  flash       \u70e7\u5f55\u5de5\u7a0b\uff08\u9700\u8981port\u5bf9\u63a5\uff09\n  install     \u5b89\u88c5\u6307\u5b9a\u7684\u5305\n  menuconfig  \u5168\u5c40\u5b8f\u7684\u914d\u7f6e\n  monitor     \u4e32\u53e3\u76d1\u89c6\u5668\n  search      \u6a21\u7cca\u641c\u7d22\u5305\u540d\n  target      target \u76f8\u5173\u64cd\u4f5c\uff1a\u5c55\u793a\u76ee\u6807\u6216\u4e0b\u8f7dSDK\n  uninstall   \u5378\u8f7d\u6307\u5b9a\u7684\u5305\n  update      \u66f4\u65b0\u5bf9\u5e94sdk\u7684\u5de5\u7a0b\uff08\u9700\u8981port\u5bf9\u63a5\uff09\n```\n\n### build \u547d\u4ee4\n\nbuild \u547d\u4ee4\u5728\u6267\u884c\u65f6\uff0c\u4f1a\u68c0\u67e5\u5f53\u524d\u8def\u5f84\u4e0b\u662f\u5426\u6709 xf_project.py \u6765\u5224\u65ad\u662f\u5426\u51fa\u4e8e\u5de5\u7a0b\u6587\u4ef6\u5939\u4e2d\u3002\u5982\u679c\u4e0d\u662f\u5219\u65e0\u6cd5\u7ee7\u7eed\u6267\u884c\u3002\u800c\u540e\uff0c\u4f1a\u68c0\u67e5\u5f53\u524d\u7684 target \u548c project \u662f\u4e0e\u4e0a\u6b21\u4e0d\u540c\u5219\u4f1a\u8c03\u7528 clean \u547d\u4ee4\u6e05\u9664\u4e4b\u524d\u7f16\u8bd1\u751f\u6210\u7684\u4e2d\u95f4\u6587\u4ef6\u3002\u7136\u540e\uff0c\u76f4\u63a5\u6267\u884c\u5f53\u524d\u7684 xf_project.py \uff0cxf_project.py \u6765\u5c06 XF_ROOT/components/\\*/xf_collect.py , XF_PROJECT_PATH/components/\\*/xf_collect.py \u548c XF_PROJECT_PATH/main/xf_collect.py \u6267\u884c\u4e00\u904d\u3002\u6700\u540e\uff0c\u6536\u96c6\u6210\u4e3a build \u6587\u4ef6\u5939\u4e0b build_info.json \u6587\u4ef6\u3002\n\u7136\u540e\u8c03\u7528 XF_ROOT/plugins/XF_TARGET \u8def\u5f84\u4e0b\u7684\u63d2\u4ef6\u3002\u5b8c\u6210\u540e\u7eed build_info.json \u8f6c\u6362\u6210\u6784\u5efa\u811a\u672c\uff0c\u5e76\u7f16\u8bd1\u7684\u529f\u80fd\u3002\n\n### clean \u547d\u4ee4\n\nclean \u4f1a\u5220\u9664\u5f53\u524d\u7684 build \u6587\u4ef6\u5939\uff0c\u800c\u540e\u4f1a\u8c03\u7528\u63d2\u4ef6\u7684 clean \u547d\u4ee4\u3002\n\n### create \u547d\u4ee4\n\ncreate \u547d\u4ee4\u4f1a\u590d\u5236 XF_ROOT/example/get_started/template_project \u5230\u5f53\u524d\u76ee\u5f55\u5e76\u6539\u540d\n\n### export \u547d\u4ee4\n\nexport \u547d\u4ee4\u9700\u8981\u63d2\u4ef6\u5b9e\u73b0\u5176\u529f\u80fd\n\n### flash \u547d\u4ee4\n\nflash \u547d\u4ee4\u9700\u8981\u63d2\u4ef6\u5b9e\u73b0\u5176\u529f\u80fd\n\n### install \u547d\u4ee4\n\ninstall \u547d\u4ee4\u662f\u901a\u8fc7 requests \u8bf7\u6c42\u8fdc\u7aef\u7684\u670d\u52a1\u5668\u4e0b\u8f7d\u6307\u5b9a\u7684\u8f6f\u4ef6\u5305\u3002\n\u5982\u679c\u8fdc\u7aef\u6709\u5219\u4e0b\u8f7d\u540e\u89e3\u538b\u5e76\u653e\u5165 compoents \u6587\u4ef6\u5939\u4e2d\n\n### menuconfig \u547d\u4ee4\n\ninstall \u547d\u4ee4\u662f\u6536\u96c6 XF_ROOT/components/\\*/XFKconfig \u548c XF_PROJECT_PATH/components/\\*/XFKconfig \u5e76\u751f\u6210\u547d\u4ee4\u884c\u53ef\u89c6\u5316\u914d\u7f6e\u754c\u9762\u3002\u914d\u7f6e\u5b8c\u6210\u540e\u4f1a\u5728 build/header_config \u6587\u4ef6\u5939\u4e0b\uff0c\u751f\u6210 xfconfig.h \u6587\u4ef6\u3002\n\n### monitor \u547d\u4ee4\n\n\u4f7f\u7528\u547d\u4ee4\u884c\u4e32\u53e3\u76d1\u89c6\u5668\uff0cCtrl+]\u9000\u51fa\u4e32\u53e3\u76d1\u89c6\u5668\n\n### search \u547d\u4ee4\n\nsearch \u547d\u4ee4\u662f\u53ef\u4ee5\u67e5\u8be2\u5305\u540d\u662f\u5426\u5b58\u5728\n\n### target \u547d\u4ee4\n\n\u8be5\u547d\u4ee4\u4e3b\u8981\u7528\u4e8e\u548ctarget\u76f8\u5173\u7684\u64cd\u4f5c\uff0c-s\u5c55\u793a\u5f53\u524d\u7684target\u4fe1\u606f\uff0c-d\u4e0b\u8f7d\u5f53\u524d\u7684target sdk\n\n### uninstall \u547d\u4ee4\n\nuninstall \u547d\u4ee4\u53ef\u4ee5\u5e2e\u4f60\u5220\u9664\u6307\u5b9a\u7684\u7ec4\u4ef6\n\n### update \u547d\u4ee4\n\nupdate \u547d\u4ee4\u9700\u8981\u5e95\u5c42\u63d2\u4ef6\u652f\u6301\uff0c\u5176\u529f\u80fd\u662f\u66f4\u65b0\u5bfc\u51fa\u7684\u5de5\u7a0b\u3002\u4e0e export \u4e0d\u540c\u7684\u662f\uff0c\u8be5\u547d\u4ee4\u4e0d\u4f1a\u521b\u5efa\u65b0\u5de5\u7a0b\n\n\n# \u5386\u53f2\u66f4\u65b0\u8bb0\u5f55\n\n**v0.3.7**\n1. \u4fee\u590d user_dirs \u5728 apply_components_template() \u4e2d\u65e0\u6548\u7684bug\n2. \u65b0\u589e\u83b7\u53d6target\u7684sdk\u8def\u5f84\u7684API\n\n**v0.3.6**\n1. \u65b0\u589emonitor\u529f\u80fd\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7monitor\u4f7f\u7528\u547d\u4ee4\u884c\u4e32\u53e3\u76d1\u89c6\u5668\n2. \u65b0\u589etarget\u529f\u80fd\uff0c-s\u53ef\u4ee5\u67e5\u8be2\u5f53\u524dtarget\u4fe1\u606f\uff0c-d\u53ef\u4ee5\u4e0b\u8f7d\u5bf9\u5e94\u7684sdk\n3. \u5f53\u67d0\u4e9b\u6307\u4ee4\u5224\u65ad\u5f53\u524d\u4e0d\u662fproject\u5de5\u7a0b\uff0c\u5219\u76f4\u63a5raise\u62a5\u9519\n4. \u4fee\u6539\u4e86\u6587\u4ef6\u5939\u7ed3\u6784\n\n**v0.3.1**\n1. \u9884\u7f16\u8bd1\u9636\u6bb5\u8c03\u7528xf_project.py\u4ece\u88ab\u52a8\u7684\u6267\u884c\uff0c\u6539\u4e3a\u8bfb\u53d6\u540eexec\u6267\u884c\u3002\n2. \u9884\u7f16\u8bd1\u524d\u671f\u4f1a\u641c\u7d22\uff1apublic components\uff0cuser components \u7684\u6240\u6709\u5b50\u6587\u4ef6\u5939\u4e0b\u662f\u5426\u542b\u6709xf_collect.py \uff0c\u7136\u540e\u5c06user_dirs\u4e5f\u641c\u7d22\u4e00\u904d\uff0c\u6700\u540e\u5c06user_main\u3002\u6784\u6210\u521d\u671f\u7684\u68c0\u7d22\u7ed3\u679c build_info.json\n3. \u4e2d\u671f\u8c03\u7528menuconfig\u8fdb\u884c\u751f\u6210\uff0cmenuconfig\u4e5f\u4f1a\u901a\u8fc7build_info.json\u7684\u8def\u5f84\uff0c\u8fdb\u884cXFKconfig\u7684\u641c\u7d22\n4. \u540e\u671f\u4f1a\u5c06build_info.json\u7684\u8def\u5f84\u4e0b\u7684xf_collect.py\u5168\u90e8\u6267\u884c\u4e00\u904d\n\n\n**v0.2.3**\n1. collect\u65b9\u6cd5\u6dfb\u52a0cflag\u53c2\u6570\n2. \u652f\u6301\u7528\u6237\u81ea\u5b9a\u4e49\u6587\u4ef6\u5939\n3. \u4fee\u6539XFKconfig\u7684\u626b\u63cf\u903b\u8f91\uff0c\u73b0\u5728\u4f1a\u6839\u636ebuild_environ.json\u8fdb\u884c\u626b\u63cf\u3002\n4. port\u90e8\u5206\u7684XFConfig\u4f1a\u52a0\u5165\u626b\u63cf\u4e2d\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A tools for xfusion",
    "version": "0.3.8",
    "project_urls": {
        "Homepage": "http://www.coral-zone.cc/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25eb4fbb47ccdb1ac7249530cf3168758ce45f0061639fb253e49bd33f482801",
                "md5": "597263c703e3dcec96e90e7cba7791e4",
                "sha256": "cb0e918612da1d207ddce404f5a9e04b669c3d170897dee750b690a843a3f856"
            },
            "downloads": -1,
            "filename": "xf_build-0.3.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "597263c703e3dcec96e90e7cba7791e4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 22304,
            "upload_time": "2024-11-04T07:19:08",
            "upload_time_iso_8601": "2024-11-04T07:19:08.765700Z",
            "url": "https://files.pythonhosted.org/packages/25/eb/4fbb47ccdb1ac7249530cf3168758ce45f0061639fb253e49bd33f482801/xf_build-0.3.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "953e0a20b1aa7e75f8401d41c451497aa670f167205ba42d6f9ad5bcd271c0ca",
                "md5": "2983cab94c116378b8de84015961093f",
                "sha256": "47968e1e99cca59836f2a3f89909ccb1b1e347fa4d4f7e1bf146ea13f3b2b241"
            },
            "downloads": -1,
            "filename": "xf_build-0.3.8.tar.gz",
            "has_sig": false,
            "md5_digest": "2983cab94c116378b8de84015961093f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 21367,
            "upload_time": "2024-11-04T07:19:10",
            "upload_time_iso_8601": "2024-11-04T07:19:10.379120Z",
            "url": "https://files.pythonhosted.org/packages/95/3e/0a20b1aa7e75f8401d41c451497aa670f167205ba42d6f9ad5bcd271c0ca/xf_build-0.3.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-04 07:19:10",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "xf-build"
}
        
Elapsed time: 0.42061s