From 14073361dbbe394b2231025d2ffa8b2318d29cfb Mon Sep 17 00:00:00 2001
From: marco <marco@cypherstack.com>
Date: Thu, 1 Sep 2022 00:27:46 +0800
Subject: [PATCH 1/4] preliminary static build

---
 linux/CMakeLists.txt                       | 32 ++++++++++++++++++++++
 scripts/linux/build_all.sh                 |  2 ++
 scripts/linux/build_secure_storage_deps.sh | 23 ++++++++++++++++
 scripts/linux/pc/libsecret-1.pc            | 15 ++++++++++
 4 files changed, 72 insertions(+)
 create mode 100755 scripts/linux/build_secure_storage_deps.sh
 create mode 100644 scripts/linux/pc/libsecret-1.pc

diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt
index 0dda998a3..cd7281ede 100644
--- a/linux/CMakeLists.txt
+++ b/linux/CMakeLists.txt
@@ -50,6 +50,20 @@ endfunction()
 set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
 add_subdirectory(${FLUTTER_MANAGED_DIR})
 
+# build libjsoncpp and libsecret for flutter_secure_storage
+set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/pkg-config")
+set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/pc")
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/include)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build)
+
+add_library(jsoncpp SHARED IMPORTED)
+set_target_properties(jsoncpp PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so")
+add_library(secret-1 SHARED IMPORTED)
+set_target_properties(secret-1 PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so")
+
 # System-level dependencies.
 find_package(PkgConfig REQUIRED)
 pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
@@ -71,8 +85,12 @@ add_executable(${BINARY_NAME}
 apply_standard_settings(${BINARY_NAME})
 
 # Add dependency libraries. Add any application-specific dependencies here.
+target_link_libraries(${BINARY_NAME} PRIVATE -static-libgcc -static-libstdc++)
 target_link_libraries(${BINARY_NAME} PRIVATE flutter)
 target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
+target_link_libraries(${BINARY_NAME} PRIVATE jsoncpp)
+target_link_libraries(${BINARY_NAME} PRIVATE secret-1)
+
 
 # Run the Flutter tool portions of the build. This must not be removed.
 add_dependencies(${BINARY_NAME} flutter_assemble)
@@ -125,6 +143,20 @@ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libepiccash
 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_liblelantus/scripts/linux/build/libmobileliblelantus.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
   COMPONENT Runtime)
 
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so.1.9.5" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so.25" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so.0.0.0" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so.0" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+  COMPONENT Runtime)
+
 foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
   install(FILES "${bundled_library}"
     DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
diff --git a/scripts/linux/build_all.sh b/scripts/linux/build_all.sh
index e199e3043..acc10ed99 100755
--- a/scripts/linux/build_all.sh
+++ b/scripts/linux/build_all.sh
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+mkdir build
+./build_secure_storage_deps.sh &
 (cd ../../crypto_plugins/flutter_liblelantus/scripts/linux && ./build_all.sh ) &
 (cd ../../crypto_plugins/flutter_libepiccash/scripts/linux && ./build_all.sh )  &
 (cd ../../crypto_plugins/flutter_libmonero/scripts/linux && ./build_monero_all.sh && ./build_sharedfile.sh ) &
diff --git a/scripts/linux/build_secure_storage_deps.sh b/scripts/linux/build_secure_storage_deps.sh
new file mode 100755
index 000000000..292c5f5e3
--- /dev/null
+++ b/scripts/linux/build_secure_storage_deps.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+LINUX_DIRECTORY=$(pwd)
+mkdir build
+
+# Build JsonCPP
+cd build
+git clone https://github.com/open-source-parsers/jsoncpp.git
+git checkout 8190e061bc2d95da37479a638aa2c9e483e58ec6
+cd jsoncpp
+mkdir build
+cd build
+cmake ..
+make -j$(nproc)
+
+cd $LINUX_DIRECTORY
+# Build libSecret
+# sudo apt install libgirepository1.0-dev valac xsltproc gi-docgen docbook-xsl
+# pip3 install --user gi-docgen
+cd build
+git clone https://gitlab.gnome.org/GNOME/libsecret.git
+cd libsecret
+meson _build
+ninja -C _build
diff --git a/scripts/linux/pc/libsecret-1.pc b/scripts/linux/pc/libsecret-1.pc
new file mode 100644
index 000000000..7da2e13f5
--- /dev/null
+++ b/scripts/linux/pc/libsecret-1.pc
@@ -0,0 +1,15 @@
+prefix=/usr/local
+libdir=${prefix}/lib/x86_64-linux-gnu
+includedir=${prefix}/include
+
+exec_prefix=${prefix}
+datarootdir=${prefix}/share
+datadir=${datarootdir}
+sysconfdir=${prefix}/etc
+
+Name: libsecret-1
+Description: GObject bindings for Secret Service API
+Version: 0.20.5
+Requires: glib-2.0 >= 2.44, gio-2.0 >= 2.44, gio-unix-2.0 >= 2.44
+Requires.private: libgcrypt >= 1.2.2
+Libs: -L${libdir} -lsecret-1

From 550752f11b80bbe7e6ddcfcca26256eaa56456fc Mon Sep 17 00:00:00 2001
From: Marco <marco@cypherstack.com>
Date: Thu, 1 Sep 2022 12:29:33 +0800
Subject: [PATCH 2/4] ubuntu 20

---
 linux/CMakeLists.txt                       | 8 ++++----
 scripts/linux/build_secure_storage_deps.sh | 7 ++++---
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt
index cd7281ede..12d9f1f71 100644
--- a/linux/CMakeLists.txt
+++ b/linux/CMakeLists.txt
@@ -60,7 +60,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build)
 
 add_library(jsoncpp SHARED IMPORTED)
-set_target_properties(jsoncpp PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so")
+set_target_properties(jsoncpp PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/src/lib_json/libjsoncpp.so")
 add_library(secret-1 SHARED IMPORTED)
 set_target_properties(secret-1 PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so")
 
@@ -143,11 +143,11 @@ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libepiccash
 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_liblelantus/scripts/linux/build/libmobileliblelantus.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
   COMPONENT Runtime)
 
-install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so.1.9.5" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/src/lib_json/libjsoncpp.so.1.7.4" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
   COMPONENT Runtime)
-install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so.25" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/src/lib_json/libjsoncpp.so.1" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
   COMPONENT Runtime)
-install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/lib/libjsoncpp.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/jsoncpp/build/src/lib_json/libjsoncpp.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
   COMPONENT Runtime)
 
 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/build/libsecret/_build/libsecret/libsecret-1.so.0.0.0" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
diff --git a/scripts/linux/build_secure_storage_deps.sh b/scripts/linux/build_secure_storage_deps.sh
index 292c5f5e3..8c15e1e8b 100755
--- a/scripts/linux/build_secure_storage_deps.sh
+++ b/scripts/linux/build_secure_storage_deps.sh
@@ -5,16 +5,17 @@ mkdir build
 # Build JsonCPP
 cd build
 git clone https://github.com/open-source-parsers/jsoncpp.git
-git checkout 8190e061bc2d95da37479a638aa2c9e483e58ec6
+git checkout 48d2a69d47bbf92337a09fc1672e1bad39fdde86
 cd jsoncpp
 mkdir build
 cd build
-cmake ..
+cmake -DCMAKE_BUILD_TYPE=release -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ..
 make -j$(nproc)
 
 cd $LINUX_DIRECTORY
 # Build libSecret
-# sudo apt install libgirepository1.0-dev valac xsltproc gi-docgen docbook-xsl
+# sudo apt install meson libgirepository1.0-dev valac xsltproc gi-docgen docbook-xsl
+#pip3 install --user meson --upgrade
 # pip3 install --user gi-docgen
 cd build
 git clone https://gitlab.gnome.org/GNOME/libsecret.git

From 6ee57ab217cf72bde8b5d0981c210100ab419264 Mon Sep 17 00:00:00 2001
From: Marco Salazar <marco@cypherstack.com>
Date: Thu, 1 Sep 2022 16:51:06 +0800
Subject: [PATCH 3/4] arm success

---
 lib/main.dart                              | 20 +++++++++++---------
 lib/utilities/logger.dart                  |  7 +++++--
 scripts/linux/build_all.sh                 |  4 ++++
 scripts/linux/build_secure_storage_deps.sh |  3 ++-
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/lib/main.dart b/lib/main.dart
index 45ee30411..c4ede2968 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -70,16 +70,18 @@ void main() async {
   }
   // FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
   await Hive.initFlutter(appDirectory.path);
-  final isar = await Isar.open(
-    [LogSchema],
-    directory: appDirectory.path,
-    inspector: false,
-  );
-  await Logging.instance.init(isar);
-  await DebugService.instance.init(isar);
+  if(!(Logging.isArmLinux || Logging.isTestEnv)) {
+    final isar = await Isar.open(
+      [LogSchema],
+      directory: appDirectory.path,
+      inspector: false,
+    );
+    await Logging.instance.init(isar);
+    await DebugService.instance.init(isar);
 
-  // clear out all info logs on startup. No need to await and block
-  DebugService.instance.purgeInfoLogs();
+    // clear out all info logs on startup. No need to await and block
+    DebugService.instance.purgeInfoLogs();
+  }
 
   // Registering Transaction Model Adapters
   Hive.registerAdapter(TransactionDataAdapter());
diff --git a/lib/utilities/logger.dart b/lib/utilities/logger.dart
index ee3ed684c..0771d5350 100644
--- a/lib/utilities/logger.dart
+++ b/lib/utilities/logger.dart
@@ -1,5 +1,6 @@
 import 'dart:async';
 import 'dart:core' as core;
+import 'dart:core';
 import 'dart:io';
 
 import 'package:flutter/foundation.dart';
@@ -11,6 +12,8 @@ import 'package:stackwallet/utilities/enums/log_level_enum.dart';
 export 'enums/log_level_enum.dart';
 
 class Logging {
+  static const isArmLinux =
+  bool.fromEnvironment("IS_ARM");
   static final isTestEnv = Platform.environment["FLUTTER_TEST"] == "true";
   Logging._();
   static final Logging _instance = Logging._();
@@ -25,7 +28,7 @@ class Logging {
   }
 
   Future<void> initInIsolate() async {
-    if (isTestEnv) {
+    if (isTestEnv || isArmLinux) {
       // do this for now until we mock Isar properly for testing
       isar = null;
       return;
@@ -42,7 +45,7 @@ class Logging {
     core.bool printToConsole = true,
     core.bool printFullLength = false,
   }) {
-    if (isTestEnv) {
+    if (isTestEnv || isArmLinux) {
       Logger.print(object, normalLength: !printFullLength);
       return;
     }
diff --git a/scripts/linux/build_all.sh b/scripts/linux/build_all.sh
index acc10ed99..830198bcd 100755
--- a/scripts/linux/build_all.sh
+++ b/scripts/linux/build_all.sh
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+# for arm
+# flutter-elinux clean
+# flutter-elinux pub get
+# flutter-elinux build linux --dart-define="IS_ARM=true"
 mkdir build
 ./build_secure_storage_deps.sh &
 (cd ../../crypto_plugins/flutter_liblelantus/scripts/linux && ./build_all.sh ) &
diff --git a/scripts/linux/build_secure_storage_deps.sh b/scripts/linux/build_secure_storage_deps.sh
index 8c15e1e8b..5ed032b1a 100755
--- a/scripts/linux/build_secure_storage_deps.sh
+++ b/scripts/linux/build_secure_storage_deps.sh
@@ -5,8 +5,8 @@ mkdir build
 # Build JsonCPP
 cd build
 git clone https://github.com/open-source-parsers/jsoncpp.git
-git checkout 48d2a69d47bbf92337a09fc1672e1bad39fdde86
 cd jsoncpp
+git checkout 1.7.4
 mkdir build
 cd build
 cmake -DCMAKE_BUILD_TYPE=release -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ..
@@ -15,6 +15,7 @@ make -j$(nproc)
 cd $LINUX_DIRECTORY
 # Build libSecret
 # sudo apt install meson libgirepository1.0-dev valac xsltproc gi-docgen docbook-xsl
+# sudo apt install python3-pip
 #pip3 install --user meson --upgrade
 # pip3 install --user gi-docgen
 cd build

From 9b85e522c9227bb01cd5bcb5ac9f1bc5c20b639e Mon Sep 17 00:00:00 2001
From: Marco <marco@cypherstack.com>
Date: Thu, 1 Sep 2022 17:06:47 +0800
Subject: [PATCH 4/4] minor merge

---
 lib/main.dart | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/main.dart b/lib/main.dart
index cbfd8ab3d..5ceb47e1a 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -70,7 +70,7 @@ void main() async {
   }
   // FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
   await Hive.initFlutter(appDirectory.path);
-  if(!(Logging.isArmLinux || Logging.isTestEnv)) {
+  if (!(Logging.isArmLinux || Logging.isTestEnv)) {
     final isar = await Isar.open(
       [LogSchema],
       directory: appDirectory.path,