Skip to content

Commit

Permalink
Add doc for building in linux (#118)
Browse files Browse the repository at this point in the history
  • Loading branch information
yangpanMS authored Jun 22, 2023
1 parent ffc4fff commit 46717c2
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 78 deletions.
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
#*.RTF diff=astextplain

# .sh will have LF as end of line as they are supported by Linux
/src/VirtualClient/VirtualClient.ExternalTools/Linux/AzQualify/LinuxMySQLTPCC/runtimes/linux/*.sh eol=lf
**/*.sh eol=lf
/src/VirtualClient/VirtualClient.Packaging/linux-x64/**/* eol=lf
/src/VirtualClient/VirtualClient.Packaging/linux-arm64/**/* eol=lf
/src/VirtualClient/VirtualClient.Packaging/win-x64/SQLTPCC/HammerDB/**/* eol=lf
Expand Down
2 changes: 1 addition & 1 deletion .pipelines/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pool:
vmImage: windows-latest

variables:
VcVersion : 1.0.3
VcVersion : 1.0.4
ROOT: $(Build.SourcesDirectory)
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
ENABLE_PRS_DELAYSIGN: 1
Expand Down
4 changes: 2 additions & 2 deletions Repo.props
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@
<!--
1) Load the build environment settings from the 'buildEnv' submodule if a Git submodule is being used.
-->
<Import Project="$(MSBuildThisFileDirectory).buildEnv\BuildEnv.props" Condition="Exists('$(MSBuildThisFileDirectory).buildEnv\BuildEnv.props')" />
<Import Project="$(MSBuildThisFileDirectory).buildenv\BuildEnv.props" Condition="Exists('$(MSBuildThisFileDirectory).buildenv\BuildEnv.props')" />

<!--
OR
2) Otherwise, load the build environment settings from the local repo root directory if a Git submodule IS NOT being used.
-->
<Import Project="$(MSBuildThisFileDirectory)BuildEnv.props" Condition="!Exists('$(MSBuildThisFileDirectory).buildEnv\BuildEnv.props')" />
<Import Project="$(MSBuildThisFileDirectory)BuildEnv.props" Condition="!Exists('$(MSBuildThisFileDirectory).buildenv\BuildEnv.props')" />

</Project>
71 changes: 0 additions & 71 deletions build.pl

This file was deleted.

37 changes: 37 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

while [[ "$#" -gt 0 ]]; do
case $1 in
--build-all)
BUILD_ALL=true
;;
*)
;;
esac
shift
done

PUBLISH_FLAGS="--self-contained -p:InvariantGlobalization=true"
ARCH=$(uname -m)

if [ "$ARCH" == "x86_64" ]; then
ARCH="linux-x64"
elif [ "$ARCH" == "aarch64" ]; then
ARCH="linux-arm64"
else
echo "Unsupported architecture: $ARCH"
fi

echo "Building VirtualClient solution."
dotnet build src/VirtualClient/VirtualClient.sln -c Debug

if [ "$BUILD_ALL" = true ]; then
echo "Publishing VirtualClient for all platforms."
dotnet publish src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj -r linux-x64 -c Debug $PUBLISH_FLAGS
dotnet publish src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj -r linux-arm64 -c Debug $PUBLISH_FLAGS
dotnet publish src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj -r win-x64 -c Debug $PUBLISH_FLAGS
dotnet publish src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj -r win-arm64 -c Debug $PUBLISH_FLAGS
else
echo "Publishing VirtualClient for architecture: $ARCH"
dotnet publish src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj -r $ARCH -c Debug $PUBLISH_FLAGS
fi
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public async Task OpenFOAMWorkloadProfileExecutesTheExpectedWorkloadsOnUnixPlatf
IProcessProxy process = this.mockFixture.CreateProcess(command, arguments, workingDir);
if (arguments.EndsWith("Allrun\"", StringComparison.OrdinalIgnoreCase))
{
process.StandardOutput.Append(TestDependencies.GetResourceFileContents("OpenFOAMResults.txt"));
process.StandardOutput.Append(TestDependencies.GetResourceFileContents("OpenFoamResults.txt"));
}

return process;
Expand Down Expand Up @@ -147,7 +147,7 @@ private void SetupDefaultMockBehavior(PlatformID platform = PlatformID.Unix, Arc

this.mockFixture.SetupWorkloadPackage("openfoam", expectedFiles: expectedFiles.ToArray());

string resultsFileContent = TestDependencies.GetResourceFileContents("OpenFOAMResults.txt");
string resultsFileContent = TestDependencies.GetResourceFileContents("OpenFoamResults.txt");
this.mockFixture.SetupFile("openfoam", $"{platformArch}/airFoil2D/log.simpleFoam", resultsFileContent);
this.mockFixture.SetupFile("openfoam", $"{platformArch}/elbow/log.icoFoam", resultsFileContent);
this.mockFixture.SetupFile("openfoam", $"{platformArch}/lockExchange/log.twoLiquidMixingFoam", resultsFileContent);
Expand Down
15 changes: 14 additions & 1 deletion website/docs/guides/0001-getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,20 @@ The following section provides instructions for building on Windows systems.
Note that when running on Linux systems, the 'VirtualClient' binary will need to be attributed as executable (e.g. ```chmod +x /home/user/virtualclient/linux-x64/publish/VirtualClient```)

### Building On a Linux System
Not supported as of now. We are currently working on adding support for scripts that can execute cross-platform (e.g. Perl).
The following section provides instructions for building on Linux systems.

:::info
You need to install .NET SDK for building VirtualClient locally. You could use command like `sudo snap install dotnet-sdk` or refer to [.NET documentation](https://learn.microsoft.com/en-us/dotnet/core/install/linux).
:::

- In the repo root directory, run the following commands:
``` script
# Build the repo with current platform (one of linux-x64 or linux-arm64)
~/build/VirtualClient$ ./build.sh
# Build the repo for all platforms (linux-x64,linux-arm64,win-x64,win-arm64)
~/build/VirtualClient$ ./build.sh --build-all
```

## Run a Simple Profile
The following section illustrates how to run a simple profile on your system. This profile will run the OpenSSL workload on your system for a brief period of time. This workload
Expand Down

0 comments on commit 46717c2

Please sign in to comment.