1 |
commit: 19942482c18d4d358c89d5db5736d8843af3ae99 |
2 |
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jul 5 23:58:44 2015 +0000 |
4 |
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Jul 5 23:58:44 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/grss.git/commit/?id=19942482 |
7 |
|
8 |
grsup: fix kernel install and other errors. |
9 |
|
10 |
grsup | 56 ++++++++++++++++++++++++++++++++------------------------ |
11 |
1 file changed, 32 insertions(+), 24 deletions(-) |
12 |
|
13 |
diff --git a/grsup b/grsup |
14 |
index 57029a7..bb5330f 100755 |
15 |
--- a/grsup |
16 |
+++ b/grsup |
17 |
@@ -12,6 +12,7 @@ from getopt import getopt, GetoptError |
18 |
from html.parser import HTMLParser |
19 |
|
20 |
from grs import CONST |
21 |
+from grs import Execute |
22 |
from grs import Log |
23 |
from grs import Synchronize |
24 |
from grs import WorldConf |
25 |
@@ -44,7 +45,7 @@ def install_kernel(version = 'latest', logfile = CONST.LOGFILE): |
26 |
return |
27 |
|
28 |
try: |
29 |
- request = urllib.request.urlopen(baseurl) |
30 |
+ request = urllib.request.urlopen('%s/%s' % (baseurl,'linux-images')) |
31 |
dload = request.read().decode('utf-8') |
32 |
except urllib.error.HTTPError: |
33 |
print('Cannot open %s' % baseurl) |
34 |
@@ -56,7 +57,11 @@ def install_kernel(version = 'latest', logfile = CONST.LOGFILE): |
35 |
kernels.sort() |
36 |
|
37 |
if version == 'latest': |
38 |
- kernel = kernels[-1] |
39 |
+ try: |
40 |
+ kernel = kernels[-1] |
41 |
+ except IndexError: |
42 |
+ print('No linux-image available') |
43 |
+ return |
44 |
else: |
45 |
for k in kernels: |
46 |
m = re.search('linux-image-(.+).tar.xz', k) |
47 |
@@ -67,20 +72,25 @@ def install_kernel(version = 'latest', logfile = CONST.LOGFILE): |
48 |
print('No linux-image %s available' % version) |
49 |
return |
50 |
|
51 |
- # Download the linux-image tarball to packages/linux-image |
52 |
- request = urllib.request.urlopen('%s/%s' % (baseurl, kernel)) |
53 |
- package = '/usr/portage/packages/linux-images' |
54 |
- os.makedirs(package, mode=0o755, exist_ok=True) |
55 |
- kpath = os.path.join(package, kernel) |
56 |
- with open(kpath, 'wb') as f: |
57 |
- shutil.copyfileobj(request, f) |
58 |
+ # Download the linux-image tarball to packages/linux-image |
59 |
+ request = urllib.request.urlopen('%s/%s/%s' % (baseurl, 'linux-images', kernel)) |
60 |
+ package = '/usr/portage/packages/linux-images' |
61 |
+ os.makedirs(package, mode=0o755, exist_ok=True) |
62 |
+ kpath = os.path.join(package, kernel) |
63 |
+ with open(kpath, 'wb') as f: |
64 |
+ shutil.copyfileobj(request, f) |
65 |
+ |
66 |
+ # Try to mount /boot. Fail silently since it may not be mountable. |
67 |
+ if not os.path.ismount('/boot'): |
68 |
+ cmd = 'mount /boot' |
69 |
+ Execute(cmd, timeout=60, failok=True, logfile=logfile) |
70 |
|
71 |
- # Untar it at '/'. tar will not clobber files. |
72 |
- cwd = os.getcwd() |
73 |
- os.chdir('/') |
74 |
- cmd = 'tar -Jxf %s' % kpath |
75 |
- Execute(cmd, timeout=600, logfile=logfile) |
76 |
- os.chdir(cwd) |
77 |
+ # Untar it at '/'. tar will not clobber files. |
78 |
+ cwd = os.getcwd() |
79 |
+ os.chdir('/') |
80 |
+ cmd = 'tar --overwrite -Jxf %s' % kpath |
81 |
+ Execute(cmd, timeout=600, logfile=logfile) |
82 |
+ os.chdir(cwd) |
83 |
|
84 |
|
85 |
def usage(rc=1): |
86 |
@@ -127,15 +137,17 @@ def main(): |
87 |
elif o == '-d': |
88 |
if len(myfiles) == 0 or exclude > 1: |
89 |
usage() |
90 |
- args.insert(0, '-q --unmerge') |
91 |
+ args.insert(0, '--unmerge') |
92 |
+ args.insert(0, '-q') |
93 |
exclude += 1 |
94 |
elif o == '-C': |
95 |
if len(myfiles) > 0: |
96 |
usage() |
97 |
args = ['-gefq', '@world'] |
98 |
- elif o == '=k': |
99 |
+ elif o == '-k': |
100 |
if len(sys.argv[1:]) != 2: |
101 |
usage() |
102 |
+ version = a |
103 |
do_install_kernel = True |
104 |
|
105 |
if len(CONST.names) > 1: |
106 |
@@ -165,7 +177,7 @@ def main(): |
107 |
WorldConf.install() |
108 |
|
109 |
if do_install_kernel: |
110 |
- install_kernel(a) |
111 |
+ install_kernel(version=version) |
112 |
else: |
113 |
try: |
114 |
emerge_main(args) |
115 |
@@ -182,10 +194,8 @@ def main(): |
116 |
sys.exit(1) |
117 |
|
118 |
WorldConf.clean() |
119 |
- try: |
120 |
+ if os.path.exists(CONST.PORTAGE_DIRTYFILE): |
121 |
os.remove(CONST.PORTAGE_DIRTYFILE) |
122 |
- except (FileNotFoundError, IsADirectoryError): |
123 |
- pass |
124 |
|
125 |
|
126 |
if __name__ == "__main__": |
127 |
@@ -194,7 +204,5 @@ if __name__ == "__main__": |
128 |
except KeyboardInterrupt: |
129 |
sys.stderr.write("Cleaning up /etc/portage. This make take some time.\n") |
130 |
WorldConf.clean() |
131 |
- try: |
132 |
+ if os.path.exists(CONST.PORTAGE_DIRTYFILE): |
133 |
os.remove(CONST.PORTAGE_DIRTYFILE) |
134 |
- except (FileNotFoundError, IsADirectoryError): |
135 |
- pass |