Read Me
Introduction
This is the README file of Instigate Application Framework Version 2.357 developed by Instigate Design CJSC.
CONTENTS
1. Getting Started
2. Prerequisites
3. Compilation
4. Installation
5. Usage
6. Troubleshooting
7. Maintainers
8. Future Scope
1. Getting Started
The main goal of Application Framework is to provide set of libraries
and tools to improve performance of R&D, QA, Applications, Tech Writers
and Managers teams working on a SW product. This was specifically created
to increase performance and competitiveness of Instigate Design CJSC in its
main business - Software and Hardware Design services and consulting.
Special tools and libraries are available for EDA tools in particular,
however the framework is far more general than a typical EDA-specific
application cockpits and databases. Examples of non-EDA SW that would
benefit from Framework equally well are:
- Integrated Development Environments for programming languages,
which include source level debuggers, profilers, etc.
- Embedded applications for mobile devices, such as
video/audio/photo players/viewers, e-mail/IM clients, etc.
- General purpose applications such as file managers,
Web Browsers, Word Processors, etc.
The main distinguishing factors of Instigate Application Framework from
other similar projects and systems are:
- The Framework was designed based on real need at Instigate Design to
develop very different types of applications for very different
customers. Therefore it is based on real use-cases and
user-stories, and not hypothetical problem statements and
contemplation "in the vacuum" about what such Framework should do.
- The Framework is fundamentally based on the embedded scripting
language, which provides huge benefits such as: automatic
support of basic database operations in both GUI and Command
Line interface; automatic serialization (persistency) of
in-memory data structures onto disk database; automatic
generation of high-quality reference-manual for users of the
application; automatic support of modern GUI features such as
copy/cut/paste, undo/redo, drag'n'drop, and many others.
- The level of abstraction from GUI Look & Feel details
is unprecedented and allows to write same code and use it
with GTK+ and in future other underlying toolkits.
Similarly the level of abstraction from underlying scripting
language allows to write same code and obtain application with
TCL support and in the future also with Python as embedded languages.
Finally, level of abstraction from underlying persistence
mechanisms allows to save/load the data in XML and TCL formats.
- Cut/Copy/Paste, Undo/Redo, Drag'n'Drop are fully implemented.
- Export documentation is available both for the application and
the document being edited by the application (if applicable).
- Weak notion of "error" and support of "permissive" operation
is available
- GUI dialogs are auto-generated, and support complex dynamic
scenarios
- Automatic Replay of actions is supported to create demo scenarios
of the Application using scripts
- Build system support with various types of packaging
Two versions of the package are available in SourceForge:
- pre-built version (TODO the path will be added as soon as the pre-built
package is submitted into SourceForge)
You can skip further steps and go directly to '4. Installation' section
for the details.
- sources (this package)
2. Prerequisites
To install prerequisites please follow these steps:
a) Run ./utl/install_prerequisites.sh script to install all required
native libraries on your environment.
b) Download SDK lite package from SourceForge and extract.
SDK Lite packages are available in SourceForge only for 3 OS-es:
- Ubuntu 22.04 - https://sourceforge.net/projects/instigate-fwk/files/instigate-fwk-gtk-sdk/UbuntuOS/ubuntu_22.04_sdk_lite_24.06.tar.bz2
- CentOS 7 - https://sourceforge.net/projects/instigate-fwk/files/instigate-fwk-gtk-sdk/CentOS/centos_07_sdk_lite_24.06.tar.bz2
- Bagrevand - https://sourceforge.net/projects/instigate-fwk/files/instigate-fwk-gtk-sdk/BagrevandOS/bagrevand_12.0_sdk_lite_24.08.tar.bz2
By default the build system looks for SDK with the following path:
/tmp/instigate-software/gnu_system/
To use the default path just create a soft link to the package in /tmp, e.g:
ln -sf <your_path>/ubuntu_22.04_sdk_lite_24.06/ /tmp/instigate-software
Otherwise update the default SDK path via the following assignment in
the top level makefile:
export sdk_path := <your_path>/ubuntu_22.04_sdk_lite_24.06/gnu_system/3.2/x86_64
c) Download and install Instigate software from SourceForge:
- Instigate Build system - >= 2.0.4
- Instigate ACL - >= 2.0.0
- Instigate GPCL - >= 2.0.0
- Instigate STL - >= 2.0.4
- Instigate XML PARSER - >= 1.5.4
Note: For the installation follow the steps in README files
available under each project.
By default, Instigate software is installed in $HOME directory. In case of
changing the default path, please specify the same install path for all
components of Instigate software.
Update INSTIGATE_OS3_PATH environment variable in the top level makefile
to point to the Instigate software installation path, if default
is changed.
3. Compilation
ATTENTION!!!
If it is required to build the project only for 64 bit machine due to missing
gcc multi-lib support (32 and 64) update the following makefiles:
- src/sockets/makefile
- src/threads/makefile
- src/vcd_core/makefile
by replacing
'#include $(mkf_path)/lib_lib32_64.mk'
line with
'#include $(mkf_path)/lib_lib64.mk' in the makefile
Otherwise the project will be built for both 32 and 64 bit machines.
Compile the package as follows:
a) Configure build parameters by issuing 'make setup' command specifying:
- release or debug build (default is debug):
make setup build_type=<release|debug>
- static or dynamic linking (default is dynamic):
make setup link_type=<static|dynamic>
- enable using sdk:
make setup use_sdk=yes
Note 1: all options should be specified during a single 'make setup'
command.
Note 2: Based on link_type either static libraries (.a) or shared
libraries (.so) will be built.
b) Build the library using 'make' command.
Multi-threaded build is supported, e.g. "make -j4" will run 4 parallel
threads if you are running it on a quad-cpu computer.
Additional features:
a) Run basic tests via 'make test' command.
Test results will be available in 'test_results.txt' file and
'tst_results' directory.
b) Generate documentation via the following commands:
- make user_docs
- make developer_docs
The generated documentation will be available in the 'doc' directory.
c) Cleanup results of previous build via 'make clean' command.
4. Installation
a) Install pre-built version
To use already pre-built version of Instigate Application
Framework please download the corresponding OS version package
from SourceForge:
https://sourceforge.net/projects/instigate-fwk/files/instigate-fwk-gtk-prebuilt-pkg/
Currently 3 OS-es are supported:
- Ubuntu 22.04
- CentOS7
- Bagrevand 12.0
The downloaded pre-built package contains corresponding script to
install pre-built Framework and the corresponding SDK at the path
specified as an argument to the script.
See details in the README of the pre-built package.
b) Install current version
Use 'make install' command which will install the package under the
directory specified by the variable 'install_path'. The variable is
defined in the top level makefile and defaults to
$INSTIGATE_OS3_PATH/framework/<version>/<arch>_<build_type>
The value of 'install_path' variable should be used in the applications
which are using Instigate Application Framework (see '5. Usage' section for details).
5. Usage
In order to build application against the Framework you will need to point
to it from the makefile of your application using the variable
INSTIGATE_ENV_FRAMEWORK_ROOT.
Sample Application (media_payer) is provided as an example of framework usage whithin this
package. You can move it outside the package and use it as a standalone
application. Please follow user-guide.odt file for the details.
6. Troubleshooting
The framework has been developed to base on 80% principle, to cover
80% of the most common use-cases in GUI/UI design.
The next version is going to consider all the currently covered use-cases
as basis, and will provide more coherent and elegant solution to all.
The underlying GTK+ framework version is quite stable, but in addition
we are using the C++ wrapper (GtkMM) libraries, which are relatively less
stable.
7. Maintainer
Instigate Design CJSC
e-mail: info@instigatedesign.com
Phone: +374-60 510-710
8. Future Scope
a) Remove src/xml_parser subproject from the package, instead use Instigate XML
Parser - 1.5.3 library.
b) Support level of abstraction from underlying scripting language with Python.
c) Support level of abstraction from underlying persistence mechanism with SQL.