Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
In this tutorial we will write and run example ACS modules in Python, Java and C++ inside a Docker container based in a CentOS 7 image, in an Ubuntu 20.04 machine.
sudo apt update # Git LFS sudo apt install git-lfs # SELinux sudo apt install policycoreutils selinux-utils selinux-basics sudo selinux-activate sudo selinux-config-enforcing # Docker sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" sudo apt install docker-ce # Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
https://bitbucket.alma.cl/scm/asw/acs.git
git clone https://bitbucket.alma.cl/scm/asw/acs.git
Edit docker .env file (you can use your favourite editor)
cd acs/Virtualization/Docker/Dev/ # check current user info id <my_user> # edit configuration file sudo nano .env
USER_NAME=<my_user> GROUP_NAME=<my_group> USER_ID=1000 GROUP_ID=1000 ALMA_DIR=/external/docker/alma HOME_DIR=/external/docker/home REPO_DIR=/absolute/path/to/cloned/repo IMAGE_OS=centos7 CONTAINER_DIR=centos7
To run a Docker container with ACS:
sudo docker-compose run --name acs_centos7_env centos7 bash
To open a shell inside the container
sudo docker exec -it acs_centos7_env bash
Check Installing ACS for full details. TL;DR:
# set ownership for directories sudo chown $USER /external/docker/ /external/docker/alma/ /external/docker/home/ # install external products cd /Repos source LGPL/acsBUILD/config/.acs/.bash_profile.acs cd ExtProd/INSTALL sudo make all # install ACS cd ../.. make build
Visit ACS Directory Structure#INTROOT for full details.
export INTROOT=~/workspace/introot getTemplateForDirectory INTROOT $INTROOT
First we create the directory for the IDL:
getTemplateForDirectory MODROOT_WS idlHelloComp cd idlHelloComp/src touch ../idl/HelloComponent.idl sudo nano ../idl/HelloComponent.idl
We fill the IDL with the following:
#ifndef _HELLOCOMPONENT_IDL_ #define _HELLOCOMPONENT_IDL_ #pragma prefix "acsws" #include <acscomponent.idl> module workshop { interface HelloComponent : ACS::ACSComponent { string printHello(); }; }; #endif
We modify the Makefile:
... IDL_FILES = HelloComponent HelloComponentStubs_LIBS = acscomponentStubs ... COMPONENT_HELPERS=on ...
We then compile and install the IDL definitions:
make -j all install