New packages: EPICS (Experimental Physics and Industrial Control System) (#28270)

This commit is contained in:
Glenn Horton-Smith 2022-06-29 15:36:48 -05:00 committed by GitHub
parent b200c57739
commit e6678e5f12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,47 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class EpicsBase(MakefilePackage):
"""This is the main core of EPICS, the Experimental Physics and Industrial
Control System, comprising the build system and tools, common and OS-interface
libraries, network protocol client and server libraries, static and run-time
database access routines, the database processing code, and standard record,
device and driver support."""
homepage = "https://epics-controls.org"
url = "https://epics-controls.org/download/base/base-7.0.6.1.tar.gz"
maintainers = ['glenn-horton-smith']
version('7.0.6.1', sha256='8ff318f25e2b70df466f933636a2da85e4b0c841504b9e89857652a4786b6387')
depends_on('readline')
depends_on('perl', type=('build', 'run'))
@property
def install_targets(self):
return ['INSTALL_LOCATION={0}'.format(self.prefix), 'install']
def get_epics_host_arch(self):
perl = which('perl', required=True)
return perl('%s/perl/EpicsHostArch.pl' % self.prefix.lib,
output=str, error=str).strip()
def setup_build_environment(self, env):
env.set('EPICS_BASE', self.prefix)
def setup_dependent_build_environment(self, env, dependent_spec):
epics_host_arch = self.get_epics_host_arch()
env.set('EPICS_HOST_ARCH', epics_host_arch)
env.set('EPICS_BASE', self.prefix)
def setup_run_environment(self, env):
epics_host_arch = self.get_epics_host_arch()
env.set('EPICS_HOST_ARCH', epics_host_arch)
env.set('EPICS_BASE', self.prefix)
env.prepend_path('PATH', join_path(self.prefix.bin, epics_host_arch))

View File

@ -0,0 +1,37 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class EpicsCaGateway(MakefilePackage):
"""The EPICS Channel Access PV Gateway is both a Channel Access
server and Channel Access client. It provides a means for many
clients to access a process variable, while making only one
connection to the server that owns the process variable. It also
provides additional access security beyond that on the server.
The clients and the server may be on different subnets."""
homepage = "https://epics.anl.gov/extensions/gateway/"
url = "https://github.com/epics-extensions/ca-gateway/archive/refs/tags/v2.1.3.tar.gz"
maintainers = ['glenn-horton-smith']
version('2.1.3', sha256='f6e9dba46951a168d3208fc57054138759d56ebd8a7c07b496e8f5b8a56027d7')
depends_on('epics-base')
depends_on('epics-pcas')
@property
def install_targets(self):
return ['INSTALL_LOCATION={0}'.format(self.prefix), 'install']
def edit(self, spec, prefix):
with open('configure/RELEASE.local', 'w') as release_file:
release_file.write('EPICS_BASE = ' + env['EPICS_BASE'] + '\n')
release_file.write('PCAS = ' + spec['epics-pcas'].prefix)
def setup_run_environment(self, envmod):
envmod.prepend_path('PATH', join_path(self.prefix.bin, env['EPICS_HOST_ARCH']))

View File

@ -0,0 +1,32 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class EpicsPcas(MakefilePackage):
"""EPICS Portable Channel Access Server and Generic Data Descriptor
C++ libraries, split off from EPICS Base 3.16.1 as a separate module
for EPICS 7."""
homepage = "https://github.com/epics-modules/pcas"
url = "https://github.com/epics-modules/pcas/archive/refs/tags/v4.13.3.tar.gz"
maintainers = ['glenn-horton-smith']
version('4.13.3', sha256='5004e39339c8e592fcb9b4275c84143635c6e688c0fbe01f17dafe19850398a0')
depends_on('epics-base', type=('build', 'link', 'run'))
@property
def install_targets(self):
return ['INSTALL_LOCATION={0}'.format(self.prefix), 'install']
def edit(self, spec, prefix):
with open('configure/RELEASE.local', 'w') as release_file:
release_file.write('EPICS_BASE = ' + env['EPICS_BASE'] + '\n')
def setup_run_environment(self, envmod):
envmod.prepend_path('PATH', join_path(self.prefix.bin, env['EPICS_HOST_ARCH']))

View File

@ -0,0 +1,39 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class EpicsSnmp(MakefilePackage):
"""This module provides EPICS device-layer support for hardware
devices that communicate via SNMP (Simple Network Management
Protocol)."""
homepage = "https://groups.nscl.msu.edu/controls/files/devSnmp.html"
url = "https://groups.nscl.msu.edu/controls/files/epics-snmp-1.1.0.3.zip"
maintainers = ['glenn-horton-smith']
version('1.1.0.3', sha256='fe8b2cb25412555a639e3513f48a4da4c4cc3cc43425176349338be27b1e26d3')
depends_on('epics-base')
depends_on('net-snmp')
@property
def install_targets(self):
return ['INSTALL_LOCATION={0}'.format(self.prefix), 'install']
def edit(self, spec, prefix):
config_release = FileFilter(
'configure/RELEASE',
'NventSGP/configure/RELEASE', 'WienerCrate/configure/RELEASE')
config_release.filter('EPICS_BASE *=.*', 'EPICS_BASE = ' + env['EPICS_BASE'])
makefile = FileFilter('snmpApp/src/Makefile')
makefile.filter(
'USR_CPPFLAGS',
'USR_CPPFLAGS += `net-snmp-config --cflags`\nUSR_CPPFLAGS')
def setup_run_environment(self, envmod):
envmod.prepend_path('PATH', join_path(self.prefix.bin, env['EPICS_HOST_ARCH']))