patch-package icon indicating copy to clipboard operation
patch-package copied to clipboard

Patch react-native 0.59.9 failed

Open caisd1998 opened this issue 4 years ago • 9 comments

Looks like it's due to many new files generated under new directory "third-party" after I build my project. I can fix it by excluding that directory: yarn patch-package react-native --exclude third-party

Below is the error log if not exclude: `yarn patch-package react-native yarn run v1.16.0 $ /Users/samuel.cai/Documents/app/node_modules/.bin/patch-package react-native patch-package 6.2.0 • Creating temporary folder • Installing [email protected] with yarn • Diffing your files with clean files

{ error: Error: spawnSync git ENOBUFS at Object.spawnSync (internal/child_process.js:1041:20) at Object.spawnSync (child_process.js:602:24) at Function.spawnSync [as sync] (/Users/samuel.cai/Documents/app/node_modules/patch-package/node_modules/cross-spawn/index.js:26:23) at Object.exports.spawnSafeSync (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/spawnSafe.js:10:32) at git (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/makePatch.js:104:32) at Object.makePatch (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/makePatch.js:135:26) at /Users/samuel.cai/Documents/app/node_modules/patch-package/dist/index.js:48:25 at Array.forEach () at Object. (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/index.js:47:22) at Module._compile (internal/modules/cjs/loader.js:774:30) { errno: 'ENOBUFS', code: 'ENOBUFS', syscall: 'spawnSync git', path: 'git', spawnargs: [ 'diff', '--cached', '--no-color', '--ignore-space-at-eol', '--no-ext-diff' ] }, status: null, signal: 'SIGTERM', output: [ null, <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 6e 61 74 69 76 65 2f 4c 69 62 72 61 72 69 65 73 2f 41 ... 1056718 more bytes>, <Buffer > ], pid: 87610, stdout: <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 6e 61 74 69 76 65 2f 4c 69 62 72 61 72 69 65 73 2f 41 ... 1056718 more bytes>, stderr: <Buffer > }

/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/makePatch.js:181 throw e; ^ { error: Error: spawnSync git ENOBUFS at Object.spawnSync (internal/child_process.js:1041:20) at Object.spawnSync (child_process.js:602:24) at Function.spawnSync [as sync] (/Users/samuel.cai/Documents/app/node_modules/patch-package/node_modules/cross-spawn/index.js:26:23) at Object.exports.spawnSafeSync (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/spawnSafe.js:10:32) at git (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/makePatch.js:104:32) at Object.makePatch (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/makePatch.js:135:26) at /Users/samuel.cai/Documents/app/node_modules/patch-package/dist/index.js:48:25 at Array.forEach () at Object. (/Users/samuel.cai/Documents/app/node_modules/patch-package/dist/index.js:47:22) at Module._compile (internal/modules/cjs/loader.js:774:30) { errno: 'ENOBUFS', code: 'ENOBUFS', syscall: 'spawnSync git', path: 'git', spawnargs: [ 'diff', '--cached', '--no-color', '--ignore-space-at-eol', '--no-ext-diff' ] }, status: null, signal: 'SIGTERM', output: [ null, <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 6e 61 74 69 76 65 2f 4c 69 62 72 61 72 69 65 73 2f 41 ... 1056718 more bytes>, <Buffer > ], pid: 87610, stdout: <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 6e 61 74 69 76 65 2f 4c 69 62 72 61 72 69 65 73 2f 41 ... 1056718 more bytes>, stderr: <Buffer > } error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.`

caisd1998 avatar Nov 04 '19 10:11 caisd1998

Same issue here, even with the --include flag to only include the file I need. As it is patch-package is unusable to patch React Native because of this bug.

laurent22 avatar Nov 06 '19 11:11 laurent22

Same issue here, even with the --include flag to only include the file I need. As it is patch-package is unusable to patch React Native because of this bug.

-- include works for me, but I don't want to use it because I need to patch two directories:

  1. I don't know how to use -- include for two directories.
  2. Even if I know, -- include doesn't support incremental change, for example, today I run -- include for one directory, tomorrow I run -- include for another directory, the generated path file only includes path for another directory. So I need to remember all directories I included before, and remember to include them once I need to path one more directory.

caisd1998 avatar Nov 07 '19 02:11 caisd1998

Just to add that --include works for me too (which I understand is no consolation if you're patching multiple directories). In case it helps, here's how I invoked patch-package to patch react-native/React/Base/RCTModuleMethod.mm:

node_modules/.bin/patch-package react-native --include React\\/Base\\/RCTModuleMethod\\.mm

shirakaba avatar Nov 14 '19 17:11 shirakaba

Just to add that --include works for me too

Somehow it doesn't work for me and I get the same error as above.

Eventually I just did diff -u oldFile.java newFile.java > newFile.patch and renamed it to whatever name patch-package expects.

It feels like there should be some optimisation when --include is specified, while now it's processing everything anyway and just filters the relevant files.

laurent22 avatar Nov 14 '19 18:11 laurent22

Eventually I just did diff -u oldFile.java newFile.java > newFile.patch and renamed it to whatever name patch-package expects.

Thanks for that shell snippet; I'll use that next time rather than having patch-package redownload the React Native package in its entirety.

shirakaba avatar Nov 14 '19 18:11 shirakaba

Same issue here (RN 0.57.8)

mosesoak avatar Apr 01 '20 18:04 mosesoak

Seems to be duplicate of #166

edit: Solution I'm using: https://github.com/ds300/patch-package/issues/166#issuecomment-611002963

edit2: #166 is fixed in v6.4.5 https://github.com/ds300/patch-package/issues/166#issuecomment-790453513 @caisd1998 Does this resolve your issue?

brussee avatar Apr 08 '20 14:04 brussee

I ran into this issue too using the npx version of patch-package. The fix was to install it globally so I was using the latest version. Thanks!

xOIBrandon avatar Apr 08 '21 18:04 xOIBrandon

Same issue here, even with the --include flag to only include the file I need. As it is patch-package is unusable to patch React Native because of this bug.

-- include works for me, but I don't want to use it because I need to patch two directories:

  1. I don't know how to use -- include for two directories.
  2. Even if I know, -- include doesn't support incremental change, for example, today I run -- include for one directory, tomorrow I run -- include for another directory, the generated path file only includes path for another directory. So I need to remember all directories I included before, and remember to include them once I need to path one more directory.

@caisd1998 try this command! I tries many times, and finally figure out the correct regex form

yarn patch-package react-native --include Libraries/fishhook/.*\|React/CxxBridge/.*

pzxbc avatar Apr 20 '22 06:04 pzxbc