Re: [PATCH] Replace the unar to more common archivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/07/2016 10:55 PM, Cole Robinson wrote:
> On 01/05/2016 11:22 PM, Lin Ma wrote:
>> Because some of distributions dont provide the unar (universal archiver),
>> Using more common archivers to replace it.
>>
>> Signed-off-by: Lin Ma <lma@xxxxxxxx>
>> ---
>>  virtconv/formats.py | 37 ++++++++++++++++++++++++++++++-------
>>  1 file changed, 30 insertions(+), 7 deletions(-)
>>
>> diff --git a/virtconv/formats.py b/virtconv/formats.py
>> index 9a6d237..ed8a66e 100644
>> --- a/virtconv/formats.py
>> +++ b/virtconv/formats.py
>> @@ -118,6 +118,8 @@ def _find_input(input_file, parser, print_cb):
>>      try:
>>          ext = os.path.splitext(input_file)[1]
>>          tempdir = None
>> +        binname = None
>> +        pkg = None
>>          if ext and ext[1:] in ["zip", "gz", "ova",
>>                  "tar", "bz2", "bzip2", "7z", "xz"]:
>>              basedir = "/var/tmp"
>> @@ -129,19 +131,40 @@ def _find_input(input_file, parser, print_cb):
>>  
>>              base = os.path.basename(input_file)
>>  
>> -            # check if 'unar' command existed.
>> -            if not find_executable("unar"):
>> +            if (ext[1:] == "zip"):
>> +                binname = "unzip"
>> +                pkg = "unzip"
>> +                cmd = ["unzip", "-o", "-d", tempdir, input_file]
>> +            elif (ext[1:] == "7z"):
>> +                binname = "7z"
>> +                pkg = "p7zip"
>> +                cmd = ["7z", "-o" + tempdir, "e", input_file]
>> +            elif (ext[1:] == "ova" or ext[1:] == "tar"):
>> +                binname = "tar"
>> +                pkg = "tar"
>> +                cmd = ["tar", "xf", input_file, "-C", tempdir]
>> +            elif (ext[1:] == "gz"):
>> +                binname = "gzip"
>> +                pkg = "gzip"
>> +                cmd = ["tar", "zxf", input_file, "-C", tempdir]
>> +            elif (ext[1:] == "bz2" or ext[1:] == "bzip2"):
>> +                binname = "bzip2"
>> +                pkg = "bzip2"
>> +                cmd = ["tar", "jxf", input_file, "-C", tempdir]
>> +            elif (ext[1:] == "xz"):
>> +                binname = "xz"
>> +                pkg = "xz"
>> +                cmd = ["tar", "Jxf", input_file, "-C", tempdir]
>> +            if not find_executable(binname):
>>                  raise RuntimeError(_("%s appears to be an archive, "
>> -                    "but 'unar' is not installed. "
>> -                    "Please either install 'unar', or extract the archive "
>> +                    "but '%s' is not installed. "
>> +                    "Please either install '%s', or extract the archive "
>>                      "yourself and point virt-convert at "
>> -                    "the extracted directory.") % base)
>> +                    "the extracted directory.") % (base, pkg, pkg))
>>  
>> -            cmd = ["unar", "-o", tempdir, base]
>>              print_cb(_("%s appears to be an archive, running: %s") %
>>                  (base, " ".join(cmd)))
>>  
>> -            cmd[-1] = input_file
>>              _run_cmd(cmd)
>>              force_clean.append(tempdir)
>>              input_file = tempdir
>>
> 
> This mostly looks good, but I'd like to keep the unar code path as well. I'll
> poke at it tomorrow
> 

Actually it doesn't seem to make much sense, the patch covers all the formats
we previously whitelist, so I just pushed it as is (with a small change to the
test output) Thanks!

- Cole

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux