Lines 466-471
class configHandlerDiverting(configHandler):
|
Link Here
|
---|
|
466 |
self.user = None |
466 |
self.user = None |
467 |
self.group = None |
467 |
self.group = None |
468 |
self.mode = None |
468 |
self.mode = None |
|
|
469 |
self.preinst = None |
470 |
self.postinst = None |
469 |
|
471 |
|
470 |
def __hash__(self): |
472 |
def __hash__(self): |
471 |
return hash(self.to_file) |
473 |
return hash(self.to_file) |
Lines 549-554
class configHandlerMultifile(configHandlerDiverting):
|
Link Here
|
---|
|
549 |
ucr, changed = args |
551 |
ucr, changed = args |
550 |
print 'Multifile: %s' % self.to_file |
552 |
print 'Multifile: %s' % self.to_file |
551 |
|
553 |
|
|
|
554 |
if hasattr(self, 'preinst') and self.preinst: |
555 |
runModule(self.preinst, 'preinst', ucr, changed) |
556 |
|
552 |
if self.def_count == 0 or not self.from_files: |
557 |
if self.def_count == 0 or not self.from_files: |
553 |
return |
558 |
return |
554 |
|
559 |
|
Lines 574-579
class configHandlerMultifile(configHandlerDiverting):
|
Link Here
|
---|
|
574 |
self._set_perm(st) |
579 |
self._set_perm(st) |
575 |
to_fp.close() |
580 |
to_fp.close() |
576 |
|
581 |
|
|
|
582 |
if hasattr( self, 'postinst' ) and self.postinst: |
583 |
runModule(self.postinst, 'postinst', ucr, changed) |
584 |
|
577 |
script_file = os.path.join(script_dir, self.to_file.strip("/")) |
585 |
script_file = os.path.join(script_dir, self.to_file.strip("/")) |
578 |
if os.path.isfile(script_file): |
586 |
if os.path.isfile(script_file): |
579 |
runScript(script_file, 'postinst', changed) |
587 |
runScript(script_file, 'postinst', changed) |
Lines 597-609
class configHandlerFile(configHandlerDiverting):
|
Link Here
|
---|
|
597 |
def __init__(self, from_file, to_file): |
605 |
def __init__(self, from_file, to_file): |
598 |
super(configHandlerFile, self).__init__(to_file) |
606 |
super(configHandlerFile, self).__init__(to_file) |
599 |
self.from_file = from_file |
607 |
self.from_file = from_file |
600 |
self.preinst = None |
|
|
601 |
self.postinst = None |
602 |
|
608 |
|
603 |
def __call__(self, args): |
609 |
def __call__(self, args): |
604 |
ucr, changed = args |
610 |
ucr, changed = args |
605 |
|
611 |
|
606 |
if hasattr( self, 'preinst') and self.preinst: |
612 |
if hasattr(self, 'preinst') and self.preinst: |
607 |
runModule(self.preinst, 'preinst', ucr, changed) |
613 |
runModule(self.preinst, 'preinst', ucr, changed) |
608 |
|
614 |
|
609 |
print 'File: %s' % self.to_file |
615 |
print 'File: %s' % self.to_file |
Lines 734-791
class configHandlers:
|
Link Here
|
---|
|
734 |
else: |
740 |
else: |
735 |
return m(entry) |
741 |
return m(entry) |
736 |
|
742 |
|
737 |
def _get_handler_file(self, entry): |
743 |
def _parse_common_file_handler(self, handler, entry); |
738 |
"""Parse file entry and return Handler instance.""" |
744 |
"""Parse common file and multifile entries.""" |
739 |
try: |
745 |
try: |
740 |
name = entry['File'][0] |
746 |
handler.preinst = entry['Preinst'][0] |
741 |
except LookupError: |
747 |
except LookupError: |
742 |
return None |
748 |
pass |
743 |
from_path = os.path.join(file_dir, name) |
|
|
744 |
handler = configHandlerFile(from_path, name) |
745 |
if os.path.exists(from_path): |
746 |
handler.variables = grepVariables(open(from_path, 'r').read()) |
747 |
|
749 |
|
748 |
try: |
750 |
try: |
749 |
handler.preinst = entry['Preinst'][0] |
751 |
handler.postinst = entry['Postinst'][0] |
750 |
except LookupError: |
752 |
except LookupError: |
751 |
pass |
753 |
pass |
752 |
|
754 |
|
|
|
755 |
handler.variables |= set(entry.get('Variables', set())) |
756 |
|
757 |
try: |
758 |
user = entry['User'][0] |
759 |
except LookupError: |
760 |
pass |
761 |
else: |
753 |
try: |
762 |
try: |
754 |
handler.postinst = entry['Postinst'][0] |
763 |
handler.user = pwd.getpwnam(user).pw_uid |
755 |
except LookupError: |
764 |
except LookupError: |
756 |
pass |
765 |
print >> sys.stderr, 'W: failed to convert the username %s to the uid' % (user,) |
757 |
|
|
|
758 |
handler.variables |= set(entry.get('Variables', set())) |
759 |
|
766 |
|
|
|
767 |
try: |
768 |
group = entry['Group'][0] |
769 |
except LookupError: |
770 |
pass |
771 |
else: |
760 |
try: |
772 |
try: |
761 |
user = entry['User'][0] |
773 |
handler.group = grp.getgrnam(group).gr_gid |
762 |
except LookupError: |
774 |
except LookupError: |
763 |
pass |
775 |
print >> sys.stderr, 'W: failed to convert the groupname %s to the gid' % (group,) |
764 |
else: |
|
|
765 |
try: |
766 |
handler.user = pwd.getpwnam(user).pw_uid |
767 |
except LookupError: |
768 |
print >> sys.stderr, 'W: failed to convert the username %s to the uid' % (user,) |
769 |
|
776 |
|
|
|
777 |
try: |
778 |
mode = entry['Mode'][0] |
779 |
except LookupError: |
780 |
pass |
781 |
else: |
770 |
try: |
782 |
try: |
771 |
group = entry['Group'][0] |
783 |
handler.mode = int(mode, 8) |
772 |
except LookupError: |
784 |
except ValueError: |
773 |
pass |
785 |
print >> sys.stderr, 'W: failed to convert mode %s' % (mode,) |
774 |
else: |
|
|
775 |
try: |
776 |
handler.group = grp.getgrnam(group).gr_gid |
777 |
except LookupError: |
778 |
print >> sys.stderr, 'W: failed to convert the groupname %s to the gid' % (group,) |
779 |
|
786 |
|
|
|
787 |
def _get_handler_file(self, entry): |
788 |
"""Parse file entry and return Handler instance.""" |
780 |
try: |
789 |
try: |
781 |
mode = entry['Mode'][0] |
790 |
name = entry['File'][0] |
782 |
except LookupError: |
791 |
except LookupError: |
783 |
pass |
792 |
return None |
784 |
else: |
793 |
from_path = os.path.join(file_dir, name) |
785 |
try: |
794 |
handler = configHandlerFile(from_path, name) |
786 |
handler.mode = int(mode, 8) |
795 |
if os.path.exists(from_path): |
787 |
except ValueError: |
796 |
handler.variables = grepVariables(open(from_path, 'r').read()) |
788 |
print >> sys.stderr, 'W: failed to convert mode %s' % (mode,) |
797 |
|
|
|
798 |
self._parse_common_file_handler(handler, entry) |
789 |
|
799 |
|
790 |
return handler |
800 |
return handler |
791 |
|
801 |
|
Lines 824-861
class configHandlers:
|
Link Here
|
---|
|
824 |
from_path = os.path.join(file_dir, mfile) |
834 |
from_path = os.path.join(file_dir, mfile) |
825 |
handler = configHandlerMultifile(from_path, mfile) |
835 |
handler = configHandlerMultifile(from_path, mfile) |
826 |
|
836 |
|
827 |
handler.variables |= set(entry.get('Variables', set())) |
837 |
self._parse_common_file_handler(handler, entry) |
828 |
|
|
|
829 |
try: |
830 |
user = entry['User'][0] |
831 |
except LookupError: |
832 |
pass |
833 |
else: |
834 |
try: |
835 |
handler.user = pwd.getpwnam(user).pw_uid |
836 |
except LookupError: |
837 |
print >> sys.stderr, 'W: failed to convert the username %s to the uid' % (user,) |
838 |
|
839 |
try: |
840 |
group = entry['Group'][0] |
841 |
except LookupError: |
842 |
pass |
843 |
else: |
844 |
try: |
845 |
handler.group = grp.getgrnam(group).gr_gid |
846 |
except LookupError: |
847 |
print >> sys.stderr, 'W: failed to convert the groupname %s to the gid' % (group,) |
848 |
|
849 |
try: |
850 |
mode = entry['Mode'][0] |
851 |
except LookupError: |
852 |
pass |
853 |
else: |
854 |
try: |
855 |
handler.mode = int(mode, 8) |
856 |
except ValueError: |
857 |
print >> sys.stderr, 'W: failed to convert mode %s' % (mode,) |
858 |
|
859 |
|
838 |
|
860 |
# Add pending subfiles from earlier entries |
839 |
# Add pending subfiles from earlier entries |
861 |
self._multifiles[mfile] = handler |
840 |
self._multifiles[mfile] = handler |