[meta-ti] [PATCH v2 1/2] ti-eula-unpack: Add support for general binary installers.
Stiffler, Jacob
j-stiffler at ti.com
Fri Feb 20 07:14:15 PST 2015
I had used the "-M" option. I will try with "-Mxx".
-----Original Message-----
From: Dmytriyenko, Denys
Sent: Thursday, February 19, 2015 9:59 PM
To: Stiffler, Jacob
Cc: meta-ti at yoctoproject.org
Subject: Re: [meta-ti] [PATCH v2 1/2] ti-eula-unpack: Add support for general binary installers.
Jake,
Can you generate this patch with -M or -Mxx where xx is the percentage of similarities between the 2 files? I'm suspecting it will be much easier to review the patch...
--
Denys
On Thu, Feb 05, 2015 at 10:28:28AM -0500, Jacob Stiffler wrote:
> * 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>
> ---
> recipes-ti/includes/ti-eula-unpack.inc | 67 +-------------------------
> recipes-ti/includes/ti-unpack.inc | 83 ++++++++++++++++++++++++++++++++
> 2 files changed, 85 insertions(+), 65 deletions(-)
> create mode 100644 recipes-ti/includes/ti-unpack.inc
>
> 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-unpack.inc b/recipes-ti/includes/ti-unpack.inc
> new file mode 100644
> index 0000000..c19c78c
> --- /dev/null
> +++ b/recipes-ti/includes/ti-unpack.inc
> @@ -0,0 +1,83 @@
> +# This file defines function used for unpacking the .bin file downloaded over
> +# 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
> +# 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 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( ":" )
> +
> + # 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 %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
> + #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)
> +}
> +
> --
> 1.7.9.5
>
> --
> _______________________________________________
> meta-ti mailing list
> meta-ti at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-ti
More information about the meta-ti
mailing list