Re: [PATCH] semanage_migrate_store: Python3 support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the patch!

Acked-by: Steve Lawrence <slawrence@xxxxxxxxxx>

On 11/19/2014 03:18 PM, Jason Zaman wrote:
> Mainly used the 2to3 conversion tool. Also added in a __future__
> import so that the script continues to work on Python 2.
> 
> Tested on 2.7, 3.3, 3.4. Should work on 2.6 too but untested.
> 
> Signed-off-by: Jason Zaman <jason@xxxxxxxxxxxxx>
> ---
>  libsemanage/utils/semanage_migrate_store | 86 +++++++++++++++++---------------
>  1 file changed, 45 insertions(+), 41 deletions(-)
> 
> diff --git a/libsemanage/utils/semanage_migrate_store b/libsemanage/utils/semanage_migrate_store
> index cbc4f31..0371e49 100755
> --- a/libsemanage/utils/semanage_migrate_store
> +++ b/libsemanage/utils/semanage_migrate_store
> @@ -1,6 +1,7 @@
>  #!/usr/bin/python -E
>  
>  
> +from __future__ import print_function
>  import os
>  import errno
>  import shutil
> @@ -16,7 +17,7 @@ try:
>  	import selinux
>  	import semanage
>  except:
> -	print >> sys.stderr, "You must install libselinux-python and libsemanage-python before running this tool"
> +	print("You must install libselinux-python and libsemanage-python before running this tool", file=sys.stderr)
>  	exit(1)
>  
>  
> @@ -25,100 +26,103 @@ except:
>  # For some reason this function doesn't exist in libselinux :\
>  def copy_with_context(src, dst):
>  	if DEBUG:
> -		print "copying %s to %s" % (src, dst)
> +		print("copying %s to %s" % (src, dst))
>  	try:
>  		con = selinux.lgetfilecon_raw(src)[1]
>  	except:
> -		print >> sys.stderr, "Could not get file context of %s" % src
> +		print("Could not get file context of %s" % src, file=sys.stderr)
>  		exit(1)
>  
>  	try:
>  		selinux.setfscreatecon_raw(con)
>  	except:
> -		print >> sys.stderr, "Could not set fs create context: %s" %con
> +		print("Could not set fs create context: %s" %con, file=sys.stderr)
>  		exit(1)
>  
>  	try:
>  		shutil.copy2(src, dst)
> -	except OSError as (err, strerr):
> -		print >> sys.stderr, "Could not copy %s to %s, %s" %(src, dst, strerr)
> +	except OSError as the_err:
> +		(err, strerr) = the_err.args
> +		print("Could not copy %s to %s, %s" %(src, dst, strerr), file=sys.stderr)
>  		exit(1)
>  
>  	try:
>  		selinux.setfscreatecon_raw(None)
>  	except:
> -		print >> sys.stderr, "Could not reset fs create context. May need to relabel system."
> +		print("Could not reset fs create context. May need to relabel system.", file=sys.stderr)
>  
>  def create_dir_from(src, dst, mode):
> -	if DEBUG: print "Making directory %s" % dst
> +	if DEBUG: print("Making directory %s" % dst)
>  	try:
>  		con = selinux.lgetfilecon_raw(src)[1]
>  		selinux.setfscreatecon_raw(con)
>  		os.makedirs(dst, mode)
> -	except OSError as (err, stderr):
> +	except OSError as the_err:
> +		(err, stderr) = the_err.args
>  		if err == errno.EEXIST:
>  			pass
>  		else:
> -			print >> sys.stderr, "Error creating %s" % dst
> +			print("Error creating %s" % dst, file=sys.stderr)
>  			exit(1)
>  
>  	try:
>  		selinux.setfscreatecon_raw(None)
>  	except:
> -		print >> sys.stderr, "Could not reset fs create context. May need to relabel system."
> +		print("Could not reset fs create context. May need to relabel system.", file=sys.stderr)
>  
>  def create_file_from(src, dst):
> -	if DEBUG: print "Making file %s" % dst
> +	if DEBUG: print("Making file %s" % dst)
>  	try:
>  		con = selinux.lgetfilecon_raw(src)[1]
>  		selinux.setfscreatecon_raw(con)
>  		open(dst, 'a').close()
> -	except OSError as (err, stderr):
> -		print >> sys.stderr, "Error creating %s" % dst
> +	except OSError as the_err:
> +		(err, stderr) = the_err.args
> +		print("Error creating %s" % dst, file=sys.stderr)
>  		exit(1)
>  
>  	try:
>  		selinux.setfscreatecon_raw(None)
>  	except:
> -		print >> sys.stderr, "Could not reset fs create context. May need to relabel system."
> +		print("Could not reset fs create context. May need to relabel system.", file=sys.stderr)
>  
>  def copy_module(store, name, con, base):
> -	if DEBUG: print "Install module %s" % name	
> +	if DEBUG: print("Install module %s" % name)
>  	(file, ext) = os.path.splitext(name)
>  	if ext != ".pp":
>  		# Stray non-pp file in modules directory, skip
> -		print >> sys.stderr, "warning: %s has invalid extension, skipping" % name
> +		print("warning: %s has invalid extension, skipping" % name, file=sys.stderr)
>  		return
>  	try:
>  		selinux.setfscreatecon_raw(con)
> -	
> +
>  		if base:
>  			root = oldstore_path(store)
>  		else:
>  			root = oldmodules_path(store)
>  
>  		bottomdir = bottomdir_path(store)
> -			
> +
>  		os.mkdir("%s/%s" % (bottomdir, file))
>  
>  		copy_with_context(os.path.join(root, name), "%s/%s/hll" % (bottomdir, file))
>  
>  		# This is the ext file that will eventually be used to choose a compiler
> -		efile = open("%s/%s/lang_ext" % (bottomdir, file), "w+", 0600)
> +		efile = open("%s/%s/lang_ext" % (bottomdir, file), "w+", 0o600)
>  		efile.write("pp")
>  		efile.close()
>  
>  	except:
> -		print >> sys.stderr, "Error installing module %s" % name
> +		print("Error installing module %s" % name, file=sys.stderr)
>  		exit(1)
>  
>  	try:
>  		selinux.setfscreatecon_raw(None)
>  	except:
> -		print >> sys.stderr, "Could not reset fs create context. May need to relabel system."
> +		print("Could not reset fs create context. May need to relabel system.", file=sys.stderr)
>  
>  def disable_module(file, root, name, disabledmodules):
> -	if DEBUG: print "Disabling %s" % name
> +	if DEBUG: print("Disabling %s" % name)
>  	(disabledname, disabledext) = os.path.splitext(file)
>  	create_file_from(os.path.join(root, name), "%s/%s" % (disabledmodules, disabledname))
>  
> @@ -131,14 +135,14 @@ def migrate_store(store):
>  	newmodules = newmodules_path(store);
>  	bottomdir = bottomdir_path(store);
>  
> -	print "Migrating from %s to %s" % (oldstore, newstore)
> +	print("Migrating from %s to %s" % (oldstore, newstore))
>  
>  	# Build up new directory structure
> -	create_dir_from(selinux.selinux_policy_root(), "%s/%s" % (newroot_path(), store), 0755)
> -	create_dir_from(oldmodules, newstore, 0700)
> -	create_dir_from(oldstore, newmodules, 0700)
> -	create_dir_from(oldstore, bottomdir, 0700)
> -	create_dir_from(oldstore, disabledmodules, 0700)
> +	create_dir_from(selinux.selinux_policy_root(), "%s/%s" % (newroot_path(), store), 0o755)
> +	create_dir_from(oldmodules, newstore, 0o700)
> +	create_dir_from(oldstore, newmodules, 0o700)
> +	create_dir_from(oldstore, bottomdir, 0o700)
> +	create_dir_from(oldstore, disabledmodules, 0o700)
>  
>  	# use whatever the file context of bottomdir is for the module directories
>  	con = selinux.lgetfilecon_raw(bottomdir)[1]
> @@ -149,7 +153,7 @@ def migrate_store(store):
>  	# Dir structure built, start copying files
>  	for root, dirs, files in os.walk(oldstore):
>  		if root == oldstore:
> -			# This is the top level directory, need to move 
> +			# This is the top level directory, need to move
>  			for name in files:
>  				# Check to see if it is in TOPPATHS and copy if so
>  				if name in TOPPATHS:
> @@ -164,7 +168,7 @@ def migrate_store(store):
>  			for name in files:
>  				(file, ext) = os.path.splitext(name)
>  				if name == "base.pp":
> -					print >> sys.stderr, "Error installing module %s, name conflicts with base" % name
> +					print("Error installing module %s, name conflicts with base" % name, file=sys.stderr)
>  					exit(1)
>  				elif ext == ".disabled":
>  					disable_module(file, root, name, disabledmodules)
> @@ -173,32 +177,32 @@ def migrate_store(store):
>  
>  def rebuild_policy():
>  	# Ok, the modules are loaded, lets try to rebuild the policy
> -	print "Attempting to rebuild policy from %s" % newroot_path()
> +	print("Attempting to rebuild policy from %s" % newroot_path())
>  
>  	curstore = selinux.selinux_getpolicytype()[1]
>  
>  	handle = semanage.semanage_handle_create()
>  	if not handle:
> -		print >> sys.stderr, "Could not create semanage handle"
> +		print("Could not create semanage handle", file=sys.stderr)
>  		exit(1)
>  
>  	semanage.semanage_select_store(handle, curstore, semanage.SEMANAGE_CON_DIRECT)
>  
>  	if not semanage.semanage_is_managed(handle):
>  		semanage.semanage_handle_destroy(handle)
> -		print >> sys.stderr, "SELinux policy is not managed or store cannot be accessed."
> +		print("SELinux policy is not managed or store cannot be accessed.", file=sys.stderr)
>  		exit(1)
>  
>  	rc = semanage.semanage_access_check(handle)
>  	if rc < semanage.SEMANAGE_CAN_WRITE:
>  		semanage.semanage_handle_destroy(handle)
> -		print >> sys.stderr, "Cannot write to policy store."
> +		print("Cannot write to policy store.", file=sys.stderr)
>  		exit(1)
>  
>  	rc = semanage.semanage_connect(handle)
>  	if rc < 0:
>  		semanage.semanage_handle_destroy(handle)
> -		print >> sys.stderr, "Could not establish semanage connection"
> +		print("Could not establish semanage connection", file=sys.stderr)
>  		exit(1)
>  
>  	semanage.semanage_set_rebuild(handle, 1)
> @@ -206,12 +210,12 @@ def rebuild_policy():
>  	rc = semanage.semanage_begin_transaction(handle)
>  	if rc < 0:
>  		semanage.semanage_handle_destroy(handle)
> -		print >> sys.stderr, "Could not begin transaction"
> +		print("Could not begin transaction", file=sys.stderr)
>  		exit(1)
>  
>  	rc = semanage.semanage_commit(handle)
>  	if rc < 0:
> -		print >> sys.stderr, "Could not commit transaction"
> +		print("Could not commit transaction", file=sys.stderr)
>  
>  	semanage.semanage_handle_destroy(handle)
>  
> @@ -283,7 +287,7 @@ if __name__ == "__main__":
>  		"preserve_tunables" ]
>  
>  
> -	create_dir_from(oldroot_path(), newroot_path(), 0755)
> +	create_dir_from(oldroot_path(), newroot_path(), 0o755)
>  
>  	stores = None
>  	if TYPE is not None:
> @@ -299,14 +303,14 @@ if __name__ == "__main__":
>  
>  		if os.path.isdir(newstore_path(store)):
>  			# store has already been migrated, but old modules dir still exits
> -			print >> sys.stderr, "warning: Policy type %s has already been migrated, but modules still exist in the old store. Skipping store." % store
> +			print("warning: Policy type %s has already been migrated, but modules still exist in the old store. Skipping store." % store, file=sys.stderr)
>  			continue
>  
>  		migrate_store(store)
>  
>  		if CLEAN is True:
>  			def remove_error(function, path, execinfo):
> -				print >> sys.stderr, "warning: Unable to remove old store modules directory %s. Cleaning failed." % oldmodules_path(store)
> +				print("warning: Unable to remove old store modules directory %s. Cleaning failed." % oldmodules_path(store), file=sys.stderr)
>  			shutil.rmtree(oldmodules_path(store), onerror=remove_error)
>  
>  	if NOREBUILD is False:
> 

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux