diff --git a/iocAdmin/Db/Makefile b/iocAdmin/Db/Makefile index 4008c63..0b177e2 100644 --- a/iocAdmin/Db/Makefile +++ b/iocAdmin/Db/Makefile @@ -48,9 +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 $^.... - @echo file iocEnvVar.template > $@ - @echo { >> $@ - @echo pattern >> $@ - @echo { ENVNAME, ENVVAR, ENVTYPE } >> $@ - @sed -n "s/^EPICS_\([A-Z_]*\).*/{\1, EPICS_\1, epics}/p" $^ >> $@ - @echo } >> $@ + @$(RM) $@ + @$(PERL) ../genSiteEnvVars.pl $^ > $@ diff --git a/iocAdmin/Db/genSiteEnvVars.pl b/iocAdmin/Db/genSiteEnvVars.pl new file mode 100644 index 0000000..2f3406c --- /dev/null +++ b/iocAdmin/Db/genSiteEnvVars.pl @@ -0,0 +1,26 @@ +#!/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 } +__END__ + +my @epics_vars; +while(<>) { + $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");