diff --git a/.travis.yml b/.travis.yml index beef227d..f9007c7d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,3 +17,6 @@ branches: script: - ./build.sh Test quick +global: + - DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true + - DOTNET_CLI_TELEMETRY_OPTOUT=1 \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index ffa57dc2..f8afa852 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,7 +2,7 @@ image: Visual Studio 2017 init: - git config --global core.autocrlf true install: - # Download .NET Core SDK 2.1.403 and add to PATH + # Download .NET Core SDK 2.2.106 and add to PATH - ps: $urlCurrent = "https://dotnetcli.azureedge.net/dotnet/Sdk/2.2.106/dotnet-sdk-2.2.106-win-x64.zip" - ps: $env:DOTNET_INSTALL_DIR = "$pwd\.dotnetsdk" - ps: mkdir $env:DOTNET_INSTALL_DIR -Force | Out-Null @@ -16,3 +16,6 @@ test: off deploy: off shallow_clone: true clone_depth: 1 +environment: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true diff --git a/build.fsx b/build.fsx index 11546b6f..05f3c920 100644 --- a/build.fsx +++ b/build.fsx @@ -33,19 +33,19 @@ open BuildFramework // VERSION OVERVIEW -let numericsRelease = release "Math.NET Numerics" "RELEASENOTES.md" -let mklRelease = release "MKL Provider" "RELEASENOTES-MKL.md" -let cudaRelease = release "CUDA Provider" "RELEASENOTES-CUDA.md" -let openBlasRelease = release "OpenBLAS Provider" "RELEASENOTES-OpenBLAS.md" -let dataRelease = release "Data Extensions" "RELEASENOTES-Data.md" +let numericsRelease = release "numerics" "Math.NET Numerics" "RELEASENOTES.md" +let mklRelease = release "numerics" "MKL Provider" "RELEASENOTES-MKL.md" +let cudaRelease = release "numerics" "CUDA Provider" "RELEASENOTES-CUDA.md" +let openBlasRelease = release "numerics" "OpenBLAS Provider" "RELEASENOTES-OpenBLAS.md" +let dataRelease = release "numerics" "Data Extensions" "RELEASENOTES-Data.md" let releases = [ numericsRelease; mklRelease; openBlasRelease; dataRelease ] // skip cuda traceHeader releases // NUMERICS PACKAGES -let numericsZipPackage = zipPackage "MathNet.Numerics" "Math.NET Numerics" numericsRelease true -let numericsStrongNameZipPackage = zipPackage "MathNet.Numerics.Signed" "Math.NET Numerics" numericsRelease true +let numericsZipPackage = zipPackage "MathNet.Numerics" "Math.NET Numerics" numericsRelease +let numericsStrongNameZipPackage = zipPackage "MathNet.Numerics.Signed" "Math.NET Numerics" numericsRelease let numericsNuGetPackage = nugetPackage "MathNet.Numerics" numericsRelease let numericsFSharpNuGetPackage = nugetPackage "MathNet.Numerics.FSharp" numericsRelease @@ -59,8 +59,8 @@ let numericsSolution = solution "Numerics" "MathNet.Numerics.sln" [numericsProje // DATA EXTENSION PACKAGES -let dataZipPackage = zipPackage "MathNet.Numerics.Data" "Math.NET Numerics Data Extensions" dataRelease false -let dataStrongNameZipPackage = zipPackage "MathNet.Numerics.Data.Signed" "Math.NET Numerics Data Extensions" dataRelease false +let dataZipPackage = zipPackage "MathNet.Numerics.Data" "Math.NET Numerics Data Extensions" dataRelease +let dataStrongNameZipPackage = zipPackage "MathNet.Numerics.Data.Signed" "Math.NET Numerics Data Extensions" dataRelease let dataTextNuGetPackage = nugetPackage "MathNet.Numerics.Data.Text" dataRelease let dataMatlabNuGetPackage = nugetPackage "MathNet.Numerics.Data.Matlab" dataRelease @@ -74,8 +74,8 @@ let dataSolution = solution "Data" "MathNet.Numerics.Data.sln" [dataTextProject; // MKL NATIVE PROVIDER PACKAGES -let mklWinZipPackage = zipPackage "MathNet.Numerics.MKL.Win" "Math.NET Numerics MKL Native Provider for Windows" mklRelease false -let mklLinuxZipPackage = zipPackage "MathNet.Numerics.MKL.Linux" "Math.NET Numerics MKL Native Provider for Linux" mklRelease false +let mklWinZipPackage = zipPackage "MathNet.Numerics.MKL.Win" "Math.NET Numerics MKL Native Provider for Windows" mklRelease +let mklLinuxZipPackage = zipPackage "MathNet.Numerics.MKL.Linux" "Math.NET Numerics MKL Native Provider for Linux" mklRelease let mklWinNuGetPackage = nugetPackage "MathNet.Numerics.MKL.Win" mklRelease let mklWin32NuGetPackage = nugetPackage "MathNet.Numerics.MKL.Win-x86" mklRelease @@ -121,7 +121,7 @@ let mklLinux64Pack = // CUDA NATIVE PROVIDER PACKAGES -let cudaWinZipPackage = zipPackage "MathNet.Numerics.CUDA.Win" "Math.NET Numerics CUDA Native Provider for Windows" cudaRelease false +let cudaWinZipPackage = zipPackage "MathNet.Numerics.CUDA.Win" "Math.NET Numerics CUDA Native Provider for Windows" cudaRelease let cudaWinNuGetPackage = nugetPackage "MathNet.Numerics.CUDA.Win" cudaRelease let cudaWinProject = nativeProject "MathNet.Numerics.CUDA" "src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj" [cudaWinNuGetPackage] @@ -135,7 +135,7 @@ let cudaWinPack = // OpenBLAS NATIVE PROVIDER PACKAGES -let openBlasWinZipPackage = zipPackage "MathNet.Numerics.OpenBLAS.Win" "Math.NET Numerics OpenBLAS Native Provider for Windows" openBlasRelease false +let openBlasWinZipPackage = zipPackage "MathNet.Numerics.OpenBLAS.Win" "Math.NET Numerics OpenBLAS Native Provider for Windows" openBlasRelease let openBlasWinNuGetPackage = nugetPackage "MathNet.Numerics.OpenBLAS.Win" openBlasRelease let openBlasWinProject = nativeProject "MathNet.Numerics.OpenBLAS" "src/NativeProviders/Windows/OpenBLAS/OpenBLASWrapper.vcxproj" [openBlasWinNuGetPackage] @@ -451,7 +451,6 @@ Target "MklPublishTag" (fun _ -> publishReleaseTag "Math.NET Numerics MKL Provid Target "CudaPublishTag" (fun _ -> publishReleaseTag "Math.NET Numerics CUDA Provider" "cuda-" cudaRelease) Target "OpenBlasPublishTag" (fun _ -> publishReleaseTag "Math.NET Numerics OpenBLAS Provider" "openblas-" openBlasRelease) -Target "PublishMirrors" (fun _ -> publishMirrors ()) Target "PublishDocs" (fun _ -> publishDocs numericsRelease) Target "PublishApi" (fun _ -> publishApi numericsRelease) diff --git a/build/build-framework.fsx b/build/build-framework.fsx index 79efbbef..d0f9b9d9 100644 --- a/build/build-framework.fsx +++ b/build/build-framework.fsx @@ -19,8 +19,6 @@ module BuildFramework open FSharp.Core open Fake open Fake.ReleaseNotesHelper -open Fake.StringHelper -open Fake.Testing.NUnit3 open System open System.IO @@ -93,7 +91,8 @@ let dotnetSN workingDir command = let header = ReadFile(__SOURCE_DIRECTORY__ __SOURCE_FILE__) |> Seq.take 10 |> Seq.map (fun s -> s.Substring(2)) |> toLines type Release = - { Title: string + { RepoKey: string + Title: string AssemblyVersion: string PackageVersion: string ReleaseNotes: string @@ -102,8 +101,7 @@ type Release = type ZipPackage = { Id: string Release: Release - Title: string - FsLoader: bool } + Title: string } type NuGetPackage = { Id: string @@ -153,23 +151,23 @@ type NuGetSpecification = Title: string } -let release title releaseNotesFile : Release = +let release repoKey title releaseNotesFile : Release = let info = LoadReleaseNotes releaseNotesFile let buildPart = "0" let assemblyVersion = info.AssemblyVersion + "." + buildPart let packageVersion = info.NugetVersion let notes = info.Notes |> List.map (fun l -> l.Replace("*","").Replace("`","")) |> toLines - { Release.Title = title + { Release.RepoKey = repoKey + Title = title AssemblyVersion = assemblyVersion PackageVersion = packageVersion ReleaseNotes = notes ReleaseNotesFile = releaseNotesFile } -let zipPackage packageId title release fsLoader = +let zipPackage packageId title release = { ZipPackage.Id = packageId Title = title - Release = release - FsLoader = fsLoader } + Release = release } let nugetPackage packageId release = { NuGetPackage.Id = packageId @@ -351,21 +349,6 @@ let provideReadme title (release:Release) path = |> ConvertTextToWindowsLineBreaks |> ReplaceFile (path "readme.txt") -let provideFsLoader includes 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 nowarn = ["#nowarn \"211\""] - let references = [ for assembly in assemblies -> sprintf "#r \"%s\"" assembly ] - ReplaceFile (path "MathNet.Numerics.fsx") (nowarn @ includes @ references @ extraScript |> toLines) - -let provideFsIfSharpLoader path = - let fullScript = ReadFile "src/FSharp/MathNet.Numerics.IfSharp.fsx" |> Array.ofSeq - let startIndex = fullScript |> Seq.findIndex (fun s -> s.Contains "***MathNet.Numerics.IfSharp.fsx***") - ReplaceFile (path "MathNet.Numerics.IfSharp.fsx") (fullScript .[startIndex + 1 ..] |> toLines) - // SIGN @@ -407,10 +390,6 @@ let zip (package:ZipPackage) zipDir filesDir filesFilter = CopyDir workPath filesDir filesFilter provideLicense workPath provideReadme (sprintf "%s v%s" package.Title package.Release.PackageVersion) package.Release workPath - if package.FsLoader then - let includes = [ for root in [ ""; "../"; "../../" ] -> sprintf "#I \"%sNet40\"" root ] - provideFsLoader includes workPath - provideFsIfSharpLoader workPath Zip "obj/Zip/" (zipDir sprintf "%s-%s.zip" package.Id package.Release.PackageVersion) !! (workPath + "/**/*.*") DeleteDir "obj/Zip" @@ -499,7 +478,7 @@ let publishReleaseTag title prefix (release:Release) = let cmd = sprintf """tag -a %s -m "%s" """ tagName tagMessage Git.CommandHelper.runSimpleGitCommand "." cmd |> printfn "%s" let _, remotes, _ = Git.CommandHelper.runGitCommand "." "remote -v" - let main = remotes |> Seq.find (fun s -> s.Contains("(push)") && s.Contains("mathnet/mathnet-numerics")) + let main = remotes |> Seq.find (fun s -> s.Contains("(push)") && s.Contains("mathnet/mathnet-" + release.RepoKey)) let remoteName = main.Split('\t').[0] Git.Branches.pushTag "." remoteName tagName @@ -524,26 +503,21 @@ let publishNuGet (solutions: Solution list) = |> Seq.iter (impl 3) DeleteDir "obj/NuGet" -let publishMirrors () = - let repo = "../mirror-numerics" - Git.CommandHelper.runSimpleGitCommand repo "remote update" |> printfn "%s" - Git.CommandHelper.runSimpleGitCommand repo "push mirrors" |> printfn "%s" - let publishDocs (release:Release) = - let repo = "../web-mathnet-numerics" + let repo = "../web-mathnet-" + release.RepoKey Git.Branches.pull repo "origin" "gh-pages" - CopyRecursive "out/docs" "../web-mathnet-numerics" true |> printfn "%A" + CopyRecursive "out/docs" repo true |> printfn "%A" Git.Staging.StageAll repo - Git.Commit.Commit repo (sprintf "Numerics: %s docs update" release.PackageVersion) + Git.Commit.Commit repo (sprintf "%s: %s docs update" release.Title release.PackageVersion) Git.Branches.pushBranch repo "origin" "gh-pages" let publishApi (release:Release) = - let repo = "../web-mathnet-numerics" + let repo = "../web-mathnet-" + release.RepoKey Git.Branches.pull repo "origin" "gh-pages" - CleanDir "../web-mathnet-numerics/api" - CopyRecursive "out/api" "../web-mathnet-numerics/api" true |> printfn "%A" + CleanDir (repo + "/api") + CopyRecursive "out/api" (repo + "/api") true |> printfn "%A" Git.Staging.StageAll repo - Git.Commit.Commit repo (sprintf "Numerics: %s api update" release.PackageVersion) + Git.Commit.Commit repo (sprintf "%s: %s api update" release.Title release.PackageVersion) Git.Branches.pushBranch repo "origin" "gh-pages" let publishNuGetToArchive (package:NuGetPackage) archivePath nupkgFile = @@ -558,8 +532,8 @@ let publishNuGetToArchive (package:NuGetPackage) archivePath nupkgFile = !! (tempDir "*.nuspec") |> Copy archiveDir DeleteDir tempDir -let publishArchiveManual zipOutPath nugetOutPath (zipPackages:ZipPackage list) (nugetPackages:NuGetPackage list) = - let archivePath = (environVarOrFail "MathNetReleaseArchive") "Math.NET Numerics" +let publishArchiveManual title zipOutPath nugetOutPath (zipPackages:ZipPackage list) (nugetPackages:NuGetPackage list) = + let archivePath = (environVarOrFail "MathNetReleaseArchive") title if directoryExists archivePath |> not then failwith "Release archive directory does not exists. Safety Check failed." for zipPackage in zipPackages do let zipFile = zipOutPath sprintf "%s-%s.zip" zipPackage.Id zipPackage.Release.PackageVersion @@ -579,6 +553,6 @@ let publishArchive (solution:Solution) = let nugetOutPath = solution.OutputNuGetDir let zipPackages = solution.ZipPackages let nugetPackages = solution.Projects |> List.collect projectNuGetPackages |> List.distinct - publishArchiveManual zipOutPath nugetOutPath zipPackages nugetPackages + publishArchiveManual solution.Release.Title zipOutPath nugetOutPath zipPackages nugetPackages let publishArchives (solutions: Solution list) = solutions |> List.iter publishArchive diff --git a/src/FSharp/MathNet.Numerics.IfSharp.fsx b/src/FSharp/MathNet.Numerics.IfSharp.fsx deleted file mode 100644 index 8e330813..00000000 --- a/src/FSharp/MathNet.Numerics.IfSharp.fsx +++ /dev/null @@ -1,49 +0,0 @@ -#I "../../out/lib/Net40" -#r "MathNet.Numerics.dll" -#r "MathNet.Numerics.FSharp.dll" - -// ***MathNet.Numerics.IfSharp.fsx*** (DO NOT REMOVE THIS COMMENT, everything below is copied to the output) - -// This file is intended for the IfSharp F# profile for iPython only. See: -// http://numerics.mathdotnet.com/docs/IFSharpNotebook.html -// http://github.com/BayardRock/IfSharp -// http://ipython.org/ - -// Assumption: MathNet.Numerics and MathNet.Numerics.FSharp have been referenced already, using -// #N "MathNet.Numerics" -// #N "MathNet.Numerics.FSharp" - -open System -open MathNet.Numerics -open MathNet.Numerics.LinearAlgebra - -let inline (|Float|_|) (v:obj) = if v :? float then Some(v :?> float) else None -let inline (|Float32|_|) (v:obj) = if v :? float32 then Some(v :?> float32) else None -let inline (|PositiveInfinity|_|) (v: ^T) = if (^T : (static member IsPositiveInfinity: 'T -> bool) (v)) then Some PositiveInfinity else None -let inline (|NegativeInfinity|_|) (v: ^T) = if (^T : (static member IsNegativeInfinity: 'T -> bool) (v)) then Some NegativeInfinity else None -let inline (|NaN|_|) (v: ^T) = if (^T : (static member IsNaN: 'T -> bool) (v)) then Some NaN else None - -let inline formatMathValue (floatFormat:string) = function - | PositiveInfinity -> "\\infty" - | NegativeInfinity -> "-\\infty" - | NaN -> "\\times" - | Float v -> v.ToString(floatFormat) - | Float32 v -> v.ToString(floatFormat) - | v -> v.ToString() - -let inline formatMatrix (matrix: Matrix<'T>) = - String.concat Environment.NewLine - [ "\\begin{bmatrix}" - matrix.ToMatrixString(10, 4, 7, 2, "\\cdots", "\\vdots", "\\ddots", " & ", "\\\\ " + Environment.NewLine, (fun x -> formatMathValue "G4" x)) - "\\end{bmatrix}" ] - -let inline formatVector (vector: Vector<'T>) = - String.concat Environment.NewLine - [ "\\begin{bmatrix}" - vector.ToVectorString(12, 80, "\\vdots", " & ", "\\\\ " + Environment.NewLine, (fun x -> formatMathValue "G4" x)) - "\\end{bmatrix}" ] - -App.AddDisplayPrinter (fun (x:Matrix) -> { ContentType = "text/latex"; Data = formatMatrix x }) -App.AddDisplayPrinter (fun (x:Matrix) -> { ContentType = "text/latex"; Data = formatMatrix x }) -App.AddDisplayPrinter (fun (x:Vector) -> { ContentType = "text/latex"; Data = formatVector x }) -App.AddDisplayPrinter (fun (x:Vector) -> { ContentType = "text/latex"; Data = formatVector x }) diff --git a/src/FSharp/MathNet.Numerics.fsx b/src/FSharp/MathNet.Numerics.fsx deleted file mode 100644 index 4b63f587..00000000 --- a/src/FSharp/MathNet.Numerics.fsx +++ /dev/null @@ -1,17 +0,0 @@ -#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) - -open MathNet.Numerics -open MathNet.Numerics.LinearAlgebra - -fsi.AddPrinter(fun (matrix:Matrix) -> matrix.ToString()) -fsi.AddPrinter(fun (matrix:Matrix) -> matrix.ToString()) -fsi.AddPrinter(fun (matrix:Matrix) -> matrix.ToString()) -fsi.AddPrinter(fun (matrix:Matrix) -> matrix.ToString()) -fsi.AddPrinter(fun (vector:Vector) -> vector.ToString()) -fsi.AddPrinter(fun (vector:Vector) -> vector.ToString()) -fsi.AddPrinter(fun (vector:Vector) -> vector.ToString()) -fsi.AddPrinter(fun (vector:Vector) -> vector.ToString())