1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# This file defines function used for unpacking the .bin file downloaded over
# the http and display EULA.
# BINFILE - name of the install jammer .bin file
# TARFILE - name of the tar file inside the install jammer
# TI_BIN_UNPK_CMDS - contains list of commands separated with colon to be
# passed while unpacking the bin file. The keyword
# workdir expands to WORKDIR and commands are appendded
# with '\n'. Eg. TI_BIN_UNPK_CMDS="Y:Y: qY:workdir"
# TI_BIN_UNPK_WDEXT - This variable extends workdir path, if user wants to put
# the output in some internal directory
python do_unpack () {
bb.build.exec_func('base_do_unpack', d)
bb.build.exec_func('ti_bin_do_unpack', d)
}
TI_BIN_UNPK_WDEXT += ""
python ti_bin_do_unpack() {
import os
# InstallJammer requires 32bit version of glibc
lib32path = '/lib'
if os.path.exists('/lib64') and (os.path.islink('/lib64') or os.path.islink('/lib') or os.path.exists('/lib32')):
lib32path = '/lib32'
if not os.path.exists('%s/libc.so.6' % lib32path):
bb.warn("TI installer requires 32bit glibc libraries for proper operation\nrun 'yum install glibc.i686' on Fedora or 'apt-get install ia32-libs' on Ubuntu/Debian")
localdata = bb.data.createCopy(d)
bb.data.update_data(localdata)
binfile = bb.data.getVar('BINFILE', localdata)
binfile = bb.data.expand(binfile, localdata)
# Change to the working directory
save_cwd = os.getcwd()
workdir = bb.data.getVar('WORKDIR', localdata)
workdir = bb.data.expand(workdir, localdata)
os.chdir(workdir)
# Get unpack commands
cmd_string = bb.data.getVar('TI_BIN_UNPK_CMDS', localdata)
cmd_list = cmd_string.split( ":" )
# Make the InstallJammer binary executable so we can run it
os.chmod(binfile, 0755)
# Run the InstallJammer binary and accept the EULA
filename = "HOME=%s ./%s --mode console" % (workdir, binfile)
# Test executable by printing installer version or help screen (--version currently broken for some installers)
# - this is currently broken in some IJ installers - comment out for now
#if os.system(filename + " --version") != 0:
# print "ERROR: ti-eula-unpack: failed to execute binary installer"
# raise bb.build.FuncFailed()
f = os.popen(filename,'w')
for cmd in cmd_list:
if cmd == "workdir":
wdext = bb.data.getVar('TI_BIN_UNPK_WDEXT', localdata)
wdext = bb.data.expand(wdext, localdata)
cmd = workdir+wdext
print >>f, cmd
f.close()
# Expand the tarball that was created if required
tarfile = bb.data.getVar('TARFILE', localdata)
if bool(tarfile) == True:
tarfile = bb.data.expand(tarfile, localdata)
tcmd = 'tar x --no-same-owner -f %s -C %s' % (tarfile, workdir)
if os.system(tcmd) != 0:
print "ERROR: ti-eula-unpack: failed to extract tarfile"
raise bb.build.FuncFailed()
# Return to the previous directory
os.chdir(save_cwd)
}
|