Browse Source

Build: remove almost all build framework variations, drop FsLoader and Mirror support

arrays
Christoph Ruegg 7 years ago
parent
commit
b2811c0a0d
  1. 3
      .travis.yml
  2. 5
      appveyor.yml
  3. 27
      build.fsx
  4. 64
      build/build-framework.fsx
  5. 49
      src/FSharp/MathNet.Numerics.IfSharp.fsx
  6. 17
      src/FSharp/MathNet.Numerics.fsx

3
.travis.yml

@ -17,3 +17,6 @@ branches:
script:
- ./build.sh Test quick
global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
- DOTNET_CLI_TELEMETRY_OPTOUT=1

5
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

27
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)

64
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

49
src/FSharp/MathNet.Numerics.IfSharp.fsx

@ -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<float>) -> { ContentType = "text/latex"; Data = formatMatrix x })
App.AddDisplayPrinter (fun (x:Matrix<float32>) -> { ContentType = "text/latex"; Data = formatMatrix x })
App.AddDisplayPrinter (fun (x:Vector<float>) -> { ContentType = "text/latex"; Data = formatVector x })
App.AddDisplayPrinter (fun (x:Vector<float32>) -> { ContentType = "text/latex"; Data = formatVector x })

17
src/FSharp/MathNet.Numerics.fsx

@ -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<float>) -> matrix.ToString())
fsi.AddPrinter(fun (matrix:Matrix<float32>) -> matrix.ToString())
fsi.AddPrinter(fun (matrix:Matrix<complex>) -> matrix.ToString())
fsi.AddPrinter(fun (matrix:Matrix<complex32>) -> matrix.ToString())
fsi.AddPrinter(fun (vector:Vector<float>) -> vector.ToString())
fsi.AddPrinter(fun (vector:Vector<float32>) -> vector.ToString())
fsi.AddPrinter(fun (vector:Vector<complex>) -> vector.ToString())
fsi.AddPrinter(fun (vector:Vector<complex32>) -> vector.ToString())
Loading…
Cancel
Save