Merged changes from 3.14 branch to revo 12652
This commit is contained in:
@@ -14,8 +14,6 @@ EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS))
|
||||
# The names of files to be expanded must end with '@'
|
||||
EXPANDED = $(EXPAND:%@=%)
|
||||
|
||||
buildInstall: $(EXPANDED)
|
||||
|
||||
$(EXPANDED): %: %@
|
||||
$(ECHO) "Expanding $< to $@"
|
||||
@$(RM) $@
|
||||
@@ -26,7 +24,8 @@ clean: expand_clean
|
||||
expand_clean:
|
||||
@$(RM) $(EXPANDED)
|
||||
|
||||
.PHONY : expand_clean
|
||||
.PRECIOUS: $(EXPANDED)
|
||||
.PHONY: expand_clean
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Assemblies (files assembled from snippets)
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
# Site specific definitions for linux-x86 host - linux-arm target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Tools install path
|
||||
#GNU_DIR = /home/targetOS/linux-arm/host/x86-linux/gcc_3.3.3
|
||||
# Set GNU crosscompiler target name
|
||||
GNU_TARGET = arm-xilinx-linux-gnueabi
|
||||
|
||||
# APS:
|
||||
# Set GNU tools install path
|
||||
# This is the install path at APS:
|
||||
GNU_DIR = /usr/local/vw/zynq-2011.09
|
||||
|
||||
# GNU crosscompiler target name
|
||||
GNU_TARGET = arm-xilinx-linux-gnueabi
|
||||
# With a Xilinx SDK, it'll be something like
|
||||
#GNU_DIR = /usr/local/zynq/Xilinx/SDK/2015.4/gnu/arm/lin
|
||||
|
||||
@@ -133,6 +133,22 @@ dbQuietMacroWarnings=1 <i>VxWorks</i>
|
||||
<p>In preparation for moving to git in place of the Bazaar revision control
|
||||
system we have removed all the keywords from the Base source code.</p>
|
||||
|
||||
<h3>Linux systemd service file for CA Repeater</h3>
|
||||
|
||||
<p>Building this version of Base on a Linux system creates a systemd service
|
||||
file suitable for starting the Channel Access Repeater under systemd. The file
|
||||
will be installed into the target bin directory, from where it can be copied
|
||||
into the appropriate systemd location and modified as necessary. Installation
|
||||
instructions are included as comments in the file.</p>
|
||||
|
||||
<h3>NTP Time Provider adjusts to OS tick rate changes</h3>
|
||||
|
||||
<p>Dirk Zimoch provided code that allows the NTP Time provider (used on VxWorks
|
||||
and RTEMS only) to adapt to changes in the OS clock tick rate after the provider
|
||||
has been initialized. Note that changing the tick rate after iocInit() is not
|
||||
advisable, and that other software might still misbehave if initialized before
|
||||
an OS tick rate change. This change was back-ported from the 3.15 branch.</p>
|
||||
|
||||
<h3>Making IOC ca_get operations atomic</h3>
|
||||
|
||||
<p>When a CA client gets data from an IOC record using a compound data type such
|
||||
|
||||
@@ -100,8 +100,12 @@ caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
|
||||
casw_SYS_LIBS_solaris = socket
|
||||
|
||||
SCRIPTS_solaris := S99caRepeater
|
||||
SCRIPTS_Linux := S99caRepeater
|
||||
SCRIPTS_HOST = S99caRepeater
|
||||
SCRIPTS_Linux = caRepeater.service
|
||||
|
||||
EXPAND += S99caRepeater@
|
||||
EXPAND += caRepeater.service@
|
||||
EXPAND_VARS = INSTALL_BIN=$(abspath $(INSTALL_BIN))
|
||||
|
||||
SRC_DIRS += $(TOP)/src/ca/client/test
|
||||
PROD_HOST += ca_test
|
||||
@@ -112,6 +116,3 @@ ca_test_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
OBJS_vxWorks += ca_test
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
S99%: ../rc2.%
|
||||
sed -e s%:INSTALL_BIN:%`cd $(INSTALL_BIN); pwd`% $< >$@
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# System-V init script for the EPICS CA Repeater.
|
||||
#
|
||||
|
||||
INSTALL_BIN=:INSTALL_BIN:
|
||||
INSTALL_BIN=@INSTALL_BIN@
|
||||
|
||||
# To change the default values for the EPICS environment parameters,
|
||||
# uncomment and modify the relevant lines below. These are the only
|
||||
25
src/ca/client/caRepeater.service@
Normal file
25
src/ca/client/caRepeater.service@
Normal file
@@ -0,0 +1,25 @@
|
||||
#
|
||||
# Linux systemd service file for the EPICS CA Repeater
|
||||
#
|
||||
# To install this file, as root:
|
||||
# cp caRepeater.service /etc/systemd/system
|
||||
# chmod 664 /etc/systemd/system/caRepeater.service
|
||||
# systemctl daemon-reload
|
||||
# systemctl enable caRepeater
|
||||
# systemctl start caRepeater
|
||||
#
|
||||
# To check the status:
|
||||
# systemctl status caRepeater
|
||||
|
||||
[Unit]
|
||||
Description=EPICS CA Repeater
|
||||
Requires=network.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=@INSTALL_BIN@/caRepeater
|
||||
Restart=always
|
||||
User=daemon
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -56,7 +56,6 @@ include $(LIBCOM)/as/RULES
|
||||
include $(LIBCOM)/env/RULES
|
||||
include $(LIBCOM)/error/RULES
|
||||
include $(LIBCOM)/flex/RULES
|
||||
include $(LIBCOM)/log/RULES
|
||||
include $(LIBCOM)/misc/RULES
|
||||
include $(LIBCOM)/osi/RULES
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ iocLogServer_LIBS = Com
|
||||
iocLogServer_SYS_LIBS_solaris += socket
|
||||
iocLogServer_SYS_LIBS_WIN32 += user32 ws2_32
|
||||
|
||||
SCRIPTS_solaris := S99logServer
|
||||
SCRIPTS_Linux := S99logServer
|
||||
SCRIPTS_HOST = S99logServer
|
||||
|
||||
EXPAND += S99logServer@
|
||||
EXPAND_VARS = INSTALL_BIN=$(abspath $(INSTALL_BIN))
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2010 UChicago Argonne LLC, as Operator of Argonne
|
||||
# National Laboratory.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
|
||||
# This is a Makefile fragment, see src/libCom/Makefile.
|
||||
|
||||
S99%: ../log/rc2.%
|
||||
sed -e s%:INSTALL_BIN:%`cd $(INSTALL_BIN); pwd`% $< >$@
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# System-V init script for the EPICS IOC Log Server.
|
||||
#
|
||||
|
||||
INSTALL_BIN=:INSTALL_BIN:
|
||||
INSTALL_BIN=@INSTALL_BIN@
|
||||
|
||||
# To change the default values for the EPICS Environment parameters,
|
||||
# uncomment and modify the relevant lines below.
|
||||
@@ -171,11 +171,6 @@ epicsAtomicTest_SRCS += epicsAtomicTest.cpp
|
||||
testHarness_SRCS += epicsAtomicTest.cpp
|
||||
TESTS += epicsAtomicTest
|
||||
|
||||
TESTPROD_HOST += epicsExceptionTest
|
||||
epicsExceptionTest_SRCS += epicsExceptionTest.cpp
|
||||
testHarness_SRCS += epicsExceptionTest.cpp
|
||||
TESTS += epicsExceptionTest
|
||||
|
||||
TESTPROD_HOST += macDefExpandTest
|
||||
macDefExpandTest_SRCS += macDefExpandTest.c
|
||||
testHarness_SRCS += macDefExpandTest.c
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2006 UChicago Argonne LLC, as Operator of Argonne
|
||||
* National Laboratory.
|
||||
* Copyright (c) 2002 The Regents of the University of California, as
|
||||
* Operator of Los Alamos National Laboratory.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
//
|
||||
// Verify that the local c++ exception mechanism matches the ANSI/ISO standard.
|
||||
// Author: Jeff Hill
|
||||
//
|
||||
|
||||
#include <new>
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#if defined(__GNUC__) && (__GNUC__<2 || (__GNUC__==2 && __GNUC_MINOR__<=96))
|
||||
#include <climits>
|
||||
#else
|
||||
#include <limits>
|
||||
#endif
|
||||
|
||||
#include "epicsUnitTest.h"
|
||||
#include "epicsThread.h"
|
||||
#include "testMain.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#if defined ( _MSC_VER )
|
||||
// some interesting bugs found in the MS implementation of new
|
||||
# if _MSC_VER >= 1900
|
||||
static size_t unsuccessfulNewSize = numeric_limits < size_t > :: max ();
|
||||
# elif _MSC_VER > 1310 /* this gets fixed some release after visual studio 7 we hope */
|
||||
static const size_t unsuccessfulNewSize = numeric_limits < size_t > :: max ();
|
||||
# else
|
||||
static const size_t unsuccessfulNewSize = numeric_limits < size_t > :: max () - 100;
|
||||
# endif
|
||||
// passing a size_t to printf() needs "%zu" on some platforms
|
||||
#elif defined(vxWorks)
|
||||
// Neither vxWorks 5 or 6 supply true ANSI C++
|
||||
static const size_t unsuccessfulNewSize = UINT_MAX - 15u;
|
||||
#else
|
||||
static const size_t unsuccessfulNewSize = numeric_limits < size_t > :: max ();
|
||||
#endif
|
||||
|
||||
class exThread : public epicsThreadRunable {
|
||||
public:
|
||||
exThread ();
|
||||
void waitForCompletion ();
|
||||
~exThread() {};
|
||||
private:
|
||||
epicsThread thread;
|
||||
bool done;
|
||||
void run ();
|
||||
};
|
||||
|
||||
static void epicsExceptionTestPrivate ()
|
||||
{
|
||||
try {
|
||||
char * p = new char [unsuccessfulNewSize];
|
||||
testFail("new char[%lu] returned %p",
|
||||
(unsigned long) unsuccessfulNewSize, p);
|
||||
}
|
||||
catch ( const bad_alloc & ) {
|
||||
testPass("new char[%lu] threw",
|
||||
(unsigned long) unsuccessfulNewSize);
|
||||
}
|
||||
catch ( ... ) {
|
||||
testFail("new: threw wrong type");
|
||||
}
|
||||
try {
|
||||
char * p = new ( nothrow )
|
||||
char [unsuccessfulNewSize];
|
||||
testOk(p == 0, "new (nothrow) returned %p", p);
|
||||
}
|
||||
catch( ... ) {
|
||||
testFail("new (nothrow): threw");
|
||||
}
|
||||
}
|
||||
|
||||
exThread::exThread () :
|
||||
thread ( *this, "testExceptions", epicsThreadGetStackSize(epicsThreadStackSmall) ),
|
||||
done ( false )
|
||||
{
|
||||
this->thread.start ();
|
||||
}
|
||||
|
||||
void exThread::run ()
|
||||
{
|
||||
epicsExceptionTestPrivate ();
|
||||
this->done = true;
|
||||
}
|
||||
|
||||
void exThread::waitForCompletion ()
|
||||
{
|
||||
while ( ! this->done ) {
|
||||
epicsThreadSleep ( 0.1 );
|
||||
}
|
||||
}
|
||||
|
||||
MAIN(epicsExceptionTest)
|
||||
{
|
||||
testPlan(4);
|
||||
epicsExceptionTestPrivate ();
|
||||
|
||||
exThread athread;
|
||||
athread.waitForCompletion ();
|
||||
return testDone();
|
||||
}
|
||||
@@ -24,7 +24,6 @@ int epicsEllTest(void);
|
||||
int epicsEnvTest(void);
|
||||
int epicsErrlogTest(void);
|
||||
int epicsEventTest(void);
|
||||
int epicsExceptionTest(void);
|
||||
int epicsExitTest(void);
|
||||
int epicsMathTest(void);
|
||||
int epicsMessageQueueTest(void);
|
||||
@@ -80,7 +79,6 @@ void epicsRunLibComTests(void)
|
||||
runTest(epicsEnvTest);
|
||||
runTest(epicsErrlogTest);
|
||||
runTest(epicsEventTest);
|
||||
runTest(epicsExceptionTest);
|
||||
runTest(epicsMathTest);
|
||||
runTest(epicsMessageQueueTest);
|
||||
runTest(epicsMMIOTest);
|
||||
|
||||
@@ -418,7 +418,8 @@ EOF
|
||||
}
|
||||
|
||||
sub GetUser {
|
||||
$user = $opt_u || $ENV{USER} || $ENV{USERNAME} || Win32::LoginName();
|
||||
$user = $opt_u || $ENV{USER} || $ENV{USERNAME} || getlogin();
|
||||
$user = Win32::LoginName() if !$user && $^ eq 'MSWin32';
|
||||
|
||||
unless ($user) {
|
||||
print "Strange, I cannot figure out your user name!\n";
|
||||
|
||||
@@ -14,19 +14,24 @@
|
||||
# RELEASE.Common.$(T_A)
|
||||
# RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
#
|
||||
# This file should ONLY define paths to other support modules,
|
||||
# or include statements that pull in similar RELEASE files.
|
||||
# Build settings that are NOT module paths should appear in a
|
||||
# CONFIG_SITE file.
|
||||
# This file is parsed by both GNUmake and an EPICS Perl script,
|
||||
# so it can ONLY contain definititions of paths to other support
|
||||
# modules, variable definitions that are used in module paths,
|
||||
# and include statements that pull in other RELEASE files.
|
||||
# Variables may be used before their values have been set.
|
||||
# Build variables that are NOT used in paths should be set in
|
||||
# the CONFIG_SITE file.
|
||||
|
||||
TEMPLATE_TOP=_TEMPLATE_TOP_
|
||||
# Variables and paths to dependent modules:
|
||||
#MODULES = /path/to/modules
|
||||
#MYMODULE = $(MODULES)/my-module
|
||||
|
||||
# If using the sequencer, point SNCSEQ at its top directory:
|
||||
#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
|
||||
#SNCSEQ = $(MODULES)/seq-ver
|
||||
|
||||
# EPICS_BASE usually appears last so other apps can override stuff:
|
||||
EPICS_BASE=_EPICS_BASE_
|
||||
# EPICS_BASE should appear last so earlier modules can override stuff:
|
||||
EPICS_BASE = _EPICS_BASE_
|
||||
|
||||
# Set RULES here if you want to take build rules from somewhere
|
||||
# Set RULES here if you want to use build rules from somewhere
|
||||
# other than EPICS_BASE:
|
||||
#RULES=/path/to/epics/support/module/rules/x-y
|
||||
#RULES = $(MODULES)/build-rules
|
||||
|
||||
@@ -26,6 +26,7 @@ _APPNAME_Support_SRCS += initTrace.c
|
||||
|
||||
_APPNAME_Support_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
|
||||
|
||||
# Build the IOC application
|
||||
PROD_IOC = _APPNAME_
|
||||
|
||||
@@ -46,9 +47,6 @@ _APPNAME__SRCS += _APPNAME__registerRecordDeviceDriver.cpp
|
||||
_APPNAME__SRCS_DEFAULT += _APPNAME_Main.cpp
|
||||
_APPNAME__SRCS_vxWorks += -nil-
|
||||
|
||||
# Add support from base/src/vxWorks if needed
|
||||
#_APPNAME__OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
|
||||
|
||||
# Link in the code from our support library
|
||||
_APPNAME__LIBS += _APPNAME_Support
|
||||
|
||||
@@ -58,6 +56,7 @@ ifneq ($(SNCSEQ),)
|
||||
# Build sncExample into _APPNAME_Support
|
||||
sncExample_SNCFLAGS += +r
|
||||
_APPNAME__DBD += sncExample.dbd
|
||||
# A .stt sequence program is *not* pre-processed:
|
||||
_APPNAME_Support_SRCS += sncExample.stt
|
||||
_APPNAME_Support_LIBS += seq pv
|
||||
_APPNAME__LIBS += seq pv
|
||||
@@ -65,6 +64,7 @@ ifneq ($(SNCSEQ),)
|
||||
# Build sncProgram as a standalone program
|
||||
PROD_HOST += sncProgram
|
||||
sncProgram_SNCFLAGS += +m
|
||||
# A .st sequence program *is* pre-processed:
|
||||
sncProgram_SRCS += sncProgram.st
|
||||
sncProgram_LIBS += seq pv
|
||||
sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS)
|
||||
|
||||
@@ -237,7 +237,7 @@ sub checkRelease {
|
||||
}
|
||||
}
|
||||
|
||||
my @modules = @apps;
|
||||
my @modules = grep(!m/^(RULES|TOP|TEMPLATE_TOP)$/, @apps);
|
||||
my $app = shift @modules;
|
||||
my $latest = AbsPath($macros{$app});
|
||||
my %paths = ($latest => $app);
|
||||
|
||||
Reference in New Issue
Block a user