From 701d5b6c3a8a26e70e43a79d74cd7373ebd00f7e Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Wed, 18 Jun 2014 23:36:21 +0200 Subject: [PATCH] F#: add MathNet.Numerics.fsx script to packages for simpler usage in scripts+FSI, with formatters --- build.fsx | 37 +++++++++++++++++++++------- src/FSharp/FSharp-Portable344.fsproj | 27 ++++++++++---------- src/FSharp/FSharp-Portable47.fsproj | 27 ++++++++++---------- src/FSharp/FSharp.fsproj | 15 +++++------ src/FSharp/MathNet.Numerics.fsx | 8 ++++++ 5 files changed, 70 insertions(+), 44 deletions(-) create mode 100644 src/FSharp/MathNet.Numerics.fsx diff --git a/build.fsx b/build.fsx index 93796be5..8e0ad46a 100644 --- a/build.fsx +++ b/build.fsx @@ -93,6 +93,8 @@ let fsharpPack = Files = [ @"..\..\out\lib\Net40\MathNet.Numerics.FSharp.*", Some libnet40, None; @"..\..\out\lib\Profile47\MathNet.Numerics.FSharp.*", Some libpcl47, None; @"..\..\out\lib\Profile344\MathNet.Numerics.FSharp.*", Some libpcl344, None; + @"..\..\out\lib\Profile344\MathNet.Numerics.FSharp.*", Some libpcl344, None; + @"MathNet.Numerics.fsx", None, None; @"..\..\src\FSharp\**\*.fs", Some "src/Common", None ] } let numericsSignedPack = @@ -110,6 +112,7 @@ let fsharpSignedPack = Tags = fsharpPack.Tags + " signed" Dependencies = [ "MathNet.Numerics.Signed", packageVersion ] Files = [ @"..\..\out\lib-signed\Net40\MathNet.Numerics.FSharp.*", Some libnet40, None; + @"MathNet.Numerics.fsx", None, None; @"..\..\src\FSharp\**\*.fs", Some "src/Common", None ] } @@ -307,6 +310,20 @@ Target "DataTest" (fun _ -> test !! "out/Data/test/**/*UnitTests*.dll") // PACKAGES // -------------------------------------------------------------------------------------- +let provideFsharpScript path = + // inspired by FsLab/tpetricek + let fullScript = ReadFile "src/FSharp/MathNet.Numerics.fsx" |> Array.ofSeq + let startIndex = fullScript |> Seq.findIndex (fun s -> s.Contains "***MathNet.Numerics.fsx***") + let extraScript = fullScript .[startIndex + 1 ..] |> List.ofSeq + let assemblies = [ "MathNet.Numerics.dll"; "MathNet.Numerics.FSharp.dll" ] + let packages = [ numericsPack; fsharpPack ] + let roots = [ ""; "../"; "../../"; "../../../" ] + let nowarn = ["#nowarn \"211\""] + let zipIncludes = [ for root in roots -> sprintf "#I \"%sNet40\"" root ] + let nugetIncludes = [ for root in roots do for package in packages -> sprintf "#I \"%spackages/%s.%s/lib/net40/\"" root package.Id package.Version ] + let references = [ for assembly in assemblies -> sprintf "#r \"%s\"" assembly ] + ReplaceFile (path @@ "MathNet.Numerics.fsx") (nowarn @ zipIncludes @ nugetIncludes @ references @ extraScript |> toLines) + let provideLicenseReadme title license releasenotes path = let licensePath = path @@ "license.txt" let readmePath = path @@ "readme.txt" @@ -316,9 +333,11 @@ let provideLicenseReadme title license releasenotes path = String.concat Environment.NewLine [header; " " + title; ""; ReadFileAsString readmePath] |> ConvertTextToWindowsLineBreaks |> ReplaceFile readmePath -let provideCoreFiles = provideLicenseReadme (sprintf "Math.NET Numerics v%s" packageVersion) "LICENSE.md" "RELEASENOTES.md" + let provideNativeFiles = provideLicenseReadme (sprintf "Math.NET Numerics Native Providers v%s" nativePackageVersion) "LICENSE.md" "RELEASENOTES-Native.md" let provideDataFiles = provideLicenseReadme (sprintf "Math.NET Numerics Data Extensions v%s" dataPackageVersion) "LICENSE.md" "RELEASENOTES-Data.md" +let provideCoreFiles = provideLicenseReadme (sprintf "Math.NET Numerics v%s" packageVersion) "LICENSE.md" "RELEASENOTES.md" +let provideCoreAndFsharpFiles path = provideCoreFiles path; provideFsharpScript path // ZIP @@ -327,11 +346,11 @@ Target "Zip" (fun _ -> CleanDir "obj/Zip" if not (hasBuildParam "signed") || hasBuildParam "release" then CopyDir "obj/Zip/MathNet.Numerics" "out/lib" (fun f -> f.Contains("MathNet.Numerics.")) - provideCoreFiles "obj/Zip/MathNet.Numerics" + provideCoreAndFsharpFiles "obj/Zip/MathNet.Numerics" Zip "obj/Zip/" (sprintf "out/packages/Zip/MathNet.Numerics-%s.zip" packageVersion) !! "obj/Zip/MathNet.Numerics/**/*.*" if hasBuildParam "signed" || hasBuildParam "release" then CopyDir "obj/Zip/MathNet.Numerics.Signed" "out/lib-signed" (fun f -> f.Contains("MathNet.Numerics.")) - provideCoreFiles "obj/Zip/MathNet.Numerics.Signed" + provideCoreAndFsharpFiles "obj/Zip/MathNet.Numerics.Signed" Zip "obj/Zip/" (sprintf "out/packages/Zip/MathNet.Numerics.Signed-%s.zip" packageVersion) !! "obj/Zip/MathNet.Numerics.Signed/**/*.*" CleanDir "obj/Zip") "Build" ==> "Zip" @@ -373,9 +392,9 @@ let updateNuspec pack outPath symbols updateFiles spec = Files = updateFiles pack.Files Publish = false } -let nugetPack pack outPath = +let nugetPack pack extraFiles outPath = CleanDir "obj/NuGet" - provideCoreFiles "obj/NuGet" + extraFiles "obj/NuGet" let withLicenseReadme f = [ "license.txt", None, None; "readme.txt", None, None; ] @ f let withoutSymbolsSources f = List.choose (function | (_, Some (target:string), _) when target.StartsWith("src") -> None @@ -396,11 +415,11 @@ Target "NuGet" (fun _ -> let outPath = "out/packages/NuGet" CleanDir outPath if hasBuildParam "signed" || hasBuildParam "release" then - nugetPack numericsSignedPack outPath - nugetPack fsharpSignedPack outPath + nugetPack numericsSignedPack provideCoreFiles outPath + nugetPack fsharpSignedPack provideCoreAndFsharpFiles outPath if hasBuildParam "all" || hasBuildParam "release" then - nugetPack numericsPack outPath - nugetPack fsharpPack outPath + nugetPack numericsPack provideCoreFiles outPath + nugetPack fsharpPack provideCoreAndFsharpFiles outPath CleanDir "obj/NuGet") "Build" ==> "NuGet" diff --git a/src/FSharp/FSharp-Portable344.fsproj b/src/FSharp/FSharp-Portable344.fsproj index 3f737c21..d8a7ef20 100644 --- a/src/FSharp/FSharp-Portable344.fsproj +++ b/src/FSharp/FSharp-Portable344.fsproj @@ -37,13 +37,13 @@ - - - FSharp.Core - FSharp.Core.dll - $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\FSharp\.NETPortable\$(TargetFSharpCoreVersion)\FSharp.Core.dll - - + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.Portable.FSharp.Targets + + @@ -59,18 +59,17 @@ + + + FSharp.Core + FSharp.Core.dll + $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\FSharp\.NETPortable\$(TargetFSharpCoreVersion)\FSharp.Core.dll + Numerics-Portable344 {1A3065FD-105D-4AF1-85B9-0A4A26FFB353} - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets - - - $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.Portable.FSharp.Targets - - \ No newline at end of file diff --git a/src/FSharp/FSharp-Portable47.fsproj b/src/FSharp/FSharp-Portable47.fsproj index c2c266f1..b5eab819 100644 --- a/src/FSharp/FSharp-Portable47.fsproj +++ b/src/FSharp/FSharp-Portable47.fsproj @@ -37,13 +37,13 @@ - - - FSharp.Core - FSharp.Core.dll - $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\FSharp\.NETPortable\$(TargetFSharpCoreVersion)\FSharp.Core.dll - - + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.Portable.FSharp.Targets + + @@ -59,18 +59,17 @@ + + + FSharp.Core + FSharp.Core.dll + $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\FSharp\.NETPortable\$(TargetFSharpCoreVersion)\FSharp.Core.dll + Numerics-Portable47 {49205185-621E-FFB9-2104-887C9F1BBD13} - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets - - - $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.Portable.FSharp.Targets - - \ No newline at end of file diff --git a/src/FSharp/FSharp.fsproj b/src/FSharp/FSharp.fsproj index ef5529fe..89feb200 100644 --- a/src/FSharp/FSharp.fsproj +++ b/src/FSharp/FSharp.fsproj @@ -50,6 +50,13 @@ true + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + @@ -65,6 +72,7 @@ + @@ -77,11 +85,4 @@ - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets - - - $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets - - \ No newline at end of file diff --git a/src/FSharp/MathNet.Numerics.fsx b/src/FSharp/MathNet.Numerics.fsx new file mode 100644 index 00000000..20772f20 --- /dev/null +++ b/src/FSharp/MathNet.Numerics.fsx @@ -0,0 +1,8 @@ +#I "../../out/lib/Net40" +#r "MathNet.Numerics.dll" +#r "MathNet.Numerics.FSharp.dll" + +// ***MathNet.Numerics.fsx*** (DO NOT REMOVE THIS COMMENT, everything below is copied to the output) + +fsi.AddPrinter(fun (matrix:MathNet.Numerics.LinearAlgebra.Matrix<_>) -> matrix.ToString()) +fsi.AddPrinter(fun (vector:MathNet.Numerics.LinearAlgebra.Vector<_>) -> vector.ToString())