| Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 1 | # Helper/utility functions to work with the IMAGE_BOOT_FILES variable and its | 
|  | 2 | # expected behvaior with regards to the contents of the DEPLOY_DIR_IMAGE. | 
|  | 3 | # | 
|  | 4 | # The use of these functions assume that the deploy directory is populated with | 
|  | 5 | # any dependent files/etc. Such that the recipe using these functions depends | 
|  | 6 | # on the recipe that provides the files being used/queried. | 
|  | 7 |  | 
|  | 8 | def boot_files_split_expand(d): | 
|  | 9 | # IMAGE_BOOT_FILES has extra renaming info in the format '<source>;<target>' | 
|  | 10 | for f in (d.getVar("IMAGE_BOOT_FILES") or "").split(" "): | 
|  | 11 | parts = f.split(";", 1) | 
|  | 12 | sources = [parts[0]] | 
|  | 13 | if "*" in parts[0]: | 
|  | 14 | # has glob part | 
|  | 15 | import glob | 
|  | 16 | deployroot = d.getVar("DEPLOY_DIR_IMAGE") | 
|  | 17 | sources = [] | 
|  | 18 | for i in glob.glob(os.path.join(deployroot, parts[0])): | 
|  | 19 | sources.append(os.path.basename(i)) | 
|  | 20 |  | 
|  | 21 | # for all sources, yield an entry | 
|  | 22 | for s in sources: | 
|  | 23 | if len(parts) == 2: | 
|  | 24 | yield s, parts[1] | 
|  | 25 | yield s, s | 
|  | 26 |  | 
|  | 27 | def boot_files_bitstream(d): | 
|  | 28 | expectedfiles = [("bitstream", True)] | 
|  | 29 | expectedexts = [(".bit", True), (".bin", False)] | 
|  | 30 | # search for bitstream paths, use the renamed file. First matching is used | 
|  | 31 | for source, target in boot_files_split_expand(d): | 
|  | 32 | # skip boot.bin and u-boot.bin, it is not a bitstream | 
|  | 33 | skip = ["boot.bin", "u-boot.bin"] | 
|  | 34 | if source in skip or target in skip: | 
|  | 35 | continue | 
|  | 36 |  | 
|  | 37 | for e, t in expectedfiles: | 
|  | 38 | if source == e or target == e: | 
|  | 39 | return target, t | 
|  | 40 | for e, t in expectedexts: | 
|  | 41 | if source.endswith(e) or target.endswith(e): | 
|  | 42 | return target, t | 
|  | 43 | return "", False | 
|  | 44 |  | 
|  | 45 | def boot_files_dtb_filepath(d): | 
|  | 46 | dtbs = (d.getVar("IMAGE_BOOT_FILES") or "").split(" ") | 
|  | 47 | for source, target in boot_files_split_expand(d): | 
|  | 48 | if target.endswith(".dtb"): | 
|  | 49 | return target | 
|  | 50 | return "" | 
|  | 51 |  |