Git Product home page Git Product logo

licensetool's Introduction

LicenseTool

LicenseTool is a Python program that has two primary functions:

  1. Format the Yocto build produced license.manifest formatted 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
  2. Take two Yocto build license.manifest files 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.

Installation

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?

User installation

git clone [email protected]:PelionIoT/licensetool.git
cd licensetool
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Developer installation

Run the init script, it will do everything for you.

./dev-init.sh

Usage

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.

Generate CSV-formatted license file

python licensetool.py list <input manifest file> <output>

This will generate two output files,

  1. <output file>.csv in plain CSV-format and
  2. <output file>.xlsx in Excel-format.

Generate license changes file

python licensetool.py changes <previous manifest file> <current manifest file> <output file>

This will generate two output files,

  1. <output file>.csv in plain CSV-format and
  2. <output file>.xlsx in Excel-format, which has some highlights and filters.

Other options

Run the tool with python licensetool.py to get information on optional parameters.

Tests

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

Contributions

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/*.py and 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.

licensetool's People

Contributors

tapanipuhakka avatar jannekiiskila avatar

Stargazers

Philipp Huth avatar  avatar  avatar Gonzalo Matarrubia avatar Primoz Fiser avatar Anders Montonen avatar Randy MacLeod avatar

Watchers

Cruz Monrreal avatar Ed Hemphill avatar Roman Savelyev avatar Travis McCollum avatar Nimrod Zimerman - Provisioning Group Jenkins avatar Nicolas Costa avatar  avatar Philipp Huth avatar

licensetool's Issues

Changes fails on Ubuntu 18.04

(venv) jankii01@ubuntu1804:~/pelion/licensetool$ python licensetool.py --debug changes tests/3-packages.manifest tests/3-packages.manifest.v2 out.csv
_changes: 'tests/3-packages.manifest', 'tests/3-packages.manifest.v2', 'out.csv'
Traceback (most recent call last):
  File "licensetool.py", line 260, in <module>
    sys.exit(main())
  File "licensetool.py", line 256, in main
    _changes(args.previous, args.current, args.changefile)
  File "licensetool.py", line 142, in _changes
    d_f_prev.to_csv(f_orig, index=False)
  File "/home/jankii01/pelion/licensetool/venv/lib/python3.6/site-packages/pandas/core/generic.py", line 3170, in to_csv
    formatter.save()
  File "/home/jankii01/pelion/licensetool/venv/lib/python3.6/site-packages/pandas/io/formats/csvs.py", line 206, in save
    self._save()
  File "/home/jankii01/pelion/licensetool/venv/lib/python3.6/site-packages/pandas/io/formats/csvs.py", line 314, in _save
    self._save_header()
  File "/home/jankii01/pelion/licensetool/venv/lib/python3.6/site-packages/pandas/io/formats/csvs.py", line 283, in _save_header
    writer.writerow(encoded_labels)
TypeError: a bytes-like object is required, not 'str'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.