diff options
Diffstat (limited to 'docs/part-2')
-rw-r--r-- | docs/part-2/1_xds-server.md | 166 |
1 files changed, 151 insertions, 15 deletions
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", |