| # 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. |
| |
| IF (and only if!) the diff does not change _which_ licenses are being included, but only affects the `FILE:` metadata and so forth in the golden files, then you can 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, and then apply the patch to your repo: |
| |
| ``` |
| cd flutter/ci/licenses_golden |
| patch -p2 < my/patch/file |
| ``` |
| |
| HOWEVER, if the actual content of the licenses changed then you will need to rerun the script from a Linux box to update the actual LICENSE file, as described below. |
| |
| ## 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 main and then run the following in this directory: |
| |
| ``` |
| dart pub get |
| gclient sync -D |
| 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: |
| |
| ``` |
| dart 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! |