diff --git a/conf/distro/include/tcmode-external.inc b/conf/distro/include/tcmode-external.inc index 7345618..599b214 100644 --- a/conf/distro/include/tcmode-external.inc +++ b/conf/distro/include/tcmode-external.inc @@ -17,9 +17,11 @@ PREFERRED_PROVIDER_virtual/libc ?= "glibc-external" PREFERRED_PROVIDER_virtual/libintl ?= "glibc-external" PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-external" PREFERRED_PROVIDER_virtual/crypt ?= "glibc-external" -PREFERRED_PROVIDER_gdbserver ??= "gdb" PREFERRED_PROVIDER_gdb-cross-${TARGET_ARCH} ?= "gdb-external-cross-${TARGET_ARCH}" PREFERRED_PROVIDER_oprofile ??= "oprofile" +# Work around bug where the implicitly created mlprefix preference isn't being +# obeyed for the runtime package installation. +PREFERRED_PROVIDER_${MLPREFIX}gdbserver ?= "${MLPREFIX}gdb" PREFERRED_PROVIDER_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} ??= "gcc-external-cross-canadian-${TRANSLATED_TARGET_ARCH}" PREFERRED_PROVIDER_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} ??= "binutils-external-cross-canadian-${TRANSLATED_TARGET_ARCH}" diff --git a/core/recipes-devtools/gdb/gdb_%.bbappend b/core/recipes-devtools/gdb/gdb_%.bbappend index 227cd75..b457f74 100644 --- a/core/recipes-devtools/gdb/gdb_%.bbappend +++ b/core/recipes-devtools/gdb/gdb_%.bbappend @@ -1,7 +1,6 @@ -PREFERRED_PROVIDER_gdbserver ?= "gdb" -PROVIDES_append_tcmode-external = " ${@'gdbserver' if '${PREFERRED_PROVIDER_gdbserver}' == '${PN}' else ''}" +PROVIDES_append_tcmode-external = " ${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' == '${PN}' else ''}" # Disable build of gdbserver if is provided by external-sourcery-toolchain -PACKAGES_remove_tcmode-external = "${@'gdbserver' if '${PREFERRED_PROVIDER_gdbserver}' != '${PN}' else ''}" -DISABLE_GDBSERVER = "${@'--disable-gdbserver' if '${PREFERRED_PROVIDER_gdbserver}' != '${PN}' else ''}" +PACKAGES_remove_tcmode-external = "${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' != '${PN}' else ''}" +DISABLE_GDBSERVER = "${@'--disable-gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' != '${PN}' else ''}" EXTRA_OECONF_append_tcmode-external = " ${DISABLE_GDBSERVER}" diff --git a/recipes-external/gcc/gcc-runtime-external.bb b/recipes-external/gcc/gcc-runtime-external.bb index db9ea3b..a2fdc8f 100644 --- a/recipes-external/gcc/gcc-runtime-external.bb +++ b/recipes-external/gcc/gcc-runtime-external.bb @@ -58,6 +58,17 @@ FILES_libgomp-dev += "\ " BBCLASSEXTEND = "" -RDEPENDS_libatomic += "${TCLIBC}" -RDEPENDS_libgomp += "${TCLIBC}" -RDEPENDS_libssp += "${TCLIBC}" +# gcc-runtime needs libc, but glibc's utilities need libssp in some cases, so +# short-circuit the interdependency here by manually specifying it rather than +# depending on the libc packagedata. +libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}" +RDEPENDS_libgomp += "${libc_rdep}" +RDEPENDS_libssp += "${libc_rdep}" +RDEPENDS_libstdc++ += "${libc_rdep}" +RDEPENDS_libatomic += "${libc_rdep}" +RDEPENDS_libquadmath += "${libc_rdep}" +RDEPENDS_libmpx += "${libc_rdep}" + +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" diff --git a/recipes-external/gdb/gdbserver-external.bb b/recipes-external/gdb/gdbserver-external.bb index 301800a..e4b8e1a 100644 --- a/recipes-external/gdb/gdbserver-external.bb +++ b/recipes-external/gdb/gdbserver-external.bb @@ -24,5 +24,5 @@ FILES_${PN}-doc = "${mandir}/man1/gdbserver.1" # Ensure that our rdeps are able to be set by shlibs processing do_package[depends] += "\ virtual/libc:do_packagedata \ - virtual/${TARGET_PREFIX}compilerlibs:do_packagedata \ + virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata \ " diff --git a/recipes-external/glibc/glibc-external.bb b/recipes-external/glibc/glibc-external.bb index af7c682..24dcbdf 100644 --- a/recipes-external/glibc/glibc-external.bb +++ b/recipes-external/glibc/glibc-external.bb @@ -226,5 +226,8 @@ do_package_write_ipk[depends] += "${MLPREFIX}libgcc:do_packagedata" do_package_write_deb[depends] += "${MLPREFIX}libgcc:do_packagedata" do_package_write_rpm[depends] += "${MLPREFIX}libgcc:do_packagedata" +# glibc may need libssp for -fstack-protector builds +do_packagedata[depends] += "gcc-runtime:do_packagedata" + FILES_${PN}-dev_remove = "${base_libdir}/*_nonshared.a ${libdir}/*_nonshared.a" FILES_${PN}-dev += "${libdir}/libc_nonshared.a ${libdir}/libpthread_nonshared.a ${libdir}/libmvec_nonshared.a"