Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3345775
D4433.id14126.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D4433.id14126.diff
View Options
diff --git a/flake.nix b/flake.nix
--- a/flake.nix
+++ b/flake.nix
@@ -20,6 +20,7 @@
# package set
pkgsForSystem = system: import nixpkgs {
inherit overlays system;
+ config.android_sdk.accept_license = true;
};
# utils.lib.eachSystem helps create a result set of expected flake outputs
diff --git a/native/android/app/CMakeLists.txt b/native/android/app/CMakeLists.txt
--- a/native/android/app/CMakeLists.txt
+++ b/native/android/app/CMakeLists.txt
@@ -15,7 +15,10 @@
set(PACKAGE_NAME "comm_jni_module")
-find_package(fbjni REQUIRED CONFIG)
+find_package(fbjni
+ NAMES fbjni fbjniLibrary
+ REQUIRED CONFIG
+)
set(BUILD_TESTING OFF)
set(HAVE_SYMBOLIZE OFF)
@@ -41,6 +44,9 @@
add_subdirectory(./build/third-party-ndk/glog/glog-${GLOG_VERSION}/)
add_subdirectory(../../node_modules/olm ./build)
+# Common Comm Cpp projects
+add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../../native/cpp ${CMAKE_CURRENT_BINARY_DIR}/cpp)
+
include_directories(
../../node_modules/react-native/React
../../node_modules/react-native/React/Base
@@ -55,9 +61,6 @@
# SQLCipher amalgamation
../../node_modules/@commapp/sqlcipher-amalgamation/src
- # SQLite ORM
- ../../cpp/lib/sqlite_orm
-
# symlinked React Native headers
../headers
@@ -68,18 +71,6 @@
# comm android specific code
./src/cpp
-
- # comm native mutual code
- ../../cpp/CommonCpp/NativeModules
- ../../cpp/CommonCpp/NativeModules/InternalModules
- ../../cpp/CommonCpp/NativeModules/PersistentStorageUtilities
- ../../cpp/CommonCpp/NativeModules/PersistentStorageUtilities/ThreadOperationsUtilities
- ../../cpp/CommonCpp/NativeModules/PersistentStorageUtilities/MessageOperationsUtilities
- ../../cpp/CommonCpp/NativeModules/PersistentStorageUtilities/MessageOperationsUtilities/MessageSpecs
- ../../cpp/CommonCpp/DatabaseManagers
- ../../cpp/CommonCpp/Tools
- ../../cpp/CommonCpp/grpc/_generated
- ../../cpp/CommonCpp/grpc
)
# search for all cpp files in this directory
@@ -102,7 +93,17 @@
../../node_modules/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp
../../node_modules/react-native/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp
../../node_modules/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.cpp
-
+
+ # Comm
+ comm-modules
+ comm-databasemanagers
+ comm-tools
+ comm-grpc
+ comm-backup
+ comm-blob
+ comm-tunnelbroker
+ comm-sqlite-orm
+
# SQLCipher
${SQLCIPHER}
diff --git a/nix/android-dev-env.nix b/nix/android-dev-env.nix
new file mode 100644
--- /dev/null
+++ b/nix/android-dev-env.nix
@@ -0,0 +1,33 @@
+{ androidenv }:
+
+androidenv.composeAndroidPackages {
+ toolsVersion = "26.1.1";
+ platformToolsVersion = "33.0.1";
+ buildToolsVersions = [ "31.0.0" ];
+ includeEmulator = false;
+ emulatorVersion = "30.9.0";
+ platformVersions = [ "30" ];
+ includeSources = false;
+ includeSystemImages = false;
+ systemImageTypes = [ "google_apis_playstore" ];
+ abiVersions = [ "armeabi-v7a" "arm64-v8a" ];
+ cmakeVersions = [ "3.10.2" ];
+ includeNDK = true;
+ ndkVersions = ["22.0.7026061"];
+ useGoogleAPIs = false;
+ useGoogleTVAddOns = false;
+ includeExtras = [
+ "extras;google;gcm"
+ ];
+
+ extraLicenses = [
+ "android-googletv-license"
+ "android-sdk-preview-license"
+ "android-sdk-arm-dbt-license"
+ "android-sdk-preview-license"
+ "google-gdk-license"
+ "intel-android-extra-license"
+ "intel-android-sysimage-license"
+ "mips-android-sysimage-license"
+ ];
+}
diff --git a/nix/dev-shell.nix b/nix/dev-shell.nix
--- a/nix/dev-shell.nix
+++ b/nix/dev-shell.nix
@@ -1,6 +1,7 @@
{ mkShell
, stdenv
, lib
+, androidDevEnv
, amqp-cpp
, arcanist
, boost
@@ -11,11 +12,13 @@
, fbjni
, folly
, fmt
+, glog
, grpc
, libiconv
, libuv
, nodejs-16_x
, olm
+, openjdk8
, openssl
, pkg-config
, protobuf_3_15_cmake
@@ -25,6 +28,7 @@
, watchman
, rustfmt
, yarn
+, zlib
}:
mkShell {
@@ -68,6 +72,10 @@
olm # needed for CryptoTools
sqlite # needed for sqlite_orm
openssl # needed for grpc
+ ] ++ lib.optionals stdenv.isx86_64 [
+ # aarch64-darwin tarballs are not available
+ androidDevEnv.androidsdk
+ glog # android
] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
CoreFoundation
CoreServices
@@ -75,10 +83,19 @@
libiconv # identity service
]);
+ # Used by gradle
+ JAVA_HOME = openjdk8.passthru.home;
+
# shell commands to be ran upon entering shell
shellHook = ''
if [[ "$OSTYPE" == 'linux'* ]]; then
export MYSQL_UNIX_PORT=''${XDG_RUNTIME_DIR:-/run/user/$UID}/mysql-socket/mysql.sock
+ export ANDROID_SDK_ROOT=''${ANDROID_SDK_ROOT:-$HOME/Android/Sdk}
+ fi
+
+ if [ -f /etc/NIXOS ]; then
+ # allow for impurely downloaded android ndk tools to be used on NixOS
+ export LD_LIBRARY_PATH=${lib.makeLibraryPath [ stdenv.cc.cc.lib zlib ]}
fi
echo "Welcome to Comm dev environment! :)"
diff --git a/nix/fbjni.nix b/nix/fbjni.nix
--- a/nix/fbjni.nix
+++ b/nix/fbjni.nix
@@ -33,6 +33,7 @@
# They install the target export in the wrong directory
postInstall = ''
mv $out/share/cmake $out/lib/cmake
+ rm -r $out/share
'';
meta = with lib; {
diff --git a/nix/overlay.nix b/nix/overlay.nix
--- a/nix/overlay.nix
+++ b/nix/overlay.nix
@@ -13,6 +13,8 @@
# add packages meant for just this repository
amqp-cpp = prev.callPackage ./amqp-cpp.nix { };
+ androidDevEnv = prev.callPackage ./android-dev-env.nix { };
+
protobuf_3_15_cmake = prev.callPackage ./protobuf_3_15.nix { };
comm-grpc = final.callPackage ./comm-grpc.nix { };
@@ -40,4 +42,11 @@
});
fbjni = prev.callPackage ./fbjni.nix { };
+
+ # Android ecosystem expects to be to available at `$out/lib`
+ openjdk8 = prev.openjdk8.overrideAttrs(_: {
+ preFixup = ''
+ ln -s $out/lib/openjdk/lib/* $out/lib
+ '';
+ });
}
diff --git a/nix/tunnelbroker.nix b/nix/tunnelbroker.nix
new file mode 100644
--- /dev/null
+++ b/nix/tunnelbroker.nix
@@ -0,0 +1,54 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, amqp-cpp
+, aws-sdk-cpp
+, cmake
+, folly
+, fmt
+, pkg-config
+, libuv
+, cryptopp
+, protobuf_3_15_cmake
+, grpc
+, glog
+, boost17x
+}:
+
+stdenv.mkDerivation rec {
+ pname = "tunnelbroker";
+ version = "0.0.1";
+
+ # needs access to native/cpp/CommonCpp/grpc
+ # so we have to capture the top-level directory
+ src = ../.;
+
+ prePatch = ''
+ cd services/tunnelbroker
+ '';
+
+ nativeBuildInputs = [
+ cmake
+ pkg-config
+ ];
+
+ buildInputs = [
+ amqp-cpp
+ aws-sdk-cpp
+ boost17x
+ libuv
+ cryptopp
+ protobuf_3_15_cmake
+ folly
+ fmt
+ grpc
+ glog
+ ];
+
+ # TODO: fix aws sdk installation assumptions, make assumption that include shares same prefix as lib
+ cmakeFlags = [
+ "-DAWSSDK_DEFAULT_ROOT_DIR="
+ "-DAWSSDK_INSTALL_INCLUDEDIR=${lib.getDev aws-sdk-cpp}/include"
+ "-DAWSSDK_CORE_HEADER_FILE=${lib.getDev aws-sdk-cpp}/include/aws/core/Aws.h"
+ ];
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 23, 6:57 AM (18 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2569533
Default Alt Text
D4433.id14126.diff (6 KB)
Attached To
Mode
D4433: [android] Fix android CI + build with CMake changes
Attached
Detach File
Event Timeline
Log In to Comment