platform_build/tools/acp
Bob Badour 0390580262 [LSC] Add LOCAL_LICENSE_KINDS to build/make
Added SPDX-license-identifier-Apache-2.0 to:
  target/product/sysconfig/Android.bp
  tools/apicheck/Android.bp
  tools/product_config/Android.bp
  tools/releasetools/Android.bp
  tools/signapk/Android.bp
  tools/signtos/Android.bp
  tools/zipalign/Android.bp
  tools/ziptime/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
    SPDX-license-identifier-CC-BY SPDX-license-identifier-GPL
    SPDX-license-identifier-GPL-2.0 SPDX-license-identifier-LGPL
    SPDX-license-identifier-MIT legacy_not_a_contribution
    legacy_restricted
to:
  Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
    SPDX-license-identifier-CC-BY SPDX-license-identifier-GPL
    SPDX-license-identifier-MIT
to:
  tools/Android.bp
  tools/droiddoc/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
    SPDX-license-identifier-GPL SPDX-license-identifier-GPL-2.0
    SPDX-license-identifier-LGPL SPDX-license-identifier-MIT
to:
  core/base_rules.mk
  core/dex_preopt_libart.mk
  core/package_internal.mk

Added SPDX-license-identifier-Apache-2.0 legacy_not_a_contribution
to:
  target/board/Android.mk

Added legacy_restricted
to:
  core/tasks/tools/package-modules.mk
  target/product/gsi/Android.bp
  target/product/gsi/Android.mk
  target/product/security/Android.bp
  target/product/security/Android.mk
  tools/acp/Android.bp
  tools/atree/Android.bp
  tools/fs_config/Android.bp
  tools/fs_config/Android.mk
  tools/fs_get_stats/Android.bp
  tools/libhost/Android.bp

Bug: 68860345
Bug: 151177513
Bug: 151953481

Test: m all

Exempt-From-Owner-Approval: janitorial work
Change-Id: Id67a4eb1312940f999643b2ae57f45f34f120724
2021-02-14 10:37:20 -08:00
..
Android.bp [LSC] Add LOCAL_LICENSE_KINDS to build/make 2021-02-14 10:37:20 -08:00
README auto import from //depot/cupcake/@135843 2009-03-03 19:28:42 -08:00
acp.c Use -Werror in build/make 2017-10-03 13:53:13 -07:00

README

README for Android "acp" Command

The "cp" command was judged and found wanting.  The issues are:

Mac OS X:
 - Uses the BSD cp, not the fancy GNU cp.  It lacks the "-u" flag, which
   only copies files if they are newer than the destination.  This can
   slow the build when copying lots of content.
 - Doesn't take the "-d" flag, which causes symlinks to be copied as
   links.  This is the default behavior, so it's not all bad, but it
   complains if you supply "-d".

MinGW/Cygwin:
 - Gets really weird when copying a file called "foo.exe", failing with
   "cp: skipping file 'foo.exe', as it was replaced while being copied".
   This only seems to happen when the source file is on an NFS/Samba
   volume.  "cp" works okay copying from local disk.

Linux:
 - On some systems it's possible to have microsecond-accurate timestamps
   on an NFS volume, and non-microsecond timestamps on a local volume.
   If you copy from NFS to local disk, your NFS files will always be
   newer, because the local disk time stamp is truncated rather than
   rounded up.  This foils the "-u" flag if you also supply the "-p" flag
   to preserve timestamps.
 - The Darwin linker insists that ranlib be current.  If you copy the
   library, the time stamp no longer matches.  Preserving the time
   stamp is essential, so simply turning the "-p" flag off doesn't work.

Futzing around these in make with GNU make functions is awkward at best.
It's easier and more reliable to write a cp command that works properly.


The "acp" command takes most of the standard flags, following the GNU
conventions.  It adds a "-e" flag, used when copying executables around.
On most systems it is ignored, but on MinGW/Cygwin it allows "cp foo bar"
to work when what is actually meant is "cp foo.exe bar.exe".  Unlike the
default Cygwin cp, "acp foo bar" will not find foo.exe unless you add
the "-e" flag, avoiding potential ambiguity.