diff mbox

[v4,1/2] rhash: new package

Message ID 20170509092817.61068-1-Vincent.Riera@imgtec.com
State Superseded
Headers show

Commit Message

Vicente Olivert Riera May 9, 2017, 9:28 a.m. UTC
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
Changes v3 -> v4:
- Add a comment explaining why we install the console utility to the
  staging directory. (Baruch)
- Perform the installation of the console utility to the staging
  directory into a post-install-staginig-hook. (Yann)
Changes v2 -> v3:
- Nothing
Changes v1 -> v2:
- Rename package to rhash
- Take the help text of the library instead of the console utility
- Sub-config option for the rhash binary starts with the package name
- Conditionals for shared/static/shared-static reordered
- Put make options into a make_opts variable
- Install the console utility to staging as well
  (All suggestions by Arnout)
---
 package/Config.in        |  1 +
 package/rhash/Config.in  | 24 ++++++++++++++++
 package/rhash/rhash.hash |  3 ++
 package/rhash/rhash.mk   | 73 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 101 insertions(+)
 create mode 100644 package/rhash/Config.in
 create mode 100644 package/rhash/rhash.hash
 create mode 100644 package/rhash/rhash.mk

Comments

Baruch Siach May 9, 2017, 9:32 a.m. UTC | #1
Hi Vicente,

On Tue, May 09, 2017 at 10:28:16AM +0100, Vicente Olivert Riera wrote:
> +ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
> +# We also install the rhash console utility to the staging directory
> +# since we want it to be a superset of the target directory.

And why is that?

> +define RHASH_INSTALL_STAGING_RHASH_BIN
> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
> +		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) install-shared
> +endef
> +RHASH_POST_INSTALL_STAGING_HOOKS += RHASH_INSTALL_STAGING_RHASH_BIN
> +define RHASH_INSTALL_TARGET_RHASH_BIN
> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
> +		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared
> +endef
> +RHASH_POST_INSTALL_TARGET_HOOKS += RHASH_INSTALL_TARGET_RHASH_BIN
> +endif

baruch
Vicente Olivert Riera May 9, 2017, 9:39 a.m. UTC | #2
Hi Baruch,

On 09/05/17 10:32, Baruch Siach wrote:
> Hi Vicente,
> 
> On Tue, May 09, 2017 at 10:28:16AM +0100, Vicente Olivert Riera wrote:
>> +ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
>> +# We also install the rhash console utility to the staging directory
>> +# since we want it to be a superset of the target directory.
> 
> And why is that?

http://lists.busybox.net/pipermail/buildroot/2017-April/189827.html

"And of course it doesn't matter if you install the program in staging
as well - in fact I prefer it, ideally staging is a superset of target."

Personally, since we are now doing the installation of the rhash console
utility manually via post-install-hooks, I wouldn't install it to
staging. But Arnout said that he prefer it to be installed to staging
because ideally is a superset of target. Nobody said the opposite so I
modified the patch following Arnout's advice.

Vincent

> 
>> +define RHASH_INSTALL_STAGING_RHASH_BIN
>> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
>> +		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) install-shared
>> +endef
>> +RHASH_POST_INSTALL_STAGING_HOOKS += RHASH_INSTALL_STAGING_RHASH_BIN
>> +define RHASH_INSTALL_TARGET_RHASH_BIN
>> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
>> +		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared
>> +endef
>> +RHASH_POST_INSTALL_TARGET_HOOKS += RHASH_INSTALL_TARGET_RHASH_BIN
>> +endif
> 
> baruch
>
Baruch Siach May 9, 2017, 9:58 a.m. UTC | #3
Hi Vicente,

On Tue, May 09, 2017 at 10:39:00AM +0100, Vicente Olivert Riera wrote:
> On 09/05/17 10:32, Baruch Siach wrote:
> > On Tue, May 09, 2017 at 10:28:16AM +0100, Vicente Olivert Riera wrote:
> >> +ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
> >> +# We also install the rhash console utility to the staging directory
> >> +# since we want it to be a superset of the target directory.
> > 
> > And why is that?
> 
> http://lists.busybox.net/pipermail/buildroot/2017-April/189827.html
> 
> "And of course it doesn't matter if you install the program in staging
> as well - in fact I prefer it, ideally staging is a superset of target."
> 
> Personally, since we are now doing the installation of the rhash console
> utility manually via post-install-hooks, I wouldn't install it to
> staging. But Arnout said that he prefer it to be installed to staging
> because ideally is a superset of target. Nobody said the opposite so I
> modified the patch following Arnout's advice.

I remember that discussion now. It somehow made sense to me at the time, but 
not anymore. As I understand it, staging is a build time facility. Why would 
we like target only binaries installed there?

> >> +define RHASH_INSTALL_STAGING_RHASH_BIN
> >> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
> >> +		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) install-shared
> >> +endef
> >> +RHASH_POST_INSTALL_STAGING_HOOKS += RHASH_INSTALL_STAGING_RHASH_BIN
> >> +define RHASH_INSTALL_TARGET_RHASH_BIN
> >> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
> >> +		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared
> >> +endef
> >> +RHASH_POST_INSTALL_TARGET_HOOKS += RHASH_INSTALL_TARGET_RHASH_BIN
> >> +endif

baruch
Arnout Vandecappelle May 17, 2017, 8:40 p.m. UTC | #4
[Still catching up with a couple of weeks of BR mails...]

On 09-05-17 11:58, Baruch Siach wrote:
> Hi Vicente,
> 
> On Tue, May 09, 2017 at 10:39:00AM +0100, Vicente Olivert Riera wrote:
>> On 09/05/17 10:32, Baruch Siach wrote:
>>> On Tue, May 09, 2017 at 10:28:16AM +0100, Vicente Olivert Riera wrote:
>>>> +ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
>>>> +# We also install the rhash console utility to the staging directory
>>>> +# since we want it to be a superset of the target directory.
>>>
>>> And why is that?
>>
>> http://lists.busybox.net/pipermail/buildroot/2017-April/189827.html
>>
>> "And of course it doesn't matter if you install the program in staging
>> as well - in fact I prefer it, ideally staging is a superset of target."
>>
>> Personally, since we are now doing the installation of the rhash console
>> utility manually via post-install-hooks, I wouldn't install it to
>> staging. But Arnout said that he prefer it to be installed to staging
>> because ideally is a superset of target. Nobody said the opposite so I
>> modified the patch following Arnout's advice.
> 
> I remember that discussion now. It somehow made sense to me at the time, but 
> not anymore. As I understand it, staging is a build time facility. Why would 
> we like target only binaries installed there?

 What I wrote is:

"From a quick look at the Makefile, it looked like those install targets also
work from the top-level."

So what I meant is, have a single install command, no hooks:

define RHASH_INSTALL_TARGET_CMDS
	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS)
endef

(not the -C $(@D) instead of -C $(@D)/librhash)

and just do

ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
RHASH_INSTALL_TARGETS += install-shared
endif

 This would have as a side effect that the binaries are also installed in
staging even if they are not needed there. So to that I reacted with "in fact I
prefer it, ideally staging is a superset of target"


 Adding a POST_INSTALL_STAGING hook to uselessly install binaries to staging is
definitely NOT what I meant.

 Regards,
 Arnout

> 
>>>> +define RHASH_INSTALL_STAGING_RHASH_BIN
>>>> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
>>>> +		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) install-shared
>>>> +endef
>>>> +RHASH_POST_INSTALL_STAGING_HOOKS += RHASH_INSTALL_STAGING_RHASH_BIN
>>>> +define RHASH_INSTALL_TARGET_RHASH_BIN
>>>> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
>>>> +		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared
>>>> +endef
>>>> +RHASH_POST_INSTALL_TARGET_HOOKS += RHASH_INSTALL_TARGET_RHASH_BIN
>>>> +endif
> 
> baruch
>
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index d57813c..9b64ce2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -964,6 +964,7 @@  menu "Crypto"
 	source "package/mbedtls/Config.in"
 	source "package/nettle/Config.in"
 	source "package/openssl/Config.in"
+	source "package/rhash/Config.in"
 	source "package/tinydtls/Config.in"
 	source "package/trousers/Config.in"
 	source "package/ustream-ssl/Config.in"
diff --git a/package/rhash/Config.in b/package/rhash/Config.in
new file mode 100644
index 0000000..6581243
--- /dev/null
+++ b/package/rhash/Config.in
@@ -0,0 +1,24 @@ 
+config BR2_PACKAGE_RHASH
+	bool "rhash"
+	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+	help
+	  LibRHash is a professional,  portable,  thread-safe  C library for
+	  computing a wide variety of hash sums, such as  CRC32, MD4, MD5,
+	  SHA1, SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent
+	  BTIH,  GOST R 34.11-94, RIPEMD-160, HAS-160, EDON-R, Whirlpool and
+	  Snefru.
+
+	  https://github.com/rhash/RHash
+
+if BR2_PACKAGE_RHASH
+
+config BR2_PACKAGE_RHASH_BIN
+	bool "rhash binary"
+	depends on !BR2_STATIC_LIBS
+	help
+	  Install rhash console utility
+
+comment "rhash binary needs a toolchain w/ dynamic library"
+	depends on BR2_STATIC_LIBS
+
+endif
diff --git a/package/rhash/rhash.hash b/package/rhash/rhash.hash
new file mode 100644
index 0000000..5efc3a6
--- /dev/null
+++ b/package/rhash/rhash.hash
@@ -0,0 +1,3 @@ 
+# From https://sourceforge.net/projects/rhash/files/rhash/1.3.4/
+md5 0b51010604659e9e99f6307b053ba13b  rhash-1.3.4-src.tar.gz
+sha1 411d8c7ba84fa9763bc49fa2fd3a7587712fd52c  rhash-1.3.4-src.tar.gz
diff --git a/package/rhash/rhash.mk b/package/rhash/rhash.mk
new file mode 100644
index 0000000..aa1a28d
--- /dev/null
+++ b/package/rhash/rhash.mk
@@ -0,0 +1,73 @@ 
+################################################################################
+#
+# rhash
+#
+################################################################################
+
+RHASH_VERSION = 1.3.4
+RHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz
+RHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION)
+RHASH_LICENSE = MIT
+RHASH_LICENSE_FILES = COPYING
+RHASH_INSTALL_STAGING = YES
+
+ifeq ($(BR2_NEEDS_GETTEXT_IF_LOCALE),y)
+RHASH_DEPENDENCIES += gettext
+RHASH_ADDCFLAGS += -DUSE_GETTEXT
+RHASH_ADDLDFLAGS += -lintl
+endif
+
+ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx)
+RHASH_DEPENDENCIES += openssl
+RHASH_ADDCFLAGS += -DOPENSSL_RUNTIME -rdynamic
+RHASH_ADDLDFLAGS += -ldl
+endif
+
+RHASH_MAKE_OPTS = \
+	ADDCFLAGS="$(RHASH_ADDCFLAGS)" \
+	ADDLDFLAGS="$(RHASH_ADDLDFLAGS)" \
+	PREFIX="/usr"
+
+ifeq ($(BR2_SHARED_LIBS),y)
+RHASH_BUILD_TARGETS = lib-shared build-shared
+RHASH_INSTALL_TARGETS = install-lib-shared install-so-link
+else ifeq ($(BR2_STATIC_LIBS),y)
+RHASH_BUILD_TARGETS = lib-static
+RHASH_INSTALL_TARGETS = install-lib-static
+else
+RHASH_BUILD_TARGETS = lib-static lib-shared build-shared
+RHASH_INSTALL_TARGETS = install-lib-static install-lib-shared install-so-link
+endif
+
+define RHASH_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+	$(RHASH_MAKE_OPTS) $(RHASH_BUILD_TARGETS)
+endef
+
+define RHASH_INSTALL_STAGING_CMDS
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \
+		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) \
+		install-headers
+endef
+
+define RHASH_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \
+		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS)
+endef
+
+ifeq ($(BR2_PACKAGE_RHASH_BIN),y)
+# We also install the rhash console utility to the staging directory
+# since we want it to be a superset of the target directory.
+define RHASH_INSTALL_STAGING_RHASH_BIN
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+		DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) install-shared
+endef
+RHASH_POST_INSTALL_STAGING_HOOKS += RHASH_INSTALL_STAGING_RHASH_BIN
+define RHASH_INSTALL_TARGET_RHASH_BIN
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+		DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared
+endef
+RHASH_POST_INSTALL_TARGET_HOOKS += RHASH_INSTALL_TARGET_RHASH_BIN
+endif
+
+$(eval $(generic-package))