From b0df8edf7e9cdec5b4dba260eeec99b5e62e74bd Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sun, 8 Sep 2013 21:54:31 +0400 Subject: Run apt-get update --- install | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/install b/install index a191445..4bcb624 100755 --- a/install +++ b/install @@ -771,8 +771,49 @@ def install_minimal(): umount_in_bootenv() # debootstrap mounts required FS for us call(['zfs', 'rollback', '-r', bootenv + '@empty']) + +def apt_get_update(log): + progress = ProgressBar(screen, title='Updating APT cache', text='Please wait ...') + read, write = os.pipe() + pid = os.fork() + if pid == 0: + os.close(read) + os.dup2(log, 1) + os.dup2(log, 2) + try: + os.execl('/usr/sbin/chroot', 'chroot apt-get update', rootdir, + '/usr/bin/apt-get', '-o', 'APT::Status-Fd=' + str(write), 'update') + except EnvironmentError as e: + os.write(log, str(e)) + sys.exit(e.errno) + else: # Parent + os.close(write) + pr = os.fdopen(read, 'r', 1) + while True: + line = pr.readline() + if not line: + break + try: + (status, f, percent, text) = line.split(':') + except: + os.write(log, 'Installer failed to parse line "{}"'.format(line)) + continue + progress.progress = float(percent) + progress.text = text + + status = os.wait()[1] + return os.WEXITSTATUS(status) + + + + + + def install_profile(): - pass + logfile = rootdir + '/root/apt-get.log' + log = os.open(logfile, os.O_WRONLY + os.O_CREAT) + code = apt_get_update(log) + os.close(log) def umount_in_bootenv(): -- cgit v1.2.3