* [review-request][PATCH] toaster: Rationalise mimetype guessing to fix artifact downloads
@ 2015-09-24 13:14 Elliot Smith
2015-09-28 9:05 ` Ed Bartosh
0 siblings, 1 reply; 2+ messages in thread
From: Elliot Smith @ 2015-09-24 13:14 UTC (permalink / raw)
To: toaster
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@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.
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [review-request][PATCH] toaster: Rationalise mimetype guessing to fix artifact downloads
2015-09-24 13:14 [review-request][PATCH] toaster: Rationalise mimetype guessing to fix artifact downloads Elliot Smith
@ 2015-09-28 9:05 ` Ed Bartosh
0 siblings, 0 replies; 2+ messages in thread
From: Ed Bartosh @ 2015-09-28 9:05 UTC (permalink / raw)
To: Elliot Smith; +Cc: toaster
Hi Elliot,
The patch looks great! Thanks you!
Acked-by: Ed Bartosh <ed.bartosh@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@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@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
--
--
Regards,
Ed
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-09-28 9:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-24 13:14 [review-request][PATCH] toaster: Rationalise mimetype guessing to fix artifact downloads Elliot Smith
2015-09-28 9:05 ` Ed Bartosh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.