diff mbox

[v2,1/2] package/lockdev: handle static/shared only build

Message ID 1420585564-7921-1-git-send-email-romain.naour@openwide.fr
State Accepted
Headers show

Commit Message

Romain Naour Jan. 6, 2015, 11:06 p.m. UTC
Add a patch to install headers and static library separately.

Signed-off-by: Romain Naour <romain.naour@openwide.fr>
---
v2: Headers must always be installed in staging,
    remove static library installation from install_dev target (ThomasP)
---
 ...stall-static-library-and-headers-separate.patch | 44 ++++++++++++++++++++++
 package/lockdev/lockdev.mk                         | 35 ++++++++++-------
 2 files changed, 66 insertions(+), 13 deletions(-)
 create mode 100644 package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch

Comments

Thomas Petazzoni Jan. 7, 2015, 9:01 p.m. UTC | #1
Dear Romain Naour,

On Wed,  7 Jan 2015 00:06:03 +0100, Romain Naour wrote:
> Add a patch to install headers and static library separately.
> 
> Signed-off-by: Romain Naour <romain.naour@openwide.fr>
> ---
> v2: Headers must always be installed in staging,
>     remove static library installation from install_dev target (ThomasP)

Thanks, both patches applied. Can you submit upstream?

To be honest, I am wondering if it's really a good idea to patch all
package to make sure they only install shared libraries in a
BR2_SHARED_LIBS=y build. Ideally yes, but do we want to carry patches
in all packages that have a crazy build system, and are for many of
them essentially unmaintained? I don't know.

Thomas
Yann E. MORIN Jan. 7, 2015, 9:17 p.m. UTC | #2
Thomas, All,

On 2015-01-07 22:01 +0100, Thomas Petazzoni spake thusly:
> On Wed,  7 Jan 2015 00:06:03 +0100, Romain Naour wrote:
> > Add a patch to install headers and static library separately.
> > 
> > Signed-off-by: Romain Naour <romain.naour@openwide.fr>
> > ---
> > v2: Headers must always be installed in staging,
> >     remove static library installation from install_dev target (ThomasP)
> 
> Thanks, both patches applied. Can you submit upstream?
> 
> To be honest, I am wondering if it's really a good idea to patch all
> package to make sure they only install shared libraries in a
> BR2_SHARED_LIBS=y build. Ideally yes, but do we want to carry patches
> in all packages that have a crazy build system, and are for many of
> them essentially unmaintained? I don't know.

Gustavo and I already discussed this on IRC a while back.

The basic idea was to have a way to identify bad packages, and somehow
mark them so that Buildroot would do the clean-up in a generic way.

Something like: FOO_IS_NOT_SHARED_ONLY_CLEAN = YES
and Buildroot would remove the .a files.

But there are some gotchas, since we can not blindly remove any and
every .a files, as some are really needed (from the toolchain, for
example, or because the package really only installs a .a because a .so
is meaningless).

Anyway, I'm still thinking about that...

Topic for the BDD, maybe?


Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch b/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch
new file mode 100644
index 0000000..d5a498a
--- /dev/null
+++ b/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch
@@ -0,0 +1,44 @@ 
+From 0dcd2368c3e23a5cc1cc4a979d9c241ed9302236 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 4 Jan 2015 16:06:07 +0100
+Subject: [PATCH] Makefile: install static library and headers separately
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+---
+ Makefile | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index e27dcbd..ecf52d1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -45,12 +45,10 @@ perl-lib:	static
+ 	cd LockDev && make OPTIMIZE="-O2 -g -Wall"
+ 	cd LockDev && make test
+ 
+-.PHONY: install install_dev install_dbg install_doc install_run 
+-install:	install_dev install_dbg install_doc install_run
++.PHONY: install install_dev install_dbg install_doc install_run install_static
++install:	install_dev install_dbg install_doc install_run install_static
+ 
+-install_dev:	${static} src/lockdev.h
+-	install -m755 -d	${libdir}
+-	install -m644 ${static}	${libdir}
++install_dev:	src/lockdev.h
+ 	install -m755 -d	${incdir}
+ 	install -m644 src/lockdev.h	${incdir}
+ 	install -m644 src/ttylock.h	${incdir}
+@@ -69,6 +67,10 @@ install_doc:	docs/lockdev.3
+ 	install -m755 -d	${mandir}/man3
+ 	install -m644 docs/lockdev.3	${mandir}/man3
+ 
++install_static:	${static}
++	install -m755 -d	${libdir}
++	install -m644 ${static}	${libdir}
++
+ install_run:	${shared}
+ 	install -m755 -d	${libdir}
+ 	install -m644 ${shared}	${libdir}
+-- 
+1.9.3
+
diff --git a/package/lockdev/lockdev.mk b/package/lockdev/lockdev.mk
index 59561ba..11142e6 100644
--- a/package/lockdev/lockdev.mk
+++ b/package/lockdev/lockdev.mk
@@ -13,30 +13,39 @@  LOCKDEV_LICENSE_FILES = LICENSE
 LOCKDEV_INSTALL_STAGING = YES
 
 ifeq ($(BR2_STATIC_LIBS),y)
-define LOCKDEV_BUILD_CMDS
-	$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) static
+LOCKDEV_BUILD_ARGS = static
+LOCKDEV_INSTALL_ARGS = install_static
+else ifeq ($(BR2_SHARED_STATIC_LIBS),y)
+LOCKDEV_BUILD_ARGS = static shared
+LOCKDEV_INSTALL_ARGS = install_run install_static
+else # BR2_SHARED_LIBS
+LOCKDEV_BUILD_ARGS = shared
+LOCKDEV_INSTALL_ARGS = install_run
+endif
+
+ifeq ($(BR2_SHARED_STATIC_LIBS)$(BR2_SHARED_LIBS),y)
+define LOCKDEV_CREATE_LINKS_STAGING
+	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so
+	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.1
 endef
 
-define LOCKDEV_INSTALL_STAGING_CMDS
-	$(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) install_dev
+define LOCKDEV_CREATE_LINKS_TARGET
+	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.1
 endef
-
-else # BR2_STATIC_LIBS
+endif
 
 define LOCKDEV_BUILD_CMDS
-	$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) static shared
+	$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(LOCKDEV_BUILD_ARGS)
 endef
 
 define LOCKDEV_INSTALL_STAGING_CMDS
-	$(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) install_dev install_run
-	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so
-	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.1
+	$(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) install_dev
+	$(LOCKDEV_CREATE_LINKS_STAGING)
 endef
 
 define LOCKDEV_INSTALL_TARGET_CMDS
-	$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) install_run
-	ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.1
+	$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS)
+	$(LOCKDEV_CREATE_LINKS_TARGET)
 endef
-endif # BR2_STATIC_LIBS
 
 $(eval $(generic-package))