diff --git a/.gitignore b/.gitignore index f1d54e208..8c6982c30 100644 --- a/.gitignore +++ b/.gitignore @@ -22,9 +22,6 @@ TestResult.xml # backup files of some editors such as nano *~ -# autogenerated file by configure.sh -before.gwallet.core-legacy.sln.targets - # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 diff --git a/NuGet.Restore.targets b/NuGet.Restore.targets deleted file mode 100644 index f6755a9c2..000000000 --- a/NuGet.Restore.targets +++ /dev/null @@ -1,170 +0,0 @@ - - - - $(MSBuildThisFileDirectory).nuget - https://dist.nuget.org/win-x86-commandline/v5.4.0/nuget.exe - $(NuGetPath)\nuget.exe - mono - $(TMPDIR) - - https://raw.githubusercontent.com/kzu/NuGet.Restore/master/ - $(BaseUrl)curl.exe - -k -f -L - "$(TEMP)\curl.exe" $(CurlArgs) - curl $(CurlArgs) - %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe - - - ErrorAndStop - - quiet - normal - $(MSBuildThisFilename)$(MSBuildThisFileExtension) - - - - - - - - - - Restore - -verbosity $(RestoreLoggingVerbosity) - - - - - - - - - - - - - $([System.IO.Path]::GetDirectoryName('$(SolutionPath)')) - - - - <_NuGet>$(NuGet) - <_RestoreDir>$(RestoreDir) - <_RestoreDir Condition="'$(_RestoreDir)' == ''">%(RestoreSolution.RootDir)%(RestoreSolution.Directory) - - <_NuGet Condition=" '$(RestoreDir)' != ''">$(_NuGet.Replace('$(RestoreDir)', '').TrimStart('/').TrimStart('\')) - - - - - - - - - - - - - - - - - <_RestoreSolution Condition=" '$(OS)' != 'Unix' And '$(_RestoreDir)' != ''">$(_RestoreSolution.Replace('$(_RestoreDir)', '').TrimStart('/').TrimStart('\')) - <_RestoreOutput Condition=" '$(OS)' != 'Unix' And '$(_RestoreOutput)' != '' And '$(_RestoreDir)' != ''">$(_RestoreOutput.Replace('$(_RestoreDir)', '').TrimStart('/').TrimStart('\')) - - <_RestoreCommand Condition=" '$(_RestoreCommand)' == '' ">Restore - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @(ETag) - $(ETag.Substring(5).Trim().TrimStart('"').TrimEnd('"')) - - <Namespace Prefix='msb' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/> - $(MSBuildThisFileFullPath) - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - 1D1D4F4E2A49280 - - - diff --git a/scripts/configure.fsx b/scripts/configure.fsx index 5cec296c5..a5f34c3ec 100755 --- a/scripts/configure.fsx +++ b/scripts/configure.fsx @@ -51,7 +51,7 @@ let initialConfigFile, buildTool, areGtkLibsAbsentOrDoesNotApply = Process.ConfigCommandCheck ["mono"] true true |> ignore Process.ConfigCommandCheck ["fsharpc"] true true |> ignore - // needed by NuGet.Restore.targets & the "update-servers" Makefile target + // needed by the "update-servers" Makefile target? Process.ConfigCommandCheck ["curl"] true true |> ignore @@ -118,17 +118,6 @@ let initialConfigFile, buildTool, areGtkLibsAbsentOrDoesNotApply = Map.empty.Add("MonoPkgConfigVersion", monoVersion), buildTool, areGtkLibsAbsentOrDoesNotApply -#if LEGACY_FRAMEWORK -let targetsFileToExecuteNugetBeforeBuild = """ - - - -""" -File.WriteAllText(Path.Combine(rootDir.FullName, "before.gwallet.core-legacy.sln.targets"), - targetsFileToExecuteNugetBeforeBuild) -#endif - let prefix = DirectoryInfo(Misc.GatherOrGetDefaultPrefix(Misc.FsxOnlyArguments(), false, None)) if not (prefix.Exists) then diff --git a/scripts/make.fsx b/scripts/make.fsx index c55468a39..9d4f3a210 100644 --- a/scripts/make.fsx +++ b/scripts/make.fsx @@ -33,7 +33,12 @@ open GWallet.Scripting let UNIX_NAME = "geewallet" let CONSOLE_FRONTEND = "GWallet.Frontend.Console" let GTK_FRONTEND = "GWallet.Frontend.XF.Gtk" -let DEFAULT_SOLUTION_FILE = "gwallet.core.sln" +let DEFAULT_SOLUTION_FILE = +#if !LEGACY_FRAMEWORK + "gwallet.core.sln" +#else + "gwallet.core-legacy.sln" +#endif let LINUX_SOLUTION_FILE = "gwallet.linux-legacy.sln" let MAC_SOLUTION_FILE = "gwallet.mac-legacy.sln" let BACKEND = "GWallet.Backend" @@ -126,6 +131,18 @@ exec mono "$FRONTEND_PATH" "$@" """ #if LEGACY_FRAMEWORK +let NugetRestore projectOrSolutionRelativePath = + let nugetArgs = + sprintf + "restore %s -SolutionDirectory ." + projectOrSolutionRelativePath + Network.RunNugetCommand + FsxHelper.NugetExe + nugetArgs + Echo.All + true + |> ignore + let PrintNugetVersion () = if not (FsxHelper.NugetExe.Exists) then false @@ -157,6 +174,10 @@ let BuildSolution (maybeConstant: Option) (extraOptions: string) = +#if LEGACY_FRAMEWORK + NugetRestore solutionFileName +#endif + let buildTool,buildArg = buildToolAndBuildArg let configOption = @@ -223,8 +244,8 @@ let BuildSolution let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = let maybeBuildTool = Map.tryFind "BuildTool" buildConfigContents - let mainSolution = DEFAULT_SOLUTION_FILE - let buildTool,buildArg,solutionFileName = + let solutionFileName = DEFAULT_SOLUTION_FILE + let buildTool,buildArg = match maybeBuildTool with | None -> failwith "A BuildTool should have been chosen by the configure script, please report this bug" @@ -232,7 +253,7 @@ let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = #if LEGACY_FRAMEWORK failwith "'dotnet' shouldn't be the build tool when using legacy framework, please report this bug" #endif - "dotnet", "build", mainSolution + "dotnet", "build" | Some otherBuildTool -> #if LEGACY_FRAMEWORK let nugetConfig = @@ -247,9 +268,9 @@ let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = |> FileInfo File.Copy(legacyNugetConfig.FullName, nugetConfig.FullName, true) - otherBuildTool, String.Empty, "gwallet.core-legacy.sln" + otherBuildTool, String.Empty #else - otherBuildTool, String.Empty, mainSolution + otherBuildTool, String.Empty #endif Console.WriteLine (sprintf "Building in %s mode..." (binaryConfig.ToString())) @@ -265,22 +286,6 @@ let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = // older mono versions (which only have xbuild, not msbuild) can't compile .NET Standard assemblies if buildTool = "msbuild" then -#if LEGACY_FRAMEWORK - // somehow, msbuild doesn't restore the frontend dependencies (e.g. Xamarin.Forms) when targetting - // the {LINUX|MAC}_SOLUTION_FILE below, so we need this workaround. TODO: report this bug - let ExplicitRestore projectOrSolutionRelativePath = - let nugetWorkaroundArgs = - sprintf - "restore %s -SolutionDirectory ." - projectOrSolutionRelativePath - Network.RunNugetCommand - FsxHelper.NugetExe - nugetWorkaroundArgs - Echo.All - true - |> ignore -#endif - let MSBuildRestoreAndBuild solutionFile = BuildSolution ("msbuild",buildArg) solutionFile binaryConfig maybeConstant "/t:Restore" // TODO: report as a bug the fact that /t:Restore;Build doesn't work while /t:Restore and later /t:Build does @@ -293,7 +298,9 @@ let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = if binaryConfig = BinaryConfig.Debug then let solution = MAC_SOLUTION_FILE #if LEGACY_FRAMEWORK - ExplicitRestore solution + // somehow, msbuild doesn't restore the frontend dependencies (e.g. Xamarin.Forms) when targetting + // the {LINUX|MAC}_SOLUTION_FILE below, so we need this workaround. TODO: just finish migrating to MAUI(dotnet restore) + NugetRestore solution #endif MSBuildRestoreAndBuild solution @@ -302,7 +309,9 @@ let JustBuild binaryConfig maybeConstant: Frontend*FileInfo = if FsxHelper.AreGtkLibsPresent Echo.All then let solution = LINUX_SOLUTION_FILE #if LEGACY_FRAMEWORK - ExplicitRestore solution + // somehow, msbuild doesn't restore the frontend dependencies (e.g. Xamarin.Forms) when targetting + // the {LINUX|MAC}_SOLUTION_FILE below, so we need this workaround. TODO: just finish migrating to MAUI(dotnet restore) + NugetRestore solution #endif MSBuildRestoreAndBuild solution @@ -367,6 +376,10 @@ let GetPathToBackend () = Path.Combine (FsxHelper.RootDir.FullName, "src", BACKEND) let MakeAll (maybeConstant: Option) = +#if LEGACY_FRAMEWORK + if not FsxHelper.NugetExe.Exists then + Network.DownloadNugetExe FsxHelper.NugetExe +#endif let buildConfig = BinaryConfig.Debug let frontend,_ = JustBuild buildConfig maybeConstant frontend,buildConfig