package/hiredis: fix installation logic of library
authorRomain Naour <romain.naour@gmail.com>
Tue, 11 Apr 2017 22:26:30 +0000 (00:26 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 12 Apr 2017 19:34:12 +0000 (21:34 +0200)
While testing minetest with libhiredis library, the game crached due to
missing libhiredis.so.0.13 library.

The hiredis.mk doesn't use "make install" because "make install" depends
on building both the shared and static libraries, which fails in
static-only scenarios.

However, the installation logic in hiredis.mk is bogus: it installs the
library as libhiredis.so, while its SONAME is libhiredis.so.0.13. We fix
this by using the same logic as the one done by the package "make
install" process: install the library as libhiredis.so.0.13, and create
libhiredis.so as a symbolic link to it.

While at it:

 - Install the library 0755, this is more common.

 - Do not create $(TARGET_DIR)/usr/lib, since $(INSTALL) -D will create
   the necessary directories for the destination path.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Thomas: rework to use the same installation logic as the one from
hiredis "make install".]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/hiredis/hiredis.mk

index 53ad0b9e4a607f5ec559d46b42f9d52824edfd26..c2be93650769e7687c25dd2ea29274cfe942204f 100644 (file)
@@ -4,7 +4,8 @@
 #
 ################################################################################
 
-HIREDIS_VERSION = v0.13.3
+HIREDIS_VERSION_MAJOR = 0.13
+HIREDIS_VERSION = v$(HIREDIS_VERSION_MAJOR).3
 HIREDIS_SITE = $(call github,redis,hiredis,$(HIREDIS_VERSION))
 HIREDIS_LICENSE = BSD-3-Clause
 HIREDIS_LICENSE_FILES = COPYING
@@ -37,12 +38,15 @@ define HIREDIS_INSTALL_STAGING_CMDS
                $(@D)/adapters $(HIREDIS_INCLUDE_DIR)
        $(INSTALL) -D -m 0644 $(@D)/hiredis.pc \
                $(STAGING_DIR)/usr/lib/pkgconfig/hiredis.pc
-       $(INSTALL) -m 0644 -t $(STAGING_DIR)/usr/lib $(@D)/libhiredis*
+       $(INSTALL) -D -m 0755 $(@D)/libhiredis.so \
+               $(STAGING_DIR)/usr/lib/libhiredis.so.$(HIREDIS_VERSION_MAJOR)
+       ln -sf libhiredis.so.$(HIREDIS_VERSION_MAJOR) $(STAGING_DIR)/usr/lib/libhiredis.so
 endef
 
 define HIREDIS_INSTALL_TARGET_CMDS
-       mkdir -p $(TARGET_DIR)/usr/lib
-       $(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/lib $(@D)/libhiredis*
+       $(INSTALL) -D -m 0755 $(@D)/libhiredis.so \
+               $(TARGET_DIR)/usr/lib/libhiredis.so.$(HIREDIS_VERSION_MAJOR)
+       ln -sf libhiredis.so.$(HIREDIS_VERSION_MAJOR) $(TARGET_DIR)/usr/lib/libhiredis.so
 endef
 
 $(eval $(generic-package))