chmod -R u+w .build/src EACH TIME?????

Yann E. MORIN yann.morin.1998@anciens.enib.fr
Thu Mar 3 17:51:00 GMT 2011


Thomas, All,

On Thursday 03 March 2011 09:06:28 Thomas Petazzoni wrote:
> On Wed, 2 Mar 2011 23:35:29 +0100
> "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> wrote:
> 
> > If so, here are the reasons:
> > - some package do have RO files
> > - so we can apply patches, all files shall be RW
> > - for the C libraries addons (glibc ports, uClibc locales...), we
> >   don't really know where CWD is
> Not sure to understand this point.

When we extract packages, we usually do:
  cd "${src_dir}"
  tar xjf "${tarball}"

This works OK for most packages, except for the C library addons, which
must be extracted inside the top-level of the C library, as:
  cd "${src_dir}"
  tar xjf "${glibc_tarball}"
  cd glibc-x.yy
  tar xjf "${glibc_ports_tarball}"

Extraction is currently implemented in crostool-NG as a helper function
that takes one or two args:
  CT_Extract <basename> [nochdir]
  - basename is the base name of the archive, without the extension, (eg.
    glibc-2.9, and CT_Extract will find the proper extension (.tar, .tgz,
    .tar.bz2, .zip...)
             
  - if $2 = "nochdir", CT_Extract will just extract the tarball in CWD.

Also, tarballs will not necessarilly extract a directory named after the
tarball base name. For example:
  tarball                  | Expected dir      | Actual dir
  -------------------------+-------------------+---------------------------
  cloog-ppl-0.15.3.tar.bz2 | cloog-ppl-0.15.3/ | cloog-ppl/
  glibc-ports-2.9.tar.bz2  | ports/            | glibc-ports-2.9/ or ports/

So, from the generic handler CT_Extract, we can't know what directory we
should chmod.

Because addons could well overwrite existing files, we have to have all
files RW before we extract a new tarball. To apply patches, we need to
have all files RW as well.

So, the only trivial-to-implement way I thought of at the time was to
simply chmod the whole "${src_dir}" after each tarball was extracted.

Yes, this is a killer. :-(

> > - some package does not extract in a sub-directory of their base name
> >   ( eg. cloog-ppl 0.15.3 extracts into cloog-ppl/ )
> 
> This you can solve this --strip-components in tar.

Yes, that's a good ides. This has the side effect of making all directory
properly named.

But after a little bit of thinking, I think I prefer that the offending
package(s) do their own cleanup, rather than every one suffering...

> In Buildroot, we don't need to chmod anything special, why would it be
> needed to ct-ng ?

For example, ncurses-5.7, used to build the native gdb to run on the target,
has all its files read-only. Granted, 5.8 is out, and the archive has all
files RW, but crosstool-NG still uses 5.7.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list