tree: f719bebe8d84f014ecc16e647a045b7bfd87afa5 [path history] [tgz]
  1. data/
  2. lib/
  3. .gitignore
  4. analysis_options.yaml
  5. pubspec.yaml
  6. README.md
tools/licenses/README.md

Update License Files

Apply patch generated by CI

If you‘re not working on a Linux box then you can’t auto-generate license files. A workaround is provided via CI.

Your build will fail one or more CI checks if your license files are not correct. Open the failing CI check. In the CI output you will find a patch diff that represents the changes that need to be made to your license files. Click Download full logs (Github removes lines with only whitespaces, which invalidates the diff). Copy this patch to a temporary patch file wherever you'd like. Then apply the patch to your repo:

cd flutter/ci/licenses_golden
patch -p2 < my/patch/file

Check for license changes (Only works on Linux)

This script has two sets of output files: “goldens”, which describe the current license state of the repository, and the actual real LICENSE file, which is what matters.

We look at changes to the goldens to determine if there are any actual changes to the licenses.

To update the goldens, make sure you've rebased your branch to the latest upstream master and then run the following in this directory:

pub get
gclient sync
rm -rf ../../../out/licenses
dart lib/main.dart --src ../../.. --out ../../../out/licenses --golden ../../ci/licenses_golden

In order for the license script to work correctly, you need to remove any untracked files inside engine/src (the buildroot), not just engine/src/flutter.

Once the script has finished, copy any affected files from ../../../out/licenses to ../../ci/licenses_golden and add them to your change, and examine the diffs to see what changed.

cp ../../../out/licenses/* ../../ci/licenses_golden
git diff

If the only changes are to what files are included, then you're good to go. However, if any of the licenses changed, whether new licenses are added, old ones removed, or any have their content changed in any way (including, e.g., whitespace changes), or if the affected libraries change, you must update the actual license file.

The sky/packages/sky_engine/LICENSE file is the one actually included in product releases and the one that should be updated any time the golden file changes in a way that involves changes to anything other than the FILE lines. To update this file, run:

pub get
gclient sync
dart lib/main.dart --release --src ../../.. --out ../../../out/licenses > ../../sky/packages/sky_engine/LICENSE

The bots do not verify that you did this step, it‘s important that you do it! When reviewing patches, if you see a change to the golden files, check to see if there’s a corresponding change to the LICENSE file!