@@ -416,13 +416,17 @@ def version_compare(evr1, evr2):
416
416
as a 3-element tuple or list.
417
417
418
418
"""
419
- if isinstance (evr1 , basestring ):
419
+ if is_string (evr1 ):
420
420
epoch1 , version1 , release1 = stringToVersion (evr1 )
421
+ elif isinstance (evr1 , bytes ):
422
+ epoch1 , version1 , release1 = stringToVersion (evr1 .decode ())
421
423
else :
422
424
epoch1 , version1 , release1 = evr1
423
425
424
- if isinstance (evr2 , basestring ):
426
+ if is_string (evr2 ):
425
427
epoch2 , version2 , release2 = stringToVersion (evr2 )
428
+ elif isinstance (evr2 , bytes ):
429
+ epoch2 , version2 , release2 = stringToVersion (evr2 .decode ())
426
430
else :
427
431
epoch2 , version2 , release2 = evr2
428
432
@@ -634,19 +638,28 @@ def get_hostname():
634
638
except socket .error :
635
639
return None
636
640
641
+ def check_file_ownership (file_path , owner_name ):
642
+ """Return True if at 'file_path' exists, is owned by
643
+ 'owner_name' and is a file
644
+ """
645
+ owner_uid = pwd .getpwnam (owner_name )
646
+ try :
647
+ file_stat = os .stat (file_path )
648
+ return (file_stat .st_uid == owner_uid .pw_uid and
649
+ stat .S_ISREG (file_stat .st_mode ))
650
+ except OSError : # file does not exist
651
+ return False
637
652
638
653
def check_file_and_perms (file_path , owner_name , permissions ):
639
- """Return True if the file at 'file_path' exists, is owned by
640
- 'owner_name', is a file, and has the given permissions; False otherwise
641
- """
642
- owner_uid = pwd .getpwnam (owner_name )
643
- try :
644
- file_stat = os .stat (file_path )
645
- return (file_stat .st_uid == owner_uid and
646
- file_stat .st_mode & 0o7777 == permissions and
647
- stat .S_ISREG (file_stat .st_mode ))
648
- except OSError : # file does not exist
649
- return False
654
+ """Return True if the file at 'file_path' exists, is owned by
655
+ 'owner_name', is a file, and has the given permissions; False otherwise
656
+ """
657
+ try :
658
+ file_stat = os .stat (file_path )
659
+ return (check_file_ownership (file_path , owner_name ) and
660
+ file_stat .st_mode & 0o7777 == permissions )
661
+ except OSError : # file does not exist
662
+ return False
650
663
651
664
def parse_env_output (output ):
652
665
"""
@@ -755,3 +768,12 @@ def run_fn_if_el_release_ok(*args, **kwargs):
755
768
return run_fn_if_el_release_ok
756
769
return el_release_decorator
757
770
771
+
772
+ try :
773
+ unicode
774
+ except NameError : # python 3
775
+ unicode = str
776
+
777
+
778
+ def is_string (var ):
779
+ return isinstance (var , (str , unicode ))
0 commit comments