Skip to content
Snippets Groups Projects

Fanny whatdoesitmean

Merged rodolakis requested to merge fanny_whatdoesitmean into main
4 files
+ 265
6
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 59
2
@@ -115,6 +115,24 @@ configure/CONFIG:18: *** EPICS_BASE must be set in a configure/RELEASE file. St
```
</details>
<details>
<summary>what does this mean?</summary>
This error message indicates that the `EPICS_BASE` environment variable is not defined in your **configure/RELEASE** file.
`EPICS_BASE` is a mandatory environment variable that points to the location of the EPICS base installation directory. The **configure/RELEASE** file is used to define EPICS-related environment variables required for building an IOC.
Here's an example of how to set the `EPICS_BASE `variable in the **configure/RELEASE** file:
```
EPICS_BASE=/path/to/epics/base
```
where "/path/to/epics/base" points to your EPICS base installation directory.
Once you have set the `EPICS_BASE` variable in the **configure/RELEASE** file, try building your IOC again and the error should be resolved.
</details>
### 2.5 Resolve build error #1
Modify **configure/RELEASE** so that ``EPICS_BASE`` is defined.
@@ -125,7 +143,7 @@ $ gedit configure/RELEASE &
<details>
<summary>solution</summary>
EPICS_BASE doesn't need to be defined explicitly; The synApps configure/RELEASE file defines the version of base used to build it, so only the SUPPORT path needs to be corrected.
`EPICS_BASE` doesn't need to be defined explicitly; the synApps configure/RELEASE file defines the version of base used to build it, so only the SUPPORT path needs to be corrected.
```diff
$ git diff
@@ -146,6 +164,19 @@ $
```
</details>
<details>
<summary>what does this mean?</summary>
We are using the 6.2.1 release of synApps, which is a collection of EPICS modules that are deployed and tested at the APS. The ``SUPPORT`` variable is defined to point to the directory where the synApps support modules are installed:
**/APSshare/epics/synApps_6_2_1/support**.
The ``-include`` directive is used to include the **configure/RELEASE** file from the synApps support module directory, which sets various EPICS-related environment variables, including ``EPICS_BASE``, as needed for building the IOC.
Therefore, we do not need to explicitly set the ``EPICS_BASE`` variable in your **configure/RELEASE** file because it is already set in the synApps support module's **configure/RELEASE** file.
Note: The ``include`` directive specifies a required file; an error occurs if the file doesn't exist. The ``-include`` directive specifies an optional file that is included if it exists and ignored if it doesn't.
</details>
### 2.6 Build the IOC (attempt #2)
If following the build succeeds, skip to step 2.9
@@ -173,6 +204,14 @@ make: *** [xxxApp.install] Error 2
```
</details>
<details>
<summary>what does this mean?</summary>
This error message indicates that the linker (ld) is unable to find two libraries: net and pcap. When building your IOC using the make command, the linker is responsible for resolving and linking all the required libraries.
The -l flag is used to specify libraries that need to be linked. In this case, the linker is looking for net and pcap. However, it is unable to locate these libraries, which results in the error.
</details>
### 2.7 Resolve build error #2
Tell the build system the net (and pcap) libraries aren't installed.
@@ -180,10 +219,20 @@ Tell the build system the net (and pcap) libraries aren't installed.
```
$ echo "LINUX_NET_INSTALLED = NO" > configure/CONFIG_SITE.local
```
<details>
<summary>what does this mean?</summary>
The **configure/CONFIG_SITE.local** file is used to specify local configuration settings for building an EPICS IOC. By setting ``LINUX_NET_INSTALLED`` to ``NO``, you are disabling the use of the net library by telling the build system that this library is not installed on your system, which was causing the linker errors.
The IOC build system will now use an alternative networking library instead of libnet, allowing the IOC to be built without requiring the installation of the net library.
**Note:** the linux command ``$ echo "LINUX_NET_INSTALLED = NO" > configure/CONFIG_SITE.local`` writes the text "LINUX_NET_INSTALLED = NO" to the **configure/CONFIG_SITE.local** file. If the file does not exist, the ``>`` sign creates the file and writes the output to it. If the file already exists, behavior is dependent on which shell is used. For bash, the ``>`` sign overwrites its contents with the new output. For tcsh, the ``>`` sign results in an error because the file already exists.
</details>
### 2.8 Build the IOC
We do a clean build at this point to ensure the fix for the previous failed build takes effect. The value that was set in in `CONFIG_SITE.local` causes some software to be exluded from the IOC. Without the `make distclean` the excluded software can be partially included in the IOC, which results in build problems.
We do a clean build at this point to ensure the fix for the previous failed build takes effect. The value that was set in `CONFIG_SITE.local` causes some software to be exluded from the IOC. Without the `make distclean` the excluded software can be partially included in the IOC, which results in build problems.
```
$ make distclean
@@ -267,6 +316,14 @@ perl -CSD /APSshare/epics/base-7.0.4.1/bin/rhel8-x86_64/convertRelease.pl -t /ho
```
</details>
<details>
<summary>what does this mean?</summary>
Perl is a programming language commonly used for scripting and text processing. The command is essentially invoking the convertRelease.pl script and passing the path to the IOC's top-level directory as an argument. The script will process the IOC's configure/RELEASE file and use the contents to create the envPaths file.
</details>
#### 2.10.4 Run the IOC
Start the IOC and confirm the error is resolved.
Loading