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 , 6 years ago
comment:2 by , 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.
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.