diff -Nur smeserver-yum-2.6.0.old/root/usr/lib/yum-plugins/smeserver.py smeserver-yum-2.6.0/root/usr/lib/yum-plugins/smeserver.py --- smeserver-yum-2.6.0.old/root/usr/lib/yum-plugins/smeserver.py 2020-12-06 23:11:14.321000000 -0500 +++ smeserver-yum-2.6.0/root/usr/lib/yum-plugins/smeserver.py 2020-12-06 23:12:58.737000000 -0500 @@ -63,6 +63,11 @@ smechange = False ourfile = False erasing = False +DEBUG = False + +def log(s): + if DEBUG: + print s def report_yum_status(status): fileHandle = open(status_file, 'w') @@ -94,7 +99,21 @@ report_yum_status('postresolve') def pretrans_hook(conduit): +#transaction set states +#TS_UPDATE = 10 +#TS_INSTALL = 20 +#TS_TRUEINSTALL = 30 +#TS_ERASE = 40 +#TS_OBSOLETED = 50 +#TS_OBSOLETING = 60 +#TS_AVAILABLE = 70 +#TS_UPDATED = 90 +#TS_FAILED = 100 +#TS_INSTALL_STATES = [TS_INSTALL, TS_TRUEINSTALL, TS_UPDATE, TS_OBSOLETING] +#TS_REMOVE_STATES = [TS_ERASE, TS_OBSOLETED, TS_UPDATED] + report_yum_status('pretrans') + log("*******Pretrans********") # Prefetch filelist for packages to be removed, # otherwise for updated packages headers will not be available ts = conduit.getTsInfo() @@ -112,10 +131,10 @@ erasing = True (n, a, e, v, r) = tsmem.po.pkgtup #only for debug - #print 'Package: ' + tsmem.name + ' remove' + log('**Package: ' + tsmem.name + ' remove') smeevent = tsmem.name + '-update' #only for debug - #print smeevent + #log(smeevent) if os.path.isdir(events_path + os.sep + smeevent): tmppath = events_path + os.sep + smeevent + os.sep eventlist[tsmem.name] = smeevent @@ -128,22 +147,24 @@ if not templateslist.has_key(mytmptemplate): templateslist[mytmptemplate]=mytmptemplate #tmptmplpath = subdir + os.sep + file - #print (file) + log(" template " + file) + # nothing for actions ??? + if os.path.isdir(tmppath + "services2adjust" + os.sep): tmppathsrv = tmppath + "services2adjust" + os.sep files = [f for f in os.listdir(tmppathsrv)] for f in files: if os.path.islink(tmppathsrv + f): - #print "link " + f + ": " + (os.readlink(tmppathsrv + f)) + log(" service link " + f + ": " + (os.readlink(tmppathsrv + f))) mytmpserv = os.readlink(tmppathsrv + f) if not serviceslist.has_key(f): - serviceslist[f]=mytmpserv + if tsmem.output_state == TS_ERASE: + print('===> removal, we stop the service ' + f) + serviceslist[f]="stop" + else: + serviceslist[f]=mytmpserv else: - #only for debug - #print "old value: " + serviceslist[f] - #print "new value: " + mytmpserv - if mytmpserv == "restart": print "overriding all signals, forcing restart" serviceslist[f]="restart" @@ -153,13 +174,14 @@ smechange = True #only for debug - #print 'smechange: '+str(smechange) - #print 'eventlist: '+ str(eventlist) - #print 'templateslist: '+str(templateslist) - #print 'serviceslist: '+str(serviceslist) + log('## smechange: '+str(smechange)) + log('## eventlist: '+ str(eventlist.keys())) + log('## templateslist: '+str(templateslist.keys())) + log('## serviceslist: '+str(serviceslist.keys())) def posttrans_hook(conduit): report_yum_status('posttrans') + log("*******Postrans********") ts = conduit.getTsInfo() global smechange @@ -174,13 +196,12 @@ for tsmem in ts.getMembers(): (n, a, e, v, r) = tsmem.po.pkgtup - #print 'smechange: '+str(smechange) # we're upgrading/installing/removing a rebootpkgs package.. a reboot is required for pkg in rebootpkgs: if n.startswith(pkg): - #print 'Package: ' + tsmem.name + ' triggers reboot' + log('**Package: ' + tsmem.name + ' triggers reboot') #smechange = True # we do some exclusions -devel -doc ... if pkg in rebootpkgsexclude: @@ -216,7 +237,11 @@ #if smechange is true we can ignore the following part - if not smechange and not erasing: + # wondering if we reallly do want to ignore that : let's say we want to delay kernel reboot, + # could we at least configure httpd cleanly until next week ? + # also when updating a package the erasing flag was on and prevented to do this .... + # if not smechange and not erasing: + if True: #smeevent = 'yum-reconfigure-' + tsmem.name smeevent = tsmem.name + '-update' @@ -229,17 +254,20 @@ if os.path.islink(tmppath + f): mytmpaction = os.path.realpath(os.readlink(tmppath + f).replace("..",events_path)) - #print "link " + f + ": " + mytmpaction + #log(" link " + f + ": " + mytmpaction) if f < "S05generic_template_expand": if not actionlistpre.has_key(mytmpaction): actionlistpre[mytmpaction] = mytmpaction + log(" action Pre : " + f + " -> " + mytmpaction) elif f > "S90adjust-services": if not actionlistpost.has_key(mytmpaction): actionlistpost[mytmpaction] = mytmpaction + log(" action Post : " + f + " -> " + mytmpaction) else: if not actionlist.has_key(mytmpaction): actionlist[mytmpaction] = mytmpaction + log(" action : " + f + " -> " + mytmpaction) if os.path.isdir(tmppath + "templates2expand" + os.sep): tmppathtmpl = tmppath + "templates2expand" + os.sep @@ -249,22 +277,18 @@ if not templateslist.has_key(mytmptemplate): templateslist[mytmptemplate]=mytmptemplate #tmptmplpath = subdir + os.sep + file - #print (file) + log(" template " + mytmptemplate) if os.path.isdir(tmppath + "services2adjust" + os.sep): tmppathsrv = tmppath + "services2adjust" + os.sep files = [f for f in os.listdir(tmppathsrv)] for f in files: if os.path.islink(tmppathsrv + f): - #print "link " + f + ": " + (os.readlink(tmppathsrv + f)) + log(" service link " + f + ": " + (os.readlink(tmppathsrv + f))) mytmpserv = os.readlink(tmppathsrv + f) if not serviceslist.has_key(f): serviceslist[f]=mytmpserv else: - #only for debug - #print "old value: " + serviceslist[f] - #print "new value: " + mytmpserv - if mytmpserv == "restart": #only for debug print "overriding all signals, forcing restart" @@ -276,11 +300,15 @@ #only for debug - #print 'smechange: '+str(smechange) + log('## smechange: '+str(smechange)) #print 'post-trans' - #print 'eventlist: '+ str(eventlist) - #print 'templateslist: '+str(templateslist) - #print 'serviceslist: '+str(serviceslist) + log('## eventlist: '+ str(eventlist)) + log('## actions early: ' + str(actionlistpre.keys())) + log('## templateslist: '+str(templateslist.keys())) + log('## actions: ' + str(actionlist.keys())) + log('## serviceslist: '+str(serviceslist.keys())) + log('## actions late: ' + str(actionlistpost.keys())) + # check if smechange is true or if eventlist has items.. in both cases we must initialize databases if smechange == True or len(eventlist)>0: @@ -293,14 +321,14 @@ if len(actionlistpre)>0: print "Executing early actions" for kactions in actionlistpre: - #print kactions + log(" " + kactions) if os.path.isfile(kactions): os.spawnl(os.P_WAIT, kactions, kactions) if len(templateslist)>0: print "Expanding templates" for ktemplates in templateslist: - #print ktemplates + log(" " + ktemplates) mytemplatedir = '/etc/e-smith/templates/' + ktemplates mytemplatemeta = '/etc/e-smith/templates.metadata/' + ktemplates if os.path.exists(mytemplatedir) or os.path.exists(mytemplatemeta): @@ -309,7 +337,7 @@ if len(actionlist)>0: print "Executing actions" for kactions in actionlist: - #print kactions + log(" " + kactions) if os.path.isfile(kactions): os.spawnl(os.P_WAIT, kactions, kactions,"post-upgrade") @@ -322,7 +350,7 @@ if len(actionlistpost)>0: print "Executing late actions" for kactions in actionlistpost: - #print kactions + log(" " + kactions) if os.path.isfile(kactions): os.spawnl(os.P_WAIT, kactions, kactions) @@ -335,6 +363,7 @@ def close_hook(conduit): if ourfile and os.path.isfile('/var/run/yum.status'): os.unlink('/var/run/yum.status') + log("***Close***") if smechange: print "\n==============================================================" diff -Nur smeserver-yum-2.6.0.old/root/usr/lib/yum-plugins/smeserver.py smeserver-yum-2.6.0/root/usr/lib/yum-plugins/smeserver.py --- smeserver-yum-2.6.0.old/root/usr/lib/yum-plugins/smeserver.py 2020-12-07 14:38:30.058000000 -0500 +++ smeserver-yum-2.6.0/root/usr/lib/yum-plugins/smeserver.py 2020-12-07 14:37:52.328000000 -0500 @@ -166,7 +166,7 @@ serviceslist[f]=mytmpserv else: if mytmpserv == "restart": + log("overriding all signals, forcing restart " + f ) - print "overriding all signals, forcing restart" serviceslist[f]="restart" else: