diff mbox

[1/1] lockdev: Fix TARGET_DIR link

Message ID BLU0-SMTP1038BCF760A4FE2F4B22DA2D9CF0@phx.gbl
State Accepted
Headers show

Commit Message

Bernd Kuhls Dec. 29, 2013, 5:31 p.m. UTC
Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>
---
 package/lockdev/lockdev.mk |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Yann E. MORIN Dec. 29, 2013, 5:43 p.m. UTC | #1
Bernd, All,

On 2013-12-29 18:31 +0100, Bernd Kuhls spake thusly:
> Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>

> ---
>  package/lockdev/lockdev.mk |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/package/lockdev/lockdev.mk b/package/lockdev/lockdev.mk
> index 004b637..0c10341 100644
> --- a/package/lockdev/lockdev.mk
> +++ b/package/lockdev/lockdev.mk
> @@ -34,7 +34,7 @@ endef
>  
>  define LOCKDEV_INSTALL_TARGET_CMDS
>  	$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) install_run
> -	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.1
> +	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.1

The .so symlink is not required at runtime, so we do not even have to
install it in the first place. All we need is a library which filename
is the same as its SONAME.

So, if the SONAME is liblockdev.so.1, just rename the library to .so.1.
If the SONAME is liblockdev.so, just rename the library to .so. If the
library is already installed with the correct filename, no need to
rename it.

Regards,
Yann E. MORIN.
Thomas Petazzoni Dec. 29, 2013, 5:57 p.m. UTC | #2
Dear Yann E. MORIN,

On Sun, 29 Dec 2013 18:43:05 +0100, Yann E. MORIN wrote:

> >  define LOCKDEV_INSTALL_TARGET_CMDS
> >  	$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) install_run
> > -	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.1
> > +	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.1
> 
> The .so symlink is not required at runtime, so we do not even have to
> install it in the first place. All we need is a library which filename
> is the same as its SONAME.
> 
> So, if the SONAME is liblockdev.so.1, just rename the library to .so.1.
> If the SONAME is liblockdev.so, just rename the library to .so. If the
> library is already installed with the correct filename, no need to
> rename it.

I've applied the patch, because nowhere in Buildroot we rename
libraries so that they have as filename their SONAME. Therefore, doing
this specifically for liblockdev would be inconsistent with what we do
all over Buildroot.

The SONAME of this library is indeed liblockdev.so.1, so this symbolic
link is needed.

Note that liblockdev.$(LOCKDEV_VERSION).so is *NOT* a symbolic link. It
is the library itself. liblockdev is a bit non-standard: instead of
having its real library binary named liblockdev.so.<version>, it is
named liblockdev.<version>.so. And the liblockdev.so.1 symbolic link is
needed to ensure that there is something matching the SONAME of the
library, as explained above.

Best regards,

Thomas
diff mbox

Patch

diff --git a/package/lockdev/lockdev.mk b/package/lockdev/lockdev.mk
index 004b637..0c10341 100644
--- a/package/lockdev/lockdev.mk
+++ b/package/lockdev/lockdev.mk
@@ -34,7 +34,7 @@  endef
 
 define LOCKDEV_INSTALL_TARGET_CMDS
 	$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) install_run
-	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.1
+	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.1
 endef
 endif # BR2_PREFER_STATIC_LIB