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

Commit 2b2a2c2d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move mediaswcodec service to APEX"

parents cb03f764 9bda452c
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -65,8 +65,13 @@ filegroup {

apex_defaults {
    name: "com.android.media.swcodec-defaults",
    native_shared_libs: [
        "libmedia_codecserviceregistrant",
    binaries: [
        "mediaswcodec",
    ],
    prebuilts: [
        "com.android.media.swcodec-mediaswcodec.rc",
        "com.android.media.swcodec-ld.config.txt",
        "mediaswcodec.policy",
    ],
    use_vendor: true,
    key: "com.android.media.swcodec.key",
@@ -76,6 +81,20 @@ apex_defaults {
    androidManifest: ":com.android.media.swcodec-androidManifest",
}

prebuilt_etc {
    name: "com.android.media.swcodec-mediaswcodec.rc",
    src: "mediaswcodec.rc",
    filename: "init.rc",
    installable: false,
}

prebuilt_etc {
    name: "com.android.media.swcodec-ld.config.txt",
    src: "ld.config.txt",
    filename: "ld.config.txt",
    installable: false,
}

apex {
    name: "com.android.media.swcodec",
    manifest: "manifest_codec.json",

apex/ld.config.txt

0 → 100644
+74 −0
Original line number Diff line number Diff line
# Copyright (C) 2019 The Android Open Source Project
#
# Bionic loader config file for the media swcodec APEX.
#
# There are no versioned APEX paths here - this APEX module does not support
# having several versions mounted.

dir.swcodec = /apex/com.android.media.swcodec/bin/

[swcodec]
additional.namespaces = platform

###############################################################################
# "default" namespace
#
# This namespace is for the binaries and libraries on the swcodec APEX.
###############################################################################

namespace.default.isolated = true
namespace.default.visible = true

namespace.default.search.paths      = /apex/com.android.media.swcodec/${LIB}
namespace.default.asan.search.paths = /apex/com.android.media.swcodec/${LIB}

# Keep the below in sync with "sphal" namespace in system's /etc/ld.config.txt
# Codec2 has dependencies on some SP-hals (eg. android.hardware.graphics.mapper@2.0)
# These are dlopen'ed by libvndksupport.so.
namespace.default.search.paths += /odm/${LIB}
namespace.default.search.paths += /vendor/${LIB}

namespace.default.permitted.paths  = /odm/${LIB}
namespace.default.permitted.paths += /vendor/${LIB}
namespace.default.permitted.paths += /vendor/${LIB}/hw
namespace.default.permitted.paths += /system/vendor/${LIB}

namespace.default.asan.search.paths += /data/asan/odm/${LIB}
namespace.default.asan.search.paths +=           /odm/${LIB}
namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
namespace.default.asan.search.paths +=           /vendor/${LIB}

namespace.default.asan.permitted.paths  = /data/asan/odm/${LIB}
namespace.default.asan.permitted.paths +=           /odm/${LIB}
namespace.default.asan.permitted.paths += /data/asan/vendor/${LIB}
namespace.default.asan.permitted.paths +=           /vendor/${LIB}

namespace.default.links = platform

# TODO: replace the following when apex has a way to auto-generate this list
# namespace.default.link.platform.shared_libs  = %LLNDK_LIBRARIES%
# namespace.default.link.platform.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
namespace.default.link.platform.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.hwasan-aarch64-android.so:libclang_rt.asan-i686-android.so:libclang_rt.asan-x86_64-android.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so

###############################################################################
# "platform" namespace
#
# This namespace is for linking to LLNDK and ASAN libraries on the system.
###############################################################################

namespace.platform.isolated = true

namespace.platform.search.paths = /system/${LIB}
namespace.platform.asan.search.paths = /data/asan/system/${LIB}

# /system/lib/libc.so, etc are symlinks to /bionic/lib/libc.so, etc.
# Add /bionic/lib to the permitted paths because linker uses realpath(3)
# to check the accessibility of the lib. We could add this to search.paths
# instead but that makes the resolution of bionic libs be dependent on
# the order of /system/lib and /bionic/lib in search.paths. If /bionic/lib
# is after /system/lib, then /bionic/lib is never tried because libc.so
# is always found in /system/lib but fails to pass the accessibility test
# because of its realpath.  It's better to not depend on the ordering if
# possible.
namespace.platform.permitted.paths = /bionic/${LIB}
namespace.platform.asan.permitted.paths = /bionic/${LIB}

apex/mediaswcodec.rc

0 → 100644
+7 −0
Original line number Diff line number Diff line
service media.swcodec /apex/com.android.media.swcodec/bin/mediaswcodec
    class main
    user mediacodec
    group camera drmrpc mediadrm
    override
    ioprio rt 4
    writepid /dev/cpuset/foreground/tasks
+62 −0
Original line number Diff line number Diff line
cc_binary {
    name: "mediaswcodec",
    vendor_available: true,

    srcs: [
        "main_swcodecservice.cpp",
    ],

    shared_libs: [
        "libavservices_minijail",
        "libbase",
        "libhidltransport",
        "libhwbinder",
        "liblog",
        "libmedia_codecserviceregistrant",
    ],

    target: {
        vendor: {
            exclude_shared_libs: ["libavservices_minijail"],
            shared_libs: ["libavservices_minijail_vendor"],
        },
    },

    header_libs: [
        "libmedia_headers",
    ],

    init_rc: ["mediaswcodec.rc"],

    required: ["mediaswcodec.policy"],

    cflags: [
        "-Werror",
        "-Wall",
        "-Wno-error=deprecated-declarations",
    ],

    sanitize: {
        scudo: true,
    },
}

prebuilt_etc {
    name: "mediaswcodec.policy",
    sub_dir: "seccomp_policy",
    arch: {
        arm: {
            src: "seccomp_policy/mediaswcodec-arm.policy",
        },
        arm64: {
            src: "seccomp_policy/mediaswcodec-arm64.policy",
        },
        x86: {
            src: "seccomp_policy/mediacodec-x86.policy",
        },
        x86_64: {
            src: "seccomp_policy/mediacodec-x86.policy",
        },
    },
    required: ["crash_dump.policy"],
}
+3 −73
Original line number Diff line number Diff line
@@ -27,8 +27,8 @@ _software_codecs := \
include $(CLEAR_VARS)
# seccomp is not required for coverage build.
ifneq ($(NATIVE_COVERAGE),true)
LOCAL_REQUIRED_MODULES_arm := crash_dump.policy mediacodec.policy
LOCAL_REQUIRED_MODULES_x86 := crash_dump.policy mediacodec.policy
LOCAL_REQUIRED_MODULES_arm := mediacodec.policy
LOCAL_REQUIRED_MODULES_x86 := mediacodec.policy
endif
LOCAL_SRC_FILES := main_codecservice.cpp
LOCAL_SHARED_LIBRARIES := \
@@ -65,74 +65,13 @@ include $(BUILD_EXECUTABLE)

####################################################################

# service executable
include $(CLEAR_VARS)
# seccomp is not required for coverage build.
ifneq ($(NATIVE_COVERAGE),true)
LOCAL_REQUIRED_MODULES_arm := crash_dump.policy mediaswcodec.policy
LOCAL_REQUIRED_MODULES_arm64 := crash_dump.policy mediaswcodec.policy
LOCAL_REQUIRED_MODULES_x86 := crash_dump.policy mediaswcodec.policy
LOCAL_REQUIRED_MODULES_x86_64 := crash_dump.policy mediaswcodec.policy
endif

LOCAL_SRC_FILES := \
    main_swcodecservice.cpp \
    MediaCodecUpdateService.cpp \

sanitizer_runtime_libraries := $(call normalize-path-list,$(addsuffix .so,\
  $(ADDRESS_SANITIZER_RUNTIME_LIBRARY) \
  $(UBSAN_RUNTIME_LIBRARY) \
  $(TSAN_RUNTIME_LIBRARY) \
  $(2ND_ADDRESS_SANITIZER_RUNTIME_LIBRARY) \
  $(2ND_UBSAN_RUNTIME_LIBRARY) \
  $(2ND_TSAN_RUNTIME_LIBRARY)))

# $(info Sanitizer:  $(sanitizer_runtime_libraries))

llndk_libraries := $(call normalize-path-list,$(addsuffix .so,\
  $(LLNDK_LIBRARIES)))

# $(info LLNDK:  $(llndk_libraries))

LOCAL_CFLAGS := -DLINKED_LIBRARIES='"$(sanitizer_runtime_libraries):$(llndk_libraries)"'

LOCAL_SHARED_LIBRARIES := \
    libavservices_minijail \
    libbase \
    libbinder \
    libcutils \
    libhidltransport \
    libhwbinder \
    liblog \
    libmedia \
    libutils \
    libziparchive \

LOCAL_HEADER_LIBRARIES := \
    libnativeloader-dummy-headers \

LOCAL_MODULE := mediaswcodec
LOCAL_INIT_RC := mediaswcodec.rc
LOCAL_SANITIZE := scudo
ifeq ($(TARGET_ARCH), $(filter $(TARGET_ARCH), x86_64 arm64))
  LOCAL_MULTILIB := both
  LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
  LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)
endif

sanitizer_runtime_libraries :=
llndk_libraries :=

include $(BUILD_EXECUTABLE)

####################################################################

# service seccomp policy
ifeq ($(TARGET_ARCH), $(filter $(TARGET_ARCH), x86 x86_64 arm arm64))
include $(CLEAR_VARS)
LOCAL_MODULE := mediacodec.policy
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/seccomp_policy
LOCAL_REQUIRED_MODULES := crash_dump.policy
# mediacodec runs in 32-bit combatibility mode. For 64 bit architectures,
# use the 32 bit policy
ifdef TARGET_2ND_ARCH
@@ -149,14 +88,5 @@ endif

####################################################################

# sw service seccomp policy
ifeq ($(TARGET_ARCH), $(filter $(TARGET_ARCH), x86 x86_64 arm arm64))
include $(CLEAR_VARS)
LOCAL_MODULE := mediaswcodec.policy
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/seccomp_policy
LOCAL_SRC_FILES := seccomp_policy/mediaswcodec-$(TARGET_ARCH).policy
include $(BUILD_PREBUILT)
endif

include $(call all-makefiles-under, $(LOCAL_PATH))
Loading