From: Zac Medico Date: Fri, 3 Jun 2011 05:20:51 +0000 (-0700) Subject: autounmask-write: force configpro if non-existent X-Git-Tag: v2.2.0_alpha38~37 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=06e52616eb461c260ef8a006578babb04a4b5848;p=portage.git autounmask-write: force configpro if non-existent We want to force new_protect_filename to ensure that the user will see all our changes via etc-update, even if file_to_write_to doesn't exist yet. --- diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index b71d3648d..b60fd19fb 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -5846,7 +5846,12 @@ class depgraph(object): if file_contents is not None: file_contents.extend(changes) if protect_obj[root].isprotected(file_to_write_to): - file_to_write_to = new_protect_filename(file_to_write_to) + # We want to force new_protect_filename to ensure + # that the user will see all our changes via + # etc-update, even if file_to_write_to doesn't + # exist yet, so we specify force=True. + file_to_write_to = new_protect_filename(file_to_write_to, + force=True) try: write_atomic(file_to_write_to, "".join(file_contents)) except PortageException: diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 94e4451ad..138553a16 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -1473,9 +1473,11 @@ class ConfigProtect(object): masked = len(pmpath) return protected > masked -def new_protect_filename(mydest, newmd5=None): +def new_protect_filename(mydest, newmd5=None, force=False): """Resolves a config-protect filename for merging, optionally - using the last filename if the md5 matches. + using the last filename if the md5 matches. If force is True, + then a new filename will be generated even if mydest does not + exist yet. (dest,md5) ==> 'string' --- path_to_target_filename (dest) ==> ('next', 'highest') --- next_target and most-recent_target """ @@ -1489,7 +1491,8 @@ def new_protect_filename(mydest, newmd5=None): prot_num = -1 last_pfile = "" - if not os.path.exists(mydest): + if not force and \ + not os.path.exists(mydest): return mydest real_filename = os.path.basename(mydest)