on iko/ghcjs-patch-master help sign in
Profiled iserv for profiled builds (#574)
a6ad1b1Moritz Angermann
overlays/mingw_w64.nix+26−2
@@ -12,10 +12,13 @@
12# when tests are run.
12# when tests are run.
13, extra-test-libs ? []
13, extra-test-libs ? []
14, hostPlatform
14, hostPlatform
15+, symlinkJoin
15}:
16}:
16let
17let
17
18
19+ configureFlags = lib.optional hostPlatform.isWindows "--disable-split-sections";
20+
18− wineIservWrapper = writeScriptBin "iserv-wrapper" ''
21+ wineIservWrapperVanilla = writeScriptBin "iserv-wrapper" ''
19 #!${stdenv.shell}
22 #!${stdenv.shell}
20 set -euo pipefail
23 set -euo pipefail
21 # unset the configureFlags.
24 # unset the configureFlags.
@@ -32,6 +35,27 @@ let
32 (>&2 echo "---> killing remote-iserv...")
35 (>&2 echo "---> killing remote-iserv...")
33 kill $RISERV_PID
36 kill $RISERV_PID
34 '';
37 '';
38+
39+ wineIservWrapperProf = writeScriptBin "iserv-wrapper-prof" ''
40+ #!${stdenv.shell}
41+ set -euo pipefail
42+ # unset the configureFlags.
43+ # configure should have run already
44+ # without restting it, wine might fail
45+ # due to a too large environment.
46+ unset configureFlags
47+ PORT=$((5000 + $RANDOM % 5000))
48+ (>&2 echo "---> Starting remote-iserv on port $PORT")
49+ WINEDLLOVERRIDES="winemac.drv=d" WINEDEBUG=warn-all,fixme-all,-menubuilder,-mscoree,-ole,-secur32,-winediag WINEPREFIX=$TMP ${wine}/bin/wine64 ${remote-iserv.override { enableExecutableProfiling = true; }}/bin/remote-iserv.exe tmp $PORT &
50+ (>&2 echo "---| remote-iserv should have started on $PORT")
51+ RISERV_PID="$!"
52+ ${iserv-proxy}/bin/iserv-proxy $@ 127.0.0.1 "$PORT"
53+ (>&2 echo "---> killing remote-iserv...")
54+ kill $RISERV_PID
55+ '';
56+
57+ wineIservWrapper = symlinkJoin { name = "iserv-wrapper"; paths = [ wineIservWrapperVanilla wineIservWrapperProf ]; };
58+
35 ################################################################################
59 ################################################################################
36 # Build logic (TH support via remote iserv via wine)
60 # Build logic (TH support via remote iserv via wine)
37 #
61 #
@@ -89,4 +113,4 @@ let
89 echo "================================================================================"
113 echo "================================================================================"
90 '';
114 '';
91
115
92−in { inherit preCheck testWrapper postCheck setupBuildFlags; }
116+in { inherit preCheck testWrapper postCheck setupBuildFlags configureFlags; }
overlays/windows.nix+1
@@ -34,6 +34,7 @@ self: super:
34 wine = pkgs.buildPackages.winePackages.minimal;
34 wine = pkgs.buildPackages.winePackages.minimal;
35 inherit (pkgs.windows) mingw_w64_pthreads;
35 inherit (pkgs.windows) mingw_w64_pthreads;
36 inherit (pkgs) gmp;
36 inherit (pkgs) gmp;
37+ inherit (pkgs.buildPackages) symlinkJoin;
37 # iserv-proxy needs to come from the buildPackages, as it needs to run on the
38 # iserv-proxy needs to come from the buildPackages, as it needs to run on the
38 # build host.
39 # build host.
39 inherit (self.buildPackages.ghc-extra-packages."${config.compiler.nix-name}".iserv-proxy.components.exes) iserv-proxy;
40 inherit (self.buildPackages.ghc-extra-packages."${config.compiler.nix-name}".iserv-proxy.components.exes) iserv-proxy;