1- { lib , stdenv , runtimeShell , writeText , fetchFromGitHub , gradle_7 , openjdk17 , git , perl , cmake } :
1+ { lib , stdenv , runtimeShell , fetchFromGitHub , gradle_7 , openjdk17 } :
22let
33 pname = "fastddsgen" ;
44 version = "3.3.0" ;
55
6+ gradle = gradle_7 ;
7+
8+ in
9+ stdenv . mkDerivation {
10+ inherit pname version ;
11+
612 src = fetchFromGitHub {
713 owner = "eProsima" ;
814 repo = "Fast-DDS-Gen" ;
1117 hash = "sha256-oqbSIzsYUwD8bTqGKZ9he9d18EDq9mHZFoNUp0RK0qU=" ;
1218 } ;
1319
14- gradle = gradle_7 ;
15-
16- # fake build to pre-download deps into fixed-output derivation
17- deps = stdenv . mkDerivation {
18- pname = "${ pname } -deps" ;
19- inherit src version ;
20- nativeBuildInputs = [ gradle openjdk17 perl ] ;
21-
22- buildPhase = ''
23- export GRADLE_USER_HOME=$(mktemp -d);
24- gradle --no-daemon -x submodulesUpdate assemble
25- '' ;
26-
27- # perl code mavenizes paths (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
28- installPhase = ''
29- find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
30- | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
31- | sh
32- '' ;
33-
34- dontStrip = true ;
35-
36- outputHashAlgo = "sha256" ;
37- outputHashMode = "recursive" ;
38- outputHash = "sha256-YkVRp6TXI7/5O+u0DDYiCq7DITfGJ4lT/L4hT90JOL8=" ;
39- } ;
40- in
41- stdenv . mkDerivation {
42- inherit pname src version ;
43-
4420 nativeBuildInputs = [ gradle openjdk17 ] ;
4521
46- # use our offline deps
47- postPatch = ''
48- sed -ie '1i\
49- pluginManagement {\
50- repositories {\
51- maven { url "${ deps } " }\
52- }\
53- }' thirdparty/idl-parser/settings.gradle
54- sed -ie "s#mavenCentral()#maven { url '${ deps } ' }#g" build.gradle
55- sed -ie "s#mavenCentral()#maven { url '${ deps } ' }#g" thirdparty/idl-parser/build.gradle
56- '' ;
57-
58- buildPhase = ''
59- runHook preBuild
60-
61- export GRADLE_USER_HOME=$(mktemp -d)
22+ mitmCache = gradle . fetchDeps {
23+ inherit pname ;
24+ data = ./deps.json ;
25+ } ;
6226
63- # Run gradle with daemon to make installPhase faster
64- gradle --offline -x submodulesUpdate assemble
27+ __darwinAllowLocalNetworking = true ;
6528
66- runHook postBuild
67- '' ;
29+ gradleFlags = [ "-x" "submodulesUpdate" ] ;
6830
6931 installPhase = ''
7032 runHook preInstall
7133
72- gradle --offline -x submodulesUpdate install --install_path=$out
34+ gradle install --install_path=$out
7335
7436 # Override the default start script to use absolute java path
7537 cat <<EOF >$out/bin/fastddsgen
@@ -81,6 +43,13 @@ stdenv.mkDerivation {
8143 runHook postInstall
8244 '' ;
8345
46+ postGradleUpdate = ''
47+ cd thirdparty/idl-parser
48+ # fix "Task 'submodulesUpdate' not found"
49+ gradleFlags=
50+ gradle nixDownloadDeps
51+ '' ;
52+
8453 meta = with lib ; {
8554 description = "Fast-DDS IDL code generator tool" ;
8655 mainProgram = "fastddsgen" ;
0 commit comments