[Toaster] [review-request][PATCH] toaster: Rationalise mimetype guessing to fix artifact downloads

Ed Bartosh ed.bartosh at linux.intel.com
Mon Sep 28 02:05:30 PDT 2015


Hi Elliot,

The patch looks great! Thanks you!

Acked-by: Ed Bartosh <ed.bartosh at linux.intel.com>

On Thu, Sep 24, 2015 at 02:14:21PM +0100, Elliot Smith wrote:
> Artifact download links were broken because the function to
> get the mimetype for the artifact was incorrectly using the
> underlying mimetype library. The function was also attached
> to the build environment controller, which was unnecessary, as
> we only support local controllers anyway.
> 
> Remove the mimetype getter on the build environment and
> use the one in the view code instead. This works correctly
> and prevents the download error from occurring.
> 
> [YOCTO #8369]
> 
> Signed-off-by: Elliot Smith <elliot.smith at intel.com>
> ---
>  bitbake/lib/toaster/bldcontrol/models.py | 34 --------------------------------
>  bitbake/lib/toaster/toastergui/views.py  |  2 +-
>  2 files changed, 1 insertion(+), 35 deletions(-)
> 
> diff --git a/bitbake/lib/toaster/bldcontrol/models.py b/bitbake/lib/toaster/bldcontrol/models.py
> index b61de58..c577b10 100644
> --- a/bitbake/lib/toaster/bldcontrol/models.py
> +++ b/bitbake/lib/toaster/bldcontrol/models.py
> @@ -39,40 +39,6 @@ class BuildEnvironment(models.Model):
>      created     = models.DateTimeField(auto_now_add = True)
>      updated     = models.DateTimeField(auto_now = True)
>  
> -
> -    def get_artifact_type(self, path):
> -        if self.betype == BuildEnvironment.TYPE_LOCAL:
> -            try:
> -                import magic
> -
> -                # fair warning: this is a mess; there are multiple competeing and incompatible
> -                # magic modules floating around, so we try some of the most common combinations
> -
> -                try:    # we try ubuntu's python-magic 5.4
> -                    m = magic.open(magic.MAGIC_MIME_TYPE)
> -                    m.load()
> -                    return m.file(path)
> -                except AttributeError:
> -                    pass
> -
> -                try:    # we try python-magic 0.4.6
> -                    m = magic.Magic(magic.MAGIC_MIME)
> -                    return m.from_file(path)
> -                except AttributeError:
> -                    pass
> -
> -                try:    # we try pip filemagic 1.6
> -                    m = magic.Magic(flags=magic.MAGIC_MIME_TYPE)
> -                    return m.id_filename(path)
> -                except AttributeError:
> -                    pass
> -
> -                return "binary/octet-stream"
> -            except ImportError:
> -                return "binary/octet-stream"
> -        raise Exception("FIXME: artifact type not implemented for build environment type %s" % self.get_betype_display())
> -
> -
>      def get_artifact(self, path):
>          if self.betype == BuildEnvironment.TYPE_LOCAL:
>              return open(path, "r")
> diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
> index 8689a12..2ec0197 100755
> --- a/bitbake/lib/toaster/toastergui/views.py
> +++ b/bitbake/lib/toaster/toastergui/views.py
> @@ -2797,7 +2797,7 @@ if True:
>              if file_name is None:
>                  raise Exception("Could not handle artifact %s id %s" % (artifact_type, artifact_id))
>              else:
> -                content_type = b.buildrequest.environment.get_artifact_type(file_name)
> +                content_type = MimeTypeFinder.get_mimetype(file_name)
>                  fsock = b.buildrequest.environment.get_artifact(file_name)
>                  file_name = os.path.basename(file_name) # we assume that the build environment system has the same path conventions as host
>  
> -- 
> Elliot Smith
> Software Engineer
> Intel OTC
> 
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
> 
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> 
> -- 
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster

-- 
--
Regards,
Ed


More information about the toaster mailing list