Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 629e51c1 authored by David Anderson's avatar David Anderson
Browse files

fastboot: Resize logical partitions when using the flash command.

If an image size changes slightly in between "flashall" and some change
in the build, it's inconvenient to have to reflash the whole device again.
This patch resizes partitions when using a normal flash command, to
improve the developer workflow.

Bug: N/A
Test: fastboot flash system
Change-Id: I349364a4742a0c15748f545fcfda946107720d45
parent 0444a8cb
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -1096,12 +1096,20 @@ static void do_for_partitions(const std::string& part, const std::string& slot,
    }
}

static bool is_logical(const std::string& partition) {
    std::string value;
    return fb->GetVar("is-logical:" + partition, &value) == fastboot::SUCCESS && value == "yes";
}

static void do_flash(const char* pname, const char* fname) {
    struct fastboot_buffer buf;

    if (!load_buf(fname, &buf)) {
        die("cannot load '%s': %s", fname, strerror(errno));
    }
    if (is_logical(pname)) {
        fb->ResizePartition(pname, std::to_string(buf.image_size));
    }
    flash_buf(pname, &buf);
}

@@ -1144,11 +1152,6 @@ static bool if_partition_exists(const std::string& partition, const std::string&
    return fb->GetVar("partition-size:" + partition_name, &partition_size) == fastboot::SUCCESS;
}

static bool is_logical(const std::string& partition) {
    std::string value;
    return fb->GetVar("is-logical:" + partition, &value) == fastboot::SUCCESS && value == "yes";
}

static void reboot_to_userspace_fastboot() {
    fb->RebootTo("fastboot");