Merge ~epics-core/epics-base/+git/Com:make-simple into ~epics-core/epics-base/+git/epics-base:7.0

Proposed by mdavidsaver
Status: Merged
Merged at revision: 966965c2c1df55293f43978100af19a24c8e5e8e
Proposed branch: ~epics-core/epics-base/+git/Com:make-simple
Merge into: ~epics-core/epics-base/+git/epics-base:7.0
Diff against target: 1899 lines (+86/-101)
45 files modified
configure/CONFIG (+5/-1)
configure/CONFIG_LIBCOM_MODULE (+3/-11)
configure/Makefile (+9/-0)
configure/RULES_BUILD (+3/-3)
dev/null (+0/-2)
modules/Makefile (+4/-4)
modules/ca/Makefile (+2/-4)
modules/ca/src/Makefile (+1/-1)
modules/ca/src/client/Makefile (+3/-3)
modules/ca/src/perl/Makefile (+1/-3)
modules/ca/src/perl/capr.pl (+1/-3)
modules/ca/src/template/Makefile (+1/-1)
modules/ca/src/tools/Makefile (+1/-1)
modules/database/Makefile (+2/-3)
modules/database/src/Makefile (+1/-1)
modules/database/src/ioc/Makefile (+5/-3)
modules/database/src/std/Makefile (+5/-3)
modules/database/src/template/Makefile (+1/-1)
modules/database/src/tools/Makefile (+1/-3)
modules/database/src/tools/dbExpand.pl (+1/-3)
modules/database/src/tools/dbdExpand.pl (+1/-3)
modules/database/src/tools/dbdReport.pl (+1/-3)
modules/database/src/tools/dbdToHtml.pl (+1/-3)
modules/database/src/tools/dbdToMenuH.pl (+1/-3)
modules/database/src/tools/dbdToRecordtypeH.pl (+1/-3)
modules/database/src/tools/registerRecordDeviceDriver.pl (+1/-3)
modules/database/test/Makefile (+1/-1)
modules/database/test/ioc/db/Makefile (+4/-3)
modules/database/test/ioc/dbtemplate/Makefile (+1/-1)
modules/database/test/std/filters/Makefile (+3/-1)
modules/database/test/std/link/Makefile (+3/-1)
modules/database/test/std/rec/Makefile (+3/-1)
modules/database/test/tools/Makefile (+1/-1)
modules/libcom/Makefile (+3/-4)
modules/libcom/RTEMS/Makefile (+1/-1)
modules/libcom/src/Makefile (+2/-4)
modules/libcom/src/env/Makefile (+0/-1)
modules/libcom/src/env/RULES (+1/-1)
modules/libcom/src/env/bldEnvData.pl (+1/-3)
modules/libcom/test/Makefile (+1/-1)
modules/libcom/vxWorks/Makefile (+1/-1)
src/template/base/makeBaseApp.pl (+1/-1)
src/tools/convertRelease.pl (+1/-1)
src/tools/expandVars.pl (+1/-1)
src/tools/fullPathName.pl (+1/-1)
Reviewer Review Type Date Requested Status
Andrew Johnson Approve
mdavidsaver Approve
Review via email: mp+361381@code.launchpad.net

Description of the change

Makefile simplifications related to the former sub-modules (libcom, ca, database) which have causing confusion, and extra complexity in packaging.

1. Remove modules/*/configure and CI leftovers. As these are no longer built separately, this is unnecessary complexity (need to set EPICS_HOST_ARCH to build in sub-dirs).

2. Remove bin/*/*ModuleDirs.pm. The Makefile rule is left (though it could be removed). Places where $(INSTALL_LOCATION) appears in generated code add complexity to packaging.

To post a comment you must log in.
Revision history for this message
Andrew Johnson (anj) wrote :

Not saying that I approve of this change, but while I'm looking at what you did...

You probably didn't see these Perl errors (which only occur after a distclean):

tux% make -s -C configure
Can't locate EPICS/Path.pm in @INC (@INC contains: /local/anj/base-7.0/src/tools/../../lib/perl /home/phoebus/ANJ/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ../src/tools/convertRelease.pl line 24.
BEGIN failed--compilation aborted at ../src/tools/convertRelease.pl line 24.
Can't locate EPICS/Path.pm in @INC (@INC contains: /local/anj/base-7.0/src/tools/../../lib/perl /home/phoebus/ANJ/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ../../src/tools/convertRelease.pl line 24.
BEGIN failed--compilation aborted at ../../src/tools/convertRelease.pl line 24.
...

They are easy to fix though, just revert your changes in src/tools. Those scripts are designed to be able to be run from the src/tools directory before the build has got as far as installing them, so by including $Bin in the library search path (i.e. the path to the directory that the .pl script is actually running from) they can find the local modules they need (which also haven't been installed yet). The src/tools scripts never loaded a xxxModuleDirs file.

For the other scripts where you removed $Bin from the search path and a 'use xxxModuleDirs;', you should also remove the now unnecessary line
    no lib $Bin;
which removed $Bin from the library search path after the xxxModuleDirs file had been loaded.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

> ... You probably didn't see these Perl errors ...

You're right, I don't. Which is puzzling considering that I've been (re)building with this change for several months now. You see this during Base build?

Revision history for this message
Andrew Johnson (anj) wrote :

Yup, those errors were from the top of your branch. I just replicated them:

tux% git clone -b make-simple --reference base-7.0 git+ssh://git.launchpad.net/~epics-core/epics-base/+git/Com dev-7.0
Cloning into 'dev-7.0'...
Checking connectivity... done.
Checking out files: 100% (1733/1733), done.
tux% cd dev-7.0/
tux% make -s -C configure
Can't locate EPICS/Path.pm in @INC (@INC contains: /local/anj/dev-7.0/src/tools/../../lib/perl /home/phoebus/ANJ/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ../src/tools/convertRelease.pl line 24.
BEGIN failed--compilation aborted at ../src/tools/convertRelease.pl line 24.
Can't locate EPICS/Path.pm in @INC (@INC contains: /local/anj/dev-7.0/src/tools/../../lib/perl /home/phoebus/ANJ/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ../../src/tools/convertRelease.pl line 24.
BEGIN failed--compilation aborted at ../../src/tools/convertRelease.pl line 24.
...

They don't prevent Base from building though.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

This shows up in the travis build anyway.

https://travis-ci.org/mdavidsaver/epics-base/jobs/475161570

> They don't prevent Base from building though.

... because it comes from the configure/RELEASE parsing mechanics. Specifically:

> RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)

This will be empty when building Base itself, so we can just skip it.

Revision history for this message
Andrew Johnson (anj) wrote :

The Makefile rule for %ModuleDirs.pm cannot be removed, it will still be needed for external Perl scripts that use Perl modules from Base. The caPerl makeBaseApp template demonstrates the need.

You didn't make the changes I suggested in the last paragraph of my first comment yet: Remove the now unnecessary 'no lib $Bin;' lines from the scripts modules/database/src/tools/*.pl and modules/libcom/src/env/bldEnvData.pl where you removed a 'use ...ModuleDirs;' line.

I still object that the libcom, ca and database directories appear under modules/ when after these changes they aren't structured as modules any more. If we're going to undo their modular nature like this they should be moved back under src/ and test/.

One point of our making them modules was to move towards allowing CA and RSRV to become optional and unbundling them — are you abandoning that idea?

Revision history for this message
Andrew Johnson (anj) wrote :

Core Group mtg: Further exploration on Perl ModuleDirs files by ANJ; diff comments with fixes, but in principle this is acceptable.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

I've addressed two of three comments. I'm not going to try to make the caPerlApp example automatically set $PERL5LIB (I would rather drop it).

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

wrt. the *ModuleDirs.pm idea. One alternative I can imagine is injecting these paths directly into the .pl before/during installation?

Though even this would raise an issue which would need to be addressed in the rpath-origin MR.

https://code.launchpad.net/~epics-core/epics-base/+git/make/+merge/359132

Isn't there some way we can avoid encoding more absolute paths in the installed tree? I'm close to getting rid of these!

Revision history for this message
Andrew Johnson (anj) wrote :

With the changes already included in this MR Base doesn't generate any *ModuleDirs.pm files at all, they will only be generated by support modules that explicitly ask for one. I don't understand why you appear to be so strongly opposed to Base keeping the capability of generating them for other configurations (which is all I was asking for in my first paragraph back on 2019-03-07).

I understand the need for Debian packaging to remove install absolute paths from Base's installed files. When packaging EPICS it should be possible to install all the .pm files from $(INSTALL_DIR)/lib/perl and its sub-dirs (and the libCap5.so file) under one of the system directories that Perl searches automatically — those dir's are listed under @INC at the end of the 'perl -V' output, I expect Debian tells you somewhere which to use. Then the packaging process can remove all of the 'use lib' and 'use FindBin' lines from the EPICS Perl scripts and they will still find the modules they need. The one file that might need special attention is CA.pm which uses Perl's Dynaloader to load libCap5.so but as long as the relative path from CA.pm to libCap5.so is retained, the existing code will continue to work for that.

The packaging process can also remove the similar code that adjusts @INC from the top of the caPerlApp/*.pl template files, and delete the _APPNAME_ModuleDirs.pm line from the caPerlApp/Makefile. Templates that are instantiated on a Debian system will work fine when run on a system that has the modules installed as above. The won't work on a non-Debian system without adjustment, but I don't see that as a major problem.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

I think we're confusing each other. So the only change you're asking for is to revert the changes to .pl files under "modules/ca/src/template/top/caPerlApp"?

Revision history for this message
Andrew Johnson (anj) wrote :

I don't think so since they still have the 'use _APPNAME_ModuleDirs;' lines in them. I'm not trying to undo what you've done, I was just trying to get you to agree that you won't try to remove the *ModuleDirs.pm generation rules (contrary to the second point in your "Description of Change" at the top of this Merge Request). I would like to take one more look at this before it gets merged, I might have some minor name changes (of course!).

I was also explaining how the Debian packaging could more closely integrate our Perl modules into the rest of the Debian system.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

> you won't try to remove the *ModuleDirs.pm generation rules

I'm not! From me, "could be removed" is an option not a plan. I would however, like to remove any usage of it in Base. I appreciate that you may not see much distance between these two points, but I do. I'm relenting on the caPerlApp template in the hope of moving things forward.

I will reiterate for emphasis that my objections include having things which aren't executables under bin/ as well as encoding __absolute__ paths in the installed tree. The former coming in part from my desire, in the long term, to see our installed tree more closely follow *NIX conventions (LSB etc.). The later from my desire in the near term to be able to copy and use the installed tree from a different path.

Revision history for this message
mdavidsaver (mdavidsaver) :
review: Approve
Revision history for this message
Andrew Johnson (anj) wrote :

Still looking at this, ideas pending.

review: Needs Information (hold for anj)
Revision history for this message
Andrew Johnson (anj) wrote :

Videocon 9/17: Approved, some merge conflicts expected.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/configure/CONFIG b/configure/CONFIG
2index e40d3f5..153e69e 100644
3--- a/configure/CONFIG
4+++ b/configure/CONFIG
5@@ -58,8 +58,12 @@ include $(CONFIG)/CONFIG_BASE_VERSION
6 include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
7 -include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
8
9+# Parse configure/RELEASE
10+# except when building Base itself, where this file is empty,
11+# and would error in src/tools/ anyway.
12+ifndef BASE_TOP
13 RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
14-
15+endif
16
17 ifdef T_A
18
19diff --git a/modules/ca/configure/CONFIG_CA_MODULE b/configure/CONFIG_CA_MODULE
20similarity index 100%
21rename from modules/ca/configure/CONFIG_CA_MODULE
22rename to configure/CONFIG_CA_MODULE
23diff --git a/modules/ca/configure/CONFIG_CA_VERSION b/configure/CONFIG_CA_VERSION
24similarity index 100%
25rename from modules/ca/configure/CONFIG_CA_VERSION
26rename to configure/CONFIG_CA_VERSION
27diff --git a/modules/database/configure/CONFIG_DATABASE_MODULE b/configure/CONFIG_DATABASE_MODULE
28similarity index 100%
29rename from modules/database/configure/CONFIG_DATABASE_MODULE
30rename to configure/CONFIG_DATABASE_MODULE
31diff --git a/modules/database/configure/CONFIG_DATABASE_VERSION b/configure/CONFIG_DATABASE_VERSION
32similarity index 100%
33rename from modules/database/configure/CONFIG_DATABASE_VERSION
34rename to configure/CONFIG_DATABASE_VERSION
35diff --git a/modules/libcom/configure/CONFIG_LIBCOM_MODULE b/configure/CONFIG_LIBCOM_MODULE
36similarity index 64%
37rename from modules/libcom/configure/CONFIG_LIBCOM_MODULE
38rename to configure/CONFIG_LIBCOM_MODULE
39index 175606c..32bb937 100644
40--- a/modules/libcom/configure/CONFIG_LIBCOM_MODULE
41+++ b/configure/CONFIG_LIBCOM_MODULE
42@@ -5,18 +5,10 @@
43 # in file LICENSE that is included with this distribution.
44 #*************************************************************************
45
46-# Set EPICS_LIBCOM if necessary
47-ifndef EPICS_LIBCOM
48- EPICS_LIBCOM = $(if $(BUILDING_LIBCOM),$(INSTALL_LOCATION),$(EPICS_BASE))
49-
50- # Paths to tools built here
51- EPICS_LIBCOM_HOST_BIN ?= $(EPICS_LIBCOM)/bin/$(EPICS_HOST_ARCH)
52-endif
53-
54 # Set location of locally generated tools
55-YACC = $(abspath $(EPICS_LIBCOM_HOST_BIN))/antelope$(HOSTEXE)
56-LEX = $(abspath $(EPICS_LIBCOM_HOST_BIN))/e_flex$(HOSTEXE) \
57- -S$(EPICS_LIBCOM)/include/flex.skel.static
58+YACC = $(abspath $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH))/antelope$(HOSTEXE)
59+LEX = $(abspath $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH))/e_flex$(HOSTEXE) \
60+ -S$(EPICS_BASE)/include/flex.skel.static
61
62 # Default stack size for osiThread
63 OSITHREAD_USE_DEFAULT_STACK = NO
64diff --git a/modules/libcom/configure/CONFIG_LIBCOM_VERSION b/configure/CONFIG_LIBCOM_VERSION
65similarity index 100%
66rename from modules/libcom/configure/CONFIG_LIBCOM_VERSION
67rename to configure/CONFIG_LIBCOM_VERSION
68diff --git a/configure/Makefile b/configure/Makefile
69index 3778797..f48278d 100644
70--- a/configure/Makefile
71+++ b/configure/Makefile
72@@ -20,5 +20,14 @@ CONFIGS += $(subst ../,,$(wildcard ../os/CONFIG*))
73 CONFIGS += $(subst ../,,$(wildcard ../RELEASE*))
74 CONFIGS += $(subst ../,,$(wildcard ../RULES*))
75
76+CFG += CONFIG_LIBCOM_MODULE
77+CFG += CONFIG_LIBCOM_VERSION
78+
79+CFG += CONFIG_CA_MODULE
80+CFG += CONFIG_CA_VERSION
81+
82+CFG += CONFIG_DATABASE_MODULE
83+CFG += CONFIG_DATABASE_VERSION
84+
85 include $(TOP)/configure/RULES
86
87diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD
88index 2a78a96..6267889 100644
89--- a/configure/RULES_BUILD
90+++ b/configure/RULES_BUILD
91@@ -190,7 +190,7 @@ endif
92 checkRelease:
93 +$(CONVERTRELEASE) checkRelease
94 warnRelease:
95- -$(CONVERTRELEASE) checkRelease
96+ $(CONVERTRELEASE) checkRelease
97 noCheckRelease:
98 ifeq ($(EPICS_HOST_ARCH),$(T_A))
99 $(info Warning: RELEASE file consistency checks have been disabled)
100@@ -350,7 +350,7 @@ $(MODNAME): %$(MODEXT): %$(EXE)
101
102 runtests: $(TESTSCRIPTS)
103 ifdef RUNTESTS_ENABLED
104- -$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
105+ $(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
106 endif
107
108 testspec: $(TESTSCRIPTS)
109@@ -385,7 +385,7 @@ junitfiles: $(JUNITFILES)
110 # A .tap file is the output from running the associated test script
111 %.tap: %.t
112 ifdef RUNTESTS_ENABLED
113- -$(PERL) $< -tap > $@
114+ $(PERL) $< -tap > $@
115 endif
116
117 %.xml: %.tap
118diff --git a/modules/Makefile b/modules/Makefile
119index 0ed2b0e..ae221de 100644
120--- a/modules/Makefile
121+++ b/modules/Makefile
122@@ -7,15 +7,15 @@ TOP = ..
123 include $(TOP)/configure/CONFIG
124 include CONFIG_SITE.local
125
126-# Submodules for bundle build
127-SUBMODULES += libcom
128+DIRS += libcom
129
130-SUBMODULES += ca
131+DIRS += ca
132 ca_DEPEND_DIRS = libcom
133
134-SUBMODULES += database
135+DIRS += database
136 database_DEPEND_DIRS = ca
137
138+# Submodules for bundle build
139 SUBMODULES += pvData
140 pvData_DEPEND_DIRS = libcom
141
142diff --git a/modules/ca/.ci/travis-build.sh b/modules/ca/.ci/travis-build.sh
143deleted file mode 100755
144index 622979b..0000000
145--- a/modules/ca/.ci/travis-build.sh
146+++ /dev/null
147@@ -1,21 +0,0 @@
148-#!/bin/sh
149-set -e -x
150-
151-# set RTEMS to eg. "4.9" or "4.10"
152-# requires qemu, bison, flex, texinfo, install-info
153-if [ -n "$RTEMS" ]
154-then
155- # find local qemu-system-i386
156- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
157- echo -n "Using QEMU: "
158- type qemu-system-i386 || echo "Missing qemu"
159- EXTRA=RTEMS_QEMU_FIXUPS=YES
160-fi
161-
162-make -j2 $EXTRA
163-
164-if [ "$TEST" != "NO" ]
165-then
166- make -j2 tapfiles
167- make -s test-results
168-fi
169diff --git a/modules/ca/.ci/travis-prepare.sh b/modules/ca/.ci/travis-prepare.sh
170deleted file mode 100755
171index 85dc8d7..0000000
172--- a/modules/ca/.ci/travis-prepare.sh
173+++ /dev/null
174@@ -1,132 +0,0 @@
175-#!/bin/sh
176-set -e -x
177-
178-CURDIR="$PWD"
179-
180-QDIR="$HOME/.cache/qemu"
181-
182-if [ -n "$RTEMS" -a "$TEST" = "YES" ]
183-then
184- git clone --quiet --branch vme --depth 10 https://github.com/mdavidsaver/qemu.git "$HOME/.build/qemu"
185- cd "$HOME/.build/qemu"
186-
187- HEAD=`git log -n1 --pretty=format:%H`
188- echo "HEAD revision $HEAD"
189-
190- [ -e "$HOME/.cache/qemu/built" ] && BUILT=`cat "$HOME/.cache/qemu/built"`
191- echo "Cached revision $BUILT"
192-
193- if [ "$HEAD" != "$BUILT" ]
194- then
195- echo "Building QEMU"
196- git submodule --quiet update --init
197-
198- install -d "$HOME/.build/qemu/build"
199- cd "$HOME/.build/qemu/build"
200-
201- "$HOME/.build/qemu/configure" --prefix="$HOME/.cache/qemu/usr" --target-list=i386-softmmu --disable-werror
202- make -j2
203- make install
204-
205- echo "$HEAD" > "$HOME/.cache/qemu/built"
206- fi
207-fi
208-
209-cd "$CURDIR"
210-
211-cat << EOF > configure/RELEASE.local
212-EPICS_BASE=$HOME/.source/epics-base
213-EOF
214-
215-install -d "$HOME/.source"
216-cd "$HOME/.source"
217-
218-add_base_module() {
219- MODULE=$1
220- BRANCH=$2
221- ( cd epics-base/modules && \
222- git clone --quiet --depth 5 --branch "$MODULE"/"$BRANCH" https://github.com/${REPOBASE:-epics-base}/epics-base.git "$MODULE" && \
223- cd "$MODULE" && git log -n1 )
224-}
225-
226-git clone --quiet --depth 5 --branch core/"${BRCORE:-master}" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base
227-( cd epics-base && git log -n1 )
228-add_base_module libcom "${BRLIBCOM:-master}"
229-
230-EPICS_HOST_ARCH=`sh epics-base/startup/EpicsHostArch`
231-
232-# requires wine and g++-mingw-w64-i686
233-if [ "$WINE" = "32" ]
234-then
235- echo "Cross mingw32"
236- sed -i -e '/CMPLR_PREFIX/d' epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
237- cat << EOF >> epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
238-CMPLR_PREFIX=i686-w64-mingw32-
239-EOF
240- cat << EOF >> epics-base/configure/CONFIG_SITE
241-CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
242-EOF
243-fi
244-
245-if [ "$STATIC" = "YES" ]
246-then
247- echo "Build static libraries/executables"
248- cat << EOF >> epics-base/configure/CONFIG_SITE
249-SHARED_LIBRARIES=NO
250-STATIC_BUILD=YES
251-EOF
252-fi
253-
254-case "$CMPLR" in
255-clang)
256- echo "Host compiler is clang"
257- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
258-GNU = NO
259-CMPLR_CLASS = clang
260-CC = clang
261-CCC = clang++
262-EOF
263-
264- # hack
265- sed -i -e 's/CMPLR_CLASS = gcc/CMPLR_CLASS = clang/' epics-base/configure/CONFIG.gnuCommon
266-
267- clang --version
268- ;;
269-*)
270- echo "Host compiler is default"
271- gcc --version
272- ;;
273-esac
274-
275-cat <<EOF >> epics-base/configure/CONFIG_SITE
276-USR_CPPFLAGS += $USR_CPPFLAGS
277-USR_CFLAGS += $USR_CFLAGS
278-USR_CXXFLAGS += $USR_CXXFLAGS
279-EOF
280-
281-# set RTEMS to eg. "4.9" or "4.10"
282-# requires qemu, bison, flex, texinfo, install-info
283-if [ -n "$RTEMS" ]
284-then
285- echo "Cross RTEMS${RTEMS} for pc386"
286- install -d /home/travis/.cache
287- curl -L "https://github.com/mdavidsaver/rsb/releases/download/travis-20160306-2/rtems${RTEMS}-i386-trusty-20190306-2.tar.gz" \
288- | tar -C /home/travis/.cache -xj
289-
290- sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' epics-base/configure/os/CONFIG_SITE.Common.RTEMS
291- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.RTEMS
292-RTEMS_VERSION=$RTEMS
293-RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386
294-EOF
295- cat << EOF >> epics-base/configure/CONFIG_SITE
296-CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386
297-EOF
298-
299- # find local qemu-system-i386
300- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
301- echo -n "Using QEMU: "
302- type qemu-system-i386 || echo "Missing qemu"
303- EXTRA=RTEMS_QEMU_FIXUPS=YES
304-fi
305-
306-make -j2 -C epics-base $EXTRA
307diff --git a/modules/ca/.travis.yml b/modules/ca/.travis.yml
308deleted file mode 100644
309index 5a99b88..0000000
310--- a/modules/ca/.travis.yml
311+++ /dev/null
312@@ -1,26 +0,0 @@
313-sudo: false
314-dist: trusty
315-language: c
316-compiler:
317- - gcc
318-addons:
319- apt:
320- packages:
321- - libreadline6-dev
322- - libncurses5-dev
323- - perl
324- - clang
325- - g++-mingw-w64-i686
326-install:
327- - ./.ci/travis-prepare.sh
328-script:
329- - ./.ci/travis-build.sh
330-env:
331- - BRCORE=master BRLIBCOM=master TEST=NO
332- - CMPLR=clang TEST=NO
333- - USR_CXXFLAGS=-std=c++11 TEST=NO
334- - CMPLR=clang USR_CXXFLAGS=-std=c++11 TEST=NO
335- - WINE=32 TEST=NO STATIC=YES
336- - WINE=32 TEST=NO STATIC=NO
337- - RTEMS=4.10 TEST=NO
338- - RTEMS=4.9 TEST=NO
339diff --git a/modules/ca/Makefile b/modules/ca/Makefile
340index 13feff6..eeb147b 100644
341--- a/modules/ca/Makefile
342+++ b/modules/ca/Makefile
343@@ -7,11 +7,9 @@
344 # in file LICENSE that is included with this distribution.
345 #*************************************************************************
346
347-TOP = .
348+TOP = ../..
349 include $(TOP)/configure/CONFIG
350
351-DIRS += configure src
352-
353-src_DEPEND_DIRS = configure
354+DIRS += src
355
356 include $(TOP)/configure/RULES_TOP
357diff --git a/modules/ca/configure/CONFIG b/modules/ca/configure/CONFIG
358deleted file mode 100644
359index 331fd70..0000000
360--- a/modules/ca/configure/CONFIG
361+++ /dev/null
362@@ -1,28 +0,0 @@
363-# CONFIG - Load build configuration data
364-#
365-# Do not make changes to this file!
366-
367-# Allow user to override where the build rules come from
368-RULES = $(EPICS_BASE)
369-
370-# RELEASE files point to other application tops
371-include $(TOP)/configure/RELEASE
372--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
373-ifdef T_A
374--include $(TOP)/configure/RELEASE.Common.$(T_A)
375--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
376-endif
377-
378-CONFIG = $(RULES)/configure
379-include $(CONFIG)/CONFIG
380-
381-# Override the Base definition:
382-INSTALL_LOCATION = $(TOP)
383-
384-# CONFIG_SITE files contain other build configuration settings
385-include $(TOP)/configure/CONFIG_SITE
386--include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
387-ifdef T_A
388- -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
389- -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
390-endif
391diff --git a/modules/ca/configure/CONFIG_SITE b/modules/ca/configure/CONFIG_SITE
392deleted file mode 100644
393index d78c7f5..0000000
394--- a/modules/ca/configure/CONFIG_SITE
395+++ /dev/null
396@@ -1,42 +0,0 @@
397-# CONFIG_SITE
398-
399-# Make any application-specific changes to the EPICS build
400-# configuration variables in this file.
401-#
402-# Host/target specific settings can be specified in files named
403-# CONFIG_SITE.$(EPICS_HOST_ARCH).Common
404-# CONFIG_SITE.Common.$(T_A)
405-# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
406-
407-# CHECK_RELEASE controls the consistency checking of the support
408-# applications pointed to by the RELEASE* files.
409-# Normally CHECK_RELEASE should be set to YES.
410-# Set CHECK_RELEASE to NO to disable checking completely.
411-# Set CHECK_RELEASE to WARN to perform consistency checking but
412-# continue building even if conflicts are found.
413-CHECK_RELEASE = YES
414-
415-# Set this when you only want to compile this application
416-# for a subset of the cross-compiled target architectures
417-# that Base is built for.
418-#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
419-
420-# To install files into a location other than $(TOP) define
421-# INSTALL_LOCATION here.
422-#INSTALL_LOCATION=</absolute/path/to/install/top>
423-
424-# Set this when the IOC and build host use different paths
425-# to the install location. This may be needed to boot from
426-# a Microsoft FTP server say, or on some NFS configurations.
427-#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
428-
429-# For application debugging purposes, override the HOST_OPT and/
430-# or CROSS_OPT settings from base/configure/CONFIG_SITE
431-#HOST_OPT = NO
432-#CROSS_OPT = NO
433-
434-# These allow developers to override the CONFIG_SITE variable
435-# settings without having to modify the configure/CONFIG_SITE
436-# file itself.
437--include $(TOP)/../CONFIG_SITE.local
438--include $(TOP)/configure/CONFIG_SITE.local
439diff --git a/modules/ca/configure/Makefile b/modules/ca/configure/Makefile
440deleted file mode 100644
441index e2f3738..0000000
442--- a/modules/ca/configure/Makefile
443+++ /dev/null
444@@ -1,15 +0,0 @@
445-#*************************************************************************
446-# EPICS BASE is distributed subject to a Software License Agreement found
447-# in file LICENSE that is included with this distribution.
448-#*************************************************************************
449-TOP = ..
450-
451-include $(TOP)/configure/CONFIG
452-
453-TARGETS = $(CONFIG_TARGETS)
454-CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
455-
456-CFG += CONFIG_CA_MODULE
457-CFG += CONFIG_CA_VERSION
458-
459-include $(TOP)/configure/RULES
460diff --git a/modules/ca/configure/RELEASE b/modules/ca/configure/RELEASE
461deleted file mode 100644
462index a2d9f55..0000000
463--- a/modules/ca/configure/RELEASE
464+++ /dev/null
465@@ -1,39 +0,0 @@
466-# RELEASE - Location of external support modules
467-#
468-# IF YOU CHANGE ANY PATHS in this file or make API changes to
469-# any modules it refers to, you should do a "make rebuild" in
470-# this application's top level directory.
471-#
472-# The EPICS build process does not check dependencies against
473-# any files from outside the application, so it is safest to
474-# rebuild it completely if any modules it depends on change.
475-#
476-# Host- or target-specific settings can be given in files named
477-# RELEASE.$(EPICS_HOST_ARCH).Common
478-# RELEASE.Common.$(T_A)
479-# RELEASE.$(EPICS_HOST_ARCH).$(T_A)
480-#
481-# This file is parsed by both GNUmake and an EPICS Perl script,
482-# so it may ONLY contain definititions of paths to other support
483-# modules, variable definitions that are used in module paths,
484-# and include statements that pull in other RELEASE files.
485-# Variables may be used before their values have been set.
486-# Build variables that are NOT used in paths should be set in
487-# the CONFIG_SITE file.
488-
489-# Variables and paths to dependent modules:
490-#MODULES = /path/to/modules
491-#MYMODULE = $(MODULES)/my-module
492-
493-# If building the EPICS modules individually, set these:
494-#EPICS_LIBCOM = $(MODULES)/libcom-3.17.0
495-#EPICS_BASE = $(MODULES)/core-7.0.1
496-
497-# Set RULES here if you want to use build rules from elsewhere:
498-#RULES = $(MODULES)/build-rules
499-
500-# These lines allow developers to override these RELEASE settings
501-# without having to modify this file directly.
502--include $(TOP)/../RELEASE.local
503--include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
504--include $(TOP)/configure/RELEASE.local
505diff --git a/modules/ca/configure/RULES b/modules/ca/configure/RULES
506deleted file mode 100644
507index 6d56e14..0000000
508--- a/modules/ca/configure/RULES
509+++ /dev/null
510@@ -1,6 +0,0 @@
511-# RULES
512-
513-include $(CONFIG)/RULES
514-
515-# Library should be rebuilt because LIBOBJS may have changed.
516-$(LIBNAME): ../Makefile
517diff --git a/modules/ca/configure/RULES_DIRS b/modules/ca/configure/RULES_DIRS
518deleted file mode 100644
519index 3ba269d..0000000
520--- a/modules/ca/configure/RULES_DIRS
521+++ /dev/null
522@@ -1,2 +0,0 @@
523-#RULES_DIRS
524-include $(CONFIG)/RULES_DIRS
525diff --git a/modules/ca/configure/RULES_TOP b/modules/ca/configure/RULES_TOP
526deleted file mode 100644
527index 2b8cbc6..0000000
528--- a/modules/ca/configure/RULES_TOP
529+++ /dev/null
530@@ -1,2 +0,0 @@
531-#RULES_TOP
532-include $(CONFIG)/RULES_TOP
533diff --git a/modules/ca/src/Makefile b/modules/ca/src/Makefile
534index 650b355..335cec6 100644
535--- a/modules/ca/src/Makefile
536+++ b/modules/ca/src/Makefile
537@@ -7,7 +7,7 @@
538 # in the file LICENSE that is included with this distribution.
539 #*************************************************************************
540
541-TOP = ..
542+TOP = ../../..
543 include $(TOP)/configure/CONFIG
544
545 # Channel Access Client
546diff --git a/modules/ca/src/client/Makefile b/modules/ca/src/client/Makefile
547index c5fc5c4..cae6ee0 100644
548--- a/modules/ca/src/client/Makefile
549+++ b/modules/ca/src/client/Makefile
550@@ -6,8 +6,8 @@
551 # EPICS BASE is distributed subject to a Software License Agreement found
552 # in file LICENSE that is included with this distribution.
553 #*************************************************************************
554-
555-TOP = ../..
556+CURDIR := $(or $(dir $(lastword $(MAKEFILE_LIST))), .)
557+TOP = ../../../..
558
559 include $(TOP)/configure/CONFIG
560
561@@ -109,7 +109,7 @@ EXPAND += S99caRepeater@
562 EXPAND += caRepeater.service@
563 EXPAND_VARS = INSTALL_BIN=$(abspath $(INSTALL_BIN))
564
565-SRC_DIRS += $(TOP)/src/client/test
566+SRC_DIRS += $(CURDIR)/test
567 PROD_HOST += ca_test
568 ca_test_SRCS = ca_test_main.c ca_test.c
569 ca_test_LIBS = ca Com
570diff --git a/modules/ca/src/perl/Makefile b/modules/ca/src/perl/Makefile
571index 7890f34..65619e9 100644
572--- a/modules/ca/src/perl/Makefile
573+++ b/modules/ca/src/perl/Makefile
574@@ -5,7 +5,7 @@
575 # in file LICENSE that is included with this distribution.
576 #*************************************************************************
577
578-TOP = ../..
579+TOP = ../../../..
580 include $(TOP)/configure/CONFIG
581
582 ifdef T_A
583@@ -55,8 +55,6 @@ ifeq ($(findstring $(OS_CLASS),WIN32 cygwin32),) # Doesn't build on WIN32
584 PERL_MODULES += CA.pm
585 PERL_MODULES += $(PERL_ARCHPATH)/$(LOADABLE_SHRLIB_PREFIX)Cap5$(LOADABLE_SHRLIB_SUFFIX)
586
587- PERL_SCRIPTS += caModuleDirs.pm
588-
589 HTMLS_DIR = .
590 HTMLS = CA.html
591 endif
592diff --git a/modules/ca/src/perl/capr.pl b/modules/ca/src/perl/capr.pl
593index e551afc..21e56ec 100644
594--- a/modules/ca/src/perl/capr.pl
595+++ b/modules/ca/src/perl/capr.pl
596@@ -10,9 +10,7 @@
597 use strict;
598
599 use FindBin qw($Bin);
600-use lib ($Bin, "$Bin/../../lib/perl");
601-use caModuleDirs;
602-no lib $Bin;
603+use lib ("$Bin/../../lib/perl");
604
605 use Getopt::Std;
606 use EPICS::Path;
607diff --git a/modules/ca/src/template/Makefile b/modules/ca/src/template/Makefile
608index 913d92b..8683dfd 100644
609--- a/modules/ca/src/template/Makefile
610+++ b/modules/ca/src/template/Makefile
611@@ -1,4 +1,4 @@
612-TOP=../..
613+TOP=../../../..
614
615 include $(TOP)/configure/CONFIG
616
617diff --git a/modules/ca/src/tools/Makefile b/modules/ca/src/tools/Makefile
618index 7ebcc02..c56e21e 100644
619--- a/modules/ca/src/tools/Makefile
620+++ b/modules/ca/src/tools/Makefile
621@@ -9,7 +9,7 @@
622 # in file LICENSE that is included with this distribution.
623 #*************************************************************************
624
625-TOP = ../..
626+TOP = ../../../..
627
628 include $(TOP)/configure/CONFIG
629
630diff --git a/modules/database/.ci/travis-build.sh b/modules/database/.ci/travis-build.sh
631deleted file mode 100755
632index 622979b..0000000
633--- a/modules/database/.ci/travis-build.sh
634+++ /dev/null
635@@ -1,21 +0,0 @@
636-#!/bin/sh
637-set -e -x
638-
639-# set RTEMS to eg. "4.9" or "4.10"
640-# requires qemu, bison, flex, texinfo, install-info
641-if [ -n "$RTEMS" ]
642-then
643- # find local qemu-system-i386
644- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
645- echo -n "Using QEMU: "
646- type qemu-system-i386 || echo "Missing qemu"
647- EXTRA=RTEMS_QEMU_FIXUPS=YES
648-fi
649-
650-make -j2 $EXTRA
651-
652-if [ "$TEST" != "NO" ]
653-then
654- make -j2 tapfiles
655- make -s test-results
656-fi
657diff --git a/modules/database/.ci/travis-prepare.sh b/modules/database/.ci/travis-prepare.sh
658deleted file mode 100755
659index ce2c18b..0000000
660--- a/modules/database/.ci/travis-prepare.sh
661+++ /dev/null
662@@ -1,133 +0,0 @@
663-#!/bin/sh
664-set -e -x
665-
666-CURDIR="$PWD"
667-
668-QDIR="$HOME/.cache/qemu"
669-
670-if [ -n "$RTEMS" -a "$TEST" = "YES" ]
671-then
672- git clone --quiet --branch vme --depth 10 https://github.com/mdavidsaver/qemu.git "$HOME/.build/qemu"
673- cd "$HOME/.build/qemu"
674-
675- HEAD=`git log -n1 --pretty=format:%H`
676- echo "HEAD revision $HEAD"
677-
678- [ -e "$HOME/.cache/qemu/built" ] && BUILT=`cat "$HOME/.cache/qemu/built"`
679- echo "Cached revision $BUILT"
680-
681- if [ "$HEAD" != "$BUILT" ]
682- then
683- echo "Building QEMU"
684- git submodule --quiet update --init
685-
686- install -d "$HOME/.build/qemu/build"
687- cd "$HOME/.build/qemu/build"
688-
689- "$HOME/.build/qemu/configure" --prefix="$HOME/.cache/qemu/usr" --target-list=i386-softmmu --disable-werror
690- make -j2
691- make install
692-
693- echo "$HEAD" > "$HOME/.cache/qemu/built"
694- fi
695-fi
696-
697-cd "$CURDIR"
698-
699-cat << EOF > configure/RELEASE.local
700-EPICS_BASE=$HOME/.source/epics-base
701-EOF
702-
703-install -d "$HOME/.source"
704-cd "$HOME/.source"
705-
706-add_base_module() {
707- MODULE=$1
708- BRANCH=$2
709- ( cd epics-base/modules && \
710- git clone --quiet --depth 5 --branch "$MODULE"/"$BRANCH" https://github.com/${REPOBASE:-epics-base}/epics-base.git "$MODULE" && \
711- cd "$MODULE" && git log -n1 )
712-}
713-
714-git clone --quiet --depth 5 --branch core/"${BRCORE:-master}" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base
715-( cd epics-base && git log -n1 )
716-add_base_module libcom "${BRLIBCOM:-master}"
717-add_base_module ca "${BRCA:-master}"
718-
719-EPICS_HOST_ARCH=`sh epics-base/startup/EpicsHostArch`
720-
721-# requires wine and g++-mingw-w64-i686
722-if [ "$WINE" = "32" ]
723-then
724- echo "Cross mingw32"
725- sed -i -e '/CMPLR_PREFIX/d' epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
726- cat << EOF >> epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
727-CMPLR_PREFIX=i686-w64-mingw32-
728-EOF
729- cat << EOF >> epics-base/configure/CONFIG_SITE
730-CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
731-EOF
732-fi
733-
734-if [ "$STATIC" = "YES" ]
735-then
736- echo "Build static libraries/executables"
737- cat << EOF >> epics-base/configure/CONFIG_SITE
738-SHARED_LIBRARIES=NO
739-STATIC_BUILD=YES
740-EOF
741-fi
742-
743-case "$CMPLR" in
744-clang)
745- echo "Host compiler is clang"
746- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
747-GNU = NO
748-CMPLR_CLASS = clang
749-CC = clang
750-CCC = clang++
751-EOF
752-
753- # hack
754- sed -i -e 's/CMPLR_CLASS = gcc/CMPLR_CLASS = clang/' epics-base/configure/CONFIG.gnuCommon
755-
756- clang --version
757- ;;
758-*)
759- echo "Host compiler is default"
760- gcc --version
761- ;;
762-esac
763-
764-cat <<EOF >> epics-base/configure/CONFIG_SITE
765-USR_CPPFLAGS += $USR_CPPFLAGS
766-USR_CFLAGS += $USR_CFLAGS
767-USR_CXXFLAGS += $USR_CXXFLAGS
768-EOF
769-
770-# set RTEMS to eg. "4.9" or "4.10"
771-# requires qemu, bison, flex, texinfo, install-info
772-if [ -n "$RTEMS" ]
773-then
774- echo "Cross RTEMS${RTEMS} for pc386"
775- install -d /home/travis/.cache
776- curl -L "https://github.com/mdavidsaver/rsb/releases/download/travis-20160306-2/rtems${RTEMS}-i386-trusty-20190306-2.tar.gz" \
777- | tar -C /home/travis/.cache -xj
778-
779- sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' epics-base/configure/os/CONFIG_SITE.Common.RTEMS
780- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.RTEMS
781-RTEMS_VERSION=$RTEMS
782-RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386
783-EOF
784- cat << EOF >> epics-base/configure/CONFIG_SITE
785-CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386
786-EOF
787-
788- # find local qemu-system-i386
789- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
790- echo -n "Using QEMU: "
791- type qemu-system-i386 || echo "Missing qemu"
792- EXTRA=RTEMS_QEMU_FIXUPS=YES
793-fi
794-
795-make -j2 -C epics-base $EXTRA
796diff --git a/modules/database/.travis.yml b/modules/database/.travis.yml
797deleted file mode 100644
798index 127ae7b..0000000
799--- a/modules/database/.travis.yml
800+++ /dev/null
801@@ -1,26 +0,0 @@
802-sudo: false
803-dist: trusty
804-language: c
805-compiler:
806- - gcc
807-addons:
808- apt:
809- packages:
810- - libreadline6-dev
811- - libncurses5-dev
812- - perl
813- - clang
814- - g++-mingw-w64-i686
815-install:
816- - ./.ci/travis-prepare.sh
817-script:
818- - ./.ci/travis-build.sh
819-env:
820- - BRCORE=master BRLIBCOM=master BRCA=master
821- - CMPLR=clang
822- - USR_CXXFLAGS=-std=c++11
823- - CMPLR=clang USR_CXXFLAGS=-std=c++11
824- - WINE=32 TEST=NO STATIC=YES
825- - WINE=32 TEST=NO STATIC=NO
826- - RTEMS=4.10 TEST=NO
827- - RTEMS=4.9 TEST=NO
828diff --git a/modules/database/Makefile b/modules/database/Makefile
829index 9998e6c..9bb746e 100644
830--- a/modules/database/Makefile
831+++ b/modules/database/Makefile
832@@ -7,11 +7,10 @@
833 # in file LICENSE that is included with this distribution.
834 #*************************************************************************
835
836-TOP = .
837+TOP = ../..
838 include $(TOP)/configure/CONFIG
839
840-DIRS += configure src
841-src_DEPEND_DIRS = configure
842+DIRS += src
843
844 DIRS += test
845 test_DEPEND_DIRS = src
846diff --git a/modules/database/configure/CONFIG b/modules/database/configure/CONFIG
847deleted file mode 100644
848index c471407..0000000
849--- a/modules/database/configure/CONFIG
850+++ /dev/null
851@@ -1,36 +0,0 @@
852-# CONFIG - Load build configuration data
853-#
854-# Do not make changes to this file!
855-
856-# Allow user to override where the build rules come from
857-RULES = $(EPICS_BASE)
858-
859-# RELEASE files point to other application tops
860-include $(TOP)/configure/RELEASE
861--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
862-ifdef T_A
863--include $(TOP)/configure/RELEASE.Common.$(T_A)
864--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
865-endif
866-
867-BUILDING_DATABASE = DEFINED
868-
869-CONFIG = $(RULES)/configure
870-include $(CONFIG)/CONFIG
871-
872-# Override the Base definition:
873-INSTALL_LOCATION = $(TOP)
874-
875-# Use new RSET definition
876-BASE_CPPFLAGS += -DUSE_TYPED_RSET
877-
878-# Shared library ABI version.
879-SHRLIB_VERSION = $(EPICS_DATABASE_MAJOR_VERSION).$(EPICS_DATABASE_MINOR_VERSION).$(EPICS_DATABASE_MAINTENANCE_VERSION)
880-
881-# CONFIG_SITE files contain other build configuration settings
882-include $(TOP)/configure/CONFIG_SITE
883--include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
884-ifdef T_A
885- -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
886- -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
887-endif
888diff --git a/modules/database/configure/CONFIG_SITE b/modules/database/configure/CONFIG_SITE
889deleted file mode 100644
890index d78c7f5..0000000
891--- a/modules/database/configure/CONFIG_SITE
892+++ /dev/null
893@@ -1,42 +0,0 @@
894-# CONFIG_SITE
895-
896-# Make any application-specific changes to the EPICS build
897-# configuration variables in this file.
898-#
899-# Host/target specific settings can be specified in files named
900-# CONFIG_SITE.$(EPICS_HOST_ARCH).Common
901-# CONFIG_SITE.Common.$(T_A)
902-# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
903-
904-# CHECK_RELEASE controls the consistency checking of the support
905-# applications pointed to by the RELEASE* files.
906-# Normally CHECK_RELEASE should be set to YES.
907-# Set CHECK_RELEASE to NO to disable checking completely.
908-# Set CHECK_RELEASE to WARN to perform consistency checking but
909-# continue building even if conflicts are found.
910-CHECK_RELEASE = YES
911-
912-# Set this when you only want to compile this application
913-# for a subset of the cross-compiled target architectures
914-# that Base is built for.
915-#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
916-
917-# To install files into a location other than $(TOP) define
918-# INSTALL_LOCATION here.
919-#INSTALL_LOCATION=</absolute/path/to/install/top>
920-
921-# Set this when the IOC and build host use different paths
922-# to the install location. This may be needed to boot from
923-# a Microsoft FTP server say, or on some NFS configurations.
924-#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
925-
926-# For application debugging purposes, override the HOST_OPT and/
927-# or CROSS_OPT settings from base/configure/CONFIG_SITE
928-#HOST_OPT = NO
929-#CROSS_OPT = NO
930-
931-# These allow developers to override the CONFIG_SITE variable
932-# settings without having to modify the configure/CONFIG_SITE
933-# file itself.
934--include $(TOP)/../CONFIG_SITE.local
935--include $(TOP)/configure/CONFIG_SITE.local
936diff --git a/modules/database/configure/Makefile b/modules/database/configure/Makefile
937deleted file mode 100644
938index dd29209..0000000
939--- a/modules/database/configure/Makefile
940+++ /dev/null
941@@ -1,15 +0,0 @@
942-#*************************************************************************
943-# EPICS BASE is distributed subject to a Software License Agreement found
944-# in file LICENSE that is included with this distribution.
945-#*************************************************************************
946-TOP = ..
947-
948-include $(TOP)/configure/CONFIG
949-
950-TARGETS = $(CONFIG_TARGETS)
951-CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
952-
953-CFG += CONFIG_DATABASE_MODULE
954-CFG += CONFIG_DATABASE_VERSION
955-
956-include $(TOP)/configure/RULES
957diff --git a/modules/database/configure/RELEASE b/modules/database/configure/RELEASE
958deleted file mode 100644
959index 9b685a1..0000000
960--- a/modules/database/configure/RELEASE
961+++ /dev/null
962@@ -1,40 +0,0 @@
963-# RELEASE - Location of external support modules
964-#
965-# IF YOU CHANGE ANY PATHS in this file or make API changes to
966-# any modules it refers to, you should do a "make rebuild" in
967-# this application's top level directory.
968-#
969-# The EPICS build process does not check dependencies against
970-# any files from outside the application, so it is safest to
971-# rebuild it completely if any modules it depends on change.
972-#
973-# Host- or target-specific settings can be given in files named
974-# RELEASE.$(EPICS_HOST_ARCH).Common
975-# RELEASE.Common.$(T_A)
976-# RELEASE.$(EPICS_HOST_ARCH).$(T_A)
977-#
978-# This file is parsed by both GNUmake and an EPICS Perl script,
979-# so it may ONLY contain definititions of paths to other support
980-# modules, variable definitions that are used in module paths,
981-# and include statements that pull in other RELEASE files.
982-# Variables may be used before their values have been set.
983-# Build variables that are NOT used in paths should be set in
984-# the CONFIG_SITE file.
985-
986-# Variables and paths to dependent modules:
987-#MODULES = /path/to/modules
988-#MYMODULE = $(MODULES)/my-module
989-
990-# If building the EPICS modules individually, set these:
991-#EPICS_CA = $(MODULES)/ca-4.13.1
992-#EPICS_LIBCOM = $(MODULES)/libcom-3.17.0
993-#EPICS_BASE = $(MODULES)/core-7.0.1
994-
995-# Set RULES here if you want to use build rules from elsewhere:
996-#RULES = $(MODULES)/build-rules
997-
998-# These lines allow developers to override these RELEASE settings
999-# without having to modify this file directly.
1000--include $(TOP)/../RELEASE.local
1001--include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
1002--include $(TOP)/configure/RELEASE.local
1003diff --git a/modules/database/configure/RULES b/modules/database/configure/RULES
1004deleted file mode 100644
1005index 6d56e14..0000000
1006--- a/modules/database/configure/RULES
1007+++ /dev/null
1008@@ -1,6 +0,0 @@
1009-# RULES
1010-
1011-include $(CONFIG)/RULES
1012-
1013-# Library should be rebuilt because LIBOBJS may have changed.
1014-$(LIBNAME): ../Makefile
1015diff --git a/modules/database/configure/RULES.ioc b/modules/database/configure/RULES.ioc
1016deleted file mode 100644
1017index 901987c..0000000
1018--- a/modules/database/configure/RULES.ioc
1019+++ /dev/null
1020@@ -1,2 +0,0 @@
1021-#RULES.ioc
1022-include $(CONFIG)/RULES.ioc
1023diff --git a/modules/database/configure/RULES_DIRS b/modules/database/configure/RULES_DIRS
1024deleted file mode 100644
1025index 3ba269d..0000000
1026--- a/modules/database/configure/RULES_DIRS
1027+++ /dev/null
1028@@ -1,2 +0,0 @@
1029-#RULES_DIRS
1030-include $(CONFIG)/RULES_DIRS
1031diff --git a/modules/database/configure/RULES_TOP b/modules/database/configure/RULES_TOP
1032deleted file mode 100644
1033index 2b8cbc6..0000000
1034--- a/modules/database/configure/RULES_TOP
1035+++ /dev/null
1036@@ -1,2 +0,0 @@
1037-#RULES_TOP
1038-include $(CONFIG)/RULES_TOP
1039diff --git a/modules/database/src/Makefile b/modules/database/src/Makefile
1040index dfd1d3b..0cc46fa 100644
1041--- a/modules/database/src/Makefile
1042+++ b/modules/database/src/Makefile
1043@@ -7,7 +7,7 @@
1044 # in the file LICENSE that is included with this distribution.
1045 #*************************************************************************
1046
1047-TOP = ..
1048+TOP = ../../..
1049 include $(TOP)/configure/CONFIG
1050
1051 # PDB Tools
1052diff --git a/modules/database/src/ioc/Makefile b/modules/database/src/ioc/Makefile
1053index 3258728..9ff0040 100644
1054--- a/modules/database/src/ioc/Makefile
1055+++ b/modules/database/src/ioc/Makefile
1056@@ -6,12 +6,14 @@
1057 # EPICS BASE is distributed subject to a Software License Agreement found
1058 # in file LICENSE that is included with this distribution.
1059 #*************************************************************************
1060-TOP=../..
1061+IOCDIR := $(or $(dir $(lastword $(MAKEFILE_LIST))), .)
1062+TOP=../../../..
1063
1064 include $(TOP)/configure/CONFIG
1065
1066-SRC = $(TOP)/src
1067-IOCDIR = $(SRC)/ioc
1068+USR_CPPFLAGS += -DUSE_TYPED_RSET
1069+
1070+SHRLIB_VERSION = 3.17.0
1071
1072 LIBRARY_IOC += dbCore
1073 dbCore_LIBS += ca Com
1074diff --git a/modules/database/src/std/Makefile b/modules/database/src/std/Makefile
1075index 20a8658..2434bf0 100644
1076--- a/modules/database/src/std/Makefile
1077+++ b/modules/database/src/std/Makefile
1078@@ -6,11 +6,13 @@
1079 # EPICS BASE is distributed subject to a Software License Agreement found
1080 # in file LICENSE that is included with this distribution.
1081 #*************************************************************************
1082-
1083-TOP = ../..
1084+STDDIR := $(or $(dir $(lastword $(MAKEFILE_LIST))), .)
1085+TOP = ../../../..
1086 include $(TOP)/configure/CONFIG
1087
1088-STDDIR=$(TOP)/src/std
1089+USR_CPPFLAGS += -DUSE_TYPED_RSET
1090+
1091+SHRLIB_VERSION = 3.17.0
1092
1093 LIBRARY_IOC += dbRecStd
1094 dbRecStd_LIBS = dbCore ca Com
1095diff --git a/modules/database/src/template/Makefile b/modules/database/src/template/Makefile
1096index 6259b6f..8dfc6c6 100644
1097--- a/modules/database/src/template/Makefile
1098+++ b/modules/database/src/template/Makefile
1099@@ -1,4 +1,4 @@
1100-TOP=../..
1101+TOP=../../../..
1102
1103 include $(TOP)/configure/CONFIG
1104
1105diff --git a/modules/database/src/tools/Makefile b/modules/database/src/tools/Makefile
1106index e19c0c5..f54ab9c 100644
1107--- a/modules/database/src/tools/Makefile
1108+++ b/modules/database/src/tools/Makefile
1109@@ -4,7 +4,7 @@
1110 # EPICS BASE is distributed subject to a Software License Agreement found
1111 # in file LICENSE that is included with this distribution.
1112 #*************************************************************************
1113-TOP=../..
1114+TOP=../../../..
1115
1116 include $(TOP)/configure/CONFIG
1117
1118@@ -27,8 +27,6 @@ PERL_MODULES += DBD/Variable.pm
1119 PERL_MODULES += EPICS/IOC.pm
1120 HTMLS += EPICS/IOC.html
1121
1122-PERL_SCRIPTS += databaseModuleDirs.pm
1123-
1124 PERL_SCRIPTS += makeIncludeDbd.pl
1125
1126 PERL_SCRIPTS += dbdToMenuH.pl
1127diff --git a/modules/database/src/tools/dbExpand.pl b/modules/database/src/tools/dbExpand.pl
1128index 25cab26..6596e43 100644
1129--- a/modules/database/src/tools/dbExpand.pl
1130+++ b/modules/database/src/tools/dbExpand.pl
1131@@ -12,9 +12,7 @@
1132 use strict;
1133
1134 use FindBin qw($Bin);
1135-use lib ($Bin, "$Bin/../../lib/perl");
1136-use databaseModuleDirs;
1137-no lib $Bin;
1138+use lib ("$Bin/../../lib/perl");
1139
1140 use DBD;
1141 use DBD::Parser;
1142diff --git a/modules/database/src/tools/dbdExpand.pl b/modules/database/src/tools/dbdExpand.pl
1143index a87ef47..74e81eb 100644
1144--- a/modules/database/src/tools/dbdExpand.pl
1145+++ b/modules/database/src/tools/dbdExpand.pl
1146@@ -10,9 +10,7 @@
1147 use strict;
1148
1149 use FindBin qw($Bin);
1150-use lib ($Bin, "$Bin/../../lib/perl");
1151-use databaseModuleDirs;
1152-no lib $Bin;
1153+use lib ("$Bin/../../lib/perl");
1154
1155 use DBD;
1156 use DBD::Parser;
1157diff --git a/modules/database/src/tools/dbdReport.pl b/modules/database/src/tools/dbdReport.pl
1158index 0d4c854..3f2269d 100644
1159--- a/modules/database/src/tools/dbdReport.pl
1160+++ b/modules/database/src/tools/dbdReport.pl
1161@@ -8,9 +8,7 @@
1162 #*************************************************************************
1163
1164 use FindBin qw($Bin);
1165-use lib ($Bin, "$Bin/../../lib/perl");
1166-use databaseModuleDirs;
1167-no lib $Bin;
1168+use lib ("$Bin/../../lib/perl");
1169
1170 use DBD;
1171 use DBD::Parser;
1172diff --git a/modules/database/src/tools/dbdToHtml.pl b/modules/database/src/tools/dbdToHtml.pl
1173index e9711f7..66d46f9 100644
1174--- a/modules/database/src/tools/dbdToHtml.pl
1175+++ b/modules/database/src/tools/dbdToHtml.pl
1176@@ -10,9 +10,7 @@
1177 use strict;
1178
1179 use FindBin qw($Bin);
1180-use lib ($Bin, "$Bin/../../lib/perl");
1181-use databaseModuleDirs;
1182-no lib $Bin;
1183+use lib ("$Bin/../../lib/perl");
1184
1185 use DBD;
1186 use DBD::Parser;
1187diff --git a/modules/database/src/tools/dbdToMenuH.pl b/modules/database/src/tools/dbdToMenuH.pl
1188index ac4345b..76aff7d 100644
1189--- a/modules/database/src/tools/dbdToMenuH.pl
1190+++ b/modules/database/src/tools/dbdToMenuH.pl
1191@@ -8,9 +8,7 @@
1192 #*************************************************************************
1193
1194 use FindBin qw($Bin);
1195-use lib ($Bin, "$Bin/../../lib/perl");
1196-use databaseModuleDirs;
1197-no lib $Bin;
1198+use lib ("$Bin/../../lib/perl");
1199
1200 use EPICS::Getopts;
1201 use File::Basename;
1202diff --git a/modules/database/src/tools/dbdToRecordtypeH.pl b/modules/database/src/tools/dbdToRecordtypeH.pl
1203index b1eb77d..891b5b5 100644
1204--- a/modules/database/src/tools/dbdToRecordtypeH.pl
1205+++ b/modules/database/src/tools/dbdToRecordtypeH.pl
1206@@ -8,9 +8,7 @@
1207 #*************************************************************************
1208
1209 use FindBin qw($Bin);
1210-use lib ($Bin, "$Bin/../../lib/perl");
1211-use databaseModuleDirs;
1212-no lib $Bin;
1213+use lib ("$Bin/../../lib/perl");
1214
1215 use EPICS::Getopts;
1216 use File::Basename;
1217diff --git a/modules/database/src/tools/registerRecordDeviceDriver.pl b/modules/database/src/tools/registerRecordDeviceDriver.pl
1218index 02bb9b7..acbcc51 100644
1219--- a/modules/database/src/tools/registerRecordDeviceDriver.pl
1220+++ b/modules/database/src/tools/registerRecordDeviceDriver.pl
1221@@ -12,9 +12,7 @@
1222 use strict;
1223
1224 use FindBin qw($Bin);
1225-use lib ($Bin, "$Bin/../../lib/perl");
1226-use databaseModuleDirs;
1227-no lib $Bin;
1228+use lib ("$Bin/../../lib/perl");
1229
1230 use DBD;
1231 use DBD::Parser;
1232diff --git a/modules/database/test/Makefile b/modules/database/test/Makefile
1233index 0f2c642..b54d017 100644
1234--- a/modules/database/test/Makefile
1235+++ b/modules/database/test/Makefile
1236@@ -7,7 +7,7 @@
1237 # in file LICENSE that is included with this distribution.
1238 #*************************************************************************
1239
1240-TOP = ..
1241+TOP = ../../..
1242 include $(TOP)/configure/CONFIG
1243
1244 DIRS += ioc/db
1245diff --git a/modules/database/test/ioc/db/Makefile b/modules/database/test/ioc/db/Makefile
1246index e1f06cd..ee2ab76 100644
1247--- a/modules/database/test/ioc/db/Makefile
1248+++ b/modules/database/test/ioc/db/Makefile
1249@@ -6,12 +6,13 @@
1250 # EPICS BASE is distributed subject to a Software License Agreement found
1251 # in the file LICENSE that is included with this distribution.
1252 #*************************************************************************
1253-
1254-TOP = ../../..
1255+CURDIR := $(or $(dir $(lastword $(MAKEFILE_LIST))), .)
1256+TOP = ../../../../..
1257 include $(TOP)/configure/CONFIG
1258
1259 # Allow access to private headers in db/
1260-USR_CPPFLAGS = -I $(TOP)/src/ioc/db
1261+USR_CPPFLAGS += -I $(CURDIR)/../../../src/ioc/db
1262+USR_CPPFLAGS += -DUSE_TYPED_RSET
1263
1264 TESTLIBRARY = dbTestIoc
1265
1266diff --git a/modules/database/test/ioc/dbtemplate/Makefile b/modules/database/test/ioc/dbtemplate/Makefile
1267index 4442a4f..dbb13f3 100644
1268--- a/modules/database/test/ioc/dbtemplate/Makefile
1269+++ b/modules/database/test/ioc/dbtemplate/Makefile
1270@@ -5,7 +5,7 @@
1271 # in the file LICENSE that is included with this distribution.
1272 #*************************************************************************
1273
1274-TOP = ../../..
1275+TOP = ../../../../..
1276
1277 include $(TOP)/configure/CONFIG
1278
1279diff --git a/modules/database/test/std/filters/Makefile b/modules/database/test/std/filters/Makefile
1280index 718b8d5..c95e108 100644
1281--- a/modules/database/test/std/filters/Makefile
1282+++ b/modules/database/test/std/filters/Makefile
1283@@ -7,10 +7,12 @@
1284 # in the file LICENSE that is included with this distribution.
1285 #*************************************************************************
1286
1287-TOP = ../../..
1288+TOP = ../../../../..
1289
1290 include $(TOP)/configure/CONFIG
1291
1292+USR_CPPFLAGS += -DUSE_TYPED_RSET
1293+
1294 TESTLIBRARY = Recs
1295
1296 Recs_SRCS += xRecord.c
1297diff --git a/modules/database/test/std/link/Makefile b/modules/database/test/std/link/Makefile
1298index 8540cdf..2563fd5 100644
1299--- a/modules/database/test/std/link/Makefile
1300+++ b/modules/database/test/std/link/Makefile
1301@@ -4,10 +4,12 @@
1302 # EPICS BASE is distributed subject to a Software License Agreement found
1303 # in the file LICENSE that is included with this distribution.
1304 #*************************************************************************
1305-TOP=../../..
1306+TOP=../../../../..
1307
1308 include $(TOP)/configure/CONFIG
1309
1310+USR_CPPFLAGS += -DUSE_TYPED_RSET
1311+
1312 TESTLIBRARY = Recs
1313
1314 Recs_SRCS += ioRecord.c
1315diff --git a/modules/database/test/std/rec/Makefile b/modules/database/test/std/rec/Makefile
1316index 185c2c0..8720875 100644
1317--- a/modules/database/test/std/rec/Makefile
1318+++ b/modules/database/test/std/rec/Makefile
1319@@ -7,9 +7,11 @@
1320 # in the file LICENSE that is included with this distribution.
1321 #*************************************************************************
1322
1323-TOP = ../../..
1324+TOP = ../../../../..
1325 include $(TOP)/configure/CONFIG
1326
1327+USR_CPPFLAGS += -DUSE_TYPED_RSET
1328+
1329 TESTLIBRARY = dbRecStdTest
1330
1331 dbRecStdTest_SRCS += asTestLib.c
1332diff --git a/modules/database/test/tools/Makefile b/modules/database/test/tools/Makefile
1333index ac7f420..2dd045e 100644
1334--- a/modules/database/test/tools/Makefile
1335+++ b/modules/database/test/tools/Makefile
1336@@ -5,7 +5,7 @@
1337 # in the file LICENSE that is included with this distribution.
1338 #*************************************************************************
1339
1340-TOP = ../..
1341+TOP = ../../../..
1342 include $(TOP)/configure/CONFIG
1343
1344
1345diff --git a/modules/libcom/.ci/travis-build.sh b/modules/libcom/.ci/travis-build.sh
1346deleted file mode 100755
1347index 622979b..0000000
1348--- a/modules/libcom/.ci/travis-build.sh
1349+++ /dev/null
1350@@ -1,21 +0,0 @@
1351-#!/bin/sh
1352-set -e -x
1353-
1354-# set RTEMS to eg. "4.9" or "4.10"
1355-# requires qemu, bison, flex, texinfo, install-info
1356-if [ -n "$RTEMS" ]
1357-then
1358- # find local qemu-system-i386
1359- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
1360- echo -n "Using QEMU: "
1361- type qemu-system-i386 || echo "Missing qemu"
1362- EXTRA=RTEMS_QEMU_FIXUPS=YES
1363-fi
1364-
1365-make -j2 $EXTRA
1366-
1367-if [ "$TEST" != "NO" ]
1368-then
1369- make -j2 tapfiles
1370- make -s test-results
1371-fi
1372diff --git a/modules/libcom/.ci/travis-prepare.sh b/modules/libcom/.ci/travis-prepare.sh
1373deleted file mode 100755
1374index 9a4d237..0000000
1375--- a/modules/libcom/.ci/travis-prepare.sh
1376+++ /dev/null
1377@@ -1,123 +0,0 @@
1378-#!/bin/sh
1379-set -e -x
1380-
1381-CURDIR="$PWD"
1382-
1383-QDIR="$HOME/.cache/qemu"
1384-
1385-if [ -n "$RTEMS" -a "$TEST" = "YES" ]
1386-then
1387- git clone --quiet --branch vme --depth 10 https://github.com/mdavidsaver/qemu.git "$HOME/.build/qemu"
1388- cd "$HOME/.build/qemu"
1389-
1390- HEAD=`git log -n1 --pretty=format:%H`
1391- echo "HEAD revision $HEAD"
1392-
1393- [ -e "$HOME/.cache/qemu/built" ] && BUILT=`cat "$HOME/.cache/qemu/built"`
1394- echo "Cached revision $BUILT"
1395-
1396- if [ "$HEAD" != "$BUILT" ]
1397- then
1398- echo "Building QEMU"
1399- git submodule --quiet update --init
1400-
1401- install -d "$HOME/.build/qemu/build"
1402- cd "$HOME/.build/qemu/build"
1403-
1404- "$HOME/.build/qemu/configure" --prefix="$HOME/.cache/qemu/usr" --target-list=i386-softmmu --disable-werror
1405- make -j2
1406- make install
1407-
1408- echo "$HEAD" > "$HOME/.cache/qemu/built"
1409- fi
1410-fi
1411-
1412-cd "$CURDIR"
1413-
1414-cat << EOF > configure/RELEASE.local
1415-EPICS_BASE=$HOME/.source/epics-base
1416-EOF
1417-
1418-install -d "$HOME/.source"
1419-cd "$HOME/.source"
1420-
1421-git clone --quiet --depth 5 --branch core/"${BRCORE:-master}" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base
1422-(cd epics-base && git log -n1 )
1423-
1424-EPICS_HOST_ARCH=`sh epics-base/startup/EpicsHostArch`
1425-
1426-# requires wine and g++-mingw-w64-i686
1427-if [ "$WINE" = "32" ]
1428-then
1429- echo "Cross mingw32"
1430- sed -i -e '/CMPLR_PREFIX/d' epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
1431- cat << EOF >> epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
1432-CMPLR_PREFIX=i686-w64-mingw32-
1433-EOF
1434- cat << EOF >> epics-base/configure/CONFIG_SITE
1435-CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
1436-EOF
1437-fi
1438-
1439-if [ "$STATIC" = "YES" ]
1440-then
1441- echo "Build static libraries/executables"
1442- cat << EOF >> epics-base/configure/CONFIG_SITE
1443-SHARED_LIBRARIES=NO
1444-STATIC_BUILD=YES
1445-EOF
1446-fi
1447-
1448-case "$CMPLR" in
1449-clang)
1450- echo "Host compiler is clang"
1451- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
1452-GNU = NO
1453-CMPLR_CLASS = clang
1454-CC = clang
1455-CCC = clang++
1456-EOF
1457-
1458- # hack
1459- sed -i -e 's/CMPLR_CLASS = gcc/CMPLR_CLASS = clang/' epics-base/configure/CONFIG.gnuCommon
1460-
1461- clang --version
1462- ;;
1463-*)
1464- echo "Host compiler is default"
1465- gcc --version
1466- ;;
1467-esac
1468-
1469-cat <<EOF >> epics-base/configure/CONFIG_SITE
1470-USR_CPPFLAGS += $USR_CPPFLAGS
1471-USR_CFLAGS += $USR_CFLAGS
1472-USR_CXXFLAGS += $USR_CXXFLAGS
1473-EOF
1474-
1475-# set RTEMS to eg. "4.9" or "4.10"
1476-# requires qemu, bison, flex, texinfo, install-info
1477-if [ -n "$RTEMS" ]
1478-then
1479- echo "Cross RTEMS${RTEMS} for pc386"
1480- install -d /home/travis/.cache
1481- curl -L "https://github.com/mdavidsaver/rsb/releases/download/travis-20160306-2/rtems${RTEMS}-i386-trusty-20190306-2.tar.gz" \
1482- | tar -C /home/travis/.cache -xj
1483-
1484- sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' epics-base/configure/os/CONFIG_SITE.Common.RTEMS
1485- cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.RTEMS
1486-RTEMS_VERSION=$RTEMS
1487-RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386
1488-EOF
1489- cat << EOF >> epics-base/configure/CONFIG_SITE
1490-CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386
1491-EOF
1492-
1493- # find local qemu-system-i386
1494- export PATH="$HOME/.cache/qemu/usr/bin:$PATH"
1495- echo -n "Using QEMU: "
1496- type qemu-system-i386 || echo "Missing qemu"
1497- EXTRA=RTEMS_QEMU_FIXUPS=YES
1498-fi
1499-
1500-make -j2 -C epics-base $EXTRA
1501diff --git a/modules/libcom/.travis.yml b/modules/libcom/.travis.yml
1502deleted file mode 100644
1503index 8b1e2ab..0000000
1504--- a/modules/libcom/.travis.yml
1505+++ /dev/null
1506@@ -1,26 +0,0 @@
1507-sudo: false
1508-dist: trusty
1509-language: c
1510-compiler:
1511- - gcc
1512-addons:
1513- apt:
1514- packages:
1515- - libreadline6-dev
1516- - libncurses5-dev
1517- - perl
1518- - clang
1519- - g++-mingw-w64-i686
1520-install:
1521- - ./.ci/travis-prepare.sh
1522-script:
1523- - ./.ci/travis-build.sh
1524-env:
1525- - BRCORE=master
1526- - CMPLR=clang
1527- - USR_CXXFLAGS=-std=c++11
1528- - CMPLR=clang USR_CXXFLAGS=-std=c++11
1529- - WINE=32 TEST=NO STATIC=YES
1530- - WINE=32 TEST=NO STATIC=NO
1531- - RTEMS=4.10 TEST=NO
1532- - RTEMS=4.9 TEST=NO
1533diff --git a/modules/libcom/Makefile b/modules/libcom/Makefile
1534index 442a6f7..5a03a43 100644
1535--- a/modules/libcom/Makefile
1536+++ b/modules/libcom/Makefile
1537@@ -7,11 +7,10 @@
1538 # in file LICENSE that is included with this distribution.
1539 #*************************************************************************
1540
1541-TOP = .
1542+TOP = ../..
1543 include $(TOP)/configure/CONFIG
1544
1545-DIRS += configure src
1546-src_DEPEND_DIRS = configure
1547+DIRS += src
1548
1549 DIRS += RTEMS
1550 RTEMS_DEPEND_DIRS = src
1551@@ -22,4 +21,4 @@ vxWorks_DEPEND_DIRS = src
1552 DIRS += test
1553 test_DEPEND_DIRS = RTEMS vxWorks
1554
1555-include $(TOP)/configure/RULES_TOP
1556+include $(TOP)/configure/RULES_DIRS
1557diff --git a/modules/libcom/RTEMS/Makefile b/modules/libcom/RTEMS/Makefile
1558index 311c250..b46889d 100644
1559--- a/modules/libcom/RTEMS/Makefile
1560+++ b/modules/libcom/RTEMS/Makefile
1561@@ -7,7 +7,7 @@
1562 # in file LICENSE that is included with this distribution.
1563 #*************************************************************************
1564
1565-TOP = ..
1566+TOP = ../../..
1567 include $(TOP)/configure/CONFIG
1568 include $(TOP)/configure/CONFIG_LIBCOM_VERSION
1569
1570diff --git a/modules/libcom/configure/CONFIG b/modules/libcom/configure/CONFIG
1571deleted file mode 100644
1572index 774ed25..0000000
1573--- a/modules/libcom/configure/CONFIG
1574+++ /dev/null
1575@@ -1,44 +0,0 @@
1576-# CONFIG - Load build configuration data
1577-#
1578-# Do not make changes to this file!
1579-
1580-ifeq ($(strip $(EPICS_HOST_ARCH)),)
1581- $(warning EPICS_HOST_ARCH is not set.)
1582-endif
1583-
1584-# Allow user to override where the build rules come from
1585-RULES = $(EPICS_BASE)
1586-
1587-# RELEASE files point to other application tops
1588-include $(TOP)/configure/RELEASE
1589--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
1590-ifdef T_A
1591--include $(TOP)/configure/RELEASE.Common.$(T_A)
1592--include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
1593-endif
1594-
1595-ifeq ($(strip $(RULES)),)
1596- ifeq ($(strip $(EPICS_BASE)),)
1597- $(warning Build error: EPICS_BASE not set after including RELEASE files.)
1598- else
1599- $(warning Build error: EPICS_BASE set but RULES variable empty.)
1600- endif
1601- $(error Makefiles loaded: $(MAKEFILE_LIST))
1602- # Die before the include of $(CONFIG)/CONFIG below does
1603-endif
1604-
1605-BUILDING_LIBCOM = DEFINED
1606-
1607-CONFIG = $(RULES)/configure
1608-include $(CONFIG)/CONFIG
1609-
1610-# Override the Base definition:
1611-INSTALL_LOCATION = $(TOP)
1612-
1613-# CONFIG_SITE files contain other build configuration settings
1614-include $(TOP)/configure/CONFIG_SITE
1615--include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
1616-ifdef T_A
1617- -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
1618- -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
1619-endif
1620diff --git a/modules/libcom/configure/CONFIG_SITE b/modules/libcom/configure/CONFIG_SITE
1621deleted file mode 100644
1622index d78c7f5..0000000
1623--- a/modules/libcom/configure/CONFIG_SITE
1624+++ /dev/null
1625@@ -1,42 +0,0 @@
1626-# CONFIG_SITE
1627-
1628-# Make any application-specific changes to the EPICS build
1629-# configuration variables in this file.
1630-#
1631-# Host/target specific settings can be specified in files named
1632-# CONFIG_SITE.$(EPICS_HOST_ARCH).Common
1633-# CONFIG_SITE.Common.$(T_A)
1634-# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
1635-
1636-# CHECK_RELEASE controls the consistency checking of the support
1637-# applications pointed to by the RELEASE* files.
1638-# Normally CHECK_RELEASE should be set to YES.
1639-# Set CHECK_RELEASE to NO to disable checking completely.
1640-# Set CHECK_RELEASE to WARN to perform consistency checking but
1641-# continue building even if conflicts are found.
1642-CHECK_RELEASE = YES
1643-
1644-# Set this when you only want to compile this application
1645-# for a subset of the cross-compiled target architectures
1646-# that Base is built for.
1647-#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
1648-
1649-# To install files into a location other than $(TOP) define
1650-# INSTALL_LOCATION here.
1651-#INSTALL_LOCATION=</absolute/path/to/install/top>
1652-
1653-# Set this when the IOC and build host use different paths
1654-# to the install location. This may be needed to boot from
1655-# a Microsoft FTP server say, or on some NFS configurations.
1656-#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
1657-
1658-# For application debugging purposes, override the HOST_OPT and/
1659-# or CROSS_OPT settings from base/configure/CONFIG_SITE
1660-#HOST_OPT = NO
1661-#CROSS_OPT = NO
1662-
1663-# These allow developers to override the CONFIG_SITE variable
1664-# settings without having to modify the configure/CONFIG_SITE
1665-# file itself.
1666--include $(TOP)/../CONFIG_SITE.local
1667--include $(TOP)/configure/CONFIG_SITE.local
1668diff --git a/modules/libcom/configure/Makefile b/modules/libcom/configure/Makefile
1669deleted file mode 100644
1670index 85a7b58..0000000
1671--- a/modules/libcom/configure/Makefile
1672+++ /dev/null
1673@@ -1,15 +0,0 @@
1674-#*************************************************************************
1675-# EPICS BASE is distributed subject to a Software License Agreement found
1676-# in file LICENSE that is included with this distribution.
1677-#*************************************************************************
1678-TOP = ..
1679-
1680-include $(TOP)/configure/CONFIG
1681-
1682-TARGETS = $(CONFIG_TARGETS)
1683-CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
1684-
1685-CFG += CONFIG_LIBCOM_MODULE
1686-CFG += CONFIG_LIBCOM_VERSION
1687-
1688-include $(TOP)/configure/RULES
1689diff --git a/modules/libcom/configure/RELEASE b/modules/libcom/configure/RELEASE
1690deleted file mode 100644
1691index 819b441..0000000
1692--- a/modules/libcom/configure/RELEASE
1693+++ /dev/null
1694@@ -1,38 +0,0 @@
1695-# RELEASE - Location of external support modules
1696-#
1697-# IF YOU CHANGE ANY PATHS in this file or make API changes to
1698-# any modules it refers to, you should do a "make rebuild" in
1699-# this application's top level directory.
1700-#
1701-# The EPICS build process does not check dependencies against
1702-# any files from outside the application, so it is safest to
1703-# rebuild it completely if any modules it depends on change.
1704-#
1705-# Host- or target-specific settings can be given in files named
1706-# RELEASE.$(EPICS_HOST_ARCH).Common
1707-# RELEASE.Common.$(T_A)
1708-# RELEASE.$(EPICS_HOST_ARCH).$(T_A)
1709-#
1710-# This file is parsed by both GNUmake and an EPICS Perl script,
1711-# so it may ONLY contain definititions of paths to other support
1712-# modules, variable definitions that are used in module paths,
1713-# and include statements that pull in other RELEASE files.
1714-# Variables may be used before their values have been set.
1715-# Build variables that are NOT used in paths should be set in
1716-# the CONFIG_SITE file.
1717-
1718-# Variables and paths to dependent modules:
1719-#MODULES = /path/to/modules
1720-#MYMODULE = $(MODULES)/my-module
1721-
1722-# If building the EPICS modules individually, set these:
1723-#EPICS_BASE = $(MODULES)/core-7.0.1
1724-
1725-# Set RULES here if you want to use build rules from elsewhere:
1726-#RULES = $(MODULES)/build-rules
1727-
1728-# These lines allow developers to override these RELEASE settings
1729-# without having to modify this file directly.
1730--include $(TOP)/../RELEASE.local
1731--include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
1732--include $(TOP)/configure/RELEASE.local
1733diff --git a/modules/libcom/configure/RULES b/modules/libcom/configure/RULES
1734deleted file mode 100644
1735index 6d56e14..0000000
1736--- a/modules/libcom/configure/RULES
1737+++ /dev/null
1738@@ -1,6 +0,0 @@
1739-# RULES
1740-
1741-include $(CONFIG)/RULES
1742-
1743-# Library should be rebuilt because LIBOBJS may have changed.
1744-$(LIBNAME): ../Makefile
1745diff --git a/modules/libcom/configure/RULES_DIRS b/modules/libcom/configure/RULES_DIRS
1746deleted file mode 100644
1747index 3ba269d..0000000
1748--- a/modules/libcom/configure/RULES_DIRS
1749+++ /dev/null
1750@@ -1,2 +0,0 @@
1751-#RULES_DIRS
1752-include $(CONFIG)/RULES_DIRS
1753diff --git a/modules/libcom/configure/RULES_TOP b/modules/libcom/configure/RULES_TOP
1754deleted file mode 100644
1755index 2b8cbc6..0000000
1756--- a/modules/libcom/configure/RULES_TOP
1757+++ /dev/null
1758@@ -1,2 +0,0 @@
1759-#RULES_TOP
1760-include $(CONFIG)/RULES_TOP
1761diff --git a/modules/libcom/src/Makefile b/modules/libcom/src/Makefile
1762index d61b268..4a1c61e 100644
1763--- a/modules/libcom/src/Makefile
1764+++ b/modules/libcom/src/Makefile
1765@@ -6,15 +6,13 @@
1766 # EPICS BASE is distributed subject to a Software License Agreement found
1767 # in file LICENSE that is included with this distribution.
1768 #*************************************************************************
1769-
1770-TOP = ..
1771+LIBCOM := $(or $(dir $(lastword $(MAKEFILE_LIST))), .)
1772+TOP = ../../..
1773 include $(TOP)/configure/CONFIG
1774
1775 # Uncomment this to remove the (benign) valgrind helper stubs
1776 #USR_CFLAGS += -DNVALGRIND
1777
1778-LIBCOM = $(TOP)/src
1779-
1780 INC += valgrind/valgrind.h
1781
1782 INC += libComVersion.h
1783diff --git a/modules/libcom/src/env/Makefile b/modules/libcom/src/env/Makefile
1784index 804426b..94322a2 100644
1785--- a/modules/libcom/src/env/Makefile
1786+++ b/modules/libcom/src/env/Makefile
1787@@ -12,7 +12,6 @@ SRC_DIRS += $(LIBCOM)/env
1788 vpath %.pl $(USR_VPATH) $(SRC_DIRS)
1789
1790 PERL_SCRIPTS += bldEnvData.pl
1791-PERL_SCRIPTS += libcomModuleDirs.pm
1792
1793 INC += envDefs.h
1794
1795diff --git a/modules/libcom/src/env/RULES b/modules/libcom/src/env/RULES
1796index 02df6aa..5ef766d 100644
1797--- a/modules/libcom/src/env/RULES
1798+++ b/modules/libcom/src/env/RULES
1799@@ -8,7 +8,7 @@
1800 # This is a Makefile fragment, see src/libCom/Makefile.
1801
1802 envData.c: $(LIBCOM)/env/envDefs.h \
1803- $(INSTALL_HOST_BIN)/bldEnvData.pl $(INSTALL_HOST_BIN)/libcomModuleDirs.pm \
1804+ $(INSTALL_HOST_BIN)/bldEnvData.pl \
1805 $(CONFIG)/CONFIG_ENV $(CONFIG)/CONFIG_SITE_ENV \
1806 $(wildcard $(CONFIG)/os/CONFIG_SITE_ENV.$(T_A))
1807 $(PERL) $(INSTALL_HOST_BIN)/bldEnvData.pl $(QUIET_FLAG) -t $(T_A) \
1808diff --git a/modules/libcom/src/env/bldEnvData.pl b/modules/libcom/src/env/bldEnvData.pl
1809index e3c21b7..693be65 100644
1810--- a/modules/libcom/src/env/bldEnvData.pl
1811+++ b/modules/libcom/src/env/bldEnvData.pl
1812@@ -14,9 +14,7 @@
1813 use strict;
1814
1815 use FindBin qw($Bin);
1816-use lib ($Bin, "$Bin/../../lib/perl");
1817-use libcomModuleDirs;
1818-no lib $Bin;
1819+use lib ("$Bin/../../lib/perl");
1820
1821 use Getopt::Std;
1822 use File::Basename;
1823diff --git a/modules/libcom/test/Makefile b/modules/libcom/test/Makefile
1824index c8680e3..e90c6bc 100755
1825--- a/modules/libcom/test/Makefile
1826+++ b/modules/libcom/test/Makefile
1827@@ -7,7 +7,7 @@
1828 # in file LICENSE that is included with this distribution.
1829 #*************************************************************************
1830
1831-TOP = ..
1832+TOP = ../../..
1833 include $(TOP)/configure/CONFIG
1834
1835 PROD_LIBS += Com
1836diff --git a/modules/libcom/vxWorks/Makefile b/modules/libcom/vxWorks/Makefile
1837index e2c0b5d..3eced3b 100644
1838--- a/modules/libcom/vxWorks/Makefile
1839+++ b/modules/libcom/vxWorks/Makefile
1840@@ -5,7 +5,7 @@
1841 # in file LICENSE that is included with this distribution.
1842 #*************************************************************************
1843
1844-TOP = ..
1845+TOP = ../../..
1846 include $(TOP)/configure/CONFIG
1847
1848 # Install Boost smart_ptr headers needed by VxWorks 6.x
1849diff --git a/src/template/base/makeBaseApp.pl b/src/template/base/makeBaseApp.pl
1850index d6da8ad..0421f00 100644
1851--- a/src/template/base/makeBaseApp.pl
1852+++ b/src/template/base/makeBaseApp.pl
1853@@ -3,7 +3,7 @@
1854 # Authors: Ralph Lange, Marty Kraimer, Andrew Johnson and Janet Anderson
1855
1856 use FindBin qw($Bin);
1857-use lib ("$Bin/../../lib/perl", $Bin);
1858+use lib ("$Bin/../../lib/perl");
1859
1860 use Cwd;
1861 use Getopt::Std;
1862diff --git a/src/tools/convertRelease.pl b/src/tools/convertRelease.pl
1863index a5a1a77..2533784 100644
1864--- a/src/tools/convertRelease.pl
1865+++ b/src/tools/convertRelease.pl
1866@@ -19,7 +19,7 @@ use Getopt::Std;
1867 $Getopt::Std::STANDARD_HELP_VERSION = 1;
1868
1869 use FindBin qw($Bin);
1870-use lib ("$Bin/../../lib/perl", $Bin);
1871+use lib ("$Bin/../../lib/perl");
1872
1873 use EPICS::Path;
1874 use EPICS::Release;
1875diff --git a/src/tools/expandVars.pl b/src/tools/expandVars.pl
1876index 01e65fb..855aca3 100644
1877--- a/src/tools/expandVars.pl
1878+++ b/src/tools/expandVars.pl
1879@@ -10,7 +10,7 @@
1880 use strict;
1881
1882 use FindBin qw($Bin);
1883-use lib ("$Bin/../../lib/perl", $Bin);
1884+use lib ("$Bin/../../lib/perl");
1885
1886 use EPICS::Getopts;
1887 use EPICS::Path;
1888diff --git a/src/tools/fullPathName.pl b/src/tools/fullPathName.pl
1889index c8ac49a..20ef6d2 100644
1890--- a/src/tools/fullPathName.pl
1891+++ b/src/tools/fullPathName.pl
1892@@ -17,7 +17,7 @@ use Getopt::Std;
1893 $Getopt::Std::STANDARD_HELP_VERSION = 1;
1894
1895 use FindBin qw($Bin);
1896-use lib ("$Bin/../../lib/perl", $Bin);
1897+use lib ("$Bin/../../lib/perl");
1898
1899 use EPICS::Path;
1900

Subscribers

People subscribed via source and target branches