Code cosmetics. Mainly comments
[apps/agl-service-unicens.git] / README.md
index ec73e01..d95824f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 ------------------------------------------------------------------------
-AGL-Unicens binding expose Unicens-V2 APIs through AGL framework
+AGL-UNICENS binding expose UNICENS-V2 APIs through AGL framework
 ------------------------------------------------------------------------
 
 
@@ -7,7 +7,7 @@ AFB_daemon dependency on Standard Linux Distributions
 -------------------------------------------------------
     # handle dependencies > (OpenSuse-42.2, Fedora-25, Ubuntu 16.04.2LTS)
     gcc > 4.8
-    systemd-devel (libsystemd-dev>=222) 
+    systemd-devel (libsystemd-dev>=222)
     libuuid-devel
     file-devel(OpenSuSe) or libmagic-dev(Ubuntu)
     libjson-c-devel
@@ -15,11 +15,11 @@ AFB_daemon dependency on Standard Linux Distributions
     ElectricFence (BUG should not be mandatory)
     libopenssl-devel libgcrypt-devel libgnutls-devel (optional but requested by libmicrohttpd for https)
 
-    OpenSuse >=42.2 
-      zypper in gcc5 gdb gcc5-c++ git make ElectricFence systemd-devel libopenssl-devel  libuuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel 
+    OpenSuse >=42.2
+      zypper in gcc5 gdb gcc5-c++ git cmake make ElectricFence systemd-devel libopenssl-devel  libuuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel mxml-devel
 
     Ubuntu >= 16.4 libuuid-devel
-      apt-get install cmake git electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev
+      apt-get install cmake git electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev  libmxml-dev
 
     libmicrohttpd>=0.9.54 (as today OpenSuse-42.2 or Ubuntu-.16.4 ship older versions)
     afb-daemon from AGL Gerrit git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder
@@ -29,7 +29,7 @@ AFB_daemon dependency on Standard Linux Distributions
     echo "#----------  AGL options Start ---------" >>~/.bashrc
     echo "# Object: AGL cmake option for  binder/bindings" >>~/.bashrc
     echo "# Date: `date`" >>~/.bashrc
-    echo 'export CC=gcc-5; export CXX=g++-5' >>~/.bashrc   # if using gcc5 
+    echo 'export CC=gcc-5; export CXX=g++-5' >>~/.bashrc   # if using gcc5
     echo 'export INSTALL_PREFIX=$HOME/opt' >>~/.bashrc
     echo 'export LD_LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc
     echo 'export LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc
@@ -53,29 +53,74 @@ AFB_daemon dependency on Standard Linux Distributions
     git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder
 
     # Warning: previous GCC options should be set before initial cmake (clean Build/*)
-    cd app-framework-binder; mkdir build; cd build 
+    cd app-framework-binder; mkdir -p build; cd build
     cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX ..
     make
-    make install 
+    make install
 ```
 
 
-```
 # Compile binding
 
 ```
-source ~/.bashrc  # or any other file where your have place your compilation preferences
-mkdir build
-cd build
-cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX ..
-make
+    source ~/.bashrc  # or any other file where your have place your compilation preferences
+    mkdir -p build
+    cd build
+    cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX ..
+    make
 
-    afb-daemon --ldpaths=. --port=1234 --workdir=. --roothttp=./htdocs --token="" --verbose
+    afb-daemon --workdir=.. --ldpaths=build --port=1234  --roothttp=./htdocs --token="" --verbose
 
     speaker-test -twav -D hw:ep01 -c 2
     firefox http://localhost:1234
 ```
 
+# Archive
+
+```
+VERSION=0.1
+GIT_TAG=master
+PKG_NAME=UNICENS-agent
+git archive --format=tar.gz --prefix=${PKG_NAME}-${VERSION}/ ${GIT_TAG} -o ${PKG_NAME}_${VERSION}.orig.tar.gz
+```
+
+# Local Source Debug with GDB
+
+Warning: technically AGL bindings are shared libraries loaded thought 'dlopen'. GDB supports source debug of dynamically
+loaded libraries, but user should be warn that the actual path to sharelib symbols is directly inherited from DLOPEN.
+As a result if you change your directory after binder start with --workdir=xxx then GDB will not find symbols anymore
+
+
+```
+    Examples:
+
+    # WORK when running in direct
+    afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs
+
+    # FAIL when using GDB with warning: Could not load shared library ....
+    gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs
+    ...
+    warning: Could not load shared library symbols for ./build/ucs2-afb/afb-ucs2.so.
+    Do you need "set solib-search-path" or "set sysroot"?
+    ...
+```
+
+To debug sharelib symbol path: start your binder under GDB. Then break your session after the binder has
+loaded its bindings. Finally use "info sharedlibrary" and check 'SymsRead'. If equal to 'No' then either you start GDB
+from the wrong relative directory, either you have to use 'set solib-search-path' to force the path.
+
+```
+    gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs
+    run
+        ...
+        NOTICE: API UNICENS added
+        NOTICE: Waiting port=1234 rootdir=.
+        NOTICE: Browser URL= http://localhost:1234
+    (hit Ctrl-C to break the execution)
+    info sharedlibrary afb-*
+```
+
+
 # Running an debugging on a target
 
 ```
@@ -99,4 +144,6 @@ Note: remote-target-populate will
  - create a gdbinit file to transparently debug remotely in source code with gdb -x ./build/target/gdb-on-target-name.ini
  - to run and debug directly from your IDE just configure the run and debug properties with the corresponding filename
 
+Note that Netbeans impose to set debug directory to ./build/pkgout or it won't find binding symbols for source debugging
+