OSS information Extraction Tool【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure概述本工具用于从开源软件源码包中自动提取版权信息copyright和许可证信息license生成标准化的Readme.opensource文件。工具基于 ScanCode Toolkit 的扫描能力并针对实际使用场景进行了多项优化。环境准备工具依托scancode-toolkit的copyright提取功能所以需要确保环境满足scancode-toolkit运行要求详见官方文档本工具开发和测试的环境为Ubuntu 22.04python3.10python3.11pip 25.2在windows环境运行时可能会出现自动生成的临时目录路径过长导致自动删除临时目录失败如确需在windows环境使用建议修改系统参数配置。输入支持对开源软件源码包一般为zip或tar文件以及源码目录如git clone后的目录执行扫描。支持的压缩格式.zip,.tar,.tar.gz,.tgz,.tar.bz2,.tbz2运行进入OSSinfo_extraction目录后执行pip install -e . 安装完成后会生成cret命令执行以下格式运行命令格式cret -t target -n software_name -v software_version [可选参数]必填参数参数长参数说明-t--target被测目标文件或目录路径如package.zip 或 ./source_dir-n--name软件名称-v--version软件版本可选参数参数长参数说明-l--licenseLicense名称必须使用SPDX许可证标识符如MIT, Apache-2.0-p--license-pathLicense文件相对路径相对于代码根目录-o--output-dir输出目录默认为被测目标同级目录--guide显示详细使用指南⚠️ 重要提示License名称必须使用SPDX标识符使用-l参数指定license名称时必须使用符合 SPDX (Software Package Data Exchange) 标准的许可证标识符。SPDX标识符是开源许可证的标准化短名称确保许可证识别的准确性和一致性。例如✅ 正确-l MIT、-l Apache-2.0、-l GPL-3.0-only❌ 错误-l mit license、-l Apache License 2.0、-l GNU GPL v3使用示例# 场景1完全自动提取 cret -t package.zip -n MySoftware -v 1.0.0 # 场景2指定license名称自动查找对应的license文件路径 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT # 场景3指定license文件路径自动提取license名称 cret -t package.zip -n MySoftware -v 1.0.0 -p LICENSES/MIT.txt # 场景4同时指定license名称和路径推荐 # 此模式跳过license提取直接使用用户提供的参数结果最准确 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT -p LICENSE # 指定输出目录 cret -t package.zip -n MySoftware -v 1.0.0 -o ./output # 显示详细使用指南 cret --guideLicense参数组合说明License名称License路径行为未填写未填写执行完整license提取输出所有检测到的license已填写未填写查找与指定名称匹配的license文件路径未填写已填写从指定路径提取license名称已填写已填写跳过license提取直接使用填入的参数并进行一致性校验License参数校验当同时指定license名称和路径时工具会进行以下校验文件存在性检查验证指定的license文件路径是否存在license一致性检查验证指定路径的文件是否与指定的license名称匹配不匹配提示如果检测到不匹配会输出警告提示用户人工核对# 示例指定license名称和路径 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT -p LICENSE # 如果LICENSE文件实际包含Apache-2.0许可证会输出警告 # [WARN] License name MIT does not match the license detected in file LICENSE # [WARN] Please verify the license name and file path are correct # [WARN] 请人工核对许可证信息是否准确 / Please manually verify the license information is accurate日志级别控制工具支持通过环境变量控制日志输出级别环境变量值显示内容说明(默认)INFO, OK, WARN, ERROR常规日志输出LOG_LEVELDEBUG全部日志包含DEBUG调试信息用于问题排查LOG_LEVELQUIET仅ERROR静默模式只输出错误信息# 默认模式运行 cret -t package.zip -n MySoftware -v 1.0.0 # 显示调试日志 LOG_LEVELDEBUG cret -t package.zip -n MySoftware -v 1.0.0 # 静默模式只显示错误 LOG_LEVELQUIET cret -t package.zip -n MySoftware -v 1.0.0支持的许可证本工具的许可证识别能力基于 ScanCode Toolkit 的许可证数据库。使用-l参数时必须使用SPDX许可证标识符。完整SPDX许可证标识符列表以下是常用的SPDX许可证标识符按类型分类宽松许可证 (Permissive Licenses)许可证名称SPDX标识符MIT LicenseMITISC LicenseISCZero-Clause BSD0BSDUnlicenseUnlicenseApache 许可证系列许可证名称SPDX标识符Apache License 1.0Apache-1.0Apache License 1.1Apache-1.1Apache License 2.0Apache-2.0BSD 许可证系列许可证名称SPDX标识符BSD 2-Clause Simplified LicenseBSD-2-ClauseBSD 2-Clause FreeBSD LicenseBSD-2-Clause-FreeBSDBSD 2-Clause NetBSD LicenseBSD-2-Clause-NetBSDBSD 3-Clause New or Revised LicenseBSD-3-ClauseBSD 3-Clause Attribution LicenseBSD-3-Clause-AttributionBSD 3-Clause Clear LicenseBSD-3-Clause-ClearBSD 3-Clause LBNL LicenseBSD-3-Clause-LBNLBSD 4-Clause Original LicenseBSD-4-ClauseGPL 许可证系列许可证名称SPDX标识符GNU General Public License v2.0 onlyGPL-2.0-onlyGNU General Public License v2.0 or laterGPL-2.0-or-laterGNU General Public License v3.0 onlyGPL-3.0-onlyGNU General Public License v3.0 or laterGPL-3.0-or-laterGNU General Public License v1.0 onlyGPL-1.0-onlyGNU General Public License v1.0 or laterGPL-1.0-or-later注意ScanCode 可能也识别为GPL-2.0或GPL-3.0不带后缀建议使用完整标识符。LGPL 许可证系列许可证名称SPDX标识符GNU Lesser General Public License v2.0 onlyLGPL-2.0-onlyGNU Lesser General Public License v2.0 or laterLGPL-2.0-or-laterGNU Lesser General Public License v2.1 onlyLGPL-2.1-onlyGNU Lesser General Public License v2.1 or laterLGPL-2.1-or-laterGNU Lesser General Public License v3.0 onlyLGPL-3.0-onlyGNU Lesser General Public License v3.0 or laterLGPL-3.0-or-laterGNU Library General Public License v2 onlyLGPL-2.0GNU Library General Public License v2 or laterLGPL-2.0GNU Library General Public License v2.1 onlyLGPL-2.1GNU Library General Public License v2.1 or laterLGPL-2.1AGPL 许可证系列许可证名称SPDX标识符GNU Affero General Public License v3.0 onlyAGPL-3.0-onlyGNU Affero General Public License v3.0 or laterAGPL-3.0-or-laterMPL 许可证系列许可证名称SPDX标识符Mozilla Public License 1.0MPL-1.0Mozilla Public License 1.1MPL-1.1Mozilla Public License 2.0MPL-2.0Mozilla Public License 2.0 (no copyleft exception)MPL-2.0-no-copyleft-exceptionEclipse 许可证系列许可证名称SPDX标识符Eclipse Public License 1.0EPL-1.0Eclipse Public License 2.0EPL-2.0Eclipse Distribution License 1.0EDL-1.0Eclipse Public License 2.0EPL-2.0Creative Commons 许可证系列许可证名称SPDX标识符Creative Commons Zero v1.0 UniversalCC0-1.0Creative Commons Attribution 4.0 InternationalCC-BY-4.0Creative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0Creative Commons Attribution Non Commercial 4.0 InternationalCC-BY-NC-4.0Creative Commons Attribution No Derivatives 4.0 InternationalCC-BY-ND-4.0Creative Commons Attribution Non Commercial Share Alike 4.0 InternationalCC-BY-NC-SA-4.0Creative Commons Attribution Non Commercial No Derivatives 4.0 InternationalCC-BY-NC-ND-4.0其他常用许可证许可证名称SPDX标识符Artistic License 2.0Artistic-2.0PostgreSQL LicensePostgreSQLzlib LicenseZlibBoost Software License 1.0BSL-1.0SIL Open Font License 1.1OFL-1.1Universal Permissive License v1.0UPL-1.0Do What The F*ck You Want To Public LicenseWTFPLFair LicenseFairISC LicenseISCNTP LicenseNTPNTP License (legal text)NTP-0SQLite BlessingblessingSQLite Public DomainSQLite-PD专有/商业许可证许可证名称SPDX标识符ProprietaryProprietaryCommercialCommercialOther / Non-StandardNOASSERTION特别说明关于 LGPL-3.0 的特殊处理ScanCode Toolkit 不支持LGPL-3.0-only和LGPL-3.0-or-later这两种 SPDX 标识符只支持LGPL-3.0。如果您的项目使用 LGPL-3.0 许可证请使用-l LGPL-3.0参数。# 正确用法 cret -t package.zip -n MySoftware -v 1.0.0 -l LGPL-3.0 # 不支持的标识符会导致匹配失败 # -l LGPL-3.0-only # -l LGPL-3.0-or-later如何处理不支持的许可证如果您发现工具无法识别某些许可证可以采取以下方式手动指定许可证信息推荐使用-l和-p参数同时指定许可证名称和文件路径跳过自动检测cret -t package.zip -n MySoftware -v 1.0.0 -l Custom-License -p LICENSE查看 ScanCode 支持的完整许可证列表运行以下命令查看 ScanCode 支持的所有许可证scancode --list-licenses提交许可证支持请求如果您认为某个许可证应该被支持可以向 ScanCode Toolkit 提交 Issue 或 PR输出工具运行完成后会在被测目标的同级目录或指定的输出目录中生成以下文件Readme.opensource最终输出的许可证声明文件标准格式{被测目标名}_copyrightcopyright信息文本{被测目标名}_licenselicense信息文本result.jsonScanCode扫描原始结果调试用Readme.opensource 文件格式Software: 软件名称 版本号 Copyright Notice(s): copyright信息1 copyright信息2 ... License: MIT Full License Text: MIT License内容... License: Apache-2.0 Full License Text: Apache License内容...License文件提取规则License信息仅从以下文件中提取根目录下包含license、copying、copyright、notice等关键字的文件根目录下包含license字样目录中的所有文件支持的license文件名模式LICENSE,LICENSE.txt,LICENSE.mdLICENSE-MIT,LICENSE_APACHECOPYING,COPYING.LESSER,COPYING-GPLNOTICE,NOTICE.txt以及其他常见的license文件命名格式输出示例 LICENSE INFORMATION EXTRACTION REPORT Software Name: nlohmann-json Software Version: 3.11.3 Total unique licenses found: 6 --- License #1 --- File: json-develop/LICENSE.MIT SPDX Identifier: MIT License Expression: mit --- License #2 --- File: json-develop/LICENSES/Apache-2.0.txt SPDX Identifier: Apache-2.0 License Expression: apache-2.0 ...项目结构OSSinfo_extraction/ ├── src/ossinfo_extraction/ │ ├── __init__.py # 包初始化 │ ├── __main__.py # 命令行入口 │ ├── main.py # 主入口模块 │ ├── config.py # 配置模块集中管理常量 │ ├── prerequisite.py # 环境检查模块 │ ├── extract.py # 源码解压模块 │ ├── scancode.py # 扫描模块 │ ├── parse_and_duplication.py # Copyright处理模块 │ ├── license_extraction.py # License处理模块 │ ├── readme_opensource.py # 输出生成模块 │ ├── cleanup.py # 清理模块 │ └── logger.py # 日志模块 ├── DESIGN.md # 设计文档 ├── FAQs.md # 常见问题 ├── README.md # 本文档 ├── pyproject.toml # 项目配置 └── requirements.txt # 依赖列表更多文档设计文档 (DESIGN.md) - 详细设计逻辑和模块说明常见问题 (FAQs.md) - 常见问题及故障排查许可证本项目采用 Apache License 2.0 许可证。【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN基础设施开源软件信息提取工具
OSS information Extraction Tool【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure概述本工具用于从开源软件源码包中自动提取版权信息copyright和许可证信息license生成标准化的Readme.opensource文件。工具基于 ScanCode Toolkit 的扫描能力并针对实际使用场景进行了多项优化。环境准备工具依托scancode-toolkit的copyright提取功能所以需要确保环境满足scancode-toolkit运行要求详见官方文档本工具开发和测试的环境为Ubuntu 22.04python3.10python3.11pip 25.2在windows环境运行时可能会出现自动生成的临时目录路径过长导致自动删除临时目录失败如确需在windows环境使用建议修改系统参数配置。输入支持对开源软件源码包一般为zip或tar文件以及源码目录如git clone后的目录执行扫描。支持的压缩格式.zip,.tar,.tar.gz,.tgz,.tar.bz2,.tbz2运行进入OSSinfo_extraction目录后执行pip install -e . 安装完成后会生成cret命令执行以下格式运行命令格式cret -t target -n software_name -v software_version [可选参数]必填参数参数长参数说明-t--target被测目标文件或目录路径如package.zip 或 ./source_dir-n--name软件名称-v--version软件版本可选参数参数长参数说明-l--licenseLicense名称必须使用SPDX许可证标识符如MIT, Apache-2.0-p--license-pathLicense文件相对路径相对于代码根目录-o--output-dir输出目录默认为被测目标同级目录--guide显示详细使用指南⚠️ 重要提示License名称必须使用SPDX标识符使用-l参数指定license名称时必须使用符合 SPDX (Software Package Data Exchange) 标准的许可证标识符。SPDX标识符是开源许可证的标准化短名称确保许可证识别的准确性和一致性。例如✅ 正确-l MIT、-l Apache-2.0、-l GPL-3.0-only❌ 错误-l mit license、-l Apache License 2.0、-l GNU GPL v3使用示例# 场景1完全自动提取 cret -t package.zip -n MySoftware -v 1.0.0 # 场景2指定license名称自动查找对应的license文件路径 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT # 场景3指定license文件路径自动提取license名称 cret -t package.zip -n MySoftware -v 1.0.0 -p LICENSES/MIT.txt # 场景4同时指定license名称和路径推荐 # 此模式跳过license提取直接使用用户提供的参数结果最准确 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT -p LICENSE # 指定输出目录 cret -t package.zip -n MySoftware -v 1.0.0 -o ./output # 显示详细使用指南 cret --guideLicense参数组合说明License名称License路径行为未填写未填写执行完整license提取输出所有检测到的license已填写未填写查找与指定名称匹配的license文件路径未填写已填写从指定路径提取license名称已填写已填写跳过license提取直接使用填入的参数并进行一致性校验License参数校验当同时指定license名称和路径时工具会进行以下校验文件存在性检查验证指定的license文件路径是否存在license一致性检查验证指定路径的文件是否与指定的license名称匹配不匹配提示如果检测到不匹配会输出警告提示用户人工核对# 示例指定license名称和路径 cret -t package.zip -n MySoftware -v 1.0.0 -l MIT -p LICENSE # 如果LICENSE文件实际包含Apache-2.0许可证会输出警告 # [WARN] License name MIT does not match the license detected in file LICENSE # [WARN] Please verify the license name and file path are correct # [WARN] 请人工核对许可证信息是否准确 / Please manually verify the license information is accurate日志级别控制工具支持通过环境变量控制日志输出级别环境变量值显示内容说明(默认)INFO, OK, WARN, ERROR常规日志输出LOG_LEVELDEBUG全部日志包含DEBUG调试信息用于问题排查LOG_LEVELQUIET仅ERROR静默模式只输出错误信息# 默认模式运行 cret -t package.zip -n MySoftware -v 1.0.0 # 显示调试日志 LOG_LEVELDEBUG cret -t package.zip -n MySoftware -v 1.0.0 # 静默模式只显示错误 LOG_LEVELQUIET cret -t package.zip -n MySoftware -v 1.0.0支持的许可证本工具的许可证识别能力基于 ScanCode Toolkit 的许可证数据库。使用-l参数时必须使用SPDX许可证标识符。完整SPDX许可证标识符列表以下是常用的SPDX许可证标识符按类型分类宽松许可证 (Permissive Licenses)许可证名称SPDX标识符MIT LicenseMITISC LicenseISCZero-Clause BSD0BSDUnlicenseUnlicenseApache 许可证系列许可证名称SPDX标识符Apache License 1.0Apache-1.0Apache License 1.1Apache-1.1Apache License 2.0Apache-2.0BSD 许可证系列许可证名称SPDX标识符BSD 2-Clause Simplified LicenseBSD-2-ClauseBSD 2-Clause FreeBSD LicenseBSD-2-Clause-FreeBSDBSD 2-Clause NetBSD LicenseBSD-2-Clause-NetBSDBSD 3-Clause New or Revised LicenseBSD-3-ClauseBSD 3-Clause Attribution LicenseBSD-3-Clause-AttributionBSD 3-Clause Clear LicenseBSD-3-Clause-ClearBSD 3-Clause LBNL LicenseBSD-3-Clause-LBNLBSD 4-Clause Original LicenseBSD-4-ClauseGPL 许可证系列许可证名称SPDX标识符GNU General Public License v2.0 onlyGPL-2.0-onlyGNU General Public License v2.0 or laterGPL-2.0-or-laterGNU General Public License v3.0 onlyGPL-3.0-onlyGNU General Public License v3.0 or laterGPL-3.0-or-laterGNU General Public License v1.0 onlyGPL-1.0-onlyGNU General Public License v1.0 or laterGPL-1.0-or-later注意ScanCode 可能也识别为GPL-2.0或GPL-3.0不带后缀建议使用完整标识符。LGPL 许可证系列许可证名称SPDX标识符GNU Lesser General Public License v2.0 onlyLGPL-2.0-onlyGNU Lesser General Public License v2.0 or laterLGPL-2.0-or-laterGNU Lesser General Public License v2.1 onlyLGPL-2.1-onlyGNU Lesser General Public License v2.1 or laterLGPL-2.1-or-laterGNU Lesser General Public License v3.0 onlyLGPL-3.0-onlyGNU Lesser General Public License v3.0 or laterLGPL-3.0-or-laterGNU Library General Public License v2 onlyLGPL-2.0GNU Library General Public License v2 or laterLGPL-2.0GNU Library General Public License v2.1 onlyLGPL-2.1GNU Library General Public License v2.1 or laterLGPL-2.1AGPL 许可证系列许可证名称SPDX标识符GNU Affero General Public License v3.0 onlyAGPL-3.0-onlyGNU Affero General Public License v3.0 or laterAGPL-3.0-or-laterMPL 许可证系列许可证名称SPDX标识符Mozilla Public License 1.0MPL-1.0Mozilla Public License 1.1MPL-1.1Mozilla Public License 2.0MPL-2.0Mozilla Public License 2.0 (no copyleft exception)MPL-2.0-no-copyleft-exceptionEclipse 许可证系列许可证名称SPDX标识符Eclipse Public License 1.0EPL-1.0Eclipse Public License 2.0EPL-2.0Eclipse Distribution License 1.0EDL-1.0Eclipse Public License 2.0EPL-2.0Creative Commons 许可证系列许可证名称SPDX标识符Creative Commons Zero v1.0 UniversalCC0-1.0Creative Commons Attribution 4.0 InternationalCC-BY-4.0Creative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0Creative Commons Attribution Non Commercial 4.0 InternationalCC-BY-NC-4.0Creative Commons Attribution No Derivatives 4.0 InternationalCC-BY-ND-4.0Creative Commons Attribution Non Commercial Share Alike 4.0 InternationalCC-BY-NC-SA-4.0Creative Commons Attribution Non Commercial No Derivatives 4.0 InternationalCC-BY-NC-ND-4.0其他常用许可证许可证名称SPDX标识符Artistic License 2.0Artistic-2.0PostgreSQL LicensePostgreSQLzlib LicenseZlibBoost Software License 1.0BSL-1.0SIL Open Font License 1.1OFL-1.1Universal Permissive License v1.0UPL-1.0Do What The F*ck You Want To Public LicenseWTFPLFair LicenseFairISC LicenseISCNTP LicenseNTPNTP License (legal text)NTP-0SQLite BlessingblessingSQLite Public DomainSQLite-PD专有/商业许可证许可证名称SPDX标识符ProprietaryProprietaryCommercialCommercialOther / Non-StandardNOASSERTION特别说明关于 LGPL-3.0 的特殊处理ScanCode Toolkit 不支持LGPL-3.0-only和LGPL-3.0-or-later这两种 SPDX 标识符只支持LGPL-3.0。如果您的项目使用 LGPL-3.0 许可证请使用-l LGPL-3.0参数。# 正确用法 cret -t package.zip -n MySoftware -v 1.0.0 -l LGPL-3.0 # 不支持的标识符会导致匹配失败 # -l LGPL-3.0-only # -l LGPL-3.0-or-later如何处理不支持的许可证如果您发现工具无法识别某些许可证可以采取以下方式手动指定许可证信息推荐使用-l和-p参数同时指定许可证名称和文件路径跳过自动检测cret -t package.zip -n MySoftware -v 1.0.0 -l Custom-License -p LICENSE查看 ScanCode 支持的完整许可证列表运行以下命令查看 ScanCode 支持的所有许可证scancode --list-licenses提交许可证支持请求如果您认为某个许可证应该被支持可以向 ScanCode Toolkit 提交 Issue 或 PR输出工具运行完成后会在被测目标的同级目录或指定的输出目录中生成以下文件Readme.opensource最终输出的许可证声明文件标准格式{被测目标名}_copyrightcopyright信息文本{被测目标名}_licenselicense信息文本result.jsonScanCode扫描原始结果调试用Readme.opensource 文件格式Software: 软件名称 版本号 Copyright Notice(s): copyright信息1 copyright信息2 ... License: MIT Full License Text: MIT License内容... License: Apache-2.0 Full License Text: Apache License内容...License文件提取规则License信息仅从以下文件中提取根目录下包含license、copying、copyright、notice等关键字的文件根目录下包含license字样目录中的所有文件支持的license文件名模式LICENSE,LICENSE.txt,LICENSE.mdLICENSE-MIT,LICENSE_APACHECOPYING,COPYING.LESSER,COPYING-GPLNOTICE,NOTICE.txt以及其他常见的license文件命名格式输出示例 LICENSE INFORMATION EXTRACTION REPORT Software Name: nlohmann-json Software Version: 3.11.3 Total unique licenses found: 6 --- License #1 --- File: json-develop/LICENSE.MIT SPDX Identifier: MIT License Expression: mit --- License #2 --- File: json-develop/LICENSES/Apache-2.0.txt SPDX Identifier: Apache-2.0 License Expression: apache-2.0 ...项目结构OSSinfo_extraction/ ├── src/ossinfo_extraction/ │ ├── __init__.py # 包初始化 │ ├── __main__.py # 命令行入口 │ ├── main.py # 主入口模块 │ ├── config.py # 配置模块集中管理常量 │ ├── prerequisite.py # 环境检查模块 │ ├── extract.py # 源码解压模块 │ ├── scancode.py # 扫描模块 │ ├── parse_and_duplication.py # Copyright处理模块 │ ├── license_extraction.py # License处理模块 │ ├── readme_opensource.py # 输出生成模块 │ ├── cleanup.py # 清理模块 │ └── logger.py # 日志模块 ├── DESIGN.md # 设计文档 ├── FAQs.md # 常见问题 ├── README.md # 本文档 ├── pyproject.toml # 项目配置 └── requirements.txt # 依赖列表更多文档设计文档 (DESIGN.md) - 详细设计逻辑和模块说明常见问题 (FAQs.md) - 常见问题及故障排查许可证本项目采用 Apache License 2.0 许可证。【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考