summaryrefslogtreecommitdiff
path: root/install
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-09-13 15:47:54 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-09-13 15:47:54 +0400
commitd185d3e9cf50711e2f39b9b7acd1eb82ce443f02 (patch)
tree41f6df75cdfeb319935c897eab804733a010f1c1 /install
parentc42938aff0ddf226bf5c2e45030e247fadb83e89 (diff)
downloadlive-d185d3e9cf50711e2f39b9b7acd1eb82ce443f02.tar.gz
Run apt-get install
Diffstat (limited to 'install')
-rwxr-xr-xinstall42
1 files changed, 41 insertions, 1 deletions
diff --git a/install b/install
index caba4e1..f02362b 100755
--- a/install
+++ b/install
@@ -805,14 +805,54 @@ def apt_get_update(log):
return os.WEXITSTATUS(status)
+def apt_get_install(log, packages):
+ progress = ProgressBar(screen, title='Installing packages', 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 install', rootdir,
+ '/usr/bin/apt-get', '-y', '-o', 'APT::Status-Fd=' + str(write),
+ 'install', *packages)
+ 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(':')
+ percent = float(percent)
+ except:
+ os.write(log, 'Installer failed to parse line "{}"'.format(line))
+ continue
+ if status == 'dlstatus':
+ percent = percent / 2.0
+ elif status == 'pmstatus':
+ percent = 50.0 + percent / 2.0
+ else:
+ continue
+ progress.progress = math.ceil(percent)
+ progress.text = text
-
+ status = os.wait()[1]
+ # apt-get sometimes reports less than 100% at the end
+ progress.progress = 100
+ return os.WEXITSTATUS(status)
def install_profile():
logfile = rootdir + '/root/apt-get.log'
log = os.open(logfile, os.O_WRONLY + os.O_CREAT)
code = apt_get_update(log)
+ code = apt_get_install(log, ['abiword', 'sylpheed'])
os.close(log)