From 4668a83003382674cb83335b5bc279d760973bdf Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Sun, 27 Oct 2024 22:29:48 +0000 Subject: [PATCH 1/6] Use perl instead of sed --- iocAdmin/Db/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/iocAdmin/Db/Makefile b/iocAdmin/Db/Makefile index 4008c63..1e06234 100644 --- a/iocAdmin/Db/Makefile +++ b/iocAdmin/Db/Makefile @@ -48,9 +48,9 @@ $(COMMON_DIR)/iocAdminVxWorks.db: $(COMMON_DIR)/iocAdminScanMon.db $(COMMON_DIR) $(COMMON_DIR)/siteEnvVars.substitutions: $(EPICS_BASE)/configure/CONFIG_SITE_ENV $(EPICS_BASE)/configure/CONFIG_ENV @echo Expanding siteEnvVars.substitutions from $^.... - @echo file iocEnvVar.template > $@ - @echo { >> $@ - @echo pattern >> $@ - @echo { ENVNAME, ENVVAR, ENVTYPE } >> $@ - @sed -n "s/^EPICS_\([A-Z_]*\).*/{\1, EPICS_\1, epics}/p" $^ >> $@ - @echo } >> $@ + @echo file iocEnvVar.template> $@ + @echo {>> $@ + @echo pattern>> $@ + @echo { ENVNAME, ENVVAR, ENVTYPE }>> $@ + @perl -n -e "$$m = s/^EPICS_([A-Z_]*).*/{$${1}, EPICS_$${1}, epics}/; print $$_ if $$m;" < $^ >> $@ + @echo }>> $@ From 31717d4357ac54d63c7c6b54976c3da4faa304f4 Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Tue, 29 Oct 2024 01:43:29 +0000 Subject: [PATCH 2/6] Use standalone perl script --- iocAdmin/Db/Makefile | 7 +------ iocAdmin/Db/genSiteEnvVars.pl | 9 +++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 iocAdmin/Db/genSiteEnvVars.pl diff --git a/iocAdmin/Db/Makefile b/iocAdmin/Db/Makefile index 1e06234..87b0584 100644 --- a/iocAdmin/Db/Makefile +++ b/iocAdmin/Db/Makefile @@ -48,9 +48,4 @@ $(COMMON_DIR)/iocAdminVxWorks.db: $(COMMON_DIR)/iocAdminScanMon.db $(COMMON_DIR) $(COMMON_DIR)/siteEnvVars.substitutions: $(EPICS_BASE)/configure/CONFIG_SITE_ENV $(EPICS_BASE)/configure/CONFIG_ENV @echo Expanding siteEnvVars.substitutions from $^.... - @echo file iocEnvVar.template> $@ - @echo {>> $@ - @echo pattern>> $@ - @echo { ENVNAME, ENVVAR, ENVTYPE }>> $@ - @perl -n -e "$$m = s/^EPICS_([A-Z_]*).*/{$${1}, EPICS_$${1}, epics}/; print $$_ if $$m;" < $^ >> $@ - @echo }>> $@ + @perl ../genSiteEnvVars.pl < $^ >> $@ diff --git a/iocAdmin/Db/genSiteEnvVars.pl b/iocAdmin/Db/genSiteEnvVars.pl new file mode 100644 index 0000000..197964c --- /dev/null +++ b/iocAdmin/Db/genSiteEnvVars.pl @@ -0,0 +1,9 @@ +print("file iocEnvVar.template\n"); +print("{\n"); +print("pattern\n"); +print("{ ENVNAME, ENVVAR, ENVTYPE }\n"); +while(<>) { + $m = s/^EPICS_([A-Z_]*).*/{${1}, EPICS_${1}, epics}/; + print $_ if $m; +} +print("}\n"); From 1b211d2a32c173b73bca0688aee9e8c166d5f680 Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Tue, 29 Oct 2024 01:45:22 +0000 Subject: [PATCH 3/6] Remove append --- iocAdmin/Db/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iocAdmin/Db/Makefile b/iocAdmin/Db/Makefile index 87b0584..ffc0d91 100644 --- a/iocAdmin/Db/Makefile +++ b/iocAdmin/Db/Makefile @@ -48,4 +48,4 @@ $(COMMON_DIR)/iocAdminVxWorks.db: $(COMMON_DIR)/iocAdminScanMon.db $(COMMON_DIR) $(COMMON_DIR)/siteEnvVars.substitutions: $(EPICS_BASE)/configure/CONFIG_SITE_ENV $(EPICS_BASE)/configure/CONFIG_ENV @echo Expanding siteEnvVars.substitutions from $^.... - @perl ../genSiteEnvVars.pl < $^ >> $@ + @perl ../genSiteEnvVars.pl < $^ > $@ From 3b07e0fc2c1c912b87178e5c74653407ac9bfe5d Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Tue, 10 Jun 2025 00:20:35 +0100 Subject: [PATCH 4/6] Tidy up perl script to use here doc --- iocAdmin/Db/Makefile | 3 ++- iocAdmin/Db/genSiteEnvVars.pl | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/iocAdmin/Db/Makefile b/iocAdmin/Db/Makefile index ffc0d91..0b177e2 100644 --- a/iocAdmin/Db/Makefile +++ b/iocAdmin/Db/Makefile @@ -48,4 +48,5 @@ $(COMMON_DIR)/iocAdminVxWorks.db: $(COMMON_DIR)/iocAdminScanMon.db $(COMMON_DIR) $(COMMON_DIR)/siteEnvVars.substitutions: $(EPICS_BASE)/configure/CONFIG_SITE_ENV $(EPICS_BASE)/configure/CONFIG_ENV @echo Expanding siteEnvVars.substitutions from $^.... - @perl ../genSiteEnvVars.pl < $^ > $@ + @$(RM) $@ + @$(PERL) ../genSiteEnvVars.pl $^ > $@ diff --git a/iocAdmin/Db/genSiteEnvVars.pl b/iocAdmin/Db/genSiteEnvVars.pl index 197964c..85d017e 100644 --- a/iocAdmin/Db/genSiteEnvVars.pl +++ b/iocAdmin/Db/genSiteEnvVars.pl @@ -1,7 +1,9 @@ -print("file iocEnvVar.template\n"); -print("{\n"); -print("pattern\n"); -print("{ ENVNAME, ENVVAR, ENVTYPE }\n"); +#!/usr/bin/env perl +print <<__END__; +file "iocEnvVar.template" { + pattern { ENVNAME, ENVVAR, ENVTYPE } +__END__ + while(<>) { $m = s/^EPICS_([A-Z_]*).*/{${1}, EPICS_${1}, epics}/; print $_ if $m; From 45ed5c0b0797a41d67ce4ef34a3f2b82e9c10036 Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Tue, 10 Jun 2025 00:30:14 +0100 Subject: [PATCH 5/6] Add usage --- iocAdmin/Db/genSiteEnvVars.pl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/iocAdmin/Db/genSiteEnvVars.pl b/iocAdmin/Db/genSiteEnvVars.pl index 85d017e..61feeb7 100644 --- a/iocAdmin/Db/genSiteEnvVars.pl +++ b/iocAdmin/Db/genSiteEnvVars.pl @@ -1,4 +1,11 @@ #!/usr/bin/env perl +# +# Usage: genSiteEnvVars.pl CONFIG_SITE_ENV +# +# Reads an EPICS CONFIG_SITE_ENV file and outputs +# a substitutions file to generate appropriate EPICS +# records for those variables via iocEnvVar.template +# print <<__END__; file "iocEnvVar.template" { pattern { ENVNAME, ENVVAR, ENVTYPE } From 8f8a475d4b0c50d4ee3d23e851ac16e81fd4fa64 Mon Sep 17 00:00:00 2001 From: Simon Rose Date: Thu, 18 Dec 2025 09:34:36 +0100 Subject: [PATCH 6/6] Unique-ify the output of genSiteEnvVars.pl --- iocAdmin/Db/genSiteEnvVars.pl | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/iocAdmin/Db/genSiteEnvVars.pl b/iocAdmin/Db/genSiteEnvVars.pl index 61feeb7..2f3406c 100644 --- a/iocAdmin/Db/genSiteEnvVars.pl +++ b/iocAdmin/Db/genSiteEnvVars.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# Usage: genSiteEnvVars.pl CONFIG_SITE_ENV +# Usage: genSiteEnvVars.pl CONFIG_SITE_ENV [ ... ] # # Reads an EPICS CONFIG_SITE_ENV file and outputs # a substitutions file to generate appropriate EPICS @@ -11,8 +11,16 @@ pattern { ENVNAME, ENVVAR, ENVTYPE } __END__ +my @epics_vars; while(<>) { - $m = s/^EPICS_([A-Z_]*).*/{${1}, EPICS_${1}, epics}/; - print $_ if $m; + $m = s/^EPICS_([A-Z_]*).*\n/${1}/; + push(@epics_vars, $_) if $m; +} + +my %varcount; +my @unique_vars = grep { not $varcount{$_}++ } @epics_vars; + +foreach (@unique_vars) { + print "{ $_, EPICS_$_, epics }\n" } print("}\n");