Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Heikki Lindholm <holindho@cs.helsinki.fi>
To: buildroot@busybox.net
Subject: [Buildroot] cp command incompatibility
Date: Sat, 10 Mar 2007 09:36:36 +0200	[thread overview]
Message-ID: <45F26004.7010106@cs.helsinki.fi> (raw)
In-Reply-To: <20070308135639.GG32231@aon.at>

Bernhard Fischer kirjoitti:
> On Fri, Feb 23, 2007 at 07:15:29PM +0200, Heikki Lindholm wrote:
> 
>>Hi,
>>
>>there's some incompatilibity between GNU cp and Mac OS X (probably BSD, 
>>too) cp commands. GNU cp arguments -d and -a do not exist on OS X. -a 
>>can be written -pPR on OS X. -d is partly covered by -P and partly by 
>>-R. -P is the --no-dereference part of -d and -R does what 
>>--preserve=links does AFAICT.
> 
> 
> There was a bug about cp -a not working on MacOS10 that (IIRC) suggested
> to use cp -dpf instead.
> 
> 
> 
>>Doing a quick grep -r "cp " `find . -iname "*.mk"` reveals that there is 
>>quite a bit of work to fix all the incompatible cp occurences, so, I'm 
>>asking here what might be the best way to do it:
>>(1) hand-edit all incompatible cp occurences to something that works on 
>>both systems ("POSIXify")
>>(2) introduce some menuconfig options for common cp "use cases" and use 
>>shell variables to pass these configurable options to cp, for example, 
>>.mk scripts might have "cp $ARCHIVE foo bar", where $ARCHIVE would, for 
>>instance, be "-a" on Linux and "-pPR" on OS X.
>>(3) give up and build a local copy of GNU fileutils, instead
> 
> 
> 4) ship, build and use a working install(1)
> 
> short of 4) and re 2). I'd introduce CP_A CP_F that'd do something like
> cp -a (resp -dpf)  and cp -pf. I do not think that $(ARCHIVE) et al are
> what we want, fwiw.
> 
> Comments?

This might require some more thought, but here's some observations. 
First, the OS X/BSF install and the GNU install are quite compatible. 
The biggest difference seems to be the -D option missing from BSD. The 
BSD way to do it, which would work on both targets, is:
install -d target_dir
install file1 file2 fileN target_dir   (multiple files do work)
Two lines instead of one -D line doesn't seem too bad. Second, there's 
an install-sh script in the autoconf package, which also emulates a BSD 
install - it might be useful. Third, install doesn't cover the recursive 
cp -a scenario, so, I'm not sure if cp can be completely got rid of just 
by using install. But then again, a cp -RPpf should be compatible across 
Linux and BSD platforms, at least. And, although using cp -RPp as a 
work-around for cp -dp seems untidy because of the added recursion, 
using it hasn't caused any trouble for me yet.

-- Heikki Lindholm

      reply	other threads:[~2007-03-10  7:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-23 17:15 [Buildroot] cp command incompatibility Heikki Lindholm
2007-03-08 13:56 ` Bernhard Fischer
2007-03-10  7:36   ` Heikki Lindholm [this message]

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=45F26004.7010106@cs.helsinki.fi \
    --to=holindho@cs.helsinki.fi \
    --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