Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michael S. Zick <minimod@morethan.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 2 of 3 v2] dependencies: build a host-tar if no suitable tar can be found
Date: Thu, 8 Dec 2011 09:05:46 -0600	[thread overview]
Message-ID: <201112080905.48711.minimod@morethan.org> (raw)
In-Reply-To: <201112080813.43996.minimod@morethan.org>

On Thu December 8 2011, Michael S. Zick wrote:
> On Thu December 8 2011, Thomas De Schampheleire wrote:
> > On Tue, Dec 6, 2011 at 6:07 PM, Arnout Vandecappelle <arnout@mind.be> wrote:
> > > On Wednesday 23 November 2011 15:24:40 Thomas Petazzoni wrote:
> > >
> > >> > TAR is redefined to HOST_TAR, except when extracting host-tar (this
> > >
> > >> > is a chicken-and-egg problem), so that all packages use the host-tar
> > >
> > >> > if no suitable tar was found.
> > >
> > >>
> > >
> > >> I am still puzzled by the fact that tar is needed to extract this
> > >
> > >> host-tar, so there's like a chicken-and-egg problem. I understand that
> > >
> > >> the real host tar is used to extract the host-tar, which is then use to
> > >
> > >> extract all other packages. But that sounds really nasty to me.
> > >
> > >
> > > It's not so strange, it's like a compiler's canadian build. You need a
> > >
> > > compiler to compile the compiler, right?
> > >
> > >
> > > The way it is solved for tar is OK for me. I think adding support for
> > >
> > > cpio archives would just complicate things, because then host-tar
> > >
> > > can't use GENTARGETS anymore.
> > 
> > I don't think that's true. I started adding cpio support to
> > gentargets. Essentially, here is the code that needs modification:
> > 
> > # Define extractors for different archive suffixes
> > INFLATE.bz2  = $(BZCAT)
> > INFLATE.gz   = $(ZCAT)
> > INFLATE.tbz  = $(BZCAT)
> > INFLATE.tbz2 = $(BZCAT)
> > INFLATE.tgz  = $(ZCAT)
> > INFLATE.xz   = $(XZCAT)
> > INFLATE.tar  = cat
> > 
> > $(2)_EXTRACT_CMDS ?= \
> >         $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE)))
> > $(DL_DIR)/$$($(2)_SOURCE) | \
> >         $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
> > 
> > 
> > Although the inflate step already handles multiple suffices, the
> > extract does not yet.
> >

Is the inflate step being used for tar archives?

The reason I ask is because GNU-tar (and BSD-tar) will auto-detect
the compression method from the file and un-archive it without
a prior de-compression.

In fact, if the "host tar" is BSD-tar, then you can unpack *.iso9660
as if it was an archive.

Mike 
> > My current approach is this:
> > +INFLATE.cpio = cat
> > +
> > +EXTRACT.tar = $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(1) $(TAR_OPTIONS) -
> > +EXTRACT.cpio = ( mkdir -p $(1) && cd $(1) && cpio -i )
> > 
> >  $(2)_EXTRACT_CMDS ?= \
> >         $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE)))
> > $(DL_DIR)/$$($(2)_SOURCE) | \
> > -       $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
> > +       $$(if $$(EXTRACT$$(suffix $$($(2)_SOURCE))),$$(call
> > EXTRACT$$(suffix $$($(2)_SOURCE)),$$($(2)_DIR)),$$(call
> > EXTRACT$$(suffix $$(basename $$($(2)_SOURCE))),$$($(2)_DIR))))
> > 
> > 
> > The only thing I'm struggling with is that cpio does not have a
> > --strip-components functionality. 
> >
> 
> Would: "--no-absolute-filenames" help on the cpio command?
> 
> If this will become a general purpose extract.cpio command, it
> should have that option even if it doesn't help in this case.
> 
> Many cpio archives do have absolute paths (like the initramFS
> archive) even if the GNU-TAR cpio archive does not.
> 
> Mike
> > As a result, the package is 
> > extracted in output/build/host-tar-1.26/tar-1.26 which is not right.
> > I don't directly know the name 'tar-1.26', because all I have is the
> > string 'host-tar-1.26'. I see two approaches:
> > * either try to strip of 'host' from $(2)_DIR
> > * or do something like 'mv * .' or 'find -maxdepth 1 -type d | xargs mv {} .'
> > 
> > Suggestions are much appreciated...
> > 
> > Thanks,
> > Thomas
> > _______________________________________________
> > buildroot mailing list
> > buildroot at busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
> > 
> > 
> 
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 
> 

  reply	other threads:[~2011-12-08 15:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-23 13:59 [Buildroot] [PATCH 0 of 3 v2] dependencies: some improvements Thomas De Schampheleire
2011-11-23 13:59 ` [Buildroot] [PATCH 1 of 3 v2] dependencies: add function suitable-host-package Thomas De Schampheleire
2011-12-06 17:12   ` Arnout Vandecappelle
2011-12-08  9:56     ` Thomas De Schampheleire
2011-11-23 13:59 ` [Buildroot] [PATCH 2 of 3 v2] dependencies: build a host-tar if no suitable tar can be found Thomas De Schampheleire
2011-11-23 14:24   ` Thomas Petazzoni
2011-11-23 15:05     ` Michael S. Zick
2011-11-23 15:09     ` Thomas De Schampheleire
2011-12-06 17:07     ` Arnout Vandecappelle
2011-12-08 10:41       ` Thomas De Schampheleire
2011-12-08 14:13         ` Michael S. Zick
2011-12-08 15:05           ` Michael S. Zick [this message]
2011-12-09  7:00             ` Thomas De Schampheleire
     [not found]               ` <201112090811.09604.minimod@morethan.org>
2011-12-10  9:06                 ` Thomas De Schampheleire
2011-12-06 17:23   ` Arnout Vandecappelle
2011-12-08 10:06     ` Thomas De Schampheleire
2011-12-08 14:19       ` Michael S. Zick
2011-11-23 14:00 ` [Buildroot] [PATCH 3 of 3 v2] Move toolchain/dependencies to support/dependencies Thomas De Schampheleire
2011-11-23 14:25   ` Thomas Petazzoni
2011-12-06 16:59     ` Arnout Vandecappelle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201112080905.48711.minimod@morethan.org \
    --to=minimod@morethan.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox