blob: 1415ae906c327d89a69a8b30c9bc68e635cadfc6 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001#!/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
18import os
19import time
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050020import wic.engine
Patrick Williamsc124f4f2015-09-15 14:41:29 -050021
22def 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 Williamsd8c66bc2016-06-20 12:57:21 -050060
61def 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
78def 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