diff --git a/build.fsx b/build.fsx index 06f0cced..a17140e6 100644 --- a/build.fsx +++ b/build.fsx @@ -571,6 +571,12 @@ Target "PublishMirrors" (fun _ -> publishMirrors()) Target "PublishDocs" (fun _ -> publishDocs numericsRelease) Target "PublishApi" (fun _ -> publishApi numericsRelease) +Target "PublishArchive" (fun _ -> publishArchive "out/packages/Zip" "out/packages/NuGet" [coreBundle; coreSignedBundle]) +Target "MklPublishArchive" (fun _ -> publishArchive "out/MKL/packages/Zip" "out/MKL/packages/NuGet" [mklWinBundle; mklLinuxBundle]) +Target "CudaPublishArchive" (fun _ -> publishArchive "out/CUDA/packages/Zip" "out/CUDA/packages/NuGet" [cudaWinBundle]) +Target "OpenBlasPublishArchive" (fun _ -> publishArchive "out/OpenBLAS/packages/Zip" "out/OpenBLAS/packages/NuGet" [openBlasWinBundle]) +Target "DataPublishArchive" (fun _ -> publishArchive "out/Data/packages/Zip" "out/Data/packages/NuGet" [dataBundle]) + Target "PublishNuGet" (fun _ -> !! "out/packages/NuGet/*.nupkg" -- "out/packages/NuGet/*.symbols.nupkg" |> publishNuGet) Target "MklPublishNuGet" (fun _ -> !! "out/MKL/packages/NuGet/*.nupkg" |> publishNuGet) Target "CudaPublishNuGet" (fun _ -> !! "out/CUDA/packages/NuGet/*.nupkg" |> publishNuGet) @@ -579,24 +585,29 @@ Target "DataPublishNuGet" (fun _ -> !! "out/Data/packages/NuGet/*.nupkg" |> publ Target "Publish" DoNothing "PublishTag" ==> "Publish" -"PublishNuGet" ==> "Publish" "PublishDocs" ==> "Publish" "PublishApi" ==> "Publish" +"PublishArchive" ==> "Publish" +"PublishNuGet" ==> "Publish" Target "MklPublish" DoNothing "MklPublishTag" ==> "MklPublish" +"MklPublishArchive" ==> "MklPublish" "MklPublishNuGet" ==> "MklPublish" Target "CudaPublish" DoNothing "CudaPublishTag" ==> "CudaPublish" +"CudaPublishArchive" ==> "CudaPublish" "CudaPublishNuGet" ==> "CudaPublish" Target "OpenBlasPublish" DoNothing "OpenBlasPublishTag" ==> "OpenBlasPublish" +"OpenBlasPublishArchive" ==> "OpenBlasPublish" "OpenBlasPublishNuGet" ==> "OpenBlasPublish" Target "DataPublish" DoNothing "DataPublishTag" ==> "DataPublish" +"DataPublishArchive" ==> "DataPublish" "DataPublishNuGet" ==> "DataPublish" diff --git a/build/build-framework.fsx b/build/build-framework.fsx index ed9af848..d907ac32 100644 --- a/build/build-framework.fsx +++ b/build/build-framework.fsx @@ -347,3 +347,31 @@ let publishApi (release:Release) = Git.Staging.StageAll repo Git.Commit.Commit repo (sprintf "Numerics: %s api update" release.PackageVersion) Git.Branches.pushBranch repo "origin" "master" + +let publishNuGetToArchive archivePath nupkgFile (pack:Package) = + let tempDir = Path.GetTempPath() Path.GetRandomFileName() + let archiveDir = archivePath pack.Id pack.Release.PackageVersion + CleanDirs [tempDir; archiveDir] + nupkgFile |> CopyFile archiveDir + use sha512 = System.Security.Cryptography.SHA512.Create() + let hash = File.ReadAllBytes nupkgFile |> sha512.ComputeHash |> Convert.ToBase64String + File.WriteAllText ((archiveDir (Path.GetFileName(nupkgFile) + ".sha512")), hash) + ZipHelper.Unzip tempDir nupkgFile + !! (tempDir "*.nuspec") |> Copy archiveDir + DeleteDir tempDir + +let publishArchive zipOutPath nugetOutPath (bundles:Bundle list) = + let archivePath = (environVarOrFail "MathNetReleaseArchive") "Math.NET Numerics" + if directoryExists archivePath |> not then failwith "Release archive directory does not exists. Safety Check failed." + for bundle in bundles do + let zipFile = zipOutPath sprintf "%s-%s.zip" bundle.Id bundle.Release.PackageVersion + if FileSystemHelper.fileExists zipFile then + zipFile |> CopyFile (archivePath "Zip") + for package in bundles |> List.collect (fun b -> b.Packages) do + let nupkgFile = nugetOutPath sprintf "%s.%s.nupkg" package.Id package.Release.PackageVersion + if FileSystemHelper.fileExists nupkgFile then + trace nupkgFile + publishNuGetToArchive (archivePath "NuGet") nupkgFile package + let symbolsFile = nugetOutPath sprintf "%s.%s.symbols.nupkg" package.Id package.Release.PackageVersion + if FileSystemHelper.fileExists symbolsFile then + symbolsFile |> CopyFile (archivePath "Symbols")