mirror of
https://github.com/status-im/status-react.git
synced 2025-01-11 19:44:47 +00:00
761a7df06f
This commit does many things : - Upgrade `react-native ` to `0.72.5` - Upgrade `react-native-reanimated` to `3.5.4` - Upgrade `react-native-navigation` to `7.37.0` - `ndkVersion` has been bumped to `25.2.9519653` - `cmakeVersion` has been bumped to `3.22.1` - `kotlinVersion` has been bumped to `1.7.22` - `AGP` has been bumped to `7.4.2` - `Gradle` has been upgraded to `8.0.1` - Android `CompileSDK` and `TargetSDK` have been bumped to 33 - `@react-native-async-storage/async-storage` has been upgraded to `1.19.3` - `@walletconnect/client` has been nuked - some of the old `react-native-reanimated` code has been nuked - `react-native-keychain` fork has been replaced with `8.1.2` - On Android we are currently relying on `Hermes` Engine. - On iOS we are currently relying on `JSC` - We are not enabling new architecture for now (I have plans for that in the future) ref: https://github.com/status-im/status-mobile/issues/18138 IOS only PR : https://github.com/status-im/status-mobile/pull/16721 Android only PR : https://github.com/status-im/status-mobile/pull/17062 - `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
97 lines
3.1 KiB
Nix
97 lines
3.1 KiB
Nix
# This derivation patches Node.js dependencies by
|
|
# taking the result of yarn2nix and symlinking what is fine,
|
|
# and copying and modifying what needs to be adjusted.
|
|
|
|
{ stdenv, deps, nodejs, patchMavenSources }:
|
|
|
|
stdenv.mkDerivation {
|
|
name = "${deps.nodejs.name}-patched";
|
|
phases = [
|
|
"unpackPhase"
|
|
"patchGradlePhase"
|
|
"patchBuildIdPhase"
|
|
"patchKeyChainPhase"
|
|
"patchGlogPhase"
|
|
"patchJestPhase"
|
|
"installPhase"
|
|
];
|
|
|
|
# First symlink all modules as is
|
|
# WARNING: Metro has issues when dealing with symlinks!
|
|
unpackPhase = ''
|
|
mkdir -p ./node_modules/
|
|
for module in $(ls ${deps.nodejs}/node_modules); do
|
|
ln -s ${deps.nodejs}/node_modules/$module ./node_modules/
|
|
done
|
|
cp -r ${deps.nodejs}/node_modules/.bin ./node_modules/
|
|
'';
|
|
|
|
# Patch build.gradle files in 'react-native-*' dependencies to replace
|
|
# maven and google central repositories with our own local directories.
|
|
# This prevents the builder from downloading Maven artifacts
|
|
patchGradlePhase = ''
|
|
gradleConfigs=$(
|
|
find -L ./node_modules \
|
|
-name build.gradle -or \
|
|
-name build.gradle.kts -or \
|
|
-name settings.gradle -or \
|
|
-name settings.gradle.kts
|
|
)
|
|
for modBuildGradle in $gradleConfigs; do
|
|
relativeToNode=''${modBuildGradle#*node_modules/}
|
|
moduleName=''${relativeToNode%%/*}
|
|
if [[ -L ./node_modules/$moduleName ]]; then
|
|
unlink ./node_modules/$moduleName
|
|
cp -r ${deps.nodejs}/node_modules/$moduleName ./node_modules/
|
|
chmod u+w -R ./node_modules/$moduleName
|
|
fi
|
|
${patchMavenSources} $modBuildGradle
|
|
done
|
|
'';
|
|
|
|
# Do not add a BuildId to the generated libraries, for reproducibility
|
|
patchBuildIdPhase = ''
|
|
substituteInPlace ./node_modules/react-native/ReactAndroid/src/main/jni/CMakeLists.txt --replace \
|
|
'-Wl,--build-id' \
|
|
'-Wl,--build-id=none'
|
|
'';
|
|
|
|
# Remove when we upgrade jest to 29
|
|
patchJestPhase = ''
|
|
substituteInPlace ./node_modules/react-native/jest/setup.js --replace \
|
|
'jest.now()' \
|
|
'Date.now'
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -R node_modules $out/
|
|
'';
|
|
|
|
# Remove gradle-test-logger-plugin:
|
|
# https://github.com/oblador/react-native-keychain/issues/595
|
|
# TODO: remove this patch when we this library fixes above issue
|
|
patchKeyChainPhase = ''
|
|
sed -i -e '/classpath/d' \
|
|
-e '/apply plugin: "com\.adarshr\.test-logger"/d' \
|
|
./node_modules/react-native-keychain/android/build.gradle
|
|
'';
|
|
|
|
# Fix pod issue after upgrading to MacOS Sonoma and Xcode 15
|
|
# https://github.com/status-im/status-mobile/issues/17682
|
|
patchGlogPhase = ''
|
|
substituteInPlace ./node_modules/react-native/scripts/ios-configure-glog.sh \
|
|
--replace 'export CC="' '#export CC="' \
|
|
--replace 'export CXX="' '#export CXX="'
|
|
'';
|
|
|
|
# The ELF types are incompatible with the host platform, so let's not even try
|
|
# TODO: Use Android NDK to strip binaries manually
|
|
dontPatchELF = true;
|
|
dontStripHost = true;
|
|
|
|
# Take whole sources into consideration when calculating sha
|
|
outputHashMode = "recursive";
|
|
outputHashAlgo = "sha256";
|
|
}
|