From 970ce3a878b288b311e7bb16728c88fed42dbd1b Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 15 Jun 2010 11:16:35 +0000 Subject: [PATCH] Commited my experimental Visual C# build function. Currently, it should only be used by brave people svn path=/nixpkgs/trunk/; revision=22272 --- .../build-support/dotnetenv/buildSolution.nix | 61 +++++++++++++++++++ pkgs/build-support/dotnetenv/default.nix | 10 +++ .../libraries/dotnetfx35/default.nix | 23 +++++++ pkgs/top-level/all-packages.nix | 9 +++ 4 files changed, 103 insertions(+) create mode 100644 pkgs/build-support/dotnetenv/buildSolution.nix create mode 100644 pkgs/build-support/dotnetenv/default.nix create mode 100644 pkgs/development/libraries/dotnetfx35/default.nix diff --git a/pkgs/build-support/dotnetenv/buildSolution.nix b/pkgs/build-support/dotnetenv/buildSolution.nix new file mode 100644 index 000000000000..495f2f116ea4 --- /dev/null +++ b/pkgs/build-support/dotnetenv/buildSolution.nix @@ -0,0 +1,61 @@ +{stdenv, dotnetfx}: +{ name +, src +, baseDir ? "." +, slnFile +, targets ? "ReBuild" +, verbosity ? "detailed" +, options ? "/p:Configuration=Debug;Platform=Win32" +, assemblyInputs ? [] +, runtimeAssemblies ? [] +, preBuild ? "" +}: + +stdenv.mkDerivation { + inherit name src preBuild; + + buildInputs = [ dotnetfx ]; + preConfigure = '' + cd ${baseDir} + ''; + + installPhase = '' + for i in ${toString assemblyInputs} + do + windowsPath=$(cygpath --windows $i) + echo "Using assembly path: $windowsPath" + + if [ "$assemblySearchPaths" = "" ] + then + assemblySearchPaths="$windowsPath" + else + assemblySearchPaths="$assemblySearchPaths;$windowsPath" + fi + done + + echo "Assembly search paths are: $assemblySearchPaths" + + if [ "$assemblySearchPaths" != "" ] + then + echo "Using assembly search paths args: $assemblySearchPathsArg" + export AssemblySearchPaths=$assemblySearchPaths + fi + + ensureDir $out + MSBuild.exe ${slnFile} /nologo /t:${targets} /p:IntermediateOutputPath=$(cygpath --windows $out)\\ /p:OutputPath=$(cygpath --windows $out)\\ /verbosity:${verbosity} ${options} + + # Create references to runtime dependencies + # !!! Should be more efficient (e.g. symlinking) + + for i in ${toString runtimeAssemblies} + do + cd $i + + for j in $(find . -type f) + do + mkdir -p $out/$(dirname $j) + cp $j $out/$(dirname $j) + done + done + ''; +} diff --git a/pkgs/build-support/dotnetenv/default.nix b/pkgs/build-support/dotnetenv/default.nix new file mode 100644 index 000000000000..7483672aca74 --- /dev/null +++ b/pkgs/build-support/dotnetenv/default.nix @@ -0,0 +1,10 @@ +{stdenv, dotnetfx}: + +{ + buildSolution = import ./buildSolution.nix { + inherit stdenv; + dotnetfx = dotnetfx.pkg; + }; + + inherit (dotnetfx) assembly20Path wcfPath referenceAssembly30Path referenceAssembly35Path; +} diff --git a/pkgs/development/libraries/dotnetfx35/default.nix b/pkgs/development/libraries/dotnetfx35/default.nix new file mode 100644 index 000000000000..7ac4568a4e13 --- /dev/null +++ b/pkgs/development/libraries/dotnetfx35/default.nix @@ -0,0 +1,23 @@ +{stdenv}: + +let + windir = "/cygdrive/c/WINDOWS"; +in +{ + pkg = stdenv.mkDerivation { + name = "dotnetfx-3.5"; + src = "${windir}/Microsoft.NET/Framework/v3.5"; + buildCommand = '' + ensureDir $out/bin + ln -s $src/MSBuild.exe $out/bin + ''; + }; + + assembly20Path = "/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v2.0.50727"; + + wcfPath = "/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.0/WINDOW~1"; + + referenceAssembly30Path = "/cygdrive/c/PROGRA~1/REFERE~1/Microsoft/Framework/v3.0"; + + referenceAssembly35Path = "/cygdrive/c/PROGRA~1/REFERE~1/Microsoft/Framework/v3.5"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8dc420ffaffb..3885784b1a49 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -230,6 +230,11 @@ let inherit fetchurl stdenv; }; + dotnetenv = import ../build-support/dotnetenv { + inherit stdenv; + dotnetfx = dotnetfx35; + }; + fetchbzr = import ../build-support/fetchbzr { inherit stdenv bazaar; }; @@ -653,6 +658,10 @@ let inherit builderDefs; }; + dotnetfx35 = import ../development/libraries/dotnetfx35 { + inherit stdenv; + }; + dropbear = makeOverridable (import ../tools/networking/dropbear) { inherit fetchurl stdenv; enableStatic = true;