Chrome OS Build team oriented info with more details can be found here: Licensing for Chromium OS Developers
Google authored packages use BSD-Google as the default license. It is "BSD-Google" and not "BSD" because BSD licenses require the licensing code to find a license file in the code with copyright attribution. For Google packages, we simply use BSD-Google to skip the step that looks for the copyright to assign (the BSD-Google contains both the BSD text and the copyright assignment to Google).
Proprietary packages from Google in Chrome OS should use the Google-TOS license.
Obviously you need to clear new proprietary packages with the vendor they came from and legal before you can include them in Chrome OS. At that time, the proper license to use should be sorted out (it might be Google-TOS, or it might be something else Google and the vendor have agreed upon).
For firmware packages (where the file is installed into /lib/firmware/ and loaded into devices at runtime), you should push for a simple license that would allow for inclusion into linux-firmware. If you view the various license files in there, you should be able to get a gist of what will work. Main goal is to allow for free redistribution.
If you are creating a package that does not exist in Gentoo, you are responsible for scanning the source code of that package and setting the LICENSE field in the ebuild to the correct value. Note that some open source software may require that you list more than one license, or may be dual or tripled licensed. Feel free to ask firstname.lastname@example.org for guidance if you have questions.
Shared licenses are in one of these trees:
As explained in more details in "I got an error about BSD/MIT copyright attribution" below, single use licenses should either be in a license file checked in the source code tree for source we maintain ourselves, or can be applied in src/third_party/chromiumos-overlay/licenses/copyright-attribution/
Please make sure you use the correct one.
Code under portage-stable is synced unmodified and therefore it's not desirable to add a license file there because the next sync could remove it.
In this case you don't want to modify the source tree, you can put a license mapping in src/third_party/chromiumos-overlay/licenses/copyright-attribution (look for README and other examples there).
Is the source under a directory that has overlay in its name?
If this case, simply add a file called LICENSE with copyright attribution in the package's source tree.
The licensing script will look for a license in many different places.
Usually, the license specified in the ebuild is good enough. There are however, exceptions. Currently, they are:
If the code sees any of these licenses, and the LICENSE field in the ebuild doesn't say something like LICENSE="|| ( BSD GPL-2 )" (if it does say that, it will ignore the BSD license and use the GPL-2 one that does not require copyright attribution), the licensing code must now look for a license that contains a copyright for that package.
Running the licensing code with --debug shows how this is done. The logs below show the details but basically it will first look in
For packages that we've forked, you can instead simply add a file called LICENSE in the package's source tree and the licensing script will pick it up.
To fix this error, I looked at the ebuild, found that the source is in https://bitbucket.org/mgorny/python-exec/src/ and found a copyright notice in python-exec.c.
I then created a BSD file from another one:
I then edited that new file and put the proper name for the copyright.
The license file is currently generated after the fact with https://chromium.googlesource.com/chromiumos/chromite/+/master/licensing/licenses.py
Once all packages are fixed to pass licensing (we have some left to fix, and it's time consuming when we don't have easy to Email owners for each package, hence request #4 above), licensing will be run for each package after it is built and error out if the license isn't valid or can't be retrieved.
The end state is explained here: