diff options
| -rw-r--r-- | bitbake/lib/toaster/orm/models.py | 48 |
1 files changed, 11 insertions, 37 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 61737c7979..40cdb9e5c5 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py | |||
| @@ -440,51 +440,21 @@ class Build(models.Model): | |||
| 440 | """ | 440 | """ |
| 441 | Get list of file name extensions for images produced by this build | 441 | Get list of file name extensions for images produced by this build |
| 442 | """ | 442 | """ |
| 443 | targets = Target.objects.filter(build_id = self.id) | ||
| 444 | extensions = [] | 443 | extensions = [] |
| 445 | 444 | ||
| 446 | # pattern to match against file path for building extension string | 445 | targets = Target.objects.filter(build_id = self.id) |
| 447 | pattern = re.compile('\.([^\.]+?)$') | ||
| 448 | |||
| 449 | for target in targets: | 446 | for target in targets: |
| 450 | if (not target.is_image): | 447 | if (not target.is_image): |
| 451 | continue | 448 | continue |
| 452 | 449 | ||
| 453 | target_image_files = Target_Image_File.objects.filter(target_id = target.id) | 450 | target_image_files = Target_Image_File.objects.filter( |
| 451 | target_id=target.id) | ||
| 454 | 452 | ||
| 455 | for target_image_file in target_image_files: | 453 | for target_image_file in target_image_files: |
| 456 | file_name = os.path.basename(target_image_file.file_name) | 454 | extensions.append(target_image_file.suffix) |
| 457 | suffix = '' | 455 | |
| 458 | 456 | extensions = list(set(extensions)) | |
| 459 | continue_matching = True | 457 | extensions.sort() |
| 460 | |||
| 461 | # incrementally extract the suffix from the file path, | ||
| 462 | # checking it against the list of valid suffixes at each | ||
| 463 | # step; if the path is stripped of all potential suffix | ||
| 464 | # parts without matching a valid suffix, this returns all | ||
| 465 | # characters after the first '.' in the file name | ||
| 466 | while continue_matching: | ||
| 467 | matches = pattern.search(file_name) | ||
| 468 | |||
| 469 | if None == matches: | ||
| 470 | continue_matching = False | ||
| 471 | suffix = re.sub('^\.', '', suffix) | ||
| 472 | continue | ||
| 473 | else: | ||
| 474 | suffix = matches.group(1) + suffix | ||
| 475 | |||
| 476 | if suffix in Target_Image_File.SUFFIXES: | ||
| 477 | continue_matching = False | ||
| 478 | continue | ||
| 479 | else: | ||
| 480 | # reduce the file name and try to find the next | ||
| 481 | # segment from the path which might be part | ||
| 482 | # of the suffix | ||
| 483 | file_name = re.sub('.' + matches.group(1), '', file_name) | ||
| 484 | suffix = '.' + suffix | ||
| 485 | |||
| 486 | if not suffix in extensions: | ||
| 487 | extensions.append(suffix) | ||
| 488 | 458 | ||
| 489 | return ', '.join(extensions) | 459 | return ', '.join(extensions) |
| 490 | 460 | ||
| @@ -658,6 +628,10 @@ class Target_Image_File(models.Model): | |||
| 658 | 628 | ||
| 659 | @property | 629 | @property |
| 660 | def suffix(self): | 630 | def suffix(self): |
| 631 | for suffix in Target_Image_File.SUFFIXES: | ||
| 632 | if self.file_name.endswith(suffix): | ||
| 633 | return suffix | ||
| 634 | |||
| 661 | filename, suffix = os.path.splitext(self.file_name) | 635 | filename, suffix = os.path.splitext(self.file_name) |
| 662 | suffix = suffix.lstrip('.') | 636 | suffix = suffix.lstrip('.') |
| 663 | return suffix | 637 | return suffix |
