diff options
Diffstat (limited to 'bitbake/lib/toaster')
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 = { |