Skip to content

init: initialize Mr.Spawner repository structure (issue #1) - #2

Merged
EndrII merged 5 commits into
mainfrom
task_1
Nov 14, 2026
Merged

EndrII merged 5 commits into
mainfrom
task_1

Conversation

@QuasarAppCI

@QuasarAppCI QuasarAppCI commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Summary

Implements issue #1 - initialization of the Mr.Spawner repository. Base structure only, no logic is implemented.

Changes

  1. Repository initialization - the internal init script ./init.sh MrSpawner was run (project name MrSpawner, all RENAME_ME placeholders replaced).
  2. Submodules updated to the latest HEAD - submodules/CMake bumped 733e0ea → e4e873b (QuasarApp/CMake main).
  3. Project restructured into modules:
    • src/Core - the main implementation of all project functions, a static library that works without Qt (Qt is only searched when the tests module is enabled).
    • src/Interfaces - a super lightweight library with the public interfaces of the project (no dependencies at all).
    • src/mrspawner - the CLI tool for running the agent, depends on all modules except tests; includes the CQtDeployer deploy configuration (deploy/mrspawner.json).
    • tests - the testing tool based on QtTest, depends on Core and Qt. Every test class is a stand-alone QTest executable with QTEST_GUILESS_MAIN (the proven CQtDeployer pattern, issue #861) - the testcore helper of the template was dropped because its Q_DECL_IMPORT export macro breaks the link of the static testcore library on Windows.
  4. GitHub Actions:
    • .github/workflows/pr.yml - PR test action for Windows (windows-2025), Linux (ubuntu-24.04) and macOS (macos-15); installs Qt 6.10.3 + CQtDeployer, builds and runs the test target, uploads test reports.
    • .github/workflows/cmake-multi-platform-build.yml - release build action (modeled after CQtDeployer): on v* tags builds on the three platforms, runs the deploy target and uploads the distribution packages (zip, deb on Linux, dmg on macOS) to the GitHub release.

Notes:

  • The broken template command make_directory(Distro) was replaced by the standard file(MAKE_DIRECTORY ...) in the mrspawner module.
  • qt_policy(SET QTP0001 NEW) was removed - QTP0001 is a QML-only policy and the project has no QML modules.
  • The versionless find_package(QT NAMES Qt6 Qt5 ...) is used, so the QT_VERSION_MAJOR variable is set for the Qt${QT_VERSION_MAJOR}:: targets.

Local verification

  • cmake -B build -G Ninja -DMRSPAWNER_TESTS=ON -DCMAKE_PREFIX_PATH=<Qt6.10.3> + build - OK (version 0.<count>.<hash>).
  • cmake --build build --target test - 4 passed, 0 failed (CoreTest::coreInit, CoreTest::coreVersion), test_report.txt generated.
  • No-Qt build with -DMRSPAWNER_TESTS=OFF (no CMAKE_PREFIX_PATH) - configure/build/run OK.
  • cmake --build build --target deploy - created Distro/mrspawner_<version>_Linux_x86_64.zip and .deb.

Closes #1

- run the internal init script (./init.sh MrSpawner)

- update submodules/CMake to the latest HEAD (e4e873b)

- restructure the project into the Core, Interfaces, mrspawner and tests modules

- add GitHub Actions: PR test action (Windows, Linux, macOS) and release build action

Base structure only, no logic is implemented.
@QuasarAppCI QuasarAppCI added the waiting-for-review The task is done and wait for review label Nov 13, 2026
- remove the testcore helper of the template: its TEST_CORE_EXPORT

  (Q_DECL_IMPORT) breaks the link of the static testcore library on

  Windows (undefined reference to the __imp_ symbols)

- follow the proven CQtDeployer pattern: every test class is a

  stand-alone QTest executable with QTEST_GUILESS_MAIN, registered

  via addTestsArg with the -o test_report.txt -txt report argument

- use the versionless find_package(QT NAMES Qt6 Qt5) so that the

  QT_VERSION_MAJOR variable is set for the Qt:: targets
…(issue #1)

On Windows the Q_DECL_IMPORT-like __declspec(dllimport) attribute

created __imp_ symbol references that cannot be resolved against the

static libCore.a (undefined reference to __imp__ZN9MrSpawner4initEv).

The export attributes are used by the library build only; consumers

get plain symbols, so the static library links on every platform.
@EndrII
EndrII self-requested a review November 14, 2026 00:13
QuasarAppCI and others added 2 commits November 14, 2026 00:41
…sue #1)

qt_standard_project_setup() sets CMAKE_RUNTIME_OUTPUT_DIRECTORY to the

invocation directory (the build root) on Windows, so the test executable

left build/tests/ and the cqtdeployer deployTestCore target of the CI

test targets failed with 'Failed to set targets' on the Windows runner.

Use the template CMAKE_AUTOMOC/CMAKE_AUTOUIC settings instead, and pass

the QT_ROOT_DIR environment variable to the cqtdeployer libDir option so

the Qt libraries of the test executables are deployed.
Signed-off-by: Andrei Yankovich <endriipersonal@gmail.com>
@EndrII
EndrII merged commit 7b90531 into main Nov 14, 2026
4 checks passed
@EndrII
EndrII deleted the task_1 branch November 14, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-for-review The task is done and wait for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Init repository Mr.Spawner

2 participants