poky-contrib/meta/classes/copyleft_compliance.bbclass
Richard Purdie ff525695f2 classes: Add SPDX license identifiers
As stated in our top level license files, the license is MIT unless
otherwise stated. Add SPDX identifers accordingly. Replace older
license statementa with the standardised syntax. Also drop "All
Rights Reserved" expression as it isn't used now, doesn't mean anything
and is confusing.

(From OE-Core rev: 081a391fe09a21265881e39a2a496e4e10b4f80b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-08-12 11:58:01 +01:00

71 lines
2.2 KiB
Plaintext

#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
# Deploy sources for recipes for compliance with copyleft-style licenses
# Defaults to using symlinks, as it's a quick operation, and one can easily
# follow the links when making use of the files (e.g. tar with the -h arg).
#
# vi:sts=4:sw=4:et
inherit copyleft_filter
COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources'
python do_prepare_copyleft_sources () {
"""Populate a tree of the recipe sources and emit patch series files"""
import os.path
import shutil
p = d.getVar('P')
included, reason = copyleft_should_include(d)
if not included:
bb.debug(1, 'copyleft: %s is excluded: %s' % (p, reason))
return
else:
bb.debug(1, 'copyleft: %s is included: %s' % (p, reason))
sources_dir = d.getVar('COPYLEFT_SOURCES_DIR')
dl_dir = d.getVar('DL_DIR')
src_uri = d.getVar('SRC_URI').split()
fetch = bb.fetch2.Fetch(src_uri, d)
ud = fetch.ud
pf = d.getVar('PF')
dest = os.path.join(sources_dir, pf)
shutil.rmtree(dest, ignore_errors=True)
bb.utils.mkdirhier(dest)
for u in ud.values():
local = os.path.normpath(fetch.localpath(u.url))
if local.endswith('.bb'):
continue
elif local.endswith('/'):
local = local[:-1]
if u.mirrortarball:
tarball_path = os.path.join(dl_dir, u.mirrortarball)
if os.path.exists(tarball_path):
local = tarball_path
oe.path.symlink(local, os.path.join(dest, os.path.basename(local)), force=True)
patches = src_patches(d)
for patch in patches:
_, _, local, _, _, parm = bb.fetch.decodeurl(patch)
patchdir = parm.get('patchdir')
if patchdir:
series = os.path.join(dest, 'series.subdir.%s' % patchdir.replace('/', '_'))
else:
series = os.path.join(dest, 'series')
with open(series, 'a') as s:
s.write('%s -p%s\n' % (os.path.basename(local), parm['striplevel']))
}
addtask prepare_copyleft_sources after do_fetch before do_build
do_prepare_copyleft_sources[dirs] = "${WORKDIR}"
do_build[recrdeptask] += 'do_prepare_copyleft_sources'