-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Workflow to run on PR from opensim-core, builds on windows only (#1486)
- Loading branch information
Showing
1 changed file
with
140 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
name: opensim-application-core-PR | ||
|
||
on: | ||
repository_dispatch: | ||
|
||
|
||
jobs: | ||
windows: | ||
name: Windows | ||
|
||
runs-on: windows-2019 | ||
|
||
steps: | ||
- name: Checkout opensim-gui | ||
uses: actions/checkout@v3 | ||
|
||
- name: Install SWIG | ||
run: | | ||
choco install swig --version 4.1.1 --yes --limit-output --allow-downgrade | ||
swig -swiglib | ||
- name: Install Python packages | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.8' | ||
|
||
- name: Install NumPy | ||
run: python3 -m pip install numpy==1.20.2 | ||
|
||
- name: Set up JDK 1.8 | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'temurin' | ||
java-version: 8 | ||
|
||
- name: Install Netbeans 12.3 | ||
# Make sure the NetBeans installer is not corrupted. | ||
run: | | ||
(New-Object System.Net.WebClient).DownloadFile("https://archive.apache.org/dist/netbeans/netbeans/12.3/Apache-NetBeans-12.3-bin-windows-x64.exe", "Apache-NetBeans-12.3-bin-windows-x64.exe") | ||
$expectedHash = "0695d87d9c72dcf3738672ba83eb273dda02066fa5eee80896cb6ccf79175840367a13d22ab3cb9838dffaa9a219dd1f73aee0e27c085e5310da2e3bbbc92b2c" | ||
$hashFromFile = Get-FileHash -Algorithm SHA512 -Path .\Apache-NetBeans-12.3-bin-windows-x64.exe | ||
if (($hashFromFile.Hash) -ne ($expectedHash)) { Write-Error "Hash doesn't match." } | ||
.\Apache-NetBeans-12.3-bin-windows-x64.exe --silent | Out-Null # This installer is gregarious. | ||
echo "ANT_HOME=C:\\Program Files\\NetBeans-12.0\\netbeans\\extide\\ant" >> $GITHUB_ENV | ||
- name: Checkout opensim-core pr branch | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: opensim-org/opensim-core | ||
path: 'opensim-core' | ||
ref: '00fe47f818d7a62d60a21caf629981908682b130' | ||
|
||
|
||
- name: Cache opensim-core-dependencies | ||
id: cache-dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: ~/opensim_dependencies_install | ||
# Every time a cache is created, it's stored with this key. | ||
# In subsequent runs, if the key matches the key of an existing cache, | ||
# then the cache is used. We chose for this key to depend on the | ||
# operating system and a hash of the hashes of all files in the | ||
# dependencies directory (non-recursive). | ||
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows#matching-a-cache-key | ||
key: ${{ runner.os }}-dependencies-${{ hashFiles('opensim-core/dependencies/*') }} | ||
|
||
- name: Build opensim-core-dependencies | ||
if: steps.cache-dependencies.outputs.cache-hit != 'true' | ||
run: | | ||
echo $env:GITHUB_WORKSPACE\\build_deps | ||
mkdir $env:GITHUB_WORKSPACE\\build_deps | ||
chdir $env:GITHUB_WORKSPACE\\build_deps | ||
# gci -r $env:GITHUB_WORKSPACE\\opensim-core | ||
# /W0 disables warnings. The other flags are copied from CMake's | ||
# default CMAKE_CXX_FLAGS. | ||
# https://msdn.microsoft.com/en-us/library/19z1t1wy.aspx | ||
$env:CXXFLAGS = "/W0" | ||
cmake $env:GITHUB_WORKSPACE/opensim-core/dependencies -G"Visual Studio 16 2019" -A x64 -DSUPERBUILD_ezc3d:BOOL=on -DOPENSIM_WITH_CASADI:BOOL=on -DWIG_DIR=C:/ProgramData/chocolatey/lib/swig -DOPENSIM_WITH_TROPTER:BOOL=on -DCMAKE_INSTALL_PREFIX=~/opensim_dependencies_install -DPython3_ROOT_DIR=C:\hostedtoolcache\windows\Python\3.8.10\x64 | ||
$env:CXXFLAGS = "" | ||
cmake . -LAH | ||
cmake --build . --config Release -- /maxcpucount:2 | ||
- name: Obtain opensim-core commit | ||
id: opensim-core-commit | ||
run: | | ||
cd opensim-core | ||
$opensim_core_commit=(git rev-parse HEAD) | ||
echo "hash=$opensim_core_commit" >> $GITHUB_OUTPUT | ||
- name: Cache opensim-core | ||
id: cache-core | ||
uses: actions/cache@v3 | ||
with: | ||
path: ~/opensim-core-install | ||
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows#matching-a-cache-key | ||
key: ${{ runner.os }}-${{ steps.opensim-core-commit.outputs.hash }} | ||
|
||
- name: Build opensim-core | ||
# if: steps.cache-core.outputs.cache-hit != 'true' | ||
run: | | ||
echo $env:GITHUB_WORKSPACE\\build_core | ||
mkdir $env:GITHUB_WORKSPACE\\build_core | ||
chdir $env:GITHUB_WORKSPACE\\build_core | ||
$env:CXXFLAGS = "/W0" | ||
cmake $env:GITHUB_WORKSPACE/opensim-core -G"Visual Studio 16 2019" -A x64 -DOPENSIM_DEPENDENCIES_DIR=~/opensim_dependencies_install -DBUILD_JAVA_WRAPPING=on -DBUILD_PYTHON_WRAPPING=on -DOPENSIM_C3D_PARSER=ezc3d -DBUILD_TESTING=off -DPython3_ROOT_DIR=C:\hostedtoolcache\windows\Python\3.8.10\x64 -DCMAKE_INSTALL_PREFIX=~/opensim-core-install | ||
cmake . -LAH | ||
cmake --build . --config Release -- /maxcpucount:2 | ||
cmake --install . | ||
- name: Update submodules | ||
run: git submodule update --init --recursive -- opensim-models opensim-visualizer Gui/opensim/threejs | ||
|
||
- name: Build GUI | ||
id: build-gui | ||
run: | | ||
mkdir build | ||
cd build | ||
cmake ../ -G"Visual Studio 16 2019" -A x64 -DCMAKE_PREFIX_PATH=~/opensim-core-install -DANT_ARGS="-Dnbplatform.default.netbeans.dest.dir=C:/Program Files/NetBeans-12.3/netbeans;-Dnbplatform.default.harness.dir=C:/Program Files/NetBeans-12.3/netbeans/harness" | ||
cmake --build . --target CopyOpenSimCore --config Release | ||
cmake --build . --target CopyModels --config Release | ||
cmake --build . --target PrepareInstaller --config Release | ||
cmake --build . --target CopyJRE --config Release | ||
cmake --build . --target CopyVisualizer --config Release | ||
# Read the value of the cache variable storing the GUI build version. | ||
$env:match = cmake -L . | Select-String -Pattern OPENSIMGUI_BUILD_VERSION | ||
$VERSION = $env:match.split('=')[1] | ||
echo $VERSION | ||
echo "name=VERSION::$VERSION" >> $GITHUB_ENV | ||
echo "version=$VERSION" >> $env:GITHUB_OUTPUT | ||
- name: Build GUI installer | ||
run: | | ||
cd Gui/opensim/dist/installer | ||
makensis.exe make_installer.nsi | ||
mv OpenSim-${{ steps.build-gui.outputs.version }}-win64.exe $env:GITHUB_WORKSPACE | ||
- name: Upload GUI installer | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: OpenSim-${{ steps.build-gui.outputs.version }}-win64 | ||
path: OpenSim-${{ steps.build-gui.outputs.version }}-win64.exe |