diff options
Diffstat (limited to 'scripts/lib/wic/plugins/source/bootimg-partition.py')
| -rw-r--r-- | scripts/lib/wic/plugins/source/bootimg-partition.py | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py index 564118ad8b..6ba39a01f7 100644 --- a/scripts/lib/wic/plugins/source/bootimg-partition.py +++ b/scripts/lib/wic/plugins/source/bootimg-partition.py | |||
| @@ -29,6 +29,7 @@ import re | |||
| 29 | from wic import msger | 29 | from wic import msger |
| 30 | from wic.pluginbase import SourcePlugin | 30 | from wic.pluginbase import SourcePlugin |
| 31 | from wic.utils.oe.misc import * | 31 | from wic.utils.oe.misc import * |
| 32 | from glob import glob | ||
| 32 | 33 | ||
| 33 | class BootimgPartitionPlugin(SourcePlugin): | 34 | class BootimgPartitionPlugin(SourcePlugin): |
| 34 | name = 'bootimg-partition' | 35 | name = 'bootimg-partition' |
| @@ -87,7 +88,7 @@ class BootimgPartitionPlugin(SourcePlugin): | |||
| 87 | 88 | ||
| 88 | # list of tuples (src_name, dst_name) | 89 | # list of tuples (src_name, dst_name) |
| 89 | deploy_files = [] | 90 | deploy_files = [] |
| 90 | for src_entry in re.findall(r'[\w;\-\./]+', boot_files): | 91 | for src_entry in re.findall(r'[\w;\-\./\*]+', boot_files): |
| 91 | if ';' in src_entry: | 92 | if ';' in src_entry: |
| 92 | dst_entry = tuple(src_entry.split(';')) | 93 | dst_entry = tuple(src_entry.split(';')) |
| 93 | if not dst_entry[0] or not dst_entry[1]: | 94 | if not dst_entry[0] or not dst_entry[1]: |
| @@ -100,14 +101,36 @@ class BootimgPartitionPlugin(SourcePlugin): | |||
| 100 | 101 | ||
| 101 | for deploy_entry in deploy_files: | 102 | for deploy_entry in deploy_files: |
| 102 | src, dst = deploy_entry | 103 | src, dst = deploy_entry |
| 103 | src_path = os.path.join(bootimg_dir, src) | 104 | install_task = [] |
| 104 | dst_path = os.path.join(hdddir, dst) | 105 | if '*' in src: |
| 105 | 106 | # by default install files under their basename | |
| 106 | msger.debug('Install %s as %s' % (os.path.basename(src_path), | 107 | entry_name_fn = os.path.basename |
| 107 | dst_path)) | 108 | if dst != src: |
| 108 | install_cmd = "install -m 0644 -D %s %s" \ | 109 | # unless a target name was given, then treat name |
| 109 | % (src_path, dst_path) | 110 | # as a directory and append a basename |
| 110 | exec_cmd(install_cmd) | 111 | entry_name_fn = lambda name: \ |
| 112 | os.path.join(dst, | ||
| 113 | os.path.basename(name)) | ||
| 114 | |||
| 115 | srcs = glob(os.path.join(bootimg_dir, src)) | ||
| 116 | |||
| 117 | msger.debug('Globbed sources: %s' % (', '.join(srcs))) | ||
| 118 | for entry in srcs: | ||
| 119 | entry_dst_name = entry_name_fn(entry) | ||
| 120 | install_task.append((entry, | ||
| 121 | os.path.join(hdddir, | ||
| 122 | entry_dst_name))) | ||
| 123 | else: | ||
| 124 | install_task = [(os.path.join(bootimg_dir, src), | ||
| 125 | os.path.join(hdddir, dst))] | ||
| 126 | |||
| 127 | for task in install_task: | ||
| 128 | src_path, dst_path = task | ||
| 129 | msger.debug('Install %s as %s' % (os.path.basename(src_path), | ||
| 130 | dst_path)) | ||
| 131 | install_cmd = "install -m 0644 -D %s %s" \ | ||
| 132 | % (src_path, dst_path) | ||
| 133 | exec_cmd(install_cmd) | ||
| 111 | 134 | ||
| 112 | msger.debug('Prepare boot partition using rootfs in %s' % (hdddir)) | 135 | msger.debug('Prepare boot partition using rootfs in %s' % (hdddir)) |
| 113 | part.prepare_rootfs(cr_workdir, oe_builddir, hdddir, | 136 | part.prepare_rootfs(cr_workdir, oe_builddir, hdddir, |
