source: pkg/main/lsb/trunk/remove_initd @ 842

Revision 842, 1.5 KB checked in by alanbach-guest, 6 years ago (diff)

[svn-inject] Installing original source of lsb

Line 
1#!/usr/bin/python
2
3import sys, re, os, initdutils
4
5if 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)
14else:
15    print >> sys.stderr, 'Usage: %s /etc/init.d/<init-script>' % sys.argv[0]
16    sys.exit(1)
17
18headers = initdutils.scan_initfile(initfile)
19
20provides = headers.get('Provides')
21if 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
48initfile = initfile.replace('/etc/init.d/', '')
49os.system('/usr/sbin/update-rc.d -f %s remove' % initfile)
Note: See TracBrowser for help on using the repository browser.