[FL-1989] CI: bootloader & firmware JSON manifests (#786)
* [FL-1989] CI: bootloader & firmware JSON manifests * CI: reorder steps Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									122e0a89ab
								
							
						
					
					
						commit
						f8542af653
					
				
							
								
								
									
										43
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @ -103,6 +103,32 @@ jobs: | ||||
|                 -o firmware/.obj/${TARGET}/full.hex -Intel | ||||
|             done | ||||
| 
 | ||||
|       - name: 'Generate full dfu file' | ||||
|         if: ${{ !github.event.pull_request.head.repo.fork }} | ||||
|         uses: ./.github/actions/docker | ||||
|         with: | ||||
|           run: | | ||||
|             for TARGET in ${TARGETS} | ||||
|             do | ||||
|               hex2dfu \ | ||||
|                 -i firmware/.obj/${TARGET}/full.hex \ | ||||
|                 -o artifacts/flipper-z-${TARGET}-full-${{steps.names.outputs.suffix}}.dfu \ | ||||
|                 -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" | ||||
|             done | ||||
| 
 | ||||
|       - name: 'Generate full json file' | ||||
|         if: ${{ !github.event.pull_request.head.repo.fork }} | ||||
|         uses: ./.github/actions/docker | ||||
|         with: | ||||
|           run: | | ||||
|             for TARGET in ${TARGETS} | ||||
|             do | ||||
|               jq -s '.[0] * .[1]' \ | ||||
|                 bootloader/.obj/${TARGET}/bootloader.json \ | ||||
|                 firmware/.obj/${TARGET}/firmware.json  \ | ||||
|                 > artifacts/flipper-z-${TARGET}-full-${{steps.names.outputs.suffix}}.json | ||||
|             done | ||||
| 
 | ||||
|       - name: 'Move upload files' | ||||
|         if: ${{ !github.event.pull_request.head.repo.fork }} | ||||
|         uses: ./.github/actions/docker | ||||
| @ -116,25 +142,16 @@ jobs: | ||||
|                 artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.bin | ||||
|               mv bootloader/.obj/${TARGET}/bootloader.elf \ | ||||
|                 artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.elf | ||||
|               mv bootloader/.obj/${TARGET}/bootloader.json \ | ||||
|                 artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.json | ||||
|               mv firmware/.obj/${TARGET}/firmware.dfu \ | ||||
|                 artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.dfu | ||||
|               mv firmware/.obj/${TARGET}/firmware.bin \ | ||||
|                 artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.bin | ||||
|               mv firmware/.obj/${TARGET}/firmware.elf \ | ||||
|                 artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.elf | ||||
|             done | ||||
| 
 | ||||
|       - name: 'Generate full dfu file' | ||||
|         if: ${{ !github.event.pull_request.head.repo.fork }} | ||||
|         uses: ./.github/actions/docker | ||||
|         with: | ||||
|           run: | | ||||
|             for TARGET in ${TARGETS} | ||||
|             do | ||||
|               hex2dfu \ | ||||
|                 -i firmware/.obj/${TARGET}/full.hex \ | ||||
|                 -o artifacts/flipper-z-${TARGET}-full-${{steps.names.outputs.suffix}}.dfu \ | ||||
|                 -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" | ||||
|               mv firmware/.obj/${TARGET}/firmware.json \ | ||||
|                 artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.json | ||||
|             done | ||||
| 
 | ||||
|       - name: 'Full flash asssembly: bootloader as base' | ||||
|  | ||||
| @ -15,6 +15,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-instal | ||||
|         libxml2-dev \ | ||||
|         libxslt1-dev \ | ||||
|         zlib1g-dev \ | ||||
|         jq \ | ||||
|         wget && \ | ||||
|     apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||||
| 
 | ||||
|  | ||||
| @ -32,7 +32,7 @@ CHECK_AND_REINIT_SUBMODULES_SHELL=\ | ||||
| 	fi | ||||
| $(info $(shell $(CHECK_AND_REINIT_SUBMODULES_SHELL))) | ||||
| 
 | ||||
| all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin $(OBJ_DIR)/$(PROJECT).dfu | ||||
| all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin $(OBJ_DIR)/$(PROJECT).dfu $(OBJ_DIR)/$(PROJECT).json | ||||
| 
 | ||||
| $(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS) | ||||
| 	@echo "\tLD\t" $@ | ||||
| @ -54,6 +54,10 @@ $(OBJ_DIR)/$(PROJECT).dfu: $(OBJ_DIR)/$(PROJECT).hex | ||||
| 		-o $(OBJ_DIR)/$(PROJECT).dfu \
 | ||||
| 		-l "Flipper Zero $(shell echo $(TARGET) | tr a-z A-Z)" > /dev/null | ||||
| 
 | ||||
| $(OBJ_DIR)/$(PROJECT).json: $(OBJ_DIR)/$(PROJECT).dfu | ||||
| 	@echo "\tJSON\t" $@ | ||||
| 	@python3 ../scripts/meta.py -p $(PROJECT) $(CFLAGS) > $(OBJ_DIR)/$(PROJECT).json | ||||
| 
 | ||||
| $(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS | ||||
| 	@echo "\tCC\t" $< "->" $@ | ||||
| 	@$(CC) $(CFLAGS) -c $< -o $@ | ||||
|  | ||||
							
								
								
									
										32
									
								
								scripts/meta.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								scripts/meta.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| import argparse | ||||
| import json | ||||
| 
 | ||||
| 
 | ||||
| class Main: | ||||
|     def __init__(self): | ||||
|         # parse CFLAGS | ||||
|         self.parser = argparse.ArgumentParser(allow_abbrev=False) | ||||
|         self.parser.add_argument("-p", dest="project", required=True) | ||||
|         self.parser.add_argument("-DBUILD_DATE", dest="build_date", required=True) | ||||
|         self.parser.add_argument("-DGIT_COMMIT", dest="commit", required=True) | ||||
|         self.parser.add_argument("-DGIT_BRANCH", dest="branch", required=True) | ||||
|         self.parser.add_argument("-DTARGET", dest="target", type=int, required=True) | ||||
| 
 | ||||
|     def __call__(self): | ||||
|         self.args, _ = self.parser.parse_known_args() | ||||
| 
 | ||||
|         meta = {} | ||||
|         for k, v in vars(self.args).items(): | ||||
|             if k == "project": | ||||
|                 continue | ||||
|             if isinstance(v, str): | ||||
|                 v = v.strip('"') | ||||
|             meta[self.args.project + "_" + k] = v | ||||
| 
 | ||||
|         print(json.dumps(meta, indent=4)) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     Main()() | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anna Prosvetova
						Anna Prosvetova