Skip to content

Conversation

@alexjba
Copy link
Contributor

@alexjba alexjba commented Dec 10, 2025

What does the PR do

Add https://github.com/status-im/status-keycard-qt lib as a keycard integration option.

This commit adds the status-keycard-qt submodule and updates the build configuration to support it.

In this initial version the status-keycard-qt option can be enabled by using the USE_STATUS_KEYCARD_QT flag.

  • desktop: USE_STATUS_KEYCARD_QT will enable/disable the qt implementation. By default the go version is used
  • ios: USE_STATUS_KEYCARD_QT will enable/disable the qt implementation. On IOS the developer experience is quite bad and I've tried not to make it worse here. When compiling the app with keycard support a paid apple developer account is needed to sign the app. For this reason the USE_STATUS_KEYCARD_QT is disabled by default in the mobile makefile. People with apple accounts can use the DEVELOPMENT_TEAM flag to configure the signing before running the app.
  • android: the qt implementation is enabled by default. Cannot be disabled by USE_STATUS_KEYCARD_QT

Acceptance criteria

  • The app compiles on all platforms
  • The keycard feature is not working properly when using the qt lib (specific fixes in the following PRs)

NOTE: Tests can be done in the final PR #19549

This commit adds the status-keycard-qt submodule and updates the build configuration to support it.

In this initial version the `status-keycard-qt` option can be enabled by using the `USE_STATUS_KEYCARD_QT` flag.
- desktop: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation. By default the go version is used
- ios: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation
- android: the qt implementation is enabled by default
@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~15 min 🔹 8bb7613 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~16 min 🔹 450a51f 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

✔️ status-desktop/prs/android/arm64/package/PR-19545#3 🔹 ~11 min 🔹 77b27f38 🔹 📦 android/arm64 package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~32 min 🔹 adadfcd 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/prs/android/arm64/package/PR-19545#4 🔹 ~11 min 🔹 e6338a7a 🔹 📦 android/arm64 package

@status-im-auto
Copy link
Member

✔️ status-app/prs/linux/x86_64/tests-ui/PR-19545#4 🔹 ~1 hr 6 min 🔹 7e8edd3 🔹 📦 tests/ui package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

status-im-auto commented Dec 12, 2025

Jenkins Builds

Click to see older builds (45)
Commit #️⃣ Finished (UTC) Duration Platform Result
8bb7613 #1 2025-12-10 08:25:18 ~8 min android/arm64 📄log
8bb7613 #1 2025-12-10 08:27:35 ~10 min ios/aarch64 📄log
8bb7613 #1 2025-12-10 08:27:52 ~10 min macos/aarch64-nwaku 📄log
✔️ 8bb7613 #1 2025-12-10 08:29:00 ~11 min tests/nim 📄log
✔️ 8bb7613 #1 2025-12-10 08:30:49 ~13 min tests/ui 📄log
✔️ 8bb7613 #1 2025-12-10 08:34:49 ~17 min macos/aarch64 🍎dmg
✔️ 8bb7613 #1 2025-12-10 08:37:44 ~20 min linux/x86_64 📦tgz
✔️ 8bb7613 #1 2025-12-10 08:42:01 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 8bb7613 pr19545 2025-12-10 08:53:15 ~15 min tests/e2e 📊rpt
450a51f #2 2025-12-10 09:03:18 ~10 min macos/aarch64-nwaku 📄log
✔️ 450a51f #2 2025-12-10 09:03:54 ~11 min android/arm64 🤖apk 📲
✖️ 450a51f #2 2025-12-10 09:04:46 ~12 min ios/aarch64 📱ipa
✔️ 450a51f #2 2025-12-10 09:04:53 ~12 min tests/nim 📄log
✔️ 450a51f #2 2025-12-10 09:06:57 ~14 min tests/ui 📄log
✔️ 450a51f #2 2025-12-10 09:09:57 ~17 min macos/aarch64 🍎dmg
✔️ 450a51f #2 2025-12-10 09:13:55 ~21 min linux/x86_64 📦tgz
✔️ 450a51f #2 2025-12-10 09:16:59 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 450a51f #2 2025-12-10 09:24:27 ~31 min windows/x86_64 💿exe
✖️ 450a51f PR19545 2025-12-10 09:25:39 ~1 min tests/e2e-windows 📊rpt
✔️ 450a51f pr19545 2025-12-10 09:30:59 ~16 min tests/e2e 📊rpt
adadfcd #3 2025-12-10 16:04:33 ~10 min macos/aarch64-nwaku 📄log
✔️ adadfcd #3 2025-12-10 16:06:03 ~12 min tests/nim 📄log
✖️ adadfcd #3 2025-12-10 16:06:34 ~12 min ios/aarch64 📱ipa
✔️ adadfcd #3 2025-12-10 16:07:46 ~13 min tests/ui 📄log
✔️ adadfcd #3 2025-12-10 16:12:54 ~18 min macos/aarch64 🍎dmg
✔️ adadfcd #3 2025-12-10 16:15:35 ~21 min linux/x86_64 📦tgz
✔️ adadfcd #3 2025-12-10 16:17:31 ~23 min linux/x86_64-nwaku 📦tgz
✔️ adadfcd #3 2025-12-10 16:29:15 ~35 min windows/x86_64 💿exe
✔️ adadfcd pr19545 2025-12-10 16:48:12 ~32 min tests/e2e 📊rpt
✔️ adadfcd PR19545 2025-12-10 16:52:31 ~23 min tests/e2e-windows 📊rpt
✔️ 77b27f38 #3 2025-12-10 16:05:02 ~11 min android/arm64 🤖apk 📲
✔️ e6338a7a #4 2025-12-10 21:27:23 ~11 min android/arm64 🤖apk 📲
91781ca3 #5 2025-12-11 09:25:47 ~56 min android/arm64 📄log
✖️ 7e8edd3 #4 2025-12-11 09:46:56 ~1 hr 3 min tests/nim 📄log
✔️ 7e8edd3 #4 2025-12-11 09:52:38 ~1 hr 6 min tests/ui 📄log
a39695ae #6 2025-12-11 12:51:31 ~7 min android/arm64 📄log
✔️ f23b896 #5 2025-12-11 12:54:26 ~10 min tests/nim 📄log
f23b896 #5 2025-12-11 12:56:15 ~12 min macos/aarch64-nwaku 📄log
f23b896 #5 2025-12-11 12:56:22 ~12 min windows/x86_64 📄log
✔️ f23b896 #5 2025-12-11 12:58:32 ~14 min tests/ui 📄log
✖️ f23b896 #5 2025-12-11 13:00:25 ~16 min ios/aarch64 📱ipa
✖️ f23b896 #5 2025-12-11 13:05:41 ~21 min linux/x86_64 📦tgz
✔️ f23b896 #5 2025-12-11 13:06:59 ~23 min linux/x86_64-nwaku 📦tgz
✔️ f23b896 #5 2025-12-11 13:09:24 ~25 min macos/aarch64 🍎dmg
a9a33001 #7 2025-12-12 05:26:59 ~8 min android/arm64 📄log
Commit #️⃣ Finished (UTC) Duration Platform Result
3ec03209 #8 2025-12-13 05:27:28 ~8 min android/arm64 📄log
✔️ 3c345d3c #10 2025-12-17 05:31:13 ~12 min android/arm64 🤖apk 📲

NIM_FLAGS+=(-d:debug -d:nimTypeNames)
else
NIM_FLAGS+=(-d:release -d:lto -d:production)
fi
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just realized it would be nice to build in a different dir for debug/release; wdyt?

QT_MAJOR=$(QT_MAJOR) \
DEVELOPMENT_TEAM="$(DEVELOPMENT_TEAM)" \
FLAG_KEYCARD_ENABLED=$(FLAG_KEYCARD_ENABLED) \
$(APP_SCRIPT) $(HANDLE_OUTPUT)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those 2 if/else branches are the same :)

KEYCARD_LIB := $(STATUSKEYCARD_QT_LIB)
KEYCARD_LIBDIR := $(STATUSKEYCARD_QT_LIBDIR)
KEYCARD_LINKNAME := status-keycard-qt
KEYCARD_DYLIB_NAME := libstatus-keycard-qt.dylib
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That looks like a macOS specific libname

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Linux will look like "libstatus-keycard-qt.so"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should use a variant of STATUSKEYCARD_QT_LIB?

KEYCARD_LIB := $(STATUSKEYCARDGO)
KEYCARD_LIBDIR := $(STATUSKEYCARDGO_LIBDIR)
KEYCARD_LINKNAME := keycard
KEYCARD_DYLIB_NAME := libkeycard.dylib
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here


# Allow using local status-keycard-qt for development
STATUS_KEYCARD_QT_DIR ?= vendor/status-keycard-qt
KEYCARD_QT ?= ""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this variable supposed to do/contain?

## status-keycard-qt (Qt/C++ based keycard library)
##

# Allow using local status-keycard-qt for development
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to document this; ie how to build the desktop client with this new lib (BUILDING.md)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants