Commit 38f87671 authored by Thomas Braun's avatar Thomas Braun
Browse files

Merge branch 'add-ci' into 'main'

Update

See merge request !9
parents ec82761a add08ecb
Loading
Loading
Loading
Loading
Loading

.gitlab-ci.yml

0 → 100644
+97 −0
Original line number Diff line number Diff line
variables:
    DEBIAN_FRONTEND: noninteractive
    CMAKE_BUILD_TYPE: Debug

# Not possible with parallel, see https://gitlab.com/gitlab-org/gitlab/-/issues/254821
.build-cppTango-template: &build-cppTango-template
  image: debian:bullseye
  before_script:
    - apt-get update
    - >
      apt-get install -y
      build-essential
      cmake
      git
      libcos4-dev
      libomniorb4-dev
      libomnithread4-dev
      libzmq3-dev
      omniidl
      pkg-config
    # Install tango-idl
    - git clone --depth 1 https://gitlab.com/tango-controls/tango-idl.git /idl
    - cmake -B /idl/build -DCMAKE_INSTALL_PREFIX=/usr/local/tango-idl /idl
    - make -C /idl/build install
    # Install cppzmq
    - git clone -b v4.7.1 --depth 1 https://github.com/zeromq/cppzmq.git /cppzmq
    - cmake -B /cppzmq/build -DCPPZMQ_BUILD_TESTS=OFF /cppzmq
    - make -C /cppzmq/build install
    # Clone cppTango
    - git clone -b ${BRANCH} --depth 1 https://gitlab.com/tango-controls/cppTango.git /cppTango
    - >
      cmake -B /cppTango/build
      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
      -DBUILD_TESTING=OFF
      -DTANGO_IDL_BASE=/usr/local/tango-idl
      -DIDL_BASE=/usr/local/tango-idl
      -DTANGO_USE_JPEG=OFF
      -DTANGO_USE_USING_NAMESPACE=OFF
      /cppTango
  script:
    - make -C /cppTango/build install
    - tar cf usr-local.tar /usr/local
  artifacts:
    when: on_success
    paths:
      - usr-local.tar

build-cppTango-main:
  variables:
    BRANCH: main
  <<: *build-cppTango-template

build-cppTango-9.3-backports:
  variables:
    BRANCH: 9.3-backports
  <<: *build-cppTango-template

.build-template: &build-template
  image: debian:bullseye
  before_script:
    - apt-get update
    - >
      apt-get install -y
      build-essential
      cmake
      git
      libcos4-dev
      libmariadb-dev-compat
      libomniorb4-dev
      libomnithread4-dev
      libzmq3-dev
      omniidl
      pkg-config
    - mkdir build

build-main:
  <<: *build-template
  needs: ["build-cppTango-main"]
  script:
    - tar xf usr-local.tar -C /
    - cmake -B build TangoAccessControl
    - make -C build install

build-9.3-backports:
  <<: *build-template
  needs: ["build-cppTango-9.3-backports"]
  script:
    - tar xf usr-local.tar -C /
    - cmake -B build TangoAccessControl
    - make -C build install

build-stock:
  <<: *build-template
  script:
    - apt-get install -y libtango-dev
    - cmake -B build TangoAccessControl
    - make -C build install
+23 −9
Original line number Diff line number Diff line
/*----- PROTECTED REGION ID(AccessControl.cpp) ENABLED START -----*/
static const char *RcsId = "$Id$";
//=============================================================================
//
// file :        AccessControl.cpp
@@ -57,8 +56,8 @@ static const char *RcsId = "$Id$";
//=============================================================================


#include <AccessControl.h>
#include <AccessControlClass.h>
#include "AccessControl.h"
#include "AccessControlClass.h"

/*----- PROTECTED REGION END -----*/	//	AccessControl.cpp

@@ -115,7 +114,7 @@ namespace AccessControl_ns
 *                implementing the classAccessControl
 */
//--------------------------------------------------------
AccessControl::AccessControl(Tango::DeviceClass *cl, string &s)
AccessControl::AccessControl(Tango::DeviceClass *cl, std::string &s)
 : TANGO_BASE_CLASS(cl, s.c_str())
{
	/*----- PROTECTED REGION ID(AccessControl::constructor_1) ENABLED START -----*/
@@ -153,7 +152,7 @@ AccessControl::AccessControl(Tango::DeviceClass *cl, const char *s, const char *
//--------------------------------------------------------
void AccessControl::delete_device()
{
	DEBUG_STREAM << "AccessControl::delete_device() " << device_name << endl;
	DEBUG_STREAM << "AccessControl::delete_device() " << device_name << std::endl;
	/*----- PROTECTED REGION ID(AccessControl::delete_device) ENABLED START -----*/

	//	Delete device allocated objects
@@ -169,7 +168,7 @@ void AccessControl::delete_device()
//--------------------------------------------------------
void AccessControl::init_device()
{
	DEBUG_STREAM << "AccessControl::init_device() create device " << device_name << endl;
	DEBUG_STREAM << "AccessControl::init_device() create device " << device_name << std::endl;
	/*----- PROTECTED REGION ID(AccessControl::init_device_before) ENABLED START -----*/
	
	//	Initialization before get_device_property() call
@@ -194,7 +193,7 @@ void AccessControl::init_device()
//--------------------------------------------------------
void AccessControl::always_executed_hook()
{
	DEBUG_STREAM << "AccessControl::always_executed_hook()  " << device_name << endl;
	DEBUG_STREAM << "AccessControl::always_executed_hook()  " << device_name << std::endl;
	/*----- PROTECTED REGION ID(AccessControl::always_executed_hook) ENABLED START -----*/

	//	code always executed before all requests
@@ -208,9 +207,9 @@ void AccessControl::always_executed_hook()
 *	Description : Hardware acquisition for attributes
 */
//--------------------------------------------------------
void AccessControl::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list))
void AccessControl::read_attr_hardware(TANGO_UNUSED(std::vector<long> &attr_list))
{
	DEBUG_STREAM << "AccessControl::read_attr_hardware(vector<long> &attr_list) entering... " << endl;
	DEBUG_STREAM << "AccessControl::read_attr_hardware(std::vector<long> &attr_list) entering... " << std::endl;
	/*----- PROTECTED REGION ID(AccessControl::read_attr_hardware) ENABLED START -----*/
	
	//	Add your own code
@@ -235,6 +234,21 @@ void AccessControl::add_dynamic_attributes()
	/*----- PROTECTED REGION END -----*/	//	AccessControl::add_dynamic_attributes
}

//--------------------------------------------------------
/**
 *	Method      : AccessControl::add_dynamic_commands()
 *	Description : Create the dynamic commands if any
 *                for specified device.
 */
//--------------------------------------------------------
void AccessControl::add_dynamic_commands()
{
	/*----- PROTECTED REGION ID(AccessControl::add_dynamic_commands) ENABLED START -----*/

	//	Add your own code to create and add dynamic commands if any

	/*----- PROTECTED REGION END -----*/	//	AccessControl::add_dynamic_commands
}

/*----- PROTECTED REGION ID(AccessControl::namespace_ending) ENABLED START -----*/

+2 −2
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ public:
	 *	@param cl	Class.
	 *	@param s 	Device Name
	 */
	AccessControl(Tango::DeviceClass *cl,string &s);
	AccessControl(Tango::DeviceClass *cl,std::string &s);
	/**
	 * Constructs a newly device object.
	 *
@@ -157,7 +157,7 @@ public:
	 *	Description : Hardware acquisition for attributes.
	 */
	//--------------------------------------------------------
	virtual void read_attr_hardware(vector<long> &attr_list);
	virtual void read_attr_hardware(std::vector<long> &attr_list);


	//--------------------------------------------------------
+3 −3
Original line number Diff line number Diff line
<?xml version="1.0" encoding="ASCII"?>
<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
  <classes name="AccessControl" pogoRevision="9.0">
    <description description="This class defines how to manage the TANGO access control.&#xA;It interfaces commands for tool to defines access for users, devices and IP addresses.&#xA;It interfaces also commands used by client API to check access for specified user, device and address.&#xA;And it insterfaces to register and unregister it as TANGO service." title="cess Control abstract class" sourcePath="/segfs/tango/templates/AbstractClasses/AccessControl" language="Cpp" filestogenerate="XMI   file,Code files" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="true" hasAbstractAttribute="false">
  <classes name="AccessControl" pogoRevision="9.7">
    <description description="This class defines how to manage the TANGO access control.&#xA;It interfaces commands for tool to defines access for users, devices and IP addresses.&#xA;It interfaces also commands used by client API to check access for specified user, device and address.&#xA;And it insterfaces to register and unregister it as TANGO service." title="cess Control abstract class" sourcePath="/root/ds" language="Cpp" filestogenerate="XMI   file,Code files" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="true" hasAbstractAttribute="false">
      <inheritances classname="Device_4Impl" sourcePath="/segfs/tango/templates/AbstractClasses"/>
      <identification contact="at esrf.fr - accelerator-control" author="accelerator-control" emailDomain="esrf.fr" classFamily="AbstractClasses" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="none" reference=""/>
    </description>
@@ -175,6 +175,6 @@
    <states name="FAULT" description="The MySql database handle is not OK.">
      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
    </states>
    <preferences docHome="./doc_html" makefileHome="/segfs/tango/cppserver/env"/>
    <preferences docHome="./doc_html" makefileHome="$(TANGO_HOME)"/>
  </classes>
</pogoDsl:PogoSystem>
+19 −23
Original line number Diff line number Diff line
/*----- PROTECTED REGION ID(AccessControlClass.cpp) ENABLED START -----*/
static const char *RcsId      = "$Id$";
static const char *TagName    = "$Name$";
static const char *CvsPath    = "$Source$";
static const char *SvnPath    = "$HeadURL:  $";
static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc/ds_doc/";
//=============================================================================
//
// file :        AccessControlClass.cpp
@@ -11,7 +6,7 @@ static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc
// description : C++ source for the AccessControlClass. A singleton
//               class derived from DeviceClass. It implements the
//               command list and all properties and methods required
//               by the name once per process.
//               by the name once per process.
//
// project :     Access Control abstract class.
//
@@ -54,7 +49,9 @@ static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc
//=============================================================================


#include <AccessControlClass.h>
#include "AccessControlClass.h"

#include "../TangoAccessControl/Logging.h"

/*----- PROTECTED REGION END -----*/	//	AccessControlClass.cpp

@@ -85,23 +82,22 @@ AccessControlClass *AccessControlClass::_instance = NULL;

//--------------------------------------------------------
/**
 * method : 		AccessControlClass::AccessControlClass(string &s)
 * method : 		AccessControlClass::AccessControlClass(std::string &s)
 * description : 	constructor for the AccessControlClass
 *
 * @param s	The class name
 */
//--------------------------------------------------------
AccessControlClass::AccessControlClass(string &s):Tango::DeviceClass(s)
AccessControlClass::AccessControlClass(std::string &s):Tango::DeviceClass(s)
{
	cout2 << "Entering AccessControlClass constructor" << endl;
	TANGO_LOG_INFO << "Entering AccessControlClass constructor" << std::endl;
	set_default_property();
	write_class_property();

	/*----- PROTECTED REGION ID(AccessControlClass::constructor) ENABLED START -----*/
	string str_rcs(RcsId);
	/*----- PROTECTED REGION END -----*/	//	AccessControlClass::constructor

	cout2 << "Leaving AccessControlClass constructor" << endl;
	TANGO_LOG_INFO << "Leaving AccessControlClass constructor" << std::endl;
}

//--------------------------------------------------------
@@ -135,10 +131,10 @@ AccessControlClass *AccessControlClass::init(const char *name)
	{
		try
		{
			string s(name);
			std::string s(name);
			_instance = new AccessControlClass(s);
		}
		catch (bad_alloc &)
		catch (std::bad_alloc &)
		{
			throw;
		}
@@ -157,7 +153,7 @@ AccessControlClass *AccessControlClass::instance()
{
	if (_instance == NULL)
	{
		cerr << "Class is not initialised !!" << endl;
		std::cerr << "Class is not initialised !!" << std::endl;
		exit(-1);
	}
	return _instance;
@@ -178,7 +174,7 @@ AccessControlClass *AccessControlClass::instance()
 *	Description : Get the class property for specified name.
 */
//--------------------------------------------------------
Tango::DbDatum AccessControlClass::get_class_property(string &prop_name)
Tango::DbDatum AccessControlClass::get_class_property(std::string &prop_name)
{
	for (unsigned int i=0 ; i<cl_prop.size() ; i++)
		if (cl_prop[i].name == prop_name)
@@ -193,7 +189,7 @@ Tango::DbDatum AccessControlClass::get_class_property(string &prop_name)
 *	Description : Return the default value for device property.
 */
//--------------------------------------------------------
Tango::DbDatum AccessControlClass::get_default_device_property(string &prop_name)
Tango::DbDatum AccessControlClass::get_default_device_property(std::string &prop_name)
{
	for (unsigned int i=0 ; i<dev_def_prop.size() ; i++)
		if (dev_def_prop[i].name == prop_name)
@@ -208,7 +204,7 @@ Tango::DbDatum AccessControlClass::get_default_device_property(string &prop_name
 *	Description : Return the default value for class property.
 */
//--------------------------------------------------------
Tango::DbDatum AccessControlClass::get_default_class_property(string &prop_name)
Tango::DbDatum AccessControlClass::get_default_class_property(std::string &prop_name)
{
	for (unsigned int i=0 ; i<cl_def_prop.size() ; i++)
		if (cl_def_prop[i].name == prop_name)
@@ -229,10 +225,10 @@ Tango::DbDatum AccessControlClass::get_default_class_property(string &prop_name)
//--------------------------------------------------------
void AccessControlClass::set_default_property()
{
	string	prop_name;
	string	prop_desc;
	string	prop_def;
	vector<string>	vect_data;
	std::string	prop_name;
	std::string	prop_desc;
	std::string	prop_def;
	std::vector<std::string>	vect_data;

	//	Set Default Class Properties

@@ -271,7 +267,7 @@ void AccessControlClass::device_factory(const Tango::DevVarStringArray *devlist_
 *                and store them in the attribute list
 */
//--------------------------------------------------------
void AccessControlClass::attribute_factory(vector<Tango::Attr *> &att_list)
void AccessControlClass::attribute_factory(std::vector<Tango::Attr *> &att_list)
{
	/*----- PROTECTED REGION ID(AccessControlClass::attribute_factory_before) ENABLED START -----*/

Loading