tools: add uush

add a micro micro interactive shell which allows to just
run commands either in the foreground or in the background
using "&" appended to the command.
Useful for testing purposes, especially running directly
in loader.img before full usr.img build is available.
No cmdline arguments.

"uush" is a module, so you can add it to the image by using
make image=uush

Examples of use:

with just loader.img (AArch64):

./scripts/imgedit.py setargs build/release/loader.img --nomount /tools/uush.so
qemu-system-aarch64 -nographic -M virt -enable-kvm -kernel loader.img -cpu host -m 1024M

with full usr.img and scripts (x64):
./scripts/run.py -c 1 -V -e tools/uush.so

Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Claudio Fontana <claudio.fontana@huawei.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
modules: introduce a concept of repository

Repository holds modules in directories. No extra config file needed,
layout is implied.

Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Add test for sethostname() and friends

This test can run on both Linux (needs root permissions) and OSv.

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
modules: make api.require() impose compilation ordering

This change makes api.require() express not only run-time dependency
but also imply a compilation order. osvinit depends on httpserver
artifacts during its build, require() could be reused in a simple way
to express this dependency.

Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
sampler: make start_sampler() always succeed

It's simpler that way. That's what the API user would typically want
to do. If the sampler is already running it is restarted.

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
modules: include apps.git as module repository

This way there is no longer need for apps.git/modules.json. That file
currently holds zero information. It has no other purpose than being
source of merge conflicts.

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
modules: configure osv.git/modules as module repository

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>