From 2acd5b4cb01c61eba5983e7de56f2775553ae82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Tue, 23 Jul 2019 16:54:17 -0400 Subject: [PATCH] rename prod-build to jsbundle so it means something MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakub SokoĊ‚owski --- Makefile | 49 +++++++++++-------- ci/Jenkinsfile.android | 4 +- ci/Jenkinsfile.ios | 4 +- ci/Jenkinsfile.linux | 4 +- ci/Jenkinsfile.macos | 4 +- ci/Jenkinsfile.nix-cache | 10 ++-- ci/Jenkinsfile.windows | 4 +- ci/desktop.groovy | 6 +-- nix/derivation.nix | 4 +- nix/mobile/android/default.nix | 5 +- .../android/targets/release-android.nix | 4 +- nix/mobile/default.nix | 8 +-- nix/targets/{prod-build.nix => jsbundle.nix} | 11 ++--- project.clj | 8 +-- scripts/build-desktop.sh | 4 +- scripts/release-android.sh | 2 +- 16 files changed, 67 insertions(+), 64 deletions(-) rename nix/targets/{prod-build.nix => jsbundle.nix} (88%) diff --git a/Makefile b/Makefile index e354c34df8..9aa380aa79 100644 --- a/Makefile +++ b/Makefile @@ -105,46 +105,55 @@ release-ios: export BUILD_ENV ?= prod release-ios: watchman-clean ##@build build release for iOS release # Open XCode inside the Nix context @git clean -dxf -f target/ios && \ - $(MAKE) prod-build-ios && \ + $(MAKE) jsbundle-ios && \ echo "Build in XCode, see https://status.im/build_status/ for instructions" && \ scripts/copy-translations.sh && \ open ios/StatusIm.xcworkspace release-desktop: export TARGET_OS ?= $(HOST_OS) -release-desktop: ##@build build release for desktop release - @$(MAKE) prod-build-desktop && \ +release-desktop: ##@build build release for desktop release based on TARGET_OS + @$(MAKE) jsbundle-desktop && \ scripts/copy-translations.sh && \ scripts/build-desktop.sh; \ $(MAKE) watchman-clean release-windows-desktop: export TARGET_OS ?= windows -release-windows-desktop: ##@build build release for desktop release - @$(MAKE) prod-build-desktop && \ +release-windows-desktop: ##@build build release for windows desktop release + @$(MAKE) jsbundle-desktop && \ scripts/copy-translations.sh && \ scripts/build-desktop.sh; \ $(MAKE) watchman-clean -prod-build-android: SHELL := /bin/sh -prod-build-android: export TARGET_OS ?= android -prod-build-android: export BUILD_ENV ?= prod -prod-build-android: - # Call nix-build to build the 'targets.mobile.prod-build' attribute and copy the index.android.js file to the project root +prod-build-android: jsbundle-android ##@legacy temporary legacy alias for jsbundle-android + @echo "${YELLOW}This a deprecated target name, use jsbundle-android.$(RESET)" + +jsbundle-android: SHELL := /bin/sh +jsbundle-android: export TARGET_OS ?= android +jsbundle-android: export BUILD_ENV ?= prod +jsbundle-android: ##@jsbundle Compile JavaScript and Clojure into index.android.js + # Call nix-build to build the 'targets.mobile.jsbundle' attribute and copy the index.android.js file to the project root @git clean -dxf -f ./index.$(TARGET_OS).js && \ - _NIX_RESULT_PATH=$(shell . ~/.nix-profile/etc/profile.d/nix.sh && nix-build --argstr target-os $(TARGET_OS) --pure --no-out-link --show-trace -A targets.mobile.prod-build) && \ + _NIX_RESULT_PATH=$(shell . ~/.nix-profile/etc/profile.d/nix.sh && nix-build --argstr target-os $(TARGET_OS) --pure --no-out-link --show-trace -A targets.mobile.jsbundle) && \ [ -n "$${_NIX_RESULT_PATH}" ] && cp -av $${_NIX_RESULT_PATH}/* . -prod-build-ios: export TARGET_OS ?= ios -prod-build-ios: export BUILD_ENV ?= prod -prod-build-ios: +prod-build-ios: jsbundle-ios ##@legacy temporary legacy alias for jsbundle-ios + @echo "${YELLOW}This a deprecated target name, use jsbundle-ios.$(RESET)" + +jsbundle-ios: export TARGET_OS ?= ios +jsbundle-ios: export BUILD_ENV ?= prod +jsbundle-ios: ##@jsbundle Compile JavaScript and Clojure into index.ios.js @git clean -dxf -f ./index.$(TARGET_OS).js && \ - lein prod-build-ios && \ + lein jsbundle-ios && \ node prepare-modules.js -prod-build-desktop: export TARGET_OS ?= $(HOST_OS) -prod-build-desktop: export BUILD_ENV ?= prod -prod-build-desktop: +prod-build-desktop: jsbundle-desktop ##@legacy temporary legacy alias for jsbundle-desktop + @echo "${YELLOW}This a deprecated target name, use jsbundle-desktop.$(RESET)" + +jsbundle-desktop: export TARGET_OS ?= $(HOST_OS) +jsbundle-desktop: export BUILD_ENV ?= prod +jsbundle-desktop: ##@jsbundle Compile JavaScript and Clojure into index.desktop.js git clean -qdxf -f ./index.desktop.js desktop/ && \ - lein prod-build-desktop && \ + lein jsbundle-desktop && \ node prepare-modules.js #-------------- @@ -249,7 +258,7 @@ android-ports: ##@other Add proxies to Android Device/Simulator android-logcat: export _NIX_ATTR := targets.mobile.android.adb.shell android-logcat: export TARGET_OS ?= android -android-logcat: +android-logcat: ##@other Read status-react logs from Android phone using adb adb logcat | grep -e StatusModule -e ReactNativeJS -e StatusNativeLogs android-install: export _NIX_ATTR := targets.mobile.android.adb.shell diff --git a/ci/Jenkinsfile.android b/ci/Jenkinsfile.android index 6fa638c89d..4227ea9615 100644 --- a/ci/Jenkinsfile.android +++ b/ci/Jenkinsfile.android @@ -81,9 +81,9 @@ pipeline { } } } stage('Build') { stages { - stage('Clojure') { + stage('JSBundle') { steps { - script { cmn.nix.build(attr: "targets.mobile.prod-build") } + script { cmn.nix.build(attr: 'targets.mobile.jsbundle') } } } stage('Bundle') { diff --git a/ci/Jenkinsfile.ios b/ci/Jenkinsfile.ios index 8fda603a90..1a040aadac 100644 --- a/ci/Jenkinsfile.ios +++ b/ci/Jenkinsfile.ios @@ -64,9 +64,9 @@ pipeline { } } } stage('Build') { stages { - stage('Clojure') { + stage('JSBundle') { steps { - script { cmn.nix.shell('make prod-build-ios') } + script { cmn.nix.shell('make jsbundle-ios') } } } stage('Bundle') { diff --git a/ci/Jenkinsfile.linux b/ci/Jenkinsfile.linux index f161158d7d..88082f1904 100644 --- a/ci/Jenkinsfile.linux +++ b/ci/Jenkinsfile.linux @@ -68,9 +68,9 @@ pipeline { } } } stage('Build') { stages { - stage('Clojure') { + stage('JSBundle') { steps { - script { desktop.buildClojureScript() } + script { desktop.buildJSBundle() } } } stage('Compile') { diff --git a/ci/Jenkinsfile.macos b/ci/Jenkinsfile.macos index 548439efbf..fb5faec1f0 100644 --- a/ci/Jenkinsfile.macos +++ b/ci/Jenkinsfile.macos @@ -64,9 +64,9 @@ pipeline { } } } stage('Build') { stages { - stage('Clojure') { + stage('JSBundle') { steps { - script { desktop.buildClojureScript() } + script { desktop.buildJSBundle() } } } stage('Compile') { diff --git a/ci/Jenkinsfile.nix-cache b/ci/Jenkinsfile.nix-cache index b287c7957e..4adbb23df9 100644 --- a/ci/Jenkinsfile.nix-cache +++ b/ci/Jenkinsfile.nix-cache @@ -42,11 +42,11 @@ pipeline { } } } } - stage('Build prod-build-android') { + stage('Build jsbundle-android') { steps { - // Run a Nix build to build/fetch everything that is necessary to produce a prod-build for TARGET_OS=android (e.g. maven and node repos) + // Run a Nix build to build/fetch everything that is necessary to produce a jsbundle for TARGET_OS=android (e.g. maven and node repos) sh ''' - args="--argstr target-os android --show-trace -A targets.mobile.prod-build" + args="--argstr target-os android --show-trace -A targets.mobile.jsbundle" . ~/.nix-profile/etc/profile.d/nix.sh && \ nix-build --pure --no-out-link $args @@ -74,9 +74,9 @@ pipeline { . ~/.nix-profile/etc/profile.d/nix.sh && \ find /nix/store/ -mindepth 1 -maxdepth 1 \ -not -name '.links' -and -not -name '*.lock' \ - -and -not -name '*-status-react-prod-build-source' \ + -and -not -name '*-status-react-jsbundle-source' \ -and -not -name '*-status-react-release-android-source' \ - -and -not -name '*-prod-build-*' \ + -and -not -name '*-jsbundle-*' \ -and -not -name '*-release-android' | \ xargs nix-copy-closure -v --to ${NIX_CACHE_USER}@${NIX_CACHE_HOST} """ diff --git a/ci/Jenkinsfile.windows b/ci/Jenkinsfile.windows index b212f8b5f2..5a6b6ef2d6 100644 --- a/ci/Jenkinsfile.windows +++ b/ci/Jenkinsfile.windows @@ -71,9 +71,9 @@ pipeline { } } } stage('Build') { stages { - stage('Clojure') { + stage('JSBundle') { steps { - script { desktop.buildClojureScript() } + script { desktop.buildJSBundle() } } } stage('Compile') { diff --git a/ci/desktop.groovy b/ci/desktop.groovy index d2bd0da530..bd94c5f644 100644 --- a/ci/desktop.groovy +++ b/ci/desktop.groovy @@ -3,11 +3,11 @@ utils = load 'ci/utils.groovy' packageFolder = './StatusImPackage' -def buildClojureScript() { +def buildJSBundle() { nix.shell( ''' - make prod-build-desktop && \ - ./scripts/build-desktop.sh buildClojureScript + make jsbundle-desktop && \ + ./scripts/build-desktop.sh buildJSBundle ''', keep: ['VERBOSE_LEVEL'] ) diff --git a/nix/derivation.nix b/nix/derivation.nix index 912476480d..1e4f8060c4 100644 --- a/nix/derivation.nix +++ b/nix/derivation.nix @@ -18,13 +18,11 @@ let go = pkgs.callPackage ./patched-go { inherit baseGo; }; buildGoPackage = pkgs.buildGoPackage.override { inherit go; }; desktop = pkgs.callPackage ./desktop { inherit target-os stdenv status-go pkgs go nodejs; inherit (pkgs) darwin; }; - mobile = pkgs.callPackage ./mobile { inherit target-os config stdenv pkgs mkShell nodejs yarn status-go maven localMavenRepoBuilder mkFilter prod-build-fn; inherit (pkgs.xcodeenv) composeXcodeWrapper; }; + mobile = pkgs.callPackage ./mobile { inherit target-os config stdenv pkgs mkShell nodejs yarn status-go maven localMavenRepoBuilder mkFilter; inherit (pkgs.xcodeenv) composeXcodeWrapper; }; status-go = pkgs.callPackage ./status-go { inherit target-os go buildGoPackage; inherit (mobile.ios) xcodeWrapper; androidPkgs = mobile.android.androidComposition; }; # mkFilter is a function that allows filtering a directory structure (used for filtering source files being captured in a closure) mkFilter = import ./tools/mkFilter.nix { inherit (stdenv) lib; }; localMavenRepoBuilder = pkgs.callPackage ./tools/maven/maven-repo-builder.nix { inherit (pkgs) stdenv; }; - # Import a function that can build a prod-build target with specified node dependencies Nix expression - prod-build-fn = pkgs.callPackage ./targets/prod-build.nix { inherit stdenv pkgs target-os nodejs localMavenRepoBuilder mkFilter; }; nodejs = pkgs.nodejs-10_x; yarn = pkgs.yarn.override { inherit nodejs; }; selectedSources = diff --git a/nix/mobile/android/default.nix b/nix/mobile/android/default.nix index ac46cc6af7..23caab6a83 100644 --- a/nix/mobile/android/default.nix +++ b/nix/mobile/android/default.nix @@ -1,6 +1,6 @@ { config, stdenv, stdenvNoCC, target-os, callPackage, mkShell, mkFilter, androidenv, fetchurl, openjdk, nodejs, bash, maven, zlib, - status-go, localMavenRepoBuilder, projectNodePackage, prod-build-fn }: + status-go, localMavenRepoBuilder, projectNodePackage, jsbundle }: let platform = callPackage ../../platform.nix { inherit target-os; }; @@ -12,8 +12,7 @@ let mavenAndNpmDeps = callPackage ./maven-and-npm-deps { inherit stdenv stdenvNoCC gradle bash nodejs zlib localMavenRepoBuilder mkFilter projectNodePackage status-go; androidEnvShellHook = androidEnv.shellHook; }; # TARGETS - prod-build = (prod-build-fn { inherit projectNodePackage; }); - release = callPackage ./targets/release-android.nix { inherit target-os gradle mavenAndNpmDeps mkFilter nodejs prod-build status-go zlib; androidEnvShellHook = androidEnv.shellHook; }; + release = callPackage ./targets/release-android.nix { inherit target-os gradle mavenAndNpmDeps mkFilter nodejs jsbundle status-go zlib; androidEnvShellHook = androidEnv.shellHook; }; generate-maven-and-npm-deps-shell = callPackage ./maven-and-npm-deps/maven/shell.nix { inherit gradle maven projectNodePackage status-go; androidEnvShellHook = androidEnv.shellHook; }; adb-shell = mkShell { buildInputs = [ androidEnv.licensedAndroidEnv ]; diff --git a/nix/mobile/android/targets/release-android.nix b/nix/mobile/android/targets/release-android.nix index 7fc6350e22..945d8b7455 100644 --- a/nix/mobile/android/targets/release-android.nix +++ b/nix/mobile/android/targets/release-android.nix @@ -1,5 +1,5 @@ { stdenv, stdenvNoCC, lib, target-os, callPackage, - mkFilter, bash, file, gnumake, watchman, gradle, androidEnvShellHook, mavenAndNpmDeps, nodejs, openjdk, prod-build, status-go, zlib }: + mkFilter, bash, file, gnumake, watchman, gradle, androidEnvShellHook, mavenAndNpmDeps, nodejs, openjdk, jsbundle, status-go, zlib }: { build-number ? "9999", build-type ? "nightly", # Build type (e.g. nightly, release, e2e). Default is to use .env.nightly file @@ -54,7 +54,7 @@ in stdenv.mkDerivation { cp -f $sourceRoot/${envFileName} $sourceRoot/.env # Copy index.*.js input file - cp -a --no-preserve=ownership ${prod-build}/index*.js $sourceRoot/ + cp -a --no-preserve=ownership ${jsbundle}/index*.js $sourceRoot/ # Copy android/ directory cp -a --no-preserve=ownership ${sourceProjectDir}/android/ $sourceRoot/ diff --git a/nix/mobile/default.nix b/nix/mobile/default.nix index c6d072dba5..b3321a08cf 100644 --- a/nix/mobile/default.nix +++ b/nix/mobile/default.nix @@ -1,5 +1,5 @@ { config, stdenv, pkgs, callPackage, mkShell, fetchurl, fetchFromGitHub, target-os, - mkFilter, localMavenRepoBuilder, maven, status-go, composeXcodeWrapper, nodejs, yarn, prod-build-fn }: + mkFilter, localMavenRepoBuilder, maven, status-go, composeXcodeWrapper, nodejs, yarn }: let inherit (stdenv.lib) catAttrs concatStrings optional unique; @@ -9,7 +9,7 @@ let version = "10.2.1"; }; xcodeWrapper = composeXcodeWrapper xcodewrapperArgs; - androidPlatform = callPackage ./android { inherit config target-os mkShell mkFilter nodejs maven localMavenRepoBuilder projectNodePackage prod-build-fn; status-go = status-go.android; }; + androidPlatform = callPackage ./android { inherit config target-os mkShell mkFilter nodejs maven localMavenRepoBuilder projectNodePackage jsbundle; status-go = status-go.android; }; iosPlatform = callPackage ./ios { inherit config mkFilter mkShell xcodeWrapper projectNodePackage; status-go = status-go.ios; }; fastlane = callPackage ./fastlane { inherit stdenv target-os mkShell; }; selectedSources = [ @@ -23,7 +23,7 @@ let projectNodePackage = callPackage ./node-package.nix { inherit pkgs nodejs yarn; }; # TARGETS - prod-build = prod-build-fn { inherit projectNodePackage; }; + jsbundle = pkgs.callPackage ../targets/jsbundle.nix { inherit stdenv pkgs target-os nodejs localMavenRepoBuilder mkFilter projectNodePackage; }; in { buildInputs = unique (catAttrs "buildInputs" selectedSources); @@ -34,5 +34,5 @@ in { ios = iosPlatform; # TARGETS - inherit prod-build fastlane; + inherit jsbundle fastlane; } diff --git a/nix/targets/prod-build.nix b/nix/targets/jsbundle.nix similarity index 88% rename from nix/targets/prod-build.nix rename to nix/targets/jsbundle.nix index a8207ffe25..66fe9af65e 100644 --- a/nix/targets/prod-build.nix +++ b/nix/targets/jsbundle.nix @@ -3,23 +3,20 @@ # { stdenv, stdenvNoCC, lib, target-os, callPackage, pkgs, - mkFilter, clojure, leiningen, maven, nodejs, localMavenRepoBuilder }: - -# The Nix expression takes a second argument to specify the node dependencies -{ projectNodePackage }: + mkFilter, clojure, leiningen, maven, nodejs, localMavenRepoBuilder, projectNodePackage }: let - lein-command = if target-os == "all" then "lein prod-build" else "lein prod-build-${target-os}"; + lein-command = if target-os == "all" then "lein jsbundle" else "lein jsbundle-${target-os}"; lein-project-deps = import ../lein/lein-project-deps.nix { }; leinProjectDepsLocalRepo = localMavenRepoBuilder "lein-project-deps" lein-project-deps; in stdenv.mkDerivation { - name = "prod-build-${target-os}"; + name = "jsbundle-${target-os}"; src = let path = ./../..; 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 inherit path; - name = "status-react-prod-build-source"; + name = "status-react-jsbundle-source"; filter = # Keep this filter as restrictive as possible in order to avoid unnecessary rebuilds and limit closure size mkFilter { diff --git a/project.clj b/project.clj index d98135e463..263cc0e36e 100644 --- a/project.clj +++ b/project.clj @@ -30,18 +30,18 @@ :pre-commit ["lein cljfmt check src/status_im/core.cljs $(git diff --diff-filter=d --cached --name-only src test/cljs)"]} :cljfmt {:indents {letsubs [[:inner 0]]}} :clean-targets ["target/" "index.ios.js" "index.android.js" "status-modules/cljs"] - :aliases {"prod-build" ^{:doc "Recompile code with prod profile."} + :aliases {"jsbundle" ^{:doc "Recompile code with prod profile."} ["do" "clean" ["with-profile" "prod" "cljsbuild" "once" "ios"] ["with-profile" "prod" "cljsbuild" "once" "android"] ["with-profile" "prod" "cljsbuild" "once" "desktop"]] - "prod-build-android" ^{:doc "Recompile code for Android with prod profile."} + "jsbundle-android" ^{:doc "Recompile code for Android with prod profile."} ["do" "clean" ["with-profile" "prod" "cljsbuild" "once" "android"]] - "prod-build-ios" ^{:doc "Recompile code for iOS with prod profile."} + "jsbundle-ios" ^{:doc "Recompile code for iOS with prod profile."} ["do" "clean" ["with-profile" "prod" "cljsbuild" "once" "ios"]] - "prod-build-desktop" ^{:doc "Recompile code for desktop with prod profile."} + "jsbundle-desktop" ^{:doc "Recompile code for desktop with prod profile."} ["do" "clean" ["with-profile" "prod" "cljsbuild" "once" "desktop"]] "figwheel-repl" ["with-profile" "+figwheel" "run" "-m" "clojure.main" "env/dev/run.clj"] diff --git a/scripts/build-desktop.sh b/scripts/build-desktop.sh index 7227618f39..85bbf16ac6 100755 --- a/scripts/build-desktop.sh +++ b/scripts/build-desktop.sh @@ -128,7 +128,7 @@ function joinStrings() { echo ${var[@]} } -function buildClojureScript() { +function buildJSBundle() { # create directory for all work related to bundling rm -rf $WORKFOLDER mkdir -p $WORKFOLDER @@ -490,7 +490,7 @@ function bundle() { init if [ -z "$@" ]; then - buildClojureScript + buildJSBundle compile bundle else diff --git a/scripts/release-android.sh b/scripts/release-android.sh index 3bcb3a1473..08c025c5cb 100755 --- a/scripts/release-android.sh +++ b/scripts/release-android.sh @@ -22,7 +22,7 @@ function cleanup() { local releaseSrcPath=$(nix-store -q --binding src $releaseDrv) local releaseOutPath=$(nix-store -q --outputs $releaseDrv) local releaseRefs=( $(nix-store -q --references $releaseDrv) ) - local prodBuildDrv=$(printf -- '%s\n' "${releaseRefs[@]}" | grep -e "prod-build-android.drv") + local prodBuildDrv=$(printf -- '%s\n' "${releaseRefs[@]}" | grep -e "jsbundle-android.drv") local prodBuildSrcPath=$(nix-store -q --binding src $prodBuildDrv) local prodBuildOutPath=$(nix-store -q --outputs $prodBuildDrv) nix-store --delete $prodBuildDrv $prodBuildSrcPath $prodBuildOutPath $releaseDrv $releaseSrcPath $releaseOutPath 2> /dev/null