Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
795d146
REMOVE Windows and Mac only.
Oct 29, 2025
ce6618c
Dump attempt at building tests.
Oct 29, 2025
64b4be9
REMOVE Fix.
Oct 29, 2025
3cc5115
Huh?
Oct 29, 2025
9e2fbc2
The mystery is solved.
Oct 29, 2025
8af965c
Split things up.
trisyoungs Nov 19, 2025
c16d576
Disk space check, set env.
trisyoungs Nov 19, 2025
f5efa53
Options in conanfile.py.
trisyoungs May 22, 2026
6e4e3f0
Build tests (OSX).
trisyoungs May 22, 2026
053900a
Missing OpenGL in linker for Apple.
trisyoungs May 23, 2026
b065b3b
Attempt windeployqt before building test binaries.
trisyoungs May 23, 2026
082c496
Namespace for lib?
trisyoungs May 23, 2026
2d228a7
Adjust GUI test link libs.
trisyoungs May 23, 2026
eda7d72
Error in tests/CMakeLists.txt.
trisyoungs May 23, 2026
12f09d6
Trying to find windeployqt.
trisyoungs May 23, 2026
4f4b09e
Specifically target the QML GUI exe.
May 23, 2026
ecd756e
Try linking yet more libs.
May 23, 2026
e363f16
Ah, we were linking the old render library.
May 23, 2026
80376c0
Stop compiling RenderableGroupManagerModel.
Jun 7, 2026
0c618bd
Don't compile GradienBar.
Jun 7, 2026
ddec1ba
Output on test failure.
Jun 7, 2026
a36a8b2
Attempt to assemble other missing deps on Windows.
Jun 7, 2026
59b8703
Fix variable names.
Jun 7, 2026
008b13c
Deploy before build/run (otherwise test discovery fails).
Jun 7, 2026
5a0b2a7
Use EXPECT_NEAR instead of EXPECT_DOUBLE_EQ in interpolator test.
Jun 7, 2026
93cdd0f
Slashes.
Jun 7, 2026
b4a9a93
Is that dir even relevant...
trisyoungs Jun 10, 2026
ddcf6bd
More EXPECT_NEAR.
trisyoungs Jun 10, 2026
bf1e7f8
Fix path variable.
trisyoungs Jun 10, 2026
d697360
REMOVE OSX working (except for the box unit test) so focus on Windows.
trisyoungs Jun 10, 2026
bfc3df4
Throw in a deployer.
trisyoungs Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 1 addition & 27 deletions .github/workflows/_build_and_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ "${{ inputs.osxRunner }}", windows-2022 ]
os: [ windows-2022 ]
runs-on: ${{ matrix.os }}
steps:
- name: 'Download Source Tarfiles'
Expand All @@ -58,29 +58,3 @@ jobs:
conanHash: ${{ inputs.conanHash }}
osxTargetDeploymentVersion: ${{ inputs.osxTargetDeploymentVersion }}

BuildLinux:
strategy:
fail-fast: false
matrix:
target: [ dissolve, dissolve-gui ]
runs-on: ubuntu-latest
steps:
- name: 'Download Source Tarfiles'
uses: actions/download-artifact@v4
with:
name: source

- name: 'Unpack Source'
shell: bash
run: tar -xvf dissolve-versioned-source.tar

- name: "Build, Test, Package (Linux, ${{ matrix.target }})"
uses: "./.github/workflows/build"
with:
target: ${{ matrix.target }}
currentVersion: ${{ inputs.currentVersion }}
nixHash: ${{ inputs.nixHash }}
benchmark: ${{ inputs.benchmark }}
publishBenchmarks: ${{ inputs.publishBenchmarks }}
osxTargetDeploymentVersion: ${{ inputs.osxTargetDeploymentVersion }}

13 changes: 10 additions & 3 deletions .github/workflows/build/osx/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,25 @@ runs:
conan install . --deployer=direct_deploy --build=missing
mkdir -p build && cd build


cmake -G Ninja -DGUI:bool=true -DMULTI_THREADING:bool=${{ inputs.threading }} -DCONAN_GSL="OFF" -DJava_JAVA_EXECUTABLE:path=${JAVA_RUNTIME} -DANTLR_EXECUTABLE:string=$ANTLR_EXE -DQT_BASE_DIR=$QT_BASE_DIR ../ -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ inputs.osxTargetDeploymentVersion }}
cmake -G Ninja -DGUI:bool=true -DMULTI_THREADING:bool=${{ inputs.threading }} -DCONAN_GSL="OFF" -DJava_JAVA_EXECUTABLE:path=${JAVA_RUNTIME} -DANTLR_EXECUTABLE:string=$ANTLR_EXE -DQT_BASE_DIR=$QT_BASE_DIR ../ -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ inputs.osxTargetDeploymentVersion }} -DBUILD_TESTS:bool=ON
cmake --build . --config Release

# Move conan-installed deps to the build dir
mv ../direct_deploy ./
ls -R direct_deploy

# Copy over gsl libs so we can ship them with the bundle. Our exe is only linked to two of the four libs present, and this breaks the binary if we don't include them all in the package.
mkdir gsl
cp -v $(brew --prefix gsl)/lib/*.dylib ./gsl

- name: Test
if: ${{ inputs.cacheOnly == 'false' }}
shell: bash
run: |
set -ex
cd build

ctest --output-on-failure

- name: Upload Raw Build Artifacts
if: ${{ inputs.cacheOnly == 'false' }}
uses: actions/upload-artifact@v4
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/build/windows/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,43 @@ runs:
mkdir -p install
cp -r $TEMPD/* install/

- name: Test
if: ${{ inputs.cacheOnly == 'false' }}
shell: bash
run: |
Qt6_DIR="${RUNNER_TEMP}\qt\${{ inputs.qtVersion }}\msvc2019_64"
ANTLR_EXE="${RUNNER_TEMP}\antlr-${{ inputs.antlrVersion }}-complete.jar"
export PATH="${Qt6_DIR}\bin;$PATH"
INCLUDE="${RUNNER_TEMP}\freetype-latest;$INCLUDE"
LIB="${RUNNER_TEMP}\freetype-install\lib;${RUNNER_TEMP}\freetype-install\bin;$LIB"
INCLUDE="${RUNNER_TEMP}\ftgl-latest\src;$INCLUDE"
LIB="${RUNNER_TEMP}\ftgl-install\lib;$LIB"
JAVA_EXE="${JAVA_HOME_21_X64}\bin\java.exe"
cd build

# Run windeployqt on the main Dissolve-GUI-QML binary to pull in Qt library requirements
${Qt6_DIR}/bin/windeployqt.exe bin/Dissolve-GUI-QML.exe

# Assemble external library requirements
export DEPLOY_DIR="${GITHUB_WORKSPACE}\build"
export FREETYPE_DIR="${RUNNER_TEMP}\freetype-install\bin"
export FTGL_DIR="${RUNNER_TEMP}\ftgl-install\bin"
#cp -v ${DEPLOY_DIR}/install/bin/* ./bin
cp -v ${FREETYPE_DIR}/freetype.dll ./bin
cp -v ${FTGL_DIR}/ftgl.dll ./bin
cp -v ${DEPLOY_DIR}/direct_deploy/onetbb/bin/tbb12.dll ./bin
cp -v ${DEPLOY_DIR}/direct_deploy/onetbb/bin/tbbmalloc.dll ./bin
cp -v ${DEPLOY_DIR}/direct_deploy/onetbb/bin/tbbmalloc_proxy.dll ./bin
cp -v ${DEPLOY_DIR}/direct_deploy/onetbb/bin/tbbbind_2_5.dll ./bin
cp -v ${DEPLOY_DIR}/direct_deploy/antlr4-cppruntime/bin/antlr4-runtime.dll ./bin

# Build the test binaries
cmake ../ -G Ninja -DCMAKE_BUILD_TYPE:STRING="Release" -DCMAKE_C_COMPILER=cl -DANTLR_EXECUTABLE:string=$ANTLR_EXE -DJava_JAVA_EXECUTABLE:string=$JAVA_EXE -DCMAKE_CXX_COMPILER=cl -DMULTI_THREADING:bool=${{ inputs.threading }} -DGUI:bool=true -DCMAKE_INSTALL_PREFIX:PATH=$TEMPD -DBUILD_TESTS:bool=ON
cmake --build . --config Release

# Run the tests
ctest --output-on-failure

- name: Upload Raw Build Artifacts
if: ${{ inputs.cacheOnly == 'false' }}
uses: actions/upload-artifact@v4
Expand Down
16 changes: 1 addition & 15 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,8 @@ jobs:
with:
checkoutRef: ${{ github.event.pull_request.head.sha }}

QC:
needs: [Checkout]
uses: "./.github/workflows/_qc.yml"
with:
nixHash: ${{ needs.Checkout.outputs.nixHash }}

BuildAndPackage:
needs: [Checkout]
needs: Checkout
uses: "./.github/workflows/_build_and_package.yml"
with:
benchmark: false
Expand All @@ -51,11 +45,3 @@ jobs:
with:
branch: 'refs/pull/${{ github.event.pull_request.number }}/merge'

Web:
needs: [Checkout]
uses: "./.github/workflows/_website.yml"
with:
publishType: 'none'
displayMajorVersion: ${{ needs.Checkout.outputs.currentVersionMajor }}
displayMinorVersion: ${{ needs.Checkout.outputs.currentVersionMinor }}
hugoVersion: ${{ needs.Checkout.outputs.hugoVersion }}
8 changes: 7 additions & 1 deletion conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,16 @@ class DissolveRecipe(ConanFile):
name = "Dissolve"
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeToolchain", "CMakeDeps"
deployers = "direct_deploy"
options = {
"msvc_dev": [True, False],
"tests": [True, False],
"benchmarks": [True, False],
}
default_options = {
"msvc_dev": False,
"tests": True,
"benchmarks": False,
}
def configure(self):
self.options["puxixml"].header_only = False
Expand All @@ -32,8 +37,9 @@ def requirements(self):
self.requires("antlr4-cppruntime/4.13.1")
self.requires("gsl/2.7.1")

if self.settings.os == "Linux" or (self.options.msvc_dev and self.settings.build_type == "Debug"):
if self.options.tests:
self.requires("gtest/1.17.0")
if self.options.benchmarks:
self.requires("benchmark/1.8.4")

def build_requirements(self):
Expand Down
4 changes: 2 additions & 2 deletions src/gui/models/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ set(models_MOC_HDRS
generatorModel.h
generatorNodeModel.h
rangeVectorModel.h
renderableGroupManagerModel.h
# renderableGroupManagerModel.h
simpleForcefieldModel.h
sitesFilterProxy.h
sitesModel.h
Expand Down Expand Up @@ -88,7 +88,7 @@ set(models_SRCS
generatorModelMimeData.h
generatorNodeModel.cpp
rangeVectorModel.cpp
renderableGroupManagerModel.cpp
# renderableGroupManagerModel.cpp
simpleForcefieldModel.cpp
sitesFilterProxy.cpp
sitesModel.cpp
Expand Down
4 changes: 2 additions & 2 deletions src/gui/widgets/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ add_library(
elementSelector.h
exponentialSpin.cpp
exponentialSpin.h
gradientBar.cpp
gradientBar.h
# gradientBar.cpp
# gradientBar.h
integerSpin.cpp
integerSpin.h
noControls.cpp
Expand Down
4 changes: 2 additions & 2 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ function(dissolve_add_test)
target_include_directories(${TEST_NAME} PRIVATE ${Qt6Widgets_INCLUDE_DIRS})
target_link_libraries(
${TEST_NAME}
PUBLIC models widgets render delegates
PRIVATE Qt6::Core Qt6::Widgets
PUBLIC models widgets delegates gui-qml
PRIVATE Qt6::Quick3D Qt6::Qml Qt6::Widgets
)
endif(DISSOLVE_UNIT_TEST_GUI)

Expand Down
8 changes: 4 additions & 4 deletions tests/math/interpolator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,12 @@ TEST_F(InterpolatorTest, RegularBasic)
// Form interpolation of data and check interpolation at known values
Interpolator I(regularData_);
for (auto &&[x, y] : zip(regularData_.xAxis(), regularData_.values()))
EXPECT_DOUBLE_EQ(y, I.y(x));
EXPECT_NEAR(y, I.y(x), 1.0e-10);

auto x = 0.0;
for (auto y : regularFineY_)
{
EXPECT_DOUBLE_EQ(y, I.y(x));
EXPECT_NEAR(y, I.y(x), 1.0e-10);
x += fineDeltaX;
}
}
Expand All @@ -127,8 +127,8 @@ TEST_F(InterpolatorTest, RegularSequentialTest)
// Check against pre-calculated y values not present in the source data
for (auto &&[x, y, interpy] : zip(fineBins.xAxis(), regularFineY_, fineBins.values()))
{
EXPECT_DOUBLE_EQ(y, I.y(x));
EXPECT_DOUBLE_EQ(y, interpy);
EXPECT_NEAR(y, I.y(x), 1.0e-10);
EXPECT_NEAR(y, interpy, 1.0e-10);
}
}

Expand Down
Loading