[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
|
-o firmware/.obj/${TARGET}/full.hex -Intel
|
||||||
done
|
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'
|
- name: 'Move upload files'
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
uses: ./.github/actions/docker
|
uses: ./.github/actions/docker
|
||||||
@ -116,25 +142,16 @@ jobs:
|
|||||||
artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.bin
|
artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.bin
|
||||||
mv bootloader/.obj/${TARGET}/bootloader.elf \
|
mv bootloader/.obj/${TARGET}/bootloader.elf \
|
||||||
artifacts/flipper-z-${TARGET}-bootloader-${{steps.names.outputs.suffix}}.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 \
|
mv firmware/.obj/${TARGET}/firmware.dfu \
|
||||||
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.dfu
|
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.dfu
|
||||||
mv firmware/.obj/${TARGET}/firmware.bin \
|
mv firmware/.obj/${TARGET}/firmware.bin \
|
||||||
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.bin
|
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.bin
|
||||||
mv firmware/.obj/${TARGET}/firmware.elf \
|
mv firmware/.obj/${TARGET}/firmware.elf \
|
||||||
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.elf
|
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.elf
|
||||||
done
|
mv firmware/.obj/${TARGET}/firmware.json \
|
||||||
|
artifacts/flipper-z-${TARGET}-firmware-${{steps.names.outputs.suffix}}.json
|
||||||
- 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
|
done
|
||||||
|
|
||||||
- name: 'Full flash asssembly: bootloader as base'
|
- 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 \
|
libxml2-dev \
|
||||||
libxslt1-dev \
|
libxslt1-dev \
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
|
jq \
|
||||||
wget && \
|
wget && \
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ CHECK_AND_REINIT_SUBMODULES_SHELL=\
|
|||||||
fi
|
fi
|
||||||
$(info $(shell $(CHECK_AND_REINIT_SUBMODULES_SHELL)))
|
$(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)
|
$(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS)
|
||||||
@echo "\tLD\t" $@
|
@echo "\tLD\t" $@
|
||||||
@ -54,6 +54,10 @@ $(OBJ_DIR)/$(PROJECT).dfu: $(OBJ_DIR)/$(PROJECT).hex
|
|||||||
-o $(OBJ_DIR)/$(PROJECT).dfu \
|
-o $(OBJ_DIR)/$(PROJECT).dfu \
|
||||||
-l "Flipper Zero $(shell echo $(TARGET) | tr a-z A-Z)" > /dev/null
|
-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
|
$(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS
|
||||||
@echo "\tCC\t" $< "->" $@
|
@echo "\tCC\t" $< "->" $@
|
||||||
@$(CC) $(CFLAGS) -c $< -o $@
|
@$(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…
Reference in New Issue
Block a user