Opened 6 years ago

Last modified 6 years ago

#12784 new Bugs

Use of "cp -p" on a tmpfs is broken in recent versions coreutils on solaris

Reported by: anonymous Owned by:
Milestone: Boost 1.65.0 Component: Building Boost
Version: Boost 1.63.0 Severity: Problem
Keywords: Cc:

Description

When running bootstrap.sh, under the circumstances outlined below it'll fail to copy "b2" to "jam0" with the error:

preserving permissions for 'bin.solarissparc/bjam': Operation not applicable

This happens when:

  • Building on solaris
  • Using the gcc toolset (unsure whether this is related)
  • umask is set to 002 (works fine with 022)
  • The GNU version of "cp" is the first one found in PATH
  • That version of "cp" was built against a new enough version of coreutils

I was able to work around the problem like this:

mkdir -p /tmp/dirty_hack
cd /tmp/dirty_hack
ln -s /usr/bin/cp
PATH=/tmp/dirty_hack:${PATH} ./bootstrap.sh ...bootstrap flags...
PATH=/tmp/dirty_hack:${PATH} ./bjam ...bjam flags...

At a minimum it might be a good idea to allow a configurable variable akin to JAMSHELL for what string to use to copy files & preserve permissions.

Change History (2)

comment:1 by anonymous, 6 years ago

I forgot to note: the permissions issue is a bug in coreutils. The requested enhancement in boost is that there's no built-in mechanism to override what executable is used to copy. The dirty hack I used was the only means I had to get /usr/bin/cp into the PATH ahead of /opt/csw/gnu/cp without allowing anything else in /usr/bin to override stuff in /opt/csw/gnu.

comment:2 by anonymous, 6 years ago

... and I said "tmpfs" in the subject but "df" reports that /tmp is swap; I'm not sure if that's a file system and if not how to determine what file system it's really using.

Note: See TracTickets for help on using tickets.