aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-18 09:44:34 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-18 09:44:34 +0100
commitbd814eafac20a5264782bad69ce2df1599921c68 (patch)
tree7b2f14fec5457d1fdc1ed4a0d7236d6f09525dca
parent2a297d08d6b686abe9ab8404a15aa892f4832e25 (diff)
Split markdown files to have a detailed TOC/summary.
Change-Id: I7d578335ba0d1719030bc2efc6518da17a6150dc Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
-rw-r--r--book.json2
-rw-r--r--docs/0-Doc-Revisions.md3
-rw-r--r--docs/SUMMARY.md35
-rw-r--r--docs/cover.jpgbin289362 -> 288540 bytes
-rw-r--r--docs/cover_small.jpgbin18768 -> 18769 bytes
-rw-r--r--docs/part-1/1_install-client.md14
-rw-r--r--docs/part-1/2-1_install-xds-server-docker.md152
-rw-r--r--docs/part-1/2-2_install-xds-server-vm.md82
-rw-r--r--docs/part-1/2-3_install-xds-server-native.md72
-rw-r--r--docs/part-1/2_install-xds-server.md316
-rw-r--r--docs/part-1/3_install-sdks.md2
-rw-r--r--docs/part-1/4-1_build-first-app-setup.md26
-rw-r--r--docs/part-1/4-2_build-first-app-cmd.md117
-rw-r--r--docs/part-1/4-3_build-first-app-dashboard.md47
-rw-r--r--docs/part-1/4-4_build-first-app-ide.md187
-rw-r--r--docs/part-1/4_build-first-app.md384
-rw-r--r--docs/part-1/5-1_debug-first-app-config.md76
-rw-r--r--docs/part-1/5-2_debug-first-app-cmd.md69
-rw-r--r--docs/part-1/5-3_debug-first-app-ide.md44
-rw-r--r--docs/part-1/5_debug-first-app.md191
-rw-r--r--docs/part-2/0_Abstract.md45
-rw-r--r--docs/part-2/1_Prerequisites.md44
-rw-r--r--docs/part-2/1_xds-server/0_abstract.md41
-rw-r--r--docs/part-2/1_xds-server/1_config.md86
-rw-r--r--docs/part-2/1_xds-server/2_how-to-run.md (renamed from docs/part-2/1_xds-server.md)256
-rw-r--r--docs/part-2/1_xds-server/3_build.md73
-rw-r--r--docs/part-2/1_xds-server/4_debug.md36
-rw-r--r--docs/part-2/2_xds-agent.md201
-rw-r--r--docs/part-2/2_xds-agent/0_abstract.md19
-rw-r--r--docs/part-2/2_xds-agent/1_config.md47
-rw-r--r--docs/part-2/2_xds-agent/2_start.md14
-rw-r--r--docs/part-2/2_xds-agent/3_build.md58
-rw-r--r--docs/part-2/2_xds-agent/4_debug.md69
-rw-r--r--docs/part-2/3_xds-cli.md233
-rw-r--r--docs/part-2/3_xds-cli/0_abstract.md15
-rw-r--r--docs/part-2/3_xds-cli/1_config.md57
-rw-r--r--docs/part-2/3_xds-cli/2_commands.md119
-rw-r--r--docs/part-2/3_xds-cli/3_build.md21
-rw-r--r--docs/part-2/3_xds-cli/4_debug.md38
-rw-r--r--docs/part-2/4_xds-gdb/0_abstract.md24
-rw-r--r--docs/part-2/4_xds-gdb/1_config.md (renamed from docs/part-2/4_xds-gdb.md)53
-rw-r--r--docs/part-2/4_xds-gdb/2_build.md21
-rw-r--r--docs/part-2/4_xds-gdb/3_debug.md3
-rw-r--r--docs/part-2/5_xds-exec.md5
44 files changed, 1735 insertions, 1662 deletions
diff --git a/book.json b/book.json
index 156a120..bca8e4b 100644
--- a/book.json
+++ b/book.json
@@ -6,7 +6,7 @@
"author": "Sebastien Douheret",
"website": "http://iot.bzh",
"published": "January 2018",
- "version": "1.0.0",
+ "version": "1.0.1",
"gitbook": "3.2.2",
"root": "docs",
diff --git a/docs/0-Doc-Revisions.md b/docs/0-Doc-Revisions.md
index cdd8941..9c31870 100644
--- a/docs/0-Doc-Revisions.md
+++ b/docs/0-Doc-Revisions.md
@@ -6,4 +6,5 @@ Document revisions
| Sept 2017 | 0.1 | Initial release | S. Douheret [ Iot.bzh ] |
| Oct 2017 | 0.2 | Various updates to match new behavior | S. Douheret [ Iot.bzh ] |
| Nov 2017 | 1.0.0-rc1 | Updates to match v1.0.0-rc1 behavior | S. Douheret [ Iot.bzh ] |
-| Jan 2018 | 1.0.0 | Add VM appliance and document new SDK management | S. Douheret, R. Le Martret [ Iot.bzh ] |
+| Jan 2018 | 1.0.0 | Add VM appliance and document<br> new SDK management | S. Douheret, R. Le Martret <br> [ Iot.bzh ] |
+| Jan 2018 | 1.0.1 | Removed duplicated parts and<br> split in subchapters | S. Douheret, R. Le Martret <br> [ Iot.bzh ] |
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index 1d8e43b..9b40ce3 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -5,13 +5,38 @@
* [Part 1 - Getting Started for Users](part-1/0_Abstract.md)
* [Installing xds client tools](part-1/1_install-client.md)
* [Installing xds-server](part-1/2_install-xds-server.md)
+ * [Based on Docker container](part-1/2-1_install-xds-server-docker.md)
+ * [Based on Virtual Machine appliance](part-1/2-2_install-xds-server-vm.md)
+ * [Native installation](part-1/2-3_install-xds-server-native.md)
* [Installing AGL SDKs](part-1/3_install-sdks.md)
* [Create your first AGL application](part-1/4_build-first-app.md)
+ * [Setup](part-1/4-1_build-first-app-setup.md)
+ * [Build using command line tool](part-1/4-2_build-first-app-cmd.md)
+ * [Build using XDS Dashboard](part-1/4-3_build-first-app-dashboard.md)
+ * [Build using a source code editor / IDE](part-1/4-4_build-first-app-ide.md)
* [Debug your first AGL application](part-1/5_debug-first-app.md)
+ * [Configuration](part-1/5-1_debug-first-app-config.md)
+ * [xds-gdb from command line](part-1/5-2_debug-first-app-cmd.md)
+ * [xds-gdb within an IDE](part-1/5-3_debug-first-app-ide.md)
* [Part 2 - XDS internals](part-2/0_Abstract.md)
- * [xds-server](part-2/1_xds-server.md)
- * [xds-agent](part-2/2_xds-agent.md)
- * [xds-cli](part-2/3_xds-cli.md)
- * [xds-gdb](part-2/4_xds-gdb.md)
- * [xds-exec](part-2/5_xds-exec.md)
+ * [Prerequisites](part-2/1_Prerequisites.md)
+ * [XDS-server](part-2/1_xds-server/0_abstract.md)
+ * [Configuration](part-2/1_xds-server/1_config.md)
+ * [How to run](part-2/1_xds-server/2_how-to-run.md)
+ * [Build from scratch](part-2/1_xds-server/3_build.md)
+ * [Debugging](part-2/1_xds-server/4_debug.md)
+ * [XDS-agent](part-2/2_xds-agent/0_abstract.md)
+ * [Configuration](part-2/2_xds-agent/1_config.md)
+ * [Start](part-2/2_xds-agent/2_start.md)
+ * [Build from scratch](part-2/2_xds-agent/3_build.md)
+ * [Debugging](part-2/2_xds-agent/4_debug.md)
+ * [XDS-cli](part-2/3_xds-cli/0_abstract.md)
+ * [Configuration](part-2/3_xds-cli/1_config.md)
+ * [CLI Commands](part-2/3_xds-cli/2_commands.md)
+ * [Build from scratch](part-2/3_xds-cli/3_build.md)
+ * [Debugging](part-2/3_xds-cli/4_debug.md)
+ * [XDS-gdb](part-2/4_xds-gdb/0_abstract.md)
+ * [Configuration](part-2/4_xds-gdb/1_config.md)
+ * [Build from scratch](part-2/4_xds-gdb/2_build.md)
+ * [Debugging](part-2/4_xds-gdb/3_debug.md)
diff --git a/docs/cover.jpg b/docs/cover.jpg
index e106be5..7b8af55 100644
--- a/docs/cover.jpg
+++ b/docs/cover.jpg
Binary files differ
diff --git a/docs/cover_small.jpg b/docs/cover_small.jpg
index d75bddd..328b180 100644
--- a/docs/cover_small.jpg
+++ b/docs/cover_small.jpg
Binary files differ
diff --git a/docs/part-1/1_install-client.md b/docs/part-1/1_install-client.md
index 255401d..2e26c7c 100644
--- a/docs/part-1/1_install-client.md
+++ b/docs/part-1/1_install-client.md
@@ -75,7 +75,7 @@ sudo zypper install agl-xds-gdb
XDS-agent is a client tool that must run on your local / user development
machine when you use XDS.
-For Linux distro, a user systemd service is provided, `xds-agent.service`.
+For **Linux** distro, a user systemd service is provided, `xds-agent.service`.
To start it automatically at boot and you can enable it using following commands:
@@ -93,3 +93,15 @@ systemctl --user start xds-agent.service
# Get status and log of xds-agent service
systemctl --user status xds-agent.service
```
+
+On **MacOS** (or Linux), you can start-it manually using following commands:
+
+```batch
+/opt/AGL/bin/xds-agent
+```
+
+On **Windows**, you can start-it manually using following commands:
+
+```batch
+C:\AGL\xds\xds-agent\xds-agent.exe
+```
diff --git a/docs/part-1/2-1_install-xds-server-docker.md b/docs/part-1/2-1_install-xds-server-docker.md
new file mode 100644
index 0000000..85d9340
--- /dev/null
+++ b/docs/part-1/2-1_install-xds-server-docker.md
@@ -0,0 +1,152 @@
+# Installation based on Docker container
+
+## Docker container prerequisites
+
+Docker is installed on the host machine, please refer to [Docker documentation](https://docs.docker.com/engine/installation/) for more details.
+
+## Get the container
+
+Load the pre-build AGL SDK docker image including `xds-server`:
+
+```bash
+wget -O - http://iot.bzh/download/public/XDS/docker/docker_agl_worker-xds-latest.tar.xz | docker load
+```
+
+You should get `docker.automotivelinux.org/agl/worker-xds:X.Y` image
+
+```bash
+# List image that we just load
+docker images "docker.automotivelinux.org/agl/worker-xds*"
+
+REPOSITORY TAG IMAGE ID CREATED SIZE
+docker.automotivelinux.org/agl/worker-xds 5.0 877979e534ff 3 hours ago 106MB
+```
+
+## Create and start a new container
+
+Use provided script to create a new docker image and start a new container:
+
+```bash
+# Get script
+wget -O xds-docker-create-container.sh 'https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-server.git;a=blob_plain;f=scripts/xds-docker-create-container.sh;hb=master'
+
+# Create new XDS worker container
+bash ./xds-docker-create-container.sh
+
+# Check that new container is running
+docker ps | grep worker-xds
+f67079db4339 docker.automotivelinux.org/agl/worker-xds:5.0 "/usr/bin/wait_for..." About a minute ago Up 34 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:69->69/udp, 0.0.0.0:10809->10809/tcp, 0.0.0.0:2222->22/tcp agl-xds-HOSTNAME-0-USERNAME
+```
+
+This container exposes following ports:
+
+| Port number | Description |
+|-------------|---------------------------------------------|
+| 8000 | `xds-server`: serve XDS webapp and REST API |
+| 69 | TFTP |
+| 2222 | ssh |
+
+This container also creates the following volumes (shared folders between
+inside and outside docker):
+
+| Directory on host | Directory inside docker | Comment |
+|-------------------|-------------------------|---------|
+| $HOME/xds-workspace | /home/devel/xds-workspace | XDS projects workspace location|
+| $HOME/xds-workspace/.xdt_0 | /xdt | location to store SDKs |
+| $USER_VOLUME | $USER_VOLUME | user path, see `--volume` option of `xds-docker-create-container.sh` script |
+
+<!-- note -->
+**Note:**
+
+You can add a new shared directory using `--volume` option in order
+to use for example with Path-Mapping folder type.
+
+```bash
+# Create new XDS worker container and share extra '$HOME/my-workspace' directory
+bash ./xds-docker-create-container.sh --volume /my-workspace:$HOME/my-workspace
+```
+
+You can change docker used port with `-id` option
+
+```bash
+# Create new XDS worker container with a different port number
+bash ./xds-docker-create-container.sh -id ${ID}
+
+# Check that new container is running
+docker ps | grep worker-xds
+f67079db4339 docker.automotivelinux.org/agl/worker-xds:5.0 "/usr/bin/wait_for..." About a minute ago Up 34 seconds 0.0.0.0:(2222+ID)->22/tcp, 0.0.0.0:(69+ID)->69/udp, 0.0.0.0:(8000+ID)->8000/tcp, 0.0.0.0:(10809+ID)->10809/tcp agl-xds-HOSTNAME-ID-USERNAME
+```
+
+<!-- endnote -->
+
+### Manually setup docker user id
+
+<!-- note -->
+**Note:**
+
+If you used `xds-docker-create-container.sh` script to create XDS
+docker container, user uid/gid inside docker has already been changed by this script.
+<!-- endnote -->
+
+If you plan to use **path-mapping sharing type for your projects**, you need to
+have the same user id and group id inside and outside docker.
+
+By default user and group name inside docker is set `devel` (id `1664`).
+
+Use following commands to replace id `1664` with your user/group id:
+
+```bash
+# Set docker container name to use (usually agl-xds-xxx where xxx is USERNAME@MACHINENAME-IDX-NAME)
+export CONTAINER_NAME=agl-xds-seb@laptop-0-seb
+docker ps | grep -q ${CONTAINER_NAME} || echo "ERROR: No container name \"${CONTAINER_NAME}\" please set a valid CONTAINER_NAME before you continue"
+
+# First kill all processes of devel user (including running xds-server)
+docker exec ${CONTAINER_NAME} bash -c "/bin/loginctl kill-user devel"
+
+# Change user and group id inside docker to match your ids
+docker exec ${CONTAINER_NAME} bash -c "usermod -u $(id -u) devel"
+docker exec ${CONTAINER_NAME} bash -c "groupmod -g $(id -g) devel"
+
+# Update some files ownership
+docker exec ${CONTAINER_NAME} bash -c "chown -R devel:devel /home/devel /tmp/xds*"
+
+# Restart devel autologin service
+docker exec ${CONTAINER_NAME} bash -c "systemctl restart autologin"
+
+# Restart xds-server as a service (ssh port 2222 may depend on your container ID)
+ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server"
+```
+
+## Check if xds-server is running (open XDS webapp)
+
+**`xds-server` is automatically started** as a service on container startup.
+
+If the container is running on your localhost, you can access to a basic web
+application:
+
+```bash
+xdg-open http://localhost:8000
+```
+
+If needed you can status / stop / start it manually using following commands:
+
+```bash
+# Status XDS server:
+ssh -p 2222 devel@localhost systemctl --user status xds-server.service
+
+# Stop XDS server
+ssh -p 2222 devel@localhost systemctl --user stop xds-server.service
+
+# Start XDS server
+ssh -p 2222 devel@localhost systemctl --user start xds-server.service
+
+# Get XDS server logs
+ssh -p 2222 devel@localhost journalctl --user --unit=xds-server.service --output=cat
+```
+
+`xds-server` is now up and running, you can now install AGL SDKs, please refer
+to next chapter named [Installing AGL SDKs](./3_install-sdks.html)
+
+<!-- note -->
+Please refer to [xds-server configuration](../part-2/1_xds-server/1_config.html) chapter for additional info about xds-server settings.
+<!-- endnote -->
diff --git a/docs/part-1/2-2_install-xds-server-vm.md b/docs/part-1/2-2_install-xds-server-vm.md
new file mode 100644
index 0000000..c93d982
--- /dev/null
+++ b/docs/part-1/2-2_install-xds-server-vm.md
@@ -0,0 +1,82 @@
+# Installation based on Virtual Machine appliance
+
+## Virtual Machine appliance prerequisites
+
+> VirtualBox is installed on the host machine
+
+please refer to [VirtualBox documentation](https://www.virtualbox.org/wiki/Downloads) for more details.
+
+## Get the appliance
+
+Load the pre-build AGL SDK appliance image including `xds-server`:
+
+```bash
+wget http://iot.bzh/download/public/XDS/appliance/xds-vm-debian9_latest.ova
+```
+
+## Clean old appliance
+
+You must have one and one xds appliance only.
+
+So, first remove the oldest xds appliance if needed.
+
+```bash
+# Get the virtual machine name
+VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2)
+echo ${VDS_VMNAME}
+
+# Remove old XDS appliance
+[ -n ${VDS_VMNAME} ] && VBoxManage controlvm ${VDS_VMNAME} poweroff
+[ -n ${VDS_VMNAME} ] && VBoxManage unregistervm ${VDS_VMNAME} --delete
+```
+
+## Create and start a new appliance
+
+Used provided script to create a new appliance or you can use VirtualBox GUI:
+
+```bash
+# Import image into VirtualBox
+VBoxManage import ./xds-vm-debian9_latest.ova
+
+# Check import result
+VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2)
+echo ${VDS_VMNAME}
+
+# Start XDS appliance
+[ -n ${VDS_VMNAME} ] && VBoxManage startvm ${VDS_VMNAME}
+```
+
+**Mandatory**:
+
+Add share folder to appliance, to allow files sharing using pathmap method:
+
+```bash
+# Create local share folder
+mkdir -p $HOME/xds-workspace
+
+#Add share folder to appliance
+vboxmanage sharedfolder add ${VDS_VMNAME} --name XDS-workspace --hostpath $HOME/xds-workspace
+```
+
+## Appliance settings
+
+This image exposes following network ports (NAT mode):
+
+- 8000 : `xds-server` to serve XDS basic web page
+- 69 : TFTP
+- 2222 : ssh
+
+## Check if xds-server is running
+
+`xds-server` is automatically started as a service on container startup.
+
+To check if xds-server is correctly install and running, you can access the basic web page that gives you some instructions:
+
+```bash
+# if container/appliance is running on your local host
+# (else replace localhost by the name or the ip of the machine running the container)
+xdg-open http://localhost:8000
+```
+
+`xds-server` is now up and running, you can now install AGL SDKs, please refer
+to next chapter named [Installing AGL SDKs](./3_install-sdks.html)
diff --git a/docs/part-1/2-3_install-xds-server-native.md b/docs/part-1/2-3_install-xds-server-native.md
new file mode 100644
index 0000000..ffdbc7c
--- /dev/null
+++ b/docs/part-1/2-3_install-xds-server-native.md
@@ -0,0 +1,72 @@
+# Native installation
+
+You can chose to install xds-server 'natively' instead of within a docker
+container but note that only Linux host OSes are supported and tested for native
+installation !
+
+## Install packages for debian distro type
+
+```bash
+# 'DISTRO' can be set to { xUbuntu_16.04, xUbuntu_16.10, xUbuntu_17.04, Debian_8.0, Debian_9.0}
+export DISTRO="xUbuntu_16.04"
+
+wget -O - http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/Release.key | sudo apt-key add -
+sudo bash -c "cat >> /etc/apt/sources.list.d/AGL.list <<EOF
+deb http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/ ./
+EOF"
+
+sudo apt-get update
+sudo apt-get install agl-xds-server
+```
+
+## Install packages for openSUSE distro type
+
+```bash
+# DISTRO can be set to {openSUSE_Leap_42.2, openSUSE_Leap_42.3, openSUSE_Tumbleweed}
+export DISTRO="openSUSE_Leap_42.2"
+
+sudo zypper ar http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/isv:LinuxAutomotive:app-Development.repo
+
+sudo zypper ref
+sudo zypper install agl-xds-server
+```
+
+## Configure xds-server
+
+<!-- note -->
+**Optional step**: skip this chapter if you plan to use default settings
+<!-- endnote -->
+
+Please refer to [Configuration chapter of xds-server](../part-2/1_xds-server/1_config.html)
+documentation for more details about JSON configuration file.
+
+## Start/Stop xds-server
+
+`xds-server` can be managed as a systemd service with the following commands:
+
+```bash
+# Status XDS server:
+systemctl --user status xds-server.service
+
+# Stop XDS server
+systemctl --user stop xds-server.service
+
+# Start XDS server
+systemctl --user start xds-server.service
+
+# Get XDS server logs
+systemctl --user --unit=xds-server.service --output=cat
+```
+
+To check if xds-server is correctly install and running, you can access the web
+interface, using a web browser :
+
+```bash
+xdg-open http://localhost:8000
+```
+
+or get the current version using the following curl command:
+
+```bash
+curl http://localhost:8000/api/v1/version
+```
diff --git a/docs/part-1/2_install-xds-server.md b/docs/part-1/2_install-xds-server.md
index cbbca44..76afee3 100644
--- a/docs/part-1/2_install-xds-server.md
+++ b/docs/part-1/2_install-xds-server.md
@@ -13,316 +13,6 @@ Several installation types are supported:
| Install type | Supported OS | Section to refer |
|--------------|--------------|------------------|
-| Container | Linux or MacOS | [see Installation based on Docker container](#installation-based-on-docker-container) |
-| Virtual Machine | Linux, MacOS or Windows | [see Installation based on VirtualBox appliance](#installation-based-on-virtual-machine-appliance) |
-| Native | Linux | [see Native installation](#native-installation) |
-
-## Installation based on Docker container
-
-### Docker container prerequisites
-
-Docker is installed on the host machine, please refer to [Docker documentation](https://docs.docker.com/engine/installation/) for more details.
-
-### Get the container
-
-Load the pre-build AGL SDK docker image including `xds-server`:
-
-```bash
-wget -O - http://iot.bzh/download/public/XDS/docker/docker_agl_worker-xds-latest.tar.xz | docker load
-```
-
-You should get `docker.automotivelinux.org/agl/worker-xds:X.Y` image
-
-```bash
-# List image that we just load
-docker images "docker.automotivelinux.org/agl/worker-xds*"
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-docker.automotivelinux.org/agl/worker-xds 5.0 877979e534ff 3 hours ago 106MB
-```
-
-### Create and start a new container
-
-Use provided script to create a new docker image and start a new container:
-
-```bash
-# Get script
-wget -O xds-docker-create-container.sh 'https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-server.git;a=blob_plain;f=scripts/xds-docker-create-container.sh;hb=master'
-
-# Create new XDS worker container
-bash ./xds-docker-create-container.sh
-
-# Check that new container is running
-docker ps | grep worker-xds
-f67079db4339 docker.automotivelinux.org/agl/worker-xds:5.0 "/usr/bin/wait_for..." About a minute ago Up 34 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:69->69/udp, 0.0.0.0:10809->10809/tcp, 0.0.0.0:2222->22/tcp agl-xds-HOSTNAME-0-USERNAME
-```
-
-This container exposes following ports:
-
-| Port number | Description |
-|-------------|---------------------------------------------|
-| 8000 | `xds-server`: serve XDS webapp and REST API |
-| 69 | TFTP |
-| 2222 | ssh |
-
-This container also creates the following volumes (shared folders between
-inside and outside docker):
-
-| Directory on host | Directory inside docker | Comment |
-|-------------------|-------------------------|---------|
-| $HOME/xds-workspace | /home/devel/xds-workspace | XDS projects workspace location|
-| $HOME/xds-workspace/.xdt_0 | /xdt | location to store SDKs |
-| $USER_VOLUME | $USER_VOLUME | user path, see `--volume` option of `xds-docker-create-container.sh` script |
-
-<!-- note -->
-**Note:**
-
-You can add a new shared directory using `--volume` option in order
-to use for example with Path-Mapping folder type.
-
-```bash
-# Create new XDS worker container and share extra '$HOME/my-workspace' directory
-bash ./xds-docker-create-container.sh --volume /my-workspace:$HOME/my-workspace
-```
-
-You can change docker used port with `-id` option
-
-```bash
-# Create new XDS worker container with a different port number
-bash ./xds-docker-create-container.sh -id ${ID}
-
-# Check that new container is running
-docker ps | grep worker-xds
-f67079db4339 docker.automotivelinux.org/agl/worker-xds:5.0 "/usr/bin/wait_for..." About a minute ago Up 34 seconds 0.0.0.0:(2222+ID)->22/tcp, 0.0.0.0:(69+ID)->69/udp, 0.0.0.0:(8000+ID)->8000/tcp, 0.0.0.0:(10809+ID)->10809/tcp agl-xds-HOSTNAME-ID-USERNAME
-```
-
-<!-- endnote -->
-
-#### Manually setup docker user id
-
-<!-- note -->
-**Note:**
-
-If you used `xds-docker-create-container.sh` script to create XDS
-docker container, user uid/gid inside docker has already been changed by this script.
-<!-- endnote -->
-
-If you plan to use **path-mapping sharing type for your projects**, you need to
-have the same user id and group id inside and outside docker.
-
-By default user and group name inside docker is set `devel` (id `1664`).
-
-Use following commands to replace id `1664` with your user/group id:
-
-```bash
-# Set docker container name to use (usually agl-xds-xxx where xxx is USERNAME@MACHINENAME-IDX-NAME)
-export CONTAINER_NAME=agl-xds-seb@laptop-0-seb
-docker ps | grep -q ${CONTAINER_NAME} || echo "ERROR: No container name \"${CONTAINER_NAME}\" please set a valid CONTAINER_NAME before you continue"
-
-# First kill all processes of devel user (including running xds-server)
-docker exec ${CONTAINER_NAME} bash -c "/bin/loginctl kill-user devel"
-
-# Change user and group id inside docker to match your ids
-docker exec ${CONTAINER_NAME} bash -c "usermod -u $(id -u) devel"
-docker exec ${CONTAINER_NAME} bash -c "groupmod -g $(id -g) devel"
-
-# Update some files ownership
-docker exec ${CONTAINER_NAME} bash -c "chown -R devel:devel /home/devel /tmp/xds*"
-
-# Restart devel autologin service
-docker exec ${CONTAINER_NAME} bash -c "systemctl restart autologin"
-
-# Restart xds-server as a service (ssh port 2222 may depend on your container ID)
-ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server"
-```
-
-### Check if xds-server is running (open XDS webapp)
-
-**`xds-server` is automatically started** as a service on container startup.
-
-If the container is running on your localhost, you can access to a basic web
-application:
-
-```bash
-xdg-open http://localhost:8000
-```
-
-If needed you can status / stop / start it manually using following commands:
-
-```bash
-# Status XDS server:
-ssh -p 2222 devel@localhost systemctl --user status xds-server.service
-
-# Stop XDS server
-ssh -p 2222 devel@localhost systemctl --user stop xds-server.service
-
-# Start XDS server
-ssh -p 2222 devel@localhost systemctl --user start xds-server.service
-
-# Get XDS server logs
-ssh -p 2222 devel@localhost journalctl --user --unit=xds-server.service --output=cat
-```
-
-`xds-server` is now up and running, you can now install AGL SDKs, please refer
-to next chapter named [Installing AGL SDKs](3_install-sdks.html#installing-agl-sdks)
-
-<!-- note -->
-Please refer to [part 2 - xds-server](../part-2/1_xds-server.html#sdk-cross-toolchain-management) documentation
-for additional info.
-<!-- endnote -->
-
-## Installation based on Virtual Machine appliance
-
-### Virtual Machine appliance prerequisites
-
-> VirtualBox is installed on the host machine
-
-please refer to [VirtualBox documentation](https://www.virtualbox.org/wiki/Downloads) for more details.
-
-### Get the appliance
-
-Load the pre-build AGL SDK appliance image including `xds-server`:
-
-```bash
-wget http://iot.bzh/download/public/XDS/appliance/xds-vm-debian9_latest.ova
-```
-
-### Clean old appliance
-
-You must have one and one xds appliance only.
-
-So, first remove the oldest xds appliance if needed.
-
-```bash
-# Get the virtual machine name
-VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2)
-echo ${VDS_VMNAME}
-
-# Remove old XDS appliance
-[ -n ${VDS_VMNAME} ] && VBoxManage controlvm ${VDS_VMNAME} poweroff
-[ -n ${VDS_VMNAME} ] && VBoxManage unregistervm ${VDS_VMNAME} --delete
-```
-
-### Create and start a new appliance
-
-Used provided script to create a new appliance or you can use VirtualBox GUI:
-
-```bash
-# Import image into VirtualBox
-VBoxManage import ./xds-vm-debian9_latest.ova
-
-# Check import result
-VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2)
-echo ${VDS_VMNAME}
-
-# Start XDS appliance
-[ -n ${VDS_VMNAME} ] && VBoxManage startvm ${VDS_VMNAME}
-```
-
-**Mandatory**:
-
-Add share folder to appliance, to allow files sharing using pathmap method:
-
-```bash
-# Create local share folder
-mkdir -p $HOME/xds-workspace
-
-#Add share folder to appliance
-vboxmanage sharedfolder add ${VDS_VMNAME} --name XDS-workspace --hostpath $HOME/xds-workspace
-```
-
-### Appliance settings
-
-This image exposes following network ports (NAT mode):
-
-- 8000 : `xds-server` to serve XDS basic web page
-- 69 : TFTP
-- 2222 : ssh
-
-## Check if xds-server is running
-
-`xds-server` is automatically started as a service on container startup.
-
-To check if xds-server is correctly install and running, you can access the basic web page that gives you some instructions:
-
-```bash
-# if container/appliance is running on your local host
-# (else replace localhost by the name or the ip of the machine running the container)
-xdg-open http://localhost:8000
-```
-
-`xds-server` is now up and running, you can now install AGL SDKs, please refer
-to next chapter named [Installing AGL SDKs](3_install-sdks.html#installing-agl-sdks)
-
-## Native installation
-
-You can chose to install xds-server 'natively' instead of within a docker
-container but note that only Linux host OSes are supported and tested for native
-installation !
-
-### Install packages for debian distro type
-
-```bash
-# 'DISTRO' can be set to { xUbuntu_16.04, xUbuntu_16.10, xUbuntu_17.04, Debian_8.0, Debian_9.0}
-export DISTRO="xUbuntu_16.04"
-
-wget -O - http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/Release.key | sudo apt-key add -
-sudo bash -c "cat >> /etc/apt/sources.list.d/AGL.list <<EOF
-deb http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/ ./
-EOF"
-
-sudo apt-get update
-sudo apt-get install agl-xds-server
-```
-
-### Install packages for openSUSE distro type
-
-```bash
-# DISTRO can be set to {openSUSE_Leap_42.2, openSUSE_Leap_42.3, openSUSE_Tumbleweed}
-export DISTRO="openSUSE_Leap_42.2"
-
-sudo zypper ar http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/app-Development/${DISTRO}/isv:LinuxAutomotive:app-Development.repo
-
-sudo zypper ref
-sudo zypper install agl-xds-server
-```
-
-### Configure xds-server
-
-<!-- note -->
-**Optional step**: skip this chapter if you plan to use default settings
-<!-- endnote -->
-
-Please refer to [Configuration chapter of xds-server](../part-2/1_xds-server.html#configuration)
-documentation for more details about JSON configuration file.
-
-### Start/Stop xds-server
-
-`xds-server` can be managed as a systemd service with the following commands:
-
-```bash
-# Status XDS server:
-systemctl --user status xds-server.service
-
-# Stop XDS server
-systemctl --user stop xds-server.service
-
-# Start XDS server
-systemctl --user start xds-server.service
-
-# Get XDS server logs
-systemctl --user --unit=xds-server.service --output=cat
-```
-
-To check if xds-server is correctly install and running, you can access the web
-interface, using a web browser :
-
-```bash
-xdg-open http://localhost:8000
-```
-
-or get the current version using the following curl command:
-
-```bash
-curl http://localhost:8000/api/v1/version
-```
+| Container | Linux or MacOS | [see Installation based on Docker container](./2-1_install-xds-server-docker.html) |
+| Virtual Machine | Linux, MacOS or Windows | [see Installation based on VirtualBox appliance](./2-2_install-xds-server-vm.html) |
+| Native | Linux | [see Native installation](./2-3_install-xds-server-native.html) |
diff --git a/docs/part-1/3_install-sdks.md b/docs/part-1/3_install-sdks.md
index 67a6002..8fc0774 100644
--- a/docs/part-1/3_install-sdks.md
+++ b/docs/part-1/3_install-sdks.md
@@ -93,5 +93,5 @@ Note that you can abort installation by clicking on `CANCEL` button.
## More info
-Please refer to [xds-server](../part-2/1_xds-server.html) chapter for more details
+Please refer to [xds-server](../part-2/1_xds-server/0_abstract.html) chapter for more details
about SDKs management.
diff --git a/docs/part-1/4-1_build-first-app-setup.md b/docs/part-1/4-1_build-first-app-setup.md
new file mode 100644
index 0000000..f974b9e
--- /dev/null
+++ b/docs/part-1/4-1_build-first-app-setup.md
@@ -0,0 +1,26 @@
+# Setup
+
+Let's use _helloworld-native-application_ project as example, so you need first to clone
+this project into a directory that will be accessible by `xds-server`.
+
+Depending of the project sharing method:
+
+- Cloud sync: you can clone project anywhere on your local disk,
+- Path mapping: you must clone project into `$HOME/xds-workspace` directory.
+
+<!-- note -->
+**Note:** : [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL
+project based on [app-templates](https://git.automotivelinux.org/apps/app-templates/)
+(included as a git submodule). This CMake templating, used to develop application
+with the AGL Application Framework, will automatically generate makefile rules
+(eg. `remote-target-populate`) or scripts (eg. `build/target/xxx` scripts).
+
+For more info about app-template, please refer to [this documentation](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/sdk-devkit/docs/part-2/2_4-Use-app-templates.html).
+<!-- endnote -->
+
+## Clone project
+
+```bash
+cd $HOME/xds-workspace
+git clone --recursive https://github.com/iotbzh/helloworld-native-application.git
+```
diff --git a/docs/part-1/4-2_build-first-app-cmd.md b/docs/part-1/4-2_build-first-app-cmd.md
new file mode 100644
index 0000000..02de723
--- /dev/null
+++ b/docs/part-1/4-2_build-first-app-cmd.md
@@ -0,0 +1,117 @@
+# Build using command line tool
+
+## Declare project
+
+Use XDS command line tool named [xds-cli](../part-2/3_xds-cli/0_abstract.html) to declare your
+project from command line and more precisely the `projects add` command
+(short option: `prj add`).
+
+```bash
+xds-cli prj add --label="Project_helloworld-native-application" --type=pm --path=/home/seb/xds-workspace/helloworld-native-application --server-path=/home/devel/xds-workspace/helloworld-native-application
+```
+
+> **Note:** option `--url=http://localhost:1234` may be added to `xds-cli` in
+> order to set url of `xds-agent` in case of agent is not running on default
+> port (for example here, 1234)
+
+## Build from command line
+
+You need to determine which is the unique id of your project. You can find
+this ID in project page of XDS dashboard or you can get it from command line
+using `xds-cli` tool and `projects list` command (short: `prj ls`):
+
+```bash
+xds-cli prj ls
+ID Label LocalPath
+f9904f70-d441-11e7-8c59-3c970e49ad9b Project_helloworld-service /home/seb/xds-workspace/helloworld-service
+4021617e-ced0-11e7-acd2-3c970e49ad9b Project_helloworld-native-application /home/seb/xds-workspace/helloworld-native-application
+```
+
+XDS tools, including `xds-cli` are installed by default in `/opt/AGL/bin`
+directory and this path has been added into your PATH variable.
+
+If it is not the case, just add it manually using `export PATH=${PATH}:/opt/AGL/bin` command line.
+
+Now to refer your project, just use --id option or use `XDS_PROJECT_ID`
+environment variable.
+
+<!-- note -->
+**Note:**
+
+Short id notation is also supported as soon as given id value is non ambiguous.
+
+For example, to refer to Project_helloworld-native-application project listed
+in above command, you can simply use --id 40 instead of --id 4021617e-ced0-11e7-acd2-3c970e49ad9b
+<!-- endnote -->
+
+You also need to determine the ID of the cross SDK you want to use to cross build
+you application.
+
+To list installed SDK, use the following command:
+
+```bash
+xds-cli sdks ls
+List of installed SDKs:
+ ID NAME
+ 7aa19224-b769-3463-98b1-4c029d721766 aarch64 (3.99.1+snapshot)
+ 41a1efc4-8443-3fb0-afe5-8313e0c96efd corei7-64 (3.99.2+snapshot)
+ c226821b-b5c0-386d-94fe-19f807946d03 aarch64 (3.99.3)
+```
+
+You are now ready to use XDS to for example cross build your project.
+
+Here is an example to build a project based on CMakefile:
+
+```bash
+# Go into your project directory and create a build directory
+cd $MY_PROJECT_DIR
+mkdir build
+
+# Generate build system using cmake
+xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && cmake .."
+
+# Build the project
+xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && make all"
+```
+
+<!-- note -->
+**Note:** If you use `&&`, `||` or `;` statement in the executed command line,
+you need to double quote the command, for example `"cd build && make`.
+<!-- endnote -->
+
+To avoid to set project id, sdks id, url, ... for each command line, you can
+define these settings as environment variables within an env file and just set
+`--config` option or source file before executing xds-cli command.
+
+Note that XDS creates a file named `xds-project.conf` (only if not already exists)
+when you declare a new project using XDS Dashboard (or using `xds-cli prj add...`).
+Edit this file if needed and then refer it with `--config` option.
+
+For example, the equivalence of above command is:
+
+```bash
+# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
+cd $MY_PROJECT_DIR
+
+# Edit and potentially adapt xds-project.conf file that has been created
+# automatically on project declaration using XDS Dashboard
+cat xds-project.conf
+ # XDS project settings
+ export XDS_AGENT_URL=localhost:8800
+ export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
+ export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
+
+# Create build directory and invoke cmake and then build project
+xds-cli exec --config=./xds-project.conf -- "mkdir -p build && cd build && cmake .."
+cd build && xds-cli exec --config=../xds-project.conf -- "make all"
+
+# Or equivalent by first sourcing conf file (avoid to set --config option)
+source xds-project.conf
+xds-cli exec "mkdir -p build && cd build && cmake .."
+cd build && xds-cli exec "make all"
+```
+
+<!-- note -->
+**Note:** all parameters after a double dash (--) are considered as the command
+to execute.
+<!-- endnote -->
diff --git a/docs/part-1/4-3_build-first-app-dashboard.md b/docs/part-1/4-3_build-first-app-dashboard.md
new file mode 100644
index 0000000..4519f54
--- /dev/null
+++ b/docs/part-1/4-3_build-first-app-dashboard.md
@@ -0,0 +1,47 @@
+# Build using XDS Dashboard
+
+## Declare project
+
+Use XDS Dashboard to declare your project. Open a browser and connect to XDS
+Dashboard.
+
+URL depends of your config, for example `http://localhost:8800`
+
+Open the right sidebar and select `Projects` entry to open project page and then
+create/declare a new project by with the plus icon:
+
+![](./pictures/xds-dashboard-icon-2.png){:: style="margin:auto; display:flex"}
+
+<!-- pagebreak -->
+
+Set `Sharing Type` and paths according to your needs.
+
+![](./pictures/xds-dashboard-prj-1.png){:: style="width:90%; max-width:560px; margin:auto; display:flex"}
+
+Note that XDS creates (if not already exists) a file named `xds-project.conf`
+when you declare a new project.
+
+This file may be very useful when you plan to use XDS client tools such as `xds-cli` or `xds-gdb`.
+
+<!-- note -->
+**Note:**
+
+When `Path mapping` type is selected, you must clone your project into
+`$HOME/xds-workspace` directory (named **Local Path** in modal window).
+
+If XDS server is running in the XDS docker container (see [Installation based on Docker container](./2-1_install-xds-server-docker.html) ),
+the **Server Path** must be set to `/home/devel/xds-workspace/xxx` where xxx is your
+project directory name.
+
+If you select `Cloud Sync`, you can clone your project wherever you want on
+your local disk.
+<!-- endnote -->
+
+## Build from XDS dashboard
+
+Open the build page build entry of left sidebar ![](./pictures/xds-dashboard-icon-3.png){:: style="display:inline; padding:0;"},
+
+then select your **Project** and the **Cross SDK** you want to use and click on
+**Clean / Pre-Build / Build / Populate** buttons to execute various build actions.
+
+![](./pictures/xds-dashboard-prj-2.png){:: style="width:90%; max-width:600px; margin:auto; display:flex"}
diff --git a/docs/part-1/4-4_build-first-app-ide.md b/docs/part-1/4-4_build-first-app-ide.md
new file mode 100644
index 0000000..c3c0cda
--- /dev/null
+++ b/docs/part-1/4-4_build-first-app-ide.md
@@ -0,0 +1,187 @@
+# Build using a source code editor / IDE
+
+First create an XDS config file or reuse the previous one, for example we use
+here aarch64 SDK to cross build application for a Renesas Gen3 board.
+
+```bash
+# create file at root directory of your project
+# for example:
+# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
+cat > $MY_PROJECT_DIR/xds-project.conf << EOF
+ export XDS_AGENT_URL=localhost:8800
+ export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
+ export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
+EOF
+```
+
+## NetBeans
+
+This chapter will show you how to create 2 configurations, one to compile your
+project natively (using native GNU gcc) and one to cross-compile your project
+using XDS.
+
+You can easily switch from one to other configuration using menu
+**Run -> Set Project Configuration**.
+
+__Netbeans 8.x :__
+
+- Open menu **Tools** -> **Options**
+ - Open **C/C++** tab, in **Build Tools** sub-tab, click on **Add** button:
+
+ ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Then, you should set **Make Command** and **Debugger Command** to point to xds tools:
+
+ ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Finally click on **OK** button.
+
+- Now create we first declare project into NetBeans and create first a native
+ configuration. To do that, open menu **File** -> **New Project**
+
+- Select **C/C++ Project with Existing Sources** ;
+ Click on **Next** button
+
+- Specify your project directory and set **Select Configuration Mode** to
+ **Custom**. Keep **Tool Collection** to **Default GNU** in order to create a
+ *native configuration* based on native GNU GCC. Finally click on **Next** button.
+
+ ![Select Model panel](./pictures/nb_new-project-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+- Just update **Run in Folder** field and add `build_native` suffix so that
+ resulting build files will be located into `build_native` sub-directory.
+ Keep all others settings to default value and click on **Next** button.
+
+ ![Select Model panel](./pictures/nb_new-project-2.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+- Click several times on **Next button** (always keep default settings) and
+ click on **Finish** button to complete creation of native configuration.
+
+- Now we will create a **cross configuration** based on XDS tools.
+ Edit project properties (using menu **File** -> **Project Properties**) to add a new configuration that will use XDS to cross-compile your application for example for a Renesas Gen3 board.
+
+ - in **Build** category, click on **Manage Configurations** button and then **New** button to add a new configuration named for example "Gen3 board"
+
+ ![Select Build category](./pictures/nb_new-project-3.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Click on **Set Active** button
+
+ - Select **Pre-Build** sub-category, and set:
+ - Working Directory: `build_gen3`
+ - Command Line: `xds-cli exec -c ../xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ..`
+ - Pre-build First: `ticked`
+
+ - Select **Make** sub-category, and set:
+ - Working Directory: `build_gen3`
+ - Build Command: `xds-cli exec -c ../xds-project.conf -- make remote-target-populate`
+ - Clean Command: `xds-cli exec -c ../xds-project.conf -- make clean`
+
+ ![Select Make sub-category](./pictures/nb_new-project-4.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Select **Run** sub-category, and set:
+ - Run Command: `target/start-on-root@renesas-gen3.sh`
+ - Run Directory: `build-gen3`
+
+ ![Select Run sub-category](./pictures/nb_new-project-5.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Click on **OK** button to save settings
+
+By changing configuration from **Default** to **Gen3 board**, you can now simply
+compile your helloworld application natively (**Default** configuration) or
+cross-compile your application through XDS for the Renesas Gen3 board
+(**Gen3 board** configuration).
+
+## Visual Studio Code
+
+Open your project in VS Code
+
+```bash
+cd $MY_PROJECT_DIR
+code . &
+```
+
+Add new tasks : press `Ctrl+Shift+P` and select the `Tasks: Configure Task`
+command and you will see a list of task runner templates.
+
+And define your own tasks, here is an example to build
+[helloworld-native-application](https://github.com/iotbzh/helloworld-native-application)
+AGL helloworld application based on cmake template.
+
+```json
+{
+ "version": "2.0.0",
+ "type": "shell",
+ "presentation": {
+ "reveal": "always"
+ },
+ "tasks": [
+ {
+ "taskName": "clean",
+ "command": "/bin/rm -rf ${workspaceFolder}/build/* && mkdir -p build && echo Cleanup done.",
+ "problemMatcher": []
+ },
+ {
+ "taskName": "pre-build",
+ "group": "build",
+ "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ../",
+ "problemMatcher": [
+ "$gcc"
+ ]
+ },
+ {
+ "taskName": "build",
+ "group": "build",
+ "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget",
+ "problemMatcher": [
+ "$gcc"
+ ]
+ },
+ {
+ "taskName": "populate",
+ "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget-target-install",
+ "problemMatcher": []
+ }
+ ]
+}
+```
+
+> **Note:**
+>
+> You can also add your own keybindings to trig above tasks, for example:
+>
+> ```json
+> // Build
+> {
+> "key": "alt+f9",
+> "command": "workbench.action.tasks.runTask",
+> "args": "clean"
+> },
+> {
+> "key": "alt+f10",
+> "command": "workbench.action.tasks.runTask",
+> "args": "pre-build"
+> },
+> {
+> "key": "alt+f11",
+> "command": "workbench.action.tasks.runTask",
+> "args": "build"
+> },
+> {
+> "key": "alt+f12",
+> "command": "workbench.action.tasks.runTask",
+> "args": "populate"
+> },
+> ```
+>
+> More details about VSC keybindings [here](https://code.visualstudio.com/docs/editor/tasks#_binding-keyboard-shortcuts-to-tasks)
+>
+> More details about VSC tasks [here](https://code.visualstudio.com/docs/editor/tasks)
+
+## Qt Creator
+
+Please refer to [agl-hello-qml](https://github.com/radiosound-com/agl-hello-qml#clone--build-project) project.
+Thanks to Dennis for providing this useful example.
+
+## Others IDE
+
+*Coming soon...*
diff --git a/docs/part-1/4_build-first-app.md b/docs/part-1/4_build-first-app.md
index f6810d1..34f895b 100644
--- a/docs/part-1/4_build-first-app.md
+++ b/docs/part-1/4_build-first-app.md
@@ -6,386 +6,16 @@
(see previous chapter: [Installing XDS client tools](./1_install-client.html) )
- `xds-server` is running locally in a docker container or is accessible on your
network (see previous chapter: [Installing XDS server](./2_install-xds-server.html))
-- one or more SDK have been installed (see previous chapter: [Installing AGL SDKs](3_install-sdks.html))
+- one or more SDK have been installed (see previous chapter: [Installing AGL SDKs](./3_install-sdks.html))
- XDS configuration is correct: in other words, connection is correctly
established between `xds-agent` and `xds-server` and no error message is
displayed when you open XDS Dashboard in a web browser.
-## Setup
+---
-Let's use _helloworld-native-application_ project as example, so you need first to clone
-this project into a directory that will be accessible by `xds-server`.
+Links to subchapters :
-Depending of the project sharing method:
-
-- Cloud sync: you can clone project anywhere on your local disk,
-- Path mapping: you must clone project into `$HOME/xds-workspace` directory.
-
-<!-- note -->
-**Note:** : [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL
-project based on [app-templates](https://git.automotivelinux.org/apps/app-templates/)
-(included as a git submodule). This CMake templating, used to develop application
-with the AGL Application Framework, will automatically generate makefile rules
-(eg. `remote-target-populate`) or scripts (eg. `build/target/xxx` scripts).
-
-For more info about app-template, please refer to [this documentation](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/sdk-devkit/docs/part-2/2_4-Use-app-templates.html).
-<!-- endnote -->
-
-### Clone project
-
-```bash
-cd $HOME/xds-workspace
-git clone --recursive https://github.com/iotbzh/helloworld-native-application.git
-```
-
-### Declare project using XDS Dashboard
-
-Use XDS Dashboard to declare your project. Open a browser and connect to XDS
-Dashboard.
-
-URL depends of your config, for example `http://localhost:8800`
-
-Open the right sidebar and select `Projects` entry to open project page and then
-create/declare a new project by with the plus icon:
-
-![](./pictures/xds-dashboard-icon-2.png){:: style="margin:auto; display:flex"}
-
-<!-- pagebreak -->
-
-Set `Sharing Type` and paths according to your needs.
-
-![](./pictures/xds-dashboard-prj-1.png){:: style="width:90%; max-width:560px; margin:auto; display:flex"}
-
-Note that XDS creates (if not already exists) a file named `xds-project.conf`
-when you declare a new project.
-
-This file may be very useful when you plan to use XDS client tools such as `xds-cli` or `xds-gdb`.
-
-<!-- note -->
-**Note:**
-
-When `Path mapping` type is selected, you must clone your project into
-`$HOME/xds-workspace` directory (named **Local Path** in modal window).
-
-If XDS server is running in the XDS docker container (see [Installation based on Docker container](./2_install-xds-server.html#installation-based-on-docker-container) ),
-the **Server Path** must be set to `/home/devel/xds-workspace/xxx` where xxx is your
-project directory name.
-
-If you select `Cloud Sync`, you can clone your project wherever you want on
-your local disk.
-<!-- endnote -->
-
-### Declare project from command line
-
-Use XDS command line tool named [xds-cli](./part2/3_xds-cli.html) to declare your
-project from command line and more precisely the `projects add` command
-(short option: `prj add`).
-
-```bash
-xds-cli prj add --label="Project_helloworld-native-application" --type=pm --path=/home/seb/xds-workspace/helloworld-native-application --server-path=/home/devel/xds-workspace/helloworld-native-application
-```
-
-> **Note:** option `--url=http://localhost:1234` may be added to `xds-cli` in
-> order to set url of `xds-agent` in case of agent is not running on default
-> port (for example here, 1234)
-
-<!-- pagebreak -->
-
-## Build from XDS dashboard
-
-Open the build page build entry of left sidebar ![](./pictures/xds-dashboard-icon-3.png){:: style="display:inline; padding:0;"},
-
-then select your **Project** and the **Cross SDK** you want to use and click on
-**Clean / Pre-Build / Build / Populate** buttons to execute various build actions.
-
-![](./pictures/xds-dashboard-prj-2.png){:: style="width:90%; max-width:600px; margin:auto; display:flex"}
-
-## Build from command line
-
-You need to determine which is the unique id of your project. You can find
-this ID in project page of XDS dashboard or you can get it from command line
-using `xds-cli` tool and `projects list` command (short: `prj ls`):
-
-```bash
-xds-cli prj ls
-ID Label LocalPath
-f9904f70-d441-11e7-8c59-3c970e49ad9b Project_helloworld-service /home/seb/xds-workspace/helloworld-service
-4021617e-ced0-11e7-acd2-3c970e49ad9b Project_helloworld-native-application /home/seb/xds-workspace/helloworld-native-application
-```
-
-XDS tools, including `xds-cli` are installed by default in `/opt/AGL/bin`
-directory and this path has been added into your PATH variable.
-
-If it is not the case, just add it manually using `export PATH=${PATH}:/opt/AGL/bin` command line.
-
-Now to refer your project, just use --id option or use `XDS_PROJECT_ID`
-environment variable.
-
-<!-- note -->
-**Note:**
-
-Short id notation is also supported as soon as given id value is non ambiguous.
-
-For example, to refer to Project_helloworld-native-application project listed
-in above command, you can simply use --id 40 instead of --id 4021617e-ced0-11e7-acd2-3c970e49ad9b
-<!-- endnote -->
-
-You also need to determine the ID of the cross SDK you want to use to cross build
-you application.
-
-To list installed SDK, use the following command:
-
-```bash
-xds-cli sdks ls
-List of installed SDKs:
- ID NAME
- 7aa19224-b769-3463-98b1-4c029d721766 aarch64 (3.99.1+snapshot)
- 41a1efc4-8443-3fb0-afe5-8313e0c96efd corei7-64 (3.99.2+snapshot)
- c226821b-b5c0-386d-94fe-19f807946d03 aarch64 (3.99.3)
-```
-
-You are now ready to use XDS to for example cross build your project.
-
-Here is an example to build a project based on CMakefile:
-
-```bash
-# Go into your project directory and create a build directory
-cd $MY_PROJECT_DIR
-mkdir build
-
-# Generate build system using cmake
-xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && cmake .."
-
-# Build the project
-xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && make all"
-```
-
-<!-- note -->
-**Note:** If you use `&&`, `||` or `;` statement in the executed command line,
-you need to double quote the command, for example `"cd build && make`.
-<!-- endnote -->
-
-To avoid to set project id, sdks id, url, ... for each command line, you can
-define these settings as environment variables within an env file and just set
-`--config` option or source file before executing xds-cli command.
-
-Note that XDS creates a file named `xds-project.conf` (only if not already exists)
-when you declare a new project using XDS Dashboard (or using `xds-cli prj add...`).
-Edit this file if needed and then refer it with `--config` option.
-
-For example, the equivalence of above command is:
-
-```bash
-# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
-cd $MY_PROJECT_DIR
-
-# Edit and potentially adapt xds-project.conf file that has been created
-# automatically on project declaration using XDS Dashboard
-cat xds-project.conf
- # XDS project settings
- export XDS_AGENT_URL=localhost:8800
- export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
- export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
-
-# Create build directory and invoke cmake and then build project
-xds-cli exec --config=./xds-project.conf -- "mkdir -p build && cd build && cmake .."
-cd build && xds-cli exec --config=../xds-project.conf -- "make all"
-
-# Or equivalent by first sourcing conf file (avoid to set --config option)
-source xds-project.conf
-xds-cli exec "mkdir -p build && cd build && cmake .."
-cd build && xds-cli exec "make all"
-```
-
-<!-- note -->
-**Note:** all parameters after a double dash (--) are considered as the command
-to execute.
-<!-- endnote -->
-
-## Build from IDE
-
-First create an XDS config file or reuse the previous one, for example we use
-here aarch64 SDK to cross build application for a Renesas Gen3 board.
-
-```bash
-# create file at root directory of your project
-# for example:
-# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
-cat > $MY_PROJECT_DIR/xds-project.conf << EOF
- export XDS_AGENT_URL=localhost:8800
- export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
- export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
-EOF
-```
-
-### NetBeans
-
-This chapter will show you how to create 2 configurations, one to compile your
-project natively (using native GNU gcc) and one to cross-compile your project
-using XDS.
-
-You can easily switch from one to other configuration using menu
-**Run -> Set Project Configuration**.
-
-__Netbeans 8.x :__
-
-- Open menu **Tools** -> **Options**
- - Open **C/C++** tab, in **Build Tools** sub-tab, click on **Add** button:
-
- ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Then, you should set **Make Command** and **Debugger Command** to point to xds tools:
-
- ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Finally click on **OK** button.
-
-- Now create we first declare project into NetBeans and create first a native
- configuration. To do that, open menu **File** -> **New Project**
-
-- Select **C/C++ Project with Existing Sources** ;
- Click on **Next** button
-
-- Specify your project directory and set **Select Configuration Mode** to
- **Custom**. Keep **Tool Collection** to **Default GNU** in order to create a
- *native configuration* based on native GNU GCC. Finally click on **Next** button.
-
- ![Select Model panel](./pictures/nb_new-project-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
-- Just update **Run in Folder** field and add `build_native` suffix so that
- resulting build files will be located into `build_native` sub-directory.
- Keep all others settings to default value and click on **Next** button.
-
- ![Select Model panel](./pictures/nb_new-project-2.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
-- Click several times on **Next button** (always keep default settings) and
- click on **Finish** button to complete creation of native configuration.
-
-- Now we will create a **cross configuration** based on XDS tools.
- Edit project properties (using menu **File** -> **Project Properties**) to add a new configuration that will use XDS to cross-compile your application for example for a Renesas Gen3 board.
-
- - in **Build** category, click on **Manage Configurations** button and then **New** button to add a new configuration named for example "Gen3 board"
-
- ![Select Build category](./pictures/nb_new-project-3.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Click on **Set Active** button
-
- - Select **Pre-Build** sub-category, and set:
- - Working Directory: `build_gen3`
- - Command Line: `xds-cli exec -c ../xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ..`
- - Pre-build First: `ticked`
-
- - Select **Make** sub-category, and set:
- - Working Directory: `build_gen3`
- - Build Command: `xds-cli exec -c ../xds-project.conf -- make remote-target-populate`
- - Clean Command: `xds-cli exec -c ../xds-project.conf -- make clean`
-
- ![Select Make sub-category](./pictures/nb_new-project-4.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Select **Run** sub-category, and set:
- - Run Command: `target/start-on-root@renesas-gen3.sh`
- - Run Directory: `build-gen3`
-
- ![Select Run sub-category](./pictures/nb_new-project-5.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Click on **OK** button to save settings
-
-By changing configuration from **Default** to **Gen3 board**, you can now simply
-compile your helloworld application natively (**Default** configuration) or
-cross-compile your application through XDS for the Renesas Gen3 board
-(**Gen3 board** configuration).
-
-### Visual Studio Code
-
-Open your project in VS Code
-
-```bash
-cd $MY_PROJECT_DIR
-code . &
-```
-
-Add new tasks : press `Ctrl+Shift+P` and select the `Tasks: Configure Task`
-command and you will see a list of task runner templates.
-
-And define your own tasks, here is an example to build
-[helloworld-native-application](https://github.com/iotbzh/helloworld-native-application)
-AGL helloworld application based on cmake template.
-
-```json
-{
- "version": "2.0.0",
- "type": "shell",
- "presentation": {
- "reveal": "always"
- },
- "tasks": [
- {
- "taskName": "clean",
- "command": "/bin/rm -rf ${workspaceFolder}/build/* && mkdir -p build && echo Cleanup done.",
- "problemMatcher": []
- },
- {
- "taskName": "pre-build",
- "group": "build",
- "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ../",
- "problemMatcher": [
- "$gcc"
- ]
- },
- {
- "taskName": "build",
- "group": "build",
- "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget",
- "problemMatcher": [
- "$gcc"
- ]
- },
- {
- "taskName": "populate",
- "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget-target-install",
- "problemMatcher": []
- }
- ]
-}
-```
-
-> **Note:**
->
-> You can also add your own keybindings to trig above tasks, for example:
->
-> ```json
-> // Build
-> {
-> "key": "alt+f9",
-> "command": "workbench.action.tasks.runTask",
-> "args": "clean"
-> },
-> {
-> "key": "alt+f10",
-> "command": "workbench.action.tasks.runTask",
-> "args": "pre-build"
-> },
-> {
-> "key": "alt+f11",
-> "command": "workbench.action.tasks.runTask",
-> "args": "build"
-> },
-> {
-> "key": "alt+f12",
-> "command": "workbench.action.tasks.runTask",
-> "args": "populate"
-> },
-> ```
->
-> More details about VSC keybindings [here](https://code.visualstudio.com/docs/editor/tasks#_binding-keyboard-shortcuts-to-tasks)
->
-> More details about VSC tasks [here](https://code.visualstudio.com/docs/editor/tasks)
-
-#### Qt Creator
-
-Please refer to [agl-hello-qml](https://github.com/radiosound-com/agl-hello-qml#clone--build-project) project.
-Thanks to Dennis for providing this useful example.
-
-#### Others IDE
-
-*Coming soon...*
+- [Setup](./4-1_build-first-app-setup.html)
+- [Build using command line tool](./4-2_build-first-app-cmd.html)
+- [Build using XDS Dashboard](./4-3_build-first-app-dashboard.html)
+- [Build using a source code editor / IDE](./4-4_build-first-app-ide.html)
diff --git a/docs/part-1/5-1_debug-first-app-config.md b/docs/part-1/5-1_debug-first-app-config.md
new file mode 100644
index 0000000..8743bc1
--- /dev/null
+++ b/docs/part-1/5-1_debug-first-app-config.md
@@ -0,0 +1,76 @@
+# Configuration
+
+ `xds-gdb` configuration is defined by variables (see listed below).
+ These variables may be set using :
+
+- environment variables (inherited),
+- or a config file set with `XDS_CONFIG` environment variable, for example:
+ `XDS_CONFIG=/tmp/my_xds_gdb_config.env xds-gdb`
+- or by setting variables within a gdb ini file (see details below),
+- or a "user" config file located in following directory (first found is taken):
+ 1. $(CURRENT_DIRECTORY)/.xds-gdb.env
+ 1. $(CURRENT_DIRECTORY)/../xds-gdb.env
+ 1. $(CURRENT_DIRECTORY)/target/xds-gdb.env
+ 1. $(HOME)/.config/xds/xds-gdb.env
+
+## Configuration Variables
+
+`XDS_CONFIG` Config file defining `XDS_xxx` configuration variables.
+
+Variables of this file will overwrite inherited environment variables.
+
+Variables definition may be prefixed or not by "export" keyword.
+
+Here is an example of configuration file:
+
+```bash
+# for example:
+# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
+cat > $MY_PROJECT_DIR/xds-gen3.conf << EOF
+export XDS_AGENT_URL=localhost:8800
+export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
+export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
+EOF
+```
+
+`XDS_LOGLEVEL`
+
+Set logging level (supported levels: panic, fatal, error, warn, info, debug)
+
+`XDS_LOGFILE`
+
+Set logging file, default `/tmp/xds-gdb.log`.
+
+`XDS_NATIVE_GDB`
+
+Use native gdb mode instead of remote XDS mode.
+
+`XDS_PROJECT_ID` *(mandatory in XDS mode)*
+
+Project ID you want to build
+
+`XDS_RPATH`
+
+Relative path into project
+
+`XDS_SDK_ID` *(mandatory in XDS mode)*
+
+Cross Sdk ID to use to build project
+
+`XDS_AGENT_URL`
+
+Local XDS agent url (default `http://localhost:8800`)
+
+## Configuration variables set within gdb init command file
+
+Above `XDS_xxx` variables may also be defined within gdb init command file
+(see --command or -x option of genuine Gdb).
+
+You must respect the following syntax: commented line including `:XDS-ENV:` tag
+
+Example of gdb init file where we define project and sdk ID:
+
+```bash
+ # :XDS-ENV: XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
+ # :XDS-ENV: XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
+```
diff --git a/docs/part-1/5-2_debug-first-app-cmd.md b/docs/part-1/5-2_debug-first-app-cmd.md
new file mode 100644
index 0000000..8d0d764
--- /dev/null
+++ b/docs/part-1/5-2_debug-first-app-cmd.md
@@ -0,0 +1,69 @@
+# Debug using xds-gdb from command line
+
+## XDS remote debugging mode
+
+First the project you want to debug must be declared on an xds-server and this
+project may also has been built using using XDS (see [Create your first AGL application](./4_build-first-app.html) for more details).
+
+So to debug it you need to have the XDS agent - server chain in place and
+you also need the project and sdk unique id.
+
+You can find these IDs in project page of XDS dashboard or you can get them from command line using the `--list` option.
+
+This option lists all existing projects ID:
+
+```bash
+xds-gdb --list
+```
+
+Now to refer your project, just set `XDS_PROJECT_ID` and `XDS_SDK_ID` variables.
+
+You are now ready to use `xds-gdb` to for example cross debug your project.
+
+Here is an example to build and debug a project based on CMakefile and
+[AGL app-templates](https://git.automotivelinux.org/apps/app-templates/):
+
+```bash
+# Go into your project directory (for example helloworld-native-application)
+cd ~/xds-workspace
+git clone https://github.com/iotbzh/helloworld-native-application.git
+cd helloworld-service
+
+# Declare your project on xds-server
+# <for now, you can only do this step using xds HTML dashboard (see xds-server doc)>
+
+# Define XDS config
+cat <<EOF >./xds-config.env
+#optional if not default value: XDS_AGENT_URL=http://localhost:8800
+XDS_PROJECT_ID=IW7B4EE-DBY4Z74_myProject
+XDS_SDK_ID=poky-agl_aarch64_4.0.1
+EOF
+
+# Tell to xds-cli and xds-gdb which is your config file
+export XDS_CONFIG=../xds-gen3.conf
+
+# Create a new build directory
+mkdir build && cd build
+
+# Start remote cross build
+xds-cli exec -- cmake -DRSYNC_TARGET=root@myTarget ..
+xds-cli exec -- make
+xds-cli exec -- make remote-target-populate
+
+# Start debugging
+xds-gdb -x target/gdb-on-root@myTarget.ini
+```
+
+<!-- note -->
+**Note:** : [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL
+project based on [app-templates](https://git.automotivelinux.org/apps/app-templates/)
+(included as a git submodule). This CMake templating, used to develop application
+with the AGL Application Framework, will automatically generate makefile rules
+(eg. `remote-target-populate`) or scripts (eg. `build/target/xxx` scripts).
+
+For more info about app-template, please refer to [this documentation](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/sdk-devkit/docs/part-2/2_4-Use-app-templates.html).
+<!-- endnote -->
+
+## Native debugging
+
+To enable native debugging mode, you need to define `XDS_NATIVE_GDB` variable.
diff --git a/docs/part-1/5-3_debug-first-app-ide.md b/docs/part-1/5-3_debug-first-app-ide.md
new file mode 100644
index 0000000..0473892
--- /dev/null
+++ b/docs/part-1/5-3_debug-first-app-ide.md
@@ -0,0 +1,44 @@
+# Debug using xds-gdb within an IDE
+
+First the project you want to debug must be declared on an xds-server and this
+project may also has been built using using XDS (see [Create your first AGL application](./4_build-first-app.html) for more details).
+
+## Netbeans
+
+__Netbeans 8.x :__
+
+- Open menu **Tools** -> **Options**
+ - Open **C/C++** tab, in **Build Tools** sub-tab, click on **Add** button:
+
+ ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Then, you should set **Make Command** and **Debugger Command** to point to xds tools:
+
+ ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Finally click on **OK** button.
+
+- Edit project properties (using menu **File** -> **Project Properties**) to update Debug settings:
+
+ - Be sure that "Gen3 board" configuration is selected
+
+ - Select **Run** category, and set:
+ - Run Command: `target/start-on-root@renesas-gen3.sh`
+ (_script name may depend of RSYNC_TARGET variable you set in pre-build command_)
+ - Run Directory: `build_gen3`
+
+ - Select **Debug** category, and set:
+ - Debug command: `/bin/true`
+ - Working Directory: _empty field_
+ - Gdb Init File: `target/gdb-on-root@renesas-gen3.ini`
+ (_script name may depend of RSYNC_TARGET variable you set in pre-build command_)
+
+ ![Select Model panel](./pictures/nb_project_debug-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
+
+ - Click on **Apply** and then **OK** button to save settings
+
+You can now start debugging your application with menu **Debug** -> **Debug Project** (or **CTRL+F5** shortcut)
+
+## Others IDE
+
+*Coming soon...*
diff --git a/docs/part-1/5_debug-first-app.md b/docs/part-1/5_debug-first-app.md
index 01a183e..e1bdffd 100644
--- a/docs/part-1/5_debug-first-app.md
+++ b/docs/part-1/5_debug-first-app.md
@@ -13,191 +13,10 @@ Two debugging models are supported:
By default XDS debug model is used and you need to define `XDS_NATIVE_GDB`
variable to use native gdb debug mode instead.
-## Configuration
+---
- `xds-gdb` configuration is defined by variables (see listed below).
- These variables may be set using :
+Links to subchapters :
-- environment variables (inherited),
-- or a config file set with `XDS_CONFIG` environment variable, for example:
- `XDS_CONFIG=/tmp/my_xds_gdb_config.env xds-gdb`
-- or by setting variables within a gdb ini file (see details below),
-- or a "user" config file located in following directory (first found is taken):
- 1. $(CURRENT_DIRECTORY)/.xds-gdb.env
- 1. $(CURRENT_DIRECTORY)/../xds-gdb.env
- 1. $(CURRENT_DIRECTORY)/target/xds-gdb.env
- 1. $(HOME)/.config/xds/xds-gdb.env
-
-### Configuration Variables
-
-`XDS_CONFIG` Config file defining `XDS_xxx` configuration variables.
-
-Variables of this file will overwrite inherited environment variables.
-
-Variables definition may be prefixed or not by "export" keyword.
-
-Here is an example of configuration file:
-
-```bash
-# for example:
-# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
-cat > $MY_PROJECT_DIR/xds-gen3.conf << EOF
-export XDS_AGENT_URL=localhost:8800
-export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
-export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
-EOF
-```
-
-`XDS_LOGLEVEL`
-
-Set logging level (supported levels: panic, fatal, error, warn, info, debug)
-
-`XDS_LOGFILE`
-
-Set logging file, default `/tmp/xds-gdb.log`.
-
-`XDS_NATIVE_GDB`
-
-Use native gdb mode instead of remote XDS mode.
-
-`XDS_PROJECT_ID` *(mandatory in XDS mode)*
-
-Project ID you want to build
-
-`XDS_RPATH`
-
-Relative path into project
-
-`XDS_SDK_ID` *(mandatory in XDS mode)*
-
-Cross Sdk ID to use to build project
-
-`XDS_AGENT_URL`
-
-Local XDS agent url (default `http://localhost:8800`)
-
-### Configuration variables set within gdb init command file
-
-Above `XDS_xxx` variables may also be defined within gdb init command file
-(see --command or -x option of genuine Gdb).
-
-You must respect the following syntax: commented line including `:XDS-ENV:` tag
-
-Example of gdb init file where we define project and sdk ID:
-
-```bash
- # :XDS-ENV: XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
- # :XDS-ENV: XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
-```
-
-## Using xds-gdb from command line
-
-### XDS remote debugging mode
-
-First the project you want to debug must be declared on an xds-server and this
-project may also has been built using using XDS (see [Create your first AGL application](./4_build-first-app.html) for more details).
-
-So to debug it you need to have the XDS agent - server chain in place and
-you also need the project and sdk unique id.
-
-You can find these IDs in project page of XDS dashboard or you can get them from command line using the `--list` option.
-
-This option lists all existing projects ID:
-
-```bash
-xds-gdb --list
-```
-
-Now to refer your project, just set `XDS_PROJECT_ID` and `XDS_SDK_ID` variables.
-
-You are now ready to use `xds-gdb` to for example cross debug your project.
-
-Here is an example to build and debug a project based on CMakefile and
-[AGL app-templates](https://git.automotivelinux.org/apps/app-templates/):
-
-```bash
-# Go into your project directory (for example helloworld-native-application)
-cd ~/xds-workspace
-git clone https://github.com/iotbzh/helloworld-native-application.git
-cd helloworld-service
-
-# Declare your project on xds-server
-# <for now, you can only do this step using xds HTML dashboard (see xds-server doc)>
-
-# Define XDS config
-cat <<EOF >./xds-config.env
-#optional if not default value: XDS_AGENT_URL=http://localhost:8800
-XDS_PROJECT_ID=IW7B4EE-DBY4Z74_myProject
-XDS_SDK_ID=poky-agl_aarch64_4.0.1
-EOF
-
-# Tell to xds-cli and xds-gdb which is your config file
-export XDS_CONFIG=../xds-gen3.conf
-
-# Create a new build directory
-mkdir build && cd build
-
-# Start remote cross build
-xds-cli exec -- cmake -DRSYNC_TARGET=root@myTarget ..
-xds-cli exec -- make
-xds-cli exec -- make remote-target-populate
-
-# Start debugging
-xds-gdb -x target/gdb-on-root@myTarget.ini
-```
-
-<!-- note -->
-**Note:** : [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL
-project based on [app-templates](https://git.automotivelinux.org/apps/app-templates/)
-(included as a git submodule). This CMake templating, used to develop application
-with the AGL Application Framework, will automatically generate makefile rules
-(eg. `remote-target-populate`) or scripts (eg. `build/target/xxx` scripts).
-
-For more info about app-template, please refer to [this documentation](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/sdk-devkit/docs/part-2/2_4-Use-app-templates.html).
-<!-- endnote -->
-
-### Native debugging
-
-To enable native debugging mode, you need to define `XDS_NATIVE_GDB` variable.
-
-## Using xds-gdb within an IDE
-
-### Netbeans
-
-__Netbeans 8.x :__
-
-- Open menu **Tools** -> **Options**
- - Open **C/C++** tab, in **Build Tools** sub-tab, click on **Add** button:
-
- ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Then, you should set **Make Command** and **Debugger Command** to point to xds tools:
-
- ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Finally click on **OK** button.
-
-- Edit project properties (using menu **File** -> **Project Properties**) to update Debug settings:
-
- - Be sure that "Gen3 board" configuration is selected
-
- - Select **Run** category, and set:
- - Run Command: `target/start-on-root@renesas-gen3.sh`
- (_script name may depend of RSYNC_TARGET variable you set in pre-build command_)
- - Run Directory: `build_gen3`
-
- - Select **Debug** category, and set:
- - Debug command: `/bin/true`
- - Working Directory: _empty field_
- - Gdb Init File: `target/gdb-on-root@renesas-gen3.ini`
- (_script name may depend of RSYNC_TARGET variable you set in pre-build command_)
-
- ![Select Model panel](./pictures/nb_project_debug-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}
-
- - Click on **Apply** and then **OK** button to save settings
-
-You can now start debugging your application with menu **Debug** -> **Debug Project** (or **CTRL+F5** shortcut)
-
-### Others IDE
-
-*Coming soon...*
+- [Configuration](./5-1_debug-first-app-config.html)
+- [xds-gdb from command line](./5-2_debug-first-app-cmd.html)
+- [xds-gdb within an IDE](./5-3_debug-first-app-ide.html)
diff --git a/docs/part-2/0_Abstract.md b/docs/part-2/0_Abstract.md
index aa7ddc4..45f5f40 100644
--- a/docs/part-2/0_Abstract.md
+++ b/docs/part-2/0_Abstract.md
@@ -4,48 +4,3 @@
This 2nd part is the "technical" documentation of all XDS pieces/tools that allows
for example to fine tune XDS configuration or rebuild all XDS tools from scratch.
-
-## Prerequisites
-
-To build xds binaries you need to install first [Go](https://golang.org/doc/install) version 1.8.1 or higher and some other tools. To build `xds-server` and `xds-agent`
-you also need to install in addition `nodejs`.
-
-**Ubuntu:**
-
-```bash
-# Install various tools
-sudo apt-get install git make npm curl git zip unzip
-
-# Install Go
-source /etc/os-release
-wget -O- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x52B59B1571A79DBC054901C0F6BC817356A3D45E" | sudo apt-key add -
-sudo bash -c "cat >> /etc/apt/sources.list.d/golang.list <<EOF
-deb http://ppa.launchpad.net/longsleep/golang-backports/ubuntu ${VERSION_CODENAME} main
-EOF"
-sudo apt-get update
-sudo apt-get install golang-go
-
-# Install nodejs LTS version and angular-cli (only mandatory for xds-server and xds-agent)
-sudo npm install --global n @angular/cli
-sudo n lts
-```
-
-**openSUSE:**
-
-```bash
-# Install various tools
-sudo zypper install git make npm curl zip unzip
-
-# Install Go
-# ( the value 'DISTRO' can be set to {openSUSE_Leap_42.2, openSUSE_Leap_42.3, openSUSE_Tumbleweed} )
-source /etc/os-release; export DISTRO="openSUSE_Leap_$VERSION"
-sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/go/${DISTRO}/devel:languages:go.repo
-sudo zypper --gpg-auto-import-keys ref
-sudo zypper install go1.9
-
-# Install nodejs LTS version and angular-cli (only mandatory for xds-server and xds-agent)
-sudo npm install --global n @angular/cli
-sudo n lts
-```
-
-Don't forget to open new user session after installing these packages.
diff --git a/docs/part-2/1_Prerequisites.md b/docs/part-2/1_Prerequisites.md
new file mode 100644
index 0000000..fcaa031
--- /dev/null
+++ b/docs/part-2/1_Prerequisites.md
@@ -0,0 +1,44 @@
+# Prerequisites
+
+To build xds binaries you need to install first [Go](https://golang.org/doc/install) version 1.8.1 or higher and some other tools. To build `xds-server` and `xds-agent`
+you also need to install in addition `nodejs`.
+
+**Ubuntu:**
+
+```bash
+# Install various tools
+sudo apt-get install git make npm curl git zip unzip
+
+# Install Go
+source /etc/os-release
+wget -O- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x52B59B1571A79DBC054901C0F6BC817356A3D45E" | sudo apt-key add -
+sudo bash -c "cat >> /etc/apt/sources.list.d/golang.list <<EOF
+deb http://ppa.launchpad.net/longsleep/golang-backports/ubuntu ${VERSION_CODENAME} main
+EOF"
+sudo apt-get update
+sudo apt-get install golang-go
+
+# Install nodejs LTS version and angular-cli (only mandatory for xds-server and xds-agent)
+sudo npm install --global n @angular/cli
+sudo n lts
+```
+
+**openSUSE:**
+
+```bash
+# Install various tools
+sudo zypper install git make npm curl zip unzip
+
+# Install Go
+# ( the value 'DISTRO' can be set to {openSUSE_Leap_42.2, openSUSE_Leap_42.3, openSUSE_Tumbleweed} )
+source /etc/os-release; export DISTRO="openSUSE_Leap_$VERSION"
+sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/go/${DISTRO}/devel:languages:go.repo
+sudo zypper --gpg-auto-import-keys ref
+sudo zypper install go1.9
+
+# Install nodejs LTS version and angular-cli (only mandatory for xds-server and xds-agent)
+sudo npm install --global n @angular/cli
+sudo n lts
+```
+
+Don't forget to open new user session after installing these packages.
diff --git a/docs/part-2/1_xds-server/0_abstract.md b/docs/part-2/1_xds-server/0_abstract.md
new file mode 100644
index 0000000..07dd057
--- /dev/null
+++ b/docs/part-2/1_xds-server/0_abstract.md
@@ -0,0 +1,41 @@
+# XDS - X(cross) Development System Server
+
+`xds-server` is a web server that allows user to remotely cross build applications.
+
+- The first goal is to provide a multi-platform cross development tool with near-zero installation.
+- The second goal is to keep application sources locally (on user's machine).
+ - Make it compatible with existing IT policies (e.g. corporate backup or SCM).
+ - Let user to continue to work as usual.
+ - Use his favorite editor.
+ - keep performance while editing/browsing sources.
+ - Avoids manual operation
+
+This powerful and portable webserver (written in [Go](https://golang.org))
+exposes a REST interface over HTTP.
+
+`xds-server` uses [Syncthing](https://syncthing.net/) tool to synchronize
+projects files from user machine to build server machine or container.
+
+`xds-server` is commonly running on a build server (within a container or not)
+and [xds-agent](../2_xds-agent/0_abstract.html) must run on the developer/user machine in order
+to setup the following connection chain:
+
+```schema
+ developer/user machine | build server or container
+ ---------------------------|-----------------------------
+ xds-cli <---> xds-agent <-|-> xds-server
+```
+
+**SEE ALSO**: [xds-cli](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-cli.git),
+a command-line tool that allows you to send commands to `xds-agent / xds-server`
+and for example build your application from command-line or from your favorite
+IDE (such as Netbeans or Visual Studio Code) through `xds-agent <=> xds-server`.
+
+---
+
+Links to subchapters :
+
+- [Configuration](./1_config.html)
+- [How to run](./2_how-to-run.html)
+- [Build from scratch](./3_build.html)
+- [Debugging](./4_debug.html)
diff --git a/docs/part-2/1_xds-server/1_config.md b/docs/part-2/1_xds-server/1_config.md
new file mode 100644
index 0000000..594bdf2
--- /dev/null
+++ b/docs/part-2/1_xds-server/1_config.md
@@ -0,0 +1,86 @@
+# Configuration
+
+`xds-server` configuration is driven by a JSON config file (`server-config.json`).
+
+Here is the logic to determine which `server-config.json` file will be used:
+
+1. from command line option: `--config myConfig.json`
+1. `$HOME/.xds/server/server-config.json` file
+1. `/etc/xds/server/server-config.json` file
+1. `<xds-server executable dir>/server-config.json` file
+
+Supported fields in configuration file are:
+
+- **httpPort** : HTTP port of client webapp/REST API
+- **webAppDir** : location of client web application (default: webapp/dist)
+- **shareRootDir** : root directory where projects will be copied
+- **logsDir** : directory to store logs (eg. syncthing output)
+- **sdkScriptsDir** : directory where scripts, used to managed SDKs, are installed
+- **syncthing.binDir** : syncthing binaries directory (default: executable directory)
+- **syncthing.home"** : syncthing home directory (usually .../syncthing-config)
+- **syncthing.gui-address** : syncthing gui url (default <http://localhost:8385>)
+- **syncthing.gui-apikey** : syncthing api-key to use (default auto-generated)
+
+All fields are optional and example below corresponds to the default values.
+
+```json
+{
+ "httpPort": 8000,
+ "webAppDir": "webapp/dist",
+ "shareRootDir": "${HOME}/.xds/server/projects",
+ "logsDir": "/tmp/logs",
+ "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
+ "syncthing": {
+ "binDir": "./bin",
+ "home": "${HOME}/.xds/server/syncthing-config",
+ "gui-address": "http://localhost:8385",
+ "gui-apikey": "123456789",
+ }
+}
+```
+
+>**Notes:**
+>
+>Environment variables are supported by using `${MY_VAR}` syntax.
+>
+
+When `xds-server` is started as a systemd service, default environment variables
+are set into `/etc/default/xds-server` file.
+
+`xds-server` configuration is also driven by a JSON config file (`server-config.json`),
+and default JSON config is `/etc/xds/server/server-config.json`.
+
+<!-- note -->
+**Note:**
+You can use your own JSON config by settings `APP_CONFIG` variable of
+`/etc/default/xds-server` file to your file, for example `/home/MYUSER/.xds/server/server-config.json`
+<!-- endnote -->
+
+## Disable syncthing
+
+`CloudSync` synchronization type based on `syncthing` tool can be disabled by
+simply removing (or renaming) `"syncthing"` key in configuration file.
+Here is a JSON configuration file example where syncthing key as been renamed:
+
+```json
+{
+ "httpPort": 8000,
+ "webAppDir": "webapp/dist",
+ "shareRootDir": "${HOME}/.xds/server/projects",
+ "logsDir": "/tmp/logs",
+ "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
+ "syncthing_DISABLE": {
+ "binDir": "./bin",
+ "home": "${HOME}/.xds/server/syncthing-config",
+ }
+}
+```
+
+On benefit to do that is to increase XDS-Server startup time.
+
+<!-- note -->
+**Note:**
+
+- `CloudSync` (AKA syncthing) synchronization type can also be disabled when `"syncthing"` key is not defined in JSON configuration file.
+
+<!-- endnote -->
diff --git a/docs/part-2/1_xds-server.md b/docs/part-2/1_xds-server/2_how-to-run.md
index a45a8f0..36bc9a6 100644
--- a/docs/part-2/1_xds-server.md
+++ b/docs/part-2/1_xds-server/2_how-to-run.md
@@ -1,37 +1,4 @@
-# XDS - X(cross) Development System Server
-
-`xds-server` is a web server that allows user to remotely cross build applications.
-
-- The first goal is to provide a multi-platform cross development tool with near-zero installation.
-- The second goal is to keep application sources locally (on user's machine).
- - Make it compatible with existing IT policies (e.g. corporate backup or SCM).
- - Let user to continue to work as usual.
- - Use his favorite editor.
- - keep performance while editing/browsing sources.
- - Avoids manual operation
-
-This powerful and portable webserver (written in [Go](https://golang.org))
-exposes a REST interface over HTTP.
-
-`xds-server` uses [Syncthing](https://syncthing.net/) tool to synchronize
-projects files from user machine to build server machine or container.
-
-`xds-server` is commonly running on a build server (within a container or not)
-and [xds-agent](2_xds-agent.html) must run on the developer/user machine in order
-to setup the following connection chain:
-
-```schema
- developer/user machine | build server or container
- ---------------------------|-----------------------------
- xds-cli <---> xds-agent <-|-> xds-server
-```
-
-**SEE ALSO**: [xds-cli](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-cli.git),
-a command-line tool that allows you to send commands to `xds-agent / xds-server`
-and for example build your application from command-line or from your favorite
-IDE (such as Netbeans or Visual Studio Code) through `xds-agent <=> xds-server`.
-
-## How to run
+# How to run
`xds-server` has been designed to easily compile and debug
[AGL](https://www.automotivelinux.org/) applications. That's why `xds-server` has
@@ -40,12 +7,12 @@ been integrated into AGL SDK docker container.
>**Note:** For more info about AGL SDK docker container, please refer to
[AGL SDK Quick Setup](http://docs.automotivelinux.org/docs/getting_started/en/dev/reference/setup-sdk-environment.html)
-### Start xds-server within the container
+## Start xds-server within the container
-See [Installation based on Docker container](../part-1/2_install-xds-server.html#installation-based-on-docker-container)
+See [Installation based on Docker container](../../part-1/2-1_install-xds-server-docker.html)
chapter.
-### Manually Start XDS server
+## Manually Start XDS server
XDS server is started as a service by Systemd.
@@ -82,16 +49,16 @@ docker exec ${CONTAINER_NAME} bash -c "echo 'LOG_LEVEL=debug' >> /etc/default/xd
ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server"
```
-### SDK cross-toolchain Management
+## SDK cross-toolchain Management
-#### Setup to add support of a new SDK family
+### Setup to add support of a new SDK family
<!-- note -->
**Optional step**: read this chapter only if you plan to add a new SDK family.
<!-- endnote -->
`xds-server` dynamically detects supported SDKs by scanning sub-directories of
-`sdkScriptsDir` directory (see [Configuration chapter](#configuration)).
+`sdkScriptsDir` directory (see [Configuration chapter](1_config.html)).
Each sub-directory (usually name is the same as the SDK family) of `sdkScriptsDir`
must contain a set of scripts that will be called by `xds-server` to managed SDKs
@@ -136,7 +103,7 @@ On startup `xds-server` will call in order:
Please refer to `sdks/README.md` for more information about scripts definition
and to understand how to add support of a new SDK family.
-#### Install a new SDK from command line
+### Install a new SDK from command line
Used `sdks` command of `xds-cli` tool to managed SDKs.
@@ -201,7 +168,7 @@ Installation based on a local SDK package is only supported when SDK file packag
is located in `$HOME/xds-workspace/sdks` directory
<!-- endnote -->
-#### Install a new SDK from XDS Dashboard
+### Install a new SDK from XDS Dashboard
Open XDS-Dashboard in web-browser and select `SDKs` entry in left side menu.
@@ -218,7 +185,7 @@ SDK download and installation process may take several minutes and output of ins
Note that you can abort installation by clicking on `CANCEL` button.
-#### Un-install a SDK from command line
+### Un-install a SDK from command line
Used `sdks` command of `xds-cli` tool to managed SDKs.
@@ -239,14 +206,14 @@ xds-cli sdks uninstall d65fe750
SDK ID d65fe750-d3a7-38f5-83d8-3d3806054f8d successfully deleted.
```
-#### Un-install a SDK from XDS Dashboard
+### Un-install a SDK from XDS Dashboard
Open XDS-Dashboard in web-browser and select `SDKs` entry in left side menu.
If needed, switch to `BASIC SDKS VIEW` view and click on trash icon located
in the top-right corner of SDK card.
-### XDS server REST API and Web application
+## XDS server REST API and Web application
`xds-server` exposes a REST API and serves a basic web-application.
@@ -268,201 +235,4 @@ xdg-open http://localhost:8000
Then follow instructions provided on this page to install and start `xds-agent`
that must run locally on your machine.
-See also [xds-agent documentation](2_xds-agent.html) for more details.
-
-## Build xds-server from scratch
-
-### Dependencies
-
-Install [Go](https://golang.org/doc/install), [npm](https://www.npmjs.com/),
-[nodejs](https://nodejs.org/en/) and some other tools.
-Refer to [Prerequisites chapter](./0_Abstract.html#prerequisites) for more details.
-
-### Building
-
-#### Native build
-
-Create a GOPATH variable(must be a full path):
-
-```bash
-export GOPATH=$(realpath ~/workspace_go)
-```
-
-Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
-
-```bash
-export GOPATH=${GOPATH}:${ROOTDIR}
-
-mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds
-cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds
-git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-server
-# or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-server
-cd xds-server
-make all
-```
-
-And to install `xds-server` (by default in `/opt/AGL/xds/server`):
-
-```bash
-make install
-```
-
-<!-- warning -->
-**Warning:**
-
-Makefile install rule and default values in configuration file are set
-to fit the docker setup.
-
-So you may need to adapt some settings when you want to install xds-server natively.
-<!-- endwarning -->
-
-<!-- note -->
-**Note:**
-
-Used `DESTDIR` to specify another install directory
-
-```bash
-make install DESTDIR=$HOME/opt/xds-server
-```
-
-<!-- endnote -->
-
-#### XDS docker image
-
-As an alternative to a pre-build image, you can rebuild the container from scratch.
-
-`xds-server` has been integrated as a flavour of AGL SDK docker image.
-
-So to rebuild docker image just execute following commands:
-
-```bash
-# Clone docker-worker-generator git repo
-git clone https://git.automotivelinux.org/AGL/docker-worker-generator
-# Start build that will create a docker image
-cd docker-worker-generator
-make build FLAVOUR=xds
-```
-
-### Configuration
-
-`xds-server` configuration is driven by a JSON config file (`server-config.json`).
-
-Here is the logic to determine which `server-config.json` file will be used:
-
-1. from command line option: `--config myConfig.json`
-1. `$HOME/.xds/server/server-config.json` file
-1. `/etc/xds/server/server-config.json` file
-1. `<xds-server executable dir>/server-config.json` file
-
-Supported fields in configuration file are:
-
-- **httpPort** : HTTP port of client webapp/REST API
-- **webAppDir** : location of client web application (default: webapp/dist)
-- **shareRootDir** : root directory where projects will be copied
-- **logsDir** : directory to store logs (eg. syncthing output)
-- **sdkScriptsDir** : directory where scripts, used to managed SDKs, are installed
-- **syncthing.binDir** : syncthing binaries directory (default: executable directory)
-- **syncthing.home"** : syncthing home directory (usually .../syncthing-config)
-- **syncthing.gui-address** : syncthing gui url (default <http://localhost:8385>)
-- **syncthing.gui-apikey** : syncthing api-key to use (default auto-generated)
-
-All fields are optional and example below corresponds to the default values.
-
-```json
-{
- "httpPort": 8000,
- "webAppDir": "webapp/dist",
- "shareRootDir": "${HOME}/.xds/server/projects",
- "logsDir": "/tmp/logs",
- "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
- "syncthing": {
- "binDir": "./bin",
- "home": "${HOME}/.xds/server/syncthing-config",
- "gui-address": "http://localhost:8385",
- "gui-apikey": "123456789",
- }
-}
-```
-
->**Notes:**
->
->Environment variables are supported by using `${MY_VAR}` syntax.
->
-
-When `xds-server` is started as a systemd service, default environment variables
-are set into `/etc/default/xds-server` file.
-
-`xds-server` configuration is also driven by a JSON config file (`server-config.json`),
-and default JSON config is `/etc/xds/server/server-config.json`.
-
-<!-- note -->
-**Note:**
-You can use your own JSON config by settings `APP_CONFIG` variable of
-`/etc/default/xds-server` file to your file, for example `/home/MYUSER/.xds/server/server-config.json`
-<!-- endnote -->
-
-#### Disable syncthing
-
-`CloudSync` synchronization type based on `syncthing` tool can be disabled by
-simply removing (or renaming) `"syncthing"` key in configuration file.
-Here is a JSON configuration file example where syncthing key as been renamed:
-
-```json
-{
- "httpPort": 8000,
- "webAppDir": "webapp/dist",
- "shareRootDir": "${HOME}/.xds/server/projects",
- "logsDir": "/tmp/logs",
- "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
- "syncthing_DISABLE": {
- "binDir": "./bin",
- "home": "${HOME}/.xds/server/syncthing-config",
- }
-}
-```
-
-On benefit to do that is to increase XDS-Server startup time.
-
-<!-- note -->
-**Note:**
-
-- `CloudSync` (AKA syncthing) synchronzation type can also be disabled when `"syncthing"` key is not defined in JSON configuration file.
-
-<!-- endnote -->
-
-## Debugging
-
-### XDS server architecture
-
-The server part is written in *Go* and web app (basic HTML) in *Angular4*.
-
-```bash
-|
-+-- bin/ # where xds-server binary file will be built
-|
-+-- conf.d/ # Linux configuration and startup files (systemd user service)
-|
-+-- glide.yaml # Go package dependency file
-|
-+-- lib/ # sources of server part (Go)
-|
-+-- LICENSE # XDS server license
-|
-+-- main.go # main entry point of of Web server (Go)
-|
-+-- Makefile # makefile including
-|
-+-- README.md #
-|
-+-- scripts/ # hold various scripts used for installation or startup
-|
-+-- test/ # XDS test suite
-|
-+-- tools/ # temporary directory to hold development tools (like glide)
-|
-+-- vendor/ # temporary directory to hold Go dependencies packages
-|
-+-- webapp/ # source client basic web application
-```
-
-Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
+See also [xds-agent documentation](../2_xds-agent/0_abstract.html) for more details.
diff --git a/docs/part-2/1_xds-server/3_build.md b/docs/part-2/1_xds-server/3_build.md
new file mode 100644
index 0000000..8be3b33
--- /dev/null
+++ b/docs/part-2/1_xds-server/3_build.md
@@ -0,0 +1,73 @@
+# Build xds-server from scratch
+
+## Dependencies
+
+Install [Go](https://golang.org/doc/install), [npm](https://www.npmjs.com/),
+[nodejs](https://nodejs.org/en/) and some other tools.
+
+Refer to [Prerequisites chapter](../1_Prerequisites.html) for more details.
+
+## Building
+
+### Native build
+
+Create a GOPATH variable(must be a full path):
+
+```bash
+export GOPATH=$(realpath ~/workspace_go)
+```
+
+Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
+
+```bash
+export GOPATH=${GOPATH}:${ROOTDIR}
+
+mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds
+cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds
+git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-server
+# or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-server
+cd xds-server
+make all
+```
+
+And to install `xds-server` (by default in `/opt/AGL/xds/server`):
+
+```bash
+make install
+```
+
+<!-- warning -->
+**Warning:**
+
+Makefile install rule and default values in configuration file are set
+to fit the docker setup.
+
+So you may need to adapt some settings when you want to install xds-server natively.
+<!-- endwarning -->
+
+<!-- note -->
+**Note:**
+
+Used `DESTDIR` to specify another install directory
+
+```bash
+make install DESTDIR=$HOME/opt/xds-server
+```
+
+<!-- endnote -->
+
+### XDS docker image
+
+As an alternative to a pre-build image, you can rebuild the container from scratch.
+
+`xds-server` has been integrated as a flavour of AGL SDK docker image.
+
+So to rebuild docker image just execute following commands:
+
+```bash
+# Clone docker-worker-generator git repo
+git clone https://git.automotivelinux.org/AGL/docker-worker-generator
+# Start build that will create a docker image
+cd docker-worker-generator
+make build FLAVOUR=xds
+```
diff --git a/docs/part-2/1_xds-server/4_debug.md b/docs/part-2/1_xds-server/4_debug.md
new file mode 100644
index 0000000..2b36697
--- /dev/null
+++ b/docs/part-2/1_xds-server/4_debug.md
@@ -0,0 +1,36 @@
+# Debugging
+
+## XDS server architecture
+
+The server part is written in *Go* and web app (basic HTML) in *Angular4*.
+
+```bash
+|
++-- bin/ # where xds-server binary file will be built
+|
++-- conf.d/ # Linux configuration and startup files (systemd user service)
+|
++-- glide.yaml # Go package dependency file
+|
++-- lib/ # sources of server part (Go)
+|
++-- LICENSE # XDS server license
+|
++-- main.go # main entry point of of Web server (Go)
+|
++-- Makefile # makefile including
+|
++-- README.md #
+|
++-- scripts/ # hold various scripts used for installation or startup
+|
++-- test/ # XDS test suite
+|
++-- tools/ # temporary directory to hold development tools (like glide)
+|
++-- vendor/ # temporary directory to hold Go dependencies packages
+|
++-- webapp/ # source client basic web application
+```
+
+Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
diff --git a/docs/part-2/2_xds-agent.md b/docs/part-2/2_xds-agent.md
deleted file mode 100644
index 1429715..0000000
--- a/docs/part-2/2_xds-agent.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# XDS - X(cross) Development System Agent
-
-XDS-agent is a client that should run on your local / user development machine when you use XDS.
-
-This agent takes care, among others, of starting [Syncthing](https://syncthing.net/)
-tool to synchronize your project files from your local host to XDS build server
-machine or container (where `xds-server` is running).
-
-> **SEE ALSO**: [xds-server](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-server.git), a web server
-used to remotely cross build applications.
-
-## Configuration
-
-xds-agent configuration is driven by a JSON config file.
-
-The tarball mentioned in previous section includes this file with default settings.
-
-Here is the logic to determine which conf file will be used:
-
-1. from command line option: `--config myConfig.json`
-1. `$HOME/.xds/agent/agent-config.json` file
-1. `/etc/xds/agent/agent-config.json` file
-
-Supported fields in configuration file are (all fields are optional and example
-below corresponds to the default values):
-
-- **httpPort** : http port of agent REST interface
-- **webAppDir** : location of client webapp / dashboard (default: webapp/dist)
-- **logsDir** : directory to store logs (eg. syncthing output)
-- **xdsServers** : an array of xds-server object
- - **xdsServers.url**: url of xds-server to connect to
-- **syncthing**: a object defining syncthing settings
- - **syncthing.binDir** : syncthing binaries directory (default: executable directory)
- - **syncthing.home"** : syncthing home directory (usually .../syncthing-config)
- - **syncthing.gui-address** : syncthing gui url (default <http://localhost:8386>)
- - **syncthing.gui-apikey** : syncthing api-key to use (default auto-generated)
-
-```json
-{
- "httpPort": "8800",
- "webAppDir": "./www",
- "logsDir": "${HOME}/.xds/agent/logs",
- "xdsServers": [
- {
- "url": "http://localhost:8000"
- }
- ],
- "syncthing": {
- "home": "${HOME}/.xds/agent/syncthing-config",
- "gui-address": "http://localhost:8386",
- "gui-apikey": "1234abcezam"
- }
-}
-```
-
->**Note:**
->
->environment variables are supported by using `${MY_VAR}` syntax.
-
-## Start-up
-
-Simply to start `xds-agent` executable
-
-```bash
-./xds-agent &
-```
-
->**Note:**
->
->If need be, you can increase log level by setting option
-`--log <level>`, supported *level* are: panic, fatal, error, warn, info, debug.
-
-You can now use XDS dashboard and check that connection with `xds-agent` is up.
-
-## Build xds-agent from scratch
-
-### Dependencies
-
-Install [Go](https://golang.org/doc/install), [npm](https://www.npmjs.com/),
-[nodejs](https://nodejs.org/en/) and some other tools.
-Refer to [Prerequisites chapter](./0_Abstract.html#prerequisites) for more details.
-
-### Building
-
-Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
-
-```bash
- mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-agent
- # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-agent
- cd xds-agent
- make all
-```
-
-And to install xds-agent (by default in `/usr/local/bin`):
-
-```bash
-make install
-```
-
->**Note:**
->
->Used `DESTDIR` to specify another install directory
->```bash
->make install DESTDIR=$HOME/opt/xds-agent
->```
-
-#### Cross build
-
-For example on a Linux machine to cross-build for Windows, just follow these steps.
-
-The first time you need to install all the windows-amd64 standard packages on
-your system with
-
-```bash
-# List all supported OS / ARCH
-go tool dist list
-
-# Install all standard packages for another OS/ARCH (eg. windows amd64)
-GOOS=windows GOARCH=amd64 go install -v -a std
-```
-
-Then compile and package xds-agent using provided makefile
-
-```bash
-export GOOS=windows
-export GOARCH=amd64
-make all
-make package
-```
-
-## Debugging
-
-### XDS agent architecture
-
-The agent part is written in *Go* and the webapp / dashboard is in *typescript + Angular4*.
-
-```bash
-|
-+-- bin/ where xds-server binary file will be built
-|
-+-- conf.d Linux configuration and startup files (systemd user service)
-|
-+-- glide.yaml Go package dependency file
-|
-+-- lib/ sources of server part (Go)
-|
-+-- main.go main entry point of of Web server (Go)
-|
-+-- Makefile makefile including
-|
-+-- README.md this readme
-|
-+-- scripts/ hold various scripts used for installation or startup
-|
-+-- tools/ temporary directory to hold development tools (like glide)
-|
-+-- vendor/ temporary directory to hold Go dependencies packages
-|
-+-- webapp/ source client basic webapp / dashboard
-```
-
-### Debug
-
-Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
-
->**Tricks:**
->
->To debug both `xds-agent` and `xds-server` or common code
->`xds-common`, it may be useful use the same local sources.
->
->So you should replace `xds-server` + `xds-common` in `vendor` directory by a symlink.
->
->So clone first `xds-server` + `xds-common` sources next to `xds-agent` directory.
-
-You should have the following tree:
-
-```bash
-tree -L 5 --charset=ascii src/
-src/
-`-- gerrit.automotivelinux.org
- `-- gerrit
- `-- src
- `-- xds
- |-- backup.sh
- |-- xds-agent
- |-- xds-cli
- |-- xds-common
- |-- xds-docs
- |-- xds-gdb
- `-- xds-server
-```
-
-Then invoke `vendor/debug` Makefile rule to create a symlink inside vendor
-directory :
-
-```bash
-cd src/gerrit.automotivelinux.org/gerrit/src/xds/xds-agent
-make vendor/debug
-```
diff --git a/docs/part-2/2_xds-agent/0_abstract.md b/docs/part-2/2_xds-agent/0_abstract.md
new file mode 100644
index 0000000..d73bdb9
--- /dev/null
+++ b/docs/part-2/2_xds-agent/0_abstract.md
@@ -0,0 +1,19 @@
+# XDS - X(cross) Development System Agent
+
+XDS-agent is a client that should run on your local / user development machine when you use XDS.
+
+This agent takes care, among others, of starting [Syncthing](https://syncthing.net/)
+tool to synchronize your project files from your local host to XDS build server
+machine or container (where `xds-server` is running).
+
+> **SEE ALSO**: [xds-server](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-server.git), a web server
+used to remotely cross build applications.
+
+---
+
+Links to subchapters :
+
+- [Configuration](./1_config.html)
+- [Start-up](./2_start.html)
+- [Build from scratch](./3_build.html)
+- [Debugging](./4_debug.html)
diff --git a/docs/part-2/2_xds-agent/1_config.md b/docs/part-2/2_xds-agent/1_config.md
new file mode 100644
index 0000000..9e912cb
--- /dev/null
+++ b/docs/part-2/2_xds-agent/1_config.md
@@ -0,0 +1,47 @@
+# Configuration
+
+xds-agent configuration is driven by a JSON config file.
+
+The tarball mentioned in previous section includes this file with default settings.
+
+Here is the logic to determine which conf file will be used:
+
+1. from command line option: `--config myConfig.json`
+1. `$HOME/.xds/agent/agent-config.json` file
+1. `/etc/xds/agent/agent-config.json` file
+
+Supported fields in configuration file are (all fields are optional and example
+below corresponds to the default values):
+
+- **httpPort** : http port of agent REST interface
+- **webAppDir** : location of client webapp / dashboard (default: webapp/dist)
+- **logsDir** : directory to store logs (eg. syncthing output)
+- **xdsServers** : an array of xds-server object
+ - **xdsServers.url**: url of xds-server to connect to
+- **syncthing**: a object defining syncthing settings
+ - **syncthing.binDir** : syncthing binaries directory (default: executable directory)
+ - **syncthing.home"** : syncthing home directory (usually .../syncthing-config)
+ - **syncthing.gui-address** : syncthing gui url (default <http://localhost:8386>)
+ - **syncthing.gui-apikey** : syncthing api-key to use (default auto-generated)
+
+```json
+{
+ "httpPort": "8800",
+ "webAppDir": "./www",
+ "logsDir": "${HOME}/.xds/agent/logs",
+ "xdsServers": [
+ {
+ "url": "http://localhost:8000"
+ }
+ ],
+ "syncthing": {
+ "home": "${HOME}/.xds/agent/syncthing-config",
+ "gui-address": "http://localhost:8386",
+ "gui-apikey": "1234abcezam"
+ }
+}
+```
+
+>**Note:**
+>
+>environment variables are supported by using `${MY_VAR}` syntax.
diff --git a/docs/part-2/2_xds-agent/2_start.md b/docs/part-2/2_xds-agent/2_start.md
new file mode 100644
index 0000000..8ff0b1d
--- /dev/null
+++ b/docs/part-2/2_xds-agent/2_start.md
@@ -0,0 +1,14 @@
+# Start-up
+
+Simply to start `xds-agent` executable
+
+```bash
+./xds-agent &
+```
+
+>**Note:**
+>
+>If need be, you can increase log level by setting option
+`--log <level>`, supported *level* are: panic, fatal, error, warn, info, debug.
+
+You can now use XDS dashboard and check that connection with `xds-agent` is up.
diff --git a/docs/part-2/2_xds-agent/3_build.md b/docs/part-2/2_xds-agent/3_build.md
new file mode 100644
index 0000000..ce1407d
--- /dev/null
+++ b/docs/part-2/2_xds-agent/3_build.md
@@ -0,0 +1,58 @@
+# Build xds-agent from scratch
+
+## Dependencies
+
+Install [Go](https://golang.org/doc/install), [npm](https://www.npmjs.com/),
+[nodejs](https://nodejs.org/en/) and some other tools.
+
+Refer to [Prerequisites chapter](../1_Prerequisites.html) for more details.
+
+## Building
+
+Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
+
+```bash
+ mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-agent
+ # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-agent
+ cd xds-agent
+ make all
+```
+
+And to install xds-agent (by default in `/usr/local/bin`):
+
+```bash
+make install
+```
+
+>**Note:**
+>
+>Used `DESTDIR` to specify another install directory
+>```bash
+>make install DESTDIR=$HOME/opt/xds-agent
+>```
+
+### Cross build
+
+For example on a Linux machine to cross-build for Windows, just follow these steps.
+
+The first time you need to install all the windows-amd64 standard packages on
+your system with
+
+```bash
+# List all supported OS / ARCH
+go tool dist list
+
+# Install all standard packages for another OS/ARCH (eg. windows amd64)
+GOOS=windows GOARCH=amd64 go install -v -a std
+```
+
+Then compile and package xds-agent using provided makefile
+
+```bash
+export GOOS=windows
+export GOARCH=amd64
+make all
+make package
+```
diff --git a/docs/part-2/2_xds-agent/4_debug.md b/docs/part-2/2_xds-agent/4_debug.md
new file mode 100644
index 0000000..9490c4b
--- /dev/null
+++ b/docs/part-2/2_xds-agent/4_debug.md
@@ -0,0 +1,69 @@
+# Debugging
+
+## XDS agent architecture
+
+The agent part is written in *Go* and the webapp / dashboard is in *typescript + Angular4*.
+
+```bash
+|
++-- bin/ where xds-server binary file will be built
+|
++-- conf.d Linux configuration and startup files (systemd user service)
+|
++-- glide.yaml Go package dependency file
+|
++-- lib/ sources of server part (Go)
+|
++-- main.go main entry point of of Web server (Go)
+|
++-- Makefile makefile including
+|
++-- README.md this readme
+|
++-- scripts/ hold various scripts used for installation or startup
+|
++-- tools/ temporary directory to hold development tools (like glide)
+|
++-- vendor/ temporary directory to hold Go dependencies packages
+|
++-- webapp/ source client basic webapp / dashboard
+```
+
+## Debug
+
+Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
+
+>**Tricks:**
+>
+>To debug both `xds-agent` and `xds-server` or common code
+>`xds-common`, it may be useful use the same local sources.
+>
+>So you should replace `xds-server` + `xds-common` in `vendor` directory by a symlink.
+>
+>So clone first `xds-server` + `xds-common` sources next to `xds-agent` directory.
+
+You should have the following tree:
+
+```bash
+tree -L 5 --charset=ascii src/
+src/
+`-- gerrit.automotivelinux.org
+ `-- gerrit
+ `-- src
+ `-- xds
+ |-- backup.sh
+ |-- xds-agent
+ |-- xds-cli
+ |-- xds-common
+ |-- xds-docs
+ |-- xds-gdb
+ `-- xds-server
+```
+
+Then invoke `vendor/debug` Makefile rule to create a symlink inside vendor
+directory :
+
+```bash
+cd src/gerrit.automotivelinux.org/gerrit/src/xds/xds-agent
+make vendor/debug
+```
diff --git a/docs/part-2/3_xds-cli.md b/docs/part-2/3_xds-cli.md
deleted file mode 100644
index ade25f8..0000000
--- a/docs/part-2/3_xds-cli.md
+++ /dev/null
@@ -1,233 +0,0 @@
-# xds-cli: command-line tool for XDS
-
-`xds-cli` is a command-line tool for X(cross) Development System.
-
-## Configuration
-
-`xds-cli` configuration is defined either by environment variables or by
-setting command line options.
-
-Configuration through environment variables may also be defined in a file that
-will be sourced by `xds-cli` on start-up.
-
-Use `--config|-c` option or set `XDS_CONFIG` environment variable to specify the config file to use.
-
-So configuration is driven either by environment variables or by command line
-options or using a config file knowing that the following priority order is used:
-
-1. use option value (for example use project ID set by `--id` option),
-1. else use variable `XDS_xxx` (for example `XDS_PROJECT_ID` variable) when a
- config file is specified with `--config|-c` option,
-1. else use `XDS_xxx` (for example `XDS_PROJECT_ID`) environment variable
-
-<!-- note -->
-**Note:**
-
-All parameters after a double dash (--) are considered as the command
-to execute on xds-server.
-<!-- endnote -->
-
-### Global Options / Configuration variables
-
-Following is the list of global options across all sub-commands.
-
-__`--config|-c` option or `XDS_CONFIG` env variable__
-
-Env config file to source on startup
-
-__`--log|-l` option or `XDS_LOGLEVEL` env variable__
-
-Logging level, supported levels are:
-
-- panic
-- fatal
-- error
-- warn
-- info
-- debug
-
-Default level is "error".
-
-**`--rpath` option or `XDS_PATH` env variable**
-
-Relative path into project
-
-**`timestamp|-ts` option or `XDS_TIMESTAMP` env variable**
-
-Prefix output with timestamp
-
-**`url` option or `XDS_AGENT_URL` env variable**
-
-Local XDS agent url (default: "localhost:8800")
-
-## Commands
-
-### projects
-
-`projects` (short `prj`) command should be used to managed XDS projects.
-
-This command supports following sub-commands:
-
-```bash
-add, a Add a new project
-get Get a property of a project
-list, ls List existing projects
-remove, rm Remove an existing project
-sync Force synchronization of project sources
-```
-
-Here are some usage examples:
-
-```bash
-# Create/declare a new project
-xds-cli prj add --label "ABeautifulName" --type pm -p /home/seb/xds-workspace/myProject -sp /home/devel/xds-workspace/myProject
-
-# List projects
-xds-cli prj ls
-
-# Delete an existing project
-xds-cli prj rm 8e49
-```
-
-### sdks
-
-`sdks` (alias `sdk`) command should be used to managed cross SDKs.
-
-This command supports following sub-commands:
-
-```bash
-add, a Add a new SDK
-get Get a property of a SDK
-list, ls List installed SDKs
-remove, rm Remove an existing SDK
-```
-
-Here are some usage examples:
-
-```bash
-# List existing SDKs
-xds-cli sdks ls
-
-# Get SDK info
-xds-cli sdks get c64d
-```
-
-### exec
-
-`exec` command should be used to exec command through XDS system.
-
-For example you can use this command to build your project in XDS system.
-
-This command supports following sub-commands:
-
-`exec` command options are:
-
-**`--id` option or `XDS_PROJECT_ID` env variable (**mandatory option**)**
-
-project ID you want to build
-
-**`--rpath` (short `-p`) or `XDS_RPATH` env variable**
-
-relative path into project
-
-**`--sdkid` (alias `--sdk`) or `XDS_SDK_ID` env variable (**mandatory option**)**
-
-Cross Sdk ID to use to build project.
-
-Here are some usage examples:
-
-```bash
-cd $MY_PROJECT_DIR
-mkdir build
-
-# Generate build system using cmake
-xds-cli exec --id=4021 --sdkid=c226 -- "cd build && cmake .."
-
-# Build the project
-xds-cli exec --id=4021 --sdkid=c226 -- "cd build && make all"
-```
-
-In case of `xds-agent` is not running on default url:port (that is `localhost:8800`)
-
-You can specify the url using `--url` option :
-
-```bash
-xds-cli --url=http://localhost:8800 exec --id=4021 --sdkid=c226 -- "cd build && make all"
-```
-
-### misc
-
-`misc` command allows to execute miscellaneous sub-commands such as:
-
-```bash
-version, v Get version of XDS agent and XDS server
-status, sts Get XDS configuration status (including XDS server connection)
-```
-
-Here are some usage examples:
-
-```bash
-xds-cli misc version --verbose
-
-xds-cli misc sts
-```
-
-## How to build
-
-### Dependencies
-
-Install [Go](https://golang.org/doc/install) and some other tools.
-Refer to [Prerequisites chapter](./0_Abstract.html#prerequisites) for more details.
-
-### Building
-
-Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
-
-```bash
- export GOPATH=$(realpath ~/workspace_go)
- mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
- # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-cli
- cd xds-cli
- make
-```
-
-## Debug
-
-Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
-
->**Tricks:**
->
->To debug both `xds-cli` and `xds-agent` (REST API part) or common
-code `xds-common`, it may be useful use the same local sources.
->
->So you should replace `xds-agent` + `xds-common` in `vendor` directory by a symlink.
->
->So clone first `xds-agent` + `xds-common` sources next to `xds-cli` directory.
-
-You should have the following tree:
-
-```bash
-tree -L 5 --charset=ascii src/
-src/
-`-- gerrit.automotivelinux.org
- `-- gerrit
- `-- src
- `-- xds
- |-- backup.sh
- |-- xds-agent
- |-- xds-cli
- |-- xds-common
- |-- xds-docs
- |-- xds-gdb
- `-- xds-server
-```
-
-Then invoke `vendor/debug` Makefile rule to create a symlink inside vendor
-directory :
-
-```bash
-cd src/gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
-make vendor/debug
-```
diff --git a/docs/part-2/3_xds-cli/0_abstract.md b/docs/part-2/3_xds-cli/0_abstract.md
new file mode 100644
index 0000000..df7db6c
--- /dev/null
+++ b/docs/part-2/3_xds-cli/0_abstract.md
@@ -0,0 +1,15 @@
+# xds-cli: command-line tool for XDS
+
+`xds-cli` is a command-line tool for X(cross) Development System.
+
+This tool can be used in addition to `XDS Dashboard` to control XDS from command
+line.
+
+---
+
+Links to subchapters :
+
+- [Configuration](./1_config.html)
+- [Start-up](./2_commands.html)
+- [Build from scratch](./3_build.html)
+- [Debugging](./4_debug.html)
diff --git a/docs/part-2/3_xds-cli/1_config.md b/docs/part-2/3_xds-cli/1_config.md
new file mode 100644
index 0000000..6dc7993
--- /dev/null
+++ b/docs/part-2/3_xds-cli/1_config.md
@@ -0,0 +1,57 @@
+# Configuration
+
+`xds-cli` configuration is defined either by environment variables or by
+setting command line options.
+
+Configuration through environment variables may also be defined in a file that
+will be sourced by `xds-cli` on start-up.
+
+Use `--config|-c` option or set `XDS_CONFIG` environment variable to specify the config file to use.
+
+So configuration is driven either by environment variables or by command line
+options or using a config file knowing that the following priority order is used:
+
+1. use option value (for example use project ID set by `--id` option),
+1. else use variable `XDS_xxx` (for example `XDS_PROJECT_ID` variable) when a
+ config file is specified with `--config|-c` option,
+1. else use `XDS_xxx` (for example `XDS_PROJECT_ID`) environment variable
+
+<!-- note -->
+**Note:**
+
+All parameters after a double dash (--) are considered as the command
+to execute on xds-server.
+<!-- endnote -->
+
+## Global Options / Configuration variables
+
+Following is the list of global options across all sub-commands.
+
+__`--config|-c` option or `XDS_CONFIG` env variable__
+
+Env config file to source on startup
+
+__`--log|-l` option or `XDS_LOGLEVEL` env variable__
+
+Logging level, supported levels are:
+
+- panic
+- fatal
+- error
+- warn
+- info
+- debug
+
+Default level is "error".
+
+**`--rpath` option or `XDS_PATH` env variable**
+
+Relative path into project
+
+**`timestamp|-ts` option or `XDS_TIMESTAMP` env variable**
+
+Prefix output with timestamp
+
+**`url` option or `XDS_AGENT_URL` env variable**
+
+Local XDS agent url (default: "localhost:8800")
diff --git a/docs/part-2/3_xds-cli/2_commands.md b/docs/part-2/3_xds-cli/2_commands.md
new file mode 100644
index 0000000..b5e0c0a
--- /dev/null
+++ b/docs/part-2/3_xds-cli/2_commands.md
@@ -0,0 +1,119 @@
+# Commands
+
+## projects
+
+`projects` (short `prj`) command should be used to managed XDS projects.
+
+This command supports following sub-commands:
+
+```bash
+add, a Add a new project
+get Get a property of a project
+list, ls List existing projects
+remove, rm Remove an existing project
+sync Force synchronization of project sources
+```
+
+Here are some usage examples:
+
+```bash
+# Create/declare a new project
+xds-cli prj add --label "myProjectName" --type pm -p /home/seb/xds-workspace/myProject -sp /home/devel/xds-workspace/myProject
+
+# List projects
+xds-cli prj ls
+
+# Delete an existing project
+xds-cli prj rm 8e49
+```
+
+## sdks
+
+`sdks` (alias `sdk`) command should be used to managed cross SDKs.
+
+This command supports following sub-commands:
+
+```bash
+get Get a property of a SDK
+list, ls List installed SDKs
+install, i Install a SDK
+uninstall, rm UnInstall an existing SDK
+abort, a Abort an install action
+```
+
+Here are some usage examples:
+
+```bash
+# List existing SDKs
+xds-cli sdks ls
+
+# Get SDK info
+xds-cli sdks get c64d
+```
+
+<!-- note -->
+**Note:**
+
+Please also refer to [Installing AGL SDKs](../../part-1/3_install-sdks.html) chapter for more details about sdks installation.
+
+<!-- endnote -->
+
+## exec
+
+`exec` command should be used to exec command through XDS system.
+
+For example you can use this command to build your project in XDS system.
+
+This command supports following sub-commands:
+
+`exec` command options are:
+
+**`--id` option or `XDS_PROJECT_ID` env variable (**mandatory option**)**
+
+project ID you want to build
+
+**`--rpath` (short `-p`) or `XDS_RPATH` env variable**
+
+relative path into project
+
+**`--sdkid` (alias `--sdk`) or `XDS_SDK_ID` env variable (**mandatory option**)**
+
+Cross Sdk ID to use to build project.
+
+Here are some usage examples:
+
+```bash
+cd $MY_PROJECT_DIR
+mkdir build
+
+# Generate build system using cmake
+xds-cli exec --id=4021 --sdkid=c226 -- "cd build && cmake .."
+
+# Build the project
+xds-cli exec --id=4021 --sdkid=c226 -- "cd build && make all"
+```
+
+In case of `xds-agent` is not running on default url:port (that is `localhost:8800`)
+
+You can specify the url using `--url` option :
+
+```bash
+xds-cli --url=http://localhost:8800 exec --id=4021 --sdkid=c226 -- "cd build && make all"
+```
+
+## misc
+
+`misc` command allows to execute miscellaneous sub-commands such as:
+
+```bash
+version, v Get version of XDS agent and XDS server
+status, sts Get XDS configuration status (including XDS server connection)
+```
+
+Here are some usage examples:
+
+```bash
+xds-cli misc version --verbose
+
+xds-cli misc sts
+```
diff --git a/docs/part-2/3_xds-cli/3_build.md b/docs/part-2/3_xds-cli/3_build.md
new file mode 100644
index 0000000..ba2d83b
--- /dev/null
+++ b/docs/part-2/3_xds-cli/3_build.md
@@ -0,0 +1,21 @@
+# How to build
+
+## Dependencies
+
+Install [Go](https://golang.org/doc/install) and some other tools.
+
+Refer to [Prerequisites chapter](../1_Prerequisites.html) for more details.
+
+## Building
+
+Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
+
+```bash
+ export GOPATH=$(realpath ~/workspace_go)
+ mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
+ # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-cli
+ cd xds-cli
+ make
+```
diff --git a/docs/part-2/3_xds-cli/4_debug.md b/docs/part-2/3_xds-cli/4_debug.md
new file mode 100644
index 0000000..38628db
--- /dev/null
+++ b/docs/part-2/3_xds-cli/4_debug.md
@@ -0,0 +1,38 @@
+# Debug
+
+Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
+
+>**Tricks:**
+>
+>To debug both `xds-cli` and `xds-agent` (REST API part) or common
+code `xds-common`, it may be useful use the same local sources.
+>
+>So you should replace `xds-agent` + `xds-common` in `vendor` directory by a symlink.
+>
+>So clone first `xds-agent` + `xds-common` sources next to `xds-cli` directory.
+
+You should have the following tree:
+
+```bash
+tree -L 5 --charset=ascii src/
+src/
+`-- gerrit.automotivelinux.org
+ `-- gerrit
+ `-- src
+ `-- xds
+ |-- backup.sh
+ |-- xds-agent
+ |-- xds-cli
+ |-- xds-common
+ |-- xds-docs
+ |-- xds-gdb
+ `-- xds-server
+```
+
+Then invoke `vendor/debug` Makefile rule to create a symlink inside vendor
+directory :
+
+```bash
+cd src/gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
+make vendor/debug
+```
diff --git a/docs/part-2/4_xds-gdb/0_abstract.md b/docs/part-2/4_xds-gdb/0_abstract.md
new file mode 100644
index 0000000..d282efa
--- /dev/null
+++ b/docs/part-2/4_xds-gdb/0_abstract.md
@@ -0,0 +1,24 @@
+# xds-gdb: wrapper on gdb for XDS
+
+`xds-gdb` is a wrapper on gdb debugger for X(cross) Development System.
+
+This tool allows you to debug an application built with an xds-server without
+the need to install gdb or any cross tool.
+
+Two debugging models are supported:
+
+1. native debugging
+
+1. XDS remote debugging requiring an XDS agent/server setup. That allows you to
+ easily cross debug your application.
+
+ By default XDS debug model is used and you need to define `XDS_NATIVE_GDB`
+variable to use native gdb debug mode instead.
+
+---
+
+Links to subchapters :
+
+- [Configuration](./1_config.html)
+- [Build from scratch](./2_build.html)
+- [Debugging](./3_debug.html)
diff --git a/docs/part-2/4_xds-gdb.md b/docs/part-2/4_xds-gdb/1_config.md
index 96f5498..8568f18 100644
--- a/docs/part-2/4_xds-gdb.md
+++ b/docs/part-2/4_xds-gdb/1_config.md
@@ -1,26 +1,4 @@
-# xds-gdb: wrapper on gdb for XDS
-
-`xds-gdb` is a wrapper on gdb debugger for X(cross) Development System.
-
-This tool allows you to debug an application built with an xds-server without
-the need to install gdb or any cross tool.
-
-Two debugging models are supported:
-
-1. native debugging
-
-1. XDS remote debugging requiring an XDS agent/server setup. That allows you to easily cross debug your application.
-
- By default XDS debug model is used and you need to define `XDS_NATIVE_GDB`
-variable to use native gdb debug mode instead.
-
-> **SEE ALSO**: [xds-agent](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-agent.git), a local agent
-used to interface xds-server.
-> **SEE ALSO**: [xds-server](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-server.git), a REST API server
-used to remotely cross build applications.
-> **SEE ALSO**: [xds-cli](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/xds/xds-cli.git), XDS command line tool.
-
-## Configuration
+# Configuration
`xds-gdb` configuration is defined by variables (see listed below).
@@ -36,7 +14,7 @@ These variables may be set using:
1. $(CURRENT_DIRECTORY)/target/xds-gdb.env
1. $(HOME)/.config/xds/xds-gdb.env
-### Configuration Variables
+## Configuration Variables
`XDS_CONFIG`
@@ -93,7 +71,7 @@ Cross Sdk ID to use to build project
Local XDS agent url (default `http://localhost:8800`)
-### Configuration variables set within gdb init command file
+## Configuration variables set within gdb init command file
Above `XDS_xxx` variables may also be defined within gdb init command file
(see --command or -x option of genuine Gdb).
@@ -106,28 +84,3 @@ Example of gdb init file where we define project and sdk ID:
# :XDS-ENV: XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
# :XDS-ENV: XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
```
-
-## How to build xds-gdb from scratch
-
-### Dependencies
-
-Install [Go](https://golang.org/doc/install) and some other tools.
-Refer to [Prerequisites chapter](./0_Abstract.html#prerequisites) for more details.
-
-### Building
-
-Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
-
-```bash
- export GOPATH=$(realpath ~/workspace_go)
- mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
- git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-gdb
- # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-gdb
- cd xds-gdb
- make
-```
-
-## Debug
-
-Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
diff --git a/docs/part-2/4_xds-gdb/2_build.md b/docs/part-2/4_xds-gdb/2_build.md
new file mode 100644
index 0000000..5cc0ca8
--- /dev/null
+++ b/docs/part-2/4_xds-gdb/2_build.md
@@ -0,0 +1,21 @@
+# How to build xds-gdb from scratch
+
+## Dependencies
+
+Install [Go](https://golang.org/doc/install) and some other tools.
+
+Refer to [Prerequisites chapter](../1_Prerequisites.html) for more details.
+
+## Building
+
+Clone this repo into your `$GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds` and use delivered Makefile:
+
+```bash
+ export GOPATH=$(realpath ~/workspace_go)
+ mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
+ git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-gdb
+ # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-gdb
+ cd xds-gdb
+ make
+```
diff --git a/docs/part-2/4_xds-gdb/3_debug.md b/docs/part-2/4_xds-gdb/3_debug.md
new file mode 100644
index 0000000..80554ec
--- /dev/null
+++ b/docs/part-2/4_xds-gdb/3_debug.md
@@ -0,0 +1,3 @@
+# Debug
+
+Visual Studio Code launcher settings can be found into `.vscode/launch.json`.
diff --git a/docs/part-2/5_xds-exec.md b/docs/part-2/5_xds-exec.md
deleted file mode 100644
index 4a36f87..0000000
--- a/docs/part-2/5_xds-exec.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# xds-exec: wrapper on exec for XDS
-
-`xds-exec` is now deprecated and has been replaced `exec` command of `xds-cli`.
-
-Please refer to [xds-cli documentation](3_xds-cli.html) for more details.