3 import sys, re, os, initdutils
7 # If the absolute path isn't specified, assume it's relative to
8 # cwd; if that doesn't exist, try /etc/init.d
9 ap = os.path.abspath(initfile)
10 if os.path.exists(ap):
13 initfile = os.path.join('/etc/init.d', initfile)
15 print >> sys.stderr, 'Usage: %s /etc/init.d/<init-script>' % sys.argv[0]
18 headers = initdutils.scan_initfile(initfile)
20 provides = headers.get('Provides')
22 facilities = initdutils.load_facilities()
23 depends = initdutils.load_depends()
25 for facility in provides:
26 if facility in facilities:
28 for entry in facilities[facility].items():
29 if entry[0] != initfile:
30 entries[entry[0]] = entry[1]
31 facilities[facility] = entries
33 for (initscript, needed) in depends.iteritems():
34 for facility in needed:
35 if facility[0] == "$":
37 if not facilities.get(facility) and facility in provides:
38 print >> sys.stderr, 'Unable to remove %s: %s needs %s\n' % (
39 initfile, initscript, facility)
42 if initfile in depends:
44 initdutils.save_depends(depends)
46 initdutils.save_facilities(facilities)
48 initfile = initfile.replace('/etc/init.d/', '')
49 os.system('/usr/sbin/update-rc.d -f %s remove' % initfile)