From bbbe9c168526bbb729022f9de903aff5690b328d Mon Sep 17 00:00:00 2001 From: Johann CAHIER Date: Tue, 9 Oct 2018 10:45:08 +0200 Subject: Improves documentation * Describes better available source tree sharing method (between xds-agent and xds-server), and which to prefer depending on the deployment setup. * Gives indication about how to pass RSYNC_TARGET and RSYNC_PREFIX env vars to the helloworld-native-application build process. * Swap chapter order (build before config) Change-Id: Ie4c22f277a59b0405744d71b0fadff67c5d5d025 Signed-off-by: Johann CAHIER --- docs/part-1/4-1_build-first-app-setup.md | 17 ++- docs/part-1/4-2_build-first-app-cmd.md | 8 +- docs/part-1/4-3_build-first-app-dashboard.md | 6 + docs/part-2/1_xds-server/0_abstract.md | 7 +- docs/part-2/1_xds-server/1_build.md | 84 ++++++++++++ docs/part-2/1_xds-server/1_config.md | 89 ------------ docs/part-2/1_xds-server/2_config.md | 89 ++++++++++++ docs/part-2/1_xds-server/2_how-to-run.md | 198 --------------------------- docs/part-2/1_xds-server/3_build.md | 84 ------------ docs/part-2/1_xds-server/3_how-to-run.md | 198 +++++++++++++++++++++++++++ docs/part-2/2_xds-agent/0_abstract.md | 6 +- docs/part-2/2_xds-agent/1_build.md | 90 ++++++++++++ docs/part-2/2_xds-agent/1_config.md | 47 ------- docs/part-2/2_xds-agent/2_config.md | 47 +++++++ docs/part-2/2_xds-agent/2_start.md | 52 ------- docs/part-2/2_xds-agent/3_build.md | 90 ------------ docs/part-2/2_xds-agent/3_start.md | 52 +++++++ docs/part-2/3_xds-cli/0_abstract.md | 6 +- docs/part-2/3_xds-cli/1_build.md | 39 ++++++ docs/part-2/3_xds-cli/1_config.md | 57 -------- docs/part-2/3_xds-cli/2_commands.md | 119 ---------------- docs/part-2/3_xds-cli/2_config.md | 57 ++++++++ docs/part-2/3_xds-cli/3_build.md | 39 ------ docs/part-2/3_xds-cli/3_commands.md | 119 ++++++++++++++++ docs/part-2/4_xds-gdb/0_abstract.md | 4 +- docs/part-2/4_xds-gdb/1_build.md | 39 ++++++ docs/part-2/4_xds-gdb/1_config.md | 86 ------------ docs/part-2/4_xds-gdb/2_build.md | 39 ------ docs/part-2/4_xds-gdb/2_config.md | 86 ++++++++++++ 29 files changed, 938 insertions(+), 916 deletions(-) create mode 100644 docs/part-2/1_xds-server/1_build.md delete mode 100644 docs/part-2/1_xds-server/1_config.md create mode 100644 docs/part-2/1_xds-server/2_config.md delete mode 100644 docs/part-2/1_xds-server/2_how-to-run.md delete mode 100644 docs/part-2/1_xds-server/3_build.md create mode 100644 docs/part-2/1_xds-server/3_how-to-run.md create mode 100644 docs/part-2/2_xds-agent/1_build.md delete mode 100644 docs/part-2/2_xds-agent/1_config.md create mode 100644 docs/part-2/2_xds-agent/2_config.md delete mode 100644 docs/part-2/2_xds-agent/2_start.md delete mode 100644 docs/part-2/2_xds-agent/3_build.md create mode 100644 docs/part-2/2_xds-agent/3_start.md create mode 100644 docs/part-2/3_xds-cli/1_build.md delete mode 100644 docs/part-2/3_xds-cli/1_config.md delete mode 100644 docs/part-2/3_xds-cli/2_commands.md create mode 100644 docs/part-2/3_xds-cli/2_config.md delete mode 100644 docs/part-2/3_xds-cli/3_build.md create mode 100644 docs/part-2/3_xds-cli/3_commands.md create mode 100644 docs/part-2/4_xds-gdb/1_build.md delete mode 100644 docs/part-2/4_xds-gdb/1_config.md delete mode 100644 docs/part-2/4_xds-gdb/2_build.md create mode 100644 docs/part-2/4_xds-gdb/2_config.md diff --git a/docs/part-1/4-1_build-first-app-setup.md b/docs/part-1/4-1_build-first-app-setup.md index 1458e4e..7b8fff2 100644 --- a/docs/part-1/4-1_build-first-app-setup.md +++ b/docs/part-1/4-1_build-first-app-setup.md @@ -1,12 +1,23 @@ # Setup +## Sources Sharing Methods + +### What are possible ways to share source trees ? + 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: +There are two possible methods to share sources between your host and the XDS server: +- Cloud sync: implies your local directory will be sent to and replicated on the server. This method lets you clone project anywhere on your local disk, +- Path mapping: apply when the xds-server is running locally. This method uses a volume shared between your host and the server, typically `$HOME/xds-workspace` directory. It is much more efficient as there is no replication onto the server ; but you must clone project under the shared directory (`$HOME/xds-workspace` is a good choice because it is shared by default. To create more shared volumes, See --volume option of [container creation script](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/xds/part-1/1-1_install-xds-server-docker.html#create-and-start-a-new-container) ) + +### Which one should I choose ? + +It depends on your [deployment setup](http://docs.automotivelinux.org/docs/devguides/en/dev/reference/xds/part-1/0_Abstract.html) (Standalone, On-Premise or SaaS). -- Cloud sync: you can clone project anywhere on your local disk, -- Path mapping: you must clone project into `$HOME/xds-workspace` directory. +* Standalone : use local path mapping. It makes no sense to use cloud sync as it would add pointless overhead. +* On-Premise : use Clound Sync. +* SaaS : use Cloud Sync. This is the only way to achieve source sharing in this deployment setup. **Note:** : [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL diff --git a/docs/part-1/4-2_build-first-app-cmd.md b/docs/part-1/4-2_build-first-app-cmd.md index fbfdc41..c878d08 100644 --- a/docs/part-1/4-2_build-first-app-cmd.md +++ b/docs/part-1/4-2_build-first-app-cmd.md @@ -63,15 +63,19 @@ 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 +# First, grab your target IP address, or it's DNS name +export TARGET_ADDRESS= + # 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 .." +# RSYNC_* variables must be set to allow deployment/populate widgets on target (see app-template doc for more info) +xds-cli exec --id=4021617e --sdkid=c226821b -- "export RSYNC_TARGET=root@${TARGET_ADDRESS} ; export RSYNC_PREFIX=/opt ; cd build && cmake .." # Build the project -xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && make all" +xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && make widget" ``` diff --git a/docs/part-1/4-3_build-first-app-dashboard.md b/docs/part-1/4-3_build-first-app-dashboard.md index 1f43715..076be94 100644 --- a/docs/part-1/4-3_build-first-app-dashboard.md +++ b/docs/part-1/4-3_build-first-app-dashboard.md @@ -39,6 +39,12 @@ your local disk. ## Build from XDS dashboard + +**Note:** _helloworld-native-application_ requires few configuration items to be able to walkthrough the whole process. +To pass some environment variables, use the `Settings` window in the `Build` tab. The `Env variables` field allows to pass a list of environment variables (semi-colon separated) that will be set on the server prior to any build action. +For the _helloworld-native-application_ you have to pass something like `RSYNC_TARGET=root@mytarget;RSYNC_PREFIX=/opt` (please replace `mytarget` by a valid target IP address or DNS name entry). + + 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 diff --git a/docs/part-2/1_xds-server/0_abstract.md b/docs/part-2/1_xds-server/0_abstract.md index 07dd057..8e8d9a4 100644 --- a/docs/part-2/1_xds-server/0_abstract.md +++ b/docs/part-2/1_xds-server/0_abstract.md @@ -35,7 +35,8 @@ 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) +- [Build from scratch](./1_build.html) +- [Configuration](./2_config.html) +- [How to run](./3_how-to-run.html) - [Debugging](./4_debug.html) +- [Tests](./5_test.html) diff --git a/docs/part-2/1_xds-server/1_build.md b/docs/part-2/1_xds-server/1_build.md new file mode 100644 index 0000000..5c5059f --- /dev/null +++ b/docs/part-2/1_xds-server/1_build.md @@ -0,0 +1,84 @@ +# 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 + +Clone sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-server` +in order respect directory hierarchy that match Go package import logic (see +[How to Write Go Code](https://golang.org/doc/code.html) for more details). + +Then use delivered Makefile : + +```bash +# Declare ROOTDIR, can be any location (for example xds-build) +ROOTDIR=$HOME/xds-build + +# Create directory hierarchy that match Go package import logic +mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds +cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds + +# Clone sources +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 + +# Build xds-server +# (note that GOPATH will correctly be set by Makefile) +cd xds-server +make all +``` + +Generate xds-server package / tarball + +```bash +make package-all +``` + +And to install `xds-server` (by default in `/opt/AGL/xds/server`): + +```bash +make install +``` + + +**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. + + + +**Note:** + +Used `DESTDIR` to specify another install directory + +```bash +make install DESTDIR=$HOME/opt/xds-server +``` + + + +### 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/1_config.md b/docs/part-2/1_xds-server/1_config.md deleted file mode 100644 index ad86043..0000000 --- a/docs/part-2/1_xds-server/1_config.md +++ /dev/null @@ -1,89 +0,0 @@ -# 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. `/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 -- **sdkDbUpdate** : define how SDK database(s) is(are) updated, supported values are: - `disable`, `startup` (default: `startup`) -- **syncthing.binDir** : syncthing binaries directory (default: executable directory) -- **syncthing.home"** : syncthing home directory (usually .../syncthing-config) -- **syncthing.gui-address** : syncthing gui url (default ) -- **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", - "sdkDbUpdate": "startup", - "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:** -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` - - -## 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:** - -- `CloudSync` (AKA syncthing) synchronization type can also be disabled when `"syncthing"` key is not defined in JSON configuration file. - - diff --git a/docs/part-2/1_xds-server/2_config.md b/docs/part-2/1_xds-server/2_config.md new file mode 100644 index 0000000..ad86043 --- /dev/null +++ b/docs/part-2/1_xds-server/2_config.md @@ -0,0 +1,89 @@ +# 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. `/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 +- **sdkDbUpdate** : define how SDK database(s) is(are) updated, supported values are: + `disable`, `startup` (default: `startup`) +- **syncthing.binDir** : syncthing binaries directory (default: executable directory) +- **syncthing.home"** : syncthing home directory (usually .../syncthing-config) +- **syncthing.gui-address** : syncthing gui url (default ) +- **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", + "sdkDbUpdate": "startup", + "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:** +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` + + +## 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:** + +- `CloudSync` (AKA syncthing) synchronization type can also be disabled when `"syncthing"` key is not defined in JSON configuration file. + + diff --git a/docs/part-2/1_xds-server/2_how-to-run.md b/docs/part-2/1_xds-server/2_how-to-run.md deleted file mode 100644 index a3ae22b..0000000 --- a/docs/part-2/1_xds-server/2_how-to-run.md +++ /dev/null @@ -1,198 +0,0 @@ -# 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 -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 - -There are several way to install xds-server and start-up depend of installation type: - -| Installation type | Supported
host OS | Start-up | Install instructions | -|-------------------|-------------------------|---------------------------------------------------|----------------------| -| Docker container | Linux or MacOS | Automatic based on systemd user service | [see Installation based on Docker container](../../part-1/1-1_install-xds-server-docker.html) | -| Virtual Machine | Linux, MacOS or Windows | Automatic based on systemd user service | [see Installation based on VirtualBox appliance](../../part-1/1-2_install-xds-server-vm.html) | -| Native | Linux | Automatic based on systemd user service or manual | [see Native installation](../../part-1/1-3_install-xds-server-native.html) | -| Native | MacOS or Windows | Manually | [see Native installation](../../part-1/1-3_install-xds-server-native.html) | - -### Automatic start-up based on systemd user service - -XDS server is started as a user service by Systemd. - -```bash -/usr/lib/systemd/user/xds-server.service -``` - -Use well-known systemd commands to control `xds-server.service` service. - -```bash -# Enter in docker container or VM -# (optional, depending on installation type) -ssh -p 2222 devel@localhost - -# Status XDS server: -systemctl --user status xds-server - -# Restart XDS server -systemctl --user restart xds-server -``` - -If needed you can change default setting by defining specific environment -variables file - -```bash -ssh -t -p 2222 devel@localhost vim /etc/default/xds-server -``` - -For example to control log level, just set LOG_LEVEL env variable. - -knowing that supported *level* are: - -- panic -- fatal -- error -- warn -- info -- debug - -```bash -docker exec ${CONTAINER_NAME} bash -c "echo 'LOG_LEVEL=debug' >> /etc/default/xds-server" -ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server" -``` - -### Manual start-up - -On **Linux or MacOS**, simply execute `xds-server` executable: - -```bash -/opt/AGL/bin/xds-server -``` - -On **Windows**, simply execute `xds-server` executable: - -```batch -C:\AGL\bin\xds-server.exe -``` - - -**Note:** - -Invoke `xds-server --help` to get more details about possible options that allow -for example to change logging level or select another configuration file. - - - -## XDS server REST API and Web application - -`xds-server` exposes a REST API and serves a basic web-application. - -REST API based url is `http://localhost:8000/api/v1/` when XDS server is -running on your host (localhost) and basic web-application is available at -[http://localhost:8000](http://localhost:8000). - -Just replace `localhost` by the host name or ip when `xds-server` is running -on another host. - -```bash -# Get version using REST API -curl http://localhost:8000/api/v1/version - -# Open browser and local xds-server web-application -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/0_abstract.html) for more details. - -## SDK cross-toolchain Management - -### Setup to add support of a new SDK family - - -**Optional step**: read this chapter only if you plan to add a new SDK family. - - -`xds-server` dynamically detects supported SDKs by scanning sub-directories of -`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 -of a specific family. - -These scripts are: - -- `add`: used to add/install a new SDK -- `db-dump`: returned the list of available and installed SDKs (JSON format) -- `db-update`: update SDKs database -- `get-family-config`: returned SDK family configuration structure (JSON format) -- `get-sdk-info`: extract SDK info (JSON format) from a SDK file/tarball -- `remove`: used to remove an existing SDK - -For example, here 2 SDKs family (`agl` and `zephyr`) are defined: - -```bash -# > tree ./sdks/ -./sdks/ -├── agl -│ ├── add -│ ├── db-dump -│ ├── db-update -│ ├── get-family-config -│ ├── get-sdk-info -│ └── remove -├── README.md -└── zephyr - ├── add -│ ├── db-dump -│ ├── db-update -│ ├── get-family-config -│ ├── get-sdk-info - └── remove -``` - -On startup `xds-server` will call in order: - -- `sdks/*/get-family-config` to get configuration of each SDK family. -- `sdks/*/db-update` to update database (only when `SdkDbUpdate` is set to ̀`startup`, - see [Configuration chapter](1_config.html) for more details) -- `sdks/*/db-dump` scripts to get the initial list of available and installed SDKs. - -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 - -Please refer to [Installing AGL SDKs](../../part-1/3_install-sdks.html) chapter. - -### Un-install a SDK from command line - -Used `sdks` command of `xds-cli` tool to managed SDKs. - -```bash -# List installed SDKs -xds-cli sdks ls -List of installed SDKs: - ID NAME STATUS VERSION ARCH - c39e5998 poky-agl_aarch64_4.0.1 Installed 4.0.1 aarch64 - d610bfbf poky-agl-aarch64.current_on_iotbzh_download-3.99.1+snapshot Installed 3.99.1+snapshot aarch64.current_on_iotbzh_download - a0ae663d poky-agl-corei7-64-3.99.1+snapshot Installed 3.99.1+snapshot corei7-64 - 87f0400b AGL-release-dab-3.99.3-m3ulcb-nogfx Installed 3.99.3 aarch64 - 352c0584 poky-agl-corei7-64-3.99.2+snapshot Installed 3.99.2+snapshot corei7-64 - d65fe750 AGL-release-eel-latest-qemux86-64 Installed 4.99.5 corei7-64 - -# Un-install a SDK -xds-cli sdks uninstall d65fe750 -SDK ID d65fe750-d3a7-38f5-83d8-3d3806054f8d successfully deleted. -``` - -### 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. diff --git a/docs/part-2/1_xds-server/3_build.md b/docs/part-2/1_xds-server/3_build.md deleted file mode 100644 index 5c5059f..0000000 --- a/docs/part-2/1_xds-server/3_build.md +++ /dev/null @@ -1,84 +0,0 @@ -# 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 - -Clone sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-server` -in order respect directory hierarchy that match Go package import logic (see -[How to Write Go Code](https://golang.org/doc/code.html) for more details). - -Then use delivered Makefile : - -```bash -# Declare ROOTDIR, can be any location (for example xds-build) -ROOTDIR=$HOME/xds-build - -# Create directory hierarchy that match Go package import logic -mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds -cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds - -# Clone sources -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 - -# Build xds-server -# (note that GOPATH will correctly be set by Makefile) -cd xds-server -make all -``` - -Generate xds-server package / tarball - -```bash -make package-all -``` - -And to install `xds-server` (by default in `/opt/AGL/xds/server`): - -```bash -make install -``` - - -**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. - - - -**Note:** - -Used `DESTDIR` to specify another install directory - -```bash -make install DESTDIR=$HOME/opt/xds-server -``` - - - -### 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/3_how-to-run.md b/docs/part-2/1_xds-server/3_how-to-run.md new file mode 100644 index 0000000..4e56f3f --- /dev/null +++ b/docs/part-2/1_xds-server/3_how-to-run.md @@ -0,0 +1,198 @@ +# 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 +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 + +There are several way to install xds-server and start-up depend of installation type: + +| Installation type | Supported
host OS | Start-up | Install instructions | +|-------------------|-------------------------|---------------------------------------------------|----------------------| +| Docker container | Linux or MacOS | Automatic based on systemd user service | [see Installation based on Docker container](../../part-1/1-1_install-xds-server-docker.html) | +| Virtual Machine | Linux, MacOS or Windows | Automatic based on systemd user service | [see Installation based on VirtualBox appliance](../../part-1/1-2_install-xds-server-vm.html) | +| Native | Linux | Automatic based on systemd user service or manual | [see Native installation](../../part-1/1-3_install-xds-server-native.html) | +| Native | MacOS or Windows | Manually | [see Native installation](../../part-1/1-3_install-xds-server-native.html) | + +### Automatic start-up based on systemd user service + +XDS server is started as a user service by Systemd. + +```bash +/usr/lib/systemd/user/xds-server.service +``` + +Use well-known systemd commands to control `xds-server.service` service. + +```bash +# Enter in docker container or VM +# (optional, depending on installation type) +ssh -p 2222 devel@localhost + +# Status XDS server: +systemctl --user status xds-server + +# Restart XDS server +systemctl --user restart xds-server +``` + +If needed you can change default setting by defining specific environment +variables file + +```bash +ssh -t -p 2222 devel@localhost vim /etc/default/xds-server +``` + +For example to control log level, just set LOG_LEVEL env variable. + +knowing that supported *level* are: + +- panic +- fatal +- error +- warn +- info +- debug + +```bash +docker exec ${CONTAINER_NAME} bash -c "echo 'LOG_LEVEL=debug' >> /etc/default/xds-server" +ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server" +``` + +### Manual start-up + +On **Linux or MacOS**, simply execute `xds-server` executable: + +```bash +/opt/AGL/bin/xds-server +``` + +On **Windows**, simply execute `xds-server` executable: + +```batch +C:\AGL\bin\xds-server.exe +``` + + +**Note:** + +Invoke `xds-server --help` to get more details about possible options that allow +for example to change logging level or select another configuration file. + + + +## XDS server REST API and Web application + +`xds-server` exposes a REST API and serves a basic web-application. + +REST API based url is `http://localhost:8000/api/v1/` when XDS server is +running on your host (localhost) and basic web-application is available at +[http://localhost:8000](http://localhost:8000). + +Just replace `localhost` by the host name or ip when `xds-server` is running +on another host. + +```bash +# Get version using REST API +curl http://localhost:8000/api/v1/version + +# Open browser and local xds-server web-application +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/0_abstract.html) for more details. + +## SDK cross-toolchain Management + +### Setup to add support of a new SDK family + + +**Optional step**: read this chapter only if you plan to add a new SDK family. + + +`xds-server` dynamically detects supported SDKs by scanning sub-directories of +`sdkScriptsDir` directory (see [Configuration chapter](2_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 +of a specific family. + +These scripts are: + +- `add`: used to add/install a new SDK +- `db-dump`: returned the list of available and installed SDKs (JSON format) +- `db-update`: update SDKs database +- `get-family-config`: returned SDK family configuration structure (JSON format) +- `get-sdk-info`: extract SDK info (JSON format) from a SDK file/tarball +- `remove`: used to remove an existing SDK + +For example, here 2 SDKs family (`agl` and `zephyr`) are defined: + +```bash +# > tree ./sdks/ +./sdks/ +├── agl +│ ├── add +│ ├── db-dump +│ ├── db-update +│ ├── get-family-config +│ ├── get-sdk-info +│ └── remove +├── README.md +└── zephyr + ├── add +│ ├── db-dump +│ ├── db-update +│ ├── get-family-config +│ ├── get-sdk-info + └── remove +``` + +On startup `xds-server` will call in order: + +- `sdks/*/get-family-config` to get configuration of each SDK family. +- `sdks/*/db-update` to update database (only when `SdkDbUpdate` is set to ̀`startup`, + see [Configuration chapter](2_config.html) for more details) +- `sdks/*/db-dump` scripts to get the initial list of available and installed SDKs. + +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 + +Please refer to [Installing AGL SDKs](../../part-1/3_install-sdks.html) chapter. + +### Un-install a SDK from command line + +Used `sdks` command of `xds-cli` tool to managed SDKs. + +```bash +# List installed SDKs +xds-cli sdks ls +List of installed SDKs: + ID NAME STATUS VERSION ARCH + c39e5998 poky-agl_aarch64_4.0.1 Installed 4.0.1 aarch64 + d610bfbf poky-agl-aarch64.current_on_iotbzh_download-3.99.1+snapshot Installed 3.99.1+snapshot aarch64.current_on_iotbzh_download + a0ae663d poky-agl-corei7-64-3.99.1+snapshot Installed 3.99.1+snapshot corei7-64 + 87f0400b AGL-release-dab-3.99.3-m3ulcb-nogfx Installed 3.99.3 aarch64 + 352c0584 poky-agl-corei7-64-3.99.2+snapshot Installed 3.99.2+snapshot corei7-64 + d65fe750 AGL-release-eel-latest-qemux86-64 Installed 4.99.5 corei7-64 + +# Un-install a SDK +xds-cli sdks uninstall d65fe750 +SDK ID d65fe750-d3a7-38f5-83d8-3d3806054f8d successfully deleted. +``` + +### 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. diff --git a/docs/part-2/2_xds-agent/0_abstract.md b/docs/part-2/2_xds-agent/0_abstract.md index d73bdb9..b867d89 100644 --- a/docs/part-2/2_xds-agent/0_abstract.md +++ b/docs/part-2/2_xds-agent/0_abstract.md @@ -13,7 +13,7 @@ used to remotely cross build applications. Links to subchapters : -- [Configuration](./1_config.html) -- [Start-up](./2_start.html) -- [Build from scratch](./3_build.html) +- [Build from scratch](./1_build.html) +- [Configuration](./2_config.html) +- [Start-up](./3_start.html) - [Debugging](./4_debug.html) diff --git a/docs/part-2/2_xds-agent/1_build.md b/docs/part-2/2_xds-agent/1_build.md new file mode 100644 index 0000000..842f582 --- /dev/null +++ b/docs/part-2/2_xds-agent/1_build.md @@ -0,0 +1,90 @@ +# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-agent` +in order respect directory hierarchy that match Go package import logic (see +[How to Write Go Code](https://golang.org/doc/code.html) for more details). + +Then use delivered Makefile : + +```bash +# Declare ROOTDIR, can be any location (for example xds-build) +ROOTDIR=$HOME/xds-build + +# Create directory hierarchy that match Go package import logic +mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds +cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds + +# Clone sources +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 + +# Build xds-agent +# (note that GOPATH will correctly be set by Makefile) +cd xds-agent +make all +``` + +Generate xds-agent packages / tarballs for Linux, MacOS, Windows + +```bash +make package-all +``` + +And to install `xds-agent` (by default in `/opt/AGL/xds/agent`): + +```bash +make install +``` + + +**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-agent natively. + + + +**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/1_config.md b/docs/part-2/2_xds-agent/1_config.md deleted file mode 100644 index 9e912cb..0000000 --- a/docs/part-2/2_xds-agent/1_config.md +++ /dev/null @@ -1,47 +0,0 @@ -# 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 ) - - **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_config.md b/docs/part-2/2_xds-agent/2_config.md new file mode 100644 index 0000000..9e912cb --- /dev/null +++ b/docs/part-2/2_xds-agent/2_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 ) + - **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 deleted file mode 100644 index c537c93..0000000 --- a/docs/part-2/2_xds-agent/2_start.md +++ /dev/null @@ -1,52 +0,0 @@ -# Start-up - -## Start-up based on systemd user service - -For **Linux** distro, XDS agent can be started as a user service by Systemd. - -```bash -/usr/lib/systemd/user/xds-agent.service -``` - -Use well-known systemd commands to control `xds-agent.service` service. - -```bash -# Status XDS agent: -systemctl --user status xds-agent - -# Start XDS agent -systemctl --user start xds-agent - -# Stop XDS agent -systemctl --user stop xds-agent -``` - -Default settings are defined in `/etc/default/xds-agent` file but these -settings you can overwritten by `$HOME/.xds/agent/agent-config.json` file, -see [Configuration chapter](./1_config.html) for more details. - -## Manual start-up - -On **Linux or MacOS**, simply execute `xds-agent` executable: - -```bash -/opt/AGL/bin/xds-agent -``` - -On **Windows**, simply execute `xds-agent` executable (root path may change -depending where you installed/unzipped xds-agent tarball): - -```batch -C:\AGL\bin\xds-agent.exe -``` - - -**Note:** - -If need be, you can increase log level by setting option -`--log `, supported *level* are: panic, fatal, error, warn, info, debug. - -Invoke `xds-agent --help` to get more details about possible options that allow -for example to change logging level or select a specific configuration file. - - diff --git a/docs/part-2/2_xds-agent/3_build.md b/docs/part-2/2_xds-agent/3_build.md deleted file mode 100644 index 842f582..0000000 --- a/docs/part-2/2_xds-agent/3_build.md +++ /dev/null @@ -1,90 +0,0 @@ -# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-agent` -in order respect directory hierarchy that match Go package import logic (see -[How to Write Go Code](https://golang.org/doc/code.html) for more details). - -Then use delivered Makefile : - -```bash -# Declare ROOTDIR, can be any location (for example xds-build) -ROOTDIR=$HOME/xds-build - -# Create directory hierarchy that match Go package import logic -mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds -cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds - -# Clone sources -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 - -# Build xds-agent -# (note that GOPATH will correctly be set by Makefile) -cd xds-agent -make all -``` - -Generate xds-agent packages / tarballs for Linux, MacOS, Windows - -```bash -make package-all -``` - -And to install `xds-agent` (by default in `/opt/AGL/xds/agent`): - -```bash -make install -``` - - -**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-agent natively. - - - -**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/3_start.md b/docs/part-2/2_xds-agent/3_start.md new file mode 100644 index 0000000..d750fac --- /dev/null +++ b/docs/part-2/2_xds-agent/3_start.md @@ -0,0 +1,52 @@ +# Start-up + +## Start-up based on systemd user service + +For **Linux** distro, XDS agent can be started as a user service by Systemd. + +```bash +/usr/lib/systemd/user/xds-agent.service +``` + +Use well-known systemd commands to control `xds-agent.service` service. + +```bash +# Status XDS agent: +systemctl --user status xds-agent + +# Start XDS agent +systemctl --user start xds-agent + +# Stop XDS agent +systemctl --user stop xds-agent +``` + +Default settings are defined in `/etc/default/xds-agent` file but these +settings you can overwritten by `$HOME/.xds/agent/agent-config.json` file, +see [Configuration chapter](./2_config.html) for more details. + +## Manual start-up + +On **Linux or MacOS**, simply execute `xds-agent` executable: + +```bash +/opt/AGL/bin/xds-agent +``` + +On **Windows**, simply execute `xds-agent` executable (root path may change +depending where you installed/unzipped xds-agent tarball): + +```batch +C:\AGL\bin\xds-agent.exe +``` + + +**Note:** + +If need be, you can increase log level by setting option +`--log `, supported *level* are: panic, fatal, error, warn, info, debug. + +Invoke `xds-agent --help` to get more details about possible options that allow +for example to change logging level or select a specific configuration file. + + diff --git a/docs/part-2/3_xds-cli/0_abstract.md b/docs/part-2/3_xds-cli/0_abstract.md index df7db6c..ef86c49 100644 --- a/docs/part-2/3_xds-cli/0_abstract.md +++ b/docs/part-2/3_xds-cli/0_abstract.md @@ -9,7 +9,7 @@ line. Links to subchapters : -- [Configuration](./1_config.html) -- [Start-up](./2_commands.html) -- [Build from scratch](./3_build.html) +- [Build from scratch](./1_build.html) +- [Configuration](./2_config.html) +- [Start-up](./3_commands.html) - [Debugging](./4_debug.html) diff --git a/docs/part-2/3_xds-cli/1_build.md b/docs/part-2/3_xds-cli/1_build.md new file mode 100644 index 0000000..b42b00c --- /dev/null +++ b/docs/part-2/3_xds-cli/1_build.md @@ -0,0 +1,39 @@ +# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-cli` +in order respect directory hierarchy that match Go package import logic (see +[How to Write Go Code](https://golang.org/doc/code.html) for more details). + +Then use delivered Makefile : + +```bash +# Declare ROOTDIR, can be any location (for example xds-build) +ROOTDIR=$HOME/xds-build + +# Create directory hierarchy that match Go package import logic +mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds +cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds + +# Clone sources +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 + +# Build xds-cli +# (note that GOPATH will correctly be set by Makefile) +cd xds-cli +make all +``` + +Generate xds-cli package / tarball + +```bash +make package-all +``` diff --git a/docs/part-2/3_xds-cli/1_config.md b/docs/part-2/3_xds-cli/1_config.md deleted file mode 100644 index 82506ee..0000000 --- a/docs/part-2/3_xds-cli/1_config.md +++ /dev/null @@ -1,57 +0,0 @@ -# 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:** - -All parameters after a double dash (--) are considered as the command -to execute on xds-server. - - -## 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 deleted file mode 100644 index 599906c..0000000 --- a/docs/part-2/3_xds-cli/2_commands.md +++ /dev/null @@ -1,119 +0,0 @@ -# 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:** - -Please also refer to [Installing AGL SDKs](../../part-1/3_install-sdks.html) chapter for more details about sdks installation. - - - -## 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/2_config.md b/docs/part-2/3_xds-cli/2_config.md new file mode 100644 index 0000000..82506ee --- /dev/null +++ b/docs/part-2/3_xds-cli/2_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:** + +All parameters after a double dash (--) are considered as the command +to execute on xds-server. + + +## 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/3_build.md b/docs/part-2/3_xds-cli/3_build.md deleted file mode 100644 index b42b00c..0000000 --- a/docs/part-2/3_xds-cli/3_build.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-cli` -in order respect directory hierarchy that match Go package import logic (see -[How to Write Go Code](https://golang.org/doc/code.html) for more details). - -Then use delivered Makefile : - -```bash -# Declare ROOTDIR, can be any location (for example xds-build) -ROOTDIR=$HOME/xds-build - -# Create directory hierarchy that match Go package import logic -mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds -cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds - -# Clone sources -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 - -# Build xds-cli -# (note that GOPATH will correctly be set by Makefile) -cd xds-cli -make all -``` - -Generate xds-cli package / tarball - -```bash -make package-all -``` diff --git a/docs/part-2/3_xds-cli/3_commands.md b/docs/part-2/3_xds-cli/3_commands.md new file mode 100644 index 0000000..599906c --- /dev/null +++ b/docs/part-2/3_xds-cli/3_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:** + +Please also refer to [Installing AGL SDKs](../../part-1/3_install-sdks.html) chapter for more details about sdks installation. + + + +## 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/4_xds-gdb/0_abstract.md b/docs/part-2/4_xds-gdb/0_abstract.md index d282efa..e5f0c25 100644 --- a/docs/part-2/4_xds-gdb/0_abstract.md +++ b/docs/part-2/4_xds-gdb/0_abstract.md @@ -19,6 +19,6 @@ variable to use native gdb debug mode instead. Links to subchapters : -- [Configuration](./1_config.html) -- [Build from scratch](./2_build.html) +- [Build from scratch](./1_build.html) +- [Configuration](./2_config.html) - [Debugging](./3_debug.html) diff --git a/docs/part-2/4_xds-gdb/1_build.md b/docs/part-2/4_xds-gdb/1_build.md new file mode 100644 index 0000000..9ec91b3 --- /dev/null +++ b/docs/part-2/4_xds-gdb/1_build.md @@ -0,0 +1,39 @@ +# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-gdb` +in order respect directory hierarchy that match Go package import logic (see +[How to Write Go Code](https://golang.org/doc/code.html) for more details). + +Then use delivered Makefile : + +```bash +# Declare ROOTDIR, can be any location (for example xds-build) +ROOTDIR=$HOME/xds-build + +# Create directory hierarchy that match Go package import logic +mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds +cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds + +# Clone sources +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 + +# Build xds-gdb +# (note that GOPATH will correctly be set by Makefile) +cd xds-gdb +make all +``` + +Generate xds-gdb package / tarball + +```bash +make package-all +``` diff --git a/docs/part-2/4_xds-gdb/1_config.md b/docs/part-2/4_xds-gdb/1_config.md deleted file mode 100644 index 8568f18..0000000 --- a/docs/part-2/4_xds-gdb/1_config.md +++ /dev/null @@ -1,86 +0,0 @@ -# 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 config file: - -```bash -cat $HOME/myProject/xds-gdb.env - -export XDS_AGENT_URL=http://localhost:8800 -export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b -export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03 -``` - -`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 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-2/4_xds-gdb/2_build.md b/docs/part-2/4_xds-gdb/2_build.md deleted file mode 100644 index 9ec91b3..0000000 --- a/docs/part-2/4_xds-gdb/2_build.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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 sources under `$ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds/xds-gdb` -in order respect directory hierarchy that match Go package import logic (see -[How to Write Go Code](https://golang.org/doc/code.html) for more details). - -Then use delivered Makefile : - -```bash -# Declare ROOTDIR, can be any location (for example xds-build) -ROOTDIR=$HOME/xds-build - -# Create directory hierarchy that match Go package import logic -mkdir -p $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds -cd $ROOTDIR/src/gerrit.automotivelinux.org/gerrit/src/xds - -# Clone sources -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 - -# Build xds-gdb -# (note that GOPATH will correctly be set by Makefile) -cd xds-gdb -make all -``` - -Generate xds-gdb package / tarball - -```bash -make package-all -``` diff --git a/docs/part-2/4_xds-gdb/2_config.md b/docs/part-2/4_xds-gdb/2_config.md new file mode 100644 index 0000000..8568f18 --- /dev/null +++ b/docs/part-2/4_xds-gdb/2_config.md @@ -0,0 +1,86 @@ +# 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 config file: + +```bash +cat $HOME/myProject/xds-gdb.env + +export XDS_AGENT_URL=http://localhost:8800 +export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b +export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03 +``` + +`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 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 +``` -- cgit 1.2.3-korg