csrg-utfsm.github.io

CSRG ACS's Repository web site

View My GitHub Profile

Alma Common Software Community Branch RPM Repos for CentOS 7 (EL 7)

For now, only x86_64 is available, but, hopefully once the SRPMS are made available ports can be created for aarch64, without cross compiling nightmares =D. Versions 2016.10+ have a beta-working ExtProd RPM and repo with an ACS RPM in alfa. Version is number-guided to keep clear the update order for the rpm package.

Current Status: 28/9/2017

Dependencies by language

Highlighted the ones with the least dependencies

Building Rules

The instalation destination of the compiled products of the main rpm package of each acs component is /usr/local, where:

Some packages generates elements in /object folder, such as Skeleton, Stubs and/or static libraries (.a files). Those elements are packaged in the devel rpm and are also installed in /usr/local, where:

Other products, such as man pages and documentation should also be in their respective /usr/local path.

The Source0 element for each acs component rpm package consists in the complete git repository of ACSCB, which is, the result of the merges explained below. The main contents of Source0, the LGPL folder is available with the acs-cb-ToolKit-devel rpm package.

The main idea applied in each package is to:

Once an rpm package is succesfully manually built, it undergoes a “strict” build under Jenkins CI, where env vars and other elements are deleted, creating a clean building environment. Lastly, each package can be tested in centos docker containers.

Currently, the main focus is to succesfully compile and package the acs components, with tat tests compiling but being allowed to temporary fail. Once the first iteration is concluded, tat tests will be fixed where necesary, considering that some tat test dependencies are different than those of the main acs component package.

Use Instructions

After the instalation of ACS-ExtProds, and before de ACS instalation, a session logout-login is needed in order to load the environment variables (now in profile.d files)

Places to look for packages:

In order to save time, the lookup of existing RPMs in other flavors of RPM using S.O. is highly recommended.

Also http://www.rpmfind.net and OpenSuse pages are useful.

How was this ACS built

We have a forked ACS Community Branch git which is regularly been merged against ALMA ACS’s git repository. This is what Source0 of each acs component package contains.

The main idea behind the RPMs is the use of system-available packages, which will in return allow an easier instalation/management of ACS

ExtProd is in a Beta state and ACS Core in an alfa state for 2016.10. 2017.02 hasn’t been released. The SPEC files can be found at this github

Initially ExtProd was built as a regular RPM with the check-rpaths commented out in .rpmmacros file. It happened because Eclipse has https://fedoraproject.org/wiki/RPath_Packaging_Draft. This appears no longer needed. Also AutoReq is set to “no”

The only packages not being from a RPM origin inside ExtProd are JacORB and Mico. Tcltk has a first version of its own package. Mico is expected to fail on RHEL 6, so this behaviour is expected also on EL/RHEL 7+, although it appears to build correctly, and includes the latest gcc6 patch.

As many ACS building/compiling needed-scripts are been left as Sources of the ExtProd RPM, also to allow modularity in their updates. This scripts are left in system default path’s such as /usr/local/bin, in order to prevent the need for path extension and modifications on the user side.

Another important point is the intend to deprecate the use of .bash_profile.acs file, leaving enviroment variables in /etc/profile.d files. For example, ExtProd RPM creates jacorb.sh, which contains and exports:

JACORB_HOME=/home/almamgr/ACS-%{version}/JacORB export JACORB_HOME

Source0 in Extprod RPM consist in the following:

ACS-ExtProd-{ACS_Version}

  • INSTALL
    • buildEclipse
  • PRODUCTS
    • eclipse-SDK-4.2.2-linux-gtk-x86_64.tar.gz
    • eclipse-4.2.2-delta-pack.zip

The traditional files from the old instalation of ACS are kept as legacy but not used. All of this can be installed via the acs-cb-ToolKit-devel rpm, which is available from 2016.10+. ExtProds RPM creates user almamgr with uid 550 and the /alma symlink, which point to /home/almamgr.

Of the Tools Module built by ACS the yet not RPM encapsulated are (getopt ignored as is indicated for SunOS only):

tat xsddoc extidl vtd-xml oAW scxml_apache

Package selection in ExtProd

All of the python packages in acs.req and acs.req.0 have been included as requirements of the rpm or installed through pip. Every package is kept as closed as possible to the one indicated in acs.req/acs.req.0 files, with the consideration that if a newer version is available, and the changelog indicates no mayor changes, then the newer version will be prefered. Also, if the version in the acs.req files is deprecated, the oldest system available version is prefered. Python 2.7 is not being compiled as it comes with CentOS 7.

As CentOS 7 is compatible with mainly every package between fedora21 and fedora24, and further for packages not involving gcc, the srpms are fetch and recompiled, allowing an interesting number of versions per package to be selected. Also RPMs from OpenSUSE and other rpm based SO is considered. The spirit of the RPM is initally to replace with system available packages as much as possible and the fix whatever may have been broken.

ACE-TAO Extra Patch

The following replacement/patch has been aplied to ACE-TAO 6.3.0_{ACS_Version}

sed -i ‘s/IOP::TaggedComponentList create_ior_components/IOP::TaggedComponentSeq create_ior_components/g’ /usr/include/orbsvcs/SecurityReplaceable.idl

For information about this change, please see 2008a Changelog of TAO: Removed TaggedComponentList and use TaggedComponentSeq, thefirst one is not part of the CORBA spec, the second is.

Docker Containers

In order to create re-usable building and testing environments, there are a couple of available docker containers

To-Do List

Deprecated Packages used in ACS