-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor: move to simple default builds #11003
base: develop
Are you sure you want to change the base?
Conversation
Why is KeeShare considered basic? It would argue that it's an advanced niche feature. It's not needed for most single-user use, and it requires network access. I would also argue that Secret Service is rather basic for Linux users, as it's the main method for client applications to store and retrieve their credentials. Though I agree that it's less basic than Auto-Type and Yubikey support. And I agree that it can be grouped with SSH Agent and Browser integration, since they all add an IPC layer. I would group these features like so:
(Technically, browser integration is also rather useless without network access, but as I understand the network access isn't done by KPXC itself.) |
Browser Integration still requires including networking to the code (even if it doesn't make any connections outside, it creates local sockets), so maybe it wouldn't fit to "no networking" category. |
a42b85d
to
304d3b7
Compare
|
It absolutely does not require network access. KeeShare is going to be rebranded as simply "Sharing" when it gets refactored. Don't get hung up on the Basic/Advanced wording, thought of a couple different buckets but they were all too much. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #11003 +/- ##
===========================================
- Coverage 63.05% 62.92% -0.13%
===========================================
Files 362 361 -1
Lines 37727 37545 -182
===========================================
- Hits 23787 23624 -163
+ Misses 13940 13921 -19 ☔ View full report in Codecov by Sentry. |
30d2a5d
to
2569be3
Compare
* make (>= 4.2) or ninja (>= 1.10) | ||
* g++ (>= 4.9) or clang++ (>= 6.0) | ||
* g++ (>= 9.3.0) or clang++ (>= 10.0) | ||
* asciidoctor (>= 2.0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we also mention the minimum versions of required libraries (e.g. Qt, Botan) in here?
mkdir build | ||
cd build | ||
cmake -DWITH_XC_ALL=ON .. | ||
cmake .. | ||
make |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or:
mkdir build | |
cd build | |
cmake -DWITH_XC_ALL=ON .. | |
cmake .. | |
make | |
cmake -B ./build | |
cmake --build ./build |
This way it also works with alternative "generators", such as Ninja instead of Make.
make | ||
``` | ||
|
||
If you have `vcpkg` installed, add `-DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake` to the `cmake` command to automatically download and install all required build and runtime dependencies locally to your build directory before compiling KeePassXC. Using `vcpkg` is the preferred way to install dependencies on macOS and required on Windows if using the MSVC toolchain. | ||
|
||
For more detailed build instructions for each platform, please refer to the [GitHub wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That wiki page has a lot of info duplicated. It would be nice to standardise on a single place.
@@ -105,10 +103,6 @@ EntryPreviewWidget::EntryPreviewWidget(QWidget* parent) | |||
connect(m_ui->groupTabWidget, SIGNAL(tabBarClicked(int)), SLOT(updateTabIndexes()), Qt::QueuedConnection); | |||
|
|||
setFocusProxy(m_ui->entryTabWidget); | |||
|
|||
#if !defined(WITH_XC_KEESHARE) | |||
removeTab(m_ui->groupTabWidget, m_ui->groupShareTab); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The removeTab
function can now be removed.
* Remove individual feature flags in favor of a single `KPXC_MINIMAL` flag that removes advanced features from the build. Basic features are no longer guarded by feature flags. * Basic features: Auto-Type, Yubikey, KeeShare * Advanced features include: Browser (and passkeys), SSH Agent, and Secret Service * Networking, Documentation, and Update Checking remain as feature flags to accommodate various distro requirements. This change also cleans up the main CMakeLists.txt by re-arranging some content and placing macros into a dedicated include file. The minimum CMake version was bumped to 3.16.0 to conform to our minimum Ubuntu support of Focal (20.04). This also allows us to default to C++20, we fall back to C++17 for Qt versions less than 5.15.0 due to lack of support. Lastly this change removes the KEEPASSXC_BUILD_TYPE="PreRelease" which is never used. We only support "Snapshot" and "Release" now.
Co-authored-by: Carlo Teubner <carlo@cteubner.net>
e983223
to
76624f6
Compare
KPXC_MINIMAL
flag that removes advanced features from the build. Basic features are no longer guarded by feature flags.This change also cleans up the main CMakeLists.txt by re-arranging some content and placing macros into a dedicated include file. The minimum CMake version was bumped to 3.16.0 to conform to our minimum Ubuntu support of Focal (20.04). This also allows us to default to C++20, we fall back to C++17 for Qt versions less than 5.15.0 due to lack of support.
Lastly this change removes the KEEPASSXC_BUILD_TYPE="PreRelease" which is never used. We only support "Snapshot" and "Release" now.
Testing strategy
Tested locally and with existing CI
Type of change