aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-04 14:47:43 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-04 14:47:43 +0100
commit75b88569a0ff0c1bd0a62a00bf3916393296561e (patch)
tree9b89ee862a7f06ab0c3ac6f146e2d002aaee2b02
parent5b0e7b915f077ddcda641998a63c67b0183584c7 (diff)
Updates regarding SDKs management
-rw-r--r--docs/part-1/2_install-xds-server.md8
-rw-r--r--docs/part-1/pictures/xds-dashboard-sdks-install.pngbin0 -> 207433 bytes
-rw-r--r--docs/part-1/pictures/xds-dashboard-sdks-mgt.pngbin0 -> 159232 bytes
-rw-r--r--docs/part-2/1_xds-server.md166
4 files changed, 155 insertions, 19 deletions
diff --git a/docs/part-1/2_install-xds-server.md b/docs/part-1/2_install-xds-server.md
index 2a47fa8..5460da8 100644
--- a/docs/part-1/2_install-xds-server.md
+++ b/docs/part-1/2_install-xds-server.md
@@ -69,7 +69,7 @@ seb@laptop ~$ bash ./xds-docker-create-container.sh --volume /my-workspace:$HOME
`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
+To check if xds-server is correctly install and running, you can access the basic
web page that gives you some instructions:
```bash
@@ -143,7 +143,7 @@ seb@laptop ~$ sudo zypper install agl-xds-server
### Configure xds-server
<!-- note -->
-**Optional step**: skip this chapter if you want to use keep default settings
+**Optional step**: skip this chapter if you plan to use default settings
<!-- endnote -->
When `xds-server` is started as a systemd service, default environment variables
@@ -163,7 +163,7 @@ Supported fields in JSON configuration file are :
- **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)
-- **sdkRootDir** : root directory where cross SDKs are installed
+- **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>)
@@ -177,7 +177,7 @@ All fields are optional and example below corresponds to the default values:
"webAppDir": "webapp/dist",
"shareRootDir": "${HOME}/.xds/server/projects",
"logsDir": "/tmp/logs",
- "sdkRootDir": "/xdt/sdk",
+ "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
"syncthing": {
"binDir": "./bin",
"home": "${HOME}/.xds/server/syncthing-config",
diff --git a/docs/part-1/pictures/xds-dashboard-sdks-install.png b/docs/part-1/pictures/xds-dashboard-sdks-install.png
new file mode 100644
index 0000000..20bc03e
--- /dev/null
+++ b/docs/part-1/pictures/xds-dashboard-sdks-install.png
Binary files differ
diff --git a/docs/part-1/pictures/xds-dashboard-sdks-mgt.png b/docs/part-1/pictures/xds-dashboard-sdks-mgt.png
new file mode 100644
index 0000000..2a29151
--- /dev/null
+++ b/docs/part-1/pictures/xds-dashboard-sdks-mgt.png
Binary files differ
diff --git a/docs/part-2/1_xds-server.md b/docs/part-2/1_xds-server.md
index 8303a2c..c3eb324 100644
--- a/docs/part-2/1_xds-server.md
+++ b/docs/part-2/1_xds-server.md
@@ -174,28 +174,164 @@ devel@docker ~$ systemctl --user restart xds-server.service
devel@docker ~$ tail -f /tmp/xds-server/logs/xds-server.log
```
-### Install SDK cross-toolchain
+### SDK cross-toolchain Management
-`xds-server` uses SDK cross-toolchain installed into directory pointed by
-`sdkRootDir` setting (see configuration section below for more details).
-For now, you need to install manually SDK cross toolchain. There are not embedded
-into docker image by default because the size of these tarballs is too big.
+#### Setup to add support of a new SDK family
-Use provided `install-agl-sdks` script, for example to install SDK for ARM64 and
-Intel corei7-64:
+<!-- 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)).
+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
-seb@laptop ~$ ssh -p 2222 devel@localhost
+# > 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 first `sdks/*/get-family-config` to get configuration
+of each SDK family and also call `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 from command line
+
+Used `sdks` command of `xds-cli` tool to managed SDKs.
+
+```bash
+# List all available SDKs
+xds-cli sdks ls -a
+
+List of available SDKs:
+ ID NAME STATUS VERSION ARCH
+ ec15afe0 AGL-release-eel-4.99.4-raspberrypi3 Not Installed 4.99.4 armv7vehf-neon-vfpv4
+ 944d2d5a AGL-snapshots-master-latest-intel-corei7-64 Not Installed 4.99.3+snapshot corei7-64
+ cf3a4365 AGL-release-dab-4.0.2-qemux86-64 Not Installed 4.0.2 corei7-64
+ d65fe750 AGL-release-eel-latest-qemux86-64 Not Installed 4.99.3 corei7-64
+ 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
+ 8c2f2841 AGL-release-dab-4.0.2-dragonboard-410c Not Installed 4.0.2 aarch64
+...
+
+# Install a SDK (downloaded + install)
+xds-cli sdks install d65fe750
+Installation of 'AGL-release-eel-latest-qemux86-64' SDK (id d65fe750-d3a7-38f5-83d8-3d3806054f8d) successfully started.
+Downloading poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.99.5.sh ...
+--2018-01-02 11:22:23-- https://download.automotivelinux.org/AGL/release/eel/latest/qemux86-64/deploy/sdk/poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.99.5.sh
+Resolving download.automotivelinux.org (download.automotivelinux.org)... 199.19.213.77
+Connecting to download.automotivelinux.org (download.automotivelinux.org)|199.19.213.77|:443... connected.
+HTTP request sent, awaiting response... 200 OK
+Length: 665996704 (635M) [application/x-sh]
+Saving to: ‘/tmp/tmp.wuQzLdImCS/poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.99.5.sh’
+
+ 0K .......... .......... .......... .......... .......... 0% 82,7K 2h11m
+ 50K .......... .......... .......... .......... .......... 0% 89,1K 2h6m
+ 100K .......... .......... .......... .......... .......... 0% 82,0K 2h8m
+ 150K .......... .......... .......... .......... .......... 0% 66,7K 2h16m
+...
+ 50300K .......... .......... .......... .......... .......... 99% 2,15M 0s
+ 650350K .......... .......... .......... ....... 100% 4,04M=10m35s
+
+2018-01-02 12:17:06 (1024 KB/s) - ‘/tmp/tmp.CWyEj3z76Q/poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.99.5.sh’ saved [665996704/665996704]
+
+Automotive Grade Linux SDK installer version 4.99.5
+===================================================
+You are about to install the SDK to "/xdt/sdk/poky-agl/4.99.5/corei7-64". Proceed[Y/n]? Y
+Extracting SDK....................................................................................................................done
+Setting it up...done
+SDK has been successfully set up and is ready to be used.
+Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
+ $ . /xdt/sdk/poky-agl/4.99.5/corei7-64/environment-setup-corei7-64-agl-linux
+
+
+# Abort an installation that is in progress
+xds-cli sdks abort -id d65fe750
+
+# Install a SDK (using a local SDK package/file)
+xds-cli sdks install --file $HOME/xds-workspace/sdks/poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.99.5.sh
-# Install ARM64 SDK (automatic download)
-devel@docker ~$ sudo /opt/AGL/xds/server/xds-utils/install-agl-sdks.sh --arch aarch64
+```
+
+<!-- note -->
+Installation based on a local SDK package is only supported when SDK file package
+is located in `$HOME/xds-workspace/sdks` directory
+<!-- endnote -->
+
+#### Install a new SDK from XDS Dashboard
+
+Open XDS-Dashboard in web-browser and select `SDKs` entry in left side menu.
+Then switch to `SDKs MANAGEMENT` view :
+
+![](../part-1/pictures/xds-dashboard-sdks-mgt.png){:: style="margin:auto; display:flex"}
-# Install Intel corei7-64 SDK (using an SDK tarball that has been built or downloaded manually)
-devel@docker ~$ sudo /opt/AGL/xds/server/xds-utils/install-agl-sdks.sh --arch corei7-64 --file /tmp/poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-
-3.99.1+snapshot.sh
+Use filter boxes to find the SDK you want to install and then click on plus
+icon (Actions column) to start installation. SDK download and installation
+process may take several minutes and output of installation script (output of
+`add` script mentioned in above chapter).
+![](../part-1/pictures/xds-dashboard-sdks-install.png){:: style="margin:auto; display:flex"}
+
+Note that you can abort installation by clicking on `CANCEL` button.
+
+#### 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
+ 74f78335 poky-agl-aarch64.libmicrohttp_0.9.55-3.99.1+snapshot Installed 3.99.1+snapshot aarch64.libmicrohttp_0.9.55
+
+# 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 :
+
### XDS server REST API and Web application
`xds-server` exposes a REST API and serves a basic web-application.
@@ -321,7 +457,7 @@ below corresponds to the default values):
- **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)
-- **sdkRootDir** : root directory where cross SDKs are installed
+- **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>)
@@ -333,7 +469,7 @@ below corresponds to the default values):
"webAppDir": "webapp/dist",
"shareRootDir": "${HOME}/.xds/server/projects",
"logsDir": "/tmp/logs",
- "sdkRootDir": "/xdt/sdk",
+ "sdkScriptsDir": "${EXEPATH}/scripts/sdks",
"syncthing": {
"binDir": "./bin",
"home": "${HOME}/.xds/server/syncthing-config",