Skip to content
This repository was archived by the owner on Dec 20, 2023. It is now read-only.

Commit 06337b5

Browse files
author
Jay Logue
committed
Weave Device Manager clean-up
-- Build and package the Weave Device Manager C++ object as part of the main Weave static library (libWeave.a), rather than as a separate shared library. This eliminates load-time dependencies on a weave-specific shared library (libWeaveDeviceManager.so) for components which incorporate the Weave Device Manager. (Note that the code is only built on platforms that support a generalized heap--i.e. malloc, strdup, etc.). -- Changed the meaning of the --enable-device-manager/--disable-device-manager configure options. These options now control whether or not the various Device Manager wrapper modules (i.e. the Java, Python and Cocoa wrappers) are built. Previously these also controlled whether the core Device Manager C++ code was built. However this code is now built and included in the main Weave static library in all cases. -- Restructured the build of the Java Device Manager wrapper such that it creates a dedicated shared library specifically for use by the Java code. This library is built as a shared “module” (i.e. a shared library which is only capable of being loaded dynamically at runtime). To avoid any changes to the Java code, the library retains its original name of libWeaveDeviceManager.so. -- Restructured the build of the Python Device Manager wrapper such the associated shared library (_WeaveDeviceMgr.so) includes all of Weave, rather than having a load-time dependency on libWeaveDeviceManager.so. Like the Java wrapper, the Python wrapper shared library is built as a shared module. -- Restructured the Device Manager Python code into a Python package named “openweave”. The APIs to the existing Python modules (WeaveDeviceMgr, WeaveBluezMgr, etc.) remain the same, however the modules must now be imported using a package relative syntax; e.g: from openweave import WeaveDeviceMgr As part of this change, the installed location of the Python wrapper shared library (_WeaveDeviceMgr.so) was moved into the root directory of the “openweave” package. -- Rewrote the logic that the WeaveDeviceMgr Python class uses to locate the Python wrapper shared library. By default the library is expected to be found in the root directory of the package in which executing WeaveDeviceMgr python class was found. If not found there, the code will search up the directory hierarchy for an OpenWeave build directory containing the library in the expected build location. This behavior makes it possible to import and use the WeaveDeviceMgr module directly from a built copy of the OpenWeave source tree. -- Modified the Weave Device Manager Shell (weave-device-mgr.py) to search for the “openweave” python package in directories relative to the location of the script itself. This makes it possible to run the device manager shell from a non-standard install location, as well as directly from its location the OpenWeave source tree. Relative locations are given priority over standard install locations so as to ensure the correct version of the package is used. -- Eliminated the use of the weave-run helper script for executing the Weave Device Manager Shell. The helper script was no longer necessary after the elimination of the generic Weave Device Manager shared library. -- Added logic to configure.ac to disable building of the Device Manager wrapper modules when the target network type is LwIP only. Although building this configuration is technically feasible, the resultant code is not usable. Note that this does not disable building the core Device Manager C++ class. -- Eliminated the use of asprintf in the WeaveDeviceManager C++ code. -- Removed libWeaveDeviceManager.a from Makefile-iOS
1 parent 66ef902 commit 06337b5

38 files changed

+1111
-1856
lines changed

Makefile-iOS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ DynamicLib = $(Framework)/$(Dynamic
124124
FrameworkName = $(DynamicLibName).framework
125125
Framework = $(TopTargetLibDir)/$(FrameworkName)
126126

127-
DynamicLibSourceFiles = $(TopTargetLibDir)/libWeave.a $(TopTargetLibDir)/libWeaveDeviceManager.a $(TopTargetLibDir)/libNLWeaveWrapper.a
127+
DynamicLibSourceFiles = $(TopTargetLibDir)/libWeave.a $(TopTargetLibDir)/libNLWeaveWrapper.a
128128

129129
FrameworkHeaderDirName = Headers
130130
FrameworkModulesDirName = Modules
@@ -456,7 +456,6 @@ lint pretty-check: $(PRETTY_CHECK_TARGETS)
456456

457457
stage: stage-combine | $(TopResultDir)/$(TargetTuple)/lib
458458
$(call combine-archs,$(TargetTupleStemIOS),$(ARCHS),libWeave.a,libWeave.a)
459-
$(call combine-archs,$(TargetTupleStemIOS),$(ARCHS),libWeaveDeviceManager.a,libWeaveDeviceManager.a)
460459
$(call combine-archs,$(TargetTupleStemIOS),$(ARCHS),libNLWeaveDeviceManager.a,libNLWeaveWrapper.a)
461460

462461
$(Framework): $(DynamicLib) $(FrameworkHeaderDir) $(FrameworkModulesDir) $(FrameworkModuleMap) $(FrameworkPlist)

configure

Lines changed: 82 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /bin/sh
22
# Guess values for system-dependent variables and create Makefiles.
3-
# Generated by GNU Autoconf 2.68 for Weave g06664935-dirty.
3+
# Generated by GNU Autoconf 2.68 for Weave g212389ac-dirty.
44
#
55
# Report bugs to <[email protected]>.
66
#
@@ -570,8 +570,8 @@ MAKEFLAGS=
570570
# Identity of this package.
571571
PACKAGE_NAME='Weave'
572572
PACKAGE_TARNAME='weave'
573-
PACKAGE_VERSION='g06664935-dirty'
574-
PACKAGE_STRING='Weave g06664935-dirty'
573+
PACKAGE_VERSION='g212389ac-dirty'
574+
PACKAGE_STRING='Weave g212389ac-dirty'
575575
PACKAGE_BUGREPORT='[email protected]'
576576
PACKAGE_URL='https://developer.nest.com/'
577577

@@ -699,6 +699,8 @@ WEAVE_FUZZING_ENABLED_FALSE
699699
WEAVE_FUZZING_ENABLED_TRUE
700700
WEAVE_WITH_VERHOEFF_FALSE
701701
WEAVE_WITH_VERHOEFF_TRUE
702+
WEAVE_BUILD_DEVICE_MANAGER_FALSE
703+
WEAVE_BUILD_DEVICE_MANAGER_TRUE
702704
INET_CONFIG_ENABLE_ASYNC_DNS_SOCKETS_FALSE
703705
INET_CONFIG_ENABLE_ASYNC_DNS_SOCKETS_TRUE
704706
INET_WANT_ENDPOINT_UDP_FALSE
@@ -767,8 +769,6 @@ WEAVE_BUILD_WARM_FALSE
767769
WEAVE_BUILD_WARM_TRUE
768770
WEAVE_ENABLE_WOBLE_TEST_FALSE
769771
WEAVE_ENABLE_WOBLE_TEST_TRUE
770-
WEAVE_BUILD_DEVICE_MANAGER_FALSE
771-
WEAVE_BUILD_DEVICE_MANAGER_TRUE
772772
WEAVE_RUN_HAPPY_SERVICEDIR_FALSE
773773
WEAVE_RUN_HAPPY_SERVICEDIR_TRUE
774774
WEAVE_RUN_HAPPY_SECMGR_FALSE
@@ -1056,7 +1056,6 @@ with_happy
10561056
with_happy_service
10571057
with_happy_dns
10581058
with_happy_test_suite
1059-
enable_device_manager
10601059
enable_woble_test
10611060
enable_warm
10621061
enable_tunnel_failover
@@ -1071,6 +1070,7 @@ with_target_network
10711070
enable_ipv4
10721071
with_inet_endpoint
10731072
enable_adns
1073+
enable_device_manager
10741074
enable_verhoeff
10751075
enable_fuzzing
10761076
with_enhanced_printf
@@ -1709,7 +1709,7 @@ if test "$ac_init_help" = "long"; then
17091709
# Omit some internal or obsolete options to make the list less imposing.
17101710
# This message is too long to be a string in the A/UX 3.1 sh.
17111711
cat <<_ACEOF
1712-
\`configure' configures Weave g06664935-dirty to adapt to many kinds of systems.
1712+
\`configure' configures Weave g212389ac-dirty to adapt to many kinds of systems.
17131713

17141714
Usage: $0 [OPTION]... [VAR=VALUE]...
17151715

@@ -1780,7 +1780,7 @@ fi
17801780

17811781
if test -n "$ac_init_help"; then
17821782
case $ac_init_help in
1783-
short | recursive ) echo "Configuration of Weave g06664935-dirty:";;
1783+
short | recursive ) echo "Configuration of Weave g212389ac-dirty:";;
17841784
esac
17851785
cat <<\_ACEOF
17861786

@@ -1827,8 +1827,6 @@ Optional Features:
18271827
--enable-tests Enable building of tests [default=yes].
18281828
--enable-long-tests Enable building of long-running tests [default=no].
18291829
--disable-tools Disable building of tools [default=no].
1830-
--disable-device-manager
1831-
Disable building of Device Manager [default=no].
18321830
--enable-woble-test Enable WoBle Test [default=no].
18331831
--disable-warm Disable building of the Weave Addressing and Routing
18341832
Module (WARM) [default=no].
@@ -1842,6 +1840,8 @@ Optional Features:
18421840
--disable-ipv4 Disable the inclusion of IPv4 networking
18431841
[default=yes].
18441842
--disable-adns Disable building of adns [default=no].
1843+
--enable-device-manager Enable building of Device Manager wrapper libraries
1844+
[default=yes].
18451845
--enable-verhoeff Enable Verhoeff support [default=no].
18461846
--enable-fuzzing Enable Fuzzing - Requires clang 6.0 or greater
18471847
[default=no].
@@ -2146,7 +2146,7 @@ fi
21462146
test -n "$ac_init_help" && exit $ac_status
21472147
if $ac_init_version; then
21482148
cat <<\_ACEOF
2149-
Weave configure g06664935-dirty
2149+
Weave configure g212389ac-dirty
21502150
generated by GNU Autoconf 2.68
21512151

21522152
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -3158,7 +3158,7 @@ cat >config.log <<_ACEOF
31583158
This file contains any messages produced by compilers while
31593159
running configure, to aid debugging if configure makes a mistake.
31603160

3161-
It was created by Weave $as_me g06664935-dirty, which was
3161+
It was created by Weave $as_me g212389ac-dirty, which was
31623162
generated by GNU Autoconf 2.68. Invocation command line was
31633163

31643164
$ $0 $@
@@ -4365,7 +4365,7 @@ fi
43654365

43664366
# Define the identity of the package.
43674367
PACKAGE='weave'
4368-
VERSION='g06664935-dirty'
4368+
VERSION='g212389ac-dirty'
43694369

43704370

43714371
# Some tools Automake needs.
@@ -22676,42 +22676,6 @@ else
2267622676
fi
2267722677

2267822678

22679-
#
22680-
# Device Manager
22681-
#
22682-
22683-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build Device Manager" >&5
22684-
$as_echo_n "checking whether to build Device Manager... " >&6; }
22685-
# Check whether --enable-device_manager was given.
22686-
if test "${enable_device_manager+set}" = set; then :
22687-
enableval=$enable_device_manager;
22688-
case "${enableval}" in
22689-
22690-
no|yes)
22691-
build_device_manager=${enableval}
22692-
;;
22693-
22694-
*)
22695-
as_fn_error $? "Invalid value ${enableval} for --enable-device-manager" "$LINENO" 5
22696-
;;
22697-
22698-
esac
22699-
22700-
else
22701-
build_device_manager=yes
22702-
fi
22703-
22704-
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${build_device_manager}" >&5
22705-
$as_echo "${build_device_manager}" >&6; }
22706-
if test "${build_device_manager}" = "yes"; then
22707-
WEAVE_BUILD_DEVICE_MANAGER_TRUE=
22708-
WEAVE_BUILD_DEVICE_MANAGER_FALSE='#'
22709-
else
22710-
WEAVE_BUILD_DEVICE_MANAGER_TRUE='#'
22711-
WEAVE_BUILD_DEVICE_MANAGER_FALSE=
22712-
fi
22713-
22714-
2271522679
#
2271622680
# WoBle Control Path and Throughput Test (Woble Test)
2271722681
#
@@ -24501,6 +24465,61 @@ $as_echo "#define INET_CONFIG_ENABLE_ASYNC_DNS_SOCKETS 0" >>confdefs.h
2450124465

2450224466
fi
2450324467

24468+
24469+
#
24470+
# Device Manager
24471+
#
24472+
24473+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build Device Manager wrapper libraries" >&5
24474+
$as_echo_n "checking whether to build Device Manager wrapper libraries... " >&6; }
24475+
# Check whether --enable-device_manager was given.
24476+
if test "${enable_device_manager+set}" = set; then :
24477+
enableval=$enable_device_manager;
24478+
case "${enableval}" in
24479+
24480+
no|yes)
24481+
build_device_manager=${enableval}
24482+
;;
24483+
24484+
*)
24485+
as_fn_error $? "Invalid value ${enableval} for --enable-device-manager" "$LINENO" 5
24486+
;;
24487+
24488+
esac
24489+
24490+
else
24491+
24492+
# Enable building Device Manager wrapper libraries by default UNLESS the "sockets" network
24493+
# stack is not enabled.
24494+
if test ${WEAVE_SYSTEM_CONFIG_USE_SOCKETS} -eq 1; then
24495+
build_device_manager=yes
24496+
else
24497+
build_device_manager=no
24498+
fi
24499+
24500+
fi
24501+
24502+
24503+
# Fail if Device Manager wrapper libraries are enabled but the "sockets" network stack is not. This combination is
24504+
# not supported.
24505+
if test "${build_device_manager}" = "yes"; then
24506+
if test "${WEAVE_SYSTEM_CONFIG_USE_SOCKETS}" eq 0; then
24507+
as_fn_error $? "Building Device Manager wrapper libraries requires selecting sockets as a target network stack" "$LINENO" 5
24508+
fi
24509+
fi
24510+
24511+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${build_device_manager}" >&5
24512+
$as_echo "${build_device_manager}" >&6; }
24513+
if test "${build_device_manager}" = "yes"; then
24514+
WEAVE_BUILD_DEVICE_MANAGER_TRUE=
24515+
WEAVE_BUILD_DEVICE_MANAGER_FALSE='#'
24516+
else
24517+
WEAVE_BUILD_DEVICE_MANAGER_TRUE='#'
24518+
WEAVE_BUILD_DEVICE_MANAGER_FALSE=
24519+
fi
24520+
24521+
24522+
2450424523
#
2450524524
# Verhoeff support
2450624525
#
@@ -24539,6 +24558,13 @@ else
2453924558
fi
2454024559

2454124560

24561+
24562+
#
24563+
# Fuzzing support
24564+
#
24565+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable fuzzing" >&5
24566+
$as_echo_n "checking whether to enable fuzzing... " >&6; }
24567+
2454224568
# Check whether --enable-fuzzing was given.
2454324569
if test "${enable_fuzzing+set}" = set; then :
2454424570
enableval=$enable_fuzzing;
@@ -29349,7 +29375,7 @@ fi
2934929375
#
2935029376
# Identify the various makefiles and auto-generated files for the package
2935129377
#
29352-
ac_config_files="$ac_config_files Makefile third_party/Makefile third_party/lwip/Makefile third_party/android/platform-system/core-mincrypt/Makefile third_party/micro-ecc/Makefile third_party/openssl/Makefile third_party/openssl-jpake/Makefile src/Makefile src/include/Makefile src/ble/Makefile src/lwip/Makefile src/platform/ble/bluez/Makefile src/system/Makefile src/inet/Makefile src/lib/Makefile src/lib/support/Makefile src/lib/support/verhoeff/Makefile src/wrappers/jni/Makefile src/wrappers/jni/jni-utils/Makefile src/wrappers/jni/security-support/Makefile src/device-manager/Makefile src/device-manager/cocoa/Makefile src/device-manager/java/Makefile src/device-manager/python/Makefile src/warm/Makefile src/ra-daemon/Makefile src/test-apps/Makefile src/test-apps/wrapper-tests/jni/Makefile src/test-apps/fuzz/Makefile src/tools/weave/Makefile src/tools/misc/Makefile src/examples/Makefile src/adaptations/device-layer/Makefile doc/Makefile"
29378+
ac_config_files="$ac_config_files Makefile third_party/Makefile third_party/lwip/Makefile third_party/android/platform-system/core-mincrypt/Makefile third_party/micro-ecc/Makefile third_party/openssl/Makefile third_party/openssl-jpake/Makefile src/Makefile src/include/Makefile src/ble/Makefile src/lwip/Makefile src/platform/ble/bluez/Makefile src/system/Makefile src/inet/Makefile src/lib/Makefile src/lib/support/Makefile src/lib/support/verhoeff/Makefile src/wrappers/jni/Makefile src/wrappers/jni/jni-utils/Makefile src/wrappers/jni/security-support/Makefile src/device-manager/cocoa/Makefile src/device-manager/java/Makefile src/device-manager/python/Makefile src/warm/Makefile src/ra-daemon/Makefile src/test-apps/Makefile src/test-apps/wrapper-tests/jni/Makefile src/test-apps/fuzz/Makefile src/tools/weave/Makefile src/tools/misc/Makefile src/examples/Makefile src/adaptations/device-layer/Makefile doc/Makefile"
2935329379

2935429380

2935529381
#
@@ -29644,10 +29670,6 @@ if test -z "${WEAVE_RUN_HAPPY_SERVICEDIR_TRUE}" && test -z "${WEAVE_RUN_HAPPY_SE
2964429670
as_fn_error $? "conditional \"WEAVE_RUN_HAPPY_SERVICEDIR\" was never defined.
2964529671
Usually this means the macro was only invoked conditionally." "$LINENO" 5
2964629672
fi
29647-
if test -z "${WEAVE_BUILD_DEVICE_MANAGER_TRUE}" && test -z "${WEAVE_BUILD_DEVICE_MANAGER_FALSE}"; then
29648-
as_fn_error $? "conditional \"WEAVE_BUILD_DEVICE_MANAGER\" was never defined.
29649-
Usually this means the macro was only invoked conditionally." "$LINENO" 5
29650-
fi
2965129673
if test -z "${WEAVE_ENABLE_WOBLE_TEST_TRUE}" && test -z "${WEAVE_ENABLE_WOBLE_TEST_FALSE}"; then
2965229674
as_fn_error $? "conditional \"WEAVE_ENABLE_WOBLE_TEST\" was never defined.
2965329675
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -29728,6 +29750,10 @@ if test -z "${INET_CONFIG_ENABLE_ASYNC_DNS_SOCKETS_TRUE}" && test -z "${INET_CON
2972829750
as_fn_error $? "conditional \"INET_CONFIG_ENABLE_ASYNC_DNS_SOCKETS\" was never defined.
2972929751
Usually this means the macro was only invoked conditionally." "$LINENO" 5
2973029752
fi
29753+
if test -z "${WEAVE_BUILD_DEVICE_MANAGER_TRUE}" && test -z "${WEAVE_BUILD_DEVICE_MANAGER_FALSE}"; then
29754+
as_fn_error $? "conditional \"WEAVE_BUILD_DEVICE_MANAGER\" was never defined.
29755+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
29756+
fi
2973129757
if test -z "${WEAVE_WITH_VERHOEFF_TRUE}" && test -z "${WEAVE_WITH_VERHOEFF_FALSE}"; then
2973229758
as_fn_error $? "conditional \"WEAVE_WITH_VERHOEFF\" was never defined.
2973329759
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -30205,7 +30231,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
3020530231
# report actual input values of CONFIG_FILES etc. instead of their
3020630232
# values after options handling.
3020730233
ac_log="
30208-
This file was extended by Weave $as_me g06664935-dirty, which was
30234+
This file was extended by Weave $as_me g212389ac-dirty, which was
3020930235
generated by GNU Autoconf 2.68. Invocation command line was
3021030236

3021130237
CONFIG_FILES = $CONFIG_FILES
@@ -30272,7 +30298,7 @@ _ACEOF
3027230298
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
3027330299
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
3027430300
ac_cs_version="\\
30275-
Weave config.status g06664935-dirty
30301+
Weave config.status g212389ac-dirty
3027630302
configured by $0, generated by GNU Autoconf 2.68,
3027730303
with options \\"\$ac_cs_config\\"
3027830304

@@ -30799,7 +30825,6 @@ do
3079930825
"src/wrappers/jni/Makefile") CONFIG_FILES="$CONFIG_FILES src/wrappers/jni/Makefile" ;;
3080030826
"src/wrappers/jni/jni-utils/Makefile") CONFIG_FILES="$CONFIG_FILES src/wrappers/jni/jni-utils/Makefile" ;;
3080130827
"src/wrappers/jni/security-support/Makefile") CONFIG_FILES="$CONFIG_FILES src/wrappers/jni/security-support/Makefile" ;;
30802-
"src/device-manager/Makefile") CONFIG_FILES="$CONFIG_FILES src/device-manager/Makefile" ;;
3080330828
"src/device-manager/cocoa/Makefile") CONFIG_FILES="$CONFIG_FILES src/device-manager/cocoa/Makefile" ;;
3080430829
"src/device-manager/java/Makefile") CONFIG_FILES="$CONFIG_FILES src/device-manager/java/Makefile" ;;
3080530830
"src/device-manager/python/Makefile") CONFIG_FILES="$CONFIG_FILES src/device-manager/python/Makefile" ;;

0 commit comments

Comments
 (0)