Message ID | 20170509092817.61068-1-Vincent.Riera@imgtec.com |
---|---|
State | Superseded |
Headers | show |
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
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 >
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
[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 --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))
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