commit: 19942482c18d4d358c89d5db5736d8843af3ae99
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 5 23:58:44 2015 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Sun Jul 5 23:58:44 2015 +0000
URL: https://gitweb.gentoo.org/proj/grss.git/commit/?id=19942482
grsup: fix kernel install and other errors.
grsup | 56 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 24 deletions(-)
diff --git a/grsup b/grsup
index 57029a7..bb5330f 100755
--- a/grsup
+++ b/grsup
@@ -12,6 +12,7 @@ from getopt import getopt, GetoptError
from html.parser import HTMLParser
from grs import CONST
+from grs import Execute
from grs import Log
from grs import Synchronize
from grs import WorldConf
@@ -44,7 +45,7 @@ def install_kernel(version = 'latest', logfile =
CONST.LOGFILE):
return
try:
- request = urllib.request.urlopen(baseurl)
+ request = urllib.request.urlopen('%s/%s' % (baseurl,'linux-images'))
dload = request.read().decode('utf-8')
except urllib.error.HTTPError:
print('Cannot open %s' % baseurl)
@@ -56,7 +57,11 @@ def install_kernel(version = 'latest', logfile =
CONST.LOGFILE):
kernels.sort()
if version == 'latest':
- kernel = kernels[-1]
+ try:
+ kernel = kernels[-1]
+ except IndexError:
+ print('No linux-image available')
+ return
else:
for k in kernels:
m = re.search('linux-image-(.+).tar.xz', k)
@@ -67,20 +72,25 @@ def install_kernel(version = 'latest', logfile =
CONST.LOGFILE):
print('No linux-image %s available' % version)
return
- # Download the linux-image tarball to packages/linux-image
- request = urllib.request.urlopen('%s/%s' % (baseurl, kernel))
- package = '/usr/portage/packages/linux-images'
- os.makedirs(package, mode=0o755, exist_ok=True)
- kpath = os.path.join(package, kernel)
- with open(kpath, 'wb') as f:
- shutil.copyfileobj(request, f)
+ # Download the linux-image tarball to packages/linux-image
+ request = urllib.request.urlopen('%s/%s/%s' % (baseurl, 'linux-images',
kernel))
+ package = '/usr/portage/packages/linux-images'
+ os.makedirs(package, mode=0o755, exist_ok=True)
+ kpath = os.path.join(package, kernel)
+ with open(kpath, 'wb') as f:
+ shutil.copyfileobj(request, f)
+
+ # Try to mount /boot. Fail silently since it may not be mountable.
+ if not os.path.ismount('/boot'):
+ cmd = 'mount /boot'
+ Execute(cmd, timeout=60, failok=True, logfile=logfile)
- # Untar it at '/'. tar will not clobber files.
- cwd = os.getcwd()
- os.chdir('/')
- cmd = 'tar -Jxf %s' % kpath
- Execute(cmd, timeout=600, logfile=logfile)
- os.chdir(cwd)
+ # Untar it at '/'. tar will not clobber files.
+ cwd = os.getcwd()
+ os.chdir('/')
+ cmd = 'tar --overwrite -Jxf %s' % kpath
+ Execute(cmd, timeout=600, logfile=logfile)
+ os.chdir(cwd)
def usage(rc=1):
@@ -127,15 +137,17 @@ def main():
elif o == '-d':
if len(myfiles) == 0 or exclude > 1:
usage()
- args.insert(0, '-q --unmerge')
+ args.insert(0, '--unmerge')
+ args.insert(0, '-q')
exclude += 1
elif o == '-C':
if len(myfiles) > 0:
usage()
args = ['-gefq', '@world']
- elif o == '=k':
+ elif o == '-k':
if len(sys.argv[1:]) != 2:
usage()
+ version = a
do_install_kernel = True
if len(CONST.names) > 1:
@@ -165,7 +177,7 @@ def main():
WorldConf.install()
if do_install_kernel:
- install_kernel(a)
+ install_kernel(version=version)
else:
try:
emerge_main(args)
@@ -182,10 +194,8 @@ def main():
sys.exit(1)
WorldConf.clean()
- try:
+ if os.path.exists(CONST.PORTAGE_DIRTYFILE):
os.remove(CONST.PORTAGE_DIRTYFILE)
- except (FileNotFoundError, IsADirectoryError):
- pass
if __name__ == "__main__":
@@ -194,7 +204,5 @@ if __name__ == "__main__":
except KeyboardInterrupt:
sys.stderr.write("Cleaning up /etc/portage. This make take some
time.\n")
WorldConf.clean()
- try:
+ if os.path.exists(CONST.PORTAGE_DIRTYFILE):
os.remove(CONST.PORTAGE_DIRTYFILE)
- except (FileNotFoundError, IsADirectoryError):
- pass