Browse Source
As it turns out, npm does an "optimisation" by instead of doing a simple rename(), it link()s the source file to its destination, and unlink()s the source file. Reverse that if process.platform is 'android'.android-5
Karol Baraniecki
7 years ago
committed by
Fredrik Fornwall
1 changed files with 29 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||
--- ../node/deps/npm/node_modules/cacache/lib/util/move-file.js 2017-10-22 19:30:25.778456404 +0200
|
|||
+++ ./deps/npm/node_modules/cacache/lib/util/move-file.js 2017-10-22 20:41:18.021337095 +0200
|
|||
@@ -4,6 +4,7 @@
|
|||
const BB = require('bluebird') |
|||
const chmod = BB.promisify(fs.chmod) |
|||
const unlink = BB.promisify(fs.unlink) |
|||
+const access = BB.promisify(fs.access)
|
|||
let move |
|||
let pinflight |
|||
|
|||
@@ -18,6 +19,18 @@
|
|||
// content their own way. |
|||
// |
|||
// Note that, as the name suggests, this strictly only supports file moves. |
|||
+
|
|||
+
|
|||
+ // Calling link() on android is not allowed, we get a SELinux security exception
|
|||
+ if(process.platform === 'android') {
|
|||
+ return access(dest, fs.constants.F_OK)
|
|||
+ .catch(err => {
|
|||
+ if (!move) { move = require('move-concurrently') }
|
|||
+ return move(src, dest, { BB, fs })
|
|||
+ .then(() => chmod(dest, '0444'))
|
|||
+ })
|
|||
+ }
|
|||
+
|
|||
return BB.fromNode(cb => { |
|||
fs.link(src, dest, err => { |
|||
if (err) { |
Loading…
Reference in new issue