diff --git a/4-Deploy-motorVMC.md b/4-Deploy-motorVMC.md index 1b2b4754265f8b931ea48cb4d2f7f52b7c624e07..c3cbe2c25d198e4e3cd2bd82280d3f5c6c4342fb 100644 --- a/4-Deploy-motorVMC.md +++ b/4-Deploy-motorVMC.md @@ -73,6 +73,7 @@ make: *** No rule to make target '/configure/RULES_TOP'. Stop. ``` </details> + ### 4.4 Resolve build error #1 This build error occurs for the same reason the build error occurred in [step 2.4](2-IOC-deployment.md#24-build-the-ioc-attempt-1): `EPICS_BASE` isn't defined. @@ -82,10 +83,15 @@ The error was much more helpful in step 2.4 because [xxx's CONFIG file prints th <details> <summary>hint</summary> +The README.md file indicates: *"The definitions of `MOTOR` and `EPICS_BASE` need to be corrected in `motorVMC/configure/RELEASE` before motorVMC can be built."* + The **motorVMC/configure/RELEASE** file doesn't contain any definitions, but it does include other files **if they exist**. + + </details> + <details> <summary>solution</summary> @@ -120,6 +126,68 @@ MOTOR_VMC=/home/beams/USERNAME/PET-S2/epics/synApps/support/motorVMC ``` </details> + +<details> +<summary>where is EPICS_BASE defined?</summary> + +The `EPICS_BASE` variable is not explicitly defined: it is defined in the motor + configuration file that is included with on line 2 of the configure/RELEASE.local file `-include $(MOTOR)/modules/RELEASE.$(EPICS_HOST_ARCH).local`: + +``` +$ cat ${MOTOR}/modules/RELEASE.${EPICS_HOST_ARCH}.local +MOTOR = /net/aquila/export/APSmaster/gateway/epics/synApps_6_2_1/support/motor-R7-2-2 +ASYN = /APSshare/epics/synApps_6_2_1/support/asyn-R4-42 +SNCSEQ = /APSshare/epics/synApps_6_2_1/support/seq-2-2-9 +BUSY = /APSshare/epics/synApps_6_2_1/support/busy-R1-7-3 +IPAC = /APSshare/epics/synApps_6_2_1/support/ipac-2-16 +LUA = /APSshare/epics/synApps_6_2_1/support/lua-R3-0-2 +EPICS_BASE = /APSshare/epics/base-7.0.4.1 +SUPPORT = /APSshare/epics/synApps_6_2_1/support +``` +</details> + +<details> +<summary>what is the difference between RELEASE and RELEASE.local?</summary> + +In the motorVMC module's configure folder, the presence of two RELEASE files, RELEASE and RELEASE.local, suggests that there are two levels of configuration that can be applied when building the IOC. Here's the difference between the two: + +- RELEASE file: +The RELEASE file contains the default configuration for the motorVMC module. It specifies the paths to external support modules or libraries required by the motorVMC module. This file provides a standard configuration that is used by default when building the IOC. + + +- RELEASE.local file: +The RELEASE.local file is intended for local customization of the configuration. It allows you to override or modify the default configuration specified in the RELEASE file. By including the RELEASE.local file in the configure/RELEASE file, you can provide additional or alternative configuration settings specific to your local environment or requirements. + +</details> + +<details> +<summary>what is the difference between "building inside motor" and "building outside motor"?</summary> + + +The RELEASE file contains the following: + +``` +$ cat configure/RELEASE +# RELEASE - Location of external support modules + +# Use motor/module's generated release file when buidling inside motor +-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local +# Use motorVMC's RELEASE.local when building outside motor +-include $(TOP)/configure/RELEASE.local +``` + +"building inside motor" and "building outside motor" refer to different scenarios or environments for compiling or building the IOC. + +- Building inside motor: +When building inside motor, it implies that you are within the motor module's directory structure. The `$(TOP)` variable represents the top-level directory of the motor module. In this case, the IOC is being built as part of the motor module itself. +The line `-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local` is included in the configure/RELEASE file. This line instructs the build system to include the generated release file from the motor module. The release file contains configuration information specific to the motor module, such as paths to external support modules or libraries. + +- Building outside motor: +When building outside motor, it means you are not within the motor module's directory structure. It implies that you are building the IOC separately from the motor module: the 'make' command is issued in the ${SUPPORT_DIR}/motorVMC directory. +In this case, the line -include `$(TOP)/configure/RELEASE.local` is included in the configure/RELEASE file. This line instructs the build system to include the RELEASE.local file from the motorVMC module. The RELEASE.local file typically contains configuration information specific to the IOC being built outside the motor module. + +</details> + ### 4.5 Build motorVMC (Attempt #2) If the following build succeeds, proceed to [step 4.8](4-Deploy-motorVMC.md#48-confirm-build-products-exist).