Skip to content

Commit

Permalink
Honor Language Version (#149)
Browse files Browse the repository at this point in the history
* Fix up tools

* Move language extension to loader

* Pull out extension versions

* Create helper to reuse lookup from closure

* Allow build versions outside built in

* Update locks to use safe language names

* Load language extension if not built in

* Apply language extension as normal build extension if not built in

* Allow optional language extension

* Restore language package if not built in

* Pull built in language out of build loader

* Update sample

* Bump version

Co-authored-by: Matthew Asplund <mwasplund@outlook.com>
  • Loading branch information
mwasplund and Matthew Asplund authored Oct 26, 2022
1 parent a0c5f96 commit 883e164
Show file tree
Hide file tree
Showing 40 changed files with 1,678 additions and 511 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,16 @@ jobs:
- name: Soup Build
run: soup build ./Soup/Source/Client/CLI/ -v:d -flavor ${{matrix.config}}

# Build Tools
- name: Soup Restore PrintGraph
run: soup restore ./Soup/Tools/PrintGraph/
- name: Soup Build PrintGraph
run: soup build ./Soup/Tools/PrintGraph/ -flavor ${{matrix.config}} -v:d
- name: Soup Restore PrintValueTable
run: soup restore ./Soup/Tools/PrintValueTable/
- name: Soup Build PrintValueTable
run: soup build ./Soup/Tools/PrintValueTable/ -flavor ${{matrix.config}} -v:d

# Build Samples
- name: Soup Restore Cpp BuildExtension
run: soup restore ./Soup/Samples/Cpp/BuildExtension/Executable/
Expand Down
6 changes: 3 additions & 3 deletions Docs/Samples/Cpp/Build-Extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,13 @@ The package lock that was generated to capture the unique build dependencies req
Version: 3
Closures: {
Root: {
C++: [
Cpp: [
{ Name: "Samples.SimpleBuildExtension.Executable", Version: "../Executable", Build: "Build0" }
]
}
Build0: {
C#: [
{ Name: "C++", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.Cpp", Version: "0.4.0" }
{ Name: "Samples.Cpp.BuildExtension.Extension", Version: "1.0.0" }
]
}
Expand Down
10 changes: 5 additions & 5 deletions Samples/CSharp/BuildExtension/Executable/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
Version: 3
Version: 2
Closures: {
Root: {
C#: [
CSharp: [
{ Name: "Samples.CSharp.BuildExtension.Executable", Version: "../Executable", Build: "Build0" }
]
}
Build0: {
C#: [
{ Name: "C#", Version: "0.1.0" }
{ Name: "Samples.CSharp.BuildExtension.Extension", Version: "1.0.0" }
CSharp: [
{ Name: "Soup.CSharp", Version: "0.7.0" }
{ Name: "Samples.CSharp.BuildExtension.Extension", Version: "../Extension/" }
]
}
}
2 changes: 1 addition & 1 deletion Samples/CSharp/BuildExtension/Executable/Recipe.sml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: "Samples.CSharp.BuildExtension.Executable"
Language: "C#|0.1"
Language: "C#|0.7"
Type: "Executable"
Version: "1.0.0"
Source: [
Expand Down
8 changes: 4 additions & 4 deletions Samples/CSharp/BuildExtension/Extension/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
Version: 3
Version: 2
Closures: {
Root: {
C#: [
CSharp: [
{ Name: "Opal", Version: "1.1.0", Build: "Build0" }
{ Name: "Samples.CSharp.BuildExtension.Extension", Version: "./", Build: "Build0" }
{ Name: "Soup.Build", Version: "0.2.0", Build: "Build0" }
{ Name: "Soup.Build.Extensions", Version: "0.4.0", Build: "Build0" }
]
}
Build0: {
C#: [
{ Name: "C#", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.CSharp", Version: "0.7.0" }
]
}
}
2 changes: 1 addition & 1 deletion Samples/CSharp/BuildExtension/Extension/Recipe.sml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: "Samples.CSharp.BuildExtension.Extension"
Language: "C#|0.1"
Language: "C#|0.7"
Version: "1.0.0"
Source: [
"CustomBuildTask.cs"
Expand Down
13 changes: 13 additions & 0 deletions Samples/CSharp/ConsoleApplication/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Version: 3
Closures: {
Root: {
CSharp: [
{ Name: "Samples.CSharp.ConsoleApplication", Version: "../ConsoleApplication", Build: "Build0" }
]
}
Build0: {
CSharp: [
{ Name: "Soup.CSharp", Version: "0.7.0" }
]
}
}
2 changes: 1 addition & 1 deletion Samples/CSharp/ConsoleApplication/Recipe.sml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: "Samples.CSharp.ConsoleApplication"
Language: "C#|0.1"
Language: "C#|0.7"
Type: "Executable"
Version: "1.0.0"
Source: [
Expand Down
6 changes: 3 additions & 3 deletions Samples/Cpp/BuildExtension/Executable/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
Version: 3
Closures: {
Root: {
C++: [
Cpp: [
{ Name: "Samples.SimpleBuildExtension.Executable", Version: "../Executable", Build: "Build0" }
]
}
Build0: {
C#: [
{ Name: "C++", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.Cpp", Version: "0.4.0" }
{ Name: "Samples.Cpp.BuildExtension.Extension", Version: "1.0.0" }
]
}
Expand Down
6 changes: 3 additions & 3 deletions Samples/Cpp/BuildExtension/Extension/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
Version: 3
Closures: {
Root: {
C#: [
CSharp: [
{ Name: "Opal", Version: "1.1.0", Build: "Build0" }
{ Name: "Samples.Cpp.BuildExtension.Extension", Version: "./", Build: "Build0" }
{ Name: "Soup.Build", Version: "0.2.0", Build: "Build0" }
{ Name: "Soup.Build.Extensions", Version: "0.4.0", Build: "Build0" }
]
}
Build0: {
C#: [
{ Name: "C#", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.CSharp", Version: "0.7.0" }
]
}
}
4 changes: 2 additions & 2 deletions Samples/Cpp/ParseJsonFile/PackageLock.sml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Closures: {
]
}
Build0: {
C#: [
{ Name: "C++", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.Cpp", Version: "0.4.0" }
]
}
}
2 changes: 1 addition & 1 deletion Scripts/build-client.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ SET ClientCLIDir=%SourceDir%\Client\CLI
SET MonitorClientDir=%SourceDir%\Monitor\Client
if %Flavor% == release (SET OutputX64DirectorPath=txTMowfPh1V3rPmbvNBmBW9Z8Jg) else (SET OutputX64DirectorPath=J3mu4cpISw6nDaCPED8gkqZ-q84)
if %Flavor% == release (SET OutputX86DirectorPath=ci_UJP5zJKyF-O0VVSVDMNi1Wwg) else (SET OutputX86DirectorPath=9fr4dmE4CrAXgS2yFzcvYJXkGDg)
SET ClientCLIOutputDirectory=%OutputDir%\C++\Soup\0.22.0\%OutputX64DirectorPath%
SET ClientCLIOutputDirectory=%OutputDir%\C++\Soup\0.23.0\%OutputX64DirectorPath%
SET MonitorClientOutputX64Directory=%OutputDir%\C++\Monitor.Client\1.0.0\%OutputX64DirectorPath%
SET MonitorClientOutputX86Directory=%OutputDir%\C++\Monitor.Client\1.0.0\%OutputX86DirectorPath%

Expand Down
2 changes: 1 addition & 1 deletion Scripts/soup.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ SET RunDir=%OutDir%\run

REM - Use a copy of the final binary in case we are re-buiding itself
robocopy %ScriptsDir%\Install\ %RunDir%\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\C++\Soup\0.22.0\txTMowfPh1V3rPmbvNBmBW9Z8Jg\bin\ %RunDir%\Soup\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\C++\Soup\0.23.0\txTMowfPh1V3rPmbvNBmBW9Z8Jg\bin\ %RunDir%\Soup\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\msbuild\bin\Soup.Build.Generate\Release\net6.0\win-x64\publish\ %RunDir%\Soup\Generate\ /MIR /NJH /NJS /NDL > NUL
robocopy C:\Users\mwasp\.soup\out\C#\Soup.Cpp\0.4.0\txTMowfPh1V3rPmbvNBmBW9Z8Jg\bin\ %RunDir%\Soup\Extensions\Soup.Cpp\0.4.0\ /MIR /NJH /NJS /NDL > NUL
robocopy C:\Users\mwasp\.soup\out\C#\Soup.CSharp\0.7.0\txTMowfPh1V3rPmbvNBmBW9Z8Jg\bin\ %RunDir%\Soup\Extensions\Soup.CSharp\0.7.0\ /MIR /NJH /NJS /NDL > NUL
Expand Down
2 changes: 1 addition & 1 deletion Scripts/soupd.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ SET RunDir=%OutDir%\run

REM - Use a copy of the final binary in case we are re-buiding itself
robocopy %ScriptsDir%\Install\ %RunDir%\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\C++\Soup\0.22.0\J3mu4cpISw6nDaCPED8gkqZ-q84\bin\ %RunDir%\Soup\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\C++\Soup\0.23.0\J3mu4cpISw6nDaCPED8gkqZ-q84\bin\ %RunDir%\Soup\ /MIR /NJH /NJS /NDL > NUL
robocopy %OutDir%\msbuild\bin\Soup.Build.Generate\Debug\net6.0\win-x64\publish\ %RunDir%\Soup\Generate\ /MIR /NJH /NJS /NDL > NUL
robocopy C:\Users\mwasp\.soup\out\C#\Soup.Cpp\0.4.0\J3mu4cpISw6nDaCPED8gkqZ-q84\bin\ %RunDir%\Soup\Extensions\Soup.Cpp\0.4.0\ /MIR /NJH /NJS /NDL > NUL
robocopy C:\Users\mwasp\.soup\out\C#\Soup.CSharp\0.7.0\J3mu4cpISw6nDaCPED8gkqZ-q84\bin\ %RunDir%\Soup\Extensions\Soup.CSharp\0.7.0\ /MIR /NJH /NJS /NDL > NUL
Expand Down
16 changes: 8 additions & 8 deletions Source/Client/CLI/PackageLock.sml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Version: 3
Closures: {
Root: {
C#: [
CSharp: [
{ Name: "Opal", Version: "1.1.0", Build: "Build2" }
{ Name: "Soup.Build", Version: "0.2.0", Build: "Build2" }
{ Name: "Soup.Build.Extensions", Version: "0.4.0", Build: "Build2" }
Expand All @@ -13,7 +13,7 @@ Closures: {
{ Name: "Soup.CSharp.Compiler", Version: "0.6.0", Build: "Build2" }
{ Name: "Soup.CSharp.Compiler.Roslyn", Version: "0.6.0", Build: "Build2" }
]
C++: [
Cpp: [
{ Name: "copy", Version: "../../Tools/Copy/", Build: "Build0" }
{ Name: "CryptoPP", Version: "1.1.0", Build: "Build0" }
{ Name: "Detours", Version: "4.0.9", Build: "Build0" }
Expand All @@ -28,19 +28,19 @@ Closures: {
]
}
Build0: {
C#: [
{ Name: "C++", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.Cpp", Version: "0.4.0" }
]
}
Build1: {
C#: [
{ Name: "C++", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.Cpp", Version: "0.4.0" }
{ Name: "Soup.Test.Cpp", Version: "0.4.0" }
]
}
Build2: {
C#: [
{ Name: "C#", Version: "0.1.0" }
CSharp: [
{ Name: "Soup.CSharp", Version: "0.7.0" }
]
}
}
2 changes: 1 addition & 1 deletion Source/Client/CLI/Recipe.sml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: "Soup"
Version: "0.22.0"
Version: "0.23.0"
Language: "C++|0.1"

Type: "Executable"
Expand Down
2 changes: 1 addition & 1 deletion Source/Client/CLI/Source/Commands/VersionCommand.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace Soup::Client

// TODO var version = Assembly.GetExecutingAssembly().GetName().Version;
// Log::Message($"{version.Major}.{version.Minor}.{version.Build}");
Log::HighPriority("0.22.0");
Log::HighPriority("0.23.0");
}

private:
Expand Down
20 changes: 20 additions & 0 deletions Source/Client/Core/Source/Build/BuildEngine.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,28 @@ namespace Soup::Core
startTime = std::chrono::high_resolution_clock::now();

// Generate the package build graph
auto builtInLanguages = std::map<std::string, BuiltInLanguagePackage>(
{
{
"C++",
BuiltInLanguagePackage(
"Cpp",
"Soup.Cpp",
SemanticVersion(0, 4, 0),
Path("Soup.Cpp.dll"))
},
{
"C#",
BuiltInLanguagePackage(
"CSharp",
"Soup.CSharp",
SemanticVersion(0, 7, 0),
Path("Soup.CSharp.dll"))
},
});
auto recipeCache = RecipeCache();
auto loadEngine = BuildLoadEngine(
builtInLanguages,
arguments,
hostBuildGlobalParameters,
recipeCache);
Expand Down
Loading

0 comments on commit 883e164

Please sign in to comment.