Skip to content

Commit

Permalink
use nix shell for nix-update-* targets
Browse files Browse the repository at this point in the history
Signed-off-by: Jakub Sokołowski <jakub@status.im>
  • Loading branch information
jakubgs committed Jul 28, 2019
1 parent acf6278 commit 4dbc4a6
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 18 deletions.
4 changes: 0 additions & 4 deletions Makefile
Expand Up @@ -60,19 +60,15 @@ nix-purge: SHELL := /bin/sh
nix-purge: ##@nix Completely remove the complete Nix setup
sudo rm -rf /nix ~/.nix-profile ~/.nix-defexpr ~/.nix-channels ~/.cache/nix ~/.status .nix-gcroots

nix-add-gcroots: SHELL := /bin/sh
nix-add-gcroots: ##@nix Add Nix GC roots to avoid status-react expressions being garbage collected
scripts/add-nix-gcroots.sh

nix-update-npm: SHELL := /bin/sh
nix-update-npm: ##@nix Update node2nix expressions based on current package.json
nix/desktop/realm-node/generate-nix.sh

nix-update-gradle: SHELL := /bin/sh
nix-update-gradle: ##@nix Update maven nix expressions based on current gradle setup
nix/mobile/android/maven-and-npm-deps/maven/generate-nix.sh

nix-update-lein: SHELL := /bin/sh
nix-update-lein: ##@nix Update maven nix expressions based on current lein setup
nix/tools/lein/generate-nix.sh nix/lein

Expand Down
12 changes: 5 additions & 7 deletions ci/Jenkinsfile.nix-cache
Expand Up @@ -8,6 +8,8 @@ pipeline {
NIX_CACHE_USER = 'nix-cache'
NIX_CACHE_HOST = 'master-01.do-ams3.ci.misc.statusim.net'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
/* build cache for all platforms */
TARGET_OS ='all'
}

options {
Expand Down Expand Up @@ -39,13 +41,12 @@ pipeline {
['android', 'desktop', 'ios'].each { os ->
nix.build(
attr: "targets.status-go.${os}.buildInputs",
args: ['target-os': 'all'],
link: false
)
}
} }
}
stage('Build jsbundle') {
stage('Build android jsbundle') {
steps { script {
/* build/fetch things required to produce a js-bundle for android
* (e.g. maven and node repos) */
Expand All @@ -71,10 +72,8 @@ pipeline {
stage('Build nix shell deps') {
steps { script {
/* build/fetch things required to instantiate shell.nix for TARGET_OS=all */
nix.shell("nix-build ${args.join(' ')}", pure: false)
nix.build(
attr: 'shell',
args: ['target-os': 'all'],
link: false
)
} }
Expand All @@ -83,9 +82,8 @@ pipeline {
steps { script {
sshagent(credentials: ['nix-cache-ssh']) {
nix.shell("""
find /nix/store/ -mindepth 1 -maxdepth 1 \
-not -name '.links' -and -not -name '*.lock' \
-and -not -name '*-status-react-*' \
find /nix/store/ -mindepth 1 -maxdepth 1 -type d \
-not -name '*.links' -and -not -name '*-status-react-*' \
| xargs nix-copy-closure -v --to ${NIX_CACHE_USER}@${NIX_CACHE_HOST}
""",
pure: false
Expand Down
10 changes: 10 additions & 0 deletions nix/desktop/realm-node/generate-nix.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash

if [[ -z "${IN_NIX_SHELL}" ]]; then
echo "Remember to call 'make shell'!"
exit 1
fi

#
# Run this file to regenerate the Nix files in ./output.
# Prerequisites: Node, npm, and node2nix (installed with npm i -g https://github.com/svanderburg/node2nix)
Expand Down Expand Up @@ -38,6 +43,11 @@ EOF
node_required_version=$($toolversion node)
node_major_version=$(echo $node_required_version | cut -d. -f1,1)

if ! which node2nix > /dev/null; then
echo "Installing node2nix..."
nix-env -f '<nixpkgs>' -iA nodePackages.node2nix
fi

node2nix --nodejs-${node_major_version} --bypass-cache \
--input $input \
--output $output_dir/node-packages.nix \
Expand Down
2 changes: 1 addition & 1 deletion nix/mobile/android/maven-and-npm-deps/default.nix
Expand Up @@ -31,7 +31,7 @@ let
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
in
stdenv.mkDerivation {
name = "gradle-install-android-archives-and-patched-npm-modules";
name = "android-gradle-and-npm-modules";
src =
let path = ./../../../..; # Import the root /android and /mobile_files folders clean of any build artifacts
in builtins.path { # We use builtins.path so that we can name the resulting derivation, otherwise the name would be taken from the checkout directory, which is outside of our control
Expand Down
7 changes: 5 additions & 2 deletions nix/mobile/android/maven-and-npm-deps/maven/generate-nix.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash

if [[ -z "${IN_NIX_SHELL}" ]]; then
echo "Remember to call 'make shell'!"
exit 1
fi

#
# This script takes care of generating/updating the maven-sources.nix file
# representing the offline Maven repo containing the dependencies
Expand All @@ -8,8 +13,6 @@

set -Eeu

. ~/.nix-profile/etc/profile.d/nix.sh

GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
current_dir=$(cd "${BASH_SOURCE%/*}" && pwd)
inputs_file_path="${current_dir}/maven-inputs.txt"
Expand Down
7 changes: 5 additions & 2 deletions nix/tools/lein/generate-nix.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash

if [[ -z "${IN_NIX_SHELL}" ]]; then
echo "Remember to call 'make shell'!"
exit 1
fi

# This script takes care of generating/updating the nix files in the directory passed as a single argument.
# For this, we start with a clean cache (in ./.m2~/repository/) and call cljsbuild
# to cause it to download all the artifacts. At the same time, we note them
Expand All @@ -8,8 +13,6 @@

set -Eeuo pipefail

. ~/.nix-profile/etc/profile.d/nix.sh

output_dir=$1
mkdir -p $output_dir

Expand Down
7 changes: 5 additions & 2 deletions scripts/add-nix-gcroots.sh
@@ -1,8 +1,11 @@
#!/usr/bin/env bash

set -Eeu
if [[ -z "${IN_NIX_SHELL}" ]]; then
echo "Remember to call 'make shell'!"
exit 1
fi

. ~/.nix-profile/etc/profile.d/nix.sh
set -Eeu

GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)

Expand Down

0 comments on commit 4dbc4a6

Please sign in to comment.