Apparently we can run our tests in parallel just fine. On my local machine this cuts down the runtime from 3 minutes to around 50 seconds with a parallelism of 4: ```sh % for jobs in `seq 1 17`; do printf "--parallel %2d => " "$jobs" && time (ctest --parallel $jobs > /dev/null 2>&1); done --parallel 1 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 41.42s user 9.14s system 27% cpu 3:05.53 total --parallel 2 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.55s user 9.16s system 55% cpu 1:33.34 total --parallel 3 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 41.40s user 9.20s system 81% cpu 1:01.79 total --parallel 4 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.29s user 9.15s system 102% cpu 49.995 total --parallel 5 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.08s user 8.94s system 102% cpu 49.895 total --parallel 6 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.51s user 9.33s system 102% cpu 50.590 total --parallel 7 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 43.77s user 9.33s system 105% cpu 50.537 total --parallel 8 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.89s user 9.10s system 104% cpu 49.761 total --parallel 9 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 42.77s user 9.19s system 104% cpu 49.810 total --parallel 10 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 44.97s user 9.68s system 107% cpu 50.834 total --parallel 11 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 45.87s user 9.93s system 109% cpu 50.889 total --parallel 12 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 45.37s user 9.33s system 107% cpu 50.908 total --parallel 13 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 45.75s user 9.75s system 108% cpu 50.919 total --parallel 14 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 46.53s user 9.82s system 110% cpu 51.099 total --parallel 15 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 46.76s user 9.81s system 110% cpu 51.379 total --parallel 16 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 47.63s user 9.72s system 114% cpu 50.086 total --parallel 17 => ( ctest --parallel $jobs > /dev/null 2>&1; ) 46.05s user 9.23s system 110% cpu 49.938 total ``` Let's see if this applies to the test runs in CI too. Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org> |
||
|---|---|---|
| .github | ||
| .tx | ||
| admin | ||
| cmake | ||
| doc/images | ||
| LICENSES | ||
| nextcloud.client-desktop | ||
| shell_integration | ||
| src | ||
| systemd | ||
| test | ||
| theme | ||
| translations | ||
| .clang-format | ||
| .drone.yml | ||
| .git-blame-ignore-revs | ||
| .git-blame-ignore-revs.license | ||
| .gitattributes | ||
| .gitignore | ||
| .swift-format.json | ||
| .swift-format.json.license | ||
| .tag | ||
| .tag.license | ||
| AGENTS.md | ||
| AUTHORS.md | ||
| ChangeLog - Legacy.md | ||
| CHANGELOG.md | ||
| CMakeLists.txt | ||
| codecov.yml | ||
| config.h.in | ||
| config.h.in.license | ||
| CONTRIBUTING.md | ||
| COPYING | ||
| COPYING.documentation | ||
| CPackOptions.cmake.in | ||
| craftmaster.ini | ||
| mirall.desktop.in | ||
| mirall.desktop.in.license | ||
| NEXTCLOUD.cmake | ||
| NextcloudCPack.cmake | ||
| README.md | ||
| resources.qrc | ||
| resources.qrc.license | ||
| REUSE.toml | ||
| sonar-project.properties | ||
| sonar-project.properties.license | ||
| sync-exclude.lst | ||
| sync-exclude.lst.license | ||
| theme.qrc.in | ||
| theme.qrc.in.license | ||
| VERSION.cmake | ||
| version.h.in | ||
Nextcloud Desktop Client
The Nextcloud Desktop Client is a tool to synchronize files from Nextcloud Server with your computer.
🚀 Releases
For the latest stable recommended version, please refer to the download page https://nextcloud.com/install/#install-clients
Contributing to the desktop client
✌️ Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere and to explain how together we can strengthen and support each other.
👪 Join the team
There are many ways to contribute, of which development is only one! Find out how to get involved, including as a translator, designer, tester, helping others, and much more! 😍
Help testing
Download and install the client:
🔽 All releases
🔽 Daily master builds
Reporting issues
If you find any bugs or have any suggestion for improvement, please open an issue in this repository.
Bug fixing and development
Tip
For building the client on macOS we have a tool called
mac-crafter. You will find more information about it in its dedicated README. Also, please note the README in the NextcloudIntegration project which provides an even more convenient way to work on and build the desktop client on macOS by using Xcode.
1. 🚀 Set up your local development environment
Note
Find the system requirements and instructions on how to work on Windows with KDE Craft on our desktop client blueprints repository.
1.1 System requirements
- Windows 10, Windows 11, macOS 10.14 Mojave (or newer) or Linux
- 🔽 Inkscape (to generate icons)
- Developer tools: cmake, clang/gcc/g++:
- Qt6 since 3.14, Qt5 for earlier versions
- OpenSSL
- 🔽 QtKeychain
- SQLite
1.2 Optional
Tip
We highly recommend Nextcloud development environment on Docker Compose for testing/bug fixing/development.
▶️ https://juliusknorr.github.io/nextcloud-docker-dev/
1.3 Step by step instructions on how to build the client to contribute
- Clone the Github repository:
git clone https://github.com/nextcloud/desktop.git
- Create :
mkdir <build directory>
- Compile:
cd <build directory>
cmake -S <cloned desktop repo> -B build -DCMAKE_PREFIX_PATH=<dependencies> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=. -DNEXTCLOUD_DEV=ON
Tip
The cmake variable NEXTCLOUD_DEV allows you to run your own build of the client while developing in parallel with an installed version of the client.
- Build it:
- Windows:
cmake --build .
- Other platforms:
make
- 🐛 Pick a good first issue
- 👩🔧 Create a branch and make your changes. Remember to sign off your commits using
git commit -sm "Your commit message" - ⬆ Create a pull request and
@mentionthe people from the issue to review - 👍 Fix things that come up during a review
- 🎉 Wait for it to get merged!
Get in touch 💬
You can also get support for Nextcloud!
📜 License
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
