Skip to contentSkip to conversation

core: do not attempt downloads with no _VERSION set

PATCH New Alex Suykov 3 participants 3 messages Jan 24, 2016 – Jul 3, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 core: do not attempt downloads with no _VERSION set

Currently, when the package defines no _SOURCE and no _VERSION variables, we end up trying to download <PACKAGE>-undefined.tar.gz.

This is utterly pointless.

Change the logic to not attempt a download when neither _SOURCE nor _VERSION is set:
- do not set an undefined _VERSION to "undefined"
- do not append an empty (or "undefined") version to the package rawname
- use the package rawname in the MESSAGE macro

Consequently, for packages that have no _VERSION, the build directory will be just the package name (which to some may look nicer than the current "package-undefined").

Furthermore, the message trace is also a bit leaner (to the same people that find "package" nicer than "package-undefined").

---
 package/pkg-generic.mk | 6 ++----
 package/pkg-utils.mk   | 2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)
package/pkg-generic.mk +2 -4
index 1e024d3..a5ee023 100644
@@ -380,8 +380,6 @@ ifndef $(2)_VERSION
   $(2)_DL_VERSION := $$($(3)_DL_VERSION)
  else ifdef $(3)_VERSION
   $(2)_DL_VERSION := $$($(3)_VERSION)
- else
-  $(2)_DL_VERSION = undefined
  endif
 else
  $(2)_DL_VERSION := $$(strip $$($(2)_VERSION))
@@ -392,7 +390,7 @@ ifdef $(3)_OVERRIDE_SRCDIR
   $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR)
 endif
 
-$(2)_BASE_NAME	=  $(1)-$$($(2)_VERSION)
+$(2)_BASE_NAME	=  $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1))
 $(2)_DL_DIR	=  $$(DL_DIR)/$$($(2)_BASE_NAME)
 $(2)_DIR	=  $$(BUILD_DIR)/$$($(2)_BASE_NAME)
 
@@ -422,7 +420,7 @@ endif
 ifndef $(2)_SOURCE
  ifdef $(3)_SOURCE
   $(2)_SOURCE = $$($(3)_SOURCE)
- else
+ else ifdef $(2)_VERSION
   $(2)_SOURCE			?= $$($(2)_RAWNAME)-$$($(2)_VERSION).tar.gz
  endif
 endif
package/pkg-utils.mk +1 -1
index 44bd2c9..c098b55 100644
@@ -83,7 +83,7 @@ INFLATE.tar  = cat
 suitable-extractor = $(INFLATE$(suffix $(1)))
 
 # MESSAGE Macro -- display a message in bold type
-MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)"
+MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_BASE_NAME) $(call qstrip,$(1))$(TERM_RESET)"
 TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
Signature · 1 line
2.6.4
#1 lore raw

PATCH 1/1 core: do not attempt downloads with no _VERSION set

Quoted 16 lines · Alex Suykov

Currently, when the package defines no _SOURCE and no _VERSION variables, we end up trying to download <PACKAGE>-undefined.tar.gz.

This is utterly pointless.

Change the logic to not attempt a download when neither _SOURCE nor _VERSION is set:
- do not set an undefined _VERSION to "undefined"
- do not append an empty (or "undefined") version to the package rawname
- use the package rawname in the MESSAGE macro

Consequently, for packages that have no _VERSION, the build directory will be just the package name (which to some may look nicer than the current "package-undefined").

Quoted 6 lines

Furthermore, the message trace is also a bit leaner (to the same people that find "package" nicer than "package-undefined").

Note that we could also remove the _SOURCE and _VERSION definitions in
pkg-virtual.mk.

Some additional comments below.

Quoted 28 lines
---
 package/pkg-generic.mk | 6 ++----
 package/pkg-utils.mk   | 2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)
package/pkg-generic.mk +1 -3
index 1e024d3..a5ee023 100644
@@ -380,8 +380,6 @@ ifndef $(2)_VERSION
   $(2)_DL_VERSION := $$($(3)_DL_VERSION)
  else ifdef $(3)_VERSION
   $(2)_DL_VERSION := $$($(3)_VERSION)
- else
-  $(2)_DL_VERSION = undefined
  endif
 else
  $(2)_DL_VERSION := $$(strip $$($(2)_VERSION))
@@ -392,7 +390,7 @@ ifdef $(3)_OVERRIDE_SRCDIR
   $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR)
 endif
 
-$(2)_BASE_NAME	=  $(1)-$$($(2)_VERSION)
+$(2)_BASE_NAME	=  $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1))
 $(2)_DL_DIR	=  $$(DL_DIR)/$$($(2)_BASE_NAME)
 $(2)_DIR	=  $$(BUILD_DIR)/$$($(2)_BASE_NAME)
 

package/pkg-generic.mk endif · line 424

Quoted 6 lines
package/pkg-generic.mk +1 -1
@@ -422,7 +420,7 @@ endif
 ifndef $(2)_SOURCE
  ifdef $(3)_SOURCE
   $(2)_SOURCE = $$($(3)_SOURCE)
- else
+ else ifdef $(2)_VERSION
   $(2)_SOURCE			?= $$($(2)_RAWNAME)-$$($(2)_VERSION).tar.gz

Maybe we should also fix this whitespace gibberish.

package/pkg-utils.mk INFLATE.tar = cat · line 86

Quoted 12 lines
package/pkg-generic.mk +0 -0
  endif
 endif
package/pkg-utils.mk +1 -1
index 44bd2c9..c098b55 100644
@@ -83,7 +83,7 @@ INFLATE.tar  = cat
 suitable-extractor = $(INFLATE$(suffix $(1)))
 
 # MESSAGE Macro -- display a message in bold type
-MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)"
+MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_BASE_NAME) $(call qstrip,$(1))$(TERM_RESET)"

This part I don't like much. I did like it that the package name and the
version were separated in the messages. The idea of this change is to avoid a double space when PKG_VERSION is empty, but in fact we already have that for the finalizing steps.

So, to eliminate all spaces, I'd make it

MESSAGE = echo "$(TERM_BOLD)>>>" $($(PKG)_NAME) $($(PKG)_VERSION) "$(call qstrip,$(1))$(TERM_RESET)"

this way, empty package name and version will be eliminated by shell parsing.

But that's a separate patch, so I propose to eliminate just this bit from the
patch and apply.

Regards,
Arnout

Quoted 4 lines
package/pkg-utils.mk +0 -0
 TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#2 lore raw

PATCH 1/1 core: do not attempt downloads with no _VERSION set

In reply to Alex Suykov

Hello,

Quoted 16 lines · Alex Suykov

Currently, when the package defines no _SOURCE and no _VERSION variables, we end up trying to download <PACKAGE>-undefined.tar.gz.

This is utterly pointless.

Change the logic to not attempt a download when neither _SOURCE nor _VERSION is set:
- do not set an undefined _VERSION to "undefined"
- do not append an empty (or "undefined") version to the package rawname
- use the package rawname in the MESSAGE macro

Consequently, for packages that have no _VERSION, the build directory will be just the package name (which to some may look nicer than the current "package-undefined").

Quoted 6 lines

Furthermore, the message trace is also a bit leaner (to the same people that find "package" nicer than "package-undefined").

Thanks for this patch! I just sent a patch series that includes your patch, plus several follow-up patches to clean up existing patches that needlessly define _SOURCE to the empty value.

See http://lists.busybox.net/pipermail/buildroot/2016-July/166270.html
and following e-mails.

Consequently, I've marked your patch as "Changes Requested" in patchwork. Of course, the new iteration preserves your authorship.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com