Fixes to rpmlint and license related issues
[platform/upstream/lsb.git] / remove_initd
1 #!/usr/bin/python
2
3 import sys, re, os, initdutils
4
5 if len(sys.argv) > 1:
6     initfile = sys.argv[1]
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):
11         initfile = ap
12     else:
13         initfile = os.path.join('/etc/init.d', initfile)
14 else:
15     print >> sys.stderr, 'Usage: %s /etc/init.d/<init-script>' % sys.argv[0]
16     sys.exit(1)
17
18 headers = initdutils.scan_initfile(initfile)
19
20 provides = headers.get('Provides')
21 if provides:
22     facilities = initdutils.load_facilities()
23     depends = initdutils.load_depends()
24
25     for facility in provides:
26         if facility in facilities:
27             entries = {}
28             for entry in facilities[facility].items():
29                 if entry[0] != initfile:
30                     entries[entry[0]] = entry[1]
31             facilities[facility] = entries
32
33     for (initscript, needed) in depends.iteritems():
34         for facility in needed:
35             if facility[0] == "$":
36                 continue
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)
40                 sys.exit(1)
41
42     if initfile in depends:
43         del depends[initfile]
44         initdutils.save_depends(depends)
45
46     initdutils.save_facilities(facilities)
47
48 initfile = initfile.replace('/etc/init.d/', '')
49 os.system('/usr/sbin/update-rc.d -f %s remove' % initfile)