diff options
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 = { |
