On Sun, Jan 15, 2017 at 04:22:15PM +0100, Christian Boltz wrote: > Hello, > > 3-way-merge was never really implemented. > > This patch drops all traces of it to make the code more readable and > easier to maintain. > > > [ 01-mergeprof-drop-3-way.diff ]
Acked-by: Seth Arnold <seth.arn...@canonical.com> Thanks > > --- utils/aa-mergeprof 2017-01-14 21:56:25.408806836 +0100 > +++ utils/aa-mergeprof 2017-01-14 21:56:13.280860317 +0100 > @@ -41,16 +41,13 @@ > > parser = argparse.ArgumentParser(description=_('Merge the given profiles > into /etc/apparmor.d/ (or the directory specified with -d)')) > parser.add_argument('files', nargs='+', type=str, help=_('Profile(s) to > merge')) > -#parser.add_argument('other', nargs='?', type=str, help=_('other profile')) > parser.add_argument('-d', '--dir', type=str, help=_('path to profiles')) > #parser.add_argument('-a', '--auto', action='store_true', > help=_('Automatically merge profiles, exits incase of *x conflicts')) > args = parser.parse_args() > > args.other = None > -# 2-way merge or 3-way merge based on number of params > -merge_mode = 2 #if args.other == None else 3 > > -profiles = [args.files, [args.other]] > +profiles = args.files > > profiledir = args.dir > if profiledir: > @@ -87,61 +84,29 @@ > return profile_to_filename > > def main(): > - profiles_to_merge = set() > + base_profile_to_file = find_profiles_from_files(profiles) > > - base_files, other_files = profiles > - > - base_profile_to_file = find_profiles_from_files(base_files) > - > - profiles_to_merge = > profiles_to_merge.union(set(base_profile_to_file.keys())) > - > - other_profile_to_file = dict() > - > - if merge_mode == 3: > - other_profile_to_file = find_profiles_from_files(other_files) > - profiles_to_merge.add(other_profile_to_file.keys()) > + profiles_to_merge = set(base_profile_to_file.keys()) > > user_profile_to_file = find_files_from_profiles(profiles_to_merge) > > -# print(base_files,"\n",other_files) > -# > print(base_profile_to_file,"\n",other_profile_to_file,"\n",user_profile_to_file) > -# print(profiles_to_merge) > - > for profile_name in profiles_to_merge: > aaui.UI_Info("\n\n" + _("Merging profile for %s" % profile_name)) > user_file = user_profile_to_file[profile_name] > base_file = base_profile_to_file.get(profile_name, None) > - other_file = None > - > - if merge_mode == 3: > - other_file = other_profile_to_file.get(profile_name, None) > > - if base_file == None: > - if other_file == None: > - continue > - > - act([user_file, other_file, None], 2, profile_name) > - else: > - if other_file == None: > - act([user_file, base_file, None], 2, profile_name) > - else: > - act([user_file, base_file, other_file], 3, profile_name) > + act([user_file, base_file], profile_name) > > reset_aa() > > -def act(files, merge_mode, merging_profile): > +def act(files, merging_profile): > mergeprofiles = Merge(files) > #Get rid of common/superfluous stuff > mergeprofiles.clear_common() > > # if not args.auto: > if 1 == 1: # workaround to avoid lots of whitespace changes > - if merge_mode == 3: > - mergeprofiles.ask_the_questions('other', merging_profile) > - > - mergeprofiles.clear_common() > - > - mergeprofiles.ask_the_questions('base', merging_profile) > + mergeprofiles.ask_the_questions(merging_profile) > > q = aaui.PromptQuestion() > q.title = _('Changed Local Profiles') > @@ -172,7 +137,7 @@ > > class Merge(object): > def __init__(self, profiles): > - user, base, other = profiles > + user, base = profiles > > #Read and parse base profile and save profile data, include data > from it and reset them > apparmor.aa.read_profile(base, True) > @@ -180,12 +145,6 @@ > > reset_aa() > > - #Read and parse other profile and save profile data, include data > from it and reset them > - if merge_mode == 3: > - apparmor.aa.read_profile(other, True) > - self.other = cleanprofile.Prof(other) > - reset_aa() > - > #Read and parse user profile > apparmor.aa.read_profile(user, True) > self.user = cleanprofile.Prof(user) > @@ -193,20 +152,10 @@ > def clear_common(self): > deleted = 0 > > - if merge_mode == 3: > - #Remove off the parts in other profile which are > common/superfluous from user profile > - user_other = cleanprofile.CleanProf(False, self.user, self.other) > - deleted += user_other.compare_profiles() > - > #Remove off the parts in base profile which are common/superfluous > from user profile > user_base = cleanprofile.CleanProf(False, self.user, self.base) > deleted += user_base.compare_profiles() > > - if merge_mode == 3: > - #Remove off the parts in other profile which are > common/superfluous from base profile > - base_other = cleanprofile.CleanProf(False, self.base, self.other) > - deleted += base_other.compare_profiles() > - > def ask_conflict_mode(self, profile, hat, old_profile, merge_profile): > '''ask user about conflicting exec rules''' > for oldrule in old_profile['file'].rules: > @@ -240,15 +189,11 @@ > > done = True > > - def ask_the_questions(self, other, profile): > + def ask_the_questions(self, profile): > aa = self.user.aa # keep references so that the code in this > function can use the short name > changed = apparmor.aa.changed # (and be more in sync with aa.py > ask_the_questions()) > > - if other == 'other': > - other = self.other > - else: > - other = self.base > - #print(other.aa) > + other = self.base > > #Add the file-wide includes from the other profile to the user > profile > apparmor.aa.loadincludes() > > > > > Regards, > > Christian Boltz > -- > if this crashes as well, make sure to create a bnc entry, add a > backtrace, a copy of your sysconfig/proxy file and some cheese (Want > to make a fondue). [Dominique Leuenberger in opensuse-factory] > -- > AppArmor mailing list > AppArmor@lists.ubuntu.com > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/apparmor
signature.asc
Description: PGP signature
-- AppArmor mailing list AppArmor@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor