From d3b8917a04a95bc21a28d8fd09b757222bc33fb1 Mon Sep 17 00:00:00 2001 From: Alex Jbanca Date: Wed, 1 Jul 2026 10:52:34 +0300 Subject: [PATCH] chore: Drop DOtherSide + Move monitoring to statusq --- .gitmodules | 4 - BUILDING.md | 2 +- Makefile | 100 +++---------------------- docker-linux-app-image.sh | 2 +- docs/architecture.md | 6 +- docs/profiling-mobile.md | 5 +- mobile/ContainerBuilds.mk | 2 +- mobile/DEV_SETUP.md | 1 - mobile/Makefile | 18 +---- mobile/scripts/Common.mk | 6 -- mobile/scripts/buildDOtherSide.sh | 50 ------------- mobile/scripts/buildNimStatusClient.sh | 2 +- mobile/wrapperApp/Status.pro | 3 +- src/nim_status_client.nim | 8 ++ src/statusq_bridge.nim | 5 ++ ui/StatusQ/CMakeLists.txt | 10 +++ ui/StatusQ/src/externc.cpp | 22 ++++++ ui/nim-status-client.pro | 3 - vendor/DOtherSide | 1 - 19 files changed, 70 insertions(+), 180 deletions(-) delete mode 100755 mobile/scripts/buildDOtherSide.sh delete mode 160000 vendor/DOtherSide diff --git a/.gitmodules b/.gitmodules index ef2524a52e..3eda90cf86 100644 --- a/.gitmodules +++ b/.gitmodules @@ -102,10 +102,6 @@ [submodule "vendor/nim-taskpools"] path = vendor/nim-taskpools url = https://github.com/status-im/nim-taskpools.git -[submodule "vendor/DOtherSide"] - path = vendor/DOtherSide - url = https://github.com/status-im/dotherside.git - [submodule "mobile/vendors/openssl"] path = mobile/vendors/openssl url = https://github.com/openssl/openssl diff --git a/BUILDING.md b/BUILDING.md index 1712a7164c..f4a662ce32 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -327,7 +327,7 @@ The following environment variables can be used to customize the build: - NIM_SDS_SOURCE_DIR (path) - Point the build system to a local nim-sds folder. Defaults to `$(GIT_ROOT)/../nim-sds` - PRODUCTION_PARAMETERS (string) - Configure the production arguments for nim compilation. Defaults to `-d:production` - QMAKE (path to executable) - Point the build system to a different qt installation. Defaults to env configuration -- QML_DEBUG (true,false) - Enable qml debugger and profiler. Needs DOtherSide recompilation. Defaults to `false` +- QML_DEBUG (true,false) - Enable qml debugger and profiler. Defaults to `false` - QML_DEBUG_PORT (number) - Configure the qml debugger port. Defaults to `49152` - QT_ARCH (string) - Configure the Qt architecture for macOS cross-compilation. Can be used to compile Intel builds on ARM64 OS. Defaults to `$(shell uname -m)` - REBUILD_NIM (true,false) - Force nim recompilation diff --git a/Makefile b/Makefile index 71a2de85b3..917733f7d5 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,6 @@ GIT_ROOT ?= $(shell git rev-parse --show-toplevel 2>/dev/null || echo .) mobile-build \ mobile-clean \ mobile-profile \ - mobile-profile-mode-check \ flatpak \ flatpak-install \ flatpak-run \ @@ -202,14 +201,14 @@ QML_DEBUG_PORT ?= 49152 ifneq ($(QML_DEBUG), false) COMMON_CMAKE_BUILD_TYPE=Debug - DOTHERSIDE_CMAKE_CONFIG_PARAMS := -DQML_DEBUG_PORT=$(QML_DEBUG_PORT) else COMMON_CMAKE_BUILD_TYPE=Release endif MONITORING ?= false ifneq ($(MONITORING), false) - DOTHERSIDE_CMAKE_CONFIG_PARAMS += -DMONITORING:BOOL=ON -DMONITORING_QML_ENTRY_POINT:STRING="/../monitoring/Main.qml" + STATUSQ_CMAKE_CONFIG_PARAMS += -DMONITORING:BOOL=ON -DMONITORING_QML_ENTRY_POINT:STRING="/../monitoring/Main.qml" + NIM_PARAMS += -d:monitoring endif # where Qt is installed, depends on the `QMAKE` path @@ -218,8 +217,6 @@ QT_INSTALL_PREFIX := $(shell $(QMAKE) -query QT_INSTALL_PREFIX 2>/dev/null) QT_VERSION := $(shell $(QMAKE) -query QT_VERSION 2>/dev/null) # referenced in android/qt6/build.gradle export QT_ANDROID_DIR := $(QT_INSTALL_PREFIX)/src/android/java -# separate DOS build dir, per Qt version -DOTHERSIDE_BUILD_PATH := vendor/DOtherSide/build/Qt$(QT_VERSION) # separate StatusQ/storybook/... build dirs, per Qt version COMMON_CMAKE_CONFIG_PARAMS := -DCMAKE_PREFIX_PATH=$(QT_INSTALL_PREFIX) @@ -250,8 +247,6 @@ ifneq ($(mkspecs),win32) else NIM_PARAMS += --passL:"-L$(QT_LIBDIR)" endif - DOTHERSIDE_LIBFILE := $(DOTHERSIDE_BUILD_PATH)/lib/libDOtherSideStatic.a - NIM_PARAMS += --passL:"$(DOTHERSIDE_LIBFILE)" QT_SEAQT_EXTRA_LIBS = $(shell PKG_CONFIG_PATH="$(QT_PCFILEDIR)" PKG_CONFIG_PREFIX_OVERRIDE="Qt*=$(QT_PC_PREFIX)" $(QT_PC_PKGCONFIG) --libs Qt"$(QT_MAJOR_VERSION)"Core Qt"$(QT_MAJOR_VERSION)"Qml Qt"$(QT_MAJOR_VERSION)"Gui Qt"$(QT_MAJOR_VERSION)"Quick Qt"$(QT_MAJOR_VERSION)"QuickControls2 Qt"$(QT_MAJOR_VERSION)"Widgets Qt"$(QT_MAJOR_VERSION)"Svg Qt"$(QT_MAJOR_VERSION)"Multimedia Qt"$(QT_MAJOR_VERSION)"WebView Qt"$(QT_MAJOR_VERSION)"WebChannel) else WIN_SYS_LIBS := --passL:"-luser32" @@ -303,7 +298,7 @@ INCLUDE_DEBUG_SYMBOLS ?= false ifeq ($(INCLUDE_DEBUG_SYMBOLS),true) # We need `-d:debug` to get Nim's default stack traces NIM_PARAMS += -d:debug - # Enable debugging symbols in DOtherSide, in case we need GDB backtraces + # Enable debugging symbols, in case we need GDB backtraces CFLAGS += -g CXXFLAGS += -g RCC_PARAMS = --no-compress @@ -359,6 +354,7 @@ $(STATUSQ_CMAKE_CACHE): | check-qt-dir -DSTATUSQ_BUILD_SANITY_CHECKER=OFF \ -DSTATUSQ_BUILD_TESTS=OFF \ $(COMMON_CMAKE_CONFIG_PARAMS) \ + $(STATUSQ_CMAKE_CONFIG_PARAMS) \ -B $(STATUSQ_BUILD_PATH) \ -S $(STATUSQ_SOURCE_PATH) \ -Wno-dev \ @@ -486,59 +482,6 @@ storybook-clean: echo -e "\033[92mCleaning:\033[39m Storybook" rm -rf $(STORYBOOK_BUILD_PATH) -## -## DOtherSide -## - -ifneq ($(mkspecs),win32) - DOTHERSIDE_CMAKE_CONFIG_PARAMS += -DENABLE_DYNAMIC_LIBS=OFF -DENABLE_STATIC_LIBS=ON -# NIM_PARAMS += -else - DOTHERSIDE_LIBFILE := $(DOTHERSIDE_BUILD_PATH)/lib/$(COMMON_CMAKE_BUILD_TYPE)/DOtherSide.dll - DOTHERSIDE_CMAKE_CONFIG_PARAMS += -DENABLE_DYNAMIC_LIBS=ON -DENABLE_STATIC_LIBS=OFF - ifeq ($(mkspecs),win32) - # The MSVC linker (lld-link) links against the import library, not the .dll - # itself (passing the .dll gives "bad file type"). cmake emits DOtherSide.lib - # next to the .dll; DOTHERSIDE_LIBFILE stays the .dll for packaging/runtime. - NIM_PARAMS += -L:$(DOTHERSIDE_BUILD_PATH)/lib/$(COMMON_CMAKE_BUILD_TYPE)/DOtherSide.lib - else - NIM_PARAMS += -L:$(DOTHERSIDE_LIBFILE) - endif -endif - -DOTHERSIDE_SOURCE_PATH := vendor/DOtherSide -DOTHERSIDE_CMAKE_CACHE := $(DOTHERSIDE_BUILD_PATH)/CMakeCache.txt -DOTHERSIDE_LIBDIR := $(shell pwd)/$(shell dirname "$(DOTHERSIDE_LIBFILE)") -export DOTHERSIDE_LIBDIR - -$(DOTHERSIDE_CMAKE_CACHE): | deps - echo -e "\033[92mConfiguring:\033[39m DOtherSide" - cmake \ - -DCMAKE_BUILD_TYPE=$(COMMON_CMAKE_BUILD_TYPE) \ - -DENABLE_DOCS=OFF \ - -DENABLE_TESTS=OFF \ - $(COMMON_CMAKE_CONFIG_PARAMS) \ - $(DOTHERSIDE_CMAKE_CONFIG_PARAMS) \ - -B $(DOTHERSIDE_BUILD_PATH) \ - -S $(DOTHERSIDE_SOURCE_PATH) \ - -Wno-dev \ - $(HANDLE_OUTPUT) - -dotherside-configure: | $(DOTHERSIDE_CMAKE_CACHE) - -dotherside-build: | dotherside-configure - echo -e "\033[92mBuilding:\033[39m DOtherSide" - cmake \ - --build $(DOTHERSIDE_BUILD_PATH) \ - --config $(COMMON_CMAKE_BUILD_TYPE) \ - $(HANDLE_OUTPUT) - -dotherside-clean: - echo -e "\033[92mCleaning:\033[39m DOtherSide" - rm -rf $(DOTHERSIDE_BUILD_PATH) - -dotherside: | dotherside-build - ## ## status-go ## @@ -787,7 +730,7 @@ $(NIM_STATUS_CLIENT): NIM_PARAMS += $(RESOURCES_LAYOUT) ifneq ($(mkspecs),win32) $(NIM_STATUS_CLIENT): NIM_PARAMS += --passL:"$(QT_SEAQT_EXTRA_LIBS)" endif -$(NIM_STATUS_CLIENT): $(NIM_SOURCES) | statusq dotherside check-qt-dir $(STATUSGO) $(NIMSDS_LIBFILE) $(STATUSKEYCARD_QT_LIB) $(QRCODEGEN) rcc deps +$(NIM_STATUS_CLIENT): $(NIM_SOURCES) | statusq check-qt-dir $(STATUSGO) $(NIMSDS_LIBFILE) $(STATUSKEYCARD_QT_LIB) $(QRCODEGEN) rcc deps echo -e $(BUILD_MSG) "$@" $(ENV_SCRIPT) nim c $(NIM_PARAMS) \ --mm:orc \ @@ -814,7 +757,7 @@ ifeq ($(mkspecs),macx) bin/nim_status_client endif -nim_status_client: force-rebuild-status-go statusq dotherside $(NIM_STATUS_CLIENT) +nim_status_client: force-rebuild-status-go statusq $(NIM_STATUS_CLIENT) ifdef IN_NIX_SHELL APPIMAGE_TOOL := appimagetool @@ -994,7 +937,7 @@ $(STATUS_CLIENT_EXE): compile_windows_resources nim_status_client nim_windows_la cp bin/nim_windows_launcher.exe $(OUTPUT)/Status.exe rcedit $(OUTPUT)/bin/Status.exe --set-icon $(OUTPUT)/resources/status.ico rcedit $(OUTPUT)/Status.exe --set-icon $(OUTPUT)/resources/status.ico - cp $(DOTHERSIDE_LIBFILE) $(STATUSGO) $(STATUSKEYCARD_QT_LIB) $(NIMSDS_LIBFILE) $(STATUSQ_LIB_PATH)/* $(STATUSQ_BUILD_PATH)/bin/$(COMMON_CMAKE_BUILD_TYPE)/* $(OUTPUT)/bin/ + cp $(STATUSGO) $(STATUSKEYCARD_QT_LIB) $(NIMSDS_LIBFILE) $(STATUSQ_LIB_PATH)/* $(STATUSQ_BUILD_PATH)/bin/$(COMMON_CMAKE_BUILD_TYPE)/* $(OUTPUT)/bin/ cp "$(shell which libstdc++-6.dll)" $(OUTPUT)/bin/ cp "$(shell which libgcc_s_seh-1.dll)" $(OUTPUT)/bin/ cp "$(shell which libwinpthread-1.dll)" $(OUTPUT)/bin/ @@ -1002,7 +945,7 @@ $(STATUS_CLIENT_EXE): compile_windows_resources nim_status_client nim_windows_la cp "$(shell which libssl-3-x64.dll)" $(OUTPUT)/bin/ echo -e $(BUILD_MSG) "deployable folder" VCINSTALLDIR="$(VCINSTALLDIR)" windeployqt --compiler-runtime --qmldir ui --release \ - tmp/windows/dist/Status/bin/DOtherSide.dll + tmp/windows/dist/Status/bin/Status.exe mv tmp/windows/dist/Status/bin/vc_redist.x64.exe tmp/windows/dist/Status/vendor/ cp status.iss $(OUTPUT)/status.iss cp $(QT_INSTALL_PREFIX)/plugins/tls/qopensslbackend.dll $(OUTPUT)/bin/plugins/tls/ @@ -1048,7 +991,7 @@ zip-windows: check-pkg-target-windows $(STATUS_CLIENT_7Z) clean-destdir: rm -rf bin/* -clean: | clean-common clean-destdir statusq-clean status-go-clean status-keycard-qt-clean dotherside-clean storybook-clean clean-translations +clean: | clean-common clean-destdir statusq-clean status-go-clean status-keycard-qt-clean storybook-clean clean-translations rm -rf bottles/* pkg/* tmp/* + $(MAKE) -C vendor/QR-Code-generator/c/ --no-print-directory clean @@ -1090,7 +1033,6 @@ run-windows: STATUS_RC_FILE = status-dev.rc run-windows: compile_windows_resources nim_status_client echo -e "\033[92mCopying DLLs to bin/\033[39m" cp -f -R $(STATUSQ_BUILD_PATH)/bin/$(COMMON_CMAKE_BUILD_TYPE)/* ./bin/ - cp -f $(DOTHERSIDE_LIBFILE) ./bin/ cp -f $(STATUSGO_LIBDIR)/libstatus.dll ./bin/ cp -f $(STATUSKEYCARD_QT_LIB) ./bin/ cp -f $(NIMSDS_LIBDIR)/libsds.dll ./bin/ @@ -1113,7 +1055,7 @@ nim-test-run/test/nim/url_scheme_event_test.nim: | statusq ifneq ($(mkspecs),win32) nim-test-run/%: NIM_PARAMS += --passL:"$(QT_SEAQT_EXTRA_LIBS)" endif -nim-test-run/%: | qt-pkgconfig dotherside $(STATUSGO) $(QRCODEGEN) +nim-test-run/%: | qt-pkgconfig $(STATUSGO) $(QRCODEGEN) LD_LIBRARY_PATH="$(QT_LIBDIR)":"$(NIMSDS_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(EXTRA_LIBS_PATH)":"$(LD_LIBRARY_PATH)" $(ENV_SCRIPT) \ nim c $(NIM_PARAMS) $(NIM_EXTRA_PARAMS) --mm:refc --passL:"-L$(STATUSGO_LIBDIR)" --passL:"-lstatus" --passL:"$(QRCODEGEN)" -r $(subst nim-test-run/,,$@) @@ -1126,29 +1068,11 @@ endef export PATH := $(call qmkq,QT_INSTALL_BINS):$(call qmkq,QT_HOST_BINS):$(call qmkq,QT_HOST_LIBEXECS):$(PATH) export QTDIR := $(call qmkq,QT_INSTALL_PREFIX) -# Mobile profile-mode tracking: QML_DEBUG_PORT is baked into libDOtherSide.so -# at compile time, so toggling profile mode requires a DOtherSide rebuild. -# A sentinel file records the last build's mode and forces clean-dotherside -# whenever it disagrees with the desired mode. -MOBILE_PROFILE_SENTINEL := mobile/build/.profile-mode - -mobile-run: MOBILE_PROFILE_DESIRED := 0 -mobile-profile: MOBILE_PROFILE_DESIRED := 1 - -mobile-profile-mode-check: - @mkdir -p $(dir $(MOBILE_PROFILE_SENTINEL)) - @current=$$(cat $(MOBILE_PROFILE_SENTINEL) 2>/dev/null || echo 0); \ - if [ "$$current" != "$(MOBILE_PROFILE_DESIRED)" ]; then \ - echo -e "\033[92mProfile mode change\033[39m ($$current -> $(MOBILE_PROFILE_DESIRED)): cleaning DOtherSide"; \ - $(MAKE) -C mobile clean-dotherside; \ - fi - @echo $(MOBILE_PROFILE_DESIRED) > $(MOBILE_PROFILE_SENTINEL) - -mobile-run: qt-pkgconfig deps-common mobile-profile-mode-check +mobile-run: qt-pkgconfig deps-common echo -e "\033[92mRunning:\033[39m mobile app" $(MAKE) -C mobile run DEBUG=1 GRADLE_TARGETS=assembleDebug -mobile-profile: qt-pkgconfig deps-common mobile-profile-mode-check +mobile-profile: qt-pkgconfig deps-common ifeq ($(mkspecs),ios) @echo "TODO: iOS profiling is not implemented yet"; exit 1 else diff --git a/docker-linux-app-image.sh b/docker-linux-app-image.sh index 489d29eb06..4c2b37bf0b 100755 --- a/docker-linux-app-image.sh +++ b/docker-linux-app-image.sh @@ -4,7 +4,7 @@ cp -R . ~/status-desktop cd ~/status-desktop -git clean -dfx && rm -rf vendor/* && git checkout vendor/DOtherSide && make -j4 V=1 update +git clean -dfx && rm -rf vendor/* && make -j4 V=1 update make V=1 pkg # Make AppImage build accessible to the docker host diff --git a/docs/architecture.md b/docs/architecture.md index fe3fb3dbb1..a24cdd274b 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -15,8 +15,8 @@ We do not use servers. [status-go](https://github.com/status-im/status-go) is wh ```mermaid flowchart LR qml["Frontend (QML)"] --> statusq(["StatusQ"]) - qml --> dotherside{{"DOtherside"}} - dotherside --> nimqml{{"NimQML"}} + qml --> seaqt{{"nimqml-seaqt"}} + seaqt --> nimqml{{"NimQML"}} nimqml --> nim["Middleware (Nim)"] nim --> statusgo{{"Backend (status-go)"}} nim --> nimstatusgo{{"nim-status-go"}} @@ -33,7 +33,7 @@ flowchart LR end click qml "https://github.com/status-im/status-app/tree/master/ui" "Link to the UI folder containing the QML code" click statusq "https://github.com/status-im/status-app/tree/master/ui/StatusQ" "Link to the StatusQ folder" - click dotherside "https://github.com/status-im/dotherside" "Link to the DOtherSide repo" + click seaqt "https://github.com/status-im/nimqml-seaqt" "Link to the nimqml-seaqt repo" click nimqml "https://github.com/status-im/nimqml" "Link to the NimQML repo" click nim "https://github.com/status-im/status-app/tree/master/src" "Link to the Nim code" click statusgo "https://github.com/status-im/status-go" "Link to the Status-Go repo" diff --git a/docs/profiling-mobile.md b/docs/profiling-mobile.md index e5369d7fa2..b6435b5010 100644 --- a/docs/profiling-mobile.md +++ b/docs/profiling-mobile.md @@ -11,7 +11,7 @@ iOS profiling and Android Studio "Go to source" are not implemented yet. | Layer | Change | | ---------- | ------------------------------------------------------------------- | -| DOtherSide | Engine binds + blocks on `QML_DEBUG_PORT` (default `49152`). | +| Qt engine | Engine binds + blocks on `QML_DEBUG_PORT` (default `49152`). | | Nim | `-d:release -d:nimTypeNames` (so Android Studio resolves Nim frames). | | adb | `adb forward tcp:$PORT tcp:$PORT` set up automatically. | | Gradle | `profile` build type: `debuggable=false`, `profileable=true`. | @@ -35,5 +35,4 @@ Override the port with `QML_DEBUG_PORT=NNNN make mobile-profile`. You can run both profilers concurrently — attach Android Studio first while the app is still blocked, then release with the QML side. -To switch back to a normal run, just `make mobile-run`. The Makefile -auto-rebuilds DOtherSide when the mode flips. +To switch back to a normal run, just `make mobile-run`. diff --git a/mobile/ContainerBuilds.mk b/mobile/ContainerBuilds.mk index e95da0cdfc..4e5ecd25fc 100644 --- a/mobile/ContainerBuilds.mk +++ b/mobile/ContainerBuilds.mk @@ -29,7 +29,7 @@ PACKAGE_TYPE?=apk # Verbosity level (0-3) V?=0 -$(TARGET): $(STATUS_DESKTOP_NIM_FILES) $(STATUS_DESKTOP_UI_FILES) $(STATUS_Q_FILES) $(STATUS_Q_UI_FILES) $(STATUS_GO_FILES) $(DOTHERSIDE_FILES) $(OPENSSL_FILES) $(QRCODEGEN_FILES) $(WRAPPER_APP_FILES) +$(TARGET): $(STATUS_DESKTOP_NIM_FILES) $(STATUS_DESKTOP_UI_FILES) $(STATUS_Q_FILES) $(STATUS_Q_UI_FILES) $(STATUS_GO_FILES) $(OPENSSL_FILES) $(QRCODEGEN_FILES) $(WRAPPER_APP_FILES) @echo "Building $(TARGET) for architecture $(ARCH) using Docker image $(DOCKER_IMAGE)" @mkdir -p $(BIN_PATH) @docker run --rm \ diff --git a/mobile/DEV_SETUP.md b/mobile/DEV_SETUP.md index 56f88488c0..05f3399c52 100644 --- a/mobile/DEV_SETUP.md +++ b/mobile/DEV_SETUP.md @@ -165,7 +165,6 @@ The build system uses several environment variables to control the build process ### Key Components - Status Go - StatusQ -- DOtherSide - OpenSSL - QRCodeGen - Nim Status Client diff --git a/mobile/Makefile b/mobile/Makefile index 10ec7248d3..e4ff6aa99e 100644 --- a/mobile/Makefile +++ b/mobile/Makefile @@ -24,7 +24,6 @@ iosdevice: default # dependencies statusq: clean-statusq $(STATUS_Q_LIB) -dotherside: clean-dotherside $(DOTHERSIDE_LIB) openssl: clean-openssl $(OPENSSL_LIB) qrcodegen: clean-qrcodegen $(QRCODEGEN_LIB) status-keycard-qt: clean-status-keycard-qt $(STATUS_KEYCARD_QT_LIB) @@ -86,11 +85,6 @@ $(STATUS_Q_LIB): $(STATUS_Q_FILES) $(STATUS_Q_SCRIPT) $(STATUS_Q_UI_FILES) @STATUSQ=$(STATUSQ) QT_MAJOR=$(QT_MAJOR) LIB_SUFFIX=$(LIB_SUFFIX) LIB_EXT=$(LIB_EXT) $(STATUS_Q_SCRIPT) $(HANDLE_OUTPUT) @echo "StatusQ built $(STATUS_Q_LIB)" -$(DOTHERSIDE_LIB): $(DOTHERSIDE_FILES) $(DOTHERSIDE_SCRIPT) - @echo "Building DOtherSide" - @DOTHERSIDE=$(DOTHERSIDE) QT_MAJOR=$(QT_MAJOR) LIB_SUFFIX=$(LIB_SUFFIX) LIB_EXT=$(LIB_EXT) QML_DEBUG_PORT=$(QML_DEBUG_PORT) $(DOTHERSIDE_SCRIPT) $(HANDLE_OUTPUT) - @echo "DOtherSide built $(DOTHERSIDE_LIB)" - $(OPENSSL_LIB): $(OPENSSL_FILES) @echo "Building OpenSSL" @LIB_PATH=$(LIB_PATH) LIB_EXT=$(LIB_EXT) OPENSSL=$(OPENSSL) BUILD_DIR=$(BUILD_PATH) $(OPENSSL_SCRIPT) $(HANDLE_OUTPUT) @@ -115,7 +109,7 @@ ifeq ($(OS),android) $(NIM_STATUS_CLIENT_LIB): $(STATUS_GO_STUB_LIB) $(STATUS_GO_SERVICE_LIB) endif -$(NIM_STATUS_CLIENT_LIB): $(STATUS_DESKTOP_NIM_FILES) $(NIM_STATUS_CLIENT_SCRIPT) $(STATUS_DESKTOP_RCC) $(DOTHERSIDE_LIB) $(OPENSSL_LIB) $(STATUS_Q_LIB) $(QRCODEGEN_LIB) +$(NIM_STATUS_CLIENT_LIB): $(STATUS_DESKTOP_NIM_FILES) $(NIM_STATUS_CLIENT_SCRIPT) $(STATUS_DESKTOP_RCC) $(OPENSSL_LIB) $(STATUS_Q_LIB) $(QRCODEGEN_LIB) @echo "Building Status Desktop Lib" @STATUS_DESKTOP=$(STATUS_DESKTOP) \ LIB_SUFFIX=$(LIB_SUFFIX) \ @@ -133,7 +127,7 @@ $(NIM_STATUS_CLIENT_LIB): $(STATUS_DESKTOP_NIM_FILES) $(NIM_STATUS_CLIENT_SCRIPT @echo "Status Desktop Lib built $(NIM_STATUS_CLIENT_LIB)" # non-phony targets -$(TARGET): $(APP_SCRIPT) $(STATUS_GO_LIB) $(STATUS_Q_LIB) $(DOTHERSIDE_LIB) $(OPENSSL_LIB) $(QRCODEGEN_LIB) $(STATUS_KEYCARD_QT_LIB) $(NIM_STATUS_CLIENT_LIB) $(STATUS_DESKTOP_RCC) $(WRAPPER_APP_FILES) +$(TARGET): $(APP_SCRIPT) $(STATUS_GO_LIB) $(STATUS_Q_LIB) $(OPENSSL_LIB) $(QRCODEGEN_LIB) $(STATUS_KEYCARD_QT_LIB) $(NIM_STATUS_CLIENT_LIB) $(STATUS_DESKTOP_RCC) $(WRAPPER_APP_FILES) @echo "Building app" ifeq ($(OS),android) @STATUS_DESKTOP=$(STATUS_DESKTOP) \ @@ -222,7 +216,7 @@ endif all: $(TARGET) .PHONY: clean -clean: clean-statusq clean-dotherside clean-openssl clean-qrcodegen clean-status-keycard-qt clean-nim-status-client clean-status-desktop-rcc +clean: clean-statusq clean-openssl clean-qrcodegen clean-status-keycard-qt clean-nim-status-client clean-status-desktop-rcc @echo "Cleaning" @rm -rf $(ROOT_DIR)/bin $(ROOT_DIR)/build $(ROOT_DIR)/lib @@ -237,12 +231,6 @@ clean-statusq: @rm -rf $(STATUSQ)/build @make -C $(STATUS_DESKTOP) statusq-clean -.PHONY: clean-dotherside -clean-dotherside: - @rm -f $(DOTHERSIDE_LIB) - @rm -rf $(DOTHERSIDE)/build - @make -C $(STATUS_DESKTOP) dotherside-clean - .PHONY: clean-openssl clean-openssl: @rm -f $(OPENSSL_LIB) diff --git a/mobile/scripts/Common.mk b/mobile/scripts/Common.mk index 9c35dde729..4fa6d1fea9 100644 --- a/mobile/scripts/Common.mk +++ b/mobile/scripts/Common.mk @@ -30,7 +30,6 @@ WRAPPER_APP?=$(ROOT_DIR)/wrapperApp STATUS_DESKTOP?=$(ROOT_DIR)/vendors/status-desktop STATUSQ?=$(STATUS_DESKTOP)/ui/StatusQ STATUS_GO?=$(STATUS_DESKTOP)/vendor/status-go -DOTHERSIDE?=$(STATUS_DESKTOP)/vendor/DOtherSide OPENSSL?=$(ROOT_DIR)/vendors/openssl QRCODEGEN?=$(STATUS_DESKTOP)/vendor/QR-Code-generator/c STATUS_KEYCARD_QT?=$(STATUS_DESKTOP)/vendor/status-keycard-qt @@ -62,7 +61,6 @@ STATUS_DESKTOP_UI_FILES := $(shell find $(STATUS_DESKTOP)/ui -type f \( -iname ' STATUS_Q_FILES := $(shell find $(STATUSQ) -type f \( -iname '*.cpp' -o -iname '*.h' \) -not -iname '*.qrc' -not -iname '*.qml') STATUS_Q_UI_FILES := $(shell find $(STATUSQ) -type f \( -iname '*.qml' -o -iname '*.qrc' \)) STATUS_GO_FILES := $(shell find $(STATUS_GO) -type f \( -iname '*.go' \)) -DOTHERSIDE_FILES := $(shell find $(DOTHERSIDE) -type f \( -iname '*.cpp' -o -iname '*.h' \)) OPENSSL_FILES := $(shell find $(OPENSSL) -type f \( -iname '*.c' -o -iname '*.h' \)) QRCODEGEN_FILES := $(shell find $(QRCODEGEN) -type f \( -iname '*.c' -o -iname '*.h' \)) STATUS_KEYCARD_QT_FILES := $(shell find $(STATUS_KEYCARD_QT) -type f \( -iname '*.cpp' -o -iname '*.h' \) 2>/dev/null || echo "") @@ -73,7 +71,6 @@ STATUS_GO_SERVICE_GEN := $(STATUS_DESKTOP)/vendor/status-go/build/bin/statusgo_s # script files STATUS_Q_SCRIPT := $(SCRIPTS_PATH)/buildStatusQ.sh STATUS_GO_SCRIPT := $(SCRIPTS_PATH)/buildStatusGo.sh -DOTHERSIDE_SCRIPT := $(SCRIPTS_PATH)/buildDOtherSide.sh OPENSSL_SCRIPT := $(SCRIPTS_PATH)/buildOpenSSL.sh QRCODEGEN_SCRIPT := $(SCRIPTS_PATH)/buildQRCodeGen.sh STATUS_KEYCARD_QT_SCRIPT := $(SCRIPTS_PATH)/buildStatusKeycardQt.sh @@ -92,8 +89,5 @@ STATUS_DESKTOP_RCC := $(STATUS_DESKTOP)/ui/resources.qrc STATUS_GO_STUB_LIB := $(LIB_PATH)/libstatus_stub$(LIB_EXT) STATUS_GO_SERVICE_LIB := $(LIB_PATH)/libstatus_service$(LIB_EXT) ifeq ($(OS), ios) -DOTHERSIDE_LIB := $(LIB_PATH)/libDOtherSideStatic$(LIB_SUFFIX)$(LIB_EXT) LIB_ZXING := $(LIB_PATH)/libZXing$(LIB_SUFFIX)$(LIB_EXT) -else -DOTHERSIDE_LIB := $(LIB_PATH)/libDOtherSide$(LIB_SUFFIX)$(LIB_EXT) endif diff --git a/mobile/scripts/buildDOtherSide.sh b/mobile/scripts/buildDOtherSide.sh deleted file mode 100755 index 185aaf2325..0000000000 --- a/mobile/scripts/buildDOtherSide.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash -set -ef pipefail - -DOTHERSIDE=${DOTHERSIDE:-"../vendors/status-desktop/vendor/DOtherSide"} -LIB_DIR=${LIB_DIR} -LIB_SUFFIX=${LIB_SUFFIX:-""} -LIB_EXT=${LIB_EXT:-".a"} - -BASEDIR=$(dirname "$0") - -# Load common config variables -source "$BASEDIR/commonCmakeConfig.sh" - -BUILD_DIR="${DOTHERSIDE}/build/${OS}" - -if [[ "${LIB_EXT}" == ".so" ]]; then - ENABLE_DYNAMIC_LIBS=ON - ENABLE_STATIC_LIBS=OFF - DOTHERSIDE_LIB_NAME="libDOtherSide${LIB_SUFFIX}${LIB_EXT}" -fi - -if [[ "${LIB_EXT}" == ".a" ]]; then - ENABLE_DYNAMIC_LIBS=OFF - ENABLE_STATIC_LIBS=ON - DOTHERSIDE_LIB_NAME="libDOtherSideStatic${LIB_SUFFIX}${LIB_EXT}" -fi - -echo "Building DOtherSide for ${ARCH} using compiler: ${CC}" - -printf 'COMMON_CMAKE_CONFIG: %s\n' "${COMMON_CMAKE_CONFIG[@]}" - -EXTRA_CMAKE_ARGS=() -if [[ -n "${QML_DEBUG_PORT}" ]]; then - EXTRA_CMAKE_ARGS+=("-DQML_DEBUG_PORT=${QML_DEBUG_PORT}") -fi - -cmake -S "${DOTHERSIDE}" -B "${BUILD_DIR}" \ - "${COMMON_CMAKE_CONFIG[@]}" \ - "${EXTRA_CMAKE_ARGS[@]}" \ - -DENABLE_DOCS:BOOL=OFF \ - -DENABLE_DYNAMIC_LIBS:BOOL="${ENABLE_DYNAMIC_LIBS}" \ - -DENABLE_STATIC_LIBS:BOOL="${ENABLE_STATIC_LIBS}" \ - -DENABLE_TESTS:BOOL=OFF - -make -C "${BUILD_DIR}" -j "$(nproc)" - -DOTHERSIDE_LIB=$(find "${BUILD_DIR}" -name "${DOTHERSIDE_LIB_NAME}") - -mkdir -p "${LIB_DIR}" -cp "${DOTHERSIDE_LIB}" "${LIB_DIR}/${DOTHERSIDE_LIB_NAME}" \ No newline at end of file diff --git a/mobile/scripts/buildNimStatusClient.sh b/mobile/scripts/buildNimStatusClient.sh index 6119069e2c..7a42083bee 100755 --- a/mobile/scripts/buildNimStatusClient.sh +++ b/mobile/scripts/buildNimStatusClient.sh @@ -33,7 +33,7 @@ if [[ "$OS" == "ios" ]]; then PLATFORM_SPECIFIC=(--app:staticlib -d:ios --os:ios) else PLATFORM_SPECIFIC=(--app:lib --os:android -d:android -d:androidNDK -d:chronicles_sinks=textlines[logcat],textlines[file,nocolors] \ - --passL="-L$LIB_DIR" --passL="-lstatus_stub" --passL="-lStatusQ$LIB_SUFFIX" --passL="-lDOtherSide$LIB_SUFFIX" --passL="-lqrcodegen" --passL="-lssl_3" --passL="-lcrypto_3" --passL="-lstatus-keycard-qt" -d:taskpool) + --passL="-L$LIB_DIR" --passL="-lstatus_stub" --passL="-lStatusQ$LIB_SUFFIX" --passL="-lqrcodegen" --passL="-lssl_3" --passL="-lcrypto_3" --passL="-lstatus-keycard-qt" -d:taskpool) fi if [ -n "$USE_QML_SERVER" ]; then diff --git a/mobile/wrapperApp/Status.pro b/mobile/wrapperApp/Status.pro index 02f79e3bc7..2f68504f5d 100644 --- a/mobile/wrapperApp/Status.pro +++ b/mobile/wrapperApp/Status.pro @@ -49,7 +49,6 @@ android { $$PWD/../lib/$$LIB_PREFIX/libssl_3.so \ $$PWD/../lib/$$LIB_PREFIX/libcrypto_3.so \ $$PWD/../lib/$$LIB_PREFIX/libnim_status_client.so \ - $$PWD/../lib/$$LIB_PREFIX/libDOtherSide$$(LIB_SUFFIX)$$(LIB_EXT) \ $$PWD/../lib/$$LIB_PREFIX/libstatus_stub.so \ $$PWD/../lib/$$LIB_PREFIX/libStatusQ$$(LIB_SUFFIX)$$(LIB_EXT) \ $$PWD/../lib/$$LIB_PREFIX/libMobileWebView$$(LIB_SUFFIX)$$(LIB_EXT) @@ -104,7 +103,7 @@ ios { -framework UserNotifications # Base libraries (always included) - LIBS += -L$$PWD/../lib/$$LIB_PREFIX -lnim_status_client -lDOtherSideStatic -lstatusq -lMobileWebView -lstatus -lsds -lssl_3 -lcrypto_3 -lSCodes -lZXing -lresolv -lqrcodegen + LIBS += -L$$PWD/../lib/$$LIB_PREFIX -lnim_status_client -lstatusq -lMobileWebView -lstatus -lsds -lssl_3 -lcrypto_3 -lSCodes -lZXing -lresolv -lqrcodegen contains(DEFINES, FLAG_KEYCARD_ENABLED) { # Use entitlements with NFC support (requires paid Apple Developer account) diff --git a/src/nim_status_client.nim b/src/nim_status_client.nim index ce63770a82..48d928f722 100644 --- a/src/nim_status_client.nim +++ b/src/nim_status_client.nim @@ -264,6 +264,10 @@ proc mainProc() = singletonInstance.engine.addImportPath("qrc:/./imports") singletonInstance.engine.addImportPath("qrc:/./app"); + when defined(monitoring): + onRootContextPropertySet = proc(name: string) {.nimcall.} = + statusq_monitorAddContextProperty(name.cstring) + statusq_setupNetworkAccessManagerFactory(singletonInstance.engine.vptr, (TMPDIR & "netcache").cstring) singletonInstance.engine.setRootContextProperty("uiScaleFilePath", newQVariant(uiScaleFilePath)) singletonInstance.engine.setRootContextProperty("singleInstance", newQVariant(singleInstance)) @@ -281,6 +285,10 @@ proc mainProc() = statusq_registerQmlTypes() + when defined(monitoring): + statusq_registerMonitoringType() + statusq_initializeMonitoring(singletonInstance.engine.vptr) + app.installEventFilter(urlSchemeEvent) defer: diff --git a/src/statusq_bridge.nim b/src/statusq_bridge.nim index 4de3af87b0..5d938f64fb 100644 --- a/src/statusq_bridge.nim +++ b/src/statusq_bridge.nim @@ -20,3 +20,8 @@ proc statusq_urlscheme_set_instance*(obj: pointer) {.cdecl, importc.} proc statusq_urlscheme_install_event_filter*(obj: pointer) {.cdecl, importc.} proc statusq_urlscheme_emit_deeplink*(obj: pointer, url: cstring) {.cdecl, importc.} proc statusq_urlscheme_delete*(obj: pointer) {.cdecl, importc.} + +when defined(monitoring): + proc statusq_registerMonitoringType*() {.cdecl, importc.} + proc statusq_initializeMonitoring*(engine: pointer) {.cdecl, importc.} + proc statusq_monitorAddContextProperty*(name: cstring) {.cdecl, importc.} diff --git a/ui/StatusQ/CMakeLists.txt b/ui/StatusQ/CMakeLists.txt index 1f59df78b4..56f34e1497 100644 --- a/ui/StatusQ/CMakeLists.txt +++ b/ui/StatusQ/CMakeLists.txt @@ -422,6 +422,16 @@ endif() target_include_directories(StatusQ PUBLIC include) +option(MONITORING "Build the QML monitoring/introspection tools" OFF) +set(MONITORING_QML_ENTRY_POINT "" CACHE STRING "QML file that starts the monitoring tool UI") +if(MONITORING) + include(${CMAKE_CURRENT_SOURCE_DIR}/../MonitoringSources.cmake) + target_sources(StatusQ PRIVATE ${MONITORING_SOURCES} ${MONITORING_HEADERS}) + target_include_directories(StatusQ PRIVATE ${MONITORING_INCLUDE_PATH}) + target_compile_definitions(StatusQ PRIVATE MONITORING + MONITORING_QML_ENTRY_POINT="${MONITORING_QML_ENTRY_POINT}") +endif() + install(TARGETS StatusQ RUNTIME DESTINATION StatusQ LIBRARY DESTINATION StatusQ diff --git a/ui/StatusQ/src/externc.cpp b/ui/StatusQ/src/externc.cpp index f18d46672b..aff454341f 100644 --- a/ui/StatusQ/src/externc.cpp +++ b/ui/StatusQ/src/externc.cpp @@ -11,6 +11,11 @@ #include #include #include +#ifdef MONITORING +#include +#include +#include "StatusDesktop/Monitoring/Monitor.h" +#endif #include #ifdef STATUSQ_HAS_QTWEBENGINE @@ -129,4 +134,21 @@ Q_DECL_EXPORT void statusq_urlscheme_delete(void* obj) { static_cast(obj)->deleteLater(); } +#ifdef MONITORING +Q_DECL_EXPORT void statusq_registerMonitoringType() { + qmlRegisterSingletonType("Monitoring", 1, 0, "Monitor", &Monitor::qmlInstance); +} + +Q_DECL_EXPORT void statusq_initializeMonitoring(void* engine) { + auto disabled = QStringLiteral("0"); + if (QProcessEnvironment::systemEnvironment().value( + QStringLiteral("DISABLE_MONITORING_WINDOW"), disabled) == disabled) + Monitor::instance().initialize(static_cast(engine)); +} + +Q_DECL_EXPORT void statusq_monitorAddContextProperty(const char* name) { + Monitor::instance().addContextPropertyName(QString::fromUtf8(name)); +} +#endif + } // extern "C" diff --git a/ui/nim-status-client.pro b/ui/nim-status-client.pro index 59c74911b4..4d9c69680a 100644 --- a/ui/nim-status-client.pro +++ b/ui/nim-status-client.pro @@ -18,9 +18,6 @@ OTHER_FILES += $$files("$$PWD/*.js", true) OTHER_FILES += $$files("$$PWD/../src/*.nim", true) OTHER_FILES += $$files("$$PWD/../monitoring/*.qml", true) -OTHER_FILES += $$files("$$PWD/../vendor/DOtherSide/lib/*.cpp", true) -OTHER_FILES += $$files("$$PWD/../vendor/DOtherSide/lib/*.h", true) - OTHER_FILES += $$files("$$PWD/../vendor/SortFilterProxyModel/*.cpp", true) OTHER_FILES += $$files("$$PWD/../vendor/SortFilterProxyModel/*.h", true) diff --git a/vendor/DOtherSide b/vendor/DOtherSide deleted file mode 160000 index 3dc2d46c7e..0000000000 --- a/vendor/DOtherSide +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3dc2d46c7e5c7cd6553f80bf58276e3367f285a4