Index: bin/dispatch-conf =================================================================== --- bin/dispatch-conf (revision 15364) +++ bin/dispatch-conf (revision 15365) @@ -42,6 +42,7 @@ DIFF_CONTENTS = "diff -Nu '%s' '%s'" DIFF_CVS_INTERP = "diff -Nu '%s' '%s' | grep '^[+-][^+-]' | grep -v '# .Header:.*'" DIFF_WSCOMMENTS = "diff -Nu '%s' '%s' | grep '^[+-][^+-]' | grep -v '^[-+]#' | grep -v '^[-+][:space:]*$'" +diffutils_2_9 = False # We need a secure scratch dir and python does silly verbose errors on the use of tempnam oldmask = os.umask(0o077) @@ -117,6 +118,17 @@ "use-rcs=yes in config; fatal', file=sys.stderr) return False + merge_cmd = self.options.get("merge", "").split() + global diffutils_2_9 + if merge_cmd and merge_cmd[0] == 'sdiff': + vardb = portage.db['/']['vartree'].dbapi + diffutils = vardb.match('sys-apps/diffutils') + if diffutils: + diffutils = diffutils[0] + diffutils_split = portage.catpkgsplit(diffutils)[1:] + if portage.vercmp(diffutils_split, + portage.pkgsplit('diffutils-2.9')) >= 0: + diffutils_2_9 = True # config file freezing support frozen_files = set(self.options.get("frozen-files", "").split()) @@ -267,6 +279,10 @@ merged = SCRATCH_DIR+"/"+os.path.basename(conf['current']) print() ret = os.system (self.options['merge'] % (merged, conf ['current'], newconf)) + ret = os.WEXITSTATUS(ret) + if diffutils_2_9: + if ret < 2: + ret = 0 if ret: print("Failure running 'merge' command") continue