blob: c13b87ba00238cba16f561260c6c9c139c47ab82 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'regexp_debug.dart';
// Directories or files that are not included in the final binaries.
//
// These are absolute paths relative to the root of the buildroot repository
// as checked out after gclient imports all the dependencies.
//
// Do not provide trailing slashes for directories.
//
// Including a directory in this list excludes the entire subtree rooted at
// that directory.
//
// Keep this list in lexical order.
final Set<String> skippedPaths = <String>{
r'README.md',
r'build', // only used by build
r'build_overrides', // only used by build
r'buildtools', // only used by build
r'flutter/build',
r'flutter/build_overrides', // only used by build
r'flutter/buildtools', // only used by build
r'flutter/ci',
r'flutter/docs',
r'flutter/flutter_frontend_server',
r'flutter/impeller/docs',
r'flutter/lib/web_ui/build', // this is compiler-generated output
r'flutter/lib/web_ui/dev', // these are build tools; they do not end up in Engine artifacts
r'flutter/prebuilts',
r'flutter/sky/packages/sky_engine/LICENSE',
r'flutter/third_party/android_tools', // excluded on advice
r'flutter/third_party/angle/android',
r'flutter/third_party/angle/doc',
r'flutter/third_party/angle/extensions',
r'flutter/third_party/angle/infra',
r'flutter/third_party/angle/scripts',
r'flutter/third_party/angle/src/libANGLE/renderer/metal/doc',
r'flutter/third_party/angle/src/libANGLE/renderer/vulkan/doc',
r'flutter/third_party/angle/src/third_party/volk', // We don't use Vulkan in our ANGLE build.
r'flutter/third_party/angle/third_party', // Unused by Flutter: BUILD files with forwarding targets (but no code).
r'flutter/third_party/angle/tools', // These are build-time tools, and aren't shipped.
r'flutter/third_party/angle/util',
r'flutter/third_party/benchmark', // only used by tests
r'flutter/third_party/boringssl/src/crypto/err/err_data_generate.go',
r'flutter/third_party/boringssl/src/fuzz', // testing tools, not shipped
r'flutter/third_party/boringssl/src/rust', // rust-related code is not shipped
r'flutter/third_party/boringssl/src/util', // code generators, not shipped
r'flutter/third_party/dart/benchmarks', // not shipped in binary
r'flutter/third_party/dart/build', // not shipped in binary
r'flutter/third_party/dart/docs', // not shipped in binary
r'flutter/third_party/dart/pkg', // packages that don't become part of the binary (e.g. the analyzer)
r'flutter/third_party/dart/runtime/bin/ffi_test',
r'flutter/third_party/dart/runtime/docs',
r'flutter/third_party/dart/runtime/vm/service',
r'flutter/third_party/dart/sdk/lib/html/doc',
r'flutter/third_party/dart/sdk/lib/svg/dart2js', // generated from other sources
r'flutter/third_party/dart/third_party/binary_size', // not linked in
r'flutter/third_party/dart/third_party/binaryen', // not linked in
r'flutter/third_party/dart/third_party/d3', // Siva says "that is the charting library used by the binary size tool"
r'flutter/third_party/dart/third_party/d8', // testing tool for dart2js
r'flutter/third_party/dart/third_party/devtools', // not linked in
r'flutter/third_party/dart/third_party/fallback_root_certificates/certdata.pem',
r'flutter/third_party/dart/third_party/fallback_root_certificates/certdata.txt',
r'flutter/third_party/dart/third_party/firefox_jsshell', // testing tool for dart2js
r'flutter/third_party/dart/third_party/pkg',
r'flutter/third_party/dart/third_party/pkg_tested',
r'flutter/third_party/dart/third_party/requirejs', // only used by DDC
r'flutter/third_party/dart/tools', // not shipped in binary
r'flutter/third_party/depot_tools', // only used for the Windows build system.
r'flutter/third_party/expat/expat/doc',
r'flutter/third_party/expat/expat/win32/expat.iss',
r'flutter/third_party/flatbuffers/android',
r'flutter/third_party/flatbuffers/benchmarks',
r'flutter/third_party/flatbuffers/docs',
r'flutter/third_party/flatbuffers/go',
r'flutter/third_party/flatbuffers/net',
r'flutter/third_party/flatbuffers/php',
r'flutter/third_party/flatbuffers/python',
r'flutter/third_party/flatbuffers/rust',
r'flutter/third_party/flatbuffers/ts',
r'flutter/third_party/freetype2/builds',
r'flutter/third_party/freetype2/src/tools',
r'flutter/third_party/glfw/deps', // Only used by examples and tests; not linked in build.
r'flutter/third_party/glfw/docs',
r'flutter/third_party/gn',
r'flutter/third_party/google_fonts_for_unit_tests', // only used in web unit tests
r'flutter/third_party/gradle',
r'flutter/third_party/harfbuzz/docs',
r'flutter/third_party/harfbuzz/util', // utils are command line tools that do not end up in the binary
r'flutter/third_party/icu/filters',
r'flutter/third_party/icu/fuzzers',
r'flutter/third_party/icu/scripts',
r'flutter/third_party/icu/source/common/unicode/uvernum.h', // this file contains strings that confuse the analysis
r'flutter/third_party/icu/source/config',
r'flutter/third_party/icu/source/data/brkitr/dictionaries/burmesedict.txt', // explicitly handled by ICU license
r'flutter/third_party/icu/source/data/brkitr/dictionaries/cjdict.txt', // explicitly handled by ICU license
r'flutter/third_party/icu/source/data/brkitr/dictionaries/laodict.txt', // explicitly handled by ICU license
r'flutter/third_party/icu/source/data/dtd',
r'flutter/third_party/imgui',
r'flutter/third_party/inja/doc', // documentation
r'flutter/third_party/inja/third_party/amalgamate', // only used at build time
r'flutter/third_party/inja/third_party/include/doctest', // seems to be a unit test library
r'flutter/third_party/json/docs',
r'flutter/third_party/libcxx/benchmarks',
r'flutter/third_party/libcxx/docs',
r'flutter/third_party/libcxx/src/support/solaris',
r'flutter/third_party/libcxx/utils',
r'flutter/third_party/libcxxabi/www',
r'flutter/third_party/libpng/ci', // not linked in
r'flutter/third_party/libpng/contrib', // not linked in
r'flutter/third_party/libpng/loongarch', // not linked in
r'flutter/third_party/libpng/mips', // not linked in
r'flutter/third_party/libpng/powerpc', // not linked in
r'flutter/third_party/libpng/projects', // not linked in
r'flutter/third_party/libpng/scripts', // not linked in
r'flutter/third_party/libtess2/Contrib/nanosvg.c', // only used by the ../Example
r'flutter/third_party/libtess2/Contrib/nanosvg.h', // only used by the ../Example
r'flutter/third_party/libtess2/Example',
r'flutter/third_party/libwebp/doc',
r'flutter/third_party/libwebp/gradle', // not included in our build
r'flutter/third_party/libwebp/swig', // not included in our build
r'flutter/third_party/libwebp/webp_js',
r'flutter/third_party/ninja', // build system
r'flutter/third_party/ocmock', // only used for tests
r'flutter/third_party/perfetto/debian', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/infra', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/protos', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/python/perfetto/trace_processor', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/ipc', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/profiling/memory', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/tools', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/trace_processor', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/traced', // contains nothing that ends up in the binary executable
r'flutter/third_party/perfetto/src/tracing', // contains nothing that ends up in the binary executable
r'flutter/third_party/pkg/archive', // contains nothing that ends up in the binary executable
r'flutter/third_party/pkg/equatable',
r'flutter/third_party/pkg/flutter_packages',
r'flutter/third_party/pkg/gcloud',
r'flutter/third_party/pkg/googleapis',
r'flutter/third_party/pkg/platform',
r'flutter/third_party/pkg/process',
r'flutter/third_party/pkg/process_runner',
r'flutter/third_party/pkg/vector_math',
r'flutter/third_party/protobuf', // build-time dependency only
r'flutter/third_party/pyyaml', // build-time dependency only
r'flutter/third_party/rapidjson/contrib', // contains nothing that ends up in the binary executable
r'flutter/third_party/rapidjson/doc', // documentation
r'flutter/third_party/shaderc/third_party/LICENSE.glslang', // unclear what the purpose of this file is
r'flutter/third_party/shaderc/third_party/LICENSE.spirv-tools', // unclear what the purpose of this file is
r'flutter/third_party/skia/bazel', // contains nothing that ends up in the binary executable
r'flutter/third_party/skia/bench',
r'flutter/third_party/skia/demos.skia.org',
r'flutter/third_party/skia/docs',
r'flutter/third_party/skia/experimental',
r'flutter/third_party/skia/infra', // contains nothing that ends up in the binary executable
r'flutter/third_party/skia/modules/canvaskit/go/gold_test_env',
r'flutter/third_party/skia/platform_tools', // contains nothing that ends up in the binary executable
r'flutter/third_party/skia/resources', // contains nothing that ends up in the binary executable
r'flutter/third_party/skia/samplecode',
r'flutter/third_party/skia/site',
r'flutter/third_party/skia/specs',
r'flutter/third_party/skia/third_party/freetype2', // we use our own version
r'flutter/third_party/skia/third_party/icu', // we use our own version
r'flutter/third_party/skia/third_party/libjpeg-turbo', // we use our own version
r'flutter/third_party/skia/third_party/libpng', // we use our own version
r'flutter/third_party/skia/third_party/lua', // not linked in
r'flutter/third_party/skia/third_party/vello', // not linked in
r'flutter/third_party/skia/tools', // contains nothing that ends up in the binary executable
r'flutter/third_party/stb',
r'flutter/third_party/swiftshader', // only used on hosts for tests
r'flutter/third_party/test_shaders', // for tests only
r'flutter/third_party/tinygltf',
r'flutter/third_party/txt/third_party/fonts',
r'flutter/third_party/vulkan-deps/glslang/LICENSE', // excluded to make sure we don't accidentally apply it as a default license
r'flutter/third_party/vulkan-deps/glslang/src/LICENSE.txt', // redundant with licenses inside files
r'flutter/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Web', // we only use glslang in impellerc, not in web apps
r'flutter/third_party/vulkan-deps/glslang/src/kokoro', // only build files
r'flutter/third_party/vulkan-deps/spirv-cross/src/LICENSES', // directory with license templates
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-hlsl', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-hlsl-no-opt', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-msl', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-msl-no-opt', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-no-opt', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-other', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-reflection', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-ue4', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-cross/src/shaders-ue4-no-opt', // used by regression tests
r'flutter/third_party/vulkan-deps/spirv-headers', // only used on hosts for tests
r'flutter/third_party/vulkan-deps/spirv-tools', // only used on hosts for tests
r'flutter/third_party/vulkan-deps/vulkan-headers/src/LICENSE.md', // redundant with licenses inside files
r'flutter/third_party/vulkan-deps/vulkan-headers/src/registry',
r'flutter/third_party/vulkan-deps/vulkan-loader', // on hosts for tests
r'flutter/third_party/vulkan-deps/vulkan-tools', // on hosts for tests
r'flutter/third_party/vulkan-deps/vulkan-utility-libraries/src/LICENSE.md', // redundant with licenses inside files
r'flutter/third_party/vulkan-deps/vulkan-validation-layers/src/docs',
r'flutter/third_party/vulkan_memory_allocator/bin',
r'flutter/third_party/vulkan_memory_allocator/docs',
r'flutter/third_party/vulkan_memory_allocator/media',
r'flutter/third_party/vulkan_memory_allocator/src',
r'flutter/third_party/vulkan_memory_allocator/tools',
r'flutter/third_party/wuffs/docs',
r'flutter/third_party/wuffs/script',
r'flutter/third_party/yapf', // only used for code formatting
r'flutter/third_party/zlib/contrib/minizip/miniunz.c', // sample file
r'flutter/third_party/zlib/contrib/minizip/minizip.c', // sample file
r'flutter/tools',
r'flutter/web_sdk', // this code is not linked into Flutter apps; it's only used by engine tests and tools
r'fuchsia/sdk/linux/docs',
r'fuchsia/sdk/linux/meta',
r'fuchsia/sdk/linux/NOTICE.fuchsia', // covers things that contribute to the Fuchsia SDK; see fxb/94240
r'fuchsia/sdk/linux/packages/blobs', // See https://github.com/flutter/flutter/issues/134042.
r'fuchsia/sdk/linux/tools',
r'fuchsia/sdk/mac/docs',
r'fuchsia/sdk/mac/meta',
r'fuchsia/sdk/mac/NOTICE.fuchsia',
r'fuchsia/sdk/mac/tools',
r'out', // output of build
r'third_party/android_embedding_dependencies', // Not shipped. Used only for the build-time classpath, and for the in-tree testing framework for Android
r'third_party/android_tools', // excluded on advice
r'third_party/java', // only used for Android builds
r'third_party/libxml', // dependency of the testing system that we don't actually use
r'tools', // not distributed in binary
};
// Directories that should be skipped anywhere we find them.
//
// Any directory whose name matches one of these strings is skipped, including
// its entire subtree.
//
// Keep this list in lexical order.
final Set<String> skippedCommonDirectories = <String>{
r'.bazelci',
r'.build-id',
r'.ccls-cache',
r'.cipd',
r'.dart_tool',
r'.git',
r'.github',
r'.reuse',
r'.versions',
r'.vscode',
r'CMake',
r'Test',
r'cmake',
r'example',
r'examples',
r'fixtures',
r'googletest',
r'javatests',
r'jvmTest',
r'playground',
r'samples',
r'test',
r'test.disabled',
r'test_runner',
r'test_support',
r'testdata',
r'testing',
r'tests',
r'unit_tests',
};
// Filenames of files we never look at.
//
// Any file with a name in this list is skipped.
//
// Be careful about adding files like "LICENSE" or "README" (and such
// variants) to this list as many packages put important license text in those
// files and we don't want to skip them. Only include files here whose names
// we would want to skip in ANY package.
//
// Keep this list in lexical order.
final Set<String> skippedCommonFiles = <String>{
r'.DS_Store',
r'.appveyor.yml',
r'.bazelrc',
r'.bazelversion',
r'.clang-format',
r'.clang-tidy',
r'.editorconfig',
r'.eslintrc.js',
r'.gitattributes',
r'.gitconfig',
r'.gitignore',
r'.gitlab-ci.yml',
r'.gitmodules',
r'.gn',
r'.lgtm.yml',
r'.mailmap',
r'.packages',
r'.project',
r'.style.yapf',
r'.travis.yml',
r'.vpython',
r'.vpython3',
r'.yapfignore',
r'ABSEIL_ISSUE_TEMPLATE.md',
r'ANNOUNCE',
r'API-CONVENTIONS.md',
r'AUTHORS',
r'BREAKING-CHANGES.md',
r'BUILD.bazel',
r'BUILD.md',
r'BUILDING.md',
r'Brewfile',
r'CHANGES',
r'CHANGES.md',
r'CITATION.cff',
r'CMake.README',
r'CMakeLists.txt',
r'CODEOWNERS',
r'CODE_CONVENTIONS.md',
r'CODE_OF_CONDUCT.adoc',
r'CODE_OF_CONDUCT.md',
r'CONFIG.md',
r'CONTRIBUTORS',
r'CONTRIBUTORS.md',
r'CPPLINT.cfg',
r'CQ_COMMITTERS',
r'CREDITS.TXT',
r'Changes',
r'CodingStandard.md',
r'DEPS',
r'DIR_METADATA',
r'Dockerfile',
r'Doxyfile',
r'FAQ.md',
r'FIPS.md',
r'FUZZING.md',
r'FeatureSupportGL.md',
r'FormatTables.md',
r'Formatters.md',
r'GIT_REVISION',
r'HACKING.md',
r'INCORPORATING.md',
r'LAYER_CONFIGURATION.md',
r'LOCALE_DEPS.json',
r'MANIFEST.in',
r'MANIFEST.txt',
r'METADATA',
r'NEWS',
r'OWNERS',
r'OWNERS.android',
r'PATENT_GRANT',
r'PORTING.md',
r'README.asciidoc',
r'RELEASE_NOTES.TXT',
r'RELEASING.md',
r'RapidJSON.pc.in',
r'RapidJSONConfig.cmake.in',
r'RapidJSONConfigVersion.cmake.in',
r'SANDBOXING.md',
r'SECURITY.md',
r'STYLE.md',
r'TESTING.md',
r'THANKS',
r'TODO',
r'TODO.TXT',
r'TRADEMARK',
r'UPGRADES.md',
r'UniformBlockToStructuredBufferTranslation.md',
r'WATCHLISTS',
r'WORKSPACE',
r'WORKSPACE.bazel',
r'_config.yml',
r'additional_readme_paths.json',
r'alg_outline.md',
r'allowed_experiments.json',
r'amalgamate_config.json',
r'api_readme.md',
r'appveyor-reqs-install.cmd',
r'appveyor.yml',
r'build.xml',
r'codereview.settings',
r'coderules.txt',
r'configure-ac-style.md',
r'doxygen.config',
r'example.html',
r'gerrit.md',
r'gradle.properties',
r'include_dirs.js',
r'known_good.json',
r'known_good_khr.json',
r'libraries.json',
r'library.json',
r'license-checker.cfg',
r'license.html',
r'memory-sanitizer-blacklist.txt',
r'meson.build',
r'meta.json',
r'minizip.md',
r'package.json',
r'pkgdataMakefile.in',
r'pom.xml',
r'pubspec.lock',
r'requirements-dev.txt',
r'requirements.txt',
r'sources.txt',
r'structure.txt',
r'swift.swiftformat',
r'sync.txt',
r'unit_tests.md',
r'version',
r'version_history.json',
r'vms_make.com',
r'vmservice_libraries.json',
};
// Extensions that we just never look at.
//
// We explicitly do not exclude .txt, .md, .TXT, and .MD files because it is common
// for licenses to be in such files.
//
// This list only works for extensions with a single dot.
//
// Keep this list in lexical order.
final Set<String> skippedCommonExtensions = <String>{
r'.1',
r'.3',
r'.5',
r'.autopkg',
r'.build',
r'.bzl',
r'.cmake',
r'.css',
r'.gn',
r'.gni',
r'.gradle',
r'.log',
r'.m4',
r'.mk',
r'.pl',
r'.py',
r'.pyc',
r'.pylintrc',
r'.sha1',
r'.yaml',
r'.~',
};
// Patterns for files and directories we should skip.
//
// Keep this list to a minimum, preferring all the other lists
// in this file. Testing patterns is more expensive.
//
// Keep this list in lexical order.
final List<Pattern> skippedFilePatterns = <Pattern>[
RegExp(r'\.[1-8]\.in$'), // man page source files (e.g. foo.1.in)
RegExp(r'/(?:_|\b)CONTRIBUTING(?:_|\b)[^/]*$'),
RegExp(r'/(?:_|\b)LAST_UPDATE(?:_|\b)[^/]*$'),
RegExp(r'/(?:_|\b)PATENTS(?:_|\b)[^/]*$'),
RegExp(r'/(?:_|\b)README(?!\.IJG)(?:_|\b)[^/]*$', caseSensitive: false),
RegExp(r'/(?:_|\b)VERSION(?:_|\b)[^/]*$'),
RegExp(r'/CHANGELOG(?:\.[.A-Z0-9]+)?$', caseSensitive: false),
RegExp(r'/INSTALL(?:\.[a-zA-Z0-9]+)?$'),
RegExp(r'/Makefile(?:\.[.A-Z0-9]+)?$', caseSensitive: false),
RegExp(r'\.~[0-9]+~$', expectNoMatch: true), // files that end in ".~1~", a backup convention of some IDEs
RegExp(r'\bmanual\.txt$'),
RegExp(r'^flutter/(?:.+/)*[^/]+_unittests?\.[^/]+$'),
RegExp(r'^flutter/lib/web_ui/lib/assets/ahem\.ttf$', expectNoMatch: true), // this gitignored file exists only for testing purposes
RegExp(r'^flutter/sky/packages/sky_engine/LICENSE$'), // that is the output of this script
RegExp(r'^flutter/third_party/abseil-cpp/(?:.+/)*[^/]+_test\.[^/]+$'),
RegExp(r'^flutter/third_party/angle/(?:.+/)*[^/]+_unittest\.[^/]+$'),
RegExp(r'^flutter/third_party/boringssl/(?:.+/)*[^/]+_test\.[^/]+$'),
RegExp(r'^flutter/third_party/boringssl/src/crypto/fipsmodule/bn/[^/]+.go$'),
RegExp(r'^flutter/third_party/boringssl/src/crypto/fipsmodule/ec/[^/]+.go$'),
RegExp(r'^flutter/third_party/dart/(?:.+/)*[^/]+_test\.[^/]+$'),
RegExp(r'^flutter/third_party/freetype2/docs/(?!FTL\.TXT$).+'), // ignore all documentation except the license
RegExp(r'^flutter/third_party/zlib/(?:.+/)*[^/]+_unittest\.[^/]+$'),
];