Re: [gentoo-portage-dev] prefix portage chaining
On Wed, 2009-03-25 at 11:44 -0700, Ned Ludd wrote: [snip] While much of what you are talking about here mainly applies to prefix, it looks to me from glancing over the code that you might of solved a long standing problem in the embedded world with cross compiling via portage. 222895 If that is the case, then I owe you a beer. one about the size of a keg. lol, thx for the beer ;) hmm... looking over that patch again, the only EPREFIX dependent thing is, that i'm removing EPREFIX from the vartree class again :) so this should pretty much plain apply to main too, and simply work. you may want to rename READONLY_EPREFIX to READONLY_ROOT, but thats it :) the other stuff besides portage modification (baselayout patchery, etc. is prefix specific again, so all you'd need is the portage changes. if you will try it, please let me know if it worked :) with the attached patch sed -i -e 's,READONLY_EPREFIX,READONLY_ROOT,g', and applying to an installed /usr/lib/portage should enable you to do it. (backup /usr/lib/portage - i trust my work, but... we never know for sure :)) then add to make.conf: READONLY_ROOT=/my/other/root:DEPEND i hope this is what you where looking for...! and i hope it doesn't somehow clash with the existing cross compile logic in portage regarding where to merge to... Cheers, Markus diff -ru portage.orig/bin/ebuild.sh portage/bin/ebuild.sh --- portage.orig/bin/ebuild.sh 2009-03-24 16:44:15.0 +0100 +++ portage/bin/ebuild.sh 2009-03-25 07:32:07.0 +0100 @@ -69,7 +69,38 @@ # Unset some variables that break things. unset GZIP BZIP BZIP2 CDPATH GREP_OPTIONS GREP_COLOR GLOBIGNORE -export PATH=${DEFAULT_PATH}:$PORTAGE_BIN_PATH/ebuild-helpers:${ROOTPATH} +if [[ -n ${PORTAGE_READONLY_EROOTS} ]]; then + new_PATH=$PORTAGE_BIN_PATH/ebuild-helpers:${ROOTPATH} + + save_IFS=$IFS + IFS=':' + + for eroot in ${PORTAGE_READONLY_EROOTS}:${EPREFIX}; do + IFS=$save_IFS + [[ -f ${eroot}/usr/share/portage/config/make.globals ]] || continue + defpath=$(. ${eroot}/etc/make.globals echo $DEFAULT_PATH) + okpath= + save_IFS2=$IFS + IFS=':' + for p in $defpath; do + IFS=$save_IFS2 + [[ :${new_PATH}: == *:$p:* ]] continue + if [[ -z ${okpath} ]]; then +okpath=${p} + else +okpath=${okpath}:${p} + fi + done + IFS=$save_IFS2 + + new_PATH=${okpath}:${new_PATH} + done + IFS=$save_IFS + + export PATH=$new_PATH +else + export PATH=${DEFAULT_PATH}:$PORTAGE_BIN_PATH/ebuild-helpers:${ROOTPATH} +fi [ ! -z $PREROOTPATH ] export PATH=${PREROOTPATH%%:}:$PATH source ${PORTAGE_BIN_PATH}/isolated-functions.sh /dev/null diff -ru portage.orig/pym/_emerge/__init__.py portage/pym/_emerge/__init__.py --- portage.orig/pym/_emerge/__init__.py 2009-03-24 16:43:02.0 +0100 +++ portage/pym/_emerge/__init__.py 2009-03-24 16:42:51.0 +0100 @@ -5269,17 +5269,18 @@ edepend[DEPEND] = deps = ( - (/, edepend[DEPEND], + (/, DEPEND, self._priority(buildtime=(not bdeps_optional), optional=bdeps_optional)), - (myroot, edepend[RDEPEND], self._priority(runtime=True)), - (myroot, edepend[PDEPEND], self._priority(runtime_post=True)) + (myroot, RDEPEND, self._priority(runtime=True)), + (myroot, PDEPEND, self._priority(runtime_post=True)) ) debug = --debug in self.myopts strict = mytype != installed try: - for dep_root, dep_string, dep_priority in deps: + for dep_root, dep_type, dep_priority in deps: +dep_string = edepend[dep_type] if not dep_string: continue if debug: @@ -5289,9 +5290,11 @@ print Priority:, dep_priority vardb = self.roots[dep_root].trees[vartree].dbapi try: + # MDUFT: selected_atoms will not contain anything + # that can be resolved from a readonly root! selected_atoms = self._select_atoms(dep_root, dep_string, myuse=myuse, parent=pkg, strict=strict, - priority=dep_priority) + priority=dep_priority, dep_type=dep_type) except portage.exception.InvalidDependString, e: show_invalid_depstring_notice(jbigkey, dep_string, str(e)) return 0 @@ -5916,12 +5919,18 @@ return self._select_atoms_highest_available(*pargs, **kwargs) def _select_atoms_highest_available(self, root, depstring, - myuse=None, parent=None, strict=True, trees=None, priority=None): + myuse=None, parent=None, strict=True, trees=None, priority=None, dep_type=None): This will raise InvalidDependString if necessary. If trees is None then self._filtered_trees is used. pkgsettings = self.pkgsettings[root] if trees is None: trees = self._filtered_trees + + # this one is needed to guarantee good readonly root + # resolution display in the merge list. required since + # parent (below) can be None + trees[root][disp_parent] = parent + if not getattr(priority, buildtime, False): # The parent should only be passed to dep_check() for buildtime # dependencies since that's the only case when it's appropriate @@ -5938,7 +5947,7 @@
Re: [gentoo-portage-dev] prefix portage chaining
On Thu, 2009-03-26 at 08:26 +0100, Markus Duft wrote: On Wed, 2009-03-25 at 11:44 -0700, Ned Ludd wrote: While much of what you are talking about here mainly applies to prefix, it looks to me from glancing over the code that you might of solved a long standing problem in the embedded world with cross compiling via portage. 222895 If that is the case, then I owe you a beer. one about the size of a keg. hmm... looking over that patch again, the only EPREFIX dependent thing is, that i'm removing EPREFIX from the vartree class again :) so this should pretty much plain apply to main too, and simply work. you may want to rename READONLY_EPREFIX to READONLY_ROOT, but thats it :) then add to make.conf: READONLY_ROOT=/my/other/root:DEPEND IMO, for non-prefix this is useful for [[ $ROOT != '/' ]] only, with either CHOST (root=$ROOT) being equal to CBUILD (root='/') or not. And the only two senseful values for READONLY_ROOT in make.conf are: 1. /:DEPEND To skip merging cmdline utilities (=DEPEND) to host-root (=$ROOT), by resolving them from build-root (='/'). 2. unset To merge all DEPENDs to host-root (=$ROOT), although they are still used from build-root (='/') during build. /haubi/ -- Michael Haubenwallner Gentoo on a different level
Re: [gentoo-portage-dev] prefix portage chaining
On Thu, 2009-03-26 at 08:26 +0100, Markus Duft wrote: On Wed, 2009-03-25 at 11:44 -0700, Ned Ludd wrote: [snip] While much of what you are talking about here mainly applies to prefix, it looks to me from glancing over the code that you might of solved a long standing problem in the embedded world with cross compiling via portage. 222895 If that is the case, then I owe you a beer. one about the size of a keg. lol, thx for the beer ;) hmm... looking over that patch again, the only EPREFIX dependent thing is, that i'm removing EPREFIX from the vartree class again :) so this should pretty much plain apply to main too, and simply work. you may want to rename READONLY_EPREFIX to READONLY_ROOT, but thats it :) the other stuff besides portage modification (baselayout patchery, etc. is prefix specific again, so all you'd need is the portage changes. if you will try it, please let me know if it worked :) with the attached patch sed -i -e 's,READONLY_EPREFIX,READONLY_ROOT,g', and applying to an installed /usr/lib/portage should enable you to do it. (backup /usr/lib/portage - i trust my work, but... we never know for sure :)) then add to make.conf: READONLY_ROOT=/my/other/root:DEPEND i hope this is what you where looking for...! and i hope it doesn't somehow clash with the existing cross compile logic in portage regarding where to merge to... Cheers, Markus patch failed a few hunks for me on ~arch vanilla-portage. I did point out the patch to one of the gentoo embedded/openmoko guys. Think they will be the most eager to test this. In our case if the code did work out whatever you call READONLY_ROOT we would probably need to expand to allow for more that one ROOT if it has to be defined in the parent /etc/make.conf -- Ned Ludd so...@gentoo.org Gentoo Linux
Re: [gentoo-portage-dev] prefix portage chaining
On 20-03-2009 11:35:09 +0100, Markus Duft wrote: i'll try and explain what i want in the first place: i'm porting things to native windows. since windows isn't too cooperative, i'm unable to merge most things (and with other things, i simply don't want to), and thus i need to take those things from somewhere else (more or less the complete @system). I _am_ able to build all those things for interix (which is the host system in the windows case). So what i want is a setup of two prefix instances with a certain relation to each other: the native windows prefix should be able to recognize installed packages from the other instance, and resolve dependencies by eventually using the other .../var/db/... Since Windows and Interix seem to be two different things to me, can you explain why in this case Portage can resolve the dependencies from the Interix system to use for the Windows system? What dependencies are we talking about? Build tools? Libraries? Runtime dependencies? This could be (and is) quite usefull for all other platforms too. For exmaple i could use prefix chaining on a linux box. I could create a prefix containing a base system, and then for testing of i-don't-know-whatever, i could create another small prefix inheriting all installed packages from the other one. this way new prefixes can stay very slim, but still the parent prefix is not altered on merges. That potentially is useful, in the case where you want to upgrade a critical system package and test it out or something. Can't think of an example other than Portage itself for the moment, though. (And that one can be hairy, for instance if the vdb format changes NEEDED - NEEDED.ELF.2) one issue not handled by the current patch is, that prefixes can have different CHOST/ARCH/... (which is the case with x86-interix and x86-winnt for example). Then how does it work for you? -- Fabian Groffen Gentoo on a different level
Re: [gentoo-portage-dev] prefix portage chaining
On Wed, 2009-03-25 at 12:00 +0100, Fabian Groffen wrote: On 20-03-2009 11:35:09 +0100, Markus Duft wrote: i'll try and explain what i want in the first place: i'm porting things to native windows. since windows isn't too cooperative, i'm unable to merge most things (and with other things, i simply don't want to), and thus i need to take those things from somewhere else (more or less the complete @system). I _am_ able to build all those things for interix (which is the host system in the windows case). So what i want is a setup of two prefix instances with a certain relation to each other: the native windows prefix should be able to recognize installed packages from the other instance, and resolve dependencies by eventually using the other .../var/db/... Since Windows and Interix seem to be two different things to me, can you explain why in this case Portage can resolve the dependencies from the Interix system to use for the Windows system? What dependencies are we talking about? Build tools? Libraries? Runtime dependencies? i'm using it to resolve DEPEND atoms only. of course my notion of valid DEPENDs and RDEPENDs is influenced by this, and i'm alergic against RDEPEND=$DEPEND and such :) since it doesn't work in this setup. however right now most things i need don't make too much problems. This could be (and is) quite usefull for all other platforms too. For exmaple i could use prefix chaining on a linux box. I could create a prefix containing a base system, and then for testing of i-don't-know-whatever, i could create another small prefix inheriting all installed packages from the other one. this way new prefixes can stay very slim, but still the parent prefix is not altered on merges. That potentially is useful, in the case where you want to upgrade a critical system package and test it out or something. Can't think of an example other than Portage itself for the moment, though. (And that one can be hairy, for instance if the vdb format changes NEEDED - NEEDED.ELF.2) ++ :) one issue not handled by the current patch is, that prefixes can have different CHOST/ARCH/... (which is the case with x86-interix and x86-winnt for example). Then how does it work for you? as i said, i'm using DEPENDs only from the other prefix with the different CHOST/ARCH. this works, since on interix i can execute windows binaries, and vice versa (limited). the patch i proposed here and on gentoo-alt@ (btw. i have a fixed version lying around since a few minutes ...) allows the user to set which atoms should be resolve-able from the chain. for exmaple for windows i'm doing this in /my/winnt/prefix/etc/make.conf: READONLY_EROOT=/my/interix/prefix:DEPEND on linux, if both prefixes are x86-linux for example i could to in /my/prefix/two/etc/make.conf: READONLY_EROOT=/my/prefix/one:DEPEND,RDEPEND (btw. this forces PDEPENDs to merge in /my/prefix/two. i guess most of the time this makes sense, since with a PDEPEND from a lib, i want the PDEPEND package to link against this lib... you know what i mean? of course PDEPEND can still be added to the above list...) (btw2. the name READONLY_EROOT is discussed on gentoo-alt@ already, so i won't comment on it beeing cool/uncool here... ;) ) Cheers, Markus
Re: [gentoo-portage-dev] prefix portage chaining
On Wed, 2009-03-25 at 14:14 +0100, Markus Duft wrote: On Wed, 2009-03-25 at 12:00 +0100, Fabian Groffen wrote: On 20-03-2009 11:35:09 +0100, Markus Duft wrote: i'll try and explain what i want in the first place: i'm porting things to native windows. since windows isn't too cooperative, i'm unable to merge most things (and with other things, i simply don't want to), and thus i need to take those things from somewhere else (more or less the complete @system). I _am_ able to build all those things for interix (which is the host system in the windows case). So what i want is a setup of two prefix instances with a certain relation to each other: the native windows prefix should be able to recognize installed packages from the other instance, and resolve dependencies by eventually using the other .../var/db/... Since Windows and Interix seem to be two different things to me, can you explain why in this case Portage can resolve the dependencies from the Interix system to use for the Windows system? What dependencies are we talking about? Build tools? Libraries? Runtime dependencies? i'm using it to resolve DEPEND atoms only. of course my notion of valid DEPENDs and RDEPENDs is influenced by this, and i'm alergic against RDEPEND=$DEPEND and such :) since it doesn't work in this setup. however right now most things i need don't make too much problems. This could be (and is) quite usefull for all other platforms too. For exmaple i could use prefix chaining on a linux box. I could create a prefix containing a base system, and then for testing of i-don't-know-whatever, i could create another small prefix inheriting all installed packages from the other one. this way new prefixes can stay very slim, but still the parent prefix is not altered on merges. That potentially is useful, in the case where you want to upgrade a critical system package and test it out or something. Can't think of an example other than Portage itself for the moment, though. (And that one can be hairy, for instance if the vdb format changes NEEDED - NEEDED.ELF.2) ++ :) one issue not handled by the current patch is, that prefixes can have different CHOST/ARCH/... (which is the case with x86-interix and x86-winnt for example). Then how does it work for you? as i said, i'm using DEPENDs only from the other prefix with the different CHOST/ARCH. this works, since on interix i can execute windows binaries, and vice versa (limited). the patch i proposed here and on gentoo-alt@ (btw. i have a fixed version lying around since a few minutes ...) allows the user to set which atoms should be resolve-able from the chain. for exmaple for windows i'm doing this in /my/winnt/prefix/etc/make.conf: READONLY_EROOT=/my/interix/prefix:DEPEND on linux, if both prefixes are x86-linux for example i could to in /my/prefix/two/etc/make.conf: READONLY_EROOT=/my/prefix/one:DEPEND,RDEPEND (btw. this forces PDEPENDs to merge in /my/prefix/two. i guess most of the time this makes sense, since with a PDEPEND from a lib, i want the PDEPEND package to link against this lib... you know what i mean? of course PDEPEND can still be added to the above list...) (btw2. the name READONLY_EROOT is discussed on gentoo-alt@ already, so i won't comment on it beeing cool/uncool here... ;) ) Cheers, Markus \ While much of what you are talking about here mainly applies to prefix, it looks to me from glancing over the code that you might of solved a long standing problem in the embedded world with cross compiling via portage. 222895 If that is the case, then I owe you a beer. one about the size of a keg. -- Ned Ludd so...@gentoo.org Gentoo Linux
Re: [gentoo-portage-dev] prefix portage chaining
On Mon, 2009-03-23 at 08:27 +0100, Markus Duft wrote: On Fri, 2009-03-20 at 12:11 +0100, Markus Duft wrote: On Fri, 2009-03-20 at 11:35 +0100, Markus Duft wrote: Hey guys :) Just wanted to stop by and get some opinions on a patch i wrote for the prefix branch. [snip] Hey there. Seemingly nobody has any comments on this..? :) here's a working version of the patch. i realized that the last one worked only by accident :) maybe now, some comments (or questions)? i'm eager to find out how many times i can forget to attach the patch :) sorry for the noise Cheers, Markus Thanks, Cheers, Markus [snip] Waiting for comments, suggestions, etc. Thanks in advance, Cheers, Markus diff -ru portage.orig/pym/_emerge/__init__.py portage/pym/_emerge/__init__.py --- portage.orig/pym/_emerge/__init__.py 2009-03-18 10:13:34.0 +0100 +++ portage/pym/_emerge/__init__.py 2009-03-23 08:46:59.0 +0100 @@ -49,7 +49,7 @@ import portage.xpak, commands, errno, re, socket, time from portage.output import blue, bold, colorize, darkblue, darkgreen, darkred, green, \ nc_len, red, teal, turquoise, xtermTitle, \ - xtermTitleReset, yellow + xtermTitleReset, yellow, purple from portage.output import create_color_func good = create_color_func(GOOD) bad = create_color_func(BAD) @@ -69,6 +69,7 @@ from portage.util import cmp_sort_key, writemsg, writemsg_level from portage.sets import load_default_config, SETPREFIX from portage.sets.base import InternalPackageSet +from portage.dbapi.vartree import vartree from itertools import chain, izip @@ -4692,6 +4693,7 @@ self._unsatisfied_deps_for_display = [] self._unsatisfied_blockers_for_display = None self._circular_deps_for_display = None + self._injected_readonly_deps_for_display = [] self._dep_stack = [] self._unsatisfied_deps = [] self._initially_unsatisfied_deps = [] @@ -5270,18 +5272,35 @@ if removal_action and self.myopts.get(--with-bdeps, y) == n: edepend[DEPEND] = + # MDUFT: create additional vartrees for every readonly root here + # (maybe FakeVartree's?). Then below search those trees and set + # mypriority.satisfied to True. + # the ro_vartrees instances are created below as they are needed to + # avoid reading vartrees of portage instances which aren't required + # while resolving this dependencies. + ro_trees = {} + ro_vartrees = {} + + for type in (DEPEND,RDEPEND, PDEPEND): + ro_trees[type] = [] + + for ro_root, ro_dep_types in self.settings.readonly_roots.items(): +if type in ro_dep_types: + ro_trees[type].append(ro_root) + deps = ( - (/, edepend[DEPEND], + (/, DEPEND, self._priority(buildtime=(not bdeps_optional), optional=bdeps_optional)), - (myroot, edepend[RDEPEND], self._priority(runtime=True)), - (myroot, edepend[PDEPEND], self._priority(runtime_post=True)) + (myroot, RDEPEND, self._priority(runtime=True)), + (myroot, PDEPEND, self._priority(runtime_post=True)) ) debug = --debug in self.myopts strict = mytype != installed try: - for dep_root, dep_string, dep_priority in deps: + for dep_root, dep_type, dep_priority in deps: +dep_string = edepend[dep_type] if not dep_string: continue if debug: @@ -5309,6 +5328,43 @@ if not atom.blocker and vardb.match(atom): mypriority.satisfied = True + # MDUFT: How erver we do it - if we find atom beeing installed + # in a valid readonly root for the current dependency type, then + # _DONT_ call the below, but rather return 1 immediately. + ro_matched = False + for ro_root in ro_trees[dep_type]: + if not ro_vartrees.has_key(ro_root): +# target_root=ro_root ok? or should it be the real target_root? +_tmp_settings = portage.config(config_root=ro_root, target_root=ro_root, + config_incrementals=portage.const.INCREMENTALS) +#_tmp_trees = portage.util.LazyItemsDict() +#_tmp_trees.addLazySingleton(vartree, vartree, ro_root, +# categories=_tmp_settings.categories, settings=_tmp_settings) + +#setconfig = load_default_config(_tmp_trees[vartree].settings, _tmp_trees) +#ro_vartrees[ro_root] = FakeVartree(RootConfig(_tmp_trees[vartree].settings, +# _tmp_trees, setconfig), acquire_lock=0) + +ro_vartrees[ro_root] = vartree(root=ro_root, categories=_tmp_settings.categories, + settings=_tmp_settings, kill_eprefix=True) + + ro_matches = ro_vartrees[ro_root].dbapi.match(atom) + + if ro_matches: +if dep_type is RDEPEND: + # we need to assure binary compatability, so it needs to be + # the same CHOST! But how? for now i cannot do anything... + pass + +# injected dep for display. those get shown with the merge list. +self._injected_readonly_deps_for_display.append({ro_root : ro_root, atom : atom, + matches: ro_matches, type:
Re: [gentoo-portage-dev] prefix portage chaining
On Fri, 2009-03-20 at 11:35 +0100, Markus Duft wrote: Hey guys :) Just wanted to stop by and get some opinions on a patch i wrote for the prefix branch. argh... managed to fail to attach the patch _again_ :) at least i managed to add the output stuff i mentioned before to the patch in the meantime. so this patch should be pretty much complete. Thanks and Cheers, Markus i'll try and explain what i want in the first place: i'm porting things to native windows. since windows isn't too cooperative, i'm unable to merge most things (and with other things, i simply don't want to), and thus i need to take those things from somewhere else (more or less the complete @system). I _am_ able to build all those things for interix (which is the host system in the windows case). So what i want is a setup of two prefix instances with a certain relation to each other: the native windows prefix should be able to recognize installed packages from the other instance, and resolve dependencies by eventually using the other .../var/db/... This could be (and is) quite usefull for all other platforms too. For exmaple i could use prefix chaining on a linux box. I could create a prefix containing a base system, and then for testing of i-don't-know-whatever, i could create another small prefix inheriting all installed packages from the other one. this way new prefixes can stay very slim, but still the parent prefix is not altered on merges. one issue not handled by the current patch is, that prefixes can have different CHOST/ARCH/... (which is the case with x86-interix and x86-winnt for example). another thing is, that i plan to add some output in the merge list, telling the user, which packages have been readonly-resolved from another portage instance. right now the dependency is treated as if it didn't exist. all together, i'm pretty sure i did the one or the other forbidden thing in my patch, but that's why i'm asking the guys-who-know :) it was hard enough to read the portage source and get where i am, so i'm happy with the result ;) Waiting for comments, suggestions, etc. Thanks in advance, Cheers, Markus diff -ru portage.orig/pym/_emerge/__init__.py portage/pym/_emerge/__init__.py --- portage.orig/pym/_emerge/__init__.py 2009-03-18 10:13:34.0 +0100 +++ portage/pym/_emerge/__init__.py 2009-03-20 12:08:49.0 +0100 @@ -49,7 +49,7 @@ import portage.xpak, commands, errno, re, socket, time from portage.output import blue, bold, colorize, darkblue, darkgreen, darkred, green, \ nc_len, red, teal, turquoise, xtermTitle, \ - xtermTitleReset, yellow + xtermTitleReset, yellow, purple from portage.output import create_color_func good = create_color_func(GOOD) bad = create_color_func(BAD) @@ -69,6 +69,7 @@ from portage.util import cmp_sort_key, writemsg, writemsg_level from portage.sets import load_default_config, SETPREFIX from portage.sets.base import InternalPackageSet +from portage.dbapi.vartree import vartree from itertools import chain, izip @@ -4692,6 +4693,7 @@ self._unsatisfied_deps_for_display = [] self._unsatisfied_blockers_for_display = None self._circular_deps_for_display = None + self._injected_readonly_deps_for_display = [] self._dep_stack = [] self._unsatisfied_deps = [] self._initially_unsatisfied_deps = [] @@ -5270,18 +5272,35 @@ if removal_action and self.myopts.get(--with-bdeps, y) == n: edepend[DEPEND] = + # MDUFT: create additional vartrees for every readonly root here + # (maybe FakeVartree's?). Then below search those trees and set + # mypriority.satisfied to True. + # the ro_vartrees instances are created below as they are needed to + # avoid reading vartrees of portage instances which aren't required + # while resolving this dependencies. + ro_trees = {} + ro_vartrees = {} + + for type in (DEPEND,RDEPEND, PDEPEND): + ro_trees[type] = [] + + for ro_root, ro_dep_types in self.settings.readonly_roots.items(): +if type in ro_dep_types: + ro_trees[type].append(ro_root) + deps = ( - (/, edepend[DEPEND], + (/, DEPEND, self._priority(buildtime=(not bdeps_optional), optional=bdeps_optional)), - (myroot, edepend[RDEPEND], self._priority(runtime=True)), - (myroot, edepend[PDEPEND], self._priority(runtime_post=True)) + (myroot, RDEPEND, self._priority(runtime=True)), + (myroot, PDEPEND, self._priority(runtime_post=True)) ) debug = --debug in self.myopts strict = mytype != installed try: - for dep_root, dep_string, dep_priority in deps: + for dep_root, dep_type, dep_priority in deps: +dep_string = edepend[dep_type] if not dep_string: continue if debug: @@ -5309,6 +5328,32 @@ if not atom.blocker and vardb.match(atom): mypriority.satisfied = True + # MDUFT: How erver we do it - if we find atom beeing installed + # in a valid readonly root for the current dependency type, then + # _DONT_ call the