Android: move drivers' symlinks to /vendor

Submitted by Mauro Rossi on Oct. 26, 2017, 10:48 p.m.

Details

Message ID 20171026224814.22977-1-issor.oruam@gmail.com
State New
Headers show
Series "Android: move drivers' symlinks to /vendor" ( rev: 1 ) in Mesa

Not browsing as part of any series.

Commit Message

Mauro Rossi Oct. 26, 2017, 10:48 p.m.
Having moved gallium_dri.so library to /vendor/lib/dri
also symlinks need to be coherently created using TARGET_OUT_VENDOR insted of TARGET_OUT
or all non Intel drivers will not be loaded with Android N and earlier,
thus causing SurfaceFlinger SIGABRT

Fixes: c3f75d483c ("Android: move libraries to /vendor")

Cc: 17.3 <mesa-stable@lists.freedesktop.org>
---
 src/gallium/targets/dri/Android.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/targets/dri/Android.mk b/src/gallium/targets/dri/Android.mk
index 61b65769ff..3fa86a2d56 100644
--- a/src/gallium/targets/dri/Android.mk
+++ b/src/gallium/targets/dri/Android.mk
@@ -70,8 +70,8 @@  LOCAL_SHARED_LIBRARIES += $(sort $(GALLIUM_SHARED_LIBS))
 ifneq ($(filter 5 6 7, $(MESA_ANDROID_MAJOR_VERSION)),)
 LOCAL_POST_INSTALL_CMD := \
 	$(foreach l, lib $(if $(filter true,$(TARGET_IS_64_BIT)),lib64), \
-	  mkdir -p $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
-	  $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
+	  mkdir -p $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
+	  $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
 	)
 else
 LOCAL_MODULE_SYMLINKS := $(foreach d, $(GALLIUM_TARGET_DRIVERS), $(d)_dri.so)

Comments

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>

On 10/27/2017 01:48 AM, Mauro Rossi wrote:
> Having moved gallium_dri.so library to /vendor/lib/dri
> also symlinks need to be coherently created using TARGET_OUT_VENDOR insted of TARGET_OUT
> or all non Intel drivers will not be loaded with Android N and earlier,
> thus causing SurfaceFlinger SIGABRT
> 
> Fixes: c3f75d483c ("Android: move libraries to /vendor")
> 
> Cc: 17.3 <mesa-stable@lists.freedesktop.org>
> ---
>   src/gallium/targets/dri/Android.mk | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/targets/dri/Android.mk b/src/gallium/targets/dri/Android.mk
> index 61b65769ff..3fa86a2d56 100644
> --- a/src/gallium/targets/dri/Android.mk
> +++ b/src/gallium/targets/dri/Android.mk
> @@ -70,8 +70,8 @@ LOCAL_SHARED_LIBRARIES += $(sort $(GALLIUM_SHARED_LIBS))
>   ifneq ($(filter 5 6 7, $(MESA_ANDROID_MAJOR_VERSION)),)
>   LOCAL_POST_INSTALL_CMD := \
>   	$(foreach l, lib $(if $(filter true,$(TARGET_IS_64_BIT)),lib64), \
> -	  mkdir -p $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
> -	  $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
> +	  mkdir -p $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
> +	  $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
>   	)
>   else
>   LOCAL_MODULE_SYMLINKS := $(foreach d, $(GALLIUM_TARGET_DRIVERS), $(d)_dri.so)
>
On 26 October 2017 at 23:48, Mauro Rossi <issor.oruam@gmail.com> wrote:
> Having moved gallium_dri.so library to /vendor/lib/dri
> also symlinks need to be coherently created using TARGET_OUT_VENDOR insted of TARGET_OUT
> or all non Intel drivers will not be loaded with Android N and earlier,
> thus causing SurfaceFlinger SIGABRT
>
> Fixes: c3f75d483c ("Android: move libraries to /vendor")
>
> Cc: 17.3 <mesa-stable@lists.freedesktop.org>
> ---
>  src/gallium/targets/dri/Android.mk | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/targets/dri/Android.mk b/src/gallium/targets/dri/Android.mk
> index 61b65769ff..3fa86a2d56 100644
> --- a/src/gallium/targets/dri/Android.mk
> +++ b/src/gallium/targets/dri/Android.mk
> @@ -70,8 +70,8 @@ LOCAL_SHARED_LIBRARIES += $(sort $(GALLIUM_SHARED_LIBS))
>  ifneq ($(filter 5 6 7, $(MESA_ANDROID_MAJOR_VERSION)),)
>  LOCAL_POST_INSTALL_CMD := \
>         $(foreach l, lib $(if $(filter true,$(TARGET_IS_64_BIT)),lib64), \
> -         mkdir -p $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
> -         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
> +         mkdir -p $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
> +         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
Can we fold the long path into a variable and then reuse it?
This code will be around for a bit, so it might be worth it.

foo=$(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)
mkdir -p $(foo)
$(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so
$(foo)/$(d)_dri.so;)

-Emil
*Please use better variable name than foo
On Fri, Oct 27, 2017 at 6:41 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> On 26 October 2017 at 23:48, Mauro Rossi <issor.oruam@gmail.com> wrote:
>> Having moved gallium_dri.so library to /vendor/lib/dri
>> also symlinks need to be coherently created using TARGET_OUT_VENDOR insted of TARGET_OUT
>> or all non Intel drivers will not be loaded with Android N and earlier,
>> thus causing SurfaceFlinger SIGABRT
>>
>> Fixes: c3f75d483c ("Android: move libraries to /vendor")
>>
>> Cc: 17.3 <mesa-stable@lists.freedesktop.org>
>> ---
>>  src/gallium/targets/dri/Android.mk | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Rob Herring <robh@kernel.org>

>>
>> diff --git a/src/gallium/targets/dri/Android.mk b/src/gallium/targets/dri/Android.mk
>> index 61b65769ff..3fa86a2d56 100644
>> --- a/src/gallium/targets/dri/Android.mk
>> +++ b/src/gallium/targets/dri/Android.mk
>> @@ -70,8 +70,8 @@ LOCAL_SHARED_LIBRARIES += $(sort $(GALLIUM_SHARED_LIBS))
>>  ifneq ($(filter 5 6 7, $(MESA_ANDROID_MAJOR_VERSION)),)
>>  LOCAL_POST_INSTALL_CMD := \
>>         $(foreach l, lib $(if $(filter true,$(TARGET_IS_64_BIT)),lib64), \
>> -         mkdir -p $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
>> -         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
>> +         mkdir -p $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
>> +         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
> Can we fold the long path into a variable and then reuse it?
> This code will be around for a bit, so it might be worth it.
>
> foo=$(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)
> mkdir -p $(foo)
> $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so
> $(foo)/$(d)_dri.so;)
>
> -Emil
> *Please use better variable name than foo

bar?
2017-10-27 14:28 GMT+02:00 Rob Herring <robh@kernel.org>:

> On Fri, Oct 27, 2017 at 6:41 AM, Emil Velikov <emil.l.velikov@gmail.com>
> wrote:
> > On 26 October 2017 at 23:48, Mauro Rossi <issor.oruam@gmail.com> wrote:
> >> Having moved gallium_dri.so library to /vendor/lib/dri
> >> also symlinks need to be coherently created using TARGET_OUT_VENDOR
> insted of TARGET_OUT
> >> or all non Intel drivers will not be loaded with Android N and earlier,
> >> thus causing SurfaceFlinger SIGABRT
> >>
> >> Fixes: c3f75d483c ("Android: move libraries to /vendor")
> >>
> >> Cc: 17.3 <mesa-stable@lists.freedesktop.org>
> >> ---
> >>  src/gallium/targets/dri/Android.mk | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> Reviewed-by: Rob Herring <robh@kernel.org>
>
> >>
> >> diff --git a/src/gallium/targets/dri/Android.mk
> b/src/gallium/targets/dri/Android.mk
> >> index 61b65769ff..3fa86a2d56 100644
> >> --- a/src/gallium/targets/dri/Android.mk
> >> +++ b/src/gallium/targets/dri/Android.mk
> >> @@ -70,8 +70,8 @@ LOCAL_SHARED_LIBRARIES += $(sort
> $(GALLIUM_SHARED_LIBS))
> >>  ifneq ($(filter 5 6 7, $(MESA_ANDROID_MAJOR_VERSION)),)
> >>  LOCAL_POST_INSTALL_CMD := \
> >>         $(foreach l, lib $(if $(filter true,$(TARGET_IS_64_BIT)),lib64),
> \
> >> -         mkdir -p $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH); \
> >> -         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so
> $(TARGET_OUT)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
> >> +         mkdir -p $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH);
> \
> >> +         $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so
> $(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)/$(d)_dri.so;) \
> > Can we fold the long path into a variable and then reuse it?
> > This code will be around for a bit, so it might be worth it.
> >
> > foo=$(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH)
> > mkdir -p $(foo)
> > $(foreach d, $(GALLIUM_TARGET_DRIVERS), ln -sf gallium_dri.so
> > $(foo)/$(d)_dri.so;)
> >
> > -Emil
> > *Please use better variable name than foo
>
> bar?
>

...and the winner is ... MESA_DRI_MODULE_PATH

$(eval MESA_DRI_MODULE_PATH :=
$(TARGET_OUT_VENDOR)/$(l)/$(MESA_DRI_MODULE_REL_PATH))

Sending tested v2 patch soon
Mauro