Skip to content

Commit ae5449d

Browse files
committed
Merge bundleJava project into EpicsCoreJava
2 parents 7aeb271 + 39d8493 commit ae5449d

9 files changed

Lines changed: 833 additions & 0 deletions

File tree

bundleJava/.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
target/
2+
pom.xml.tag
3+
pom.xml.releaseBackup
4+
pom.xml.versionsBackup
5+
pom.xml.next
6+
release.properties
7+
dependency-reduced-pom.xml
8+
buildNumber.properties
9+
.mvn/timing.properties
10+
nbactions.xml

bundleJava/LICENSE.txt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
Copyright and License Terms
2+
---------------------------
3+
4+
Copyright (c) 2006-2016 Martin R. Kraimer
5+
Copyright (c) 2006-2016 UChicago Argonne LLC, as Operator of Argonne
6+
National Laboratory.
7+
Copyright (c) 2006 Deutsches Elektronen-Synchrotron,
8+
Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
9+
Copyright (c) 2007-2016 Control System Laboratory,
10+
(COSYLAB) Ljubljana Slovenia
11+
Copyright (c) 2010-2016 Brookhaven Science Associates, as Operator
12+
of Brookhaven National Laboratory
13+
Copyright (c) 2011-2016 Diamond Light Source Limited,
14+
(DLS) Didcot, United Kingdom
15+
16+
Permission is hereby granted, free of charge, to any person
17+
obtaining a copy of this software and associated documentation
18+
files (the "Software"), to deal in the Software without
19+
restriction, including without limitation the rights to use,
20+
copy, modify, merge, publish, distribute, sublicense, and/or sell
21+
copies of the Software, and to permit persons to whom the
22+
Software is furnished to do so, subject to the following
23+
conditions:
24+
25+
The above copyright notice and this permission notice shall be
26+
included in all copies or substantial portions of the Software.
27+
28+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
30+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
32+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
33+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
35+
OTHER DEALINGS IN THE SOFTWARE.
36+
37+
________________________________________________________________________
38+
39+
Additional Disclaimers
40+
----------------------
41+
42+
This software is copyright in part by these institutions:
43+
44+
* Brookhaven Science Associates, as Operator of Brookhaven
45+
National Laboratory, New York, USA
46+
* Control System Laboratory, Ljubljana, Slovenia
47+
* Deutsches Elektronen-Synchroton, Member of the Helmholtz
48+
Association, Hamburg, Germany
49+
* Diamond Light Source Limited, Didcot, United Kingdom
50+
* Helmholtz-Zentrum Berlin fuer Materialien und Energie m.b.H.,
51+
Berlin, Germany.
52+
* UChicage Argonne LLC, as Operator of Argonne National Laboratory,
53+
Illinois, USA
54+
55+
In no event shall these institutions be liable to any party for direct,
56+
indirect, special, incidental, or consequential damages arising out of
57+
the use of this software, its documentation, or any derivatives thereof,
58+
even if advised of the possibility of such damage.
59+
60+
These institutions specifically disclaim any warranties, including, but
61+
not limited to, the implied warranties of merchantability, fitness for a
62+
particular purpose, and non-infringement. This software is provided on
63+
an "as is" basis, and these institutions have no obligation to provide
64+
maintenance, support, updates, enhancements, or modifications.

bundleJava/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# bundleJava
2+
This Maven project downloads all modules of an EPICS V4 distribution (Java parts)
3+
and all dependencies outside of the standard Java installation.
4+
5+
It then creates a gnu-zipped tar file containing all EPICS V4 jars (binaries, sources and Javadoc) in its
6+
root directory (carrying the release name), and all external dependencies (binaries) in the "lib" subdirectory.
7+
8+
This project is intended to be run on a Jenkins based CI infrastructure.
9+
To correctly name the dependencies, it relies on a parent pom (ev4-java-bundle.xml) that is created running the
10+
script jenkins_bundle found in the jenkins directory.
11+
12+
To be able to "build" this project locally, you have to run that script in the top directory of your workspace first.

bundleJava/bundled_files/README.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
2+
EPICS VERSION 4 JAVA IMPLEMENTATION README
3+
==========================================
4+
5+
This README is a guide to the build of the Java implementation of EPICS Version 4.
6+
7+
Status: This README is up-to-date with respect to release v4.5.0.1 of EPICS
8+
Version 4.
9+
10+
Auth:
11+
Greg White, SLAC, 28-Oct-2015
12+
13+
Mod:
14+
Dave Hickin, Diamond, 01-Feb-2016
15+
Update for 4.5.0.1.
16+
17+
18+
Prerequisites
19+
-------------
20+
21+
The EPICS V4 Java bundle requires recent versions of the following software:
22+
23+
1. Java SDK v1.7 (Java 7)
24+
25+
Note that support for Channel Access operations through the pvAccess API
26+
"Channel Provider" interface is provided by CAJ and JCA, which are bundled
27+
in the EPICS-Java tar.
28+
29+
Build
30+
-----
31+
32+
The tar file distribution of the Java implementation of EPICS v4.5.0.1
33+
contains the jar files of Java executables, sources and documentation, for
34+
all the software modules of the EPICS v4.
35+
Therefore, simply untar the distribution tar file.
36+
37+
tar xvfz EPICS-Java-4.5.0.1.tar.gz [if you got it compressed]
38+
tar xvf EPICS-Java-4.5.0.1.tar [if you got it uncompressed]
39+
40+
41+
Further information
42+
-------------------
43+
44+
For the individual modules, consult the documentation in each one. In
45+
particular:
46+
47+
* README.md
48+
* RELEASE_VERSIONS.md
49+
* The documentation directory
50+
51+
For more information visit the
52+
[EPICS V4 website](http://epics-pvdata.sourceforge.net).
53+
54+
In particular:
55+
56+
* [Getting started guide](http://epics-pvdata.sourceforge.net/gettingStarted.html) -
57+
for detailed build instructions and where to go next.
58+
* [Developer guide](http://epics-pvdata.sourceforge.net/informative/developerGuide/developerGuide.html) -
59+
currently under development.
60+
* [Documentation page](http://epics-pvdata.sourceforge.net/literature.html) -
61+
Overview documents and doxygen for the various modules.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
4.5.0.1 (2016/02/05)
2+
====================
3+
4+
The main change since release 4.5.0 is:
5+
6+
pvDataJava (5.0.3)
7+
------------------
8+
9+
* Fixed buffer overflow in PVUnion.serialize() (issue #5)
10+
11+
The versions of the other modules and their dependencies have been updated,
12+
but are otherwise unchanged.
13+
14+
See individual RELEASE_NOTES.md in each module for more.
15+
16+
17+
4.5.0 (2015/10/16)
18+
==================
19+
20+
The following are the MAIN changes to the EPICS v4 software suite, since release 4.4.0. See individual RELEASE_NOTES.md in each module for more.
21+
22+
pvDataJava (5.0.2)
23+
------------------
24+
* New template versions of Structure::getField
25+
* Printing of structure and union arrays modified
26+
* minStep field added to Control
27+
* Changes to access specifiers in Display and PVDisplay
28+
29+
30+
pvAccessJava (4.1.2)
31+
--------------------
32+
* Async RPC service.
33+
34+
35+
pvDatabaseJava (4.1.2)
36+
---------------------
37+
This is the first release of pvDatabaseJava, an EPICS V4 record/database framework for providing services over pvAccess.
38+
39+
40+
normativeTypesJava (0.1.2)
41+
--------------------------
42+
This is the first release of normativeTypesJava.
43+
44+
* This release provides support through wrapper classes and builders for the
45+
following Normative Types:
46+
* NTScalar
47+
* NTScalarArray
48+
* NTEnum
49+
* NTMatrix
50+
* NTURI
51+
* NTNameValue
52+
* NTTable
53+
* NTAttribute
54+
* NTMultiChannel
55+
* NTNDArray
56+
* NTContinuum
57+
* NTHistogram
58+
* NTAggregate
59+
* NTUnion
60+
* NTScalarMultiChannel
61+
62+
* Release 0.1 therefore implements fully the
63+
[16 Mar 2015 version](http://epics-pvdata.sourceforge.net/alpha/normativeTypes/normativeTypes_20150316.html)
64+
of the normativeTypes specification.
65+
* Each type has a builder and a class for testing compatibility and wrapping
66+
existing structures.
67+
* Utility classes NTField and NTPVField for standard structure fields and
68+
NTUtils and NTID for type IDs.
69+
* Unit tests for all the implemented types and other classes, providing
70+
extensive coverage for all the Normative Types (except NTNDArray).
71+
72+
73+
pvaClientJava (4.1.3)
74+
--------------------
75+
pvaClientJava is the successor to easyPVAJava, a synchronous API for pvAccess.
76+
77+
* pvaClient uses exceptions to report most problem instead
78+
of requiring the client to call status methods.
79+
80+
81+
easyPVAJava (4.1.2)
82+
--------------------
83+
84+
* EasyPVA automatically starts ChannelProvider for both Channel Access and pvAccess.
85+
* EasyMultiChannel is now implemented
86+
* Support for monitors is now available both for EasyChannel and EasyMultiChannel.
87+
88+
89+
directoryService (0.4.2)
90+
-----------------------
91+
92+
(No significant changes)
93+
94+
95+
exampleJava (4.0.5)
96+
------------------
97+
98+
(No significant changes)
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# EPICS V4 Java implementation - bundleJava project
2+
# Jenkins @ Cloudbees maven bundle job
3+
#
4+
# Jenkins invokes scripts with the "-ex" option. So the build is considered a failure
5+
# if any of the commands exits with a non-zero exit code.
6+
#
7+
# Author: Ralph Lange <Ralph.Lange@gmx.de>
8+
# Copyright (C) 2015 ITER Organization.
9+
# All rights reserved. Use is subject to license terms.
10+
11+
function usage {
12+
echo "
13+
cloudbees_bundle creates config/pom.xml with dependencies
14+
to allow maven based bundling of an EPICS V4 Java release.
15+
16+
Usage:
17+
18+
cloudbees_bundle -n <releaseName>
19+
20+
-h Print this help
21+
-n <releaseNumber> The number identifying the release. This is the
22+
key suffix used to search RELEASE_VERSIONS to find the
23+
modules in the release.
24+
"
25+
}
26+
27+
thisdir=${PWD}
28+
function Exit {
29+
cd ${thisdir}
30+
exit $1
31+
}
32+
33+
declare -a modulesa
34+
35+
###########################################
36+
# Get command line args
37+
38+
releaseNumber=4.4.1
39+
40+
while getopts hu:n: opt; do
41+
case "$opt" in
42+
h) usage; Exit 0 ;;
43+
n) releaseNumber=${OPTARG} ;;
44+
*) echo "Unknown Argument, see cloudbees_bundle -h"; Exit 1;;
45+
esac
46+
done
47+
shift $((OPTIND-1));
48+
49+
releaseName=EPICS-Java-${releaseNumber}
50+
51+
parentPom=config/pom.xml
52+
parentPomDir=$( dirname "$parentPom" )
53+
54+
###########################################
55+
# Fetch the version file
56+
57+
if [ -e RELEASE_VERSIONS ]; then
58+
rm -rf RELEASE_VERSIONS
59+
fi
60+
wget -nv https://raw.githubusercontent.com/epics-base/pvDataWWW/master/scripts/RELEASE_VERSIONS
61+
62+
file=${PWD}/RELEASE_VERSIONS
63+
release_versions_pathname=$( readlink -f "$( dirname "$file" )" )/$( basename "$file" )
64+
65+
if [ ! -f ${release_versions_pathname} ]; then
66+
echo "Failed to locate the release versions file ${release_versions_pathname}"
67+
Exit 6
68+
fi
69+
70+
###########################################
71+
# Read repos and versions from the version file
72+
73+
modulesa=(`awk -v relname=${releaseName} 'BEGIN {relname="^" relname "$"} $1 ~ relname {print $2}' < $release_versions_pathname`)
74+
75+
# Check we got at least one module
76+
if [ ${#modulesa[@]} -lt 1 ]; then
77+
echo "Failed to find modules for release ${releaseName}"
78+
Exit 7
79+
fi
80+
81+
echo ${releaseName} is composed of ${modulesa[*]}
82+
83+
echo "Creating ${parentPom}"
84+
rm -fr links
85+
mkdir -p links
86+
mkdir -p "$parentPomDir"
87+
rm -fr ${parentPom}
88+
echo "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"
89+
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
90+
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0
91+
http://maven.apache.org/xsd/maven-4.0.0.xsd\">
92+
<modelVersion>4.0.0</modelVersion>
93+
94+
<groupId>org.epics</groupId>
95+
<artifactId>ev4-java-bundle</artifactId>
96+
<version>1.1</version>
97+
<packaging>pom</packaging>
98+
99+
<properties>
100+
<bundleVersion>${releaseName}</bundleVersion>
101+
</properties>
102+
<dependencies>" >${parentPom}
103+
104+
for modulei in ${modulesa[*]}
105+
do
106+
tag=`awk -v relname=${releaseName} -v modulename=${modulei} \
107+
'BEGIN {relname="^" relname "$"} $1 ~ relname && $2 ~ modulename {print $3}' < $release_versions_pathname`
108+
109+
if [ $? -ne 0 ]; then
110+
echo "Could not get module version for ${modulei}, exiting"
111+
Exit 8
112+
fi
113+
114+
echo Adding ${modulei} ${tag} to ${releaseName} definition
115+
116+
echo "
117+
<dependency>
118+
<groupId>\${project.groupId}</groupId>
119+
<artifactId>${modulei}</artifactId>
120+
<version>${tag}</version>
121+
</dependency>
122+
<dependency>
123+
<groupId>\${project.groupId}</groupId>
124+
<artifactId>${modulei}</artifactId>
125+
<version>${tag}</version>
126+
<classifier>javadoc</classifier>
127+
</dependency>
128+
<dependency>
129+
<groupId>\${project.groupId}</groupId>
130+
<artifactId>${modulei}</artifactId>
131+
<version>${tag}</version>
132+
<classifier>sources</classifier>
133+
</dependency>" >>${parentPom}
134+
135+
ln -s ../${modulei}/${tag} links/${modulei}
136+
done
137+
138+
echo "
139+
</dependencies>
140+
</project>" >> ${parentPom}

0 commit comments

Comments
 (0)