summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/bldcontrol/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/bldcontrol/models.py')
-rw-r--r--bitbake/lib/toaster/bldcontrol/models.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/bitbake/lib/toaster/bldcontrol/models.py b/bitbake/lib/toaster/bldcontrol/models.py
index f72fb8fbc9..e643d08603 100644
--- a/bitbake/lib/toaster/bldcontrol/models.py
+++ b/bitbake/lib/toaster/bldcontrol/models.py
@@ -42,11 +42,34 @@ class BuildEnvironment(models.Model):
42 42
43 def get_artifact_type(self, path): 43 def get_artifact_type(self, path):
44 if self.betype == BuildEnvironment.TYPE_LOCAL: 44 if self.betype == BuildEnvironment.TYPE_LOCAL:
45 import magic 45 try:
46 m = magic.open(magic.MAGIC_MIME_TYPE) 46 import magic
47 m.load() 47
48 return m.file(path) 48 # fair warning: this is a mess; there are multiple competeing and incompatible
49 raise Exception("FIXME: not implemented") 49 # magic modules floating around, so we try some of the most common combinations
50
51 try: # we try ubuntu's python-magic 5.4
52 m = magic.open(magic.MAGIC_MIME_TYPE)
53 m.load()
54 return m.file(path)
55 except AttributeError:
56 pass
57
58 try: # we try python-magic 0.4.6
59 m = magic.Magic(magic.MAGIC_MIME)
60 return m.from_file(path)
61 except AttributeError:
62 pass
63
64 try: # we try pip filemagic 1.6
65 m = magic.Magic(flags=magic.MAGIC_MIME_TYPE)
66 return m.id_filename(path)
67 except AttributeError:
68 pass
69
70 return "binary/octet-stream"
71 except ImportError:
72 return "binary/octet-stream"
50 73
51 def get_artifact(self, path): 74 def get_artifact(self, path):
52 if self.betype == BuildEnvironment.TYPE_LOCAL: 75 if self.betype == BuildEnvironment.TYPE_LOCAL: