ios-xr / gisobuild

Golden ISO build tool for ios-xr
Other
29 stars 13 forks source link

Builds failing since v0.35: boot.catalog returned --->/bin/sh: 1: Syntax error: redirection unexpected #12

Closed mivens closed 2 years ago

mivens commented 3 years ago

Tool broken since version 0.35.

Environment:

$ cat /etc/issue
Ubuntu 20.04.3 LTS \n \l

Version 0.34 works:

$ ./gisobuild-0.34.py -v
gisobuild-0.34.py (version 0.34)
$ sudo ./gisobuild-0.34.py -l v0 -i ncs5500-mini-x-7.1.2.iso -r ncs5500-sysadmin-7.1.2.CSCvx16766

System requirements check [PASS]
Golden ISO build process starting...

Platform: ncs5500 Version: 7.1.2

Scanning repository [/usr/local/giso/giso-ncs5500-712/ncs5500-sysadmin-7.1.2.CSCvx16766]...

Building RPM Database...

Total 4 RPM(s) present in the repository path provided in CLI
[ 1] ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.x86_64.rpm
[ 2] ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.arm.rpm
[ 3] ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.x86_64.rpm
[ 4] ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.arm.rpm

Following SYSADMIN x86_64 rpm(s) will be used for building Golden ISO:

    (+) ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.x86_64.rpm
    (+) ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.x86_64.rpm

Following SYSADMIN arm rpm(s) will be used for building Golden ISO:

    (+) ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.arm.rpm
    (+) ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.arm.rpm

    ...RPM signature check [PASS]

    ...RPM compatibility check [PASS]

Building Golden ISO...
Summary .....

SYSADMIN rpms:
    ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.x86_64.rpm
    ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.x86_64.rpm
    ncs5500-sysadmin-ncs5500-7.1.2.3-r712.CSCvx16766.arm.rpm
    ncs5500-sysadmin-system-7.1.2.3-r712.CSCvx16766.arm.rpm

    ...Golden ISO creation SUCCESS.

Golden ISO Image Location: /usr/local/giso/giso-ncs5500-712/ncs5500-golden-x-7.1.2-v0.iso

Version 0.35 broken:

$ gisobuild.py -v
gisobuild.py (version 0.35)
$ gisobuild.py -l v0 -i ncs5500-mini-x-7.1.2.iso -r ncs5500-sysadmin-7.1.2.CSCvx16766

System requirements check [PASS]
Golden ISO build process starting...

 Exception: <class 'RuntimeError'> Error CMD=IFS='[] ' read -a a <<< $(isoinfo -i ncs5500-mini-x-7.1.2.iso -R -l | grep " boot.catalog") && dd bs=2048 skip=${a[8]} if=ncs5500-mini-x-7.1.2.iso | head -${a[4]}c > /usr/local/giso/giso-ncs5500-712/tmpq7k5uzsq/boot.catalog returned --->/bin/sh: 1: Syntax error: redirection unexpected

Detailed logs:

 2021-09-09 08:18:13::  ##############START#####################
2021-09-09 08:18:13::  Tool version is 0.35
2021-09-09 08:18:13::  Info: XR Congifuration file not specified.
2021-09-09 08:18:13::  Info: Golden ISO will not have XR configuration file
2021-09-09 08:18:13::  Info: User script is not specified.
2021-09-09 08:18:13::  Argument passed to /usr/local/bin/gisobuild.py : Namespace(bundle_iso=['ncs5500-mini-x-7.1.2.iso'], fullISO=False, gisoExtend=False, gisoInfo=False, gisoLabel=['v0'], migTar=False, pkglist=None, rpmRepo=[['ncs5500-sysadmin-7.1.2.CSCvx16766']], script=None, skipDepCheck=False, x86_only=False, xrConfig=None, ztp_ini=None)
2021-09-09 08:18:13::
Performing System requirements check...
2021-09-09 08:18:13::
System requirements check [PASS]
2021-09-09 08:18:13::  Golden ISO build process starting...
2021-09-09 08:18:13::  Cleaning Iso
2021-09-09 08:18:13::  Exiting with exception
2021-09-09 08:18:13::  TB:
Traceback (most recent call last):
  File "/usr/local/bin/gisobuild.py", line 3702, in <module>
    main(args)
  File "/usr/local/bin/gisobuild.py", line 3367, in main
    giso.set_giso_info(argv.bundle_iso[0])
  File "/usr/local/bin/gisobuild.py", line 2016, in set_giso_info
    self.bundle_iso.set_iso_info(iso_path)
  File "/usr/local/bin/gisobuild.py", line 1699, in set_iso_info
    readiso(self.iso_path, self.iso_mount_path)
  File "/usr/local/bin/gisobuild.py", line 3665, in readiso
    run_cmd(cmd)
  File "/usr/local/bin/gisobuild.py", line 94, in run_cmd
    raise RuntimeError("Error CMD=%s returned --->%s" % (cmd, out))
RuntimeError: Error CMD=IFS='[] ' read -a a <<< $(isoinfo -i ncs5500-mini-x-7.1.2.iso -R -l | grep " boot.catalog") && dd bs=2048 skip=${a[8]} if=ncs5500-mini-x-7.1.2.iso | head -${a[4]}c > /usr/local/giso/giso-ncs5500-712/tmpq7k5uzsq/boot.catalog returned --->/bin/sh: 1: Syntax error: redirection unexpected
mivens commented 3 years ago

The error /bin/sh: 1: Syntax error: redirection unexpected is because the shell builtin command read that was used for the first time in v0.35 is not supported in /bin/sh which is the shell that is used by default by the Python OS module. The documentation says at https://docs.python.org/3/library/subprocess.html#popen-constructor:

"On POSIX with shell=True, the shell defaults to /bin/sh."

Can be fixed by adding "executable=/bin/bash in the argument to popen:


     def run_cmd(cmd):
         process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE, shell=True, executable='/bin/bash')
dipankarshaw commented 3 years ago

hi, I also got the same issue while working with the 0.35 version.

mivens commented 2 years ago

Fixed in version 0.36 / commit 6539978fb60da02fd389bb124664dd543717d0cf