From f061aeb9e62abbbdc075e2b30260a458c08699fe Mon Sep 17 00:00:00 2001 From: Anders Lindh Olsson Date: Mon, 3 Aug 2026 11:20:31 +0200 Subject: [PATCH 1/2] docs: make source licensing machine-readable Preserve Argonne's attribution on the makeBaseApp-derived IOC mains while identifying the reccaster source files as licensed under EPICS. --- Makefile | 5 +++++ castApp/Db/Makefile | 5 +++++ castApp/Db/reccaster.db | 4 ++++ castApp/Makefile | 4 ++++ castApp/src/Makefile | 5 +++++ castApp/src/castMain.cpp | 4 ++++ castApp/src/caster.c | 5 +++++ castApp/src/caster.h | 6 ++++++ castApp/src/castinit.c | 5 +++++ castApp/src/casttcp.c | 5 +++++ castApp/src/castudp.c | 5 +++++ castApp/src/dbcb.c | 5 +++++ castApp/src/reccaster.dbd | 4 ++++ castApp/src/sockhelpers.c | 5 +++++ castApp/src/sockhelpers.h | 6 ++++++ castApp/src/testAddEnvVars.c | 6 ++++++ castApp/src/testAddExcludePattern.c | 6 ++++++ castApp/src/testsock.c | 5 +++++ castApp/src/testtcp.c | 5 +++++ castApp/src/testudp.c | 5 +++++ configure/CONFIG | 4 ++++ configure/CONFIG_SITE | 5 +++++ configure/Makefile | 4 ++++ configure/RELEASE | 5 +++++ configure/RULES | 4 ++++ configure/RULES.ioc | 4 ++++ configure/RULES_DIRS | 4 ++++ configure/RULES_TOP | 4 ++++ demoApp/Db/Makefile | 5 +++++ demoApp/Db/somerecords.db | 3 +++ demoApp/Makefile | 4 ++++ demoApp/src/Makefile | 5 +++++ demoApp/src/demoMain.cpp | 4 ++++ iocBoot/Makefile | 4 ++++ iocBoot/iocdemo/Makefile | 4 ++++ iocBoot/iocdemo/st.cmd | 5 +++++ 36 files changed, 168 insertions(+) diff --git a/Makefile b/Makefile index 23379e6..e32f7fb 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + #Makefile at top of application tree TOP = . include $(TOP)/configure/CONFIG diff --git a/castApp/Db/Makefile b/castApp/Db/Makefile index 5a4fd67..4e4668e 100644 --- a/castApp/Db/Makefile +++ b/castApp/Db/Makefile @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 1998 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + TOP=../.. include $(TOP)/configure/CONFIG #---------------------------------------- diff --git a/castApp/Db/reccaster.db b/castApp/Db/reccaster.db index 86985a0..ffdc95b 100644 --- a/castApp/Db/reccaster.db +++ b/castApp/Db/reccaster.db @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + record(mbbi, "$(P)State-Sts") { field(DTYP, "RecCaster") field(PINI, "RUNNING") diff --git a/castApp/Makefile b/castApp/Makefile index ab15bfb..e7d26e5 100644 --- a/castApp/Makefile +++ b/castApp/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + TOP = .. include $(TOP)/configure/CONFIG DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*)) diff --git a/castApp/src/Makefile b/castApp/src/Makefile index 5ecc431..97a632c 100644 --- a/castApp/src/Makefile +++ b/castApp/src/Makefile @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2003 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + TOP=../.. include $(TOP)/configure/CONFIG diff --git a/castApp/src/castMain.cpp b/castApp/src/castMain.cpp index 918fa9c..cecd4b2 100644 --- a/castApp/src/castMain.cpp +++ b/castApp/src/castMain.cpp @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2000 Argonne National Laboratory +// +// SPDX-License-Identifier: EPICS + /* castMain.cpp */ /* Author: Marty Kraimer Date: 17MAR2000 */ diff --git a/castApp/src/caster.c b/castApp/src/caster.c index a84395b..c032f86 100644 --- a/castApp/src/caster.c +++ b/castApp/src/caster.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include #include diff --git a/castApp/src/caster.h b/castApp/src/caster.h index de5b751..7d6a26e 100644 --- a/castApp/src/caster.h +++ b/castApp/src/caster.h @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ + #ifndef CASTER_H #define CASTER_H diff --git a/castApp/src/castinit.c b/castApp/src/castinit.c index 9b53973..70c3dca 100644 --- a/castApp/src/castinit.c +++ b/castApp/src/castinit.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/castApp/src/casttcp.c b/castApp/src/casttcp.c index 80f4879..345af5c 100644 --- a/castApp/src/casttcp.c +++ b/castApp/src/casttcp.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/castApp/src/castudp.c b/castApp/src/castudp.c index 7f43ce7..3718380 100644 --- a/castApp/src/castudp.c +++ b/castApp/src/castudp.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/castApp/src/dbcb.c b/castApp/src/dbcb.c index 7ede086..51ea19d 100644 --- a/castApp/src/dbcb.c +++ b/castApp/src/dbcb.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include #include diff --git a/castApp/src/reccaster.dbd b/castApp/src/reccaster.dbd index 3b10b84..b64ab42 100644 --- a/castApp/src/reccaster.dbd +++ b/castApp/src/reccaster.dbd @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + registrar(reccasterRegistrar) variable(reccastTimeout,double) variable(reccastMaxHoldoff,double) diff --git a/castApp/src/sockhelpers.c b/castApp/src/sockhelpers.c index 773fe48..f655720 100644 --- a/castApp/src/sockhelpers.c +++ b/castApp/src/sockhelpers.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #if defined(_WIN32) && !defined(_WIN32_WINNT) /* Windows API level default to Vista */ diff --git a/castApp/src/sockhelpers.h b/castApp/src/sockhelpers.h index ba2f452..3a2e75b 100644 --- a/castApp/src/sockhelpers.h +++ b/castApp/src/sockhelpers.h @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ + #ifndef SOCKHELPERS_H #define SOCKHELPERS_H /* blocking socket operations w/ timeouts and interruptions */ diff --git a/castApp/src/testAddEnvVars.c b/castApp/src/testAddEnvVars.c index 696bc1e..ad0c75d 100644 --- a/castApp/src/testAddEnvVars.c +++ b/castApp/src/testAddEnvVars.c @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ + #include #include diff --git a/castApp/src/testAddExcludePattern.c b/castApp/src/testAddExcludePattern.c index 8f0a9d6..050ff3d 100644 --- a/castApp/src/testAddExcludePattern.c +++ b/castApp/src/testAddExcludePattern.c @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ + #include #include diff --git a/castApp/src/testsock.c b/castApp/src/testsock.c index a688648..3301ee8 100644 --- a/castApp/src/testsock.c +++ b/castApp/src/testsock.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/castApp/src/testtcp.c b/castApp/src/testtcp.c index c9e2ddb..ede5314 100644 --- a/castApp/src/testtcp.c +++ b/castApp/src/testtcp.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/castApp/src/testudp.c b/castApp/src/testudp.c index 0374998..5f31561 100644 --- a/castApp/src/testudp.c +++ b/castApp/src/testudp.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors + * + * SPDX-License-Identifier: EPICS + */ #include diff --git a/configure/CONFIG b/configure/CONFIG index 331fd70..d13d3c6 100644 --- a/configure/CONFIG +++ b/configure/CONFIG @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + # CONFIG - Load build configuration data # # Do not make changes to this file! diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE index 85f8b03..cb20426 100644 --- a/configure/CONFIG_SITE +++ b/configure/CONFIG_SITE @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2006 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + # CONFIG_SITE # Make any application-specific changes to the EPICS build diff --git a/configure/Makefile b/configure/Makefile index 9254309..e004cd7 100644 --- a/configure/Makefile +++ b/configure/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1999 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + TOP=.. include $(TOP)/configure/CONFIG diff --git a/configure/RELEASE b/configure/RELEASE index d66b294..8b74515 100644 --- a/configure/RELEASE +++ b/configure/RELEASE @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + # RELEASE - Location of external support modules # # IF YOU MAKE ANY CHANGES to this file you must subsequently diff --git a/configure/RULES b/configure/RULES index 6d56e14..8041da6 100644 --- a/configure/RULES +++ b/configure/RULES @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2000 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + # RULES include $(CONFIG)/RULES diff --git a/configure/RULES.ioc b/configure/RULES.ioc index 901987c..1b271be 100644 --- a/configure/RULES.ioc +++ b/configure/RULES.ioc @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 1999 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + #RULES.ioc include $(CONFIG)/RULES.ioc diff --git a/configure/RULES_DIRS b/configure/RULES_DIRS index 3ba269d..2ad98dd 100644 --- a/configure/RULES_DIRS +++ b/configure/RULES_DIRS @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 1999 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + #RULES_DIRS include $(CONFIG)/RULES_DIRS diff --git a/configure/RULES_TOP b/configure/RULES_TOP index 2b8cbc6..dabcc36 100644 --- a/configure/RULES_TOP +++ b/configure/RULES_TOP @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + #RULES_TOP include $(CONFIG)/RULES_TOP diff --git a/demoApp/Db/Makefile b/demoApp/Db/Makefile index 858424c..ab08368 100644 --- a/demoApp/Db/Makefile +++ b/demoApp/Db/Makefile @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 1998 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + TOP=../.. include $(TOP)/configure/CONFIG #---------------------------------------- diff --git a/demoApp/Db/somerecords.db b/demoApp/Db/somerecords.db index 1d1b4fd..8b4927a 100644 --- a/demoApp/Db/somerecords.db +++ b/demoApp/Db/somerecords.db @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS record(longin, "$(P)li") { alias("$(P)lix1") diff --git a/demoApp/Makefile b/demoApp/Makefile index ab15bfb..e7d26e5 100644 --- a/demoApp/Makefile +++ b/demoApp/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + TOP = .. include $(TOP)/configure/CONFIG DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*)) diff --git a/demoApp/src/Makefile b/demoApp/src/Makefile index 2d41d76..3363a43 100644 --- a/demoApp/src/Makefile +++ b/demoApp/src/Makefile @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2003 Argonne National Laboratory +# SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +# +# SPDX-License-Identifier: EPICS + TOP=../.. include $(TOP)/configure/CONFIG diff --git a/demoApp/src/demoMain.cpp b/demoApp/src/demoMain.cpp index 5e60ea9..6bde5e4 100644 --- a/demoApp/src/demoMain.cpp +++ b/demoApp/src/demoMain.cpp @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2000 Argonne National Laboratory +// +// SPDX-License-Identifier: EPICS + /* demoMain.cpp */ /* Author: Marty Kraimer Date: 17MAR2000 */ diff --git a/iocBoot/Makefile b/iocBoot/Makefile index 1a4139a..d9397bb 100644 --- a/iocBoot/Makefile +++ b/iocBoot/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1997 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + TOP = .. include $(TOP)/configure/CONFIG DIRS += $(wildcard *ioc*) diff --git a/iocBoot/iocdemo/Makefile b/iocBoot/iocdemo/Makefile index 89d66d0..30d6965 100644 --- a/iocBoot/iocdemo/Makefile +++ b/iocBoot/iocdemo/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 1998 Argonne National Laboratory +# +# SPDX-License-Identifier: EPICS + TOP = ../.. include $(TOP)/configure/CONFIG ARCH = linux-x86_64-debug diff --git a/iocBoot/iocdemo/st.cmd b/iocBoot/iocdemo/st.cmd index 85594c3..89faa13 100755 --- a/iocBoot/iocdemo/st.cmd +++ b/iocBoot/iocdemo/st.cmd @@ -1,5 +1,10 @@ #!../../bin/linux-x86_64-debug/demo +#- SPDX-FileCopyrightText: 2003 Argonne National Laboratory +#- SPDX-FileCopyrightText: Michael Davidsaver and the reccaster contributors +#- +#- SPDX-License-Identifier: EPICS + ## You may have to change demo to something else ## everywhere it appears in this file From d916378a1d84d23bb881f7468b620e619750946a Mon Sep 17 00:00:00 2001 From: Anders Lindh Olsson Date: Mon, 3 Aug 2026 11:22:35 +0200 Subject: [PATCH 2/2] ci: enforce SPDX source metadata Use REUSE's scoped file validator to ensure EPICS source, build, database, and startup files retain copyright and license identifiers without imposing metadata requirements on unrelated repository files. Keep the applied EPICS text in REUSE's required license inventory while retaining the top-level LICENSE expected in EPICS distributions. --- .pre-commit-config.yaml | 12 ++++++++ LICENSES/EPICS.txt | 64 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 LICENSES/EPICS.txt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51ef8a8..f7adf95 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,3 +6,15 @@ repos: - id: trailing-whitespace - id: check-yaml - id: check-merge-conflict + - repo: https://github.com/fsfe/reuse-tool + rev: v6.2.0 + hooks: + - id: reuse-lint-file + files: | + (?x)^( + (castApp|demoApp)/src/.*\.(c|h|cpp|dbd) + |(castApp|demoApp)/Db/.*\.db + |(.*/)?Makefile + |configure/(CONFIG|CONFIG_SITE|RELEASE|RULES|RULES_DIRS|RULES_TOP|RULES\.ioc) + |iocBoot/.*/st\.cmd + )$ diff --git a/LICENSES/EPICS.txt b/LICENSES/EPICS.txt new file mode 100644 index 0000000..b1ab9e8 --- /dev/null +++ b/LICENSES/EPICS.txt @@ -0,0 +1,64 @@ +Copyright (c) 2013-2026 Michael Davidsaver and the reccaster contributors. + +reccaster is distributed subject to the following license conditions: + + SOFTWARE LICENSE AGREEMENT + Software: reccaster + + 1. The "Software", below, refers to reccaster (in either source code, or + binary form and accompanying documentation). Each licensee is + addressed as "you" or "Licensee." + + 2. The copyright holders shown above and their third-party licensors + hereby grant Licensee a royalty-free nonexclusive license, subject to + the limitations stated herein and U.S. Government license rights. + + 3. You may modify and make a copy or copies of the Software for use + within your organization, if you meet the following conditions: + a. Copies in source code must include the copyright notice and this + Software License Agreement. + b. Copies in binary form must include the copyright notice and this + Software License Agreement in the documentation and/or other + materials provided with the copy. + + 4. You may modify a copy or copies of the Software or any portion of it, + thus forming a work based on the Software, and distribute copies of + such work outside your organization, if you meet all of the following + conditions: + a. Copies in source code must include the copyright notice and this + Software License Agreement; + b. Copies in binary form must include the copyright notice and this + Software License Agreement in the documentation and/or other + materials provided with the copy; + c. Modified copies and works based on the Software must carry + prominent notices stating that you changed specified portions of + the Software. + + 5. Portions of the Software resulted from work developed under a U.S. + Government contract and are subject to the following license: the + Government is granted for itself and others acting on its behalf a + paid-up, nonexclusive, irrevocable worldwide license in this computer + software to reproduce, prepare derivative works, and perform publicly + and display publicly. + + 6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY + OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE + UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR + EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME + ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, + OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE + SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT + THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE + OR THAT ANY ERRORS WILL BE CORRECTED. + + 7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR + THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT + OF ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, + CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, + INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY + REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF + CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR + OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE + POSSIBILITY OF SUCH LOSS OR DAMAGES.