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

Commit 75452fdf authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8202755 from 9cb96607 to tm-d1-release

Change-Id: Ic984751be4a5472315225a179bb8d536577bebd0
parents 3be53efe 9cb96607
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -48,11 +48,26 @@ static bool waitpid_with_timeout(pid_t pid, int timeout_ms, int* status) {
    sigemptyset(&child_mask);
    sigaddset(&child_mask, SIGCHLD);

    // block SIGCHLD before we check if a process has exited
    if (sigprocmask(SIG_BLOCK, &child_mask, &old_mask) == -1) {
        printf("*** sigprocmask failed: %s\n", strerror(errno));
        return false;
    }

    // if the child has exited already, handle and reset signals before leaving
    pid_t child_pid = waitpid(pid, status, WNOHANG);
    if (child_pid != pid) {
        if (child_pid > 0) {
            printf("*** Waiting for pid %d, got pid %d instead\n", pid, child_pid);
            sigprocmask(SIG_SETMASK, &old_mask, nullptr);
            return false;
        }
    } else {
        sigprocmask(SIG_SETMASK, &old_mask, nullptr);
        return true;
    }

    // wait for a SIGCHLD
    timespec ts;
    ts.tv_sec = MSEC_TO_SEC(timeout_ms);
    ts.tv_nsec = (timeout_ms % 1000) * 1000000;
@@ -76,7 +91,7 @@ static bool waitpid_with_timeout(pid_t pid, int timeout_ms, int* status) {
        return false;
    }

    pid_t child_pid = waitpid(pid, status, WNOHANG);
    child_pid = waitpid(pid, status, WNOHANG);
    if (child_pid != pid) {
        if (child_pid != -1) {
            printf("*** Waiting for pid %d, got pid %d instead\n", pid, child_pid);
@@ -232,7 +247,6 @@ int DumpFileToFd(int out_fd, const std::string& title, const std::string& path)
            dprintf(out_fd, "*** Error dumping %s (%s): %s\n", path.c_str(), title.c_str(),
                    strerror(err));
        }
        fsync(out_fd);
        return -1;
    }
    return DumpFileFromFdToFd(title, path, fd.get(), out_fd, PropertiesHelper::IsDryRun());
@@ -280,7 +294,6 @@ int RunCommandToFd(int fd, const std::string& title, const std::vector<std::stri

    if (!title.empty()) {
        dprintf(fd, "------ %s (%s) ------\n", title.c_str(), command);
        fsync(fd);
    }

    const std::string& logging_message = options.LoggingMessage();
@@ -299,14 +312,13 @@ int RunCommandToFd(int fd, const std::string& title, const std::vector<std::stri
            // There is no title, but we should still print a dry-run message
            dprintf(fd, "%s: skipped on dry run\n", command_string.c_str());
        }
        fsync(fd);
        return 0;
    }

    const char* path = args[0];

    uint64_t start = Nanotime();
    pid_t pid = fork();
    pid_t pid = vfork();

    /* handle error case */
    if (pid < 0) {
@@ -323,7 +335,7 @@ int RunCommandToFd(int fd, const std::string& title, const std::vector<std::stri
                        strerror(errno));
            }
            MYLOGE("*** could not drop root before running %s: %s\n", command, strerror(errno));
            return -1;
            _exit(EXIT_FAILURE);
        }

        if (options.ShouldCloseAllFileDescriptorsOnExec()) {
@@ -376,7 +388,6 @@ int RunCommandToFd(int fd, const std::string& title, const std::vector<std::stri
    /* handle parent case */
    int status;
    bool ret = waitpid_with_timeout(pid, options.TimeoutInMs(), &status);
    fsync(fd);

    uint64_t elapsed = Nanotime() - start;
    if (!ret) {
+2 −5
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@ package {
cc_defaults {
    name: "installd_defaults",

    cpp_std: "c++2a",
    cflags: [
        "-Wall",
        "-Werror",
@@ -42,7 +41,6 @@ cc_defaults {
        "libbinder",
        "libcrypto",
        "libcutils",
        "libext2_uuid",
        "liblog",
        "liblogwrap",
        "libprocessgroup",
@@ -53,6 +51,7 @@ cc_defaults {
    ],
    static_libs: [
        "libasync_safe",
        "libext2_uuid",
    ],
    export_shared_lib_headers: [
        "libbinder",
@@ -241,8 +240,6 @@ cc_library_static {

cc_binary {
    name: "otapreopt",

    cpp_std: "c++2a",
    cflags: [
        "-Wall",
        "-Werror",
@@ -266,13 +263,13 @@ cc_binary {
        "libasync_safe",
        "libdiskusage",
        "libotapreoptparameters",
        "libext2_uuid",
    ],

    shared_libs: [
        "libbase",
        "libcrypto",
        "libcutils",
        "libext2_uuid",
        "liblog",
        "liblogwrap",
        "libprocessgroup",
+62 −19
Original line number Diff line number Diff line
@@ -8,54 +8,56 @@ package {
    default_applicable_licenses: ["frameworks_native_license"],
}

cc_defaults {
    name: "installd_tests_defaults",
cc_test {
    name: "installd_utils_test",
    test_suites: ["device-tests"],
    clang: true,
    cpp_std: "c++2a",
    srcs: ["installd_utils_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libext2_uuid",
        "libutils",
        "libcutils",
    ],
    static_libs: [
        "liblog",
    ],
}

cc_test {
    name: "installd_utils_test",
    defaults: ["installd_tests_defaults"],
    srcs: ["installd_utils_test.cpp"],
    static_libs: [
        "libasync_safe",
        "libdiskusage",
        "libext2_uuid",
        "libinstalld",
        "liblog",
    ],
    test_config: "installd_utils_test.xml",
}

cc_test {
    name: "installd_cache_test",
    defaults: ["installd_tests_defaults"],
    test_suites: ["device-tests"],
    clang: true,
    srcs: ["installd_cache_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libbinder",
        "libcrypto",
        "libcutils",
        "libprocessgroup",
        "libselinux",
        "libutils",
        "server_configurable_flags",
    ],
    static_libs: [
        "libasync_safe",
        "libdiskusage",
        "libext2_uuid",
        "libinstalld",
        "libziparchive",
        "liblog",
        "liblogwrap",
    ],
    test_config: "installd_cache_test.xml",
@@ -78,21 +80,31 @@ cc_test {

cc_test {
    name: "installd_service_test",
    defaults: ["installd_tests_defaults"],
    test_suites: ["device-tests"],
    clang: true,
    srcs: ["installd_service_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libbinder",
        "libcrypto",
        "libcutils",
        "libprocessgroup",
        "libselinux",
        "libutils",
        "packagemanager_aidl-cpp",
        "server_configurable_flags",
    ],
    static_libs: [
        "libasync_safe",
        "libdiskusage",
        "libext2_uuid",
        "libinstalld",
        "libziparchive",
        "liblog",
        "liblogwrap",
    ],
    test_config: "installd_service_test.xml",
@@ -115,19 +127,29 @@ cc_test {

cc_test {
    name: "installd_dexopt_test",
    defaults: ["installd_tests_defaults"],
    test_suites: ["device-tests"],
    clang: true,
    srcs: ["installd_dexopt_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libbinder",
        "libcrypto",
        "libcutils",
        "libprocessgroup",
        "libselinux",
        "libutils",
        "server_configurable_flags",
    ],
    static_libs: [
        "libasync_safe",
        "libdiskusage",
        "libext2_uuid",
        "libinstalld",
        "liblog",
        "liblogwrap",
        "libziparchive",
        "libz",
@@ -152,21 +174,42 @@ cc_test {

cc_test {
    name: "installd_otapreopt_test",
    defaults: ["installd_tests_defaults"],
    test_suites: ["device-tests"],
    clang: true,
    srcs: ["installd_otapreopt_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libutils",
        "server_configurable_flags",
    ],
    static_libs: [
        "liblog",
        "libotapreoptparameters",
    ],
}

cc_test {
    name: "installd_file_test",
    defaults: ["installd_tests_defaults"],
    test_suites: ["device-tests"],
    clang: true,
    srcs: ["installd_file_test.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libutils",
    ],
    static_libs: [
        "libext2_uuid",
        "libinstalld",
        "liblog",
    ],
}
+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ static bool find_file(const char* path, Pred&& pred) {
}

static bool exists_renamed_deleted_dir() {
    return find_file(kTestPath, [](std::string_view name, bool is_dir) {
    return find_file(kTestPath, [](const std::string& name, bool is_dir) {
        return is_dir && is_renamed_deleted_dir(name);
    });
}
+18 −0
Original line number Diff line number Diff line
@@ -555,6 +555,24 @@ TEST_F(UtilsTest, MatchExtension_Invalid) {
    EXPECT_EQ(0, MatchExtension("docx"));
}

TEST_F(UtilsTest, TestIsRenamedDeletedDir) {
    EXPECT_FALSE(is_renamed_deleted_dir(""));
    EXPECT_FALSE(is_renamed_deleted_dir("1"));
    EXPECT_FALSE(is_renamed_deleted_dir("="));
    EXPECT_FALSE(is_renamed_deleted_dir("=="));
    EXPECT_FALSE(is_renamed_deleted_dir("d=="));
    EXPECT_FALSE(is_renamed_deleted_dir("ed=="));
    EXPECT_FALSE(is_renamed_deleted_dir("ted=="));
    EXPECT_FALSE(is_renamed_deleted_dir("eted=="));
    EXPECT_FALSE(is_renamed_deleted_dir("leted=="));
    EXPECT_FALSE(is_renamed_deleted_dir("eleted=="));
    EXPECT_FALSE(is_renamed_deleted_dir("deleted=="));
    EXPECT_FALSE(is_renamed_deleted_dir("=deleted=="));
    EXPECT_TRUE(is_renamed_deleted_dir("==deleted=="));
    EXPECT_TRUE(is_renamed_deleted_dir("123==deleted=="));
    EXPECT_TRUE(is_renamed_deleted_dir("5b14b6458a44==deleted=="));
}

TEST_F(UtilsTest, TestRollbackPaths) {
    EXPECT_EQ("/data/misc_ce/0/rollback/239/com.foo",
            create_data_misc_ce_rollback_package_path(nullptr, 0, 239, "com.foo"));
Loading