From 7ca257f4b74b637a68c4313e82b411dc4eea1cdd Mon Sep 17 00:00:00 2001 From: varon Date: Sun, 17 Jul 2016 23:12:35 +0200 Subject: [PATCH] Added initial parts of build framework --- .paket/paket.bootstrapper.exe | Bin 0 -> 36352 bytes .paket/paket.targets | 41 ++++++++ .travis.yml | 13 ++- OpenTK.sln | 12 +++ RELEASE_NOTES.md | 4 + appveyor.yml | 9 ++ build.cmd | 18 ++++ build.fsx | 174 ++++++++++++++++++++++++++++++++++ build.sh | 37 ++++++++ paket.dependencies | 10 ++ paket.lock | 165 ++++++++++++++++++++++++++++++++ 11 files changed, 476 insertions(+), 7 deletions(-) create mode 100644 .paket/paket.bootstrapper.exe create mode 100644 .paket/paket.targets create mode 100644 RELEASE_NOTES.md create mode 100644 appveyor.yml create mode 100644 build.cmd create mode 100644 build.fsx create mode 100644 build.sh create mode 100644 paket.dependencies create mode 100644 paket.lock diff --git a/.paket/paket.bootstrapper.exe b/.paket/paket.bootstrapper.exe new file mode 100644 index 0000000000000000000000000000000000000000..3a6349741892d940f89f0785079dfbe2b02ac4e8 GIT binary patch literal 36352 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 k!?O9#49PFaI + + + + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + + $(PaketToolsPath)paket.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + "$(PaketBootStrapperExePath)" $(PaketBootStrapperCommandArgs) + $(MonoPath) --runtime=v4.0.30319 $(PaketBootStrapperExePath) $(PaketBootStrapperCommandArgs) + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildStartupDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + $(PaketBootStrapperCommand) + + RestorePackages; $(BuildDependsOn); + + + + + + + + + + + + + diff --git a/.travis.yml b/.travis.yml index f5c27f4e..5152d90c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,9 @@ language: csharp -solution: OpenTK.sln -mono: - - latest - - 3.10.0 - - 3.8.0 +sudo: false # use the new container-based Travis infrastructure -script: - - xbuild /p:Configuration=Release OpenTK.sln \ No newline at end of file +before_install: + - chmod +x build.sh + +script: + - ./build.sh All diff --git a/OpenTK.sln b/OpenTK.sln index 3afccdad..de01d1b1 100644 --- a/OpenTK.sln +++ b/OpenTK.sln @@ -25,6 +25,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenTK.Tests", "tests\OpenT EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.API.Desktop", "tests\Test.API.Desktop\Test.API.Desktop.csproj", "{C4DDD20F-CB4E-43F4-A75C-4A3D668E1F99}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{F1A57014-71CE-4032-A652-01B7E35E14DB}" + ProjectSection(SolutionItems) = preProject + paket.dependencies = paket.dependencies + paket.lock = paket.lock + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{5EEEC96B-BD2F-45B0-935D-19E9E6D7D969}" + ProjectSection(SolutionItems) = preProject + README.md = README.md + RELEASE_NOTES.md = RELEASE_NOTES.md + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 00000000..5b9f46fb --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,4 @@ +### 2.0.0 - alpha + * Moved to new FAKE/Paket based build system + * Removed superfluous release configurations + * Numerous other fixes and enhancements diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..01984685 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,9 @@ +init: + - git config --global core.autocrlf input +build_script: + - cmd: build.cmd +test: off +version: 0.0.1.{build} +artifacts: + - path: bin + name: bin diff --git a/build.cmd b/build.cmd new file mode 100644 index 00000000..79c3cd5c --- /dev/null +++ b/build.cmd @@ -0,0 +1,18 @@ +@echo off +cls + +.paket\paket.bootstrapper.exe +if errorlevel 1 ( + exit /b %errorlevel% +) + +.paket\paket.exe restore +if errorlevel 1 ( + exit /b %errorlevel% +) + +IF NOT EXIST build.fsx ( + .paket\paket.exe update + packages\FAKE\tools\FAKE.exe init.fsx +) +packages\FAKE\tools\FAKE.exe build.fsx %* diff --git a/build.fsx b/build.fsx new file mode 100644 index 00000000..cebcf560 --- /dev/null +++ b/build.fsx @@ -0,0 +1,174 @@ +// -------------------------------------------------------------------------------------- +// FAKE build script +// -------------------------------------------------------------------------------------- + +#r @"packages/FAKE/tools/FakeLib.dll" +open Fake +open Fake.Git +open Fake.AssemblyInfoFile +open Fake.ReleaseNotesHelper +open Fake.UserInputHelper +open Fake.Testing +open System +open System.IO + +// -------------------------------------------------------------------------------------- +// START TODO: Provide project-specific details below +// -------------------------------------------------------------------------------------- + +// Information about the project are used +// - for version and project name in generated AssemblyInfo file +// - by the generated NuGet package +// - to run tests and to publish documentation on GitHub gh-pages +// - for documentation, you also need to edit info in "docs/tools/generate.fsx" + +// The name of the project +// (used by attributes in AssemblyInfo, name of a NuGet package and directory in 'src') +let project = "OpenTK" + +// Short summary of the project +// (used as description in AssemblyInfo and as a short summary for NuGet package) +let summary = "A set of fast, low-level C# bindings for OpenGL, OpenGL ES and OpenAL." + +// Longer description of the project +// (used as a description for NuGet package; line breaks are automatically cleaned up) +let description = "The Open Toolkit is set of fast, low-level C# bindings for OpenGL, OpenGL ES and OpenAL. It runs on all major platforms and powers hundreds of apps, games and scientific research." + +// List of author names (for NuGet package) +let authors = [ "Stefanos Apostolopoulos" ] + +// Tags for your project (for NuGet package) +let tags = "OpenTK OpenGL OpenGLES GLES OpenAL C# F# VB .NET Mono Vector Math Game Graphics Sound" + +let copyright = "Copyright (c) 2006 - 2016 Stefanos Apostolopoulos for the Open Toolkit library." + +// File system information +let solutionFile = "OpenTK.sln" + +// Pattern specifying assemblies to be tested using NUnit +let testAssemblies = "tests/**/bin/Release/*Tests*.dll" + +// Git configuration (used for publishing documentation in gh-pages branch) +// The profile where the project is posted +let gitOwner = "opentk" +let gitHome = "https://github.com/" + gitOwner + +// The name of the project on GitHub +let gitName = "opentk" + +// The url for the raw files hosted +let gitRaw = environVarOrDefault "gitRaw" "https://raw.github.com/opentk" + +// -------------------------------------------------------------------------------------- +// END TODO: The rest of the file includes standard build steps +// -------------------------------------------------------------------------------------- + +// Read additional information from the release notes document +let release = LoadReleaseNotes "RELEASE_NOTES.md" + + +// Helper active pattern for project types +let (|Fsproj|Csproj|Vbproj|) (projFileName:string) = + match projFileName with + | f when f.EndsWith "fsproj" -> Fsproj + | f when f.EndsWith "csproj" -> Csproj + | f when f.EndsWith "vbproj" -> Vbproj + | _ -> failwith (sprintf "Project file %s not supported. Unknown project type." projFileName) + +// Generate assembly info files with the right version & up-to-date information +Target "AssemblyInfo" (fun _ -> + let getAssemblyInfoAttributes projectName = + [ Attribute.Title (projectName) + Attribute.Product project + Attribute.Description summary + Attribute.Version release.AssemblyVersion + Attribute.FileVersion release.AssemblyVersion + Attribute.CLSCompliant true + Attribute.Copyright copyright ] + + let getProjectDetails projectPath = + let projectName = System.IO.Path.GetFileNameWithoutExtension(projectPath) + ( projectPath, + projectName, + System.IO.Path.GetDirectoryName(projectPath), + (getAssemblyInfoAttributes projectName) + ) + + !! "src/**/*.??proj" + |> Seq.map getProjectDetails + |> Seq.iter (fun (projFileName, projectName, folderName, attributes) -> + match projFileName with + | Fsproj -> CreateFSharpAssemblyInfo (folderName @@ "AssemblyInfo.fs") attributes + | Csproj -> CreateCSharpAssemblyInfo ((folderName @@ "Properties") @@ "AssemblyInfo.cs") attributes + | Vbproj -> CreateVisualBasicAssemblyInfo ((folderName @@ "My Project") @@ "AssemblyInfo.vb") attributes + ) +) + +// Copies binaries from default VS location to expected bin folder +// But keeps a subdirectory structure for each project in the +// src folder to support multiple project outputs +Target "CopyBinaries" (fun _ -> + !! "src/**/*.??proj" + |> Seq.map (fun f -> ((System.IO.Path.GetDirectoryName f) @@ "bin/Release", "bin" @@ (System.IO.Path.GetFileNameWithoutExtension f))) + |> Seq.iter (fun (fromDir, toDir) -> CopyDir toDir fromDir (fun _ -> true)) +) + +// -------------------------------------------------------------------------------------- +// Clean build results + +Target "Clean" (fun _ -> + CleanDirs ["bin"; "temp"] +) + +// -------------------------------------------------------------------------------------- +// Build library & test project + +Target "Build" (fun _ -> + !! solutionFile + |> MSBuildRelease "" "Rebuild" + |> ignore +) + +// -------------------------------------------------------------------------------------- +// Run the unit tests using test runner + +Target "RunTests" (fun _ -> + !! testAssemblies + |> xUnit2 (fun p -> + { p with + ShadowCopy = true + TimeOut = TimeSpan.FromMinutes 2. + XmlOutputPath = Some "TestResults.xml" }) +) + +// -------------------------------------------------------------------------------------- +// Build a NuGet package + +Target "NuGet" (fun _ -> + Paket.Pack(fun p -> + { p with + OutputPath = "bin" + Version = release.NugetVersion + ReleaseNotes = toLines release.Notes}) +) + + +Target "BuildPackage" DoNothing + +// -------------------------------------------------------------------------------------- +// Run all targets by default. Invoke 'build ' to override + +Target "All" DoNothing + +"Clean" + ==> "AssemblyInfo" + ==> "Build" + ==> "CopyBinaries" + ==> "RunTests" + ==> "All" + +"All" + ==> "NuGet" + + +RunTargetOrDefault "All" diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..fe082dd3 --- /dev/null +++ b/build.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -eu +set -o pipefail + +cd `dirname $0` + +FSIARGS="" +OS=${OS:-"unknown"} +if [[ "$OS" != "Windows_NT" ]] +then + FSIARGS="--fsiargs -d:MONO" +fi + +function run() { + if [[ "$OS" != "Windows_NT" ]] + then + mono "$@" + else + "$@" + fi +} + +run .paket/paket.bootstrapper.exe + +if [[ "$OS" != "Windows_NT" ]] && + [ ! -e ~/.config/.mono/certs ] +then + mozroots --import --sync --quiet +fi + +run .paket/paket.exe restore + +[ ! -e build.fsx ] && run .paket/paket.exe update +[ ! -e build.fsx ] && run packages/FAKE/tools/FAKE.exe init.fsx +run packages/FAKE/tools/FAKE.exe "$@" $FSIARGS build.fsx + diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 00000000..51185557 --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,10 @@ +source https://nuget.org/api/v2 + +#Open packages + +nuget FSharp.Formatting +nuget FsCheck.Xunit +nuget xunit.runner.console +nuget xunit.assert +nuget FAKE +nuget Mono.Cecil \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 00000000..dcb61fb3 --- /dev/null +++ b/paket.lock @@ -0,0 +1,165 @@ +NUGET + remote: https://www.nuget.org/api/v2 + specs: + FAKE (4.28) + FsCheck (2.4) + FSharp.Core (>= 3.1.2.5) + FsCheck.Xunit (2.4) + FsCheck (>= 2.4) + xunit.extensibility.execution (>= 2.1 < 3.0) + FSharp.Compiler.Service (2.0.0.6) + FSharp.Core (4.0.0.1) + FSharp.Formatting (2.14.4) + FSharp.Compiler.Service (2.0.0.6) + FSharpVSPowerTools.Core (>= 2.3 < 2.4) + FSharpVSPowerTools.Core (2.3) + FSharp.Compiler.Service (>= 2.0.0.3) + Mono.Cecil (0.9.6.1) + System.Collections (4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Contracts (4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Globalization (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.IO (4.0.10) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Text.Encoding (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0.10) - framework: dnxcore50 + System.Text.Encoding.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + System.Linq (4.0) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Linq.Expressions (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.ObjectModel (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.ObjectModel (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Threading (>= 4.0.10) - framework: dnxcore50 + System.Private.Uri (4.0) - framework: dnxcore50 + System.Reflection (4.0.10) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Reflection.Emit (4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit.ILGeneration (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit.ILGeneration (4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (4.0) - framework: dnxcore50 + System.Diagnostics.Contracts (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime (4.0.20) - framework: dnxcore50 + System.Private.Uri (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Text.Encoding (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Text.Encoding.Extensions (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0.10) - framework: dnxcore50 + System.Text.RegularExpressions (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Globalization (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Threading (>= 4.0.10) - framework: dnxcore50 + System.Threading (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + xunit.abstractions (2.0) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.assert (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.ObjectModel (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.RegularExpressions (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.abstractions (2.0) + xunit.extensibility.execution (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Linq.Expressions (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.abstractions (>= 2.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.runner.console (2.1)