summaryrefslogtreecommitdiffstats
path: root/docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md')
-rw-r--r--docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md119
1 files changed, 119 insertions, 0 deletions
diff --git a/docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md b/docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md
new file mode 100644
index 0000000..3768037
--- /dev/null
+++ b/docs/3_Developer_Guides/2_Building_Microservices_Natively/5_building-and-running-service-natively.md
@@ -0,0 +1,119 @@
+---
+edit_link: ''
+title: Building and Running Your Service Natively
+origin_url: >-
+ https://raw.githubusercontent.com/automotive-grade-linux/docs-sources/master/agl-documentation/host-configuration/docs/5-building-and-running-service-natively.md
+---
+
+<!-- WARNING: This file is generated by fetch_docs.js using /home/boron/Documents/AGL/docs-webtemplate/site/_data/tocs/devguides/master/host-configuration-developer-guides-devguides-book.yml -->
+
+# Building and Running Your Service Natively
+
+The next step in the binder development process is to build your
+binder and run it using your native Linux system.
+
+**NOTE:** This section assumes using the `helloworld-service` example
+and completion of the previous steps in this
+"[Building Microservices Natively](./0-build-microservice-overview.html)"
+section.
+
+## Building the Service
+
+Move to the cloned `helloworld-service` repository and build the service
+using either of the following methods:
+
+* ```bash
+ cd helloworld-service
+ ./conf.d/autobuild/linux/autobuild package
+ ```
+
+* ```bash
+ cd helloworld-service
+ mkdir build
+ cd build
+ cmake ..
+ make
+ ```
+
+## Running the Service
+
+You use the Application Framework Binder Daemon (`afb-daemon`) to
+bind one instance of an application or service to the rest of the system.
+In this example, you are binding an instance of `helloworld-service`
+to the rest of the system:
+
+```bash
+afb-daemon --binding helloworld.so --port 3333 --token ''
+```
+
+The previous command starts `afb-daemon` and loads the `helloworld.so`
+binding.
+The daemon is now listening on port 3333 of the `localhost`.
+
+## Testing the Service
+
+Refer to the
+[AGL Test Framework](../../apis_services/#agl-test-framework) topic in the
+"APIs & Services" topic.
+You can test your `helloworld-service` binding using the `afm-test` tool.
+
+Examine the generic example describing how to launch the tests suite
+[here](../../apis_services/reference/afb-test/3_Launch_the_tests.html).
+This example can help you understand how to test your helloworld binding
+instance.
+
+## Using Optional Tools
+
+Once you have built and run your micro-service successfully using your
+native Linux system, you should consider using some additional
+development tools: X(Cross) Development System (XDS) and
+the Controller Area Network (CAN) Development Studio (CANdevStudio).
+
+* **XDS:** Cross-compiles and ports your AGL image to your target hardware.
+For information on XDS, see the
+"[X(cross) Development System: User's Guide](../reference/xds/part-1/xds-overview.html)"
+section.
+
+* **CANdevStudio:** Simulates CAN signals such as ignition status,
+doors status, or reverse gear by every automotive developer.
+For information on CANdevStudio, see the
+"[CANdevStudio Quickstart](../../apis_services/reference/candevstudio/1_Usage.html)"
+section.
+
+## Troubleshooting
+
+### systemd and/or libmicrohttpd
+
+If you encounter an error message similar to the following,
+you need to make some changes to your `cmake` file:
+
+```shell
+-- Checking for module 'libmicrohttpd>=0.9.60'
+-- No package 'libmicrohttpd' found
+CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:415 (message):
+ A required package was not found
+Call Stack (most recent call first):
+ /usr/share/cmake/Modules/FindPkgConfig.cmake:593 (_pkg_check_modules_internal)
+ conf.d/app-templates/cmake/cmake.d/01-build_options.cmake:92 (PKG_CHECK_MODULES)
+ conf.d/app-templates/cmake/common.cmake:77 (include)
+ conf.d/cmake/config.cmake:184 (include)
+ CMakeLists.txt:3 (include)
+```
+
+Open the `config.cmake` file located in `helloworld-service/conf.d/cmake/` directory
+and add a hash character (i.e. #) to the beginning of the "libsystemd>=222"
+and "libmicrohttpd>=0.9.60" strings.
+Following is an example of the edits:
+
+```CMake
+ set (PKG_REQUIRED_LIST
+ json-c
+ #libsystemd>=222
+ afb-daemon
+ #libmicrohttpd>=0.9.60
+ )
+```
+
+After making these changes, rebuild the service again as described in the
+"[Building the Service](./4-getting-source-files.html#building-the-service)"
+section previously on this page.