status-mobile/nix/deps/nodejs-patched
Siddarth Kumar ce69df19ac
apply patches with patch files (#19451)
fixes #19449

In this commit we change the way patches are applied.
We no longer have to write patches in a patch phase like we used to, we can now place individual changes in a patch file inside the `patches` directory and they will be automatically applied.

Because of this change we can get rid of forks and instead have those changes in patch files.

To generate a patch file this make command can be used `make patch-file`
This will open an interactive shell which will allow you to specify which file you want to patch and then wait till you make those changes and generate a patch for it.

```
make patch-file
Configuring Nix shell for target 'default'...
Enter the path of the file to patch: ./node_modules/is-glob/index.js
File to patch: ./node_modules/is-glob/index.js
Temporary directory created: /tmp/tmp-status-mobile-40bc588fa/tmp.xrXarXoTPZ
Original file copied to temporary directory.
Please make the necessary changes to the file: ./node_modules/is-glob/index.js
Press any key when you are done with the changes...
Generating patch file...
Patch file created at /Users/siddarthkumar/code/status-im/PR/status-mobile/patches/index.js.patch
Info: Please execute 'make run-clojure' to test if the patch file works as expected.
```

- Android
- iOS
2024-04-08 21:06:41 +05:30
..
README.md
default.nix apply patches with patch files (#19451) 2024-04-08 21:06:41 +05:30

README.md

Description

This Nix derivation takes the result of the nix/deps/nodejs/default.nix derivation and adjusts it for use with Gradle.

Details

Modules provided by yarn2nix are normally fine, but we use react-native-* packages which have their own gradle.build files that reference external Maven repositories:

repositories {
    google()
    maven { url "https://www.jitpack.io" }
}

And these need to be patched and replaced with mavenLocal() to make sure Gradle doesn't try to fetch dependencies from remote repos.

This derivation symlinks most of the modules found in the yarn2nix result and copies the ones that require patching of gradle.build files in patchGradlePhase.

It also applies other fixes like making BuildId static in patchBuildIdPhase and fixing a Hermes bug in patchHermesPhase.