Merged changes from 3.14 branch to revo 12652

This commit is contained in:
Andrew Johnson
2016-07-21 23:37:54 -05:00
17 changed files with 82 additions and 162 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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`% $< >$@

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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))

View File

@@ -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`% $< >$@

View File

@@ -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.

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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";

View File

@@ -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

View File

@@ -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)

View File

@@ -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);