You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

The ACS directory structure is very straightforward, but it may not be very intuitive to newcomers. There are a couple of concepts that we need to consider:

  • MODROOT_WS and MODROOT_LCU, MODROOT_WS_LCU
  • ACSROOT
  • ACSDATA
  • INTROOT and INTLIST

MODROOT

All three variants of MODROOT represent a very similar scenario. They create a module directory, either for WorkStation (MODROOT_WS), for Local Control Unit (LCU) (MODROOT_LCU) or for both (MODROOT_WS_LCU). Executing each bears a similar structure:

MODROOT_WS

getTemplateForDirectory MODROOT_WS wsModule
acs almamgr:~ 30449 > tree wsModule/
wsModule/
├── bin
├── ChangeLog
├── config
│   └── CDB
│       └── schemas
├── doc
├── idl
├── include
├── lib
│   ├── ACScomponents
│   ├── endorsed
│   └── python
│       └── site-packages
├── LOGS
├── man
│   ├── man1
│   ├── man2
│   ├── man3
│   ├── man4
│   ├── man5
│   ├── man6
│   ├── man7
│   ├── man8
│   ├── manl
│   └── mann
├── object
├── rtai
├── src
│   └── Makefile
└── test

MODROOT_LCU

getTemplateForDirectory MODROOT_WS lcuModule
acs almamgr:~ 30451 > tree lcuModule
lcuModule
├── bin
├── ChangeLog
├── doc
├── idl
├── include
├── lib
│   ├── ACScomponents
│   ├── endorsed
│   └── python
│       └── site-packages
├── LOGS
├── man
│   ├── man1
│   ├── man2
│   ├── man3
│   ├── man4
│   ├── man5
│   ├── man6
│   ├── man7
│   ├── man8
│   ├── manl
│   └── mann
├── object
├── src
│   └── Makefile
└── test

MODROOT_WS_LCU

getTemplateForDirectory MODROOT_WS_LCU module
acs almamgr:~ 30459 > tree module
module/
├── ChangeLog
├── lcu
│   ├── bin
│   ├── doc
│   ├── idl
│   ├── include
│   ├── lib
│   │   ├── ACScomponents
│   │   ├── endorsed
│   │   └── python
│   │       └── site-packages
│   ├── LOGS
│   ├── man
│   │   ├── man1
│   │   ├── man2
│   │   ├── man3
│   │   ├── man4
│   │   ├── man5
│   │   ├── man6
│   │   ├── man7
│   │   ├── man8
│   │   ├── manl
│   │   └── mann
│   ├── object
│   ├── src
│   │   └── Makefile
│   └── test
└── ws
    ├── bin
    ├── config
    │   └── CDB
    │       └── schemas
    ├── doc
    ├── idl
    ├── include
    ├── lib
    │   ├── ACScomponents
    │   ├── endorsed
    │   └── python
    │       └── site-packages
    ├── LOGS
    ├── man
    │   ├── man1
    │   ├── man2
    │   ├── man3
    │   ├── man4
    │   ├── man5
    │   ├── man6
    │   ├── man7
    │   ├── man8
    │   ├── manl
    │   └── mann
    ├── object
    ├── src
    │   └── Makefile
    └── test

Files and Directory Description

As we can see, there are several files and directories created under each of the scenarios:

  • bin: Here we place the scripts and binaries that get executed. This could be added to PATH environment variable
  • Changelog: A file that could be used to register changes of the module. We make use of JIRA and "git log" for this, but this could be used as an additional place for this information.
  • config: Directory for configurations.
    • config/CDB: Directory for module's CDB configurations. Could be used with ACS_CDB environment variable to configure a CDB for testing the module
      • config/CDB/schemas: The XML Schema (XSD) files are placed in this directory
  • doc: Directory to place documentation
  • idl: Directory for IDL (.idl, .midl) files, XML error definitions, XML Schema binding file, etc.
  • include: Directory for C++ headers, inline and template files
  • lib: Directory for C++ libraries and Java JAR files. Could be used in LD_LIBRARY_PATH (C++ libraries) and in CLASSPATH (Jar files) to make use of the module's libraries and jar files
    • lib/ACSComponents: Directory for Java JAR files associated with components
    • lib/endorsed: Directory for endorsed JAR files (No longer relevant since Java 11 disabled the use  of endorsed JARs)
    • lib/python: Directory for Python code
      • lib/python/site-packages: Python site-packages are placed here. Could be used with PYTHONPATH environment variable to make use of the Python code and cached code (.pyc)
  • LOGS: Directory where logs can be placed
  • man: Man documentation in Unix/Linux style could be placed here. See more at https://linux.die.net/man/ page.
    • man/man<n>: Look at the link above
    • man/manl: Look at the link above
    • man/mann: Look at the link above
  • object: Directory for temporary files such as C++ compiled objects, code-generated source files, etc.
  • rtai: Directory for Real Time Application Interface (RTAI) and other compiled kernel modules to be installed
  • src: Directory for source files
    • src/Makefile: The main file to define the targets to be compiled, installed and deployed by the moduled
  • test: Directory that contains all the necessary files for testing. Source code, Makefile, TAT configuration files, reference files, etc.

ACSROOT


ACSDATA

getTemplateForDirectory ACSDATA acs.data
acs almamgr:~ 30451 > tree acs.data
acs.data
├── config
├── dumps
├── ENVIRONMENTS
├── logs
└── tmp

5 directories, 0 files

Files and Directory Description

  • config: Configuration files, including CDB, schemas and other files
  • dumps: Core dumps, heap dumps, etc. can be plaed in this directory
  • ENVIRONMENTS: 
  • logs: Runtime logs can be placed in this directory
  • tmp: Runtime temporary data is placed here

INTROOT/INTLIST

  • No labels