1 | -- This is a helper script to check installation of reboot-required |
---|
2 | -- packages. |
---|
3 | -- This script runs just after changes are commited to rpm database. |
---|
4 | |
---|
5 | filename = "/usr/lib/update-watch/reboot.list" |
---|
6 | |
---|
7 | |
---|
8 | -- Function to extract real package name from allow-duplicated packages. |
---|
9 | function realname(name) |
---|
10 | local s, e, name = string.find(name, "(.+)#") |
---|
11 | return name |
---|
12 | end |
---|
13 | |
---|
14 | -- Open list of packages that requires system reboot, |
---|
15 | -- Then read it and store package name into local table. |
---|
16 | local reboot = {} |
---|
17 | |
---|
18 | file = io.open(filename, "r") |
---|
19 | if not file then |
---|
20 | print("error: can't open configuration file at "..filename) |
---|
21 | return |
---|
22 | else |
---|
23 | for line in io.lines(filename) do |
---|
24 | local s, e = string.find(line, "reboot:") |
---|
25 | if e then |
---|
26 | table.insert(reboot, string.sub(line, e+1)) |
---|
27 | end |
---|
28 | end |
---|
29 | end |
---|
30 | |
---|
31 | -- Check configuration string RPM::RootDir:: to stop miss detection |
---|
32 | -- of reboot-required packages under vbootstrap/vbuilder chroot. |
---|
33 | -- (this string is usually blank, but vbootstrap set it) |
---|
34 | if confget("RPM::RootDir", "default") ~= "default" then |
---|
35 | return |
---|
36 | end |
---|
37 | |
---|
38 | -- Check packages that is installed just now, and compare it with |
---|
39 | -- extraced list, Then check if reboot is required. |
---|
40 | local found = false |
---|
41 | |
---|
42 | for i, pkg in pairs(pkgs_install) do |
---|
43 | local name = realname(pkgname(pkg)) |
---|
44 | if not name then |
---|
45 | name = pkgname(pkg) |
---|
46 | end |
---|
47 | for i, name_r in pairs(reboot) do |
---|
48 | if name == name_r then |
---|
49 | found = true |
---|
50 | end |
---|
51 | end |
---|
52 | end |
---|
53 | |
---|
54 | if found then |
---|
55 | print ("Reboot required.") |
---|
56 | os.execute("touch /var/run/reboot-required") |
---|
57 | end |
---|