Merge Mainline

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2021-06-18 00:01:51 +08:00
commit 1bb600e635
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
3 changed files with 28 additions and 10 deletions

View File

@ -18,19 +18,33 @@ work_dir = Path(getenv("WORK_DIR"))
output = {}
def get_initial_output(image_info):
# preserve existing profiles.json
if output_path.is_file():
profiles = json.loads(output_path.read_text())
if profiles["version_code"] == image_info["version_code"]:
return profiles
return image_info
for json_file in work_dir.glob("*.json"):
image_info = json.loads(json_file.read_text())
if not output:
output.update(image_info)
output = get_initial_output(image_info)
# get first and only profile in json file
device_id, profile = next(iter(image_info["profiles"].items()))
if device_id not in output["profiles"]:
output["profiles"][device_id] = profile
else:
# get first (and only) profile in json file
device_id = next(iter(image_info["profiles"].keys()))
if device_id not in output["profiles"]:
output["profiles"].update(image_info["profiles"])
else:
output["profiles"][device_id]["images"].append(
image_info["profiles"][device_id]["images"][0]
)
output["profiles"][device_id]["images"].extend(profile["images"])
# make image lists unique by name, keep last/latest
for device_id, profile in output["profiles"].items():
profile["images"] = list({e["name"]: e for e in profile["images"]}.values())
if output:
default_packages, output["arch_packages"] = run(

View File

@ -71,6 +71,10 @@ set_state() {
status_led_blink_preinit_regular
;;
upgrade)
status_led_blink_preinit_regular
;;
done)
status_led_on
;;

View File

@ -79,7 +79,7 @@ platform_do_upgrade() {
sync
if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
if [ "$SAVE_PARTITIONS" = "1" ]; then
get_partitions "/dev/$diskdev" bootdisk
echo "Extract boot sector from the image"