EPICS: EDM compilation and configuration

From CLONWiki
Jump to navigation Jump to search

Links

Web page: http://ics-web.sns.ornl.gov/edm/

Download: http://ics-web.sns.ornl.gov/edm/log/getLatest.php

User Guide: http://ics-web.sns.ornl.gov/edm/edmUserManual/index.html

MCC EDM screens: http://opweb.acc.jlab.org/internal/edm/

MCC RSYNC URI of EDM configurations:

Directory Configuration

Downloaded the EDM version 1-12-37 and unpacked into $EPICS_EXTENSIONS/src The default directory containing EDM is edm, which is soft link to version directory.

nerses@clon01:src> ls -ld $EPICS_EXTENSIONS/src/edm*
lrwxrwxrwx   1 epics    clas          11 Oct  5 12:42 /usr/local/clas/devel/R3.14.8.2/extensions/src/edm -> edm-1-12-37/
drwxrwxr-x  27 nerses   clas        4096 Oct  5 02:17 /usr/local/clas/devel/R3.14.8.2/extensions/src/edm-1-11-1v/
-rw-rw----   1 nerses   clas     2631404 Dec  4  2008 /usr/local/clas/devel/R3.14.8.2/extensions/src/edm-1-11-1v.tgz
drwxrwxr-x  29 nerses   clas        4096 Oct  5 15:25 /usr/local/clas/devel/R3.14.8.2/extensions/src/edm-1-12-37/
-rw-rw-r--   1 nerses   clas     2701933 Jul  1  2009 /usr/local/clas/devel/R3.14.8.2/extensions/src/edm-1-12-37.tar.gz

Compilation

NOTE: Compilation on linux runs without a problem. But, on both solaris-x86 and solaris-sparc modifications should be done.

Required packages for solaris

libgif
download from sourcefourge.net
libungif
available at /opt/sfw/{include,lib}
libcurl
available at /opt/sfw/{include,lib}

Summary of modifications

  1. Under Solaris __STDC__ have to be defined in order to use the correct calls to regex functions.
    1. To have network capability of EDM one should change to USE_CURL=YES in lib/Makefile and add libcurl in the list of libraries to be linked.
    2. And since libcurl is in /opt/sfw/lib directory, that directory should be added into list of the lookup directories.
    3. Also the /opt/sfw/include should be added into list of include directories.
  2. In some of the EDM subdirectories the libCom and libca from $EPICS_BASE/lib/$EPICS_HOST_ARCH should be added.
  3. In the giflib/Makefile the loopkup directory for libraries of /opt/sfw/lib should be added for libungif
  4. pvFactory/textupdate.cc has a call to the int finite(double dsrc); function which under solaris requires inclusion of ieeefp.h as opposite to linux which requires math.h and included from other header files. To overcome the predefined macro __SUNPRO_CC was used to identify Sun's compiler.
  5. For slaclib compilation the shared libraries X11 Xt 114135a4-6f6c-11d3-95bc-00104b8742df cfcaa62e-8199-11d3-a77f-00104b8742df should be added.

NOTE: The detailed summary of changes is in the #Essential diff of original and modified sources

Configuration

  • A edm startup tcsh script $EPICS_SCRIPTS/edm script was created based on edm/setup.sh
    • It supports generation of architecture depended configuration files in respective subdirectories under edm/setup. The directories edm/setup{linux-x86,solaris-x86,solaris-sparc} are actual configuration directories for respective compiled edm flavours.
    • colors.list, fonts.list and calc.list are in the edm/setup directory and links are created from architecture depended directories to them.
  • In the clas_epics.adl the command to run edm is:
/bin/tcsh -f $EPICS_SCRIPTS/edm -x monticello.edl

Odd things noticed while was trying to ru from medm:

  1. It is strange but medm calls scripts with same environment but differently.
  2. tcsh instead of csh is must. At least under solaris, otherwise will not work.

Essential diff of original and modified sources

diff -r -bB edm-1-12-37/baselib/Makefile edm-1-12-37.orig/baselib/Makefile
11c11
<    USR_CXXFLAGS_solaris += -D__solaris__ -DSINGLE_THREADED=1 -D__epics__=1 -D__STDC__
---
>    USR_CXXFLAGS_solaris += -D__solaris__ -DSINGLE_THREADED=1 -D__epics__=1
27,29d26
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/calcPv/Makefile edm-1-12-37.orig/calcPv/Makefile
31,33d30
<    USR_LIBS_solaris += Com
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
diff -r -bB edm-1-12-37/choiceButton/Makefile edm-1-12-37.orig/choiceButton/Makefile
24,26d23
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/diamondlib/Makefile edm-1-12-37.orig/diamondlib/Makefile
28,30d27
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/edmMain/Makefile edm-1-12-37.orig/edmMain/Makefile
28,30d27
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/epicsPv/Makefile edm-1-12-37.orig/epicsPv/Makefile
31,33c31
<    USR_LIBS_solaris += ca Com
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
---
>    USR_LIBS += ca Com
diff -r -bB edm-1-12-37/giflib/Makefile edm-1-12-37.orig/giflib/Makefile
42c42
<    USR_LDFLAGS_solaris += -L$(GIF_LIB) -L/opt/sfw/lib
---
>    USR_LDFLAGS_solaris += -L$(GIF_LIB)
diff -r -bB edm-1-12-37/indicator/Makefile edm-1-12-37.orig/indicator/Makefile
24,26d23
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/lib/Makefile edm-1-12-37.orig/lib/Makefile
7,8c7
<   #USE_CURL=NO
<   USE_CURL=YES
---
>   USE_CURL=NO
38,39d36
<  USR_INCLUDES_solaris += -I/opt/sfw/include
<  USR_LDFLAGS_solaris += -L/opt/sfw/lib
diff -r -bB edm-1-12-37/locPv/Makefile edm-1-12-37.orig/locPv/Makefile
23,24d22
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
diff -r -bB edm-1-12-37/logPv/Makefile edm-1-12-37.orig/logPv/Makefile
31,34d30
<    USR_LIBS_solaris += Com ca
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/multiSegRampButton/Makefile edm-1-12-37.orig/multiSegRampButton/Makefile
24,26d23
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/pnglib/Makefile edm-1-12-37.orig/pnglib/Makefile
36,38d35
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/pvFactory/Makefile edm-1-12-37.orig/pvFactory/Makefile
14c14
<    USR_CXXFLAGS_solaris += -DSINGLE_THREADED=1 -D__epics__=1 -D__STDC__
---
>    USR_CXXFLAGS_solaris += -DSINGLE_THREADED=1 -D__epics__=1
22,24d21
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/pvFactory/textupdate.cc edm-1-12-37.orig/pvFactory/textupdate.cc
10,13d9
< #ifdef __SUNPRO_CC
< #include <ieeefp.h>
< #endif
<
Only in edm-1-12-37/setup: colors.list.orig
Only in edm-1-12-37/setup: setup.csh
Only in edm-1-12-37/setup: linux-x86
Only in edm-1-12-37/setup: solaris-sparc
Only in edm-1-12-37/setup: solaris-x86
diff -r -bB edm-1-12-37/slaclib/Makefile edm-1-12-37.orig/slaclib/Makefile
24,28d23
<    ifneq ($(findstring solaris,$(EPICS_HOST_ARCH)),)
<  LDLIBS += -lX11 -lXt
<  LDLIBS += -l114135a4-6f6c-11d3-95bc-00104b8742df
<  LDLIBS += -lcfcaa62e-8199-11d3-a77f-00104b8742df
<    endif
diff -r -bB edm-1-12-37/triumflib/Makefile edm-1-12-37.orig/triumflib/Makefile
28,30d27
<    USR_SYS_LIBS_solaris += curl
<    USR_LDFLAGS_solaris += -L/opt/sfw/lib
<
diff -r -bB edm-1-12-37/videowidget/Makefile edm-1-12-37.orig/videowidget/Makefile
29,31d28
<   USR_SYS_LIBS_solaris += curl
<   USR_LDFLAGS_solaris += -L/opt/sfw/lib
<