Merge pull request #69 from kergoth/sb-5005

Quiet external toolchain license warnings
This commit is contained in:
Christopher Larson
2015-05-01 10:42:14 -07:00
7 changed files with 92 additions and 103 deletions

View File

@@ -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:

View File

@@ -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)

View File

@@ -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"

View File

@@ -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 = ""

View 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)))
}

View File

@@ -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"

View File

@@ -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