Skip to content

Remove recursive license files (NOTICES) #174996

Closed

Description

@gaaclarke

The new license checker parses 2 NOTICES files from devtools:

^third_party/dart/tools/sdks/dart-sdk/bin/resources/devtools/assets/NOTICES$

These appear to be recursive and should be removed. This was discovered when attempting to remove the web_unicode dependency. We would remove it from flutter/flutter, but it would still show up in the output LICENSE file because of its presence in the NOTICES file. The NOTICES file itself in the dependency appears to be generated in such a way that is recursive.

Those NOTICES files were added because the output of the old license checker was compared with the new license checker and there were seemingly licenses in the output that didn't appear anywhere but in that NOTICES file. The old license checker however explicitly excluded those NOTICES files.

After reviewing the problem here are the causes for those missing copyrights that we were getting from the NOTICES files we should be generating ourselves:

  1. Some licenses only existed on linux code checkouts, specifically the fuchsia licenses
  2. One license wasn't included because the directory had 2 licenses (third_party/libjpeg-turbo/src/README.ijg and third_party/libjpeg-turbo/src/LICENSE)
  3. Some licenses just weren't getting parsed correctly, specifically the myriad of copyrights in icu.

The parsing of those NOTICES files should be removed.

Activity

  1. gaaclarke commented on Sep 12, 2025

    @gaaclarke
    MemberAuthor

    The old license checked did exclude some NOTICES files:

    r'fuchsia/sdk/linux/NOTICE.fuchsia', // covers things that contribute to the Fuchsia SDK; see fxb/94240

    third_party/dart/third_party/devtools/web/assets/NOTICES would have been excluded too as evidenced here:

    ../../../flutter/third_party/dart/third_party/devtools

  2. gaaclarke commented on Sep 12, 2025

    @gaaclarke
    MemberAuthor

    @mdebbar do you know how third_party/dart/third_party/devtools/web/assets/NOTICES is generated? That's a bit fuzzy to me. I'd like a clear understanding of the cycle.

  3. added
    P2Important issues not at the top of the work list
    on Sep 15, 2025
  4. mdebbar commented on Sep 16, 2025

    @mdebbar
    Contributor

    @gaaclarke sorry for the late reply. AFAICT, it's generated by LicensesCollector.obtainLicenses() which then gets written to the NOTICES file in:

    _setIfChanged(_kNoticeFile, DevFSStringContent(combinedLicenses), AssetKind.regular);

  5. github-actions commented on Oct 2, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  6. locked as resolved and limited conversation to collaborators on Oct 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions