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

Commit 35bf7d7e authored by Martin Stjernholm's avatar Martin Stjernholm Committed by Automerger Merge Worker
Browse files

Merge "Preserve symlinks in the Soong prebuilt install steps for host binaries...

Merge "Preserve symlinks in the Soong prebuilt install steps for host binaries and shared libs." am: a24c0fe6

Original change: https://android-review.googlesource.com/c/platform/build/+/1406918

Change-Id: I75fd8ce6cea8e3a05e66ce87c5cddd35f61c62ba
parents 3774e60a a24c0fe6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -516,7 +516,11 @@ ifneq ($(LOCAL_INSTALLED_MODULE),$(my_default_test_module))
$(LOCAL_INSTALLED_MODULE): PRIVATE_POST_INSTALL_CMD := $(LOCAL_POST_INSTALL_CMD)
$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE)
	@echo "Install: $@"
ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
	$(copy-file-or-link-to-new-target)
else
	$(copy-file-to-new-target)
endif
	$(PRIVATE_POST_INSTALL_CMD)
endif

+19 −0
Original line number Diff line number Diff line
@@ -2554,6 +2554,18 @@ $(hide) rm -f $@
$(hide) cp $< $@
endef

# The same as copy-file-to-new-target, but preserve symlinks. Symlinks are
# converted to absolute to not break.
define copy-file-or-link-to-new-target
@mkdir -p $(dir $@)
$(hide) rm -f $@
$(hide) if [ -h $< ]; then \
  ln -s $$(realpath $<) $@; \
else \
  cp $< $@; \
fi
endef

# Copy a prebuilt file to a target location.
define transform-prebuilt-to-target
@echo "$($(PRIVATE_PREFIX)DISPLAY) Prebuilt: $(PRIVATE_MODULE) ($@)"
@@ -2566,6 +2578,13 @@ define transform-prebuilt-to-target-strip-comments
$(copy-file-to-target-strip-comments)
endef

# Copy a prebuilt file to a target location, but preserve symlinks rather than
# dereference them.
define copy-or-link-prebuilt-to-target
@echo "$($(PRIVATE_PREFIX)DISPLAY) Prebuilt: $(PRIVATE_MODULE) ($@)"
$(copy-file-or-link-to-new-target)
endef

# Copy a list of files/directories to target location, with sub dir structure preserved.
# For example $(HOST_OUT_EXECUTABLES)/aapt -> $(staging)/bin/aapt .
# $(1): the source list of files/directories.
+8 −0
Original line number Diff line number Diff line
@@ -142,8 +142,16 @@ ifeq ($(my_check_same_vndk_variants),true)
  $(LOCAL_BUILT_MODULE): $(same_vndk_variants_stamp)
endif

# Use copy-or-link-prebuilt-to-target for host executables and shared libraries,
# to preserve symlinks to the source trees. They can then run directly from the
# prebuilt directories where the linker can load their dependencies using
# relative RUNPATHs.
$(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE)
ifeq ($(LOCAL_IS_HOST_MODULE) $(if $(filter EXECUTABLES SHARED_LIBRARIES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),true,),true true)
	$(copy-or-link-prebuilt-to-target)
else
	$(transform-prebuilt-to-target)
endif
ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
	$(hide) chmod +x $@
endif
+4 −0
Original line number Diff line number Diff line
@@ -57,7 +57,11 @@ ifdef LOCAL_INSTALLED_MODULE
endif

$(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE)
ifeq ($(LOCAL_IS_HOST_MODULE) $(if $(filter EXECUTABLES SHARED_LIBRARIES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),true,),true true)
	$(copy-or-link-prebuilt-to-target)
else
	$(transform-prebuilt-to-target)
endif
ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
	$(hide) chmod +x $@
endif