You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/10/26 08:27:11 UTC

[buildstream] 02/02: Cleanup license headers for initial apache release.

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch tristan/release-cleanups
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit c141ed0e49e0288b5544f5886b9051a09c487e87
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Wed Oct 26 15:39:36 2022 +0900

    Cleanup license headers for initial apache release.
    
    This patch removes the copyright statements from license
    headers, and adds license headers to files which are missing them.
---
 .coveragerc                                             | 13 +++++++++++++
 .pylintrc                                               | 13 +++++++++++++
 MANIFEST.in                                             | 14 ++++++++++++++
 contrib/bst-docker-import                               |  2 --
 contrib/bst-graph                                       | 16 ++++++++++++++++
 contrib/bst-here                                        |  2 --
 doc/badges.py                                           |  2 --
 doc/bst2html.py                                         |  1 -
 pyproject.toml                                          | 13 +++++++++++++
 setup.cfg                                               | 13 +++++++++++++
 setup.py                                                |  2 --
 src/buildstream/__init__.py                             |  2 --
 src/buildstream/__main__.py                             | 14 ++++++++++++++
 src/buildstream/_artifact.py                            |  3 ---
 src/buildstream/_artifactcache.py                       |  3 ---
 src/buildstream/_artifactelement.py                     |  3 ---
 src/buildstream/_artifactproject.py                     |  2 --
 src/buildstream/_assetcache.py                          |  1 -
 src/buildstream/_cachekey.py                            |  2 --
 src/buildstream/_cas/__init__.py                        |  2 --
 src/buildstream/_cas/cascache.py                        |  3 ---
 src/buildstream/_cas/casdprocessmanager.py              |  3 ---
 src/buildstream/_cas/casremote.py                       |  2 --
 src/buildstream/_cas/casserver.py                       |  3 ---
 src/buildstream/_context.py                             |  2 --
 src/buildstream/_elementproxy.py                        |  2 --
 src/buildstream/_elementsources.py                      |  3 ---
 src/buildstream/_elementsourcescache.py                 |  2 --
 src/buildstream/_exceptions.py                          |  2 --
 src/buildstream/_frontend/__init__.py                   |  2 --
 src/buildstream/_frontend/app.py                        |  2 --
 src/buildstream/_frontend/cli.py                        | 13 +++++++++++++
 src/buildstream/_frontend/complete.py                   |  5 ++---
 src/buildstream/_frontend/linuxapp.py                   |  2 --
 src/buildstream/_frontend/profile.py                    |  2 --
 src/buildstream/_frontend/status.py                     |  2 --
 src/buildstream/_frontend/widget.py                     |  2 --
 src/buildstream/_includes.py                            | 13 +++++++++++++
 src/buildstream/_loader/__init__.py                     |  2 --
 src/buildstream/_loader/loadcontext.py                  |  2 --
 src/buildstream/_loader/loadelement.pyi                 | 13 +++++++++++++
 src/buildstream/_loader/loadelement.pyx                 |  2 --
 src/buildstream/_loader/loader.py                       |  2 --
 src/buildstream/_loader/metasource.py                   |  2 --
 src/buildstream/_loader/types.py                        |  2 --
 src/buildstream/_message.py                             |  2 --
 src/buildstream/_messenger.py                           |  2 --
 src/buildstream/_options/__init__.py                    |  2 --
 src/buildstream/_options/option.py                      |  2 --
 src/buildstream/_options/optionarch.py                  |  2 --
 src/buildstream/_options/optionbool.py                  |  2 --
 src/buildstream/_options/optioneltmask.py               |  2 --
 src/buildstream/_options/optionenum.py                  |  2 --
 src/buildstream/_options/optionflags.py                 |  2 --
 src/buildstream/_options/optionos.py                    |  2 --
 src/buildstream/_options/optionpool.py                  |  2 --
 src/buildstream/_overlapcollector.py                    |  2 --
 src/buildstream/_pipeline.py                            |  2 --
 src/buildstream/_platform/__init__.py                   |  2 --
 src/buildstream/_platform/platform.py                   |  3 ---
 src/buildstream/_pluginfactory/__init__.py              |  2 --
 src/buildstream/_pluginfactory/elementfactory.py        |  2 --
 src/buildstream/_pluginfactory/pluginfactory.py         |  2 --
 src/buildstream/_pluginfactory/pluginorigin.py          |  2 --
 src/buildstream/_pluginfactory/pluginoriginjunction.py  |  2 --
 src/buildstream/_pluginfactory/pluginoriginlocal.py     |  2 --
 src/buildstream/_pluginfactory/pluginoriginpip.py       |  2 --
 src/buildstream/_pluginfactory/sourcefactory.py         |  2 --
 src/buildstream/_pluginproxy.py                         |  2 --
 src/buildstream/_profile.py                             |  3 ---
 src/buildstream/_project.py                             |  2 --
 src/buildstream/_projectrefs.py                         |  2 --
 src/buildstream/_remote.py                              |  2 --
 src/buildstream/_remotespec.py                          |  3 ---
 src/buildstream/_scheduler/__init__.py                  |  2 --
 src/buildstream/_scheduler/jobs/__init__.py             |  2 --
 src/buildstream/_scheduler/jobs/elementjob.py           |  1 -
 src/buildstream/_scheduler/jobs/job.py                  |  3 ---
 src/buildstream/_scheduler/queues/__init__.py           | 13 +++++++++++++
 src/buildstream/_scheduler/queues/artifactpushqueue.py  |  2 --
 src/buildstream/_scheduler/queues/buildqueue.py         |  2 --
 src/buildstream/_scheduler/queues/cachequeryqueue.py    |  2 --
 src/buildstream/_scheduler/queues/fetchqueue.py         |  2 --
 src/buildstream/_scheduler/queues/pullqueue.py          |  2 --
 src/buildstream/_scheduler/queues/queue.py              |  2 --
 src/buildstream/_scheduler/queues/sourcepushqueue.py    |  2 --
 src/buildstream/_scheduler/queues/trackqueue.py         |  2 --
 src/buildstream/_scheduler/scheduler.py                 |  2 --
 src/buildstream/_signals.py                             |  2 --
 src/buildstream/_site.py                                |  2 --
 src/buildstream/_sourcecache.py                         |  2 --
 src/buildstream/_state.py                               |  2 --
 src/buildstream/_stream.py                              |  2 --
 src/buildstream/_testing/__init__.py                    |  3 ---
 src/buildstream/_testing/_cachekeys.py                  |  2 --
 src/buildstream/_testing/_fixtures.py                   |  2 --
 src/buildstream/_testing/_sourcetests/build_checkout.py |  3 ---
 src/buildstream/_testing/_sourcetests/conftest.py       |  2 --
 src/buildstream/_testing/_sourcetests/fetch.py          |  3 ---
 src/buildstream/_testing/_sourcetests/mirror.py         |  3 ---
 .../_testing/_sourcetests/source_determinism.py         |  3 ---
 src/buildstream/_testing/_sourcetests/track.py          |  3 ---
 .../_testing/_sourcetests/track_cross_junction.py       |  3 ---
 src/buildstream/_testing/_sourcetests/utils.py          |  3 ---
 src/buildstream/_testing/_sourcetests/workspace.py      |  3 ---
 src/buildstream/_testing/_update_cachekeys.py           |  3 ---
 src/buildstream/_testing/integration.py                 |  3 ---
 src/buildstream/_testing/repo.py                        |  3 ---
 src/buildstream/_testing/runcli.py                      |  3 ---
 src/buildstream/_types.pyx                              |  2 --
 src/buildstream/_utils.pyi                              | 13 +++++++++++++
 src/buildstream/_utils.pyx                              |  2 --
 src/buildstream/_variables.pyi                          | 13 +++++++++++++
 src/buildstream/_variables.pyx                          |  3 ---
 src/buildstream/_versions.py                            |  2 --
 src/buildstream/_workspaces.py                          |  2 --
 src/buildstream/_yaml.pyi                               | 13 +++++++++++++
 src/buildstream/_yaml.pyx                               |  3 ---
 src/buildstream/buildelement.py                         |  3 ---
 src/buildstream/data/bst                                | 13 +++++++++++++
 src/buildstream/data/build-all.sh.in                    | 17 ++++++++++++++---
 src/buildstream/data/build-module.sh.in                 | 15 +++++++++++++--
 src/buildstream/data/projectconfig.yaml                 | 14 ++++++++++++++
 src/buildstream/data/userconfig.yaml                    | 14 ++++++++++++++
 src/buildstream/downloadablefilesource.py               |  3 ---
 src/buildstream/element.py                              |  3 ---
 src/buildstream/exceptions.py                           |  2 --
 src/buildstream/node.pxd                                |  2 --
 src/buildstream/node.pyi                                | 13 +++++++++++++
 src/buildstream/node.pyx                                |  3 ---
 src/buildstream/plugin.py                               |  2 --
 src/buildstream/plugins/elements/compose.py             |  2 --
 src/buildstream/plugins/elements/compose.yaml           | 11 +++++++++++
 src/buildstream/plugins/elements/filter.py              |  2 --
 src/buildstream/plugins/elements/filter.yaml            | 11 +++++++++++
 src/buildstream/plugins/elements/import.py              |  2 --
 src/buildstream/plugins/elements/import.yaml            | 12 ++++++++++++
 src/buildstream/plugins/elements/junction.py            |  2 --
 src/buildstream/plugins/elements/link.py                |  2 --
 src/buildstream/plugins/elements/manual.py              |  2 --
 src/buildstream/plugins/elements/manual.yaml            | 12 ++++++++++++
 src/buildstream/plugins/elements/script.py              |  2 --
 src/buildstream/plugins/elements/script.yaml            | 12 ++++++++++++
 src/buildstream/plugins/elements/stack.py               |  2 --
 src/buildstream/plugins/sources/local.py                |  2 --
 src/buildstream/plugins/sources/remote.py               |  2 --
 src/buildstream/plugins/sources/tar.py                  |  2 --
 src/buildstream/plugins/sources/workspace.py            |  2 --
 src/buildstream/sandbox/__init__.py                     |  2 --
 src/buildstream/sandbox/_config.py                      |  2 --
 src/buildstream/sandbox/_sandboxbuildboxrun.py          |  2 --
 src/buildstream/sandbox/_sandboxdummy.py                |  3 ---
 src/buildstream/sandbox/_sandboxreapi.py                |  2 --
 src/buildstream/sandbox/_sandboxremote.py               |  3 ---
 src/buildstream/sandbox/sandbox.py                      |  3 ---
 src/buildstream/scriptelement.py                        |  2 --
 src/buildstream/source.py                               |  3 ---
 src/buildstream/storage/__init__.py                     |  3 ---
 src/buildstream/storage/_casbaseddirectory.py           |  3 ---
 src/buildstream/storage/_filebaseddirectory.py          |  4 ----
 src/buildstream/storage/directory.py                    |  4 ----
 src/buildstream/types.py                                |  2 --
 src/buildstream/utils.py                                |  2 --
 tests/artifactcache/capabilities.py                     | 14 ++++++++++++++
 tests/artifactcache/config.py                           | 14 ++++++++++++++
 tests/artifactcache/expiry.py                           |  2 --
 tests/artifactcache/junctions.py                        | 14 ++++++++++++++
 tests/artifactcache/pull.py                             | 14 ++++++++++++++
 tests/artifactcache/push.py                             | 14 ++++++++++++++
 tests/cachekey/cachekey.py                              | 14 ++++++++++++++
 tests/conftest.py                                       |  3 ---
 tests/elements/filter.py                                | 14 ++++++++++++++
 tests/examples/autotools.py                             | 14 ++++++++++++++
 tests/examples/developing.py                            | 14 ++++++++++++++
 tests/examples/first-project.py                         | 14 ++++++++++++++
 tests/examples/integration-commands.py                  | 14 ++++++++++++++
 tests/examples/junctions.py                             | 14 ++++++++++++++
 tests/examples/running-commands.py                      | 14 ++++++++++++++
 tests/format/assertion.py                               | 14 ++++++++++++++
 tests/format/dependencies.py                            | 14 ++++++++++++++
 tests/format/elementnames.py                            | 14 ++++++++++++++
 tests/format/include.py                                 | 14 ++++++++++++++
 tests/format/include_composition.py                     | 13 +++++++++++++
 tests/format/invalid_keys.py                            | 14 ++++++++++++++
 tests/format/junctions.py                               | 14 ++++++++++++++
 tests/format/link.py                                    | 14 ++++++++++++++
 tests/format/listdirectiveerrors.py                     | 14 ++++++++++++++
 tests/format/optionarch.py                              | 14 ++++++++++++++
 tests/format/optionbool.py                              | 14 ++++++++++++++
 tests/format/optioneltmask.py                           | 14 ++++++++++++++
 tests/format/optionenum.py                              | 14 ++++++++++++++
 tests/format/optionexports.py                           | 14 ++++++++++++++
 tests/format/optionflags.py                             | 14 ++++++++++++++
 tests/format/optionos.py                                | 14 ++++++++++++++
 tests/format/optionoverrides.py                         | 14 ++++++++++++++
 tests/format/optionprojectroot.py                       | 14 ++++++++++++++
 tests/format/options.py                                 | 14 ++++++++++++++
 tests/format/project.py                                 | 14 ++++++++++++++
 tests/format/projectoverrides.py                        | 14 ++++++++++++++
 tests/format/stack.py                                   | 14 ++++++++++++++
 tests/format/substitutions.py                           | 14 ++++++++++++++
 tests/format/userconfig.py                              | 14 ++++++++++++++
 tests/format/variables.py                               | 14 ++++++++++++++
 tests/frontend/__init__.py                              | 14 ++++++++++++++
 tests/frontend/artifact_checkout.py                     | 14 ++++++++++++++
 tests/frontend/artifact_delete.py                       |  2 --
 tests/frontend/artifact_list_contents.py                |  2 --
 tests/frontend/artifact_log.py                          |  2 --
 tests/frontend/artifact_pull.py                         | 14 ++++++++++++++
 tests/frontend/artifact_show.py                         |  2 --
 tests/frontend/buildcheckout.py                         | 14 ++++++++++++++
 tests/frontend/completions.py                           | 14 ++++++++++++++
 tests/frontend/compose_splits.py                        | 14 ++++++++++++++
 tests/frontend/configurable_warnings.py                 | 14 ++++++++++++++
 tests/frontend/cross_junction_workspace.py              | 14 ++++++++++++++
 tests/frontend/default_target.py                        | 14 ++++++++++++++
 tests/frontend/fetch.py                                 | 14 ++++++++++++++
 tests/frontend/help.py                                  | 14 ++++++++++++++
 tests/frontend/init.py                                  | 14 ++++++++++++++
 tests/frontend/interactive_init.py                      | 13 +++++++++++++
 tests/frontend/large_directory.py                       |  2 --
 tests/frontend/logging.py                               | 14 ++++++++++++++
 tests/frontend/main.py                                  | 14 ++++++++++++++
 tests/frontend/mirror.py                                | 14 ++++++++++++++
 tests/frontend/order.py                                 | 14 ++++++++++++++
 tests/frontend/overlaps.py                              | 14 ++++++++++++++
 tests/frontend/progress.py                              | 14 ++++++++++++++
 tests/frontend/pull.py                                  | 14 ++++++++++++++
 tests/frontend/push.py                                  |  3 ---
 tests/frontend/rebuild.py                               | 14 ++++++++++++++
 tests/frontend/remote-caches.py                         |  2 --
 tests/frontend/show.py                                  | 14 ++++++++++++++
 tests/frontend/source_checkout.py                       | 14 ++++++++++++++
 tests/frontend/track.py                                 | 14 ++++++++++++++
 tests/frontend/version.py                               | 14 ++++++++++++++
 tests/frontend/workspace.py                             |  3 ---
 tests/integration/artifact.py                           |  3 ---
 tests/integration/autotools.py                          | 14 ++++++++++++++
 tests/integration/base/generate-base.sh                 | 12 ++++++++++++
 tests/integration/build-uid.py                          | 14 ++++++++++++++
 tests/integration/cachedfail.py                         |  5 ++---
 tests/integration/compose-symlinks.py                   | 14 ++++++++++++++
 tests/integration/compose.py                            | 14 ++++++++++++++
 tests/integration/filter.py                             | 14 ++++++++++++++
 tests/integration/import.py                             | 14 ++++++++++++++
 tests/integration/interactive_build.py                  | 14 ++++++++++++++
 tests/integration/manual.py                             | 14 ++++++++++++++
 tests/integration/messages.py                           |  2 --
 tests/integration/pullbuildtrees.py                     | 14 ++++++++++++++
 tests/integration/sandbox.py                            |  2 --
 tests/integration/script.py                             | 14 ++++++++++++++
 tests/integration/shell.py                              | 14 ++++++++++++++
 tests/integration/shellbuildtrees.py                    | 14 ++++++++++++++
 tests/integration/sockets.py                            | 14 ++++++++++++++
 tests/integration/source-determinism.py                 | 14 ++++++++++++++
 tests/integration/stack.py                              | 13 +++++++++++++
 tests/integration/symlinks.py                           | 14 ++++++++++++++
 tests/integration/workspace.py                          | 14 ++++++++++++++
 tests/internals/cascache.py                             | 13 +++++++++++++
 tests/internals/context.py                              | 13 +++++++++++++
 tests/internals/loader.py                               | 13 +++++++++++++
 tests/internals/storage.py                              | 14 ++++++++++++++
 tests/internals/storage_vdir_import.py                  |  3 +--
 tests/internals/utils_move_atomic.py                    | 13 +++++++++++++
 tests/internals/utils_save_atomic.py                    | 13 +++++++++++++
 tests/internals/yaml.py                                 | 13 +++++++++++++
 tests/plugins/loading.py                                | 14 ++++++++++++++
 tests/plugins/sample-plugins/setup.py                   |  2 --
 .../src/sample_plugins/elements/autotools.py            |  2 --
 .../sample-plugins/src/sample_plugins/sources/git.py    |  3 ---
 tests/plugins/shadow.py                                 | 14 ++++++++++++++
 tests/remotecache/__init__.py                           |  0
 tests/remotecache/simple.py                             | 14 ++++++++++++++
 tests/remoteexecution/buildfail.py                      |  2 --
 tests/remoteexecution/buildtree.py                      |  1 -
 tests/remoteexecution/junction.py                       |  2 --
 tests/remoteexecution/remotecache.py                    | 14 ++++++++++++++
 tests/remoteexecution/simple.py                         | 14 ++++++++++++++
 tests/remoteexecution/workspace.py                      | 14 ++++++++++++++
 tests/sandboxes/missing-command.py                      | 14 ++++++++++++++
 tests/sandboxes/missing_dependencies.py                 | 14 ++++++++++++++
 tests/sandboxes/remote-exec-config.py                   | 14 ++++++++++++++
 tests/sandboxes/selection.py                            |  4 ++--
 tests/sourcecache/cache.py                              |  2 --
 tests/sourcecache/capabilities.py                       | 14 ++++++++++++++
 tests/sourcecache/config.py                             |  2 --
 tests/sourcecache/fetch.py                              |  2 --
 .../sourcecache/project/plugins/elements/always_fail.py |  2 --
 tests/sourcecache/project/plugins/sources/patch.py      |  3 ---
 tests/sourcecache/push.py                               |  2 --
 tests/sourcecache/source-checkout.py                    |  2 --
 tests/sourcecache/staging.py                            |  2 --
 tests/sourcecache/workspace.py                          |  2 --
 tests/sources/__init__.py                               | 14 ++++++++++++++
 tests/sources/keytest.py                                |  2 --
 tests/sources/local.py                                  | 14 ++++++++++++++
 tests/sources/no_fetch_cached.py                        | 14 ++++++++++++++
 tests/sources/previous_source_access.py                 | 14 ++++++++++++++
 tests/sources/remote.py                                 | 14 ++++++++++++++
 tests/sources/tar.py                                    | 14 ++++++++++++++
 tests/sources/variables.py                              | 14 ++++++++++++++
 tests/testutils/__init__.py                             |  3 ---
 tests/testutils/artifactshare.py                        | 13 +++++++++++++
 tests/testutils/constants.py                            | 14 ++++++++++++++
 tests/testutils/context.py                              |  2 --
 tests/testutils/element_generators.py                   | 13 +++++++++++++
 tests/testutils/file_server.py                          | 13 +++++++++++++
 tests/testutils/filetypegenerator.py                    |  2 --
 tests/testutils/ftp_server.py                           | 13 +++++++++++++
 tests/testutils/http_server.py                          | 13 +++++++++++++
 tests/testutils/junction.py                             | 13 +++++++++++++
 tests/testutils/patch.py                                | 13 +++++++++++++
 tests/testutils/platform.py                             |  2 --
 tests/testutils/python_repo.py                          | 13 +++++++++++++
 tests/testutils/repo/git.py                             | 13 +++++++++++++
 tests/testutils/repo/tar.py                             | 13 +++++++++++++
 tests/testutils/runner_integration.py                   |  2 --
 tests/testutils/setuptools.py                           | 13 +++++++++++++
 tests/testutils/site.py                                 | 14 ++++++++++++++
 tox.ini                                                 | 14 ++++++++++++++
 320 files changed, 1977 insertions(+), 400 deletions(-)

diff --git a/.coveragerc b/.coveragerc
index 5b06d817a..b789d7c0b 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 [run]
 concurrency = multiprocessing
 plugins = Cython.Coverage
diff --git a/.pylintrc b/.pylintrc
index f06fcb0b2..4a1ddd742 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 [MASTER]
 
 # A comma-separated list of package or module names from where C extensions may
diff --git a/MANIFEST.in b/MANIFEST.in
index 9c28ca355..1299860c1 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Basic toplevel package includes
 include BuildStream.doap
 include COMMITTERS.rst
diff --git a/contrib/bst-docker-import b/contrib/bst-docker-import
index d86f36450..3e983ef42 100755
--- a/contrib/bst-docker-import
+++ b/contrib/bst-docker-import
@@ -1,7 +1,5 @@
 #!/bin/bash
 #
-#  Copyright 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/contrib/bst-graph b/contrib/bst-graph
index 5310aae41..783027d32 100755
--- a/contrib/bst-graph
+++ b/contrib/bst-graph
@@ -1,4 +1,20 @@
 #!/usr/bin/env python3
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+#  Authors:
+#        Chandan Singh <cs...@bloomberg.net>
+#
 '''Print dependency graph of given element(s) in DOT format.
 
 This script must be run from the same directory where you would normally
diff --git a/contrib/bst-here b/contrib/bst-here
index 2c2d21f52..1f7396a02 100755
--- a/contrib/bst-here
+++ b/contrib/bst-here
@@ -1,7 +1,5 @@
 #!/bin/bash
 #
-#  Copyright 2017 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/doc/badges.py b/doc/badges.py
index b6cb34a24..e05268967 100755
--- a/doc/badges.py
+++ b/doc/badges.py
@@ -1,7 +1,5 @@
 #!/usr/bin/env python3
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/doc/bst2html.py b/doc/bst2html.py
index cfaf05513..d9049310f 100755
--- a/doc/bst2html.py
+++ b/doc/bst2html.py
@@ -1,7 +1,6 @@
 #!/usr/bin/env python3
 #
 # Copyright (c) 2013 German M. Bravo (Kronuz)
-# Copyright (c) 2018 Codethink Limited
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
diff --git a/pyproject.toml b/pyproject.toml
index 5c9f66612..989fb08d3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 [build-system]
 requires = [
     # We need at least version 36.6.0 that introduced "build_meta"
diff --git a/setup.cfg b/setup.cfg
index d220e3952..83211c0d4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 [versioneer]
 VCS = git
 style = pep440_buildstream
diff --git a/setup.py b/setup.py
index 8e1a11556..f7adcce2f 100755
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,5 @@
 #!/usr/bin/env python3
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/__init__.py b/src/buildstream/__init__.py
index 55833c782..1c51bd647 100644
--- a/src/buildstream/__init__.py
+++ b/src/buildstream/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/__main__.py b/src/buildstream/__main__.py
index 556a0f67e..771832944 100644
--- a/src/buildstream/__main__.py
+++ b/src/buildstream/__main__.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 ##################################################################
 #                      Private Entry Point                       #
 ##################################################################
diff --git a/src/buildstream/_artifact.py b/src/buildstream/_artifact.py
index 2ff345ea0..c3a5d68b3 100644
--- a/src/buildstream/_artifact.py
+++ b/src/buildstream/_artifact.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_artifactcache.py b/src/buildstream/_artifactcache.py
index b8559428b..0eec7342d 100644
--- a/src/buildstream/_artifactcache.py
+++ b/src/buildstream/_artifactcache.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2017-2018 Codethink Limited
-#  Copyright (C) 2019-2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_artifactelement.py b/src/buildstream/_artifactelement.py
index 868b477fc..7a1c336dd 100644
--- a/src/buildstream/_artifactelement.py
+++ b/src/buildstream/_artifactelement.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_artifactproject.py b/src/buildstream/_artifactproject.py
index 8650bf9b3..3defd4e0d 100644
--- a/src/buildstream/_artifactproject.py
+++ b/src/buildstream/_artifactproject.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_assetcache.py b/src/buildstream/_assetcache.py
index dce8d10a1..6a4806341 100644
--- a/src/buildstream/_assetcache.py
+++ b/src/buildstream/_assetcache.py
@@ -1,4 +1,3 @@
-#  Copyright (C) 2019-2020 Bloomberg Finance LP
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/_cachekey.py b/src/buildstream/_cachekey.py
index 2c514bf5a..2a3b7f2ef 100644
--- a/src/buildstream/_cachekey.py
+++ b/src/buildstream/_cachekey.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_cas/__init__.py b/src/buildstream/_cas/__init__.py
index 409925dd4..5f9c4abb1 100644
--- a/src/buildstream/_cas/__init__.py
+++ b/src/buildstream/_cas/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017-2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py
index 42419d091..42937c1d6 100644
--- a/src/buildstream/_cas/cascache.py
+++ b/src/buildstream/_cas/cascache.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018-2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_cas/casdprocessmanager.py b/src/buildstream/_cas/casdprocessmanager.py
index 5ecdcad9a..8fa9861a5 100644
--- a/src/buildstream/_cas/casdprocessmanager.py
+++ b/src/buildstream/_cas/casdprocessmanager.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018-2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_cas/casremote.py b/src/buildstream/_cas/casremote.py
index 2ca4287f6..4299783bb 100644
--- a/src/buildstream/_cas/casremote.py
+++ b/src/buildstream/_cas/casremote.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018-2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_cas/casserver.py b/src/buildstream/_cas/casserver.py
index 9736387e0..4e46b4fd6 100644
--- a/src/buildstream/_cas/casserver.py
+++ b/src/buildstream/_cas/casserver.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_context.py b/src/buildstream/_context.py
index 710c706a2..676b686f8 100644
--- a/src/buildstream/_context.py
+++ b/src/buildstream/_context.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_elementproxy.py b/src/buildstream/_elementproxy.py
index 0e2e9250b..d1b74831e 100644
--- a/src/buildstream/_elementproxy.py
+++ b/src/buildstream/_elementproxy.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_elementsources.py b/src/buildstream/_elementsources.py
index c4e3be415..549e12e48 100644
--- a/src/buildstream/_elementsources.py
+++ b/src/buildstream/_elementsources.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#  Copyright (C) 2017-2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_elementsourcescache.py b/src/buildstream/_elementsourcescache.py
index fcbd98794..8330851f2 100644
--- a/src/buildstream/_elementsourcescache.py
+++ b/src/buildstream/_elementsourcescache.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019-2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_exceptions.py b/src/buildstream/_exceptions.py
index 75badf037..20aa318bb 100644
--- a/src/buildstream/_exceptions.py
+++ b/src/buildstream/_exceptions.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/__init__.py b/src/buildstream/_frontend/__init__.py
index 55ec76716..223a90575 100644
--- a/src/buildstream/_frontend/__init__.py
+++ b/src/buildstream/_frontend/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/app.py b/src/buildstream/_frontend/app.py
index 18ed04b91..30d7ebb4a 100644
--- a/src/buildstream/_frontend/app.py
+++ b/src/buildstream/_frontend/app.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/cli.py b/src/buildstream/_frontend/cli.py
index fa4e0b6d2..995f40b72 100644
--- a/src/buildstream/_frontend/cli.py
+++ b/src/buildstream/_frontend/cli.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import sys
 from functools import partial
diff --git a/src/buildstream/_frontend/complete.py b/src/buildstream/_frontend/complete.py
index d61637185..6fef9d2c7 100644
--- a/src/buildstream/_frontend/complete.py
+++ b/src/buildstream/_frontend/complete.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (c) 2014 by Armin Ronacher.
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
@@ -18,6 +15,8 @@
 #  original copyright notice from the Click library and following disclaimer
 #  as per their LICENSE requirements.
 #
+#  Copyright (c) 2014 by Armin Ronacher.
+#
 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 #  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 #  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
diff --git a/src/buildstream/_frontend/linuxapp.py b/src/buildstream/_frontend/linuxapp.py
index b055fefcc..aa9e05065 100644
--- a/src/buildstream/_frontend/linuxapp.py
+++ b/src/buildstream/_frontend/linuxapp.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/profile.py b/src/buildstream/_frontend/profile.py
index 0e2b7b1c1..424e2c819 100644
--- a/src/buildstream/_frontend/profile.py
+++ b/src/buildstream/_frontend/profile.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/status.py b/src/buildstream/_frontend/status.py
index b0d3254e4..675867be6 100644
--- a/src/buildstream/_frontend/status.py
+++ b/src/buildstream/_frontend/status.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_frontend/widget.py b/src/buildstream/_frontend/widget.py
index e815933cd..20054a792 100644
--- a/src/buildstream/_frontend/widget.py
+++ b/src/buildstream/_frontend/widget.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_includes.py b/src/buildstream/_includes.py
index b25803c18..5aa821aac 100644
--- a/src/buildstream/_includes.py
+++ b/src/buildstream/_includes.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 from . import _yaml
 from .node import MappingNode, ScalarNode, SequenceNode
diff --git a/src/buildstream/_loader/__init__.py b/src/buildstream/_loader/__init__.py
index 097d27275..ee5d019cd 100644
--- a/src/buildstream/_loader/__init__.py
+++ b/src/buildstream/_loader/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_loader/loadcontext.py b/src/buildstream/_loader/loadcontext.py
index 687abc91f..5f3f4eda4 100644
--- a/src/buildstream/_loader/loadcontext.py
+++ b/src/buildstream/_loader/loadcontext.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_loader/loadelement.pyi b/src/buildstream/_loader/loadelement.pyi
index b18a8def8..1aba5c08c 100644
--- a/src/buildstream/_loader/loadelement.pyi
+++ b/src/buildstream/_loader/loadelement.pyi
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from typing import List
 
 from ..node import Node, ScalarNode
diff --git a/src/buildstream/_loader/loadelement.pyx b/src/buildstream/_loader/loadelement.pyx
index 0fcaed39b..b21502844 100644
--- a/src/buildstream/_loader/loadelement.pyx
+++ b/src/buildstream/_loader/loadelement.pyx
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_loader/loader.py b/src/buildstream/_loader/loader.py
index 0f6042234..f142b2655 100644
--- a/src/buildstream/_loader/loader.py
+++ b/src/buildstream/_loader/loader.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_loader/metasource.py b/src/buildstream/_loader/metasource.py
index 6e5f72006..8df034227 100644
--- a/src/buildstream/_loader/metasource.py
+++ b/src/buildstream/_loader/metasource.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_loader/types.py b/src/buildstream/_loader/types.py
index c7c2b19cc..e9618092d 100644
--- a/src/buildstream/_loader/types.py
+++ b/src/buildstream/_loader/types.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_message.py b/src/buildstream/_message.py
index c54398c39..af09c3eff 100644
--- a/src/buildstream/_message.py
+++ b/src/buildstream/_message.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_messenger.py b/src/buildstream/_messenger.py
index 93b1db927..ba2556d88 100644
--- a/src/buildstream/_messenger.py
+++ b/src/buildstream/_messenger.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/__init__.py b/src/buildstream/_options/__init__.py
index 49cbe08a0..3c14284e7 100644
--- a/src/buildstream/_options/__init__.py
+++ b/src/buildstream/_options/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/option.py b/src/buildstream/_options/option.py
index bc1d73270..d8b5a94e5 100644
--- a/src/buildstream/_options/option.py
+++ b/src/buildstream/_options/option.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionarch.py b/src/buildstream/_options/optionarch.py
index 0d5ad238a..aab0f7e4b 100644
--- a/src/buildstream/_options/optionarch.py
+++ b/src/buildstream/_options/optionarch.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionbool.py b/src/buildstream/_options/optionbool.py
index 74212d43d..46932895c 100644
--- a/src/buildstream/_options/optionbool.py
+++ b/src/buildstream/_options/optionbool.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optioneltmask.py b/src/buildstream/_options/optioneltmask.py
index e5458588c..43d659d8e 100644
--- a/src/buildstream/_options/optioneltmask.py
+++ b/src/buildstream/_options/optioneltmask.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionenum.py b/src/buildstream/_options/optionenum.py
index 9e9b7c983..2266b5d0d 100644
--- a/src/buildstream/_options/optionenum.py
+++ b/src/buildstream/_options/optionenum.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionflags.py b/src/buildstream/_options/optionflags.py
index 888024fc7..8d33dc802 100644
--- a/src/buildstream/_options/optionflags.py
+++ b/src/buildstream/_options/optionflags.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionos.py b/src/buildstream/_options/optionos.py
index 6f6ddc8e8..6df9c219f 100644
--- a/src/buildstream/_options/optionos.py
+++ b/src/buildstream/_options/optionos.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_options/optionpool.py b/src/buildstream/_options/optionpool.py
index 922787d99..52ae0b35e 100644
--- a/src/buildstream/_options/optionpool.py
+++ b/src/buildstream/_options/optionpool.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_overlapcollector.py b/src/buildstream/_overlapcollector.py
index 0294b36d6..79f62b156 100644
--- a/src/buildstream/_overlapcollector.py
+++ b/src/buildstream/_overlapcollector.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pipeline.py b/src/buildstream/_pipeline.py
index 18789b5f4..cb8afd04d 100644
--- a/src/buildstream/_pipeline.py
+++ b/src/buildstream/_pipeline.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016-2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_platform/__init__.py b/src/buildstream/_platform/__init__.py
index 664d4d15b..a35642439 100644
--- a/src/buildstream/_platform/__init__.py
+++ b/src/buildstream/_platform/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_platform/platform.py b/src/buildstream/_platform/platform.py
index bfe5a112b..2cb9d905b 100644
--- a/src/buildstream/_platform/platform.py
+++ b/src/buildstream/_platform/platform.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/__init__.py b/src/buildstream/_pluginfactory/__init__.py
index 7f28b719f..28b4f3d7d 100644
--- a/src/buildstream/_pluginfactory/__init__.py
+++ b/src/buildstream/_pluginfactory/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/elementfactory.py b/src/buildstream/_pluginfactory/elementfactory.py
index 4dca545e7..b85b177e9 100644
--- a/src/buildstream/_pluginfactory/elementfactory.py
+++ b/src/buildstream/_pluginfactory/elementfactory.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/pluginfactory.py b/src/buildstream/_pluginfactory/pluginfactory.py
index 1f1be38be..23de60936 100644
--- a/src/buildstream/_pluginfactory/pluginfactory.py
+++ b/src/buildstream/_pluginfactory/pluginfactory.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/pluginorigin.py b/src/buildstream/_pluginfactory/pluginorigin.py
index 262c4502e..9dfaf55d5 100644
--- a/src/buildstream/_pluginfactory/pluginorigin.py
+++ b/src/buildstream/_pluginfactory/pluginorigin.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/pluginoriginjunction.py b/src/buildstream/_pluginfactory/pluginoriginjunction.py
index cf0205c1c..1f719df01 100644
--- a/src/buildstream/_pluginfactory/pluginoriginjunction.py
+++ b/src/buildstream/_pluginfactory/pluginoriginjunction.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/pluginoriginlocal.py b/src/buildstream/_pluginfactory/pluginoriginlocal.py
index 8acdbfab0..e7875dab4 100644
--- a/src/buildstream/_pluginfactory/pluginoriginlocal.py
+++ b/src/buildstream/_pluginfactory/pluginoriginlocal.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/pluginoriginpip.py b/src/buildstream/_pluginfactory/pluginoriginpip.py
index 2dc84ea10..00ac58e96 100644
--- a/src/buildstream/_pluginfactory/pluginoriginpip.py
+++ b/src/buildstream/_pluginfactory/pluginoriginpip.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginfactory/sourcefactory.py b/src/buildstream/_pluginfactory/sourcefactory.py
index 5ecf0212a..4d3722ad6 100644
--- a/src/buildstream/_pluginfactory/sourcefactory.py
+++ b/src/buildstream/_pluginfactory/sourcefactory.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_pluginproxy.py b/src/buildstream/_pluginproxy.py
index de6e38418..048040845 100644
--- a/src/buildstream/_pluginproxy.py
+++ b/src/buildstream/_pluginproxy.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_profile.py b/src/buildstream/_profile.py
index d851ca5bd..543c98095 100644
--- a/src/buildstream/_profile.py
+++ b/src/buildstream/_profile.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index 57b801a2b..1a1054898 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_projectrefs.py b/src/buildstream/_projectrefs.py
index a9114642e..5095f1f83 100644
--- a/src/buildstream/_projectrefs.py
+++ b/src/buildstream/_projectrefs.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_remote.py b/src/buildstream/_remote.py
index c19e314ac..453f7f2a0 100644
--- a/src/buildstream/_remote.py
+++ b/src/buildstream/_remote.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_remotespec.py b/src/buildstream/_remotespec.py
index f6247d5d4..c31a10bca 100644
--- a/src/buildstream/_remotespec.py
+++ b/src/buildstream/_remotespec.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/__init__.py b/src/buildstream/_scheduler/__init__.py
index d014c1788..d37e47b6f 100644
--- a/src/buildstream/_scheduler/__init__.py
+++ b/src/buildstream/_scheduler/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/jobs/__init__.py b/src/buildstream/_scheduler/jobs/__init__.py
index 3de09a475..fb3557dd8 100644
--- a/src/buildstream/_scheduler/jobs/__init__.py
+++ b/src/buildstream/_scheduler/jobs/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/jobs/elementjob.py b/src/buildstream/_scheduler/jobs/elementjob.py
index 3d04beba9..1b06ca0fb 100644
--- a/src/buildstream/_scheduler/jobs/elementjob.py
+++ b/src/buildstream/_scheduler/jobs/elementjob.py
@@ -1,4 +1,3 @@
-#  Copyright (C) 2018 Codethink Limited
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/_scheduler/jobs/job.py b/src/buildstream/_scheduler/jobs/job.py
index 08bdbcd9d..6a9101f34 100644
--- a/src/buildstream/_scheduler/jobs/job.py
+++ b/src/buildstream/_scheduler/jobs/job.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/__init__.py b/src/buildstream/_scheduler/queues/__init__.py
index 3b2293919..82ea114d5 100644
--- a/src/buildstream/_scheduler/queues/__init__.py
+++ b/src/buildstream/_scheduler/queues/__init__.py
@@ -1 +1,14 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from .queue import Queue, QueueStatus
diff --git a/src/buildstream/_scheduler/queues/artifactpushqueue.py b/src/buildstream/_scheduler/queues/artifactpushqueue.py
index 95c444690..97a724218 100644
--- a/src/buildstream/_scheduler/queues/artifactpushqueue.py
+++ b/src/buildstream/_scheduler/queues/artifactpushqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/buildqueue.py b/src/buildstream/_scheduler/queues/buildqueue.py
index 6a05594d0..4b3fadab6 100644
--- a/src/buildstream/_scheduler/queues/buildqueue.py
+++ b/src/buildstream/_scheduler/queues/buildqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/cachequeryqueue.py b/src/buildstream/_scheduler/queues/cachequeryqueue.py
index e8b9dda67..0cd27c705 100644
--- a/src/buildstream/_scheduler/queues/cachequeryqueue.py
+++ b/src/buildstream/_scheduler/queues/cachequeryqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Bloomberg Finance LP
-#
 #  This program is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU Lesser General Public
 #  License as published by the Free Software Foundation; either
diff --git a/src/buildstream/_scheduler/queues/fetchqueue.py b/src/buildstream/_scheduler/queues/fetchqueue.py
index b6c915802..b865011a1 100644
--- a/src/buildstream/_scheduler/queues/fetchqueue.py
+++ b/src/buildstream/_scheduler/queues/fetchqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/pullqueue.py b/src/buildstream/_scheduler/queues/pullqueue.py
index 1ab095399..1bb3ed55c 100644
--- a/src/buildstream/_scheduler/queues/pullqueue.py
+++ b/src/buildstream/_scheduler/queues/pullqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/queue.py b/src/buildstream/_scheduler/queues/queue.py
index e9f934d57..2b5445e55 100644
--- a/src/buildstream/_scheduler/queues/queue.py
+++ b/src/buildstream/_scheduler/queues/queue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/sourcepushqueue.py b/src/buildstream/_scheduler/queues/sourcepushqueue.py
index 4239b2f1c..4b839f067 100644
--- a/src/buildstream/_scheduler/queues/sourcepushqueue.py
+++ b/src/buildstream/_scheduler/queues/sourcepushqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/queues/trackqueue.py b/src/buildstream/_scheduler/queues/trackqueue.py
index 26e22eb10..3375b0c98 100644
--- a/src/buildstream/_scheduler/queues/trackqueue.py
+++ b/src/buildstream/_scheduler/queues/trackqueue.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_scheduler/scheduler.py b/src/buildstream/_scheduler/scheduler.py
index bba7de703..2e1ec6994 100644
--- a/src/buildstream/_scheduler/scheduler.py
+++ b/src/buildstream/_scheduler/scheduler.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/_signals.py b/src/buildstream/_signals.py
index 6ae663765..0556945d3 100644
--- a/src/buildstream/_signals.py
+++ b/src/buildstream/_signals.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_site.py b/src/buildstream/_site.py
index 62dd7b583..a75faaa7d 100644
--- a/src/buildstream/_site.py
+++ b/src/buildstream/_site.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_sourcecache.py b/src/buildstream/_sourcecache.py
index 24776ff51..e4f2f5a7c 100644
--- a/src/buildstream/_sourcecache.py
+++ b/src/buildstream/_sourcecache.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019-2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_state.py b/src/buildstream/_state.py
index 1b3a000da..b581642b3 100644
--- a/src/buildstream/_state.py
+++ b/src/buildstream/_state.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py
index 07f87822f..57c19ee1a 100644
--- a/src/buildstream/_stream.py
+++ b/src/buildstream/_stream.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/__init__.py b/src/buildstream/_testing/__init__.py
index 08551ac98..a7520c819 100644
--- a/src/buildstream/_testing/__init__.py
+++ b/src/buildstream/_testing/__init__.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2019 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_cachekeys.py b/src/buildstream/_testing/_cachekeys.py
index 086ceaca6..9a834c82c 100644
--- a/src/buildstream/_testing/_cachekeys.py
+++ b/src/buildstream/_testing/_cachekeys.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_fixtures.py b/src/buildstream/_testing/_fixtures.py
index a4bba80d6..338fd93c6 100644
--- a/src/buildstream/_testing/_fixtures.py
+++ b/src/buildstream/_testing/_fixtures.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/build_checkout.py b/src/buildstream/_testing/_sourcetests/build_checkout.py
index 391f5e43a..58c60e65a 100644
--- a/src/buildstream/_testing/_sourcetests/build_checkout.py
+++ b/src/buildstream/_testing/_sourcetests/build_checkout.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/conftest.py b/src/buildstream/_testing/_sourcetests/conftest.py
index e2fbe11ec..53fe0152d 100644
--- a/src/buildstream/_testing/_sourcetests/conftest.py
+++ b/src/buildstream/_testing/_sourcetests/conftest.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/fetch.py b/src/buildstream/_testing/_sourcetests/fetch.py
index 9ddeff691..4e75e03e7 100644
--- a/src/buildstream/_testing/_sourcetests/fetch.py
+++ b/src/buildstream/_testing/_sourcetests/fetch.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/mirror.py b/src/buildstream/_testing/_sourcetests/mirror.py
index 97d397f19..ef6710ddf 100644
--- a/src/buildstream/_testing/_sourcetests/mirror.py
+++ b/src/buildstream/_testing/_sourcetests/mirror.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/source_determinism.py b/src/buildstream/_testing/_sourcetests/source_determinism.py
index 91e46a331..efe808a0c 100644
--- a/src/buildstream/_testing/_sourcetests/source_determinism.py
+++ b/src/buildstream/_testing/_sourcetests/source_determinism.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/track.py b/src/buildstream/_testing/_sourcetests/track.py
index 013adf74b..fb784e0a0 100644
--- a/src/buildstream/_testing/_sourcetests/track.py
+++ b/src/buildstream/_testing/_sourcetests/track.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/track_cross_junction.py b/src/buildstream/_testing/_sourcetests/track_cross_junction.py
index c6eee3a85..79a0c0e3c 100644
--- a/src/buildstream/_testing/_sourcetests/track_cross_junction.py
+++ b/src/buildstream/_testing/_sourcetests/track_cross_junction.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/utils.py b/src/buildstream/_testing/_sourcetests/utils.py
index ab0cc52fc..c0b631e56 100644
--- a/src/buildstream/_testing/_sourcetests/utils.py
+++ b/src/buildstream/_testing/_sourcetests/utils.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_sourcetests/workspace.py b/src/buildstream/_testing/_sourcetests/workspace.py
index c5bb7eb7a..b3a7c1ab6 100644
--- a/src/buildstream/_testing/_sourcetests/workspace.py
+++ b/src/buildstream/_testing/_sourcetests/workspace.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/_update_cachekeys.py b/src/buildstream/_testing/_update_cachekeys.py
index cf85459d7..a6e9d0892 100755
--- a/src/buildstream/_testing/_update_cachekeys.py
+++ b/src/buildstream/_testing/_update_cachekeys.py
@@ -1,8 +1,5 @@
 #!/usr/bin/env python3
 #
-#  Copyright (C) 2019 Codethink Limited
-#  Copyright (C) 2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/integration.py b/src/buildstream/_testing/integration.py
index 5f8bf92f8..4fcb9ae92 100644
--- a/src/buildstream/_testing/integration.py
+++ b/src/buildstream/_testing/integration.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/repo.py b/src/buildstream/_testing/repo.py
index 72af9000a..e429cf4a7 100644
--- a/src/buildstream/_testing/repo.py
+++ b/src/buildstream/_testing/repo.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_testing/runcli.py b/src/buildstream/_testing/runcli.py
index a1ee93578..02c3edd1f 100644
--- a/src/buildstream/_testing/runcli.py
+++ b/src/buildstream/_testing/runcli.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_types.pyx b/src/buildstream/_types.pyx
index dbf58aad7..4fc297271 100644
--- a/src/buildstream/_types.pyx
+++ b/src/buildstream/_types.pyx
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Bloomberg LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_utils.pyi b/src/buildstream/_utils.pyi
index 1938eec08..4f8dd3224 100644
--- a/src/buildstream/_utils.pyi
+++ b/src/buildstream/_utils.pyi
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 def url_directory_name(url: str) -> str: ...
 def valid_chars_name(name: str) -> bool: ...
 def terminate_thread(thread_id: int) -> None: ...
diff --git a/src/buildstream/_utils.pyx b/src/buildstream/_utils.pyx
index 3758e6664..91fd9adf7 100644
--- a/src/buildstream/_utils.pyx
+++ b/src/buildstream/_utils.pyx
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg L.P.
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_variables.pyi b/src/buildstream/_variables.pyi
index 1e2f47325..8d9acdbdc 100644
--- a/src/buildstream/_variables.pyi
+++ b/src/buildstream/_variables.pyi
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from typing import Optional
 
 from .node import MappingNode, Node
diff --git a/src/buildstream/_variables.pyx b/src/buildstream/_variables.pyx
index 32569fba1..b26bfa24a 100644
--- a/src/buildstream/_variables.pyx
+++ b/src/buildstream/_variables.pyx
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#  Copyright (C) 2019 Bloomberg L.P.
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_versions.py b/src/buildstream/_versions.py
index e96516a46..b3b23b1a1 100644
--- a/src/buildstream/_versions.py
+++ b/src/buildstream/_versions.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_workspaces.py b/src/buildstream/_workspaces.py
index 43e1926f7..7d4fc4dbe 100644
--- a/src/buildstream/_workspaces.py
+++ b/src/buildstream/_workspaces.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/_yaml.pyi b/src/buildstream/_yaml.pyi
index 6f4b31bd5..224abc51a 100644
--- a/src/buildstream/_yaml.pyi
+++ b/src/buildstream/_yaml.pyi
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from typing import Optional
 
 from .node import MappingNode
diff --git a/src/buildstream/_yaml.pyx b/src/buildstream/_yaml.pyx
index 57d98e413..d58973dbb 100644
--- a/src/buildstream/_yaml.pyx
+++ b/src/buildstream/_yaml.pyx
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#  Copyright (C) 2019 Bloomberg LLP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/buildelement.py b/src/buildstream/buildelement.py
index a3bcd420e..40355f5cf 100644
--- a/src/buildstream/buildelement.py
+++ b/src/buildstream/buildelement.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/data/bst b/src/buildstream/data/bst
index e38720f77..118e11e8e 100644
--- a/src/buildstream/data/bst
+++ b/src/buildstream/data/bst
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 # BuildStream bash completion scriptlet.
 #
 # On systems which use the bash-completion module for
diff --git a/src/buildstream/data/build-all.sh.in b/src/buildstream/data/build-all.sh.in
index bf5c9f880..cff1c7335 100644
--- a/src/buildstream/data/build-all.sh.in
+++ b/src/buildstream/data/build-all.sh.in
@@ -1,15 +1,26 @@
 #!/bin/sh
 #
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 # DO NOT EDIT THIS FILE
 #
-# This is a build script generated by
-# [BuildStream](https://wiki.gnome.org/Projects/BuildStream/).
+# This is a build script generated by BuildStream
 #
 # Builds all given modules using their respective scripts.
 
 set -eu
 
-echo "Buildstream native bootstrap script"
+echo "BuildStream native bootstrap script"
 
 export PATH='/usr/bin:/usr/sbin/:/sbin:/bin:/tools/bin:/tools/sbin'
 export SRCDIR='./source'
diff --git a/src/buildstream/data/build-module.sh.in b/src/buildstream/data/build-module.sh.in
index 6e9ea4552..29d527057 100644
--- a/src/buildstream/data/build-module.sh.in
+++ b/src/buildstream/data/build-module.sh.in
@@ -1,9 +1,20 @@
 #!/bin/sh
 #
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 # DO NOT EDIT THIS FILE
 #
-# This is a build script generated by
-# [BuildStream](https://wiki.gnome.org/Projects/BuildStream/).
+# This is a build script generated by BuildStream
 #
 # Builds the module {name}.
 
diff --git a/src/buildstream/data/projectconfig.yaml b/src/buildstream/data/projectconfig.yaml
index aeeb3eeb4..4632d7a1d 100644
--- a/src/buildstream/data/projectconfig.yaml
+++ b/src/buildstream/data/projectconfig.yaml
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Default BuildStream project configuration.
 
 
diff --git a/src/buildstream/data/userconfig.yaml b/src/buildstream/data/userconfig.yaml
index 5672b2c54..1c30254da 100644
--- a/src/buildstream/data/userconfig.yaml
+++ b/src/buildstream/data/userconfig.yaml
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Default BuildStream user configuration.
 
 #
diff --git a/src/buildstream/downloadablefilesource.py b/src/buildstream/downloadablefilesource.py
index e96039a62..d36da6749 100644
--- a/src/buildstream/downloadablefilesource.py
+++ b/src/buildstream/downloadablefilesource.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg LP
-#  Copyright (C) 2019 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 66bc9cf8c..1a97308e6 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016-2022 Codethink Limited
-#  Copyright (C) 2017-2020 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/exceptions.py b/src/buildstream/exceptions.py
index 628d6ccac..4806218e9 100644
--- a/src/buildstream/exceptions.py
+++ b/src/buildstream/exceptions.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/node.pxd b/src/buildstream/node.pxd
index 245111e8a..d1cc94547 100644
--- a/src/buildstream/node.pxd
+++ b/src/buildstream/node.pxd
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg L.P.
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/node.pyi b/src/buildstream/node.pyi
index 378a1fb00..253ba93b1 100644
--- a/src/buildstream/node.pyi
+++ b/src/buildstream/node.pyi
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from typing import (
     overload,
     Generic,
diff --git a/src/buildstream/node.pyx b/src/buildstream/node.pyx
index 79634c457..41599b0e8 100644
--- a/src/buildstream/node.pyx
+++ b/src/buildstream/node.pyx
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg LLP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugin.py b/src/buildstream/plugin.py
index b00d12777..e1e7b1fb6 100644
--- a/src/buildstream/plugin.py
+++ b/src/buildstream/plugin.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/compose.py b/src/buildstream/plugins/elements/compose.py
index 3884a4a94..7152528df 100644
--- a/src/buildstream/plugins/elements/compose.py
+++ b/src/buildstream/plugins/elements/compose.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/compose.yaml b/src/buildstream/plugins/elements/compose.yaml
index fd2eb9358..d7f64d5ca 100644
--- a/src/buildstream/plugins/elements/compose.yaml
+++ b/src/buildstream/plugins/elements/compose.yaml
@@ -1,3 +1,14 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
 
 # Compose element configuration
 config:
diff --git a/src/buildstream/plugins/elements/filter.py b/src/buildstream/plugins/elements/filter.py
index 5cccbc658..3e03dc0d5 100644
--- a/src/buildstream/plugins/elements/filter.py
+++ b/src/buildstream/plugins/elements/filter.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/filter.yaml b/src/buildstream/plugins/elements/filter.yaml
index 12a82a9cb..633db7c41 100644
--- a/src/buildstream/plugins/elements/filter.yaml
+++ b/src/buildstream/plugins/elements/filter.yaml
@@ -1,3 +1,14 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
 
 # Filter element configuration
 config:
diff --git a/src/buildstream/plugins/elements/import.py b/src/buildstream/plugins/elements/import.py
index 8a16a9faf..55bc29e08 100644
--- a/src/buildstream/plugins/elements/import.py
+++ b/src/buildstream/plugins/elements/import.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/import.yaml b/src/buildstream/plugins/elements/import.yaml
index 698111b55..33a2d64fe 100644
--- a/src/buildstream/plugins/elements/import.yaml
+++ b/src/buildstream/plugins/elements/import.yaml
@@ -1,3 +1,15 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # The import element simply stages the given sources
 # directly to the root of the sandbox and then collects
 # the output to create an output artifact.
diff --git a/src/buildstream/plugins/elements/junction.py b/src/buildstream/plugins/elements/junction.py
index 17889735c..d35ed6317 100644
--- a/src/buildstream/plugins/elements/junction.py
+++ b/src/buildstream/plugins/elements/junction.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/link.py b/src/buildstream/plugins/elements/link.py
index 7e354cf37..48e38901b 100644
--- a/src/buildstream/plugins/elements/link.py
+++ b/src/buildstream/plugins/elements/link.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/manual.py b/src/buildstream/plugins/elements/manual.py
index dbad6cfea..ecebcac80 100644
--- a/src/buildstream/plugins/elements/manual.py
+++ b/src/buildstream/plugins/elements/manual.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/manual.yaml b/src/buildstream/plugins/elements/manual.yaml
index 38fe7d163..5891f2d13 100644
--- a/src/buildstream/plugins/elements/manual.yaml
+++ b/src/buildstream/plugins/elements/manual.yaml
@@ -1,3 +1,15 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # Manual build element does not provide any default
 # build commands
 config:
diff --git a/src/buildstream/plugins/elements/script.py b/src/buildstream/plugins/elements/script.py
index 83305330d..90e4e024c 100644
--- a/src/buildstream/plugins/elements/script.py
+++ b/src/buildstream/plugins/elements/script.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/elements/script.yaml b/src/buildstream/plugins/elements/script.yaml
index 390f60355..a286a55b1 100644
--- a/src/buildstream/plugins/elements/script.yaml
+++ b/src/buildstream/plugins/elements/script.yaml
@@ -1,3 +1,15 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # The script element allows staging elements into specific locations
 # via it's "location" dependency configuration
 #
diff --git a/src/buildstream/plugins/elements/stack.py b/src/buildstream/plugins/elements/stack.py
index 0ad0a0187..83f205b55 100644
--- a/src/buildstream/plugins/elements/stack.py
+++ b/src/buildstream/plugins/elements/stack.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/sources/local.py b/src/buildstream/plugins/sources/local.py
index 0928ef18b..2cb7bdc49 100644
--- a/src/buildstream/plugins/sources/local.py
+++ b/src/buildstream/plugins/sources/local.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/sources/remote.py b/src/buildstream/plugins/sources/remote.py
index a95ef703e..e2bb0e574 100644
--- a/src/buildstream/plugins/sources/remote.py
+++ b/src/buildstream/plugins/sources/remote.py
@@ -1,6 +1,4 @@
 #
-#  Copyright Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/sources/tar.py b/src/buildstream/plugins/sources/tar.py
index 7010ec4f4..5c45d1c94 100644
--- a/src/buildstream/plugins/sources/tar.py
+++ b/src/buildstream/plugins/sources/tar.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/plugins/sources/workspace.py b/src/buildstream/plugins/sources/workspace.py
index 0f174f2bb..237c02026 100644
--- a/src/buildstream/plugins/sources/workspace.py
+++ b/src/buildstream/plugins/sources/workspace.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/sandbox/__init__.py b/src/buildstream/sandbox/__init__.py
index 7564995e5..ceb1b84ef 100644
--- a/src/buildstream/sandbox/__init__.py
+++ b/src/buildstream/sandbox/__init__.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/sandbox/_config.py b/src/buildstream/sandbox/_config.py
index 6ad09ba26..654f16454 100644
--- a/src/buildstream/sandbox/_config.py
+++ b/src/buildstream/sandbox/_config.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/sandbox/_sandboxbuildboxrun.py b/src/buildstream/sandbox/_sandboxbuildboxrun.py
index 058eedaaa..1987ebac1 100644
--- a/src/buildstream/sandbox/_sandboxbuildboxrun.py
+++ b/src/buildstream/sandbox/_sandboxbuildboxrun.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018-2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/sandbox/_sandboxdummy.py b/src/buildstream/sandbox/_sandboxdummy.py
index 9db651843..31834e81b 100644
--- a/src/buildstream/sandbox/_sandboxdummy.py
+++ b/src/buildstream/sandbox/_sandboxdummy.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2017 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
@@ -13,7 +11,6 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 #
-#  Authors:
 
 from .._exceptions import SandboxError
 from .sandbox import Sandbox, SandboxCommandError
diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py
index f9b61a765..35901103e 100644
--- a/src/buildstream/sandbox/_sandboxreapi.py
+++ b/src/buildstream/sandbox/_sandboxreapi.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018-2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/sandbox/_sandboxremote.py b/src/buildstream/sandbox/_sandboxremote.py
index 4c0a86be2..299eefcca 100644
--- a/src/buildstream/sandbox/_sandboxremote.py
+++ b/src/buildstream/sandbox/_sandboxremote.py
@@ -1,6 +1,3 @@
-#!/usr/bin/env python3
-#
-#  Copyright (C) 2018 Bloomberg LP
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/sandbox/sandbox.py b/src/buildstream/sandbox/sandbox.py
index 8faa13bfb..ffae82335 100644
--- a/src/buildstream/sandbox/sandbox.py
+++ b/src/buildstream/sandbox/sandbox.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/scriptelement.py b/src/buildstream/scriptelement.py
index ad91fa7f1..4b798ad66 100644
--- a/src/buildstream/scriptelement.py
+++ b/src/buildstream/scriptelement.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2022 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/source.py b/src/buildstream/source.py
index 4cf8f1d61..90ae7a503 100644
--- a/src/buildstream/source.py
+++ b/src/buildstream/source.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/storage/__init__.py b/src/buildstream/storage/__init__.py
index c634f85e6..cb3b6252a 100644
--- a/src/buildstream/storage/__init__.py
+++ b/src/buildstream/storage/__init__.py
@@ -1,6 +1,3 @@
-#!/usr/bin/env python3
-#
-#  Copyright (C) 2018 Bloomberg Finance LP
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/storage/_casbaseddirectory.py b/src/buildstream/storage/_casbaseddirectory.py
index f1dd93539..545ee0832 100644
--- a/src/buildstream/storage/_casbaseddirectory.py
+++ b/src/buildstream/storage/_casbaseddirectory.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Bloomberg LP
-#  Copyright (C) 2022 Codethink Ltd
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/storage/_filebaseddirectory.py b/src/buildstream/storage/_filebaseddirectory.py
index cf234eaca..93fc17768 100644
--- a/src/buildstream/storage/_filebaseddirectory.py
+++ b/src/buildstream/storage/_filebaseddirectory.py
@@ -1,7 +1,3 @@
-#!/usr/bin/env python3
-#
-#  Copyright (C) 2018 Bloomberg Finance LP
-#  Copyright (C) 2022 Codethink Ltd
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/storage/directory.py b/src/buildstream/storage/directory.py
index 021af4108..fd19393d0 100644
--- a/src/buildstream/storage/directory.py
+++ b/src/buildstream/storage/directory.py
@@ -1,7 +1,3 @@
-#!/usr/bin/env python3
-#
-#  Copyright (C) 2018 Bloomberg Finance LP
-#  Copyright (C) 2022 Codethink Ltd
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/src/buildstream/types.py b/src/buildstream/types.py
index c3ad4354e..778941768 100644
--- a/src/buildstream/types.py
+++ b/src/buildstream/types.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Bloomberg LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/src/buildstream/utils.py b/src/buildstream/utils.py
index 26f7925d3..7d8072514 100644
--- a/src/buildstream/utils.py
+++ b/src/buildstream/utils.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016-2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/artifactcache/capabilities.py b/tests/artifactcache/capabilities.py
index c5156661a..39fb18ccd 100644
--- a/tests/artifactcache/capabilities.py
+++ b/tests/artifactcache/capabilities.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/artifactcache/config.py b/tests/artifactcache/config.py
index 912add285..20297c87e 100644
--- a/tests/artifactcache/config.py
+++ b/tests/artifactcache/config.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/artifactcache/expiry.py b/tests/artifactcache/expiry.py
index 9dadaa608..3fd312174 100644
--- a/tests/artifactcache/expiry.py
+++ b/tests/artifactcache/expiry.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/artifactcache/junctions.py b/tests/artifactcache/junctions.py
index aec7be3da..83c9e0136 100644
--- a/tests/artifactcache/junctions.py
+++ b/tests/artifactcache/junctions.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/artifactcache/pull.py b/tests/artifactcache/pull.py
index 5c3c06665..f79cbbfd8 100644
--- a/tests/artifactcache/pull.py
+++ b/tests/artifactcache/pull.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/artifactcache/push.py b/tests/artifactcache/push.py
index 4748b5831..7c2160f6e 100644
--- a/tests/artifactcache/push.py
+++ b/tests/artifactcache/push.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/cachekey/cachekey.py b/tests/cachekey/cachekey.py
index 4b44c6305..409498f31 100644
--- a/tests/cachekey/cachekey.py
+++ b/tests/cachekey/cachekey.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Cache Key Test Instructions
 #
 # Adding Tests
diff --git a/tests/conftest.py b/tests/conftest.py
index 69f9a0797..a572712b2 100755
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,8 +1,5 @@
 #!/usr/bin/env python3
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LLP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/elements/filter.py b/tests/elements/filter.py
index 8db488ac4..11a0737dd 100644
--- a/tests/elements/filter.py
+++ b/tests/elements/filter.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/autotools.py b/tests/examples/autotools.py
index b2081da4f..3babdd254 100644
--- a/tests/examples/autotools.py
+++ b/tests/examples/autotools.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/developing.py b/tests/examples/developing.py
index 5abfe2f31..a39afad2e 100644
--- a/tests/examples/developing.py
+++ b/tests/examples/developing.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/first-project.py b/tests/examples/first-project.py
index e98fa928c..f049ea34e 100644
--- a/tests/examples/first-project.py
+++ b/tests/examples/first-project.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/integration-commands.py b/tests/examples/integration-commands.py
index 26394065b..5c36fcb8d 100644
--- a/tests/examples/integration-commands.py
+++ b/tests/examples/integration-commands.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/junctions.py b/tests/examples/junctions.py
index 06c3da917..5e28c82c4 100644
--- a/tests/examples/junctions.py
+++ b/tests/examples/junctions.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/examples/running-commands.py b/tests/examples/running-commands.py
index e720540a4..b5e9211cd 100644
--- a/tests/examples/running-commands.py
+++ b/tests/examples/running-commands.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/assertion.py b/tests/format/assertion.py
index a83e545f5..192152db6 100644
--- a/tests/format/assertion.py
+++ b/tests/format/assertion.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/dependencies.py b/tests/format/dependencies.py
index 6c5727397..65e722c89 100644
--- a/tests/format/dependencies.py
+++ b/tests/format/dependencies.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/elementnames.py b/tests/format/elementnames.py
index cc3d2e139..d9146a5f2 100644
--- a/tests/format/elementnames.py
+++ b/tests/format/elementnames.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/include.py b/tests/format/include.py
index 42f85c11b..7f6433dd6 100644
--- a/tests/format/include.py
+++ b/tests/format/include.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/include_composition.py b/tests/format/include_composition.py
index 8148e18fa..9f5faf3f8 100644
--- a/tests/format/include_composition.py
+++ b/tests/format/include_composition.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 
 from contextlib import contextmanager
diff --git a/tests/format/invalid_keys.py b/tests/format/invalid_keys.py
index 7e9d00f69..cb386f369 100644
--- a/tests/format/invalid_keys.py
+++ b/tests/format/invalid_keys.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/junctions.py b/tests/format/junctions.py
index 6f0a5d1de..0dae65242 100644
--- a/tests/format/junctions.py
+++ b/tests/format/junctions.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/link.py b/tests/format/link.py
index ea1fa3291..c75744b25 100644
--- a/tests/format/link.py
+++ b/tests/format/link.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/listdirectiveerrors.py b/tests/format/listdirectiveerrors.py
index 70ebfb5c5..4647f183e 100644
--- a/tests/format/listdirectiveerrors.py
+++ b/tests/format/listdirectiveerrors.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionarch.py b/tests/format/optionarch.py
index 34ad7d42e..789a32fa0 100644
--- a/tests/format/optionarch.py
+++ b/tests/format/optionarch.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionbool.py b/tests/format/optionbool.py
index 3fed1a4d8..b1a9fa9e8 100644
--- a/tests/format/optionbool.py
+++ b/tests/format/optionbool.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optioneltmask.py b/tests/format/optioneltmask.py
index eb1ae9503..12e6a79bc 100644
--- a/tests/format/optioneltmask.py
+++ b/tests/format/optioneltmask.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionenum.py b/tests/format/optionenum.py
index 716dc03d4..58c2d5177 100644
--- a/tests/format/optionenum.py
+++ b/tests/format/optionenum.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionexports.py b/tests/format/optionexports.py
index 1cbb5bf3a..27f7c6cd9 100644
--- a/tests/format/optionexports.py
+++ b/tests/format/optionexports.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionflags.py b/tests/format/optionflags.py
index bb085d89a..dbeaa5318 100644
--- a/tests/format/optionflags.py
+++ b/tests/format/optionflags.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionos.py b/tests/format/optionos.py
index f9989702c..fbf9115e1 100644
--- a/tests/format/optionos.py
+++ b/tests/format/optionos.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionoverrides.py b/tests/format/optionoverrides.py
index 6e6394b24..69f5004b5 100644
--- a/tests/format/optionoverrides.py
+++ b/tests/format/optionoverrides.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/optionprojectroot.py b/tests/format/optionprojectroot.py
index 8f26b4ab2..8460cc501 100644
--- a/tests/format/optionprojectroot.py
+++ b/tests/format/optionprojectroot.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/options.py b/tests/format/options.py
index 4b4f44fea..0e5e7076f 100644
--- a/tests/format/options.py
+++ b/tests/format/options.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/project.py b/tests/format/project.py
index 17b62903e..568f9ab14 100644
--- a/tests/format/project.py
+++ b/tests/format/project.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/projectoverrides.py b/tests/format/projectoverrides.py
index 5fec490a4..42793dbf7 100644
--- a/tests/format/projectoverrides.py
+++ b/tests/format/projectoverrides.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/stack.py b/tests/format/stack.py
index e51a8cd42..5cf74ade4 100644
--- a/tests/format/stack.py
+++ b/tests/format/stack.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/substitutions.py b/tests/format/substitutions.py
index acf0c3e2f..d7919bc1a 100644
--- a/tests/format/substitutions.py
+++ b/tests/format/substitutions.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/userconfig.py b/tests/format/userconfig.py
index 6d401d0c2..c98ef4a77 100644
--- a/tests/format/userconfig.py
+++ b/tests/format/userconfig.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/format/variables.py b/tests/format/variables.py
index 7fbd54ec4..3b75eda9a 100644
--- a/tests/format/variables.py
+++ b/tests/format/variables.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/__init__.py b/tests/frontend/__init__.py
index 8bb061e3b..847cf63ac 100644
--- a/tests/frontend/__init__.py
+++ b/tests/frontend/__init__.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 import os
 from buildstream import _yaml
 
diff --git a/tests/frontend/artifact_checkout.py b/tests/frontend/artifact_checkout.py
index fba25b4ad..b238019b5 100644
--- a/tests/frontend/artifact_checkout.py
+++ b/tests/frontend/artifact_checkout.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/artifact_delete.py b/tests/frontend/artifact_delete.py
index 2d96ecff6..d6f838570 100644
--- a/tests/frontend/artifact_delete.py
+++ b/tests/frontend/artifact_delete.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/artifact_list_contents.py b/tests/frontend/artifact_list_contents.py
index 2daaf55dd..7a72ae64a 100644
--- a/tests/frontend/artifact_list_contents.py
+++ b/tests/frontend/artifact_list_contents.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/artifact_log.py b/tests/frontend/artifact_log.py
index b26564ed9..cd1b91fcc 100644
--- a/tests/frontend/artifact_log.py
+++ b/tests/frontend/artifact_log.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/artifact_pull.py b/tests/frontend/artifact_pull.py
index 01f8714ee..b33dd538f 100644
--- a/tests/frontend/artifact_pull.py
+++ b/tests/frontend/artifact_pull.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/artifact_show.py b/tests/frontend/artifact_show.py
index d7aa47a95..32e6542c1 100644
--- a/tests/frontend/artifact_show.py
+++ b/tests/frontend/artifact_show.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/buildcheckout.py b/tests/frontend/buildcheckout.py
index ab891b6ad..5f5154649 100644
--- a/tests/frontend/buildcheckout.py
+++ b/tests/frontend/buildcheckout.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/completions.py b/tests/frontend/completions.py
index 3155ebc61..af477fbcf 100644
--- a/tests/frontend/completions.py
+++ b/tests/frontend/completions.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/compose_splits.py b/tests/frontend/compose_splits.py
index a5604f46f..af5258abe 100644
--- a/tests/frontend/compose_splits.py
+++ b/tests/frontend/compose_splits.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/configurable_warnings.py b/tests/frontend/configurable_warnings.py
index 98339e2f9..766f693f4 100644
--- a/tests/frontend/configurable_warnings.py
+++ b/tests/frontend/configurable_warnings.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/cross_junction_workspace.py b/tests/frontend/cross_junction_workspace.py
index 92bee86cc..45025f203 100644
--- a/tests/frontend/cross_junction_workspace.py
+++ b/tests/frontend/cross_junction_workspace.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/default_target.py b/tests/frontend/default_target.py
index 3a9e94ec9..c3e7b9379 100644
--- a/tests/frontend/default_target.py
+++ b/tests/frontend/default_target.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/fetch.py b/tests/frontend/fetch.py
index 98d91c466..b67b9a18c 100644
--- a/tests/frontend/fetch.py
+++ b/tests/frontend/fetch.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/help.py b/tests/frontend/help.py
index 729ab08a7..0dafd460a 100644
--- a/tests/frontend/help.py
+++ b/tests/frontend/help.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/init.py b/tests/frontend/init.py
index 152922e81..5adbc5c62 100644
--- a/tests/frontend/init.py
+++ b/tests/frontend/init.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/interactive_init.py b/tests/frontend/interactive_init.py
index c05fd4e37..e77197732 100644
--- a/tests/frontend/interactive_init.py
+++ b/tests/frontend/interactive_init.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 
 import pexpect
diff --git a/tests/frontend/large_directory.py b/tests/frontend/large_directory.py
index a9ec989de..a8a6cc28f 100644
--- a/tests/frontend/large_directory.py
+++ b/tests/frontend/large_directory.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/logging.py b/tests/frontend/logging.py
index 315d20b35..f7ccab286 100644
--- a/tests/frontend/logging.py
+++ b/tests/frontend/logging.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/main.py b/tests/frontend/main.py
index d864a0b1f..990b4059d 100644
--- a/tests/frontend/main.py
+++ b/tests/frontend/main.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 import click
 import pytest
 
diff --git a/tests/frontend/mirror.py b/tests/frontend/mirror.py
index d8a17eec8..0ad7819c8 100644
--- a/tests/frontend/mirror.py
+++ b/tests/frontend/mirror.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/order.py b/tests/frontend/order.py
index 30dd65224..057a418c3 100644
--- a/tests/frontend/order.py
+++ b/tests/frontend/order.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/overlaps.py b/tests/frontend/overlaps.py
index 7a62fbe80..0ea47a637 100644
--- a/tests/frontend/overlaps.py
+++ b/tests/frontend/overlaps.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/progress.py b/tests/frontend/progress.py
index 2d946d5db..819837761 100644
--- a/tests/frontend/progress.py
+++ b/tests/frontend/progress.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/pull.py b/tests/frontend/pull.py
index 52a30cd41..32067cc04 100644
--- a/tests/frontend/pull.py
+++ b/tests/frontend/pull.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/push.py b/tests/frontend/push.py
index ebb43506d..b7ed393d9 100644
--- a/tests/frontend/push.py
+++ b/tests/frontend/push.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/rebuild.py b/tests/frontend/rebuild.py
index 67adef540..e3a4d432a 100644
--- a/tests/frontend/rebuild.py
+++ b/tests/frontend/rebuild.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/remote-caches.py b/tests/frontend/remote-caches.py
index a46cb9b4e..489b57fee 100644
--- a/tests/frontend/remote-caches.py
+++ b/tests/frontend/remote-caches.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/frontend/show.py b/tests/frontend/show.py
index bb6a427a8..6aee29a17 100644
--- a/tests/frontend/show.py
+++ b/tests/frontend/show.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/source_checkout.py b/tests/frontend/source_checkout.py
index 977a344b6..3d9e57154 100644
--- a/tests/frontend/source_checkout.py
+++ b/tests/frontend/source_checkout.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/track.py b/tests/frontend/track.py
index 61bee7332..b30af4fdf 100644
--- a/tests/frontend/track.py
+++ b/tests/frontend/track.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/version.py b/tests/frontend/version.py
index 8de4a713e..bcc7e9252 100644
--- a/tests/frontend/version.py
+++ b/tests/frontend/version.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/frontend/workspace.py b/tests/frontend/workspace.py
index 7c59ca12a..51887bf77 100644
--- a/tests/frontend/workspace.py
+++ b/tests/frontend/workspace.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/integration/artifact.py b/tests/integration/artifact.py
index aa35189db..09c713610 100644
--- a/tests/integration/artifact.py
+++ b/tests/integration/artifact.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/integration/autotools.py b/tests/integration/autotools.py
index ac017ff85..fe7d85319 100644
--- a/tests/integration/autotools.py
+++ b/tests/integration/autotools.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/base/generate-base.sh b/tests/integration/base/generate-base.sh
index 338c6d98f..d869c04b9 100755
--- a/tests/integration/base/generate-base.sh
+++ b/tests/integration/base/generate-base.sh
@@ -1,4 +1,16 @@
 #!/bin/sh
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
 
 # Generate a base sysroot for running the BuildStream integration tests.
 #
diff --git a/tests/integration/build-uid.py b/tests/integration/build-uid.py
index 0b0835e47..51782ede1 100644
--- a/tests/integration/build-uid.py
+++ b/tests/integration/build-uid.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/cachedfail.py b/tests/integration/cachedfail.py
index a954c4823..9a0f2bb02 100644
--- a/tests/integration/cachedfail.py
+++ b/tests/integration/cachedfail.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
@@ -13,6 +10,8 @@
 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/compose-symlinks.py b/tests/integration/compose-symlinks.py
index 51cd9fc89..522976d38 100644
--- a/tests/integration/compose-symlinks.py
+++ b/tests/integration/compose-symlinks.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/compose.py b/tests/integration/compose.py
index 2211dc19f..b502c945c 100644
--- a/tests/integration/compose.py
+++ b/tests/integration/compose.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/filter.py b/tests/integration/filter.py
index 12b9862bb..23e053b6b 100644
--- a/tests/integration/filter.py
+++ b/tests/integration/filter.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/import.py b/tests/integration/import.py
index 55142a8de..ba9cf5bbb 100644
--- a/tests/integration/import.py
+++ b/tests/integration/import.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/interactive_build.py b/tests/integration/interactive_build.py
index 56509ea3d..bc41345fe 100644
--- a/tests/integration/interactive_build.py
+++ b/tests/integration/interactive_build.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/manual.py b/tests/integration/manual.py
index 062c06619..e0fd3595c 100644
--- a/tests/integration/manual.py
+++ b/tests/integration/manual.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/messages.py b/tests/integration/messages.py
index 33b07e595..102c89e6f 100644
--- a/tests/integration/messages.py
+++ b/tests/integration/messages.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/integration/pullbuildtrees.py b/tests/integration/pullbuildtrees.py
index ad7f59e6b..2d7cd91fb 100644
--- a/tests/integration/pullbuildtrees.py
+++ b/tests/integration/pullbuildtrees.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/sandbox.py b/tests/integration/sandbox.py
index 6d9fe9413..aed00c743 100644
--- a/tests/integration/sandbox.py
+++ b/tests/integration/sandbox.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/integration/script.py b/tests/integration/script.py
index 67a8f4b58..494b7e992 100644
--- a/tests/integration/script.py
+++ b/tests/integration/script.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/shell.py b/tests/integration/shell.py
index bb94b26f2..4af301c6c 100644
--- a/tests/integration/shell.py
+++ b/tests/integration/shell.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/shellbuildtrees.py b/tests/integration/shellbuildtrees.py
index 32f471086..c4f1d35bc 100644
--- a/tests/integration/shellbuildtrees.py
+++ b/tests/integration/shellbuildtrees.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/sockets.py b/tests/integration/sockets.py
index 42ec08801..158da7685 100644
--- a/tests/integration/sockets.py
+++ b/tests/integration/sockets.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/source-determinism.py b/tests/integration/source-determinism.py
index bdc3595da..3ae8f18c9 100644
--- a/tests/integration/source-determinism.py
+++ b/tests/integration/source-determinism.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/stack.py b/tests/integration/stack.py
index 362452eee..8947aedcc 100644
--- a/tests/integration/stack.py
+++ b/tests/integration/stack.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/symlinks.py b/tests/integration/symlinks.py
index b5cb60e20..f92119303 100644
--- a/tests/integration/symlinks.py
+++ b/tests/integration/symlinks.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/integration/workspace.py b/tests/integration/workspace.py
index 41b79fc6f..1db9860b2 100644
--- a/tests/integration/workspace.py
+++ b/tests/integration/workspace.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/internals/cascache.py b/tests/internals/cascache.py
index 61d1b8312..23f7575c4 100644
--- a/tests/internals/cascache.py
+++ b/tests/internals/cascache.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import time
 from unittest.mock import MagicMock
diff --git a/tests/internals/context.py b/tests/internals/context.py
index a1d96984c..bd68140dd 100644
--- a/tests/internals/context.py
+++ b/tests/internals/context.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/internals/loader.py b/tests/internals/loader.py
index 5257da6d2..1cf65045f 100644
--- a/tests/internals/loader.py
+++ b/tests/internals/loader.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from contextlib import contextmanager
 import os
 import pytest
diff --git a/tests/internals/storage.py b/tests/internals/storage.py
index 8602e1976..49bb7043c 100644
--- a/tests/internals/storage.py
+++ b/tests/internals/storage.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 from contextlib import contextmanager
 import os
 import pprint
diff --git a/tests/internals/storage_vdir_import.py b/tests/internals/storage_vdir_import.py
index 6a567bb04..3b5418345 100644
--- a/tests/internals/storage_vdir_import.py
+++ b/tests/internals/storage_vdir_import.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
@@ -12,6 +10,7 @@
 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
+#
 from hashlib import sha256
 import os
 import random
diff --git a/tests/internals/utils_move_atomic.py b/tests/internals/utils_move_atomic.py
index 4f86efd1c..88176de6d 100644
--- a/tests/internals/utils_move_atomic.py
+++ b/tests/internals/utils_move_atomic.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/internals/utils_save_atomic.py b/tests/internals/utils_save_atomic.py
index 197a90cb2..966eb928d 100644
--- a/tests/internals/utils_save_atomic.py
+++ b/tests/internals/utils_save_atomic.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import pytest
 
diff --git a/tests/internals/yaml.py b/tests/internals/yaml.py
index 212c2366e..662576e62 100644
--- a/tests/internals/yaml.py
+++ b/tests/internals/yaml.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 from io import StringIO
 
diff --git a/tests/plugins/loading.py b/tests/plugins/loading.py
index 476464958..972c75a6d 100644
--- a/tests/plugins/loading.py
+++ b/tests/plugins/loading.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/plugins/sample-plugins/setup.py b/tests/plugins/sample-plugins/setup.py
index 2ab23fe55..14fe1cf5b 100755
--- a/tests/plugins/sample-plugins/setup.py
+++ b/tests/plugins/sample-plugins/setup.py
@@ -1,7 +1,5 @@
 #!/usr/bin/env python3
 #
-#  Copyright (C) 2020 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/plugins/sample-plugins/src/sample_plugins/elements/autotools.py b/tests/plugins/sample-plugins/src/sample_plugins/elements/autotools.py
index 7f9e6d06b..752333261 100644
--- a/tests/plugins/sample-plugins/src/sample_plugins/elements/autotools.py
+++ b/tests/plugins/sample-plugins/src/sample_plugins/elements/autotools.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2016, 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/plugins/sample-plugins/src/sample_plugins/sources/git.py b/tests/plugins/sample-plugins/src/sample_plugins/sources/git.py
index decd2ece1..4c7bace85 100644
--- a/tests/plugins/sample-plugins/src/sample_plugins/sources/git.py
+++ b/tests/plugins/sample-plugins/src/sample_plugins/sources/git.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2016 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/plugins/shadow.py b/tests/plugins/shadow.py
index c94743c33..f109aa01d 100644
--- a/tests/plugins/shadow.py
+++ b/tests/plugins/shadow.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/remotecache/__init__.py b/tests/remotecache/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/remotecache/simple.py b/tests/remotecache/simple.py
index 747e3b701..d90a39d53 100644
--- a/tests/remotecache/simple.py
+++ b/tests/remotecache/simple.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/remoteexecution/buildfail.py b/tests/remoteexecution/buildfail.py
index 1d553e753..69c795071 100644
--- a/tests/remoteexecution/buildfail.py
+++ b/tests/remoteexecution/buildfail.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/remoteexecution/buildtree.py b/tests/remoteexecution/buildtree.py
index 43a3e54e3..33992b5d8 100644
--- a/tests/remoteexecution/buildtree.py
+++ b/tests/remoteexecution/buildtree.py
@@ -1,4 +1,3 @@
-#  Copyright (C) 2019 Bloomberg Finance LP
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
diff --git a/tests/remoteexecution/junction.py b/tests/remoteexecution/junction.py
index 226974bb0..62a660561 100644
--- a/tests/remoteexecution/junction.py
+++ b/tests/remoteexecution/junction.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/remoteexecution/remotecache.py b/tests/remoteexecution/remotecache.py
index 231d417ee..b78070c71 100644
--- a/tests/remoteexecution/remotecache.py
+++ b/tests/remoteexecution/remotecache.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/remoteexecution/simple.py b/tests/remoteexecution/simple.py
index 4dd4f9c88..478e6fcb4 100644
--- a/tests/remoteexecution/simple.py
+++ b/tests/remoteexecution/simple.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/remoteexecution/workspace.py b/tests/remoteexecution/workspace.py
index 44b1d0022..3c97ed069 100644
--- a/tests/remoteexecution/workspace.py
+++ b/tests/remoteexecution/workspace.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sandboxes/missing-command.py b/tests/sandboxes/missing-command.py
index 98ff6ef03..3dbe60de3 100644
--- a/tests/sandboxes/missing-command.py
+++ b/tests/sandboxes/missing-command.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sandboxes/missing_dependencies.py b/tests/sandboxes/missing_dependencies.py
index 2d037e56c..1c4a40340 100644
--- a/tests/sandboxes/missing_dependencies.py
+++ b/tests/sandboxes/missing_dependencies.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sandboxes/remote-exec-config.py b/tests/sandboxes/remote-exec-config.py
index 82dad4f35..c89efc21c 100644
--- a/tests/sandboxes/remote-exec-config.py
+++ b/tests/sandboxes/remote-exec-config.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sandboxes/selection.py b/tests/sandboxes/selection.py
index efb22dcc4..d24b894fa 100644
--- a/tests/sandboxes/selection.py
+++ b/tests/sandboxes/selection.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
@@ -12,6 +10,8 @@
 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sourcecache/cache.py b/tests/sourcecache/cache.py
index 9eb03b10a..1e79dab03 100644
--- a/tests/sourcecache/cache.py
+++ b/tests/sourcecache/cache.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/capabilities.py b/tests/sourcecache/capabilities.py
index 11a3c9993..a22bbf4c5 100644
--- a/tests/sourcecache/capabilities.py
+++ b/tests/sourcecache/capabilities.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sourcecache/config.py b/tests/sourcecache/config.py
index dc0c3ff0d..85dea84d3 100644
--- a/tests/sourcecache/config.py
+++ b/tests/sourcecache/config.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance L.P.
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/fetch.py b/tests/sourcecache/fetch.py
index 4e42bdea8..b153573d2 100644
--- a/tests/sourcecache/fetch.py
+++ b/tests/sourcecache/fetch.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/project/plugins/elements/always_fail.py b/tests/sourcecache/project/plugins/elements/always_fail.py
index aa14bf33b..8885d413a 100644
--- a/tests/sourcecache/project/plugins/elements/always_fail.py
+++ b/tests/sourcecache/project/plugins/elements/always_fail.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance L.P.
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/project/plugins/sources/patch.py b/tests/sourcecache/project/plugins/sources/patch.py
index e664005d1..00e824925 100644
--- a/tests/sourcecache/project/plugins/sources/patch.py
+++ b/tests/sourcecache/project/plugins/sources/patch.py
@@ -1,7 +1,4 @@
 #
-#  Copyright Bloomberg Finance LP
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/push.py b/tests/sourcecache/push.py
index 5fa936841..7fb7c96b2 100644
--- a/tests/sourcecache/push.py
+++ b/tests/sourcecache/push.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/source-checkout.py b/tests/sourcecache/source-checkout.py
index 70a074d4d..d1b2aa30a 100644
--- a/tests/sourcecache/source-checkout.py
+++ b/tests/sourcecache/source-checkout.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/staging.py b/tests/sourcecache/staging.py
index 61c0feb3a..786a2405c 100644
--- a/tests/sourcecache/staging.py
+++ b/tests/sourcecache/staging.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sourcecache/workspace.py b/tests/sourcecache/workspace.py
index 13eb18eb7..e8992b341 100644
--- a/tests/sourcecache/workspace.py
+++ b/tests/sourcecache/workspace.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sources/__init__.py b/tests/sources/__init__.py
index 02a755074..d00c30416 100644
--- a/tests/sources/__init__.py
+++ b/tests/sources/__init__.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 import os
 
 
diff --git a/tests/sources/keytest.py b/tests/sources/keytest.py
index 2df01496a..ac56b7779 100644
--- a/tests/sources/keytest.py
+++ b/tests/sources/keytest.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/sources/local.py b/tests/sources/local.py
index 5a3f98e72..d1d197ec3 100644
--- a/tests/sources/local.py
+++ b/tests/sources/local.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sources/no_fetch_cached.py b/tests/sources/no_fetch_cached.py
index 9652d3fcf..48084440c 100644
--- a/tests/sources/no_fetch_cached.py
+++ b/tests/sources/no_fetch_cached.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sources/previous_source_access.py b/tests/sources/previous_source_access.py
index a35044fd7..a4ab42b11 100644
--- a/tests/sources/previous_source_access.py
+++ b/tests/sources/previous_source_access.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sources/remote.py b/tests/sources/remote.py
index fb3bfcd02..15710aa1f 100644
--- a/tests/sources/remote.py
+++ b/tests/sources/remote.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sources/tar.py b/tests/sources/tar.py
index c6dc239b3..c7abbc6dd 100644
--- a/tests/sources/tar.py
+++ b/tests/sources/tar.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/sources/variables.py b/tests/sources/variables.py
index addbaf8de..5cdd82eeb 100644
--- a/tests/sources/variables.py
+++ b/tests/sources/variables.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Pylint doesn't play well with fixtures and dependency injection from pytest
 # pylint: disable=redefined-outer-name
 
diff --git a/tests/testutils/__init__.py b/tests/testutils/__init__.py
index 87f61d966..028131e4b 100644
--- a/tests/testutils/__init__.py
+++ b/tests/testutils/__init__.py
@@ -1,7 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/testutils/artifactshare.py b/tests/testutils/artifactshare.py
index 1a40d43fc..36c6990d3 100644
--- a/tests/testutils/artifactshare.py
+++ b/tests/testutils/artifactshare.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import shutil
 import signal
diff --git a/tests/testutils/constants.py b/tests/testutils/constants.py
index e95d4428e..a26145bb0 100644
--- a/tests/testutils/constants.py
+++ b/tests/testutils/constants.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # Constants used during BuildStream tests.
 
 
diff --git a/tests/testutils/context.py b/tests/testutils/context.py
index 50bb75537..4ee841b6f 100644
--- a/tests/testutils/context.py
+++ b/tests/testutils/context.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/testutils/element_generators.py b/tests/testutils/element_generators.py
index fa1f9c06c..2547665ff 100644
--- a/tests/testutils/element_generators.py
+++ b/tests/testutils/element_generators.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 
 from buildstream import _yaml
diff --git a/tests/testutils/file_server.py b/tests/testutils/file_server.py
index 3e6e41954..ac1d6ecf6 100644
--- a/tests/testutils/file_server.py
+++ b/tests/testutils/file_server.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 from contextlib import contextmanager
 
 from .ftp_server import SimpleFtpServer
diff --git a/tests/testutils/filetypegenerator.py b/tests/testutils/filetypegenerator.py
index 70e068e3d..61b0b8d14 100644
--- a/tests/testutils/filetypegenerator.py
+++ b/tests/testutils/filetypegenerator.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Codethink Limited
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/testutils/ftp_server.py b/tests/testutils/ftp_server.py
index 7eda90b70..c350e7e3a 100644
--- a/tests/testutils/ftp_server.py
+++ b/tests/testutils/ftp_server.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import multiprocessing
 
 from pyftpdlib.authorizers import DummyAuthorizer
diff --git a/tests/testutils/http_server.py b/tests/testutils/http_server.py
index 8591159f8..7b538de8b 100644
--- a/tests/testutils/http_server.py
+++ b/tests/testutils/http_server.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import multiprocessing
 import os
 import posixpath
diff --git a/tests/testutils/junction.py b/tests/testutils/junction.py
index 515f3e47d..dd3f6f145 100644
--- a/tests/testutils/junction.py
+++ b/tests/testutils/junction.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 
 from buildstream import _yaml
diff --git a/tests/testutils/patch.py b/tests/testutils/patch.py
index 85b38def8..44bbd9d27 100644
--- a/tests/testutils/patch.py
+++ b/tests/testutils/patch.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import subprocess
 
 
diff --git a/tests/testutils/platform.py b/tests/testutils/platform.py
index bda280197..05acdd7b7 100644
--- a/tests/testutils/platform.py
+++ b/tests/testutils/platform.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2019 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/testutils/python_repo.py b/tests/testutils/python_repo.py
index f0c79592a..4069e0a0c 100644
--- a/tests/testutils/python_repo.py
+++ b/tests/testutils/python_repo.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import re
 import shutil
diff --git a/tests/testutils/repo/git.py b/tests/testutils/repo/git.py
index 34d4e12c4..7882be162 100644
--- a/tests/testutils/repo/git.py
+++ b/tests/testutils/repo/git.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import shutil
 import subprocess
diff --git a/tests/testutils/repo/tar.py b/tests/testutils/repo/tar.py
index 0b3236a6b..563a56d59 100644
--- a/tests/testutils/repo/tar.py
+++ b/tests/testutils/repo/tar.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import tarfile
 
diff --git a/tests/testutils/runner_integration.py b/tests/testutils/runner_integration.py
index 845682667..daf041277 100644
--- a/tests/testutils/runner_integration.py
+++ b/tests/testutils/runner_integration.py
@@ -1,6 +1,4 @@
 #
-#  Copyright (C) 2018 Bloomberg Finance LP
-#
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  You may obtain a copy of the License at
diff --git a/tests/testutils/setuptools.py b/tests/testutils/setuptools.py
index 0f7f30f91..17f4b86c8 100644
--- a/tests/testutils/setuptools.py
+++ b/tests/testutils/setuptools.py
@@ -1,3 +1,16 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
 import os
 import pytest
 import pkg_resources
diff --git a/tests/testutils/site.py b/tests/testutils/site.py
index d626cfeaf..57857ee61 100644
--- a/tests/testutils/site.py
+++ b/tests/testutils/site.py
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 # This function is used for pytest skipif() expressions.
 #
 # Tests which require our plugins in tests/plugins/pip-samples need
diff --git a/tox.ini b/tox.ini
index 8d21de4f1..6c0341eb7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,3 +1,17 @@
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
 #
 # Tox global configuration
 #