Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | #!/usr/bin/env python -tt |
| 2 | # |
| 3 | # Copyright (c) 2010, 2011 Intel Inc. |
| 4 | # |
| 5 | # This program is free software; you can redistribute it and/or modify it |
| 6 | # under the terms of the GNU General Public License as published by the Free |
| 7 | # Software Foundation; version 2 of the License |
| 8 | # |
| 9 | # This program is distributed in the hope that it will be useful, but |
| 10 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| 11 | # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| 12 | # for more details. |
| 13 | # |
| 14 | # You should have received a copy of the GNU General Public License along |
| 15 | # with this program; if not, write to the Free Software Foundation, Inc., 59 |
| 16 | # Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
| 17 | |
| 18 | import os |
| 19 | import time |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 20 | import wic.engine |
Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 21 | |
| 22 | def build_name(kscfg, release=None, prefix=None, suffix=None): |
| 23 | """Construct and return an image name string. |
| 24 | |
| 25 | This is a utility function to help create sensible name and fslabel |
| 26 | strings. The name is constructed using the sans-prefix-and-extension |
| 27 | kickstart filename and the supplied prefix and suffix. |
| 28 | |
| 29 | kscfg -- a path to a kickstart file |
| 30 | release -- a replacement to suffix for image release |
| 31 | prefix -- a prefix to prepend to the name; defaults to None, which causes |
| 32 | no prefix to be used |
| 33 | suffix -- a suffix to append to the name; defaults to None, which causes |
| 34 | a YYYYMMDDHHMM suffix to be used |
| 35 | |
| 36 | Note, if maxlen is less then the len(suffix), you get to keep both pieces. |
| 37 | |
| 38 | """ |
| 39 | name = os.path.basename(kscfg) |
| 40 | idx = name.rfind('.') |
| 41 | if idx >= 0: |
| 42 | name = name[:idx] |
| 43 | |
| 44 | if release is not None: |
| 45 | suffix = "" |
| 46 | if prefix is None: |
| 47 | prefix = "" |
| 48 | if suffix is None: |
| 49 | suffix = time.strftime("%Y%m%d%H%M") |
| 50 | |
| 51 | if name.startswith(prefix): |
| 52 | name = name[len(prefix):] |
| 53 | |
| 54 | prefix = "%s-" % prefix if prefix else "" |
| 55 | suffix = "-%s" % suffix if suffix else "" |
| 56 | |
| 57 | ret = prefix + name + suffix |
| 58 | |
| 59 | return ret |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 60 | |
| 61 | def find_canned(scripts_path, file_name): |
| 62 | """ |
| 63 | Find a file either by its path or by name in the canned files dir. |
| 64 | |
| 65 | Return None if not found |
| 66 | """ |
| 67 | if os.path.exists(file_name): |
| 68 | return file_name |
| 69 | |
| 70 | layers_canned_wks_dir = wic.engine.build_canned_image_list(scripts_path) |
| 71 | for canned_wks_dir in layers_canned_wks_dir: |
| 72 | for root, dirs, files in os.walk(canned_wks_dir): |
| 73 | for fname in files: |
| 74 | if fname == file_name: |
| 75 | fullpath = os.path.join(canned_wks_dir, fname) |
| 76 | return fullpath |
| 77 | |
| 78 | def get_custom_config(boot_file): |
| 79 | """ |
| 80 | Get the custom configuration to be used for the bootloader. |
| 81 | |
| 82 | Return None if the file can't be found. |
| 83 | """ |
| 84 | scripts_path = os.path.abspath(os.path.dirname(__file__)) |
| 85 | # Get the scripts path of poky |
| 86 | for x in range(0, 3): |
| 87 | scripts_path = os.path.dirname(scripts_path) |
| 88 | |
| 89 | cfg_file = find_canned(scripts_path, boot_file) |
| 90 | if cfg_file: |
| 91 | with open(cfg_file, "r") as f: |
| 92 | config = f.read() |
| 93 | return config |
| 94 | |
| 95 | return None |