@@ -12,10 +12,13 @@
1212# when tests are run.
1313, extra-test-libs ? []
1414, hostPlatform
15+, symlinkJoin
1516}:
1617let
1718
18− wineIservWrapper = writeScriptBin "iserv-wrapper" ''
19+ configureFlags = lib.optional hostPlatform.isWindows "--disable-split-sections";
20+
21+ wineIservWrapperVanilla = writeScriptBin "iserv-wrapper" ''
1922 #!${stdenv.shell}
2023 set -euo pipefail
2124 # unset the configureFlags.
@@ -32,6 +35,27 @@ let
3235 (>&2 echo "---> killing remote-iserv...")
3336 kill $RISERV_PID
3437 '';
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+
3559 ################################################################################
3660 # Build logic (TH support via remote iserv via wine)
3761 #
@@ -89,4 +113,4 @@ let
89113 echo "================================================================================"
90114 '';
91115
92−in { inherit preCheck testWrapper postCheck setupBuildFlags; }
116+in { inherit preCheck testWrapper postCheck setupBuildFlags configureFlags; }