[Buildroot] [PATCH v2] scanpypi: use archive file name to specify the extraction folder

Asaf Kahlon asafka7 at gmail.com
Fri Nov 2 15:28:03 UTC 2018


On Fri, Nov 2, 2018 at 3:45 PM <yegorslists at googlemail.com> wrote:
>
> From: Yegor Yefremov <yegorslists at googlemail.com>

Reviewed-by: Asaf Kahlon <asafka7 at gmail.com>
>
> Some packages have archive name that is different from package name.
> For example websocket-client's archive name is websocket_client-*.tar.gz.
> scanpypi expects the temporary extract folder to be:
>
> /tmp-folder/BR-package-name/PyPI-packagename-and-version
>
> In the case of websocket-client package the real extraction folder
> will be different from the expected one because of the '_' in the
> archive file name.
>
> Use archive file name instead of package name to specify the extraction
> folder. As the version is already part of this file, we don't need to
> specify it.
>
> Bonus: remove obsolete "return None, None" as the function doesn't return
> anything. OSError class doesn't provide "message" member, so replace it
> with "strerror".
>
> Fixes:
> https://bugs.busybox.net/show_bug.cgi?id=11251
>
> Signed-off-by: Yegor Yefremov <yegorslists at googlemail.com>
> ---
> Changes v1->v2:
>         - fix typos
>         - add fixes tag
>
>  utils/scanpypi | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/utils/scanpypi b/utils/scanpypi
> index 3983be1ad1..3d3e604435 100755
> --- a/utils/scanpypi
> +++ b/utils/scanpypi
> @@ -243,13 +243,14 @@ class BuildrootPackage():
>                      os.makedirs(tmp_pkg)
>                  except OSError as exception:
>                      if exception.errno != errno.EEXIST:
> -                        print("ERROR: ", exception.message, file=sys.stderr)
> -                        return None, None
> -                    print('WARNING:', exception.message, file=sys.stderr)
> +                        print("ERROR: ", exception.strerror, file=sys.stderr)
> +                        return
> +                    print('WARNING:', exception.strerror, file=sys.stderr)
>                      print('Removing {pkg}...'.format(pkg=tmp_pkg))
>                      shutil.rmtree(tmp_pkg)
>                      os.makedirs(tmp_pkg)
>                  as_zipfile.extractall(tmp_pkg)
> +                pkg_filename = self.filename.split(".zip")[0]
>          else:
>              with tarfile.open(fileobj=as_file) as as_tarfile:
>                  tmp_pkg = os.path.join(tmp_path, self.buildroot_name)
> @@ -257,19 +258,19 @@ class BuildrootPackage():
>                      os.makedirs(tmp_pkg)
>                  except OSError as exception:
>                      if exception.errno != errno.EEXIST:
> -                        print("ERROR: ", exception.message, file=sys.stderr)
> -                        return None, None
> -                    print('WARNING:', exception.message, file=sys.stderr)
> +                        print("ERROR: ", exception.strerror, file=sys.stderr)
> +                        return
> +                    print('WARNING:', exception.strerror, file=sys.stderr)
>                      print('Removing {pkg}...'.format(pkg=tmp_pkg))
>                      shutil.rmtree(tmp_pkg)
>                      os.makedirs(tmp_pkg)
>                  as_tarfile.extractall(tmp_pkg)
> +                pkg_filename = self.filename.split(".tar")[0]
>
> -        tmp_extract = '{folder}/{name}-{version}'
> +        tmp_extract = '{folder}/{name}'
>          self.tmp_extract = tmp_extract.format(
>              folder=tmp_pkg,
> -            name=self.metadata_name,
> -            version=self.version)
> +            name=pkg_filename)
>
>      def load_setup(self):
>          """
> --
> 2.17.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot


More information about the buildroot mailing list