Re: [PATCH 2/4] opkg-utils: add update-alternatives PACKAGECONFIG

Robert Yang
2016-01-15T09:23:47Z

Hi Chris,

I've afraid this patch can't work well, when opkg-utils doesn't provide
virtual/update-alternatives, then chkconfig would be built and there would
be dependency loops for example,

PACKAGECONFIG = "python"
$ bitbake core-image-minimal

[snip]
ERROR:
Dependency loop #1 found:
Task 747
(/buildarea/lyang1/poky/meta/recipes-support/libpcre/libpcre_8.38.bb,
do_packagedata) (dependent Tasks ['libpcre, do_package'])
Task 2067 (/buildarea/lyang1/poky/meta/recipes-extended/slang/slang_2.2.4.bb,
do_package) (dependent Tasks ['gcc-runtime, do_packagedata', 'pseudo,
do_populate_sysroot', 'slang, do_install', 'libpcre, do_packagedata',
'libtool-cross, do_packagedata', 'glibc, do_packagedata', 'rpm,
do_populate_sysroot'])
Task 2064 (/buildarea/lyang1/poky/meta/recipes-extended/slang/slang_2.2.4.bb,
do_packagedata) (dependent Tasks ['slang, do_package'])
Task 1876
(/buildarea/lyang1/poky/meta/recipes-extended/newt/libnewt_0.52.18.bb,
do_package) (dependent Tasks ['slang, do_packagedata', 'gcc-runtime,
do_packagedata', 'pseudo, do_populate_sysroot', 'libnewt, do_install',
'libtool-cross, do_packagedata', 'glibc, do_packagedata', 'popt,
do_packagedata', 'rpm, do_populate_sysroot'])
Task 1873
(/buildarea/lyang1/poky/meta/recipes-extended/newt/libnewt_0.52.18.bb,
do_packagedata) (dependent Tasks ['libnewt, do_package'])
Task 1405
(/buildarea/lyang1/poky/meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb,
do_package) (dependent Tasks ['gcc-runtime, do_packagedata', 'pseudo,
do_populate_sysroot', 'glibc, do_packagedata', 'libnewt, do_packagedata',
'chkconfig, do_install', 'popt, do_packagedata', 'gettext, do_packagedata',
'rpm, do_populate_sysroot'])
Task 1402
(/buildarea/lyang1/poky/meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb,
do_packagedata) (dependent Tasks ['chkconfig, do_package'])
Task 853 (/buildarea/lyang1/poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb,
do_package) (dependent Tasks ['gcc-runtime, do_packagedata', 'bzip2,
do_install_ptest_base', 'bzip2, do_install', 'libtool-cross, do_packagedata',
'glibc, do_packagedata', 'pseudo, do_populate_sysroot', 'chkconfig,
do_packagedata', 'rpm, do_populate_sysroot'])
Task 850 (/buildarea/lyang1/poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb,
do_packagedata) (dependent Tasks ['bzip2, do_package'])
Task 750
(/buildarea/lyang1/poky/meta/recipes-support/libpcre/libpcre_8.38.bb,
do_package) (dependent Tasks ['libpcre, do_install_ptest_base', 'libpcre,
do_install', 'gcc-runtime, do_packagedata', 'pseudo, do_populate_sysroot',
'libtool-cross, do_packagedata', 'glibc, do_packagedata', 'bzip2,
do_packagedata', 'zlib, do_packagedata', 'rpm, do_populate_sysroot'])

[snip]

// Robert

On 11/13/2015 07:41 AM, Christopher Larson wrote:
> From: Christopher Larson <chris_larson@mentor.com>
>
> This lets someone use a different update-alternatives-native provider. Without
> this available, they'll step on one another in the sysroot unconditionally,
> since we need to build opkg-utils-native for ipk based builds regardless.
>
> Signed-off-by: Christopher Larson <chris_larson@mentor.com>
> ---
> meta/recipes-devtools/opkg-utils/opkg-utils_git.bb | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
> index 5f518d2..b242d1f 100644
> --- a/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
> +++ b/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
> @@ -5,7 +5,7 @@ HOMEPAGE = "http://code.google.com/p/opkg/"
> LICENSE = "GPLv2+"
> LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
> file://opkg.py;beginline=1;endline=18;md5=15917491ad6bf7acc666ca5f7cc1e083"
> -PROVIDES += "virtual/update-alternatives"
> +PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtual/update-alternatives', '', d)}"
>
> SRCREV = "53274f087565fd45d8452c5367997ba6a682a37a"
> PV = "0.1.8+git${SRCPV}"
> @@ -21,15 +21,21 @@ TARGET_CC_ARCH += "${LDFLAGS}"
> PYTHONRDEPS = "python python-shell python-io python-math python-crypt python-logging python-fcntl python-subprocess python-pickle python-compression python-textutils python-stringold"
> PYTHONRDEPS_class-native = ""
>
> -PACKAGECONFIG = "python"
> +PACKAGECONFIG = "python update-alternatives"
> PACKAGECONFIG[python] = ",,,${PYTHONRDEPS}"
> +PACKAGECONFIG[update-alternatives] = ",,,"
>
> do_install() {
> oe_runmake PREFIX=${prefix} DESTDIR=${D} install
> + if ! ${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'true', 'false', d)}; then
> + rm -f "${D}${bindir}/update-alternatives"
> + fi
> }
>
> do_install_append_class-target() {
> - sed -i ${D}${bindir}/update-alternatives -e 's,/usr/bin,${bindir},g; s,/usr/lib,${libdir},g'
> + if [ -e "${D}${bindir}/update-alternatives" ]; then
> + sed -i ${D}${bindir}/update-alternatives -e 's,/usr/bin,${bindir},g; s,/usr/lib,${libdir},g'
> + fi
> }
>
> PACKAGES =+ "update-alternatives-opkg"
>