[meta-ti] [PATCH] ti-eula-unpack: Add support for general binary installers.
Denys Dmytriyenko
denis at denix.org
Fri Feb 20 08:56:58 PST 2015
From: Jacob Stiffler <j-stiffler at ti.com>
* ti-unpack.inc has been created to allow support for general binary
installers by creating a variable which is used to pass arbitrary
arguments to the executable.
* ti-eula-unpack.inc sets the default arguments to retain support for
recipes which still use this feature.
Signed-off-by: Jacob Stiffler <j-stiffler at ti.com>
Signed-off-by: Denys Dmytriyenko <denys at ti.com>
---
recipes-ti/includes/ti-eula-unpack.inc | 67 +-------------------
.../includes/{ti-eula-unpack.inc => ti-unpack.inc} | 9 ++-
2 files changed, 9 insertions(+), 67 deletions(-)
copy recipes-ti/includes/{ti-eula-unpack.inc => ti-unpack.inc} (91%)
diff --git a/recipes-ti/includes/ti-eula-unpack.inc b/recipes-ti/includes/ti-eula-unpack.inc
index aee88f1..912cd18 100644
--- a/recipes-ti/includes/ti-eula-unpack.inc
+++ b/recipes-ti/includes/ti-eula-unpack.inc
@@ -9,70 +9,7 @@
# 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)
-}
+require ../includes/ti-unpack.inc
-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
- f.write(cmd+'\n');
- 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)
-}
+TI_BIN_UNPK_ARGS = "--mode console"
diff --git a/recipes-ti/includes/ti-eula-unpack.inc b/recipes-ti/includes/ti-unpack.inc
similarity index 91%
copy from recipes-ti/includes/ti-eula-unpack.inc
copy to recipes-ti/includes/ti-unpack.inc
index aee88f1..c19c78c 100644
--- a/recipes-ti/includes/ti-eula-unpack.inc
+++ b/recipes-ti/includes/ti-unpack.inc
@@ -1,7 +1,8 @@
# This file defines function used for unpacking the .bin file downloaded over
-# the http and display EULA.
+# the http.
# BINFILE - name of the install jammer .bin file
# TARFILE - name of the tar file inside the install jammer
+# TI_BIN_UNPK_ARGS - contains the arguments to be passed to the bin file.
# 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
@@ -38,6 +39,10 @@ python ti_bin_do_unpack() {
workdir = bb.data.expand(workdir, localdata)
os.chdir(workdir)
+ # Get unpack args
+ arg_string = bb.data.getVar('TI_BIN_UNPK_ARGS', localdata)
+ arg_string = bb.data.expand(arg_string, localdata)
+
# Get unpack commands
cmd_string = bb.data.getVar('TI_BIN_UNPK_CMDS', localdata)
cmd_list = cmd_string.split( ":" )
@@ -46,7 +51,7 @@ python ti_bin_do_unpack() {
os.chmod(binfile, 0755)
# Run the InstallJammer binary and accept the EULA
- filename = "HOME=%s ./%s --mode console" % (workdir, binfile)
+ filename = "HOME=%s ./%s %s" % (workdir, binfile, arg_string)
# 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
--
1.7.9.5
More information about the meta-ti
mailing list