[elbe-devel] [PATCH] commands: gen_update: fixed handling of pre/post.sh scripts
Manuel Traut
manuel.traut at linutronix.de
Fri Dec 8 18:49:28 CET 2017
On Wed, Nov 29, 2017 at 02:52:53PM +0100, Kurt Kanzenbach wrote:
> The current code throws an exception if the generation of update package
> includes a pre and/or post shell script. Example:
>
> root at elbe-daemon:# elbe gen_update -t . -p pre.sh -o test.pkg source.xml
> [...]
> Traceback (most recent call last):
> File "/usr/bin/elbe", line 61, in <module>
> cmdmod.run_command( sys.argv[2:] )
> File "/usr/lib/python2.7/dist-packages/elbepack/commands/gen_update.py", line 103, in run_command
> cfg_dir = opt.cfg_dir, cmd_dir = opt.cmd_dir )
> File "/usr/lib/python2.7/dist-packages/elbepack/updatepkg.py", line 136, in gen_update_pkg
> copyfile (project.presh_file, update + '/pre.sh')
> File "/usr/lib/python2.7/shutil.py", line 68, in copyfile
> if _samefile(src, dst):
> File "/usr/lib/python2.7/shutil.py", line 58, in _samefile
> return os.path.samefile(src, dst)
> File "/usr/lib/python2.7/posixpath.py", line 162, in samefile
> s1 = os.stat(f1)
> TypeError: coercing to Unicode: need string or buffer, file found
>
> The problem is, the code expects presh_file and postsh_file to be
> strings. But they're file objects. So using strings fixes the issue.
>
> Furthermore, adding a sanity check if the files actually exist and
> printing a useful message to the user.
>
> Signed-off-by: Kurt Kanzenbach <kurt at linutronix.de>
thanks, applied to devel/elbe-3.0 (with little py3 rework for the prints)
> ---
> elbepack/commands/gen_update.py | 21 +++++++--------------
> 1 file changed, 7 insertions(+), 14 deletions(-)
>
> diff --git a/elbepack/commands/gen_update.py b/elbepack/commands/gen_update.py
> index 9aa4a000..7d7e00d0 100644
> --- a/elbepack/commands/gen_update.py
> +++ b/elbepack/commands/gen_update.py
> @@ -20,6 +20,7 @@
>
> from optparse import OptionParser
> import sys
> +import os.path
>
> from elbepack.elbeproject import ElbeProject
> from elbepack.elbexml import ValidationError
> @@ -80,18 +81,16 @@ def run_command( argv ):
> sys.exit(20)
>
> if opt.presh_file:
> - try:
> - project.presh_file = open (opt.presh_file)
> - except IOError as e:
> - print 'pre.sh file invalid: %s' % str (e)
> + if not os.path.isfile(opt.presh_file):
> + print 'pre.sh file does not exist'
> sys.exit(20)
> + project.presh_file = opt.presh_file
>
> if opt.postsh_file:
> - try:
> - project.postsh_file = open (opt.postsh_file)
> - except IOError as e:
> - print 'post.sh file invalid: %s' % str (e)
> + if not os.path.isfile(opt.postsh_file):
> + print 'post.sh file does not exist'
> sys.exit(20)
> + project.postsh_file = opt.postsh_file
>
> update_xml = None
> if len(args) >= 1:
> @@ -109,9 +108,3 @@ def run_command( argv ):
> except MissingData as e:
> print str(e)
> sys.exit(20)
> -
> - if project.postsh_file:
> - project.postsh_file.close ()
> -
> - if project.presh_file:
> - project.presh_file.close ()
> --
> 2.11.0
>
>
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel
More information about the elbe-devel
mailing list