LicenseTool is a Python program that has two primary functions:
- Format the Yocto build produced
license.manifestformatted file to list or tabularly formatted file.- CSV aka Comma-Separated-Values -files are commonly accepted by many applications and libraries as a data format.
- This way you can import the package license information for example to Excel for further analysis
- Take two Yocto build
license.manifestfiles and create a CSV-formatted file that shows the changes between the two builds.- A typical Yocto build will have 1000 or more packages.
- It is quite difficult to spot the changes between two builds without some help.
You need to have Python version 3.6 (or newer) installed in your system. This has only been tested in Linux, we do not plan to test or support Windows or Mac platforms in any way or manner as Yocto builds are done on Linux anyway.
We highly recommend using a Python virtual environment.
Python 3.10 will give you unfortunately a lot of warnings. They just love deprecating APIs in the Python world, don't they?
git clone git@github.com:PelionIoT/licensetool.git
cd licensetool
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Run the init script, it will do everything for you.
./dev-init.sh
The license file is generated as part of the Yocto build. In Foundries.io LmP-build you can find the file under <build-folder>/deploy/licenses/<image-name-target-name>/license.manifest.
python licensetool.py list <input manifest file> <output>
This will generate two output files,
<output file>.csvin plain CSV-format and<output file>.xlsxin Excel-format.
python licensetool.py changes <previous manifest file> <current manifest file> <output file>
This will generate two output files,
<output file>.csvin plain CSV-format and<output file>.xlsxin Excel-format, which has some highlights and filters.
Run the tool with python licensetool.py to get information on optional parameters.
Tests and test material are located in tests-folder. You can run them from the root folder:
pytest -v -o junit_family=xunit1 --cov=. --cov-report xml:coverage.xml --cov-report html:test-results/cov_html --junitxml=xunit-reports/xunit.xml
All contributions must pass:
- Clear written statement that author agrees to Apache 2.0 license and is the original author of the changes.
- Code review, so submit a pull request (PR).
- Run
pylint licensetool.py tests/*.pyand make sure the score does not get worse (10/10 now). - Include necessary test case updates, so that coverage does not decrease - provide evidence in the PR.
- Include required documentation updates.