summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster')
-rw-r--r--bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py22
-rw-r--r--bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py24
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py13
3 files changed, 8 insertions, 51 deletions
diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py b/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
index 3ccc7c67c9..b2c573c9eb 100644
--- a/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
+++ b/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
@@ -64,27 +64,6 @@ class Command(NoArgsCommand):
64 return "" 64 return ""
65 return DN(self._find_first_path_for_file(DN(self.guesspath), "bblayers.conf", 4)) 65 return DN(self._find_first_path_for_file(DN(self.guesspath), "bblayers.conf", 4))
66 66
67
68 def _verify_artifact_storage_dir(self):
69 # verify that we have a settings for downloading artifacts
70 while ToasterSetting.objects.filter(name="ARTIFACTS_STORAGE_DIR").count() == 0:
71 guessedpath = os.getcwd() + "/toaster_build_artifacts/"
72 print("\nToaster needs to know in which directory it can download build log files and other artifacts.\nToaster suggests \"%s\"." % guessedpath)
73 artifacts_storage_dir = raw_input("Press Enter to select \"%s\" or type the full path to a different directory: " % guessedpath)
74 if len(artifacts_storage_dir) == 0:
75 artifacts_storage_dir = guessedpath
76 if len(artifacts_storage_dir) > 0 and artifacts_storage_dir.startswith("/"):
77 try:
78 os.makedirs(artifacts_storage_dir)
79 except OSError as ose:
80 if "File exists" in str(ose):
81 pass
82 else:
83 raise ose
84 ToasterSetting.objects.create(name="ARTIFACTS_STORAGE_DIR", value=artifacts_storage_dir)
85 return 0
86
87
88 def _verify_build_environment(self): 67 def _verify_build_environment(self):
89 # refuse to start if we have no build environments 68 # refuse to start if we have no build environments
90 while BuildEnvironment.objects.count() == 0: 69 while BuildEnvironment.objects.count() == 0:
@@ -239,7 +218,6 @@ class Command(NoArgsCommand):
239 218
240 def handle_noargs(self, **options): 219 def handle_noargs(self, **options):
241 retval = 0 220 retval = 0
242 retval += self._verify_artifact_storage_dir()
243 retval += self._verify_build_environment() 221 retval += self._verify_build_environment()
244 retval += self._verify_default_settings() 222 retval += self._verify_default_settings()
245 retval += self._verify_builds_in_progress() 223 retval += self._verify_builds_in_progress()
diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
index c3e9b74c09..718e1441dc 100644
--- a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
+++ b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
@@ -77,31 +77,11 @@ class Command(NoArgsCommand):
77 bec.be.save() 77 bec.be.save()
78 78
79 def archive(self): 79 def archive(self):
80 ''' archives data from the builds '''
81 artifact_storage_dir = ToasterSetting.objects.get(name="ARTIFACTS_STORAGE_DIR").value
82 for br in BuildRequest.objects.filter(state = BuildRequest.REQ_ARCHIVE): 80 for br in BuildRequest.objects.filter(state = BuildRequest.REQ_ARCHIVE):
83 # save cooker log
84 if br.build == None: 81 if br.build == None:
85 br.state = BuildRequest.REQ_FAILED 82 br.state = BuildRequest.REQ_FAILED
86 br.save() 83 else:
87 continue 84 br.state = BuildRequest.REQ_COMPLETED
88 build_artifact_storage_dir = os.path.join(artifact_storage_dir, "%d" % br.build.pk)
89 try:
90 os.makedirs(build_artifact_storage_dir)
91 except OSError as ose:
92 if "File exists" in str(ose):
93 pass
94 else:
95 raise ose
96
97 file_name = os.path.join(build_artifact_storage_dir, "cooker_log.txt")
98 try:
99 with open(file_name, "w") as f:
100 f.write(br.environment.get_artifact(br.build.cooker_log_path).read())
101 except IOError:
102 os.unlink(file_name)
103
104 br.state = BuildRequest.REQ_COMPLETED
105 br.save() 85 br.save()
106 86
107 def cleanup(self): 87 def cleanup(self):
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 4e8f69e801..784272fd70 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -2710,7 +2710,6 @@ if True:
2710 2710
2711 def build_artifact(request, build_id, artifact_type, artifact_id): 2711 def build_artifact(request, build_id, artifact_type, artifact_id):
2712 if artifact_type in ["cookerlog"]: 2712 if artifact_type in ["cookerlog"]:
2713 # these artifacts are saved after building, so they are on the server itself
2714 def _mimetype_for_artifact(path): 2713 def _mimetype_for_artifact(path):
2715 try: 2714 try:
2716 import magic 2715 import magic
@@ -2741,16 +2740,16 @@ if True:
2741 except ImportError: 2740 except ImportError:
2742 return "binary/octet-stream" 2741 return "binary/octet-stream"
2743 try: 2742 try:
2744 # match code with runbuilds.Command.archive() 2743 build = Build.objects.get(pk = build_id)
2745 build_artifact_storage_dir = os.path.join(ToasterSetting.objects.get(name="ARTIFACTS_STORAGE_DIR").value, "%d" % int(build_id)) 2744 file_name = build.cooker_log_path
2746 file_name = os.path.join(build_artifact_storage_dir, "cooker_log.txt")
2747
2748 fsock = open(file_name, "r") 2745 fsock = open(file_name, "r")
2749 content_type=_mimetype_for_artifact(file_name) 2746 content_type = _mimetype_for_artifact(file_name)
2750 2747
2751 response = HttpResponse(fsock, content_type = content_type) 2748 response = HttpResponse(fsock, content_type = content_type)
2752 2749
2753 response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_name) 2750 disposition = 'attachment; filename=cooker.log'
2751 response['Content-Disposition'] = disposition
2752
2754 return response 2753 return response
2755 except IOError: 2754 except IOError:
2756 context = { 2755 context = {