diff --git a/.nuke/temp/build.2022-09-27_08-37-17.log b/.nuke
similarity index 100%
rename from .nuke/temp/build.2022-09-27_08-37-17.log
rename to .nuke
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
deleted file mode 100644
index 5bbc3d6915..0000000000
--- a/.nuke/build.schema.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Build Schema",
- "$ref": "#/definitions/build",
- "definitions": {
- "build": {
- "type": "object",
- "properties": {
- "Configuration": {
- "type": "string",
- "description": "configuration"
- },
- "Continue": {
- "type": "boolean",
- "description": "Indicates to continue a previously failed build attempt"
- },
- "ForceNugetVersion": {
- "type": "string",
- "description": "force-nuget-version"
- },
- "Help": {
- "type": "boolean",
- "description": "Shows the help text for this build assembly"
- },
- "Host": {
- "type": "string",
- "description": "Host for execution. Default is 'automatic'",
- "enum": [
- "AppVeyor",
- "AzurePipelines",
- "Bamboo",
- "Bitbucket",
- "Bitrise",
- "GitHubActions",
- "GitLab",
- "Jenkins",
- "Rider",
- "SpaceAutomation",
- "TeamCity",
- "Terminal",
- "TravisCI",
- "VisualStudio",
- "VSCode"
- ]
- },
- "NoLogo": {
- "type": "boolean",
- "description": "Disables displaying the NUKE logo"
- },
- "Partition": {
- "type": "string",
- "description": "Partition to use on CI"
- },
- "Plan": {
- "type": "boolean",
- "description": "Shows the execution plan (HTML)"
- },
- "Profile": {
- "type": "array",
- "description": "Defines the profiles to load",
- "items": {
- "type": "string"
- }
- },
- "Root": {
- "type": "string",
- "description": "Root directory during build execution"
- },
- "Skip": {
- "type": "array",
- "description": "List of targets to be skipped. Empty list skips all dependencies",
- "items": {
- "type": "string",
- "enum": [
- "CiAzureLinux",
- "CiAzureOSX",
- "CiAzureWindows",
- "Clean",
- "Compile",
- "CompileHtmlPreviewer",
- "CompileNative",
- "CreateIntermediateNugetPackages",
- "CreateNugetPackages",
- "GenerateCppHeaders",
- "Package",
- "RunCoreLibsTests",
- "RunDesignerTests",
- "RunHtmlPreviewerTests",
- "RunLeakTests",
- "RunRenderTests",
- "RunTests",
- "ZipFiles"
- ]
- }
- },
- "SkipPreviewer": {
- "type": "boolean",
- "description": "skip-previewer"
- },
- "SkipTests": {
- "type": "boolean",
- "description": "skip-tests"
- },
- "Solution": {
- "type": "string",
- "description": "Path to a solution file that is automatically loaded. Default is Avalonia.sln"
- },
- "Target": {
- "type": "array",
- "description": "List of targets to be invoked. Default is '{default_target}'",
- "items": {
- "type": "string",
- "enum": [
- "CiAzureLinux",
- "CiAzureOSX",
- "CiAzureWindows",
- "Clean",
- "Compile",
- "CompileHtmlPreviewer",
- "CompileNative",
- "CreateIntermediateNugetPackages",
- "CreateNugetPackages",
- "GenerateCppHeaders",
- "Package",
- "RunCoreLibsTests",
- "RunDesignerTests",
- "RunHtmlPreviewerTests",
- "RunLeakTests",
- "RunRenderTests",
- "RunTests",
- "ZipFiles"
- ]
- }
- },
- "Verbosity": {
- "type": "string",
- "description": "Logging verbosity during build execution. Default is 'Normal'",
- "enum": [
- "Minimal",
- "Normal",
- "Quiet",
- "Verbose"
- ]
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/.nuke/parameters.json b/.nuke/parameters.json
deleted file mode 100644
index 42521bb7dd..0000000000
--- a/.nuke/parameters.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "$schema": "./build.schema.json",
- "Solution": ""
-}
\ No newline at end of file
diff --git a/.nuke/temp/build-attempt.log b/.nuke/temp/build-attempt.log
deleted file mode 100644
index a926c68865..0000000000
--- a/.nuke/temp/build-attempt.log
+++ /dev/null
@@ -1,5 +0,0 @@
-47be5be6de651ed0c6d6996318ce431a
-GenerateCppHeaders
-Clean
-CompileNative
-CompileHtmlPreviewer
diff --git a/.nuke/temp/build.2022-09-27_08-36-07.log b/.nuke/temp/build.2022-09-27_08-36-07.log
deleted file mode 100644
index 2cba08f7bc..0000000000
--- a/.nuke/temp/build.2022-09-27_08-36-07.log
+++ /dev/null
@@ -1,30 +0,0 @@
-V | | ArgumentsFromParametersFile.OnBuildCreated (150)
-V | | Passing value for Build.Solution ()
-V | | InjectParameterValues.OnBuildCreated (100)
-W | | Could not inject value for Build.Solution
-System.ArgumentException: Solution 'C:\Users\User\repos\Avalonia\Avalonia.sln' contains duplicated NestedProjects entries:
- - {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}
- at Nuke.Common.Assert.True(Boolean condition, String message, String argumentExpression) in /_/source/Nuke.Common/Assert.cs:line 34
- at Nuke.Common.Utilities.Collections.EnumerableExtensions.ToDictionarySafe[T,TKey,TValue](IEnumerable`1 enumerable, Func`2 keySelector, Func`2 valueSelector, String duplicationMessage) in /_/source/Nuke.Common/Utilities/Collections/Enumerable.ToDictionary.cs:line 46
- at Nuke.Common.ProjectModel.SolutionSerializer.GetGlobalSection(String[] lines, String name, String solutionFile) in /_/source/Nuke.Common/ProjectModel/SolutionSerializer.cs:line 92
- at Nuke.Common.ProjectModel.SolutionSerializer.DeserializeFromContent[T](String[] content, String solutionFile) in /_/source/Nuke.Common/ProjectModel/SolutionSerializer.cs:line 63
- at Nuke.Common.ProjectModel.SolutionSerializer.DeserializeFromFile[T](String solutionFile) in /_/source/Nuke.Common/ProjectModel/SolutionSerializer.cs:line 23
-V | | HandleShellCompletion.OnBuildCreated (75)
-V | | GenerateBuildServerConfigurations.OnBuildCreated (50)
-V | | InvokeBuildServerConfigurationGeneration.OnBuildCreated (45)
-V | | UpdateNotification.OnBuildCreated (10)
-V | | UnsetVisualStudioEnvironmentVariables.OnBuildCreated (0)
-V | | HandleVisualStudioDebugging.OnBuildCreated (0)
-V | | HandleSingleFileExecution.OnBuildCreated (-50)
-V | | EventInvoker.OnBuildCreated (-3.4028235E+38)
-V | | HandleHelpRequests.OnBuildInitialized (5)
-V | | Telemetry.OnBuildInitialized (0)
-V | | InjectNonParameterValues.OnBuildInitialized (-100)
-V | | EventInvoker.OnBuildInitialized (-3.4028235E+38)
-V | | Target-unrelated exception was thrown
-System.NullReferenceException: Object reference not set to an instance of an object.
- at Build.OnBuildInitialized() in C:\Users\User\repos\Avalonia\nukebuild\Build.cs:line 42
- at Nuke.Common.Execution.EventInvoker.OnBuildInitialized(NukeBuild build, IReadOnlyCollection`1 executableTargets, IReadOnlyCollection`1 executionPlan) in /_/source/Nuke.Common/Execution/EventInvoker.cs:line 27
- at Nuke.Common.Utilities.Collections.EnumerableExtensions.ForEach[T](IEnumerable`1 enumerable, Action`1 action) in /_/source/Nuke.Common/Utilities/Collections/Enumerable.ForEach.cs:line 17
- at Nuke.Common.NukeBuild.ExecuteExtension[TExtension](Expression`1 action)
- at Nuke.Common.Execution.BuildManager.Execute[T](Expression`1[] defaultTargetExpressions) in /_/source/Nuke.Common/Execution/BuildManager.cs:line 58
diff --git a/.nuke/temp/build.log b/.nuke/temp/build.log
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/build.cmd b/build.cmd
deleted file mode 100755
index b08cc590f4..0000000000
--- a/build.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
-:; set -eo pipefail
-:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
-:; ${SCRIPT_DIR}/build.sh "$@"
-:; exit $?
-
-@ECHO OFF
-powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*
diff --git a/build.ps1 b/build.ps1
index 997e5b423f..985e8abcee 100644
--- a/build.ps1
+++ b/build.ps1
@@ -1,12 +1,13 @@
[CmdletBinding()]
Param(
+ #[switch]$CustomParam,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$BuildArguments
)
-Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
+Write-Output "Windows PowerShell $($Host.Version)"
-Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
+Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { exit 1 }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
###########################################################################
@@ -14,15 +15,15 @@ $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
###########################################################################
$BuildProjectFile = "$PSScriptRoot\nukebuild\_build.csproj"
-$TempDirectory = "$PSScriptRoot\\.nuke\temp"
+$TempDirectory = "$PSScriptRoot\\.tmp"
$DotNetGlobalFile = "$PSScriptRoot\\global.json"
-$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
+$DotNetInstallUrl = "https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1"
$DotNetChannel = "Current"
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
-$env:DOTNET_MULTILEVEL_LOOKUP = 0
+$env:NUGET_XMLDOC_MODE = "skip"
###########################################################################
# EXECUTION
@@ -33,37 +34,38 @@ function ExecSafe([scriptblock] $cmd) {
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
-# If dotnet CLI is installed globally and it matches requested version, use for execution
+# If global.json exists, load expected version
+if (Test-Path $DotNetGlobalFile) {
+ $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
+ if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
+ $DotNetVersion = $DotNetGlobal.sdk.version
+ }
+}
+
+# If dotnet is installed locally, and expected version is not set or installation matches the expected version
if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
- $(dotnet --version) -and $LASTEXITCODE -eq 0) {
+ (!(Test-Path variable:DotNetVersion) -or $(& dotnet --version) -eq $DotNetVersion)) {
$env:DOTNET_EXE = (Get-Command "dotnet").Path
}
else {
+ $DotNetDirectory = "$TempDirectory\dotnet-win"
+ $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
+
# Download install script
$DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
- New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
- [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+ mkdir -force $TempDirectory > $null
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
- # If global.json exists, load expected version
- if (Test-Path $DotNetGlobalFile) {
- $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
- if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
- $DotNetVersion = $DotNetGlobal.sdk.version
- }
- }
-
# Install by channel or version
- $DotNetDirectory = "$TempDirectory\dotnet-win"
if (!(Test-Path variable:DotNetVersion)) {
- ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
+ ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
} else {
- ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
+ ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
}
- $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
+
+ $env:PATH="$DotNetDirectory;$env:PATH"
}
-Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)"
+Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"
-ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
-ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }
+ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile -- $BuildArguments }
diff --git a/build.sh b/build.sh
index 76919a5351..9532b4fbe0 100755
--- a/build.sh
+++ b/build.sh
@@ -1,6 +1,16 @@
#!/usr/bin/env bash
-bash --version 2>&1 | head -n 1
+echo $(bash --version 2>&1 | head -n 1)
+
+#CUSTOMPARAM=0
+BUILD_ARGUMENTS=()
+for i in "$@"; do
+ case $(echo $1 | awk '{print tolower($0)}') in
+ # -custom-param) CUSTOMPARAM=1;;
+ *) BUILD_ARGUMENTS+=("$1") ;;
+ esac
+ shift
+done
set -eo pipefail
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
@@ -10,53 +20,11 @@ SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
###########################################################################
BUILD_PROJECT_FILE="$SCRIPT_DIR/nukebuild/_build.csproj"
-TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"
-
-DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
-DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
-DOTNET_CHANNEL="Current"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
-export DOTNET_MULTILEVEL_LOOKUP=0
+export NUGET_XMLDOC_MODE="skip"
-###########################################################################
-# EXECUTION
-###########################################################################
+dotnet --info
-function FirstJsonValue {
- perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
-}
-
-# If dotnet CLI is installed globally and it matches requested version, use for execution
-if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
- export DOTNET_EXE="$(command -v dotnet)"
-else
- # Download install script
- DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
- mkdir -p "$TEMP_DIRECTORY"
- curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
- chmod +x "$DOTNET_INSTALL_FILE"
-
- # If global.json exists, load expected version
- if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
- DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
- if [[ "$DOTNET_VERSION" == "" ]]; then
- unset DOTNET_VERSION
- fi
- fi
-
- # Install by channel or version
- DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
- if [[ -z ${DOTNET_VERSION+x} ]]; then
- "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
- else
- "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
- fi
- export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
-fi
-
-echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)"
-
-"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
-"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"
+dotnet run --project "$BUILD_PROJECT_FILE" -- ${BUILD_ARGUMENTS[@]}
diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj
index e4ad76de56..b2c58e2292 100644
--- a/nukebuild/_build.csproj
+++ b/nukebuild/_build.csproj
@@ -7,7 +7,6 @@
False
CS0649;CS0169
- 1