mirror of
https://github.com/thead-yocto-mirror/meta-external-toolchain
synced 2026-09-04 06:54:36 +02:00
Merge pull request #69 from kergoth/sb-5005
Quiet external toolchain license warnings
This commit is contained in:
2
TODO.md
2
TODO.md
@@ -1,3 +1,5 @@
|
||||
- Adjust the hardcoded licenses based on version, for now. Better would be if
|
||||
the external toolchain provided license data.
|
||||
- Handle relocating debug files based on PACKAGE_DEBUG_SPLIT_STYLE, in
|
||||
a general way, as a better way to handle 6d62e6f. Possibly do a regex
|
||||
search/replace:
|
||||
|
||||
@@ -6,6 +6,7 @@ COMMON_LIC_CHKSUM = ""
|
||||
COMMON_LIC_CHKSUM_CLOSED = ""
|
||||
COMMON_LIC_CHKSUM_GPL-2.0 = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
|
||||
COMMON_LIC_CHKSUM_GPL-3.0 = "file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
|
||||
COMMON_LIC_CHKSUM_GPL-3.0-with-GCC-exception = "file://${COREBASE}/meta/files/common-licenses/GPL-3.0-with-GCC-exception;md5=aef5f35c9272f508be848cd99e0151df"
|
||||
COMMON_LIC_CHKSUM_LGPL-2.1 = "file://${COREBASE}/meta/files/common-licenses/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780"
|
||||
|
||||
|
||||
@@ -14,15 +15,20 @@ python () {
|
||||
|
||||
#; Set LIC_FILES_CHKSUM to a common license if it's unset and LICENSE is set
|
||||
licensestr = d.getVar('LICENSE', True)
|
||||
for pkg in d.getVar('PACKAGES', True).split():
|
||||
pkg_lic = d.getVar('LICENSE_%s' % pkg, True)
|
||||
if pkg_lic:
|
||||
licensestr += ' ' + pkg_lic
|
||||
|
||||
licenses = oe.license.flattened_licenses(licensestr, lambda a, b: a + b)
|
||||
checksums = []
|
||||
checksums = set()
|
||||
for license in licenses:
|
||||
if license != 'CLOSED' and d.getVar('LIC_FILES_CHKSUM', False) == '${COMMON_LIC_CHKSUM}':
|
||||
license = mapped_license(license, d)
|
||||
|
||||
ext_chksum_var = 'COMMON_LIC_CHKSUM_{0}'.format(license)
|
||||
if d.getVar(ext_chksum_var, True):
|
||||
checksums.append('${%s}' % ext_chksum_var)
|
||||
checksums.add('${%s}' % ext_chksum_var)
|
||||
else:
|
||||
lic_file_name = '${COREBASE}/meta/files/common-licenses/%s' % license
|
||||
lic_file = d.expand(lic_file_name)
|
||||
|
||||
@@ -30,6 +30,7 @@ PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils ?= "binutils-external-cross-
|
||||
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs ?= "gcc-runtime-external"
|
||||
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc ?= "glibc-external"
|
||||
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-external"
|
||||
PREFERRED_PROVIDER_gcc-sanitizers ?= "gcc-sanitizers-external"
|
||||
PREFERRED_PROVIDER_glibc ?= "glibc-external"
|
||||
PREFERRED_PROVIDER_virtual/libc ?= "glibc-external"
|
||||
PREFERRED_PROVIDER_virtual/libintl ?= "glibc-external"
|
||||
@@ -55,6 +56,7 @@ PNBLACKLIST[gcc-cross] = "not building with an external toolchain"
|
||||
PNBLACKLIST[gcc-cross-initial] = "not building with an external toolchain"
|
||||
PNBLACKLIST[gcc-cross-intermediate] = "not building with an external toolchain"
|
||||
PNBLACKLIST[gcc-runtime] = "not building with an external toolchain"
|
||||
PNBLACKLIST[gcc-sanitizers] = "not building with an external toolchain"
|
||||
PNBLACKLIST[libgcc-initial] = "not building with an external toolchain"
|
||||
PNBLACKLIST[libgcc] = "not building with an external toolchain"
|
||||
PNBLACKLIST[linux-libc-headers] = "not building with an external toolchain"
|
||||
|
||||
@@ -1,114 +1,55 @@
|
||||
inherit external-toolchain
|
||||
|
||||
SUMMARY = "The GNU Compiler Collection - gcc runtime libraries"
|
||||
HOMEPAGE = "http://www.gnu.org/software/gcc/"
|
||||
SECTION = "devel"
|
||||
GCC_VERSION := "${@external_run(d, 'gcc', '-dumpversion').rstrip()}"
|
||||
PV = "${GCC_VERSION}"
|
||||
BINV = "${GCC_VERSION}"
|
||||
|
||||
DEPENDS += "libgcc"
|
||||
PROVIDES += "virtual/${TARGET_PREFIX}compilerlibs"
|
||||
require recipes-devtools/gcc/gcc-runtime.inc
|
||||
inherit external-toolchain
|
||||
|
||||
PACKAGES =+ "\
|
||||
libstdc++ \
|
||||
libstdc++-dev \
|
||||
libstdc++-staticdev \
|
||||
libatomic \
|
||||
libatomic-dev \
|
||||
libatomic-staticdev \
|
||||
libasan \
|
||||
libasan-dev \
|
||||
libasan-staticdev \
|
||||
liblsan \
|
||||
liblsan-dev \
|
||||
liblsan-staticdev \
|
||||
libubsan \
|
||||
libubsan-dev \
|
||||
libubsan-staticdev \
|
||||
libtsan \
|
||||
libtsan-dev \
|
||||
libtsan-staticdev \
|
||||
libg2c \
|
||||
libg2c-dev \
|
||||
libg2c-staticdev \
|
||||
libfortran \
|
||||
libfortran-dev \
|
||||
libfortran-staticdev \
|
||||
libmudflap \
|
||||
libmudflap-dev \
|
||||
libmudflap-staticdev \
|
||||
libquadmath \
|
||||
libquadmath-dev \
|
||||
libquadmath-staticdev \
|
||||
libssp \
|
||||
libssp-dev \
|
||||
libssp-staticdev \
|
||||
libgomp \
|
||||
libgomp-dev \
|
||||
libgomp-staticdev \
|
||||
libitm \
|
||||
libitm-dev \
|
||||
libitm-staticdev \
|
||||
"
|
||||
# GCC >4.2 is GPLv3
|
||||
LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
|
||||
DEPENDS = "libgcc"
|
||||
EXTRA_OECONF = ""
|
||||
python () {
|
||||
lic_deps = d.getVarFlag('do_populate_lic', 'depends', True).split()
|
||||
d.setVarFlag('do_populate_lic', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_unpack', lic_deps)))
|
||||
|
||||
SUMMARY_libitm = "The Transactional Memory runtime library"
|
||||
SUMMARY_libitm-dev = "${SUMMARY_libitm} - development files"
|
||||
cfg_deps = d.getVarFlag('do_configure', 'depends', True).split()
|
||||
d.setVarFlag('do_configure', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_preconfigure', cfg_deps)))
|
||||
}
|
||||
|
||||
target_libdir = "${libdir}"
|
||||
HEADERS_MULTILIB_SUFFIX ?= "${@external_run(d, 'gcc', *(TARGET_CC_ARCH.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
|
||||
external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
|
||||
FILES_MIRRORS =. "\
|
||||
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/|${external_libroot}/\n \
|
||||
${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}${HEADERS_MULTILIB_SUFFIX}/\n \
|
||||
${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/\n \
|
||||
"
|
||||
|
||||
FILES_libstdc++ = "${libdir}/libstdc++${SOLIBS}"
|
||||
FILES_libstdc++-dev = "${libdir}/libstdc++${SOLIBSDEV} \
|
||||
${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}"
|
||||
FILES_libstdc++-staticdev = "${libdir}/libstdc++.a \
|
||||
${libdir}/libsupc++.a"
|
||||
FILES_libatomic = "${libdir}/libatomic${SOLIBS}"
|
||||
FILES_libatomic-dev = "${libdir}/libatomic${SOLIBSDEV}"
|
||||
FILES_libatomic-staticdev = "${libdir}/libatomic.a"
|
||||
FILES_libasan = "${libdir}/libasan${SOLIBS}"
|
||||
FILES_libasan-dev = "${libdir}/libasan${SOLIBSDEV}"
|
||||
FILES_libasan-staticdev = "${libdir}/libasan.a"
|
||||
FILES_liblsan = "${libdir}/liblsan${SOLIBS}"
|
||||
FILES_liblsan-dev = "${libdir}/liblsan${SOLIBSDEV}"
|
||||
FILES_liblsan-staticdev = "${libdir}/liblsan.a"
|
||||
FILES_libubsan = "${libdir}/libubsan${SOLIBS}"
|
||||
FILES_libubsan-dev = "${libdir}/libubsan${SOLIBSDEV}"
|
||||
FILES_libubsan-staticdev = "${libdir}/libubsan.a"
|
||||
FILES_libtsan = "${libdir}/libtsan${SOLIBS}"
|
||||
FILES_libtsan-dev = "${libdir}/libtsan${SOLIBSDEV}"
|
||||
FILES_libtsan-staticdev = "${libdir}/libtsan.a"
|
||||
FILES_libg2c = "${libdir}/libg2c${SOLIBS}"
|
||||
FILES_libg2c-dev = "${libdir}/libg2c${SOLIBSDEV}"
|
||||
FILES_libg2c-staticdev = "${libdir}/libg2c.a"
|
||||
FILES_libfortran = "${libdir}/libfortran${SOLIBS}"
|
||||
FILES_libfortran-dev = "${libdir}/libfortran${SOLIBSDEV}"
|
||||
FILES_libfortran-staticdev = "${libdir}/libfortran.a"
|
||||
FILES_libmudflap = "${libdir}/libmudflap${SOLIBS}"
|
||||
FILES_libmudflap-dev = "${libdir}/libmudflap${SOLIBSDEV}"
|
||||
FILES_libmudflap-staticdev = "${libdir}/libmudflap.a"
|
||||
FILES_libquadmath = "${libdir}/libquadmath${SOLIBS}"
|
||||
FILES_libquadmath-dev = "${libdir}/libquadmath${SOLIBSDEV} \
|
||||
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/quadmath*"
|
||||
FILES_libquadmath-staticdev = "${libdir}/libquadmath.a"
|
||||
FILES_libssp = "${libdir}/libssp${SOLIBS}"
|
||||
FILES_libssp-dev = "${libdir}/libssp${SOLIBSDEV} \
|
||||
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/ssp"
|
||||
FILES_libssp-staticdev = "${libdir}/libssp.a"
|
||||
FILES_libgomp = "${libdir}/libgomp${SOLIBS}"
|
||||
FILES_libgomp-dev = "${libdir}/libgomp${SOLIBSDEV} \
|
||||
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/omp.h"
|
||||
FILES_libgomp-staticdev = "${libdir}/libgomp.a"
|
||||
FILES_libitm = "${libdir}/libitm${SOLIBS}"
|
||||
FILES_libitm-dev = "${libdir}/libitm${SOLIBSDEV}"
|
||||
FILES_libitm-staticdev = "${libdir}/libitm.a"
|
||||
do_install_extra () {
|
||||
if [ "${TARGET_SYS}" != "${EXTERNAL_TARGET_SYS}" ]; then
|
||||
if [ -d "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}" ]; then
|
||||
mv -v "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/." "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
|
||||
fi
|
||||
fi
|
||||
|
||||
FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx \
|
||||
${datadir}/gcc-${GCC_VERSION}/python/libstdcxx"
|
||||
# Clear out the unused c++ header multilibs
|
||||
multilib="${HEADERS_MULTILIB_SUFFIX}"
|
||||
for path in ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/*; do
|
||||
case ${path##*/} in
|
||||
${multilib#/})
|
||||
mv -v "$path/"* "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
|
||||
;;
|
||||
esac
|
||||
rm -rfv "$path"
|
||||
done
|
||||
}
|
||||
|
||||
do_package[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
|
||||
FILES_libstdc++-dev = "\
|
||||
${includedir}/c++ \
|
||||
${libdir}/libstdc++.so \
|
||||
${libdir}/libstdc++.la \
|
||||
${libdir}/libsupc++.la \
|
||||
"
|
||||
BBCLASSEXTEND = ""
|
||||
|
||||
18
recipes-external/gcc/gcc-sanitizers-external.bb
Normal file
18
recipes-external/gcc/gcc-sanitizers-external.bb
Normal file
@@ -0,0 +1,18 @@
|
||||
GCC_VERSION := "${@external_run(d, 'gcc', '-dumpversion').rstrip()}"
|
||||
PV = "${GCC_VERSION}"
|
||||
BINV = "${GCC_VERSION}"
|
||||
|
||||
require recipes-devtools/gcc/gcc-sanitizers.inc
|
||||
inherit external-toolchain
|
||||
|
||||
# Undo various bits we don't want from the upstream include
|
||||
EXTRA_OECONF = ""
|
||||
BBCLASSEXTEND = ""
|
||||
|
||||
python () {
|
||||
lic_deps = d.getVarFlag('do_populate_lic', 'depends', True).split()
|
||||
d.setVarFlag('do_populate_lic', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_unpack', lic_deps)))
|
||||
|
||||
cfg_deps = d.getVarFlag('do_configure', 'depends', True).split()
|
||||
d.setVarFlag('do_configure', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_preconfigure', cfg_deps)))
|
||||
}
|
||||
@@ -6,6 +6,7 @@ PV = "${GCC_VERSION}"
|
||||
|
||||
inherit external-toolchain
|
||||
|
||||
LICENSE = "GPL-3.0-with-GCC-exception"
|
||||
PACKAGES =+ "libgcov-dev"
|
||||
|
||||
external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
|
||||
@@ -29,7 +30,6 @@ FILES_${PN}-dbg += "${base_libdir}/.debug/libgcc_s.so.*.debug"
|
||||
FILES_libgcov-dev = "${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/libgcov.a"
|
||||
INSANE_SKIP_libgcov-dev += "staticdev"
|
||||
|
||||
|
||||
do_package[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
|
||||
|
||||
@@ -24,6 +24,26 @@ PROVIDES += "glibc \
|
||||
virtual/libintl \
|
||||
virtual/libiconv"
|
||||
|
||||
def get_external_libc_license(d):
|
||||
sysroot = d.getVar('EXTERNAL_TOOLCHAIN_SYSROOT', True)
|
||||
incpath = os.path.join(sysroot, d.getVar('includedir', True)[1:])
|
||||
errnopath = os.path.join(incpath, 'errno.h')
|
||||
|
||||
with open(errnopath, 'rU') as f:
|
||||
text = f.read()
|
||||
|
||||
lictext = """ The GNU C Library 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
|
||||
version 2.1 of the License, or (at your option) any later version."""
|
||||
|
||||
if lictext in text:
|
||||
return 'LGPL-2.1+'
|
||||
|
||||
return 'UNKNOWN'
|
||||
|
||||
LICENSE := "${@get_external_libc_license(d)}"
|
||||
|
||||
require recipes-external/glibc/glibc-sysroot-setup.inc
|
||||
require recipes-external/glibc/glibc-package-adjusted.inc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user