Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/grss:master commit in: /
Date: Sun, 05 Jul 2015 23:56:24
Message-Id: 1436140724.19942482c18d4d358c89d5db5736d8843af3ae99.blueness@gentoo
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