diff --git a/Dockerfile b/Dockerfile index 3f554a5..4ece951 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,6 +43,7 @@ FROM environment AS devtools RUN apt-get update -y && apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ ca-certificates \ + curl \ build-essential \ busybox \ git \ @@ -52,6 +53,7 @@ RUN apt-get update -y && apt-get upgrade -y && \ re2c \ rsync \ ssh-client \ + vim \ && rm -rf /var/lib/apt/lists/* \ && busybox --install @@ -93,15 +95,14 @@ RUN make -C ${SUPPORT}/sncseq -j $(nproc) # setup a global python venv and install ibek -RUN python3 -m venv ${VIRTUALENV} && pip install ibek==1.0.0 +RUN python3 -m venv ${VIRTUALENV} && pip install ibek==1.3.0 ##### runtime preparation stage ################################################ FROM developer AS runtime_prep # get the products from the build stage and reduce to runtime assets only -WORKDIR /min_files -RUN bash /epics/scripts/minimize.sh ${EPICS_BASE} ${IOC} $(ls -d ${SUPPORT}/*/) +RUN ibek ioc extract-runtime-assets /assets --no-defaults --extras /venv ##### runtime stage ############################################################ @@ -115,6 +116,5 @@ RUN apt-get update -y && apt-get upgrade -y && \ && rm -rf /var/lib/apt/lists/* # add products from build stage -COPY --from=runtime_prep /min_files / -COPY --from=developer ${VIRTUALENV} ${VIRTUALENV} +COPY --from=runtime_prep /assets / diff --git a/epics/ioc/Makefile b/epics/ioc/Makefile deleted file mode 100644 index 2c82d61..0000000 --- a/epics/ioc/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -TOP = . -include $(TOP)/configure/CONFIG - -DIRS += configure -DIRS += iocApp/src - -include $(TOP)/configure/RULES_TOP diff --git a/epics/ioc/config/st.cmd b/epics/ioc/config/st.cmd deleted file mode 100755 index 2459c09..0000000 --- a/epics/ioc/config/st.cmd +++ /dev/null @@ -1,10 +0,0 @@ -# EXAMPLE IOC Instance to demonstrate the ADSimDetector Generic IOC - -cd "$(TOP)" - -dbLoadDatabase "dbd/ioc.dbd" -ioc_registerRecordDeviceDriver(pdbbase) - -# start IOC shell -iocInit - diff --git a/epics/ioc/configure/CONFIG b/epics/ioc/configure/CONFIG deleted file mode 100644 index 722d9ca..0000000 --- a/epics/ioc/configure/CONFIG +++ /dev/null @@ -1,30 +0,0 @@ -# CONFIG - Load build configuration data -# -# Do not make changes to this file! - -# Allow user to override where the build rules come from -RULES = $(EPICS_BASE) - -# RELEASE files point to other application tops -include $(TOP)/configure/RELEASE --include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common -ifdef T_A --include $(TOP)/configure/RELEASE.Common.$(T_A) --include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A) -endif - -CONFIG = $(RULES)/configure -include $(CONFIG)/CONFIG --include $(CONFIG)/CONFIG.Dls - -# Override the Base definition: -INSTALL_LOCATION = $(TOP) - -# CONFIG_SITE files contain other build configuration settings -include $(TOP)/configure/CONFIG_SITE --include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common -ifdef T_A - -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A) - -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A) -endif - diff --git a/epics/ioc/configure/CONFIG_SITE b/epics/ioc/configure/CONFIG_SITE deleted file mode 100644 index 7eaf11b..0000000 --- a/epics/ioc/configure/CONFIG_SITE +++ /dev/null @@ -1,5 +0,0 @@ -# CONFIG_SITE - -CROSS_COMPILER_TARGET_ARCHS = -CHECK_RELEASE = NO - diff --git a/epics/ioc/configure/Makefile b/epics/ioc/configure/Makefile deleted file mode 100644 index 9254309..0000000 --- a/epics/ioc/configure/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -TOP=.. - -include $(TOP)/configure/CONFIG - -TARGETS = $(CONFIG_TARGETS) -CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS))) - -include $(TOP)/configure/RULES diff --git a/epics/ioc/configure/RELEASE b/epics/ioc/configure/RELEASE deleted file mode 100644 index 57c536e..0000000 --- a/epics/ioc/configure/RELEASE +++ /dev/null @@ -1,5 +0,0 @@ -# The following definitions must be changed for each site -# -# Common prefixes -SUPPORT=/epics/support -include $(SUPPORT)/configure/RELEASE diff --git a/epics/ioc/configure/RULES b/epics/ioc/configure/RULES deleted file mode 100644 index 3425740..0000000 --- a/epics/ioc/configure/RULES +++ /dev/null @@ -1,7 +0,0 @@ -# RULES - --include $(CONFIG)/RULES.Dls -include $(CONFIG)/RULES - -# Library should be rebuilt because LIBOBJS may have changed. -$(LIBNAME): ../Makefile diff --git a/epics/ioc/configure/RULES.ioc b/epics/ioc/configure/RULES.ioc deleted file mode 100644 index 901987c..0000000 --- a/epics/ioc/configure/RULES.ioc +++ /dev/null @@ -1,2 +0,0 @@ -#RULES.ioc -include $(CONFIG)/RULES.ioc diff --git a/epics/ioc/configure/RULES_DIRS b/epics/ioc/configure/RULES_DIRS deleted file mode 100644 index 3ba269d..0000000 --- a/epics/ioc/configure/RULES_DIRS +++ /dev/null @@ -1,2 +0,0 @@ -#RULES_DIRS -include $(CONFIG)/RULES_DIRS diff --git a/epics/ioc/configure/RULES_TOP b/epics/ioc/configure/RULES_TOP deleted file mode 100644 index d09d668..0000000 --- a/epics/ioc/configure/RULES_TOP +++ /dev/null @@ -1,3 +0,0 @@ -#RULES_TOP -include $(CONFIG)/RULES_TOP - diff --git a/epics/ioc/iocApp/src/Makefile.jinja b/epics/ioc/iocApp/src/Makefile.jinja deleted file mode 100644 index ab981af..0000000 --- a/epics/ioc/iocApp/src/Makefile.jinja +++ /dev/null @@ -1,24 +0,0 @@ -{# Jinja template for building the IOC Makefile #} - -# Makefile automatically generated using -# git@github.com:epics-containers/ibek-support.git - -TOP = ../.. -include $(TOP)/configure/CONFIG - -PROD_IOC = ioc -DBD += ioc.dbd -ioc_DBD += base.dbd - -{% for dbd in dbds %}ioc_DBD += {{dbd}} -{% endfor %} - -ioc_SRCS += ioc_registerRecordDeviceDriver.cpp - -{% for lib in libs %}ioc_LIBS += {{lib}} -{% endfor %} - -ioc_LIBS += $(EPICS_BASE_IOC_LIBS) -ioc_SRCS += iocMain.cpp - -include $(TOP)/configure/RULES \ No newline at end of file diff --git a/epics/ioc/iocApp/src/iocMain.cpp b/epics/ioc/iocApp/src/iocMain.cpp deleted file mode 100644 index e45dda1..0000000 --- a/epics/ioc/iocApp/src/iocMain.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* This file was automatically generated on Fri 25 May 2018 08:06:10 BST from - * source: /home/hgv27681/R3.14.12.3/support/pmac/etc/makeIocs/lab.xml - * - * *** Please do not edit this file: edit the source file instead. *** - * */ -#include "epicsExit.h" -#include "epicsThread.h" -#include "iocsh.h" - -int main(int argc, char *argv[]) -{ - if(argc>=2) { - iocsh(argv[1]); - epicsThreadSleep(.2); - } - iocsh(NULL); - epicsExit(0); - return 0; -} - diff --git a/epics/scripts/minimize.sh b/epics/scripts/minimize.sh deleted file mode 100644 index 0851155..0000000 --- a/epics/scripts/minimize.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -# a script to minimuize modules for a runtime container -# moves the output folders only to CWD and strips the symbols from binaries -# usage: -# minimize.sh src1 src2 src3 -# -# the src folders are moved to the CWD and trimmed (if the -# folder is an EPICS module) -# The full path of the original folder is preserved under the CWD. -# -# this is destructive of the source directory (for speed) so is intended -# for use in a discarded container build stage - -set -xe -shopt -s extglob - -dest=$(pwd) - -if [[ $TARGET_ARCHITECTURE == "rtems" ]]; then - # As RTEMS is statically linked the base and support modules are not needed - folder=${IOC} -fi - -# loop over all module folders we were passed -for folder in ${*} ; do - - # epics modules have a configure folder - if [[ -d ${folder}/configure ]] ; then - mkdir -p ./${folder} - # move the output folders to CWD - move=$(ls -d ${folder}/*(bin|configure|db|dbd|include|lib|template|ibek)/) - mv ${move} ./${folder} - - # strip symbols from all binaries - for binfolder in ${dest}/${folder}/*(bin|lib) ; do - strip ${binfolder}/linux-x86_64/* || : - if [[ $TARGET_ARCHITECTURE == "rtems" ]] ; then - /rtems/toolchain/powerpc-rtems5/bin/strip ${binfolder}/RTEMS-beatnik/* || : - fi - done - else - # non-module: move the whole folder verbatim to CWD - mkdir -p ./$(dirname ${folder}) # make sure parent exists - mv ${folder} ./${folder} - fi -done diff --git a/epics/support/Makefile b/epics/support/Makefile deleted file mode 100644 index f4fb1fb..0000000 --- a/epics/support/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -TOPTARGETS := all clean - -include configure/MODULES - -$(TOPTARGETS): $(MODULES) -$(MODULES): - $(MAKE) -j $(nproc) -C $@ $(MAKECMDGOALS) - -.PHONY: $(TOPTARGETS) $(MODULES) diff --git a/epics/support/configure/RELEASE b/epics/support/configure/RELEASE deleted file mode 100644 index 7bd035d..0000000 --- a/epics/support/configure/RELEASE +++ /dev/null @@ -1,13 +0,0 @@ -# Global configure/RELEASE file for epics-containers IOCs - -SUPPORT=/epics/support --include $(TOP)/configure/SUPPORT.$(EPICS_HOST_ARCH) --include $(TOP)/configure/EPICS_BASE --include $(TOP)/configure/EPICS_BASE.$(EPICS_HOST_ARCH) - -# Paths to modules built in epics-base container -EPICS_BASE=/epics/epics-base -SNCSEQ=/epics/support/sncseq - -# Additional Support Modules for individual IOCs will be added below this line -