mirror of
https://github.com/status-im/status-react.git
synced 2025-01-22 00:41:07 +00:00
nix: put clojure deps under pkgs.deps.clojure
Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
a96b35996f
commit
381b2462a4
60
nix/deps/clojure/default.nix
Normal file
60
nix/deps/clojure/default.nix
Normal file
@ -0,0 +1,60 @@
|
||||
{ stdenv, lib, writeShellScriptBin, fetchurl }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
removeSuffix optionalString splitString concatMapStrings
|
||||
attrByPath attrValues last makeOverridable;
|
||||
|
||||
# load dependencies
|
||||
deps = import ./deps.nix;
|
||||
|
||||
# some .jar files have an `-aot` suffix that doesn't work for .pom files
|
||||
getPOM = jarUrl: "${removeSuffix "-aot" jarUrl}.pom";
|
||||
|
||||
script = writeShellScriptBin "create-local-maven-repo" (''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
'' +
|
||||
(concatMapStrings (dep:
|
||||
let
|
||||
url = "${dep.host}/${dep.path}";
|
||||
pom = {
|
||||
sha1 = attrByPath [ "pom" "sha1" ] "" dep;
|
||||
sha256 = attrByPath [ "pom" "sha256" ] "" dep;
|
||||
};
|
||||
pom-download = optionalString (pom.sha256 != "") (
|
||||
fetchurl { url = getPOM url; inherit (pom) sha256; }
|
||||
);
|
||||
jar = {
|
||||
sha1 = attrByPath [ "jar" "sha1" ] "" dep;
|
||||
sha256 = attrByPath [ "jar" "sha256" ] "" dep;
|
||||
};
|
||||
jar-download = optionalString (jar.sha256 != "") (
|
||||
fetchurl { url = "${url}.${dep.type}"; inherit (jar) sha256; }
|
||||
);
|
||||
fileName = last (splitString "/" dep.path);
|
||||
directory = removeSuffix fileName dep.path;
|
||||
in
|
||||
''
|
||||
mkdir -p ${directory}
|
||||
|
||||
${optionalString (pom-download != "") ''
|
||||
ln -s "${pom-download}" "${getPOM dep.path}"
|
||||
''}
|
||||
${optionalString (pom.sha1 != "") ''
|
||||
echo "${pom.sha1}" > "${getPOM dep.path}.sha1"
|
||||
''}
|
||||
${optionalString (jar-download != "") ''
|
||||
ln -s "${jar-download}" "${dep.path}.${dep.type}"
|
||||
''}
|
||||
${optionalString (jar.sha1 != "") ''
|
||||
echo "${jar.sha1}" > "${dep.path}.${dep.type}.sha1"
|
||||
''}
|
||||
'')
|
||||
(attrValues deps)));
|
||||
|
||||
in makeOverridable stdenv.mkDerivation {
|
||||
name = "status-react-clojure-deps";
|
||||
phases = [ "buildPhase" ];
|
||||
buildPhase = "${script}/bin/create-local-maven-repo";
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
# Auto-generated by /nix/deps/clojure/generate.sh
|
||||
{ }:
|
||||
|
||||
let
|
||||
repos = rec {
|
||||
|
@ -44,8 +44,6 @@ function get_nix_sha() {
|
||||
|
||||
function get_deps_header() {
|
||||
echo "# Auto-generated by /nix/deps/clojure/generate.sh
|
||||
{ }:
|
||||
|
||||
let
|
||||
repos = rec {
|
||||
central = \"https://repo1.maven.org/maven2\";
|
||||
|
@ -5,10 +5,8 @@
|
||||
let
|
||||
callPackage = newScope { inherit localMavenRepoBuilder projectNodePackage; };
|
||||
|
||||
clojureDeps = import ../../deps/clojure/deps.nix { };
|
||||
|
||||
# Import a jsbundle compiled out of clojure codebase
|
||||
jsbundle = callPackage ./jsbundle { inherit clojureDeps; };
|
||||
jsbundle = callPackage ./jsbundle { };
|
||||
|
||||
# Import a patched version of watchman (important for sandboxed builds on macOS)
|
||||
watchmanFactory = callPackage ./watchman.nix { };
|
||||
|
@ -3,12 +3,10 @@
|
||||
#
|
||||
|
||||
{ target ? "android",
|
||||
stdenv, lib, clojure, nodejs, bash, git, openjdk,
|
||||
clojureDeps, localMavenRepoBuilder, projectNodePackage }:
|
||||
stdenv, lib, deps, clojure, nodejs, bash, git, openjdk,
|
||||
localMavenRepoBuilder, projectNodePackage }:
|
||||
|
||||
let
|
||||
clojureDepsLocal = localMavenRepoBuilder "clojure-project-deps" clojureDeps;
|
||||
in stdenv.mkDerivation {
|
||||
stdenv.mkDerivation {
|
||||
name = "status-react-build-jsbundle-${target}";
|
||||
src =
|
||||
let path = ./../../../..;
|
||||
@ -45,7 +43,7 @@ in stdenv.mkDerivation {
|
||||
substituteInPlace shadow-cljs.edn \
|
||||
--replace '${anchor}' \
|
||||
'${anchor}
|
||||
:maven {:local-repo "${clojureDepsLocal}"}'
|
||||
:maven {:local-repo "${deps.clojure}"}'
|
||||
'';
|
||||
configurePhase = ''
|
||||
# Symlink Node.js modules to build directory
|
||||
@ -58,7 +56,7 @@ in stdenv.mkDerivation {
|
||||
buildPhase = ''
|
||||
# Assemble CLASSPATH from available clojure dependencies.
|
||||
# We append 'src' so it can find the local sources.
|
||||
export CLASS_PATH="$(find ${clojureDepsLocal} -iname '*.jar' | tr '\n' ':')src"
|
||||
export CLASS_PATH="$(find ${deps.clojure} -iname '*.jar' | tr '\n' ':')src"
|
||||
|
||||
# target must be one of the builds defined in shadow-cljs.edn
|
||||
java -cp "$CLASS_PATH" clojure.main -m shadow.cljs.devtools.cli release ${target}
|
||||
|
@ -20,6 +20,11 @@ in {
|
||||
inherit (self) config;
|
||||
});
|
||||
|
||||
# Project dependencies
|
||||
deps = {
|
||||
clojure = callPackage ./deps/clojure { };
|
||||
};
|
||||
|
||||
# Android environement
|
||||
androidEnvCustom = callPackage ./mobile/android/sdk { };
|
||||
androidPkgs = self.androidEnvCustom.licensedPkgs;
|
||||
|
Loading…
x
Reference in New Issue
Block a user