New packages: EPICS (Experimental Physics and Industrial Control System) (#28270)
This commit is contained in:
parent
b200c57739
commit
e6678e5f12
47
var/spack/repos/builtin/packages/epics-base/package.py
Normal file
47
var/spack/repos/builtin/packages/epics-base/package.py
Normal 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))
|
37
var/spack/repos/builtin/packages/epics-ca-gateway/package.py
Normal file
37
var/spack/repos/builtin/packages/epics-ca-gateway/package.py
Normal 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']))
|
32
var/spack/repos/builtin/packages/epics-pcas/package.py
Normal file
32
var/spack/repos/builtin/packages/epics-pcas/package.py
Normal 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']))
|
39
var/spack/repos/builtin/packages/epics-snmp/package.py
Normal file
39
var/spack/repos/builtin/packages/epics-snmp/package.py
Normal 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']))
|
Loading…
Reference in New Issue
Block a user