Skip to content

Commit ff721ba

Browse files
author
Pedro Pombeiro
committed
nix: Some minor fixes
1 parent b635691 commit ff721ba

8 files changed

Lines changed: 51 additions & 106 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,15 @@ project.xcworkspace
3232
.gradle
3333
*.iml
3434
**/android/.project
35+
**/android/.settings/org.eclipse.buildship.core.prefs
36+
local.properties
3537

3638
# Atom
3739
.tags*
3840

3941
# VS Code
4042
.vscode/ipch/
43+
.vscode/settings.json
4144

4245
# node.js
4346
#

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ nix-update-npm: export TARGET_OS := none
6868
nix-update-npm: ##@nix Update node2nix expressions based on current package.json
6969
nix/desktop/realm-node/generate-nix.sh
7070

71-
nix-update-gradle: export TARGET_OS := android
7271
nix-update-gradle: ##@nix Update maven nix expressions based on current gradle setup
7372
nix/mobile/android/maven-and-npm-deps/maven/generate-nix.sh
7473

@@ -113,12 +112,14 @@ release: release-android release-ios ##@build build release for Android and iOS
113112
release-android: export TARGET_OS ?= android
114113
release-android: export BUILD_ENV ?= prod
115114
release-android: export BUILD_TYPE ?= nightly
115+
release-android: export BUILD_NUMBER ?= 9999
116116
release-android: export NDK_ABI_FILTERS ?= armeabi-v7a;arm64-v8a;x86
117117
release-android: export STORE_FILE ?= ~/.gradle/status-im.keystore
118118
release-android: ##@build build release for Android
119119
nix/build.sh targets.mobile.$(TARGET_OS).release \
120120
--arg env '{NDK_ABI_FILTERS="$(NDK_ABI_FILTERS)";}' \
121121
--argstr build-type $(BUILD_TYPE) \
122+
--argstr build-number $(BUILD_NUMBER) \
122123
--argstr keystore-file $(STORE_FILE) \
123124
--option extra-sandbox-paths $(STORE_FILE)
124125

nix/clean.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ for path in ${drvPaths}; do
5353
toDelete+=("${drv}" "${src}")
5454
done
5555

56-
# remove dupicates
56+
# remove duplicates
5757
cleanToDelete=$(echo "${toDelete[@]}" | sort | uniq)
5858

5959
echo "Deleting..."

nix/mobile/android/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{ config, stdenv, stdenvNoCC, target-os, callPackage, mkShell,
1+
{ config, stdenv, stdenvNoCC, target-os ? "android", callPackage, mkShell,
22
mkFilter, androidenv, fetchurl, openjdk, nodejs, bash, maven, zlib,
33
status-go, localMavenRepoBuilder, projectNodePackage, jsbundle }:
44

nix/mobile/android/maven-and-npm-deps/default.nix

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ let
2525
deps =
2626
let
2727
# Place build target directories in NIX_BUILD_TOP (normally represents /build)
28-
projectDir = "$NIX_BUILD_TOP/project";
28+
projectBuildDir = "$NIX_BUILD_TOP/project";
2929
mavenRepoDir = "$NIX_BUILD_TOP/.m2/repository";
3030
reactNativeMavenPackageDir = "${mavenRepoDir}/com/facebook/react/react-native"; # This is directory where the react-native Maven package will be generated in
3131
reactNativeDepsDir = "$NIX_BUILD_TOP/deps"; # Use local writable deps, otherwise (probably due to some interaction between Nix sandboxing and Java) gradle will fail copying directly from the nix store
@@ -57,10 +57,10 @@ let
5757
runHook preUnpack
5858
5959
# Copy project directory
60-
mkdir -p ${projectDir}
61-
cp -a $src/. ${projectDir}
62-
chmod u+w ${projectDir}
63-
cd ${projectDir}
60+
mkdir -p ${projectBuildDir}
61+
cp -a $src/. ${projectBuildDir}
62+
chmod u+w ${projectBuildDir}
63+
cd ${projectBuildDir}
6464
6565
# Copy RN maven dependencies and make them writable, otherwise Gradle copy fails (since the top-level directory is read-only, Java isn't smart enough to copy the child files/folders into that target directory)
6666
mkdir -p ${mavenRepoDir}
@@ -73,21 +73,21 @@ let
7373
done
7474
7575
# Copy node_modules from Nix store
76-
rm -rf ${projectDir}/node_modules
77-
mkdir -p ${projectDir}/node_modules
78-
cp -a ${projectNodePackage}/node_modules/. ${projectDir}/node_modules/
76+
rm -rf ${projectBuildDir}/node_modules
77+
mkdir -p ${projectBuildDir}/node_modules
78+
cp -a ${projectNodePackage}/node_modules/. ${projectBuildDir}/node_modules/
7979
8080
# Adjust permissions
81-
chmod -R u+w ${projectDir}
81+
chmod -R u+w ${projectBuildDir}
8282
83-
cp -R ${projectDir}/status-modules/ ${projectDir}/node_modules/status-modules/
84-
cp -R ${projectDir}/translations/ ${projectDir}/node_modules/status-modules/translations/
83+
cp -R ${projectBuildDir}/status-modules/ ${projectBuildDir}/node_modules/status-modules/
84+
cp -R ${projectBuildDir}/translations/ ${projectBuildDir}/node_modules/status-modules/translations/
8585
8686
# Set up symlinks to mobile enviroment in project root
87-
${createMobileFilesSymlinks projectDir}
87+
${createMobileFilesSymlinks projectBuildDir}
8888
8989
# Create a dummy VERSION, since we don't want this expression to be invalidated just because the version changed
90-
echo '0.0.1' > ${projectDir}/VERSION
90+
echo '0.0.1' > ${projectBuildDir}/VERSION
9191
9292
runHook postUnpack
9393
'';
@@ -97,7 +97,7 @@ let
9797
prevSet=$-
9898
set -e
9999
100-
patchShebangs ${projectDir}
100+
patchShebangs ${projectBuildDir}
101101
102102
function patchMavenSource() {
103103
set +e
@@ -125,28 +125,34 @@ let
125125
126126
# Patch maven and google central repositories with our own local directories. This prevents the builder from downloading Maven artifacts
127127
patchMavenSources 'android/build.gradle' '${mavenLocalRepo}'
128-
for f in `find ${projectDir}/node_modules/ -name build.gradle`; do
128+
for f in `find ${projectBuildDir}/node_modules/ -name build.gradle`; do
129129
patchMavenSources $f '${mavenLocalRepo}'
130130
done
131131
132132
# Patch prepareJSC so that it doesn't try to download from registry
133-
substituteInPlace ${projectDir}/node_modules/react-native/ReactAndroid/build.gradle \
133+
substituteInPlace ${projectBuildDir}/node_modules/react-native/ReactAndroid/build.gradle \
134134
--replace 'prepareJSC(dependsOn: downloadJSC)' 'prepareJSC(dependsOn: createNativeDepsDirectories)' \
135135
--replace 'def jscTar = tarTree(downloadJSC.dest)' "def jscTar = tarTree(new File(\"${react-native-deps}/deps/${jsc-filename}.tar.gz\"))"
136136
137137
# Do not add a BuildId to the generated libraries, for reproducibility
138-
substituteInPlace ${projectDir}/node_modules/react-native/ReactAndroid/src/main/jni/Application.mk \
139-
--replace '-Wl,--build-id' '-Wl,--build-id=none'
138+
substituteInPlace ${projectBuildDir}/node_modules/react-native/ReactAndroid/src/main/jni/Application.mk \
139+
--replace \
140+
'-Wl,--build-id' \
141+
'-Wl,--build-id=none'
140142
141143
# Disable Gradle daemon and caching, since that causes rebuilds (and subsequently errors) anyway due to cache being considered stale
142-
substituteInPlace ${projectDir}/android/gradle.properties \
143-
--replace 'org.gradle.jvmargs=-Xmx8704M' 'org.gradle.jvmargs=-Xmx8704M
144+
substituteInPlace ${projectBuildDir}/android/gradle.properties \
145+
--replace \
146+
'org.gradle.jvmargs=-Xmx8704M' \
147+
'org.gradle.jvmargs=-Xmx8704M
144148
org.gradle.daemon=false
145149
org.gradle.caching=false'
146150
147151
# Patch the path to nodejs in project.ext.react
148-
substituteInPlace ${projectDir}/android/app/build.gradle \
149-
--replace 'nodeExecutableAndArgs: ["node"' 'nodeExecutableAndArgs: ["${nodejs}/bin/node"'
152+
substituteInPlace ${projectBuildDir}/android/app/build.gradle \
153+
--replace \
154+
'nodeExecutableAndArgs: ["node"' \
155+
'nodeExecutableAndArgs: ["${nodejs}/bin/node"'
150156
151157
set $prevSet
152158
@@ -157,9 +163,9 @@ let
157163
status-go.shellHook + ''
158164
export HOME=$NIX_BUILD_TOP
159165
export REACT_NATIVE_DEPENDENCIES="${reactNativeDepsDir}"
160-
export STATUS_REACT_HOME="${projectDir}"
166+
export STATUS_REACT_HOME="${projectBuildDir}"
161167
162-
pushd ${projectDir}/android
168+
pushd ${projectBuildDir}/android
163169
# NOTE: This generates the react-native-android binaries under node_modules/react-native/android
164170
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${lib.makeLibraryPath [ zlib ]} \
165171
gradle -Dmaven.repo.local=${mavenRepoDir} --offline -S react-native-android:installArchives || exit
@@ -168,24 +174,26 @@ let
168174
doCheck = true;
169175
checkPhase = ''
170176
runHook preCheck
171-
test -d ${projectDir}/node_modules/react-native/ReactAndroid/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/facebook || \
177+
test -d ${projectBuildDir}/node_modules/react-native/ReactAndroid/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/facebook || \
172178
exit 1
173-
test -d ${projectDir}/node_modules/react-native/ReactAndroid/build/react-ndk/exported || \
179+
test -d ${projectBuildDir}/node_modules/react-native/ReactAndroid/build/react-ndk/exported || \
174180
exit 2
175181
runHook postCheck
176182
'';
177183
installPhase = ''
178184
rm -rf $out
179-
mkdir -p $out/project $out/.m2/repository
185+
mkdir -p $out/{project,.m2/repository}
180186
181187
# TODO: maybe node_modules/react-native/ReactAndroid/build/{tmp,generated} can be discarded?
182188
cp -R ${mavenRepoDir} $out/.m2/
183-
cp -R ${projectDir}/android/ ${projectDir}/node_modules/ $out/project
189+
cp -R ${projectBuildDir}/{android,node_modules}/ $out/project
184190
'';
185191
fixupPhase = ''
186192
# Patch prepareJSC so that it doesn't subsequently try to build NDK libs
187193
substituteInPlace $out/project/node_modules/react-native/ReactAndroid/build.gradle \
188-
--replace 'packageReactNdkLibs(dependsOn: buildReactNdkLib, ' 'packageReactNdkLibs('
194+
--replace \
195+
'packageReactNdkLibs(dependsOn: buildReactNdkLib, ' \
196+
'packageReactNdkLibs('
189197
'';
190198

191199
# The ELF types are incompatible with the host platform, so let's not even try

nix/mobile/android/targets/release-android.nix

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
androidEnvShellHook, mavenAndNpmDeps,
44
nodejs, openjdk, jsbundle, status-go, zlib }:
55

6-
{ build-number ? "9999",
7-
build-type ? "nightly", # Build type (e.g. nightly, release, e2e). Default is to use .env.nightly file
6+
{ build-number,
7+
build-type, # Build type (e.g. nightly, release, e2e). Default is to use .env.nightly file
88
gradle-opts ? "",
99
keystore-file ? "", # Path to the .keystore file used to sign the package
1010
secrets-file ? "", # Path to the file containing secret environment variables
@@ -83,9 +83,9 @@ in stdenv.mkDerivation {
8383
set -e
8484
8585
substituteInPlace android/gradlew \
86-
--replace 'exec gradle' "exec gradle -S -Dmaven.repo.local='${localMavenRepo}' --offline ${gradle-opts}"
87-
substituteInPlace android/gradle.properties \
88-
--replace 'versionCode=9999' 'versionCode=${build-number}'
86+
--replace \
87+
'exec gradle' \
88+
"exec gradle -Dmaven.repo.local='${localMavenRepo}' --offline ${gradle-opts}"
8989
9090
# OPTIONAL: There's no need to forward debug ports for a release build, just disable it
9191
substituteInPlace node_modules/realm/android/build.gradle \
@@ -113,7 +113,7 @@ in stdenv.mkDerivation {
113113
${concatStrings (catAttrs "shellHook" [ mavenAndNpmDeps status-go ])}
114114
115115
pushd android
116-
${adhocEnvVars} gradle assemble${capitalizedBuildType} -S -Dmaven.repo.local='${localMavenRepo}' --offline ${gradle-opts} || exit
116+
${adhocEnvVars} ./gradlew -PversionCode=${build-number} assemble${capitalizedBuildType} || exit
117117
popd > /dev/null
118118
119119
${unsetEnvVars}

nix/shell.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ fi
4747
if [[ "$TARGET_OS" =~ (linux|windows|darwin|macos) ]]; then
4848
# This is a dirty workaround because 'yarn install' is an impure operation,
4949
# so we need to call it from an impure shell.
50-
# Hopefull we'll be able to fix this later on with something like yarn2nix
50+
# Hopefully we'll be able to fix this later on with something like yarn2nix
5151
nix-shell ${shellArgs[@]} --run "scripts/prepare-for-desktop-platform.sh" || exit
5252
fi
5353

scripts/release-android.sh

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)