diff --git a/pkgs/development/compilers/factor-lang/mk-factor-application.nix b/pkgs/development/compilers/factor-lang/mk-factor-application.nix index 5619078634a0..b7efbd0b1d02 100644 --- a/pkgs/development/compilers/factor-lang/mk-factor-application.nix +++ b/pkgs/development/compilers/factor-lang/mk-factor-application.nix @@ -5,6 +5,7 @@ makeBinaryWrapper, factor-lang, factor-no-gui, + staging-images, librsvg, gdk-pixbuf, }@initAttrs: @@ -113,6 +114,9 @@ in vocabBaseName=$(basename "$vocabName") mkdir -p "$out/lib/factor" "$TMPDIR/.cache" export XDG_CACHE_HOME="$TMPDIR/.cache" + mkdir "$XDG_CACHE_HOME/factor" + cp -r "${staging-images}"/lib/factor/staging.* "$XDG_CACHE_HOME/factor" + chmod -R u+w "$XDG_CACHE_HOME/factor" # Deploy script writes the deploy path to to $PWD/deploy-path.txt factor "${deployScript}" "./$vocabName" "$out/lib/factor" diff --git a/pkgs/development/compilers/factor-lang/staging.nix b/pkgs/development/compilers/factor-lang/staging.nix new file mode 100644 index 000000000000..b5bb747ef8cb --- /dev/null +++ b/pkgs/development/compilers/factor-lang/staging.nix @@ -0,0 +1,29 @@ +{ + lib, + stdenv, + factor-unwrapped, +}: +stdenv.mkDerivation { + pname = "factor-staging-images"; + inherit (factor-unwrapped) version meta; + + dontUnpack = true; + + preBuild = '' + # Factor uses XDG_CACHE_HOME for cache during compilation. + # We can't have that. So, set it to $TMPDIR/.cache + export XDG_CACHE_HOME=$TMPDIR/.cache + mkdir -p $XDG_CACHE_HOME + ''; + + buildPhase = '' + runHook preBuild + ${factor-unwrapped}/lib/factor/factor -script -e='USING: kernel system tools.deploy.backend ; "compiler" "hello-world" [ deploy-config config>profile make-staging-image ] bi@' + runHook postBuild + ''; + + installPhase = '' + mkdir -p $out/lib/factor + cp -r $XDG_CACHE_HOME/factor/staging.* $out/lib/factor + ''; +} diff --git a/pkgs/top-level/factor-packages.nix b/pkgs/top-level/factor-packages.nix index 1da43653ba35..a463b73f4e6f 100644 --- a/pkgs/top-level/factor-packages.nix +++ b/pkgs/top-level/factor-packages.nix @@ -32,6 +32,8 @@ let enableDefaults = false; }; + staging-images = callPackage ../development/compilers/factor-lang/staging.nix { }; + # Vocabularies bresenham = callPackage ../development/factor-vocabs/bresenham { };