diff --git a/build/README.md b/build/README.md
new file mode 100644
index 0000000000..aaa9955ac2
--- /dev/null
+++ b/build/README.md
@@ -0,0 +1,65 @@
+# Unidata AWIPS Build Notes
+
+## Build the AWIPS Development Environment Docker Container
+
+* https://hub.docker.com/r/unidata/awips-ade/tags/
+
+We create and use the Docker image unidata/awips-ade to build the two RHEL binary distributions of AWIPS (RPMS). The directory **awips2-builds/build/awips-ade/** contains Dockerfiles for 64-bit EL6 and EL7 CentOS.
+
+ ./build/awips-ade/docker_build.sh ${os_version}
+
+where **${os_version}** is either *el6* or *el7*.
+
+ADE Docker images will be named with the latest major release (17.1.1) and OS version
+
+ docker images
+ REPOSITORY TAG IMAGE ID CREATED SIZE
+ unidata/awips-ade 17.1.1-el6 77ea90df5919 16 min ago 4.13GB
+ unidata/awips-ade 17.1.1-el7 f030be21eda9 23 min ago 3.95GB
+
+## Build AWIPS RPMs
+
+Build individual AWIPS RPMs with the command
+
+ ./build/setup.sh el7 ${rpm_name}
+
+for example:
+
+ ./build/setup.sh el7 awips2-java
+ ./build/setup.sh el7 awips2-python
+ ./build/setup.sh el7 awips2-postgresql
+
+You can also build group aliases:
+
+ ./build/setup.sh el7 buildEDEX
+ ./build/setup.sh el7 buildCAVE
+ ./build/setup.sh el7 buildLocalization
+ ./build/setup.sh el7 buildShapefiles
+
+
+Finally, if no program name is given (e.g. `./build/setup.sh el7`), then ALL AWIPS RPMs and groups will be built, in order:
+
+ su - awips -c "/bin/bash $buildsh -ade"
+ su - awips -c "/bin/bash $buildsh -python"
+ su - awips -c "/bin/bash $buildsh -qpid"
+ su - awips -c "/bin/bash $buildsh -server"
+ su - awips -c "/bin/bash $buildsh -database"
+ su - awips -c "/bin/bash $buildsh -edex"
+ su - awips -c "/bin/bash $buildsh -httpd"
+ su - awips -c "/bin/bash $buildsh -cave"
+
+(See `./build/build_rpms.sh` and `./rpms/build/x86_64/rpms.sh` for more insight.)
+
+## Yum Repository
+
+AWIPS RPMs are written to the directories `./dist/el6-dev/` and `./dist/el7-dev/`, and are packaged as a YUM repository with the commands
+
+ repomanage -k1 --old dist/${os_version}-dev | xargs rm -e
+ createrepo -g ../comps.xml dist/${os_version}-dev
+
+Optionally, you can push the repo to your webserver with the command
+
+ rsync --archive --delete dist/${os_version}-dev ${USER}@{WEBSERVER}:{$REMOTE_DIR}
+
+
+
diff --git a/build/awips-ade/Dockerfile.awips-ade.el6 b/build/awips-ade/Dockerfile.awips-ade.el6
index 476cb4b030..100cb12f30 100644
--- a/build/awips-ade/Dockerfile.awips-ade.el6
+++ b/build/awips-ade/Dockerfile.awips-ade.el6
@@ -16,7 +16,7 @@ RUN yum clean all -y
ENV systemDeps="wget rsync git net-tools"
ENV rpmDeps="gcc gcc-c++ rpm-build readline-devel createrepo"
ENV qpidDeps="boost-devel cmake make ruby libuuid-devel"
-ENV pythonDeps="tk-devel tcl-devel atlas-devel compat-libf2c-34 libgfortran geos libpng-devel freetype"
+ENV pythonDeps="tk-devel tcl-devel atlas-devel compat-libf2c-34 libgfortran geos-devel libpng-devel freetype"
ENV awipsDeps="netcdf netcdf-devel hdf5-devel lzo-devel bzip2-devel qt-devel"
ENV httpDeps="autoconf findutils libselinux-devel libxml2-devel lua-devel openldap-devel openssl-devel pcre-devel pkgconfig perl zlib-devel apr-util-devel apr-devel"
diff --git a/build/awips-ade/Dockerfile.awips-ade.el7 b/build/awips-ade/Dockerfile.awips-ade.el7
index 1d49db923a..7b99b676d1 100644
--- a/build/awips-ade/Dockerfile.awips-ade.el7
+++ b/build/awips-ade/Dockerfile.awips-ade.el7
@@ -16,7 +16,7 @@ RUN yum clean all -y
ENV systemDeps="wget rsync git net-tools"
ENV rpmDeps="gcc gcc-c++ rpm-build readline-devel createrepo"
ENV qpidDeps="boost-devel cmake make ruby libuuid-devel"
-ENV pythonDeps="tk-devel tcl-devel atlas-devel compat-libf2c-34 libgfortran geos libpng-devel freetype"
+ENV pythonDeps="tk-devel tcl-devel atlas-devel compat-libf2c-34 libgfortran geos-devel libpng-devel freetype"
ENV awipsDeps="netcdf netcdf-devel hdf5-devel lzo-devel bzip2-devel qt-devel"
ENV httpDeps="autoconf findutils libselinux-devel libxml2-devel lua-devel openldap-devel openssl-devel pcre-devel pkgconfig perl zlib-devel apr-util-devel apr-devel"
diff --git a/build/build_rpms.sh b/build/build_rpms.sh
index 7c63a71e6c..4fe8ae9cbd 100755
--- a/build/build_rpms.sh
+++ b/build/build_rpms.sh
@@ -1,6 +1,6 @@
#!/bin/sh -xe
#
-# Build Unidata AWIPS RPMs from source
+# Build Unidata AWIPS RPMs from source
# Author: mjames@ucar.edu
#
@@ -9,7 +9,7 @@
# RPM name is optional (see below)
#
os_version=$1
-rpm=$2
+rpmname=$2
if [ -z "$os_version" ]; then
echo "supply os_version (el6, el7)"
@@ -24,17 +24,17 @@ buildsh=$REPO/awips2-builds/build/build.sh
pushd $REPO
#
-# If local source directories, exist, mount them to the
+# If local source directories, exist, mount them to the
# container, otherwise clone the repo from github
#
-if [ ! -d awips2-ncep ]; then git clone https://github.com/Unidata/awips2-ncep.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-goesr ]; then git clone https://github.com/Unidata/awips2-goesr.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-unidata ]; then git clone https://github.com/Unidata/awips2-unidata.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-core ]; then git clone https://github.com/Unidata/awips2-core.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-core-foss ]; then git clone https://github.com/Unidata/awips2-core-foss.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-foss ]; then git clone https://github.com/Unidata/awips2-foss.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-nws ]; then git clone https://github.com/Unidata/awips2-nws.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
-if [ ! -d awips2-rpm ]; then git clone https://github.com/Unidata/awips2-rpm.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-ncep ]; then git clone https://github.com/Unidata/awips2-ncep.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-goesr ]; then git clone https://github.com/Unidata/awips2-goesr.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-unidata ]; then git clone https://github.com/Unidata/awips2-unidata.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-core ]; then git clone https://github.com/Unidata/awips2-core.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-core-foss ]; then git clone https://github.com/Unidata/awips2-core-foss.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-foss ]; then git clone https://github.com/Unidata/awips2-foss.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-nws ]; then git clone https://github.com/Unidata/awips2-nws.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
+if [ ! -d awips2-rpm ]; then git clone https://github.com/Unidata/awips2-rpm.git --branch unidata_${AWIPSII_VERSION} --single-branch ;fi
#
# AWIPS Static files are too large to host on github
@@ -46,24 +46,22 @@ if [ ! -d awips2-static ]; then
tar -xvf static.tar
rm -rf static.tar
fi
-
-#
+#
# If RPM name is given
#
-if [ ! -z "$rpm" ]; then
+if [ ! -z "$rpmname" ]; then
- frst="$(echo $rpm | head -c 1)"
+ frst="$(echo $rpmname | head -c 1)"
if [[ "$frst" = "-" ]]; then
# If first character is a dash, then a build group alias was given
- su - awips -c "/bin/bash $buildsh $rpm"
+ su - awips -c "/bin/bash $buildsh $rpmname"
else
- su - awips -c "/bin/bash $buildsh -b $rpm"
+ su - awips -c "/bin/bash $buildsh -b $rpmname"
fi
else
-
- # If RPM name is not given
- # Build all groups (in this order)
+
+ # If RPM name is not given build all groups in this order
su - awips -c "/bin/bash $buildsh -ade"
su - awips -c "/bin/bash $buildsh -python"
su - awips -c "/bin/bash $buildsh -qpid"
@@ -75,10 +73,11 @@ else
fi
-# Manage RPMs
+# Move RPMs to awips2-builds/dist
if [ "$(ls -A ${JENKINS_HOME}/build/rpms/awips2_${AWIPSII_VERSION}/x86_64/)" ]; then
mv ${JENKINS_HOME}/build/rpms/awips2_${AWIPSII_VERSION}/x86_64/* /awips2/repo/awips2-builds/dist/${os_version}-dev/x86_64/
fi
if [ "$(ls -A ${JENKINS_HOME}/build/rpms/awips2_${AWIPSII_VERSION}/noarch/)" ]; then
mv ${JENKINS_HOME}/build/rpms/awips2_${AWIPSII_VERSION}/noarch/* /awips2/repo/awips2-builds/dist/${os_version}-dev/noarch/
fi
+
diff --git a/build/setup.sh b/build/setup.sh
index 2e57c7b027..bb6ea59c17 100755
--- a/build/setup.sh
+++ b/build/setup.sh
@@ -1,12 +1,23 @@
#!/bin/sh -xe
+#
+# Unidata AWIPS Build Setup Script
+# Author: mjames@ucar.edu
+#
+
+#
+# Require el6 or el7 be specified
+#
if [ -z "$1" ]; then
echo "supply type (el6, el7)"
exit
fi
os_version=$1
+rpmname=$2
builds_dir=" -v `pwd`:/awips2/repo/awips2-builds:rw "
-# if repos exist locally, mount rather than clone (see build_rpms.sh)
+#
+# If local source directories, exist, mount them to the container
+#
if [ -d /awips2/repo/awips2-static ]; then static_dir=" -v /awips2/repo/awips2-static:/awips2/repo/awips2-static " ;fi
if [ -d /awips2/repo/awips2-rpm ]; then rpm_dir=" -v /awips2/repo/awips2-rpm:/awips2/repo/awips2-rpm " ;fi
if [ -d /awips2/repo/awips2-core ]; then core_dir=" -v /awips2/repo/awips2-core:/awips2/repo/awips2-core " ;fi
@@ -19,17 +30,27 @@ if [ -d /awips2/repo/awips2-unidata ]; then upc_dir=" -v /awips2/repo/awips
if [ -d /awips2/repo/python-awips ]; then python_dir=" -v /awips2/repo/python-awips:/awips2/repo/python-awips " ;fi
dirs=$builds_dir$static_dir$rpm_dir$core_dir$corefoss_dir$foss_dir$nws_dir$ncep_dir$goesr_dir$upc_dir$python_dir
-# run
-sudo docker run --entrypoint=/bin/bash --privileged -d -ti -e "container=docker" $dirs unidata/awips-ade:17.1.1-$os_version
+#
+# Run Docker AWIPS ADE Image
+#
+imgname=unidata/awips-ade
+imgvers=17.1.1
+sudo docker run --entrypoint=/bin/bash --privileged -d -ti -e "container=docker" $dirs $imgname:$imgvers-$os_version
dockerID=$(sudo docker ps | grep awips-ade | awk '{print $1}' | head -1 )
sudo docker logs $dockerID
-sudo docker exec -ti $dockerID /bin/bash -xec "/awips2/repo/awips2-builds/build/build_rpms.sh $os_version $2";
+sudo docker exec -ti $dockerID /bin/bash -xec "/awips2/repo/awips2-builds/build/build_rpms.sh $os_version $rpmname";
sudo docker stop $dockerID
sudo docker rm -v $dockerID
+#
+# Update/Recreate YUM Repository
+#
if [[ $(whoami) == "mjames" ]]; then # local build
sudo chown -R mjames:ustaff dist/${os_version}-dev
repomanage -k1 --old dist/${os_version}-dev | xargs rm -f
- createrepo -g ../../build/comps.xml dist/${os_version}-dev
+ createrepo -g ../comps.xml dist/${os_version}-dev
+ #
+ # Push to web server
+ #
rsync --archive --delete dist/${os_version}-dev tomcat@www:/web/content/repos/yum/
fi
diff --git a/build/comps.xml b/dist/comps.xml
similarity index 100%
rename from build/comps.xml
rename to dist/comps.xml
diff --git a/docs/appendix/appendix-cots.md b/docs/appendix/appendix-cots.md
index f34a24a5ad..bbee3193ad 100644
--- a/docs/appendix/appendix-cots.md
+++ b/docs/appendix/appendix-cots.md
@@ -1,21 +1,20 @@
COTS and FOSS used in AWIPS
-Component|Version|Description
----------|:-----:|----------
-ActiveMQ|5.3.0|JMS (still used by AlertViz and internally in parts of Camel)
-Apache Batik|1.6|Batik is a Java-based toolkit for applications or applets that want to use images in the Scalable Vector Graphics (SVG) format for various purposes, such as display, generation or manipulation.
-Apache MINA |1.1.7| Network application framework
-Apache WSS4J |1.6.5| Web Services Security
-Ant |1.7.1| Java Build Tool
-Ant-Contrib |1.0b3| Additional useful tasks and types for Ant
-Antlr |2.7.6| Parser generator
+Component |Version|Description
+--------------|:-----:|----------
+ActiveMQ |5.12.0 |JMS (still used by AlertViz and internally in parts of Camel)
+Apache Batik |1.8 |Batik is a Java-based toolkit for applications or applets that want to use images in the Scalable Vector Graphics (SVG) format for various purposes, such as display, generation or manipulation.
+Apache MINA |1.1.7 | Network application framework
+Apache WSS4J |1.6.5 | Web Services Security
+Ant |1.9.6 | Java Build Tool
+Ant-Contrib |1.0b3 | Additional useful tasks and types for Ant
+Antlr |2.7.6 | Parser generator
Atomikos TransactionEssentials |3.6.2 | Transaction management system
Bitstream Vera Fonts |1.10| Font library from Gnome
bzip2 |none |Stream compression algorithm
C3p0 |0.9.1 |c3p0 is an easy-to-use library for making traditional JDBC drivers "enterprise-ready" by augmenting them with functionality defined by the jdbc3 spec and the optional extensions to jdbc2.
Camel |2.4 |Enterprise Service Bus
cglib |2.2| Byte Code Generation Library is high level API to generate and transform JAVA byte code.
-CherryPy |3.1.2| Object-oriented HTTP framework
commons-beanutils |1.8.3| Apache Common Libraries
commons-codec |1.4.1| Apache Common Libraries
commons-collection |3.2| Apache Common Libraries
@@ -29,14 +28,15 @@ commons-logging |1.1.1| Apache Common Libraries
commons-management |1.0| Apache Common Libraries
commons-pool |1.3| Apache Common Libraries
commons-validator |1.2| Apache Common Libraries
+cycler|0.10.0|Python library for composable style cycles
+Cython|0.27.2|Superset of the Python programming language, designed to give C-like performance with code that is mostly written in Python
+dateutil|2.6.1|Python extension to the standard datetime module
dom4j |1.6.1| An open source library for working with XML, XPath, and XSLT on the Java platform using the Java Collections Framework
dwr (direct web remoting) Getahead |1.1.3| Java open source library
-Eclipse |3.6.1| Java IDE
-Eclipse CDT |5.0.2| C/C++ IDE for Eclipse
+Eclipse |4.5.1| Java IDE
ehcache |1.3.0 |Caching Support
-GEOS |3.0.2| Geometry Engine, Required for PostGIS
+GEOS |3.6.2| Geometry Engine, Required for PostGIS
GeoTools Java API |2.6.4| Java API for Manipulation of Geospatial Data
-Geronimo-jms |1.1 spec 1.1.1| Server runtime framework
GRIBJava |8.0| Grib Java Decoder
h5py |1.3.0| HDF5 for Python
hdf5 |1.8.4-patch1| Core HDF5 APIs
@@ -46,61 +46,49 @@ IzPack |4.2.0| Installer creator for EDEX
JAI |1.1.3| Java API for Image Manipulation
JAI – Image I/O |1.1| Plug-ins for JAI
Jasper |1.900.1| JPEG-2000 codec
-Java |1.6u46| Kit for both 32-bit and 64-bit
-javax.mail |1.4.3| mail modeling classes
-javax.measure |1.0-beta-2| Strong types for measurements
-javax.persistence |1.0.0| persistence classes and interfaces
-javax.vecmath |1.3.1| Coordinates and vectors
+Java |1.8u101| Kit for both 32-bit and 64-bit
Jep |2.3+| Java Python interface
-jetty |7.2.2| Jetty provides an HTTP server, HTTP client, and javax.servlet container
-jGrapht |0.6.0| JGraphT is a free Java graph library that provides mathematical graphtheory objects and algorithms
-JMock |2.0.0| Java Mock Object Framework
-jna (java native access) |3.09| JNA provides Java programs easy access to native shared libraries (DLLs on Windows) without writing anything but Java code—no JNI or native code is required. This functionality is comparable to Windows' Platform/Invoke and Python's ctypes. Access is dynamic at runtime without code generation.
-jogl |1.1.1-rc8| Provides hardware-supported 3D graphics
-Jscience |4.3.1| Library for Scientific Calculations and Visualizations
+jogamp |2.3.2| Provides hardware-supported 3D graphics
JTS Topology Suite |1.10| Java API for 2D spatial data
-JUnit |4.10| Java Unit Test Framework
lapack |3.0.0| Linear Algebra Package for python
-ldm |6.11.2, 6.11.6| Local Data Manager
+ldm |6.13.6| Local Data Manager
Log4J |1.2.16| Logging Component used by Commons Logging
libgfortran |4.1.2| Fortran Library
-matplotlib |0.99.1.1-r7813| Python 2D Plotting Library
+matplotlib |1.5.3| Python 2D Plotting Library
Mozilla Rhino |1.6R7| Implementation of JavaScript embedded in Java
NCEP Grib2 Libraries|| Libraries for decoding & encoding data in GRIB2 format
cnvgrib |1.1.8 and 11.9| Fortran GRIB1 <--> GRIB2 conversion utility
g2clib |1.1.8| "C" grib2 encoder/decoder
g2lib |1.1.8 and 1.1.9| Fortran grib2 encoder/decoder and search/indexing routines
w3lib |1.6 and 1.7.1| Fortran grib1 encoder/decoder and utilities
-nose |0.11.1| Python unittest extension
-NumPy |1.3.0 |Numerical Python Scientific package for Python
+NumPy |1.9.3 |Numerical Python Scientific package for Python
objectweb asm |2.1| ASM is an all-purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form
-Openfire |3.7.1| Collaboration Server – Not used but eventually will replace Wildfire. Only 3.7 approved.
-pil |1.1.6| Python Imaging Library
-PostGIS |1.3.5| Geographic Object Support for PostgreSQL
-PostgreSQL |9.2.3, 9.2.4| Database
-Proj |4.6.1| Cartographic Projections library
-pupynere |1.0.13| Python module for reading and writing NetCDF files
+PostGIS |2.4.4| Geographic Object Support for PostgreSQL
+PostgreSQL |9.5.13| Database
+Proj |5.1.0| Cartographic Projections library
pydev |1.5| Python Development Environment
-PyTables |2.1.2| Python package for managing hierarchical datasets
-Python |2.7.1| Dynamic programming language
+PyParsing|2.2.0|Python class library for the easy construction of recursive-descent parsers
+PyTables |3.4.2| Python package for managing hierarchical datasets
+pytz|2015.4|World Timezone Definitions for Python
+Python |2.7.13| Dynamic programming language
Python megawidgets |1.3.2| Toolkit for building high-level compound widgets in Python using the Tkinter module
-Qpid |0.18| Open Source AMQP (Advanced Message Queuing Protocol) Messaging
-SciPy |0.7.0| Python Library of Scientific Tools
-ScientificPython |2.8| Python library for common tasks in scientific computing
+Python Setuptools|28.6.0|Tools to download, build, install, upgrade, and uninstall Python packages
+Qpid |6.1.4| Open Source AMQP (Advanced Message Queuing Protocol) Messaging
+ScientificPython |2.8.1| Python library for common tasks in scientific computing
+Shapely|1.6.4| Python package for manipulation and analysis of planar geometric objects.
+Six|1.11.0|Python 2 and 3 Compatibility Library
slf4j |1.6.1| The Simple Logging Facade for Java or (SLF4J) serves as a simple facade or abstraction for various logging frameworks
smack |2.2.1| Smack is an Open Source XMPP (Jabber) client library for instant messaging and presence.
stomp.py |revision 18| Python client library for accessing messaging servers
Spring Framework OSGI |1.2.0| dynamic modules
Spring Framework |2.5.6 |Layered Java/J2EE application platform
-stomp.py |revision 18| Python client libarary for accessing messaging servers
Subclipse |1.4.8| Eclipse plugin for Subversion support
SWT Add-ons |0.1.1| Add-ons for Eclipse SWT widgets
Symphony OGNL |2.7.3| Object-Graph Navigation Language; an expression language for getting/setting properties of Java objects.
Thrift |20080411p1-3| Binary Serialization Framework
Tomcat Native |1.1.17| Library for native memory control
-TPG |3.1.2| Parser generator for Python
utilconcurrent |1.3.2| Utility classes
Velocity |1.5.0| Templating Engine
-werkzeug |0.6.2| Python WSGI utility library
+werkzeug |0.12.1| Python WSGI utility library
Wildfire |3.1.1| Collaboration Server
xmltask |1.15.1| Facility for automatically editing XML files as part of an Ant build
diff --git a/docs/edex/distributed-computing.md b/docs/edex/distributed-computing.md
index 525bb502de..ccf121e7bb 100644
--- a/docs/edex/distributed-computing.md
+++ b/docs/edex/distributed-computing.md
@@ -133,7 +133,7 @@ Since this Database/Request server is not running the main *edexIngest* JVM, we
## Ingest/Decode Server
!!! note "Specs"
- * IP address **10.0.0.9**
+ * IP address **10.0.0.7**
* CentOS 6.9
* m1.xxlarge (CPU: 44, Mem: 120 GB)
diff --git a/edexOsgi/com.raytheon.uf.edex.dataplugins.feature/feature.xml b/edexOsgi/com.raytheon.uf.edex.dataplugins.feature/feature.xml
index 416466da9d..3befc6ecc3 100644
--- a/edexOsgi/com.raytheon.uf.edex.dataplugins.feature/feature.xml
+++ b/edexOsgi/com.raytheon.uf.edex.dataplugins.feature/feature.xml
@@ -198,14 +198,14 @@
install-size="0"
version="0.0.0"
unpack="false"/>
-
+
-
+
-
+
-
+
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
- gov.nasa.msfc.sport.edex.glmdecoder.feature
-
-
-
-
-
- org.eclipse.pde.FeatureBuilder
-
-
-
-
-
- org.eclipse.pde.FeatureNature
-
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/build.properties b/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/build.properties
deleted file mode 100644
index 64f93a9f0b..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-bin.includes = feature.xml
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/feature.xml b/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/feature.xml
deleted file mode 100644
index 726183d25d..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.glmdecoder.feature/feature.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- [Enter Feature Description here.]
-
-
-
- [Enter Copyright Description here.]
-
-
-
- [Enter License Description here.]
-
-
-
-
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.classpath b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.classpath
deleted file mode 100644
index 098194ca4b..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.project b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.project
deleted file mode 100644
index db1888aba7..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- gov.nasa.msfc.sport.edex.plugin.glmdecoder
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.pde.ManifestBuilder
-
-
-
-
- org.eclipse.pde.SchemaBuilder
-
-
-
-
-
- org.eclipse.pde.PluginNature
- org.eclipse.jdt.core.javanature
-
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/META-INF/MANIFEST.MF b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/META-INF/MANIFEST.MF
deleted file mode 100644
index d878730936..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Glmdecoder
-Bundle-SymbolicName: gov.nasa.msfc.sport.edex.plugin.glmdecoder
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: NASA SPoRT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Require-Bundle: ucar.nc2;bundle-version="4.2.0",
- com.raytheon.uf.common.dataplugin;bundle-version="1.14.0",
- com.raytheon.uf.common.dataplugin.binlightning;bundle-version="1.14.0",
- com.raytheon.uf.common.status;bundle-version="1.14.1",
- com.raytheon.uf.common.wmo;bundle-version="1.14.0"
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/build.properties b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/build.properties
deleted file mode 100644
index 73974cda80..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- res/,\
- utility/
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/res/spring/glm-ingest.xml b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/res/spring/glm-ingest.xml
deleted file mode 100644
index 608d898f47..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/res/spring/glm-ingest.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- glm
-
-
-
-
-
-
-
-
- java.lang.Throwable
-
-
-
-
-
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/src/gov/nasa/msfc/sport/edex/glmdecoder/decoder/GLMDecoder.java b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/src/gov/nasa/msfc/sport/edex/glmdecoder/decoder/GLMDecoder.java
deleted file mode 100644
index bf0a498394..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/src/gov/nasa/msfc/sport/edex/glmdecoder/decoder/GLMDecoder.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package gov.nasa.msfc.sport.edex.glmdecoder.decoder;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.TimeZone;
-
-import ucar.ma2.Array;
-import ucar.nc2.NetcdfFile;
-import ucar.nc2.Variable;
-
-import com.raytheon.uf.common.dataplugin.PluginDataObject;
-import com.raytheon.uf.common.dataplugin.binlightning.BinLightningRecord;
-import com.raytheon.uf.common.dataplugin.binlightning.impl.LightningStrikePoint;
-import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgMsgType;
-import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
-import com.raytheon.uf.common.status.IUFStatusHandler;
-import com.raytheon.uf.common.status.UFStatus;
-import com.raytheon.uf.common.wmo.WMOHeader;
-
-/**
- * The Class GLMDecoder decodes the GLM Netcdf format files. The decoder
- * extracts flash, groups, and events and encodes them into BinLightningRecords.
- */
-public class GLMDecoder {
-
- /** The Constant handler for logging. */
- private static final IUFStatusHandler handler = UFStatus
- .getHandler(GLMDecoder.class);
-
- /** The Constant Greenwich Mean Time zone. */
- private static final TimeZone gmt = TimeZone.getTimeZone("GMT");
-
- /**
- * The Enum Type to indentify various types of decoded types of detections.
- */
- private static enum Type {
-
- /** The flash lightning element. */
- FLASH("flash", "flash_time_offset_of_first_event"),
- /** The event lightning element. */
- EVENT("event", "event_time_offset"),
- /** The group lightning element. */
- GROUP("group", "group_time_offset");
-
- /** The name. */
- public final String name;
-
- /** The offset name. */
- public final String offsetName;
-
- /**
- * Instantiates a new type.
- *
- * @param name
- * the name of the lightning type
- * @param offsetName
- * the offset name of the variable in the netcdf file that
- * describes the offset of time for the particular record.
- */
- Type(String name, String offsetName) {
- this.name = name;
- this.offsetName = offsetName;
- }
- }
-
- /**
- * Decode the netcdf data from ingest and return the lightning flashes,
- * groups and events from the input netcdf GLM file.
- *
- * @param data
- * the data input array of the netcdf input file.
- * @return the plugin data object[] that contains all of the flashes,
- * groups, and events in the file. They are of type
- * BinLightningRecord.
- */
- public PluginDataObject[] decode(byte[] data) {
- WMOHeader wmoHdr = new WMOHeader(data);
- if (wmoHdr.isValid()) {
- data = removeWMOHeader(data, wmoHdr);
- }
- NetcdfFile netCdfFile = null;
- List records = new ArrayList();
- try {
- netCdfFile = NetcdfFile.openInMemory(null, data);
-
- Date productTime = decodeProductTime(netCdfFile);
- List flashes = decode(Type.FLASH, netCdfFile,
- productTime);
- List groups = decode(Type.GROUP, netCdfFile,
- productTime);
- List events = decode(Type.EVENT, netCdfFile,
- productTime);
-
- if (events != null) {
- BinLightningRecord eventsRecord = new BinLightningRecord(events);
- eventsRecord.setSource("GLMev");
- records.add(eventsRecord);
- }
-
- if (flashes != null) {
- BinLightningRecord flashrecord = new BinLightningRecord(flashes);
- flashrecord.setSource("GLMfl");
- records.add(flashrecord);
- }
- if (groups != null) {
- BinLightningRecord groupsRecord = new BinLightningRecord(groups);
- groupsRecord.setSource("GLMgr");
- records.add(groupsRecord);
- }
-
- } catch (IOException e) {
- handler.error(e.getMessage());
- } finally {
- if (netCdfFile != null) {
- try {
- netCdfFile.close();
- } catch (IOException e) {
-
- }
- }
- }
- int size = records.size();
- PluginDataObject[] objs = new PluginDataObject[size];
- return records.toArray(objs);
- }
-
- /**
- * Removes the wmo header.
- *
- * @param data
- * the data input array.
- * @param wmoHdr
- * the wmo hdr
- * @return the byte[] of the data without the WMOHeader
- */
- private byte[] removeWMOHeader(byte[] data, WMOHeader wmoHdr) {
- return Arrays.copyOfRange(data, wmoHdr.getMessageDataStart(),
- data.length);
- }
-
- /**
- * Decode product time which is the basis for all other time measurements in
- * the file. The times are based on January 1, 2000 at 12Z.
- *
- * @param netCdfFile
- * the net cdf file input
- * @return the date for the basis of the file
- * @throws IOException
- * Signals that an I/O exception has occurred.
- */
- private Date decodeProductTime(NetcdfFile netCdfFile) throws IOException {
- Variable product_time_var = netCdfFile.findVariable("product_time");
-
- GregorianCalendar cal = new GregorianCalendar(gmt);
- // Dates are based on seconds since January 1, 2000 at 12Z
- cal.set(2000, 0, 1, 12, 0, 0);
- int secondstimesince2000 = (int) product_time_var.readScalarFloat();
- cal.add(Calendar.SECOND, secondstimesince2000);
- Date date = cal.getTime();
- return date;
-
- }
-
- /**
- * Decode actual elements in the file. The method decodes flashes, events,
- * and groups from the netcdf file.
- *
- * @param type
- * the type to decode, can be group, flash or event.
- * @param netCdfFile
- * the net cdf file to read the data.
- * @param producttime
- * the producttime is the basis time for the file.
- * @return the list of plugin objects that represent the lightning element
- * type decoded.
- */
- private List decode(Type type, NetcdfFile netCdfFile,
- Date producttime) {
- List points = new ArrayList();
-
- Variable lon = netCdfFile.findVariable(type.name + "_lon");
- Variable lat = netCdfFile.findVariable(type.name + "_lat");
- double event_lon_scale_factor = 1;
- double event_lon_add_offset = 0;
- double event_lat_scale_factor = 1;
- double event_lat_add_offset = 0;
- if (type == Type.EVENT) {
- event_lon_scale_factor = lon.findAttribute("scale_factor")
- .getNumericValue().doubleValue();
- event_lon_add_offset = lon.findAttribute("add_offset")
- .getNumericValue().doubleValue();
- event_lat_scale_factor = lat.findAttribute("scale_factor")
- .getNumericValue().doubleValue();
- event_lat_add_offset = lat.findAttribute("add_offset")
- .getNumericValue().doubleValue();
- }
-
- Variable offset = netCdfFile.findVariable(type.offsetName);
- try {
- Array lon_array = lon.read();
- Array lat_array = lat.read();
- Array offset_array = offset.read();
-
- while (lon_array.hasNext() && lat_array.hasNext()
- && offset_array.hasNext()) {
- float lonValue;
- float latValue;
-
- if (type == Type.EVENT) {
- int lon_short = ucar.ma2.DataType
- .unsignedShortToInt(lon_array.nextShort());
- lonValue = (float) (lon_short * event_lon_scale_factor + event_lon_add_offset);
- latValue = (float) (ucar.ma2.DataType
- .unsignedShortToInt(lat_array.nextShort())
- * event_lat_scale_factor + event_lat_add_offset);
- } else {
- lonValue = lon_array.nextFloat();
- latValue = lat_array.nextFloat();
- }
-
- short offsetValue = offset_array.nextShort();
- GregorianCalendar cal = new GregorianCalendar(gmt);
- cal.setTimeInMillis(producttime.getTime() + offsetValue);
- LightningStrikePoint point = new LightningStrikePoint(latValue,
- lonValue, cal, LtgMsgType.TOTAL_LIGHTNING);
- point.setType(LtgStrikeType.TOTAL_FLASH);
- points.add(point);
- }
-
- } catch (IOException e) {
- handler.error(e.getMessage());
- }
- return points;
- }
-
-}
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/test/TestGLMDecoder.java b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/test/TestGLMDecoder.java
deleted file mode 100644
index b679ebdd0d..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/test/TestGLMDecoder.java
+++ /dev/null
@@ -1,38 +0,0 @@
-import gov.nasa.msfc.sport.edex.glmdecoder.decoder.GLMDecoder;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import com.raytheon.uf.common.dataplugin.PluginDataObject;
-
-public class TestGLMDecoder {
-
- public void processFile(String file) {
- try {
- byte[] array = readFileInAsByteArray(file);
- GLMDecoder decoder = new GLMDecoder();
- PluginDataObject[] objects = decoder.decode(array);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- public byte[] readFileInAsByteArray(String file) throws IOException {
- Path path = Paths.get(file);
-
- return Files.readAllBytes(path);
-
- }
-
- public static void main(String[] args) {
- TestGLMDecoder testDecoder = new TestGLMDecoder();
- testDecoder
- .processFile("/data1/awips/sampledata/GLM/OR_GLM-L2-LCFA_G16_s20151831153096_e20151831153297_c20152020147422.nc");
- testDecoder
- .processFile("/data1/awips/sampledata/GLM/newsamples/glm/IXTR99_KNES_190001_18889.2015081900");
- }
-
-}
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/common_static/base/distribution/glm.xml b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/common_static/base/distribution/glm.xml
deleted file mode 100644
index d215030948..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/common_static/base/distribution/glm.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- OR_GLM-L2-LCFA_G16
- ^IXTR99 KNES
-
diff --git a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/edex_static/base/distribution/glm.xml b/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/edex_static/base/distribution/glm.xml
deleted file mode 100644
index d215030948..0000000000
--- a/edexOsgi/gov.nasa.msfc.sport.edex.plugin.glmdecoder/utility/edex_static/base/distribution/glm.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- OR_GLM-L2-LCFA_G16
- ^IXTR99 KNES
-
diff --git a/rpms/awips2.core/Installer.database/component.spec b/rpms/awips2.core/Installer.database/component.spec
index 5503f16b17..0660ef5cb0 100644
--- a/rpms/awips2.core/Installer.database/component.spec
+++ b/rpms/awips2.core/Installer.database/component.spec
@@ -270,7 +270,7 @@ execute_initial_sql_script ${SQL_SHARE_DIR}/initial_setup_server.sql > /dev/null
/awips2/psql/bin/psql -U awips -d metadata -c "CREATE EXTENSION postgis;" > /dev/null 2>&1
/awips2/psql/bin/psql -U awips -d metadata -c "CREATE EXTENSION postgis_topology;" > /dev/null 2>&1
-execute_psql_sql_script /awips2/postgresql/share/contrib/postgis-2.2/legacy.sql metadata > /dev/null 2>&1
+execute_psql_sql_script /awips2/postgresql/share/contrib/postgis-2.4/legacy.sql metadata > /dev/null 2>&1
execute_psql_sql_script ${SQL_SHARE_DIR}/permissions.sql metadata > /dev/null 2>&1
execute_psql_sql_script ${SQL_SHARE_DIR}/fxatext.sql metadata > /dev/null 2>&1
diff --git a/rpms/awips2.core/Installer.maps-database/component.spec b/rpms/awips2.core/Installer.maps-database/component.spec
index a71dd0c76b..796f9e5873 100644
--- a/rpms/awips2.core/Installer.maps-database/component.spec
+++ b/rpms/awips2.core/Installer.maps-database/component.spec
@@ -170,7 +170,7 @@ if [ "${MAPS_DB_EXISTS}" = "false" ]; then
fi
# Do we still need legacy?
- SQL_FILE="/awips2/postgresql/share/contrib/postgis-2.0/legacy.sql"
+ SQL_FILE="/awips2/postgresql/share/contrib/postgis-2.4/legacy.sql"
su - ${DB_OWNER} -c \
"${PSQL} -d maps -U awips -q -p 5432 -f ${SQL_FILE}" >> ${SQL_LOG} 2>&1
if [ $? -ne 0 ]; then
diff --git a/rpms/awips2.core/Installer.ncep-database/component.spec b/rpms/awips2.core/Installer.ncep-database/component.spec
index 990ceda87b..16c9dcb5d1 100644
--- a/rpms/awips2.core/Installer.ncep-database/component.spec
+++ b/rpms/awips2.core/Installer.ncep-database/component.spec
@@ -82,7 +82,7 @@ DB_OWNER=`ls -ld ${AWIPS2_DATA_DIRECTORY} | grep -w 'data' | awk '{print $3}'`
# Our log file
SQL_LOG="${DATABASE_INSTALL}/sqlScripts/share/sql/ncep/ncep_sql_install.log"
SQL_SHARE_DIR="${DATABASE_INSTALL}/sqlScripts/share/sql/ncep"
-LEGACY_SQL="/awips2/postgresql/share/contrib/postgis-2.0/legacy.sql"
+LEGACY_SQL="/awips2/postgresql/share/contrib/postgis-2.4/legacy.sql"
# Determine if PostgreSQL is running.
I_STARTED_POSTGRESQL="NO"