Skip to contentSkip to conversation

Custom extract command agian agian

Buildroot New Allan W. Nielsen 2 participants 7 messages May 10, 2011 – May 18, 2011

lore
Share & tools
lore
#0 lore raw

Sorry for the mess... (I tested in the wrong repos....)

Here is a proposal which only have one stamp file and is tested.

#1 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

When using GENTARGETS (or macroes depending on it), there is no way of specifying a custom extraction procedure. When using the patch one can simply define $(PACKAGE_NAME)_EXTRACT_CMDS which will override the default. If non is defined it will fall back to the default extract procedure.

An example could look like this:

--- PACKAGE BEGIN ---
FGLRX_VERSION=11-3 FGLRX_SOURCE:=ati-driver-installer-$(FGLRX_VERSION)-x86.x86_64.run FGLRX_SITE:=http://www2.ati.com/drivers/linux/

define FGLRX_EXTRACT_CMDS

	sh $(DL_DIR)/$(FGLRX_SOURCE) --extract $(@D)

endef

$(eval $(call GENTARGETS,package,fglrx))
--- PACKAGE END ---

---
 package/Makefile.package.in |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
package/Makefile.package.in +5 -2
index bf4e1b4..9949b58 100644
@@ -243,8 +243,7 @@ endif
 $(BUILD_DIR)/%/.stamp_extracted:
 	@$(call MESSAGE,"Extracting")
 	$(Q)mkdir -p $(@D)
-	$(Q)$(if $($(PKG)_SOURCE),$(INFLATE$(suffix $($(PKG)_SOURCE))) $(DL_DIR)/$($(PKG)_SOURCE) | \
-	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) -)
+	$($(PKG)_EXTRACT_CMDS)
 # some packages have messed up permissions inside
 	$(Q)chmod -R ug+rw $(@D)
 	$(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))
@@ -425,6 +424,10 @@ $(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
 $(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
 $(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
 
+# default extract command
+$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \
+	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
+
 # post-steps hooks
 $(2)_POST_EXTRACT_HOOKS         ?=
 $(2)_POST_PATCH_HOOKS           ?=
Signature · 1 line
1.7.3.4
#2 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

Hello Allan,

Quoted 1 line · On Tue, 10 May 2011 13:34:14 +0200 "Allan W. Nielsen" <[email protected]> wrote:

--- PACKAGE BEGIN ---

Please don't use --- at the beginning of a line in your commit message. Git believes that the rest of the message shouldn't be included in the commit message when applying your patch.

package/Makefile.package.in $(2)_TARGET_UNINSTALL = $$($(2)_DIR)/.stamp_uninstalled · line 429

Quoted 3 lines
package/Makefile.package.in +3 -0
+# default extract command
+$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \
+	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)

Hm, this is not some nice. I'm currently testing your patch, I'll see if I find a better way of writing this.

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#3 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

Hello Allan,

Quoted 8 lines · On Tue, 10 May 2011 20:43:32 +0200 Thomas Petazzoni…
Quoted 5 lines

+# default extract command
+$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \

(quoted diff) +1 -0
+	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR)

$(TAR_OPTIONS) -)

Hm, this is not some nice. I'm currently testing your patch, I'll see if I find a better way of writing this.

I haven't really searched a better way of writing this, but I've used your patch and found some problem with it. It does not quote sufficiently the variables, so things break with host packages.

I have been able to get things working with:

package/Makefile.package.in +2 -1
index 9949b58..0a4c220 100644
@@ -425,7 +425,8 @@ $(2)_TARGET_CLEAN =         $$($(2)_DIR)/.stamp_cleaned
 $(2)_TARGET_DIRCLEAN =         $$($(2)_DIR)/.stamp_dircleaned
 
 # default extract command
-$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \
+$(2)_EXTRACT_CMDS ?= \
+       $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
        $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS)
        -)
 

On top of what you did.

Regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#4 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

Hi Thomas

Sorry for not replaying the last couple of days, but I have been busy with some other concerns.

However, when I did a rebuild I did also realize the problems with the solution I suggested. Since then I changed the extract_cmd statement to also the same as you have suggested:

430 $(2)_EXTRACT_CMDS ?= $(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
431 ????????$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)

This solution has been working fine for me, (and it should make no difference if I changes it to your suggestion).

Anyways, I would like to know where you stand on this, do you think this solution to be included in buildroot or would you prefer to wait for a better suggestion?

Regards

Quoted 49 lines · Thomas Petazzoni

Hello Allan,

Quoted 8 lines · On Tue, 10 May 2011 20:43:32 +0200 Thomas Petazzoni…
Quoted 5 lines

+# default extract command
+$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \
+ ? $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)

Hm, this is not some nice. I'm currently testing your patch, I'll see if I find a better way of writing this.

I haven't really searched a better way of writing this, but I've used your patch and found some problem with it. It does not quote sufficiently the variables, so things break with host packages.

I have been able to get things working with:

package/Makefile.package.in +0 -0
index 9949b58..0a4c220 100644
@@ -425,7 +425,8 @@ $(2)_TARGET_CLEAN = ? ? ? ? $$($(2)_DIR)/.stamp_cleaned

?$(2)_TARGET_DIRCLEAN = ? ? ? ? $$($(2)_DIR)/.stamp_dircleaned

?# default extract command
-$(2)_EXTRACT_CMDS ?= $(if $($(2)_SOURCE),$(INFLATE$(suffix $($(2)_SOURCE))) $(DL_DIR)/$($(2)_SOURCE) | \
+$(2)_EXTRACT_CMDS ?= \
+ ? ? ? $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
? ? ? ?$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS)
? ? ? ?-)

On top of what you did.

Regards,

Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#5 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

Hello,

Quoted 9 lines · On Wed, 18 May 2011 16:39:42 +0200 Allan Nielsen <[email protected]> wrote:

Hi Thomas

Sorry for not replaying the last couple of days, but I have been busy with some other concerns.

However, when I did a rebuild I did also realize the problems with the solution I suggested. Since then I changed the extract_cmd statement to also the same as you have suggested:

Quoted 7 lines

430 $(2)_EXTRACT_CMDS ?= $(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
431 ????????$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)

This solution has been working fine for me, (and it should make no difference if I changes it to your suggestion).

Ok.

Quoted 3 lines

Anyways, I would like to know where you stand on this, do you think this solution to be included in buildroot or would you prefer to wait for a better suggestion?

I'm fine with your existing proposal. Could you repost a proper patch with the quoting fixes, so that I can give it a test, and send my Acked-by ?

Note however that we are pretty close to the 2011.05 release, so it is quite likely that Peter will delay such infrastructure changes until after the release. But that doesn't prevent us from making progress on it, getting my Acked-by, and therefore be on track to merge it post-2011.05.

Regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#6 lore raw

PATCH 1/1 Makefile.package.in: Makes it possible to override the default extract commands

Hi

Quoted 3 lines

I'm fine with your existing proposal. Could you repost a proper patch with the quoting fixes, so that I can give it a test, and send my Acked-by ?

Sure

Quoted 5 lines

Note however that we are pretty close to the 2011.05 release, so it is quite likely that Peter will delay such infrastructure changes until after the release. But that doesn't prevent us from making progress on it, getting my Acked-by, and therefore be on track to merge it post-2011.05.

No problem

--
Allan W. Nielsen