tools/stx/toCOPY/lat-tool
Yue Tao 5dd9b75dc3 Upgrade LAT to latest version
Integrate 2 important fixes:

a) genimage: process SIGTERM signal gracefully (f215b627e3a5)

It introduces a new variable "debootstrap-mirror" to set the source of
debootstrap instead of picking a source from package_feeds randomly.

b) genimage: add yaml params debootstrap-mirror for external debian
(ec3758936b3f)

It fixes a bug of build-image after terminating previous build-image,
and change to handle the signal.SIGTERM.

The error message is:
====================
build-image - DEBUG: Update /localdisk/deploy/lat.yaml to add packages
latc - INFO: build request handled by server
rm: cannot remove './rootfs/proc/523189/gid_map': Operation not permitted
rm: cannot remove './rootfs/proc/523189/projid_map': Operation not permitted
rm: cannot remove './rootfs/proc/523189/setgroups': Operation not permitted
rm: cannot remove './rootfs/proc/523189/timers': Operation not permitted
rm: cannot remove './rootfs/proc/523189/timerslack_ns': Operation not permitted
rm: cannot remove './rootfs/proc/523189/patch_state': Operation not permitted
rm: cannot remove './rootfs/proc/523189/arch_status': Operation not permitted
appsdk - ERROR: Generate sub initramfs failed
====================

Test Plan:

a) Testcase 1
Pass: successfully build-image, and the debootstrap is fed by the "debootstrap-mirror".
Pass: successfully install test
Pass: successfully boot test

b) Testcase 2
Pass: sucessfully build-image after terminating previous build-image.
$build-image
$ctrl+c
$latc stop
$build-image

Story: 2008846
Task: 44194

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Yue Tao <yue.tao@windriver.com>
Change-Id: I7f1b9a743d6fc0018d2e7347fbd38eddc5913b12
2021-12-20 09:31:02 +08:00
..
lat Upgrade LAT to latest version 2021-12-20 09:31:02 +08:00
README stx tool: Create initial Dockerfile of LAT(Linux Assembly Tool) container 2021-09-25 21:37:10 -04:00

README

# Copyright (c) 2021 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

latd
---

This is a daemon expected to run inside the LAT container as the entry point.
It accepts requests from clients and issue correspoing commands to generate the image.

Functionalities:
* Accept request to give client an example yaml file to start with
  latc getyaml
* Accept build request to build image, with a yaml file supplied.
  latc build --file stx.yaml
* Accept request to stop the previous build
  latc stop
* Accept request to clean things up, including all build results
  latc clean
* Accept status query request, return meaningful contents
  latc status
  e.g.
  lat_status: idle/busy
  latest_build_status: running/succeed/fail/not-started
* Accept logs requrest, return log information about the latest build
  latc logs

latc(builder container client)
---

A dummy implementation to only show how to make use of volume.py to communicate with latd.
e.g.
latc status/stop/clean/logs/build

volume communication implementation
---

* channel/c-2-s.msg

  Client to server message. Convey info about what to do.

  action: build/status/stop/logs/clean/getyaml
  yaml_file: /mnt/workspace/stx.yaml

* channel/c-2-s.done

  A file to watch, when it appears, latd read c-2-s.msg and act accordingly.

* channel/s-2-c.msg

  Server to client message. Same format as c-2-s.msg

* channel/s-2-c.done

  A file to watch, when it appears, latc reads s-2-c.msg and act accordingly.

* channel/invalid_message

  A file which, if exists, indicates the an invalid client request.

* channel/status.lat

  File containing LAT container status.

* log/log.appsdk

  Hold information about the appsdk debug output.

* client_message_history

  Hold message history from client.

* hack/lat-genimage-cmd

  A hack file, which replace the 'appsdk genimage ...' command with the contents inside it.
  e.g.
  echo "sleep 10" > hack/lat-genimage-cmd

  This is ONLY for debugging purpose. This mechanism should be removed in formal release.

* latd workflow

  Watch c-2-s.done, when it appears, read c-2-s.msg, delete c-2-s.done file.
  Fork a subprocess to do the actual work if needed, record its PID; otherwise, perform some action. Send result to client.
  Note that the result only means whether the client request is handled by latd or not.


Assumption
---

* At any time, at most one build is run inside LAT container.