[apparmor] [patch] [1/7] drop traces of 3-way-merge in aa-mergeprof
Christian Boltz
apparmor at cboltz.de
Sun Jan 15 15:22:15 UTC 2017
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 ]
--- 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]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20170115/ea9592a2/attachment.pgp>
More information about the AppArmor
mailing list