From 930027e1f91226e648b65b3e644765f8e6b7681a Mon Sep 17 00:00:00 2001 From: Emilio Perez Date: Wed, 17 Jun 2020 18:50:39 +0100 Subject: [PATCH] Initial commit Based on dlspkgs and using upstream module version --- default.nix | 83 ++ edm/default.nix | 65 + edm/libs-to-syslibs.patch | 1046 +++++++++++++++++ epics-adcore/default.nix | 56 + epics-adpython/default.nix | 13 + epics-adsimdetector/default.nix | 12 + epics-aravisgige/default.nix | 42 + epics-aravisgige/lib-to-syslib.patch | 53 + epics-asyn/default.nix | 12 + epics-base/default.nix | 44 + epics-base/no_abs_path_to_cc.patch | 20 + epics-busy/default.nix | 12 + epics-calc/default.nix | 11 + epics-ffmpegserver/default.nix | 20 + epics-ffmpegserver/use-sys-libs.patch | 27 + epics-modules/generic/default.nix | 60 + epics-motor/default.nix | 11 + epics-normativetypes/default.nix | 12 + epics-pmac/default.nix | 15 + epics-pmac/disable-tests.patch | 33 + epics-pvaccess/default.nix | 13 + epics-pvaclient/default.nix | 14 + epics-pvcommon/default.nix | 12 + epics-pvdata/default.nix | 13 + epics-pvdatabase/default.nix | 13 + epics-seq/default.nix | 13 + epics-sscan/default.nix | 11 + epics-streamdevice/default.nix | 34 + .../fix-version-discovery.patch | 14 + patch-configure/default.nix | 16 + patch-configure/patch-configure | 94 ++ 31 files changed, 1894 insertions(+) create mode 100644 default.nix create mode 100644 edm/default.nix create mode 100644 edm/libs-to-syslibs.patch create mode 100644 epics-adcore/default.nix create mode 100644 epics-adpython/default.nix create mode 100644 epics-adsimdetector/default.nix create mode 100644 epics-aravisgige/default.nix create mode 100644 epics-aravisgige/lib-to-syslib.patch create mode 100644 epics-asyn/default.nix create mode 100644 epics-base/default.nix create mode 100644 epics-base/no_abs_path_to_cc.patch create mode 100644 epics-busy/default.nix create mode 100644 epics-calc/default.nix create mode 100644 epics-ffmpegserver/default.nix create mode 100644 epics-ffmpegserver/use-sys-libs.patch create mode 100644 epics-modules/generic/default.nix create mode 100644 epics-motor/default.nix create mode 100644 epics-normativetypes/default.nix create mode 100644 epics-pmac/default.nix create mode 100644 epics-pmac/disable-tests.patch create mode 100644 epics-pvaccess/default.nix create mode 100644 epics-pvaclient/default.nix create mode 100644 epics-pvcommon/default.nix create mode 100644 epics-pvdata/default.nix create mode 100644 epics-pvdatabase/default.nix create mode 100644 epics-seq/default.nix create mode 100644 epics-sscan/default.nix create mode 100644 epics-streamdevice/default.nix create mode 100644 epics-streamdevice/fix-version-discovery.patch create mode 100644 patch-configure/default.nix create mode 100755 patch-configure/patch-configure diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..17ef0dc --- /dev/null +++ b/default.nix @@ -0,0 +1,83 @@ +{ pkgs ? import (fetchTarball + "https://github.com/NixOS/nixpkgs-channels/archive/nixos-20.03.tar.gz") { } }: +with pkgs; rec { + buildEpicsModule = + callPackage ./epics-modules/generic { inherit epics-base patch-configure; }; + epics-base = callPackage ./epics-base { }; + patch-configure = callPackage ./patch-configure { }; + epics-sscan = callPackage ./epics-sscan { inherit buildEpicsModule; }; + epics-calc = callPackage ./epics-calc { inherit buildEpicsModule; }; + epics-asyn = callPackage ./epics-asyn { inherit buildEpicsModule; }; + epics-busy = + callPackage ./epics-busy { inherit buildEpicsModule epics-asyn; }; + epics-pvcommon = callPackage ./epics-pvcommon { inherit buildEpicsModule; }; + epics-pvdata = + callPackage ./epics-pvdata { inherit buildEpicsModule epics-pvcommon; }; + epics-normativetypes = callPackage ./epics-normativetypes { + inherit buildEpicsModule epics-pvcommon epics-pvdata; + }; + epics-pvaccess = callPackage ./epics-pvaccess { + inherit buildEpicsModule epics-pvcommon epics-pvdata; + }; + epics-pvdatabase = callPackage ./epics-pvdatabase { + inherit buildEpicsModule epics-pvcommon epics-pvdata epics-pvaccess; + }; + epics-pvaclient = callPackage ./epics-pvaclient { + inherit buildEpicsModule epics-pvdata epics-normativetypes epics-pvaccess; + }; + epics-adcore = callPackage ./epics-adcore { + inherit buildEpicsModule epics-asyn epics-busy epics-sscan epics-calc + epics-pvdata epics-normativetypes epics-pvaccess epics-pvdatabase; + }; + epics-adsimdetector = callPackage ./epics-adsimdetector { + inherit buildEpicsModule epics-asyn epics-adcore; + }; + epics-ffmpegserver = callPackage ./epics-ffmpegserver { + inherit buildEpicsModule epics-asyn epics-adcore epics-adsimdetector; + }; + epics-aravisgige = callPackage ./epics-aravisgige { + inherit buildEpicsModule epics-asyn epics-adcore; + }; + epics-streamdevice = + callPackage ./epics-streamdevice { inherit buildEpicsModule epics-asyn; }; + epics-seq = callPackage ./epics-seq { inherit buildEpicsModule; }; + epics-motor = callPackage ./epics-motor { + inherit buildEpicsModule epics-busy epics-asyn; + }; + epics-pmac = callPackage ./epics-pmac { + inherit buildEpicsModule epics-calc epics-busy epics-asyn epics-motor; + }; + epics-adpython = callPackage ./epics-adpython { + inherit buildEpicsModule epics-asyn epics-adcore; + }; + edm = callPackage ./edm { inherit epics-base patch-configure; }; + epics-all = buildEnv { + name = "epics-all"; + ignoreCollisions = true; + pathsToLink = [ "/bin" ]; + paths = [ + patch-configure + epics-base + epics-seq + epics-sscan + epics-asyn + epics-calc + epics-busy + epics-pvcommon + epics-pvdata + epics-normativetypes + epics-pvaccess + epics-pvdatabase + epics-pvaclient + epics-adcore + epics-streamdevice + epics-motor + epics-pmac + epics-adsimdetector + epics-adpython + epics-aravisgige + epics-ffmpegserver + edm + ]; + }; +} diff --git a/edm/default.nix b/edm/default.nix new file mode 100644 index 0000000..d19e9ec --- /dev/null +++ b/edm/default.nix @@ -0,0 +1,65 @@ +{ libpng, zlib, freetype, fontconfig, patch-configure, giflib, motif, xorg +, readline, epics-base, stdenv }: + +stdenv.mkDerivation { + name = "edm"; + buildInputs = [ + libpng + zlib.dev + patch-configure + giflib + xorg.libX11 + xorg.libXt + xorg.libXpm + xorg.libXext + xorg.libXmu + xorg.libXp + xorg.libXt + xorg.libXtst + freetype + fontconfig + motif + readline + epics-base + ]; + patches = [ ./libs-to-syslibs.patch ]; + src = builtins.fetchGit { + url = "https://github.com/hir12111/edm"; + ref = "master"; + }; + + findSrc = builtins.toFile "find-epics" '' + #!/usr/bin/env bash + echo @out@ + ''; + + configurePhase = '' + runHook preConfigure + patch-configure configure/RELEASE + cat << EOF > configure/os/CONFIG_SITE.linux-x86_64.linux-x86_64 + -include \$(TOP)/configure/os/CONFIG_SITE.linux-x86.linux-x86 + X11_LIB=${xorg.libX11}/lib + X11_INC=${xorg.libX11}/include + MOTIF_LIB=${motif}/lib + MOTIF_INC=${motif}/include + EOF + ''; + + buildPhase = '' + true + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp -rf * $out + substituteAll $findSrc $out/bin/find-$name + chmod +x $out/bin/find-$name + cd $out + export EPICS_EXTENSIONS=$out + make + ln -s $out/bin/linux-x86_64/edm $out/bin + find . \( -name '*.c' -or -name '*.cc' -or -name '*.cpp' -or -name '*.o' \) -exec rm {} \; + runHook postInstall + ''; +} diff --git a/edm/libs-to-syslibs.patch b/edm/libs-to-syslibs.patch new file mode 100644 index 0000000..f834dcd --- /dev/null +++ b/edm/libs-to-syslibs.patch @@ -0,0 +1,1046 @@ +diff --git a/src/edm/baselib/Makefile b/src/edm/baselib/Makefile +index 9274d3c..08c7a9f 100644 +--- a/src/edm/baselib/Makefile ++++ b/src/edm/baselib/Makefile +@@ -12,8 +12,7 @@ ifdef EPICS_HOST_ARCH + + USR_CXXFLAGS_hpux11_11_mt += +W652 -DHP_UX=1111 -DSINGLE_THREADED=1 -D__epics__=1 + +- EdmBase_LIBS_Linux += Xm Xt Xp Xtst X11 +- EdmBase_SYS_LIBS_Linux += pthread dl ++ EdmBase_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + EdmBase_LIBS_Darwin += Xm Xt Xp Xtst X11 + EdmBase_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/calcPv/Makefile b/src/edm/calcPv/Makefile +index c9caac8..7ad611c 100644 +--- a/src/edm/calcPv/Makefile ++++ b/src/edm/calcPv/Makefile +@@ -12,8 +12,7 @@ ifdef EPICS_HOST_ARCH + + USR_CXXFLAGS_hpux11_11_mt += +W652 -DHP_UX=1111 -DSINGLE_THREADED=1 -D__epics__=1 + +- EdmBase_LIBS_Linux += Xm Xt Xp Xtst X11 +- EdmBase_SYS_LIBS_Linux += pthread dl ++ EdmBase_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + EdmBase_LIBS_Darwin += Xm Xt Xp Xtst X11 + EdmBase_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/calcPvOld/Makefile b/src/edm/calcPvOld/Makefile +index a76c709..72d0c38 100644 +--- a/src/edm/calcPvOld/Makefile ++++ b/src/edm/calcPvOld/Makefile +@@ -12,8 +12,7 @@ ifdef EPICS_HOST_ARCH + + USR_CXXFLAGS_hpux11_11_mt += +W652 -DHP_UX=1111 -DSINGLE_THREADED=1 -D__epics__=1 + +- EdmBase_LIBS_Linux += Xm Xt Xp Xtst X11 +- EdmBase_SYS_LIBS_Linux += pthread dl ++ EdmBase_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + EdmBase_LIBS_Darwin += Xm Xt Xp Xtst X11 + EdmBase_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/choiceButton/Makefile b/src/edm/choiceButton/Makefile +index 853cd9e..ca9acaf 100644 +--- a/src/edm/choiceButton/Makefile ++++ b/src/edm/choiceButton/Makefile +@@ -8,8 +8,7 @@ ifdef EPICS_HOST_ARCH + USR_LIBS += EdmBase cfcaa62e-8199-11d3-a77f-00104b8742df + + USR_CXXFLAGS_Linux += -DSINGLE_THREADED=1 -D__epics__=1 +- USR_LIBS_Linux += Xm Xt Xp Xtst X11 +- USR_SYS_LIBS_Linux += pthread dl ++ USR_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + USR_CXXFLAGS_Darwin += -DSINGLE_THREADED=1 -D__epics__=1 -Wno-long-long + USR_LIBS_Darwin += Xm Xt Xp Xtst X11 +diff --git a/src/edm/diamondlib/Makefile b/src/edm/diamondlib/Makefile +index 9647e19..8bd3a6e 100644 +--- a/src/edm/diamondlib/Makefile ++++ b/src/edm/diamondlib/Makefile +@@ -13,8 +13,7 @@ ifdef EPICS_HOST_ARCH + EdmDiamond_LIBS += 114135a4-6f6c-11d3-95bc-00104b8742df + EdmDiamond_LIBS += Com + +- EdmDiamond_LIBS_Linux += Xm Xt Xp Xtst X11 +- EdmDiamond_SYS_LIBS_Linux += pthread dl ++ EdmDiamond_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + EdmDiamond_LIBS_Darwin += Xm Xt Xp Xtst X11 + EdmDiamond_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/edmMain/Makefile b/src/edm/edmMain/Makefile +index c8bbe8a..9fd2e0e 100644 +--- a/src/edm/edmMain/Makefile ++++ b/src/edm/edmMain/Makefile +@@ -13,8 +13,7 @@ ifdef EPICS_HOST_ARCH + edmMain_LIBS += EdmBase cfcaa62e-8199-11d3-a77f-00104b8742df + edmMain_LIBS += 114135a4-6f6c-11d3-95bc-00104b8742df + +- edmMain_LIBS_Linux += Xm Xmu Xt Xp Xtst X11 +- edmMain_SYS_LIBS_Linux += pthread dl ++ edmMain_SYS_LIBS_Linux += Xm Xmu Xt Xp Xtst X11 pthread dl + + edmMain_LIBS_Darwin += Xm Xmu Xt Xp Xtst X11 + edmMain_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/giflib/Makefile b/src/edm/giflib/Makefile +index 356358c..25bb887 100644 +--- a/src/edm/giflib/Makefile ++++ b/src/edm/giflib/Makefile +@@ -20,8 +20,7 @@ GIF_INC ?= /usr/include + USR_LIBS += EdmBase cfcaa62e-8199-11d3-a77f-00104b8742df + USR_LIBS += 114135a4-6f6c-11d3-95bc-00104b8742df + +- USR_LIBS_Linux += Xm Xt Xp Xtst X11 +- USR_SYS_LIBS_Linux += pthread dl gif ++ USR_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl gif + + USR_LIBS_Darwin += Xm Xt Xp Xtst X11 + USR_SYS_LIBS_Darwin += pthread dl gif +@@ -37,7 +36,7 @@ GIF_INC ?= /usr/include + INSTALL_INCLUDE = $(INSTALL_LOCATION)/include/edm + USR_INCLUDES += -I../../util -I../../lib + +- USR_INCLUDES += -I$(MOTIF_INC) -I$(X11_INC) ++ USR_INCLUDES += -I$(MOTIF_INC) -I$(X11_INC) + USR_INCLUDES_solaris += -I$(GIF_INC) + USR_LDFLAGS_solaris += -L$(GIF_LIB) + +diff --git a/src/edm/giflib/gif.cc b/src/edm/giflib/gif.cc +index 01e1870..766a945 100644 +--- a/src/edm/giflib/gif.cc ++++ b/src/edm/giflib/gif.cc +@@ -431,7 +431,7 @@ struct sigaction sa, oldsa, dummysa; + do { + this->actWin->appCtx->expandFileName( i, name, expStr.getExpanded(), + ".gif", 127 ); +- gif = DGifOpenFileName( name ); ++ gif = DGifOpenFileName( name, NULL ); + i++; + } while ( ( i < actWin->appCtx->numPaths ) && !gif ); + if ( !gif ) { +@@ -887,7 +887,7 @@ struct sigaction sa, oldsa, dummysa; + + } + +- status = DGifCloseFile( gif ); ++ status = DGifCloseFile( gif, NULL ); + + noFile = 0; + +@@ -899,7 +899,7 @@ struct sigaction sa, oldsa, dummysa; + + error_return: + +- if ( fileOpened ) status = DGifCloseFile( gif ); ++ if ( fileOpened ) status = DGifCloseFile( gif, NULL ); + + sig_error_return: + +diff --git a/src/edm/httpPv/Makefile b/src/edm/httpPv/Makefile +index ca1d309..e1c2d4e 100644 +--- a/src/edm/httpPv/Makefile ++++ b/src/edm/httpPv/Makefile +@@ -12,8 +12,7 @@ ifdef EPICS_HOST_ARCH + + USR_CXXFLAGS_hpux11_11_mt += +W652 -DHP_UX=1111 -DSINGLE_THREADED=1 -D__epics__=1 + +- EdmBase_LIBS_Linux += Xm Xt Xp Xtst X11 +- EdmBase_SYS_LIBS_Linux += pthread dl ++ EdmBase_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + EdmBase_LIBS_Darwin += Xm Xt Xp Xtst X11 + EdmBase_SYS_LIBS_Darwin += pthread dl +diff --git a/src/edm/imagelib/gif.cc b/src/edm/imagelib/gif.cc +index 01e1870..766a945 100644 +--- a/src/edm/imagelib/gif.cc ++++ b/src/edm/imagelib/gif.cc +@@ -431,7 +431,7 @@ struct sigaction sa, oldsa, dummysa; + do { + this->actWin->appCtx->expandFileName( i, name, expStr.getExpanded(), + ".gif", 127 ); +- gif = DGifOpenFileName( name ); ++ gif = DGifOpenFileName( name, NULL ); + i++; + } while ( ( i < actWin->appCtx->numPaths ) && !gif ); + if ( !gif ) { +@@ -887,7 +887,7 @@ struct sigaction sa, oldsa, dummysa; + + } + +- status = DGifCloseFile( gif ); ++ status = DGifCloseFile( gif, NULL ); + + noFile = 0; + +@@ -899,7 +899,7 @@ struct sigaction sa, oldsa, dummysa; + + error_return: + +- if ( fileOpened ) status = DGifCloseFile( gif ); ++ if ( fileOpened ) status = DGifCloseFile( gif, NULL ); + + sig_error_return: + +diff --git a/src/edm/indicator/Makefile b/src/edm/indicator/Makefile +index f5b6dd2..37c51e8 100644 +--- a/src/edm/indicator/Makefile ++++ b/src/edm/indicator/Makefile +@@ -8,8 +8,7 @@ ifdef EPICS_HOST_ARCH + USR_LIBS += EdmBase cfcaa62e-8199-11d3-a77f-00104b8742df + + USR_CXXFLAGS_Linux += -DSINGLE_THREADED=1 -D__epics__=1 +- USR_LIBS_Linux += Xm Xt Xp Xtst X11 +- USR_SYS_LIBS_Linux += pthread dl ++ USR_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + USR_CXXFLAGS_Darwin += -DSINGLE_THREADED=1 -D__epics__=1 -Wno-long-long + USR_LIBS_Darwin += Xm Xt Xp Xtst X11 +diff --git a/src/edm/lib/Makefile b/src/edm/lib/Makefile +index 389b82b..e0f1b8e 100644 +--- a/src/edm/lib/Makefile ++++ b/src/edm/lib/Makefile +@@ -24,8 +24,7 @@ ifdef EPICS_HOST_ARCH + USR_LIBS_Darwin += Xm Xt Xp Xtst X11 + USR_SYS_LIBS_Darwin += pthread dl + +- USR_LIBS_Linux += Xm Xt Xp Xtst X11 +- USR_SYS_LIBS_Linux += pthread dl ++ USR_SYS_LIBS_Linux += Xm Xt Xp Xtst X11 pthread dl + + USR_LIBS_solaris += Xm Xt Xmu X11 Xext + USR_SYS_LIBS_solaris += pthread dl rt +diff --git a/src/edm/lib/app_pkg.cc b/src/edm/lib/app_pkg.cc +index 1a731a2..236d332 100644 +--- a/src/edm/lib/app_pkg.cc ++++ b/src/edm/lib/app_pkg.cc +@@ -6311,9 +6311,9 @@ void appContextClass::postMessage ( + + if ( useStdErrFlag ) { + if ( errMsgPrefix ) { +- fprintf( stderr, errMsgPrefix ); ++ fprintf( stderr, "%s", errMsgPrefix ); + } +- fprintf( stderr, msg ); ++ fprintf( stderr, "%s", msg ); + int l = strlen( msg ); + if ( !l || ( msg[l-1] != '\n' ) ) { + fprintf( stderr, "\n" ); +diff --git a/src/edm/lib/color_pkg.cc b/src/edm/lib/color_pkg.cc +index 8eecebf..924cd36 100644 +--- a/src/edm/lib/color_pkg.cc ++++ b/src/edm/lib/color_pkg.cc +@@ -3110,7 +3110,7 @@ term: + False ); + + XmAddWMProtocolCallback( shell, wm_delete_window, file_cb, +- (int) 0 ); ++ NULL ); + + XtVaSetValues( shell, XmNdeleteResponse, XmDO_NOTHING, NULL ); + +@@ -4969,7 +4969,7 @@ term: + False ); + + XmAddWMProtocolCallback( shell, wm_delete_window, file_cb, +- (int) 0 ); ++ NULL ); + + XtVaSetValues( shell, XmNdeleteResponse, XmDO_NOTHING, NULL ); + +@@ -5762,7 +5762,7 @@ firstTry: + False ); + + XmAddWMProtocolCallback( shell, wm_delete_window, file_cb, +- (int) 0 ); ++ NULL ); + + XtVaSetValues( shell, XmNdeleteResponse, XmDO_NOTHING, NULL ); + +diff --git a/src/edm/lib/cursor.cc b/src/edm/lib/cursor.cc +index 5713b93..ccf530c 100644 +--- a/src/edm/lib/cursor.cc ++++ b/src/edm/lib/cursor.cc +@@ -69,30 +69,30 @@ void cursorClass::create ( + #define pntrWithHelp_y_hot 3 + + static char pntrWithHelp_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x42, +- 0x20, 0x00, 0x00, 0x40, 0x60, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0x60, +- 0xe0, 0x01, 0x00, 0x30, 0xe0, 0x03, 0x00, 0x08, 0xe0, 0x07, 0x00, 0x08, +- 0xe0, 0x0f, 0x00, 0x08, 0xe0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x08, +- 0xe0, 0x03, 0x00, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, +- 0x20, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, +- 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x3c', '\x00', '\x00', '\x00', '\x42', ++ '\x20', '\x00', '\x00', '\x40', '\x60', '\x00', '\x00', '\x40', '\xe0', '\x00', '\x00', '\x60', ++ '\xe0', '\x01', '\x00', '\x30', '\xe0', '\x03', '\x00', '\x08', '\xe0', '\x07', '\x00', '\x08', ++ '\xe0', '\x0f', '\x00', '\x08', '\xe0', '\x1f', '\x00', '\x00', '\xe0', '\x3f', '\x00', '\x08', ++ '\xe0', '\x03', '\x00', '\x00', '\xe0', '\x06', '\x00', '\x00', '\x60', '\x06', '\x00', '\x00', ++ '\x20', '\x0c', '\x00', '\x00', '\x00', '\x0c', '\x00', '\x00', '\x00', '\x18', '\x00', '\x00', ++ '\x00', '\x18', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char pntrWithHelp_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xff, 0x30, 0x00, 0x00, 0xff, +- 0x70, 0x00, 0x00, 0xe7, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x01, 0x00, 0xf0, +- 0xf0, 0x03, 0x00, 0xfc, 0xf0, 0x07, 0x00, 0x7c, 0xf0, 0x0f, 0x00, 0x1c, +- 0xf0, 0x1f, 0x00, 0x1c, 0xf0, 0x3f, 0x00, 0x1c, 0xf0, 0x7f, 0x00, 0x1c, +- 0xf0, 0x7f, 0x00, 0x1c, 0xf0, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, +- 0x70, 0x1e, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, +- 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x7e', '\x00', '\x00', '\x00', '\xff', '\x30', '\x00', '\x00', '\xff', ++ '\x70', '\x00', '\x00', '\xe7', '\xf0', '\x00', '\x00', '\xf0', '\xf0', '\x01', '\x00', '\xf0', ++ '\xf0', '\x03', '\x00', '\xfc', '\xf0', '\x07', '\x00', '\x7c', '\xf0', '\x0f', '\x00', '\x1c', ++ '\xf0', '\x1f', '\x00', '\x1c', '\xf0', '\x3f', '\x00', '\x1c', '\xf0', '\x7f', '\x00', '\x1c', ++ '\xf0', '\x7f', '\x00', '\x1c', '\xf0', '\x0f', '\x00', '\x00', '\xf0', '\x0f', '\x00', '\x00', ++ '\x70', '\x1e', '\x00', '\x00', '\x30', '\x1e', '\x00', '\x00', '\x00', '\x3c', '\x00', '\x00', ++ '\x00', '\x3c', '\x00', '\x00', '\x00', '\x38', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + #define cross_width 16 + #define cross_height 16 +@@ -100,14 +100,14 @@ static char pntrWithHelp_mask_bits[] = { + #define cross_y_hot 8 + + static char cross_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x9e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +- 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x80', '\x00', '\x80', '\x00', '\x80', '\x00', '\x80', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x9e', '\x3c', '\x00', '\x00', '\x00', '\x00', '\x80', '\x00', ++ '\x80', '\x00', '\x80', '\x00', '\x80', '\x00', '\x00', '\x00'}; + + static char cross_mask_bits[] = { +- 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, +- 0xc0, 0x01, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xc0, 0x01, 0xc0, 0x01, +- 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01}; ++ '\x00', '\x00', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', ++ '\xc0', '\x01', '\xff', '\x7f', '\xff', '\x7f', '\xff', '\x7f', '\xc0', '\x01', '\xc0', '\x01', ++ '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01'}; + + #define tinyCross_width 16 + #define tinyCross_height 16 +@@ -115,14 +115,14 @@ static char cross_mask_bits[] = { + #define tinyCross_y_hot 8 + + static char tinyCross_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x80', '\x00', '\x80', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x86', '\x30', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x80', '\x00', '\x80', '\x00', '\x00', '\x00'}; + + static char tinyCross_mask_bits[] = { +- 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, +- 0x00, 0x00, 0x0f, 0x78, 0x8f, 0x78, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, +- 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01}; ++ '\x00', '\x00', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\x00', '\x00', ++ '\x00', '\x00', '\x0f', '\x78', '\x8f', '\x78', '\x0f', '\x78', '\x00', '\x00', '\x00', '\x00', ++ '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01', '\xc0', '\x01'}; + + #define wait_width 16 + #define wait_height 16 +@@ -130,248 +130,248 @@ static char tinyCross_mask_bits[] = { + #define wait_y_hot 6 + + static char wait_bits[] = { +- 0xc0, 0x01, 0x30, 0x06, 0x0c, 0x18, 0x04, 0x10, 0x02, 0x24, 0x02, 0x23, +- 0x81, 0x41, 0xc1, 0x40, 0x81, 0x41, 0x02, 0x23, 0x02, 0x24, 0x04, 0x10, +- 0x0c, 0x18, 0x30, 0x06, 0xc0, 0x01, 0x00, 0x00}; ++ '\xc0', '\x01', '\x30', '\x06', '\x0c', '\x18', '\x04', '\x10', '\x02', '\x24', '\x02', '\x23', ++ '\x81', '\x41', '\xc1', '\x40', '\x81', '\x41', '\x02', '\x23', '\x02', '\x24', '\x04', '\x10', ++ '\x0c', '\x18', '\x30', '\x06', '\xc0', '\x01', '\x00', '\x00'}; + +-// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x20, 0x02, 0x10, 0x04, +-// 0x10, 0x04, 0x00, 0x02, 0x80, 0x01, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +-// 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++// '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xc0', '\x01', '\x20', '\x02', '\x10', '\x04', ++// '\x10', '\x04', '\x00', '\x02', '\x80', '\x01', '\x80', '\x00', '\x80', '\x00', '\x00', '\x00', ++// '\x80', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char wait_mask_bits[] = { +- 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x1f, 0xfe, 0x3f, 0xff, 0x7f, 0xff, 0x7f, +- 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xfe, 0x3f, +- 0xfc, 0x1f, 0xf8, 0x0f, 0xf0, 0x07, 0x00, 0x00}; ++ '\xf0', '\x07', '\xf8', '\x0f', '\xfc', '\x1f', '\xfe', '\x3f', '\xff', '\x7f', '\xff', '\x7f', ++ '\xff', '\x7f', '\xff', '\x7f', '\xff', '\x7f', '\xff', '\x7f', '\xff', '\x7f', '\xfe', '\x3f', ++ '\xfc', '\x1f', '\xf8', '\x0f', '\xf0', '\x07', '\x00', '\x00'}; + +-// 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xf8, 0x0f, +-// 0xf8, 0x0f, 0xf8, 0x0f, 0xc0, 0x07, 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x01, +-// 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}; ++// '\x00', '\x00', '\x00', '\x00', '\xe0', '\x03', '\xf0', '\x07', '\xf8', '\x0f', '\xf8', '\x0f', ++// '\xf8', '\x0f', '\xf8', '\x0f', '\xc0', '\x07', '\xc0', '\x03', '\xc0', '\x01', '\xc0', '\x01', ++// '\xc0', '\x01', '\xc0', '\x01', '\x00', '\x00', '\x00', '\x00'}; + + #define willSet_width 16 + #define willSet_height 16 + #define willSet_x_hot 8 + #define willSet_y_hot 1 + static char willSet_bits[] = { +- 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, +- 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, +- 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00}; ++ '\x00', '\x00', '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03', ++ '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03', '\x80', '\x01', '\x80', '\x01', '\x80', '\x01', ++ '\x00', '\x00', '\x80', '\x01', '\x80', '\x01', '\x00', '\x00'}; + + static char willSet_mask_bits[] = { +- 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, +- 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, +- 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03}; ++ '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', ++ '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', '\xe0', '\x07', '\xc0', '\x03', '\xc0', '\x03', ++ '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03', '\xc0', '\x03'}; + + #define willOpen_width 16 + #define willOpen_height 16 + #define willOpen_x_hot 10 + #define willOpen_y_hot 1 + static char willOpen_bits[] = { +- 0x00, 0x00, 0xe0, 0x7f, 0x20, 0x40, 0xfe, 0x47, 0x02, 0x44, 0x02, 0x44, +- 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, +- 0x02, 0x7c, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00}; ++ '\x00', '\x00', '\xe0', '\x7f', '\x20', '\x40', '\xfe', '\x47', '\x02', '\x44', '\x02', '\x44', ++ '\x02', '\x44', '\x02', '\x44', '\x02', '\x44', '\x02', '\x44', '\x02', '\x44', '\x02', '\x44', ++ '\x02', '\x7c', '\x02', '\x04', '\xfe', '\x07', '\x00', '\x00'}; + + static char willOpen_mask_bits[] = { +- 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +- 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x0f}; ++ '\xf0', '\xff', '\xf0', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', ++ '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', ++ '\xff', '\xff', '\xff', '\xff', '\xff', '\x0f', '\xff', '\x0f'}; + + #define willOpenWithHelp_width 32 + #define willOpenWithHelp_height 32 + #define willOpenWithHelp_x_hot 10 + #define willOpenWithHelp_y_hot 17 + static char willOpenWithHelp_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x10, 0x02, +- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, +- 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, +- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, +- 0x20, 0x40, 0x00, 0x00, 0xfe, 0x47, 0x00, 0x00, 0x02, 0x44, 0x00, 0x00, +- 0x02, 0x44, 0x00, 0x00, 0x02, 0x44, 0x00, 0x00, 0x02, 0x44, 0x00, 0x00, +- 0x02, 0x44, 0x00, 0x00, 0x02, 0x44, 0x00, 0x00, 0x02, 0x44, 0x00, 0x00, +- 0x02, 0x44, 0x00, 0x00, 0x02, 0x7c, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, +- 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', '\x01', '\x00', '\x00', '\x10', '\x02', ++ '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', '\x03', ++ '\x00', '\x00', '\x80', '\x01', '\x00', '\x00', '\x40', '\x00', '\x00', '\x00', '\x40', '\x00', ++ '\x00', '\x00', '\x40', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x40', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', '\x7f', '\x00', '\x00', ++ '\x20', '\x40', '\x00', '\x00', '\xfe', '\x47', '\x00', '\x00', '\x02', '\x44', '\x00', '\x00', ++ '\x02', '\x44', '\x00', '\x00', '\x02', '\x44', '\x00', '\x00', '\x02', '\x44', '\x00', '\x00', ++ '\x02', '\x44', '\x00', '\x00', '\x02', '\x44', '\x00', '\x00', '\x02', '\x44', '\x00', '\x00', ++ '\x02', '\x44', '\x00', '\x00', '\x02', '\x7c', '\x00', '\x00', '\x02', '\x04', '\x00', '\x00', ++ '\xfe', '\x07', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char willOpenWithHelp_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf8, 0x07, +- 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x07, +- 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xe0, 0x00, +- 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, +- 0x00, 0x00, 0xe0, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, +- 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, +- 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, +- 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, +- 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, +- 0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\xf0', '\x03', '\x00', '\x00', '\xf8', '\x07', '\x00', '\x00', '\xf8', '\x07', ++ '\x00', '\x00', '\x38', '\x07', '\x00', '\x00', '\x80', '\x07', '\x00', '\x00', '\xc0', '\x07', ++ '\x00', '\x00', '\xe0', '\x07', '\x00', '\x00', '\xe0', '\x03', '\x00', '\x00', '\xe0', '\x00', ++ '\x00', '\x00', '\xe0', '\x00', '\x00', '\x00', '\xe0', '\x00', '\x00', '\x00', '\xe0', '\x00', ++ '\x00', '\x00', '\xe0', '\x00', '\xf0', '\xff', '\x00', '\x00', '\xf0', '\xff', '\x00', '\x00', ++ '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', ++ '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', ++ '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', ++ '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', '\xff', '\xff', '\x00', '\x00', ++ '\xff', '\x0f', '\x00', '\x00', '\xff', '\x0f', '\x00', '\x00'}; + + #define run_width 32 + #define run_height 32 + #define run_x_hot 16 + #define run_y_hot 9 + static char run_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0xf8, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, +- 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, +- 0x08, 0x88, 0x38, 0x1c, 0x08, 0x50, 0x44, 0x02, 0x08, 0x20, 0x7c, 0x02, +- 0x08, 0x20, 0x04, 0x02, 0x08, 0x50, 0x04, 0x02, 0xf8, 0x89, 0x78, 0x1c, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\xf8', '\x01', '\x00', '\x00', '\x08', '\x00', '\x00', '\x00', '\x08', '\x00', '\x00', '\x00', ++ '\x08', '\x00', '\x00', '\x00', '\x08', '\x00', '\x00', '\x00', '\xf8', '\x00', '\x00', '\x00', ++ '\x08', '\x88', '\x38', '\x1c', '\x08', '\x50', '\x44', '\x02', '\x08', '\x20', '\x7c', '\x02', ++ '\x08', '\x20', '\x04', '\x02', '\x08', '\x50', '\x04', '\x02', '\xf8', '\x89', '\x78', '\x1c', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char run_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, +- 0xfc, 0x03, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, +- 0x1c, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfc, 0x89, 0x38, 0x3e, +- 0xfc, 0xdd, 0x7d, 0x3e, 0x1c, 0xf8, 0x7e, 0x3f, 0x1c, 0x70, 0x7e, 0x07, +- 0x1c, 0x70, 0x7e, 0x07, 0xfc, 0xfb, 0x7e, 0x3f, 0xfc, 0xdf, 0x7d, 0x3e, +- 0xfc, 0x8b, 0x78, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xfc', '\x03', '\x00', '\x00', ++ '\xfc', '\x03', '\x00', '\x00', '\xfc', '\x03', '\x00', '\x00', '\x1c', '\x00', '\x00', '\x00', ++ '\x1c', '\x00', '\x00', '\x00', '\xfc', '\x01', '\x00', '\x00', '\xfc', '\x89', '\x38', '\x3e', ++ '\xfc', '\xdd', '\x7d', '\x3e', '\x1c', '\xf8', '\x7e', '\x3f', '\x1c', '\x70', '\x7e', '\x07', ++ '\x1c', '\x70', '\x7e', '\x07', '\xfc', '\xfb', '\x7e', '\x3f', '\xfc', '\xdf', '\x7d', '\x3e', ++ '\xfc', '\x8b', '\x78', '\x3c', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + #define runWithHelp_width 32 + #define runWithHelp_height 32 + #define runWithHelp_x_hot 16 + #define runWithHelp_y_hot 9 + static char runWithHelp_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x42, +- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, +- 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, +- 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x08, +- 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +- 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x22, 0x0e, 0x07, +- 0x02, 0x14, 0x91, 0x00, 0x02, 0x08, 0x9f, 0x00, 0x02, 0x08, 0x81, 0x00, +- 0x02, 0x14, 0x81, 0x00, 0x7e, 0x22, 0x1e, 0x07, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x3c', '\x00', '\x00', '\x00', '\x42', ++ '\x00', '\x00', '\x00', '\x40', '\x00', '\x00', '\x00', '\x40', '\x00', '\x00', '\x00', '\x60', ++ '\x00', '\x00', '\x00', '\x30', '\x00', '\x00', '\x00', '\x08', '\x00', '\x00', '\x00', '\x08', ++ '\x00', '\x00', '\x00', '\x08', '\x00', '\x00', '\x00', '\x00', '\x7e', '\x00', '\x00', '\x08', ++ '\x02', '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', ++ '\x02', '\x00', '\x00', '\x00', '\x3e', '\x00', '\x00', '\x00', '\x02', '\x22', '\x0e', '\x07', ++ '\x02', '\x14', '\x91', '\x00', '\x02', '\x08', '\x9f', '\x00', '\x02', '\x08', '\x81', '\x00', ++ '\x02', '\x14', '\x81', '\x00', '\x7e', '\x22', '\x1e', '\x07', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char runWithHelp_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, +- 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, +- 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1c, +- 0x00, 0x00, 0x00, 0x1c, 0xff, 0x00, 0x00, 0x1c, 0xff, 0x00, 0x00, 0x1c, +- 0xff, 0x00, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, +- 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x22, 0x8e, 0x0f, 0x7f, 0x77, 0x9f, 0x0f, +- 0x07, 0xbe, 0xdf, 0x0f, 0x07, 0x9c, 0xdf, 0x01, 0x07, 0x9c, 0xdf, 0x01, +- 0xff, 0xbe, 0xdf, 0x0f, 0xff, 0x77, 0x9f, 0x0f, 0xff, 0x22, 0x1e, 0x0f, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x7e', '\x00', '\x00', '\x00', '\xff', '\x00', '\x00', '\x00', '\xff', ++ '\x00', '\x00', '\x00', '\xe7', '\x00', '\x00', '\x00', '\xf0', '\x00', '\x00', '\x00', '\xf0', ++ '\x00', '\x00', '\x00', '\xfc', '\x00', '\x00', '\x00', '\x7c', '\x00', '\x00', '\x00', '\x1c', ++ '\x00', '\x00', '\x00', '\x1c', '\xff', '\x00', '\x00', '\x1c', '\xff', '\x00', '\x00', '\x1c', ++ '\xff', '\x00', '\x00', '\x1c', '\x07', '\x00', '\x00', '\x00', '\x07', '\x00', '\x00', '\x00', ++ '\x7f', '\x00', '\x00', '\x00', '\x7f', '\x22', '\x8e', '\x0f', '\x7f', '\x77', '\x9f', '\x0f', ++ '\x07', '\xbe', '\xdf', '\x0f', '\x07', '\x9c', '\xdf', '\x01', '\x07', '\x9c', '\xdf', '\x01', ++ '\xff', '\xbe', '\xdf', '\x0f', '\xff', '\x77', '\x9f', '\x0f', '\xff', '\x22', '\x1e', '\x0f', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + #define upDown_width 16 + #define upDown_height 16 + #define upDown_x_hot 8 + #define upDown_y_hot 1 + static char upDown_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x30, 0x0c, 0x38, 0x1c, +- 0x3c, 0x3c, 0x3e, 0x7c, 0x3c, 0x3c, 0x38, 0x1c, 0x30, 0x0c, 0x20, 0x04, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x20', '\x04', '\x30', '\x0c', '\x38', '\x1c', ++ '\x3c', '\x3c', '\x3e', '\x7c', '\x3c', '\x3c', '\x38', '\x1c', '\x30', '\x0c', '\x20', '\x04', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char upDown_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x70, 0x0e, 0x78, 0x1e, 0x7c, 0x3e, +- 0x7e, 0x7e, 0x7f, 0xfe, 0x7e, 0x7e, 0x7c, 0x3e, 0x78, 0x1e, 0x70, 0x0e, +- 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x60', '\x06', '\x70', '\x0e', '\x78', '\x1e', '\x7c', '\x3e', ++ '\x7e', '\x7e', '\x7f', '\xfe', '\x7e', '\x7e', '\x7c', '\x3e', '\x78', '\x1e', '\x70', '\x0e', ++ '\x60', '\x06', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + #define no_width 64 + #define no_height 64 + #define no_x_hot 31 + #define no_y_hot 31 + static char no_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, +- 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +- 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0xff, +- 0xff, 0xff, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, +- 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, +- 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0x07, 0x00, +- 0x00, 0xf0, 0xff, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0x01, +- 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x01, 0xe0, 0xff, 0x1f, 0x00, +- 0x00, 0x00, 0xff, 0x03, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x03, +- 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xf0, 0xdf, 0xff, 0x00, +- 0x00, 0x00, 0xfc, 0x07, 0xf8, 0x8f, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x0f, +- 0xf8, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x0f, 0xf8, 0x07, 0xfe, 0x07, +- 0x00, 0x00, 0xf0, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0x00, 0x00, 0xf0, 0x1f, +- 0xfc, 0x07, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0xfc, 0x03, 0xf0, 0x3f, +- 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0xe0, 0x7f, 0x00, 0x00, 0xe0, 0x1f, +- 0xfc, 0x03, 0xc0, 0xff, 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0x80, 0xff, +- 0x01, 0x00, 0xe0, 0x1f, 0xfe, 0x03, 0x00, 0xff, 0x03, 0x00, 0xe0, 0x3f, +- 0xfe, 0x03, 0x00, 0xfe, 0x07, 0x00, 0xe0, 0x3f, 0xfe, 0x03, 0x00, 0xfc, +- 0x0f, 0x00, 0xe0, 0x3f, 0xfe, 0x03, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0x3f, +- 0xfe, 0x03, 0x00, 0xf0, 0x3f, 0x00, 0xe0, 0x3f, 0xfc, 0x03, 0x00, 0xe0, +- 0x7f, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0xc0, 0xff, 0x00, 0xe0, 0x1f, +- 0xfc, 0x03, 0x00, 0x80, 0xff, 0x01, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0x00, +- 0xff, 0x03, 0xe0, 0x1f, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x07, 0xf0, 0x1f, +- 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0xf0, 0x1f, 0xf8, 0x07, 0x00, 0x00, +- 0xf8, 0x1f, 0xf0, 0x0f, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x3f, 0xf8, 0x0f, +- 0xf8, 0x0f, 0x00, 0x00, 0xe0, 0x7f, 0xf8, 0x0f, 0xf0, 0x1f, 0x00, 0x00, +- 0xc0, 0xff, 0xfc, 0x07, 0xf0, 0x3f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, +- 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0xe0, 0x7f, 0x00, 0x00, +- 0x00, 0xfe, 0xff, 0x03, 0xc0, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x80, 0xff, 0x07, 0x00, +- 0x00, 0xf0, 0xff, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, +- 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, +- 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, +- 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, +- 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, +- 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, +- 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', ++ '\x03', '\x00', '\x00', '\x00', '\x00', '\x00', '\x80', '\xff', '\xff', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\xf0', '\xff', '\xff', '\x07', '\x00', '\x00', '\x00', '\x00', '\xfc', '\xff', ++ '\xff', '\x1f', '\x00', '\x00', '\x00', '\x00', '\xff', '\xff', '\xff', '\x7f', '\x00', '\x00', ++ '\x00', '\xc0', '\xff', '\xff', '\xff', '\xff', '\x01', '\x00', '\x00', '\xe0', '\xff', '\xff', ++ '\xff', '\xff', '\x03', '\x00', '\x00', '\xf0', '\xff', '\xff', '\xff', '\xff', '\x07', '\x00', ++ '\x00', '\xf8', '\xff', '\xff', '\xff', '\xff', '\x0f', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x1f', '\x00', '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfe', '\x3f', '\x00', ++ '\x00', '\xff', '\x0f', '\x00', '\x00', '\xf8', '\x7f', '\x00', '\x80', '\xff', '\x07', '\x00', ++ '\x00', '\xf0', '\xff', '\x00', '\xc0', '\xff', '\x07', '\x00', '\x00', '\xc0', '\xff', '\x01', ++ '\xc0', '\xff', '\x0f', '\x00', '\x00', '\x80', '\xff', '\x01', '\xe0', '\xff', '\x1f', '\x00', ++ '\x00', '\x00', '\xff', '\x03', '\xe0', '\xff', '\x3f', '\x00', '\x00', '\x00', '\xfe', '\x03', ++ '\xf0', '\xff', '\x7f', '\x00', '\x00', '\x00', '\xfe', '\x07', '\xf0', '\xdf', '\xff', '\x00', ++ '\x00', '\x00', '\xfc', '\x07', '\xf8', '\x8f', '\xff', '\x01', '\x00', '\x00', '\xf8', '\x0f', ++ '\xf8', '\x0f', '\xff', '\x03', '\x00', '\x00', '\xf8', '\x0f', '\xf8', '\x07', '\xfe', '\x07', ++ '\x00', '\x00', '\xf0', '\x0f', '\xfc', '\x07', '\xfc', '\x0f', '\x00', '\x00', '\xf0', '\x1f', ++ '\xfc', '\x07', '\xf8', '\x1f', '\x00', '\x00', '\xf0', '\x1f', '\xfc', '\x03', '\xf0', '\x3f', ++ '\x00', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\xe0', '\x7f', '\x00', '\x00', '\xe0', '\x1f', ++ '\xfc', '\x03', '\xc0', '\xff', '\x00', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\x80', '\xff', ++ '\x01', '\x00', '\xe0', '\x1f', '\xfe', '\x03', '\x00', '\xff', '\x03', '\x00', '\xe0', '\x3f', ++ '\xfe', '\x03', '\x00', '\xfe', '\x07', '\x00', '\xe0', '\x3f', '\xfe', '\x03', '\x00', '\xfc', ++ '\x0f', '\x00', '\xe0', '\x3f', '\xfe', '\x03', '\x00', '\xf8', '\x1f', '\x00', '\xe0', '\x3f', ++ '\xfe', '\x03', '\x00', '\xf0', '\x3f', '\x00', '\xe0', '\x3f', '\xfc', '\x03', '\x00', '\xe0', ++ '\x7f', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\x00', '\xc0', '\xff', '\x00', '\xe0', '\x1f', ++ '\xfc', '\x03', '\x00', '\x80', '\xff', '\x01', '\xe0', '\x1f', '\xfc', '\x03', '\x00', '\x00', ++ '\xff', '\x03', '\xe0', '\x1f', '\xfc', '\x07', '\x00', '\x00', '\xfe', '\x07', '\xf0', '\x1f', ++ '\xfc', '\x07', '\x00', '\x00', '\xfc', '\x0f', '\xf0', '\x1f', '\xf8', '\x07', '\x00', '\x00', ++ '\xf8', '\x1f', '\xf0', '\x0f', '\xf8', '\x0f', '\x00', '\x00', '\xf0', '\x3f', '\xf8', '\x0f', ++ '\xf8', '\x0f', '\x00', '\x00', '\xe0', '\x7f', '\xf8', '\x0f', '\xf0', '\x1f', '\x00', '\x00', ++ '\xc0', '\xff', '\xfc', '\x07', '\xf0', '\x3f', '\x00', '\x00', '\x80', '\xff', '\xff', '\x07', ++ '\xe0', '\x3f', '\x00', '\x00', '\x00', '\xff', '\xff', '\x03', '\xe0', '\x7f', '\x00', '\x00', ++ '\x00', '\xfe', '\xff', '\x03', '\xc0', '\xff', '\x00', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x01', '\x00', '\x00', '\xf8', '\xff', '\x01', '\x80', '\xff', '\x07', '\x00', ++ '\x00', '\xf0', '\xff', '\x00', '\x00', '\xff', '\x0f', '\x00', '\x00', '\xf8', '\x7f', '\x00', ++ '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x1f', '\x00', '\x00', '\xf8', '\xff', '\xff', '\xff', '\xff', '\x0f', '\x00', ++ '\x00', '\xf0', '\xff', '\xff', '\xff', '\xff', '\x07', '\x00', '\x00', '\xe0', '\xff', '\xff', ++ '\xff', '\xff', '\x03', '\x00', '\x00', '\xc0', '\xff', '\xff', '\xff', '\xff', '\x01', '\x00', ++ '\x00', '\x00', '\xff', '\xff', '\xff', '\x7f', '\x00', '\x00', '\x00', '\x00', '\xfc', '\xff', ++ '\xff', '\x1f', '\x00', '\x00', '\x00', '\x00', '\xf0', '\xff', '\xff', '\x07', '\x00', '\x00', ++ '\x00', '\x00', '\x80', '\xff', '\xff', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', ++ '\x03', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char no_mask_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, +- 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +- 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0xff, +- 0xff, 0xff, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, +- 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, +- 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0x07, 0x00, +- 0x00, 0xf0, 0xff, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0x01, +- 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x01, 0xe0, 0xff, 0x1f, 0x00, +- 0x00, 0x00, 0xff, 0x03, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x03, +- 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xf0, 0xdf, 0xff, 0x00, +- 0x00, 0x00, 0xfc, 0x07, 0xf8, 0x8f, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x0f, +- 0xf8, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x0f, 0xf8, 0x07, 0xfe, 0x07, +- 0x00, 0x00, 0xf0, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0x00, 0x00, 0xf0, 0x1f, +- 0xfc, 0x07, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0xfc, 0x03, 0xf0, 0x3f, +- 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0xe0, 0x7f, 0x00, 0x00, 0xe0, 0x1f, +- 0xfc, 0x03, 0xc0, 0xff, 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0x80, 0xff, +- 0x01, 0x00, 0xe0, 0x1f, 0xfe, 0x03, 0x00, 0xff, 0x03, 0x00, 0xe0, 0x3f, +- 0xfe, 0x03, 0x00, 0xfe, 0x07, 0x00, 0xe0, 0x3f, 0xfe, 0x03, 0x00, 0xfc, +- 0x0f, 0x00, 0xe0, 0x3f, 0xfe, 0x03, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0x3f, +- 0xfe, 0x03, 0x00, 0xf0, 0x3f, 0x00, 0xe0, 0x3f, 0xfc, 0x03, 0x00, 0xe0, +- 0x7f, 0x00, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0xc0, 0xff, 0x00, 0xe0, 0x1f, +- 0xfc, 0x03, 0x00, 0x80, 0xff, 0x01, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0x00, +- 0xff, 0x03, 0xe0, 0x1f, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x07, 0xf0, 0x1f, +- 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0xf0, 0x1f, 0xf8, 0x07, 0x00, 0x00, +- 0xf8, 0x1f, 0xf0, 0x0f, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x3f, 0xf8, 0x0f, +- 0xf8, 0x0f, 0x00, 0x00, 0xe0, 0x7f, 0xf8, 0x0f, 0xf0, 0x1f, 0x00, 0x00, +- 0xc0, 0xff, 0xfc, 0x07, 0xf0, 0x3f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, +- 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0xe0, 0x7f, 0x00, 0x00, +- 0x00, 0xfe, 0xff, 0x03, 0xc0, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x80, 0xff, 0x07, 0x00, +- 0x00, 0xf0, 0xff, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, +- 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0x01, +- 0xc0, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, +- 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, +- 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, +- 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, +- 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, +- 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', ++ '\x03', '\x00', '\x00', '\x00', '\x00', '\x00', '\x80', '\xff', '\xff', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\xf0', '\xff', '\xff', '\x07', '\x00', '\x00', '\x00', '\x00', '\xfc', '\xff', ++ '\xff', '\x1f', '\x00', '\x00', '\x00', '\x00', '\xff', '\xff', '\xff', '\x7f', '\x00', '\x00', ++ '\x00', '\xc0', '\xff', '\xff', '\xff', '\xff', '\x01', '\x00', '\x00', '\xe0', '\xff', '\xff', ++ '\xff', '\xff', '\x03', '\x00', '\x00', '\xf0', '\xff', '\xff', '\xff', '\xff', '\x07', '\x00', ++ '\x00', '\xf8', '\xff', '\xff', '\xff', '\xff', '\x0f', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x1f', '\x00', '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfe', '\x3f', '\x00', ++ '\x00', '\xff', '\x0f', '\x00', '\x00', '\xf8', '\x7f', '\x00', '\x80', '\xff', '\x07', '\x00', ++ '\x00', '\xf0', '\xff', '\x00', '\xc0', '\xff', '\x07', '\x00', '\x00', '\xc0', '\xff', '\x01', ++ '\xc0', '\xff', '\x0f', '\x00', '\x00', '\x80', '\xff', '\x01', '\xe0', '\xff', '\x1f', '\x00', ++ '\x00', '\x00', '\xff', '\x03', '\xe0', '\xff', '\x3f', '\x00', '\x00', '\x00', '\xfe', '\x03', ++ '\xf0', '\xff', '\x7f', '\x00', '\x00', '\x00', '\xfe', '\x07', '\xf0', '\xdf', '\xff', '\x00', ++ '\x00', '\x00', '\xfc', '\x07', '\xf8', '\x8f', '\xff', '\x01', '\x00', '\x00', '\xf8', '\x0f', ++ '\xf8', '\x0f', '\xff', '\x03', '\x00', '\x00', '\xf8', '\x0f', '\xf8', '\x07', '\xfe', '\x07', ++ '\x00', '\x00', '\xf0', '\x0f', '\xfc', '\x07', '\xfc', '\x0f', '\x00', '\x00', '\xf0', '\x1f', ++ '\xfc', '\x07', '\xf8', '\x1f', '\x00', '\x00', '\xf0', '\x1f', '\xfc', '\x03', '\xf0', '\x3f', ++ '\x00', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\xe0', '\x7f', '\x00', '\x00', '\xe0', '\x1f', ++ '\xfc', '\x03', '\xc0', '\xff', '\x00', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\x80', '\xff', ++ '\x01', '\x00', '\xe0', '\x1f', '\xfe', '\x03', '\x00', '\xff', '\x03', '\x00', '\xe0', '\x3f', ++ '\xfe', '\x03', '\x00', '\xfe', '\x07', '\x00', '\xe0', '\x3f', '\xfe', '\x03', '\x00', '\xfc', ++ '\x0f', '\x00', '\xe0', '\x3f', '\xfe', '\x03', '\x00', '\xf8', '\x1f', '\x00', '\xe0', '\x3f', ++ '\xfe', '\x03', '\x00', '\xf0', '\x3f', '\x00', '\xe0', '\x3f', '\xfc', '\x03', '\x00', '\xe0', ++ '\x7f', '\x00', '\xe0', '\x1f', '\xfc', '\x03', '\x00', '\xc0', '\xff', '\x00', '\xe0', '\x1f', ++ '\xfc', '\x03', '\x00', '\x80', '\xff', '\x01', '\xe0', '\x1f', '\xfc', '\x03', '\x00', '\x00', ++ '\xff', '\x03', '\xe0', '\x1f', '\xfc', '\x07', '\x00', '\x00', '\xfe', '\x07', '\xf0', '\x1f', ++ '\xfc', '\x07', '\x00', '\x00', '\xfc', '\x0f', '\xf0', '\x1f', '\xf8', '\x07', '\x00', '\x00', ++ '\xf8', '\x1f', '\xf0', '\x0f', '\xf8', '\x0f', '\x00', '\x00', '\xf0', '\x3f', '\xf8', '\x0f', ++ '\xf8', '\x0f', '\x00', '\x00', '\xe0', '\x7f', '\xf8', '\x0f', '\xf0', '\x1f', '\x00', '\x00', ++ '\xc0', '\xff', '\xfc', '\x07', '\xf0', '\x3f', '\x00', '\x00', '\x80', '\xff', '\xff', '\x07', ++ '\xe0', '\x3f', '\x00', '\x00', '\x00', '\xff', '\xff', '\x03', '\xe0', '\x7f', '\x00', '\x00', ++ '\x00', '\xfe', '\xff', '\x03', '\xc0', '\xff', '\x00', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x01', '\x00', '\x00', '\xf8', '\xff', '\x01', '\x80', '\xff', '\x07', '\x00', ++ '\x00', '\xf0', '\xff', '\x00', '\x00', '\xff', '\x0f', '\x00', '\x00', '\xf8', '\x7f', '\x00', ++ '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfe', '\x3f', '\x00', '\x00', '\xfc', '\xff', '\x01', ++ '\xc0', '\xff', '\x1f', '\x00', '\x00', '\xf8', '\xff', '\xff', '\xff', '\xff', '\x0f', '\x00', ++ '\x00', '\xf0', '\xff', '\xff', '\xff', '\xff', '\x07', '\x00', '\x00', '\xe0', '\xff', '\xff', ++ '\xff', '\xff', '\x03', '\x00', '\x00', '\xc0', '\xff', '\xff', '\xff', '\xff', '\x01', '\x00', ++ '\x00', '\x00', '\xff', '\xff', '\xff', '\x7f', '\x00', '\x00', '\x00', '\x00', '\xfc', '\xff', ++ '\xff', '\x1f', '\x00', '\x00', '\x00', '\x00', '\xf0', '\xff', '\xff', '\x07', '\x00', '\x00', ++ '\x00', '\x00', '\x80', '\xff', '\xff', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', ++ '\x03', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + #if 0 + #define no_width 32 +@@ -379,30 +379,30 @@ static char no_mask_bits[] = { + #define no_x_hot 15 + #define no_y_hot 15 + static char no_bits[] = { +- 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xfc, 0x1f, 0x00, +- 0x00, 0x0f, 0x78, 0x00, 0x80, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0x80, 0x03, +- 0x20, 0x00, 0x00, 0x03, 0x30, 0x00, 0x80, 0x07, 0x18, 0x00, 0xc0, 0x0c, +- 0x08, 0x00, 0x60, 0x08, 0x0c, 0x00, 0x30, 0x18, 0x0c, 0x00, 0x18, 0x18, +- 0x04, 0x00, 0x0c, 0x10, 0x06, 0x00, 0x06, 0x30, 0x06, 0x00, 0x03, 0x30, +- 0x06, 0x80, 0x01, 0x30, 0x06, 0xc0, 0x00, 0x30, 0x06, 0x60, 0x00, 0x30, +- 0x04, 0x30, 0x00, 0x10, 0x0c, 0x18, 0x00, 0x18, 0x0c, 0x0c, 0x00, 0x18, +- 0x08, 0x06, 0x00, 0x08, 0x18, 0x03, 0x00, 0x0c, 0xb0, 0x01, 0x00, 0x06, +- 0xe0, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x00, +- 0x00, 0x0f, 0x78, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0x03, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', '\x03', '\x00', '\x00', '\xfc', '\x1f', '\x00', ++ '\x00', '\x0f', '\x78', '\x00', '\x80', '\x01', '\xc0', '\x00', '\xe0', '\x00', '\x80', '\x03', ++ '\x20', '\x00', '\x00', '\x03', '\x30', '\x00', '\x80', '\x07', '\x18', '\x00', '\xc0', '\x0c', ++ '\x08', '\x00', '\x60', '\x08', '\x0c', '\x00', '\x30', '\x18', '\x0c', '\x00', '\x18', '\x18', ++ '\x04', '\x00', '\x0c', '\x10', '\x06', '\x00', '\x06', '\x30', '\x06', '\x00', '\x03', '\x30', ++ '\x06', '\x80', '\x01', '\x30', '\x06', '\xc0', '\x00', '\x30', '\x06', '\x60', '\x00', '\x30', ++ '\x04', '\x30', '\x00', '\x10', '\x0c', '\x18', '\x00', '\x18', '\x0c', '\x0c', '\x00', '\x18', ++ '\x08', '\x06', '\x00', '\x08', '\x18', '\x03', '\x00', '\x0c', '\xb0', '\x01', '\x00', '\x06', ++ '\xe0', '\x00', '\x00', '\x02', '\xe0', '\x00', '\x80', '\x03', '\x80', '\x01', '\xc0', '\x00', ++ '\x00', '\x0f', '\x78', '\x00', '\x00', '\xfc', '\x1f', '\x00', '\x00', '\xe0', '\x03', '\x00', ++ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + + static char no_mask_bits[] = { +- 0x00, 0xe0, 0x03, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0x7f, 0x00, +- 0x80, 0xff, 0xff, 0x00, 0xe0, 0x0f, 0xf8, 0x03, 0xf0, 0x01, 0xc0, 0x07, +- 0xf0, 0x00, 0x80, 0x07, 0x78, 0x00, 0xc0, 0x0f, 0x3c, 0x00, 0xe0, 0x1f, +- 0x1c, 0x00, 0xf0, 0x1c, 0x1e, 0x00, 0x78, 0x3c, 0x1e, 0x00, 0x3c, 0x3c, +- 0x0e, 0x00, 0x1e, 0x38, 0x0f, 0x00, 0x0f, 0x78, 0x0f, 0x80, 0x07, 0x78, +- 0x0f, 0xc0, 0x03, 0x78, 0x0f, 0xe0, 0x01, 0x78, 0x0f, 0xf0, 0x00, 0x78, +- 0x0e, 0x78, 0x00, 0x38, 0x1e, 0x3c, 0x00, 0x3c, 0x1e, 0x1e, 0x00, 0x3c, +- 0x1c, 0x0f, 0x00, 0x1c, 0xbc, 0x07, 0x00, 0x1e, 0xf8, 0x03, 0x00, 0x0f, +- 0xf0, 0x01, 0x80, 0x07, 0xf0, 0x01, 0xc0, 0x07, 0xe0, 0x0f, 0xf8, 0x03, +- 0x80, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, +- 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; ++ '\x00', '\xe0', '\x03', '\x00', '\x00', '\xfc', '\x1f', '\x00', '\x00', '\xff', '\x7f', '\x00', ++ '\x80', '\xff', '\xff', '\x00', '\xe0', '\x0f', '\xf8', '\x03', '\xf0', '\x01', '\xc0', '\x07', ++ '\xf0', '\x00', '\x80', '\x07', '\x78', '\x00', '\xc0', '\x0f', '\x3c', '\x00', '\xe0', '\x1f', ++ '\x1c', '\x00', '\xf0', '\x1c', '\x1e', '\x00', '\x78', '\x3c', '\x1e', '\x00', '\x3c', '\x3c', ++ '\x0e', '\x00', '\x1e', '\x38', '\x0f', '\x00', '\x0f', '\x78', '\x0f', '\x80', '\x07', '\x78', ++ '\x0f', '\xc0', '\x03', '\x78', '\x0f', '\xe0', '\x01', '\x78', '\x0f', '\xf0', '\x00', '\x78', ++ '\x0e', '\x78', '\x00', '\x38', '\x1e', '\x3c', '\x00', '\x3c', '\x1e', '\x1e', '\x00', '\x3c', ++ '\x1c', '\x0f', '\x00', '\x1c', '\xbc', '\x07', '\x00', '\x1e', '\xf8', '\x03', '\x00', '\x0f', ++ '\xf0', '\x01', '\x80', '\x07', '\xf0', '\x01', '\xc0', '\x07', '\xe0', '\x0f', '\xf8', '\x03', ++ '\x80', '\xff', '\xff', '\x00', '\x00', '\xff', '\x7f', '\x00', '\x00', '\xfc', '\x1f', '\x00', ++ '\x00', '\xe0', '\x03', '\x00', '\x00', '\x00', '\x00', '\x00'}; + #endif + + display = dsp; +diff --git a/src/edm/lib/hashtable.h b/src/edm/lib/hashtable.h +index d81979f..6669990 100644 +--- a/src/edm/lib/hashtable.h ++++ b/src/edm/lib/hashtable.h +@@ -19,30 +19,6 @@ + //#include + #include + +-// the following was introduced to get edm +-// to compile under gcc 3.4.1 +-#if (__GNUC__==3)&&(__GNUC_MINOR__==4) +-using namespace std; +-#endif +- +-// the following was introduced to get edm +-// to compile under gcc 4.0.X and higher +-#if (__GNUC__>=4) +-using namespace std; +-#endif +- +-// the following was introduced to get edm +-// to compile under gcc 4.1.X and higher +-#if (__GNUC__==4)&&(__GNUC_MINOR__==1) +-using namespace std; +-#endif +- +-// the following was introduced to get edm +-// to compile under aCC on HP_UX +-#ifdef HP_UX +-using namespace std; +-#endif +- + template + class Hashtable + { +@@ -174,10 +150,10 @@ inline void Hashtable::erase(typename Hashtable::iterator& it) + template + inline void Hashtable::info() + { +- cout << "Hashtable info: " << N << " buckets\n"; ++ std::cout << "Hashtable info: " << N << " buckets\n"; + for (size_t n=0; n configure/CONFIG_SITE.linux-x86_64.Common + WITH_HDF5 = YES + HDF5_EXTERNAL = YES + WITH_BOOST = YES + BOOST_EXTERNAL = YES + WITH_XML2 = YES + XML2_EXTERNAL = YES + XML2_INCLUDE = ${libxml2.dev}/include/libxml2 + WITH_BLOSC = YES + BLOSC_EXTERNAL= YES + #WITH_JPEG = YES + #JPEG_EXTERNAL = NO + WITH_TIFF = YES + TIFF_EXTERNAL = YES + #WITH_ZLIB = YES + #ZLIB_EXTERNAL = NO + #WITH_SZIP = YES + #SZIP_EXTERNAL = NO + # Enable PVA plugin + WITH_PVA = YES + WITH_QSRV = NO + EOF + ''; + postInstall = '' + mkdir -p $out/ADApp + cp ADApp/common*Makefile $out/ADApp + ''; +} diff --git a/epics-adpython/default.nix b/epics-adpython/default.nix new file mode 100644 index 0000000..d2ef617 --- /dev/null +++ b/epics-adpython/default.nix @@ -0,0 +1,13 @@ +{ python, pythonPackages, buildEpicsModule, epics-asyn, epics-adcore }: + +buildEpicsModule { + name = "epics-adpython"; + buildInputs = [ python pythonPackages.numpy epics-asyn epics-adcore ]; + postConfigure = '' + sed -i 's|PYTHON_PREFIX=.*|PYTHON_PREFIX=${python}|g' configure/RELEASE + ''; + src = builtins.fetchGit { + url = "https://github.com/dls-controls/adPython.git"; + ref = "master"; + }; +} diff --git a/epics-adsimdetector/default.nix b/epics-adsimdetector/default.nix new file mode 100644 index 0000000..56e89cd --- /dev/null +++ b/epics-adsimdetector/default.nix @@ -0,0 +1,12 @@ +{ fetchgit, libxml2, buildEpicsModule, epics-asyn, epics-adcore }: + +buildEpicsModule rec { + name = "epics-adsimdetector"; + version = "2-10"; + buildInputs = [ libxml2 epics-asyn epics-adcore ]; + src = fetchgit { + url = "https://github.com/areaDetector/ADSimDetector.git"; + rev = "R${version}"; + sha256 = "0f9gxlnvgva44499bxjdvs06yxx2xjs55x2xq4ls6wzfpsr717rq"; + }; +} diff --git a/epics-aravisgige/default.nix b/epics-aravisgige/default.nix new file mode 100644 index 0000000..af2b02a --- /dev/null +++ b/epics-aravisgige/default.nix @@ -0,0 +1,42 @@ +{ fetchgit, aravis, wget, glib, libxml2, zlib, pkg-config, intltool +, buildEpicsModule, epics-asyn, epics-adcore }: + +buildEpicsModule { + name = "epics-aravisgige"; + buildInputs = [ + aravis + wget + pkg-config + glib + libxml2.dev + zlib + intltool + epics-asyn + epics-adcore + ]; + src = builtins.fetchGit { + url = "https://github.com/areaDetector/aravisGigE.git"; + rev = "0722a4cf65d3b468e7df5a7d80bb6576cb75e7b3"; + }; + patches = [ ./lib-to-syslib.patch ]; + postConfigure = '' + cat << EOF >> configure/CONFIG_SITE + CHECK_RELEASE = YES + GLIBPREFIX=${glib.out} + GLIBDEVPREFIX=${glib.dev} + ARAVIS_INCLUDE=${aravis.dev}/include/aravis-0.6 + ARAVIS_LIB=${aravis.lib}/lib + USR_INCLUDES += -I\$(GLIBPREFIX)/lib/glib-2.0/include -I\$(GLIBDEVPREFIX)/include/glib-2.0 + EOF + ''; + installPhase = '' + runHook preInstall + mkdir -p $out + cp -rf * $out + cd $out + make + rm -rf aravisGigEApp + find . \( -name '*.c' -or -name '*.cc' -or -name '*.cpp' -or -name '*.o' \) -exec rm {} \; + runHook postInstall + ''; +} diff --git a/epics-aravisgige/lib-to-syslib.patch b/epics-aravisgige/lib-to-syslib.patch new file mode 100644 index 0000000..b48d231 --- /dev/null +++ b/epics-aravisgige/lib-to-syslib.patch @@ -0,0 +1,53 @@ +diff --git a/Makefile b/Makefile +index 0299d17..3866918 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,9 +2,9 @@ + TOP = . + include $(TOP)/configure/CONFIG + DIRS := $(DIRS) configure +-DIRS := $(DIRS) vendor ++#DIRS := $(DIRS) vendor + DIRS := $(DIRS) aravisGigEApp +-aravisGigEApp_DEPEND_DIRS += vendor ++#aravisGigEApp_DEPEND_DIRS += vendor + ifeq ($(BUILD_IOCS), YES) + DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocs)) + iocs_DEPEND_DIRS += aravisGigEApp +diff --git a/aravisGigEApp/src/Makefile b/aravisGigEApp/src/Makefile +index 0d35d80..01a2a42 100644 +--- a/aravisGigEApp/src/Makefile ++++ b/aravisGigEApp/src/Makefile +@@ -19,17 +19,11 @@ aravisCamera_SRCS += aravisCamera.cpp + DBD += aravisCameraSupport.dbd + + USR_INCLUDES += $(addprefix -I, $(GLIB_INCLUDE)) ++USR_INCLUDES += $(addprefix -I, $(ARAVIS_INCLUDE)) + +-# We need to link against aravis +-ifeq (linux-x86_64, $(findstring linux-x86_64, $(T_A))) +- USR_INCLUDES_Linux += -I$(TOP)/vendor/aravis-linux-x86_64/include/aravis-0.6 +-else ifeq (linux-x86, $(findstring linux-x86, $(T_A))) +- USR_INCLUDES_Linux += -I$(TOP)/vendor/aravis-linux-x86/include/aravis-0.6 +-endif +- +-USR_LIBS += glib-2.0 ++USR_SYS_LIBS += glib-2.0 + + # TODO: should pick this up from the vendor directory +-USR_LIBS += aravis-0.6 ++USR_SYS_LIBS += aravis-0.6 + + include $(TOP)/configure/RULES +diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE +index 4df968f..62b9d29 100644 +--- a/configure/CONFIG_SITE ++++ b/configure/CONFIG_SITE +@@ -15,7 +15,6 @@ + # Set CHECK_RELEASE to WARN to perform consistency checking but + # continue building anyway if conflicts are found. + CHECK_RELEASE = YES +- + # Set this when you only want to compile this application + # for a subset of the cross-compiled target architectures + # that Base is built for. diff --git a/epics-asyn/default.nix b/epics-asyn/default.nix new file mode 100644 index 0000000..2212bad --- /dev/null +++ b/epics-asyn/default.nix @@ -0,0 +1,12 @@ +{ fetchgit, buildEpicsModule, doxygen }: + +buildEpicsModule rec { + name = "epics-asyn"; + buildInputs = [ doxygen ]; + version = "4-39"; + src = fetchgit { + url = "https://github.com/epics-modules/asyn.git"; + rev = "R${version}"; + sha256 = "0qkpapi1wxgb2692qnch1zy8rc030aidwmrmlq50chzjf2ycp2xi"; + }; +} diff --git a/epics-base/default.nix b/epics-base/default.nix new file mode 100644 index 0000000..1a8bb1b --- /dev/null +++ b/epics-base/default.nix @@ -0,0 +1,44 @@ +{ fetchgit, stdenv, perl }: + +stdenv.mkDerivation rec { + name = "epics-base"; + version = "7.0.4"; + src = fetchgit { + url = "https://github.com/epics-base/epics-base.git"; + rev = "R${version}"; + sha256 = "1r8frq41dsyhvah4czqysz4wszix4gn4whfrcvjxqnf8c1gni3xi"; + fetchSubmodules = false; + }; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ]; + + patches = [ ./no_abs_path_to_cc.patch ]; + + propagatedBuildInputs = [ perl ]; + + setupHook = builtins.toFile "setupHook.sh" '' + export EPICS_BASE='@out@' + ''; + + findSrc = builtins.toFile "find-epics" '' + #!/usr/bin/env bash + echo @out@ + ''; + + configurePhase = "# nothing to do"; + buildPhase = '' + # Dummy build phase, as it is done as part of installPhase + ''; + + installPhase = '' + make INSTALL_LOCATION=$out + substituteAll $findSrc $out/bin/find-$name + chmod +x $out/bin/find-$name + cd $out/bin + for i in linux-x86_64/*; do + ln -s "$i" + done + ''; + + meta.priority = 4; +} diff --git a/epics-base/no_abs_path_to_cc.patch b/epics-base/no_abs_path_to_cc.patch new file mode 100644 index 0000000..a525456 --- /dev/null +++ b/epics-base/no_abs_path_to_cc.patch @@ -0,0 +1,20 @@ +--- a/configure/CONFIG.gnuCommon 1970-01-01 01:00:01.000000000 +0100 ++++ b/configure/CONFIG.gnuCommon 2020-05-30 03:49:35.368196463 +0100 +@@ -17,12 +17,12 @@ + GNU_BIN = $(GNU_DIR)/bin + GNU_LIB = $(GNU_DIR)/lib + +-CC = $(GNU_BIN)/$(CMPLR_PREFIX)gcc$(CMPLR_SUFFIX) +-CCC = $(GNU_BIN)/$(CMPLR_PREFIX)g++$(CMPLR_SUFFIX) +-AR = $(GNU_BIN)/$(CMPLR_PREFIX)ar$(CMPLR_SUFFIX) -rc +-LD = $(GNU_BIN)/$(CMPLR_PREFIX)ld$(CMPLR_SUFFIX) -r ++CC = $(CMPLR_PREFIX)gcc$(CMPLR_SUFFIX) ++CCC =$(CMPLR_PREFIX)g++$(CMPLR_SUFFIX) ++AR = $(CMPLR_PREFIX)ar$(CMPLR_SUFFIX) -rc ++LD = $(CMPLR_PREFIX)ld$(CMPLR_SUFFIX) -r + CPP = $(CC) -x c -E +-RANLIB = $(GNU_BIN)/$(CMPLR_PREFIX)ranlib$(CMPLR_SUFFIX) ++RANLIB = $(CMPLR_PREFIX)ranlib$(CMPLR_SUFFIX) + + # Requires at least GCC 4.8 or LLVM (clang) 3.1 + ASAN_FLAGS_YES = -fsanitize=address diff --git a/epics-busy/default.nix b/epics-busy/default.nix new file mode 100644 index 0000000..a9bbd89 --- /dev/null +++ b/epics-busy/default.nix @@ -0,0 +1,12 @@ +{ fetchgit, buildEpicsModule, epics-asyn }: + +buildEpicsModule rec { + name = "epics-busy"; + buildInputs = [ epics-asyn ]; + version = "1-7-2"; + src = fetchgit { + url = "https://github.com/epics-modules/busy.git"; + rev = "R${version}"; + sha256 = "1c9y2f1p0rj8fyfb13162w0sbbg403i4rbwji7g47yd2y0y8gpj7"; + }; +} diff --git a/epics-calc/default.nix b/epics-calc/default.nix new file mode 100644 index 0000000..b34bec5 --- /dev/null +++ b/epics-calc/default.nix @@ -0,0 +1,11 @@ +{ fetchgit, buildEpicsModule }: + +buildEpicsModule rec { + name = "epics-calc"; + version = "3-7-4"; + src = fetchgit { + url = "https://github.com/epics-modules/calc.git"; + rev = "R${version}"; + sha256 = "14kbrv72cfsavvk5la3m33h9cbhia1n6lywh0ng300qqmlrkv43i"; + }; +} diff --git a/epics-ffmpegserver/default.nix b/epics-ffmpegserver/default.nix new file mode 100644 index 0000000..23f4522 --- /dev/null +++ b/epics-ffmpegserver/default.nix @@ -0,0 +1,20 @@ +{ fetchgit, readline, libxml2, ffmpeg-full, buildEpicsModule, epics-asyn +, epics-adcore, epics-adsimdetector }: + +buildEpicsModule { + name = "epics-ffmpegserver"; + buildInputs = [ + readline + libxml2.dev + ffmpeg-full + epics-asyn + epics-adcore + epics-adsimdetector + ]; + patches = [ ./use-sys-libs.patch ]; + src = fetchgit { + url = "https://github.com/areaDetector/ffmpegServer.git"; + rev = "063bedd082aa4c13be50ca127eecd57cec1188d9"; + sha256 = "1nid2d65ljw0r7yzxb9wa654dgd1sswjn6nfacrwim9k0kcxhd5x"; + }; +} diff --git a/epics-ffmpegserver/use-sys-libs.patch b/epics-ffmpegserver/use-sys-libs.patch new file mode 100644 index 0000000..ff7c85e --- /dev/null +++ b/epics-ffmpegserver/use-sys-libs.patch @@ -0,0 +1,27 @@ +diff --git a/Makefile b/Makefile +index cc47ca1..d1c6ca8 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ + TOP = . + include $(TOP)/configure/CONFIG + DIRS := $(DIRS) configure +-DIRS := $(DIRS) vendor ++#DIRS := $(DIRS) vendor + DIRS := $(DIRS) ffmpegServerApp +-ffmpegServerApp_DEPEND_DIRS += vendor ++#ffmpegServerApp_DEPEND_DIRS += vendor + include $(TOP)/configure/RULES_TOP +diff --git a/ffmpegServerApp/src/Makefile b/ffmpegServerApp/src/Makefile +index fde469a..ab2723c 100644 +--- a/ffmpegServerApp/src/Makefile ++++ b/ffmpegServerApp/src/Makefile +@@ -42,7 +42,7 @@ endif + USR_INCLUDES += -I$(TOP)/vendor/ffmpeg-$(VENDORARCH)/include + + # build the ffmpeg libs (or stubs on windows) into the binaries +-LIB_LIBS += avdevice avformat avcodec swresample swscale avutil ++LIB_SYS_LIBS_Linux += avdevice avformat avcodec swresample swscale avutil + LIB_LIBS += NDPlugin + LIB_SYS_LIBS_WIN32 += user32 + diff --git a/epics-modules/generic/default.nix b/epics-modules/generic/default.nix new file mode 100644 index 0000000..b5a1801 --- /dev/null +++ b/epics-modules/generic/default.nix @@ -0,0 +1,60 @@ +{ stdenv, epics-base, patch-configure }: +{ buildInputs ? [ ], installPhase ? "", ... }@args: +let + newargs = args // { + buildInputs = [ epics-base patch-configure ] ++ buildInputs; + + configurePhase = '' + runHook preConfigure + if [ ! -f "configure/RELEASE.local" ]; then + echo EPICS_BASE= > configure/RELEASE.local + for dep in $buildInputs; do + if [[ "$dep" == *epics* ]]; then + module="''${dep##*-}" + if [[ "$module" == "base" ]]; then + continue + fi + module_upper="''${module^^}" + echo ''${module_upper}= >> configure/RELEASE.local + fi + done + echo "Created RELEASE.local with:" + cat configure/RELEASE.local + fi + # patch release files to point to dependencies + for path in "configure/RELEASE" "configure/RELEASE.linux-x86_64.Common" "configure/RELEASE.linux-x86_64" "configure/RELEASE.local"; do + if [ -f "$path" ]; then + patch-configure "$path" + fi + done + # don't make examples or docs + if [ -f etc/Makefile ]; then + sed -i /makeIocs/d etc/Makefile; + sed -i /makeDocumentation/d etc/Makefile; + fi + runHook postConfigure + ''; + + findSrc = builtins.toFile "find-epics" '' + #!/usr/bin/env bash + echo @out@ + ''; + + buildPhase = "# Dummy, it is done as part of installPhase"; + + installPhase = if installPhase == "" then '' + runHook preInstall + make INSTALL_LOCATION=$out + mkdir -p $out/bin + substituteAll $findSrc $out/bin/find-$name + chmod +x $out/bin/find-$name + if [ -d etc ]; then + cp -rf etc $out + fi + runHook postInstall + '' else + installPhase; + + meta.priority = 6; + }; +in stdenv.mkDerivation newargs diff --git a/epics-motor/default.nix b/epics-motor/default.nix new file mode 100644 index 0000000..8cfc8d5 --- /dev/null +++ b/epics-motor/default.nix @@ -0,0 +1,11 @@ +{ fetchurl, buildEpicsModule, epics-busy, epics-asyn }: + +buildEpicsModule rec { + name = "epics-motor"; + buildInputs = [ epics-busy epics-asyn ]; + version = "7-2-1"; + src = fetchurl { + url = "https://github.com/epics-modules/motor/archive/R${version}.tar.gz"; + sha256 = "0dwy7y5ixhi15mmw1cx9qdk1ci62f89r66lzg0b7cylaqvgn7w8v"; + }; +} diff --git a/epics-normativetypes/default.nix b/epics-normativetypes/default.nix new file mode 100644 index 0000000..44f3a09 --- /dev/null +++ b/epics-normativetypes/default.nix @@ -0,0 +1,12 @@ +{ fetchgit, buildEpicsModule, epics-pvcommon, epics-pvdata }: + +buildEpicsModule rec { + name = "epics-normativetypes"; + buildInputs = [ epics-pvcommon epics-pvdata ]; + version = "6.0.1"; + src = fetchgit { + url = "https://github.com/epics-base/normativeTypesCPP.git"; + rev = "${version}"; + sha256 = "0z037f6ad8fz1pp6b3q693nn21k3kpkq1ywbzb95wp6lap0fs6rl"; + }; +} diff --git a/epics-pmac/default.nix b/epics-pmac/default.nix new file mode 100644 index 0000000..2b0237f --- /dev/null +++ b/epics-pmac/default.nix @@ -0,0 +1,15 @@ +{ fetchgit, boost, libssh2, buildEpicsModule, epics-calc, epics-busy, epics-asyn +, epics-motor }: + +buildEpicsModule rec { + name = "epics-pmac"; + buildInputs = [ boost libssh2 epics-calc epics-busy epics-asyn epics-motor ]; + version = "2-4-10"; + src = fetchgit { + url = "https://github.com/dls-controls/pmac.git"; + rev = "refs/tags/${version}"; + sha256 = "0013xrx0cf90cxyjz32za2lqs56ihj6k5jj7hjardl2yq3wr2gf1"; + }; + NIX_CFLAGS_COMPILE = "-Wno-error=format-security"; + patches = [ ./disable-tests.patch ]; +} diff --git a/epics-pmac/disable-tests.patch b/epics-pmac/disable-tests.patch new file mode 100644 index 0000000..0b3ddd3 --- /dev/null +++ b/epics-pmac/disable-tests.patch @@ -0,0 +1,33 @@ +diff --git a/pmacApp/Makefile b/pmacApp/Makefile +index 8dc1db7..424969a 100644 +--- a/pmacApp/Makefile ++++ b/pmacApp/Makefile +@@ -5,6 +5,5 @@ DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*)) + DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*)) + DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*)) + DIRS += opi +-DIRS += unitTests + DIRS += pmc + include $(TOP)/configure/RULES_DIRS +diff --git a/pmacApp/powerPmacAsynPortSrc/Makefile b/pmacApp/powerPmacAsynPortSrc/Makefile +index 1611964..c333c9f 100644 +--- a/pmacApp/powerPmacAsynPortSrc/Makefile ++++ b/pmacApp/powerPmacAsynPortSrc/Makefile +@@ -17,7 +17,7 @@ ifdef SSH + + powerPmacAsynPort_LIBS += asyn + powerPmacAsynPort_LIBS += motor +- powerPmacAsynPort_LIBS += ssh2 ++ powerPmacAsynPort_SYS_LIBS += ssh2 + powerPmacAsynPort_LIBS += $(EPICS_BASE_IOC_LIBS) + ssh2_DIR = $(SSH_LIB) + USR_INCLUDES+= $(SSH_INCLUDE) +@@ -33,7 +33,7 @@ ifdef SSH + powerPMACShell_LIBS += powerPmacAsynPort + powerPMACShell_LIBS += asyn + powerPMACShell_LIBS += motor +- powerPMACShell_LIBS += ssh2 ++ powerPMACShell_SYS_LIBS += ssh2 + ssh2_DIR = $(SSH_LIB) + USR_INCLUDES+= $(SSH_INCLUDE) + diff --git a/epics-pvaccess/default.nix b/epics-pvaccess/default.nix new file mode 100644 index 0000000..88ed08a --- /dev/null +++ b/epics-pvaccess/default.nix @@ -0,0 +1,13 @@ +{ fetchgit, buildEpicsModule, epics-pvcommon, epics-pvdata }: + +buildEpicsModule rec { + name = "epics-pvaccess"; + buildInputs = [ epics-pvcommon epics-pvdata ]; + version = "7.1.1"; + src = fetchgit { + url = "https://github.com/epics-base/pvAccessCPP.git"; + rev = "${version}"; + sha256 = "1l3k2vq8jm5rhld7id6cp1zan6hfcglmxqd7rh8klb3ys54v14qk"; + fetchSubmodules = false; + }; +} diff --git a/epics-pvaclient/default.nix b/epics-pvaclient/default.nix new file mode 100644 index 0000000..2e46067 --- /dev/null +++ b/epics-pvaclient/default.nix @@ -0,0 +1,14 @@ +{ fetchgit, buildEpicsModule, epics-pvdata, epics-normativetypes, epics-pvaccess +}: + +buildEpicsModule rec { + name = "epics-pvaclient"; + buildInputs = [ epics-pvdata epics-normativetypes epics-pvaccess ]; + version = "4.7.1"; + src = fetchgit { + url = "https://github.com/epics-base/pvaClientCPP.git"; + rev = "${version}"; + sha256 = "03hn68cp3sxjzkz4xfhlmzpx2bi3asslf16ikkx5mbfc2jqf01km"; + fetchSubmodules = false; + }; +} diff --git a/epics-pvcommon/default.nix b/epics-pvcommon/default.nix new file mode 100644 index 0000000..b536034 --- /dev/null +++ b/epics-pvcommon/default.nix @@ -0,0 +1,12 @@ +{ fetchgit, buildEpicsModule }: + +buildEpicsModule rec { + name = "epics-pvcommon"; + version = "4.2.3"; + src = fetchgit { + url = "https://github.com/epics-base/pvCommonCPP.git"; + rev = "${version}"; + sha256 = "16wijishs8l4bdr69vdblmmcvbsxwfmmq0q12mx9q606iv60idj8"; + fetchSubmodules = false; + }; +} diff --git a/epics-pvdata/default.nix b/epics-pvdata/default.nix new file mode 100644 index 0000000..82b33ca --- /dev/null +++ b/epics-pvdata/default.nix @@ -0,0 +1,13 @@ +{ fetchgit, buildEpicsModule, epics-pvcommon }: + +buildEpicsModule rec { + name = "dls-epics-pvdata"; + buildInputs = [ epics-pvcommon ]; + version = "8.0.2"; + src = fetchgit { + url = "https://github.com/epics-base/pvDataCPP.git"; + rev = "${version}"; + sha256 = "117ivf4k8a9r9sz0qkg1i8iaii98fyvfni94xsg3zdgfiv17p5bq"; + fetchSubmodules = false; + }; +} diff --git a/epics-pvdatabase/default.nix b/epics-pvdatabase/default.nix new file mode 100644 index 0000000..8663e76 --- /dev/null +++ b/epics-pvdatabase/default.nix @@ -0,0 +1,13 @@ +{ fetchgit, buildEpicsModule, epics-pvcommon, epics-pvdata, epics-pvaccess }: + +buildEpicsModule rec { + name = "epics-pvdatabase"; + buildInputs = [ epics-pvcommon epics-pvdata epics-pvaccess ]; + version = "4.5.2"; + src = fetchgit { + url = "https://github.com/epics-base/pvDatabaseCPP.git"; + rev = "${version}"; + sha256 = "0vc29c5mcnv13py2a7mhriac3nxhi3fvlswrz2icaqr4834kf3z6"; + fetchSubmodules = false; + }; +} diff --git a/epics-seq/default.nix b/epics-seq/default.nix new file mode 100644 index 0000000..62cf359 --- /dev/null +++ b/epics-seq/default.nix @@ -0,0 +1,13 @@ +{ fetchgit, re2c, buildEpicsModule }: + +buildEpicsModule rec { + name = "epics-seq"; + buildInputs = [ re2c ]; + version = "2-2-8"; + src = fetchgit { + url = + "http://www-csr.bessy.de/control/SoftDist/sequencer/repo/branch-2-2.git"; + rev = "R${version}"; + sha256 = "1bzl86wv15jx2q1i5ax3cz37gv736yg3h1fcjs5dhy9klhw613ya"; + }; +} diff --git a/epics-sscan/default.nix b/epics-sscan/default.nix new file mode 100644 index 0000000..8d90ecd --- /dev/null +++ b/epics-sscan/default.nix @@ -0,0 +1,11 @@ +{ fetchgit, buildEpicsModule }: + +buildEpicsModule rec { + name = "epics-sscan"; + version = "2-11-3"; + src = fetchgit { + url = "https://github.com/epics-modules/sscan.git"; + rev = "R${version}"; + sha256 = "060hqjg7n9irllpnqjpwn39xkw1ldiwqykv95bldag116aljdhhz"; + }; +} diff --git a/epics-streamdevice/default.nix b/epics-streamdevice/default.nix new file mode 100644 index 0000000..3e291a0 --- /dev/null +++ b/epics-streamdevice/default.nix @@ -0,0 +1,34 @@ +{ fetchgit, pcre, readline, git, buildEpicsModule, epics-asyn }: + +buildEpicsModule rec { + name = "epics-streamdevice"; + buildInputs = [ pcre readline git epics-asyn ]; + version = "2.8.14"; + src = fetchgit { + url = "https://github.com/paulscherrerinstitute/StreamDevice.git"; + rev = "${version}"; + sha256 = "0j4rj3pvc02ridz12zqkj3iiqnzavn38nhf52fi8g8dq8908ypm4"; + leaveDotGit = true; + }; + patches = [ ./fix-version-discovery.patch ]; + postConfigure = '' + oldIFS="$IFS" + IFS='.' + read -a ver <<<"$version" + IFS="$oldIFS" + cat << EOF > src/StreamVersion.h + #ifndef StreamVersion_h + #define StreamVersion_h + #define STREAM_MAJOR ''${ver[0]} + #define STREAM_MINOR ''${ver[1]} + #define STREAM_PATCHLEVEL ''${ver[2]} + #define STREAM_DEV "" + #endif /* StreamVersion_h */ + EOF + cat << EOF > configure/CONFIG + include \$(TOP)/configure/CONFIG_APP + PCRE_LIB=${pcre.out}/lib + PCRE_INCLUDE=${pcre.dev}/include + EOF + ''; +} diff --git a/epics-streamdevice/fix-version-discovery.patch b/epics-streamdevice/fix-version-discovery.patch new file mode 100644 index 0000000..0669cfb --- /dev/null +++ b/epics-streamdevice/fix-version-discovery.patch @@ -0,0 +1,14 @@ +diff --git a/src/Makefile b/src/Makefile +index 7c9d24b..47dafec 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -90,8 +90,7 @@ CPPFLAGS += -DSTREAM_INTERNAL + # Update version string whenever something changed. + StreamVersion$(OBJ): $(COMMON_DIR)/StreamVersion.h $(filter-out StreamVersion$(OBJ),$(LIBOBJS) $(LIBRARY_OBJS)) ../CONFIG_STREAM + $(COMMON_DIR)/StreamVersion.h: $(SRCS) $(filter-out StreamVersion.h, $(INC)) +- @echo Creating $@ from git tag +- $(PERL) ../makeStreamVersion.pl > $@ ++ cp ../StreamVersion.h $@ + + # Add references to all registrars to main file to avoid + # missing initialization. diff --git a/patch-configure/default.nix b/patch-configure/default.nix new file mode 100644 index 0000000..e0c1c5d --- /dev/null +++ b/patch-configure/default.nix @@ -0,0 +1,16 @@ +{ python3, stdenv }: + +stdenv.mkDerivation { + name = "patch-configure"; + phases = [ "installPhase" "fixupPhase" ]; + buildInputs = [ python3 ]; + src = ./patch-configure; + configurePhase = "# nothing to do"; + buildPhase = "# nothing to do"; + fixupPahse = "patchShebangs $out/bin/patch-configure"; + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/patch-configure + chmod +x $out/bin/patch-configure + ''; +} diff --git a/patch-configure/patch-configure b/patch-configure/patch-configure new file mode 100755 index 0000000..9954a93 --- /dev/null +++ b/patch-configure/patch-configure @@ -0,0 +1,94 @@ +#!/usr/bin/env python +import argparse +import os +import sys +import subprocess +import re +PREFIX = 'epics' +WHITE_LIST = set(["TEMPLATE_TOP", "PYTHON_PREFIX"]) + + +class PatchConfigure(object): + + def __init__(self, use_build_inputs): + self._deps = self.get_epics_deps(use_build_inputs) + + def extract_epics_module_name(self, path): + if path.endswith(f'{PREFIX}-base'): + return "EPICS_BASE" + return re.findall(f'{PREFIX}-(.*)', path)[0].upper() + + def is_epics_related(self, path): + return PREFIX in path + + def get_epics_deps(self, use_build_inputs): + if use_build_inputs: + output = os.environ.get('buildInputs') + else: + output = subprocess.check_output(['nix-env', + '-q', + '--installed', + '--no-name', + '--out-path']).decode() + result = {} + for i in output.split(): + if self.is_epics_related(i): + result[self.extract_epics_module_name(i)] = i.strip() + return result + + def resolve_path(self, module_name): + if module_name in self._deps: + module_path = self._deps[module_name] + else: + try: + if module_name == "EPICS_BASE": + find_cmd = f"find-{PREFIX}-base" + else: + find_cmd = f"find-{PREFIX}-{module_name.lower()}" + module_path = \ + subprocess.check_output([find_cmd]).decode().strip() + except Exception: + module_path = "" + return module_path + + def patch(self, path): + output_content = [] + with open(path, 'r') as infile: + for line in infile: + sline = line.split('=') + module_name = sline[0].strip() + if len(sline) == 2 and not module_name.startswith('#') and module_name not in WHITE_LIST: + module_path = self.resolve_path(module_name) + if not module_path: + print(f"Skipping {module_name}") + continue + output_content.append(f"{module_name}={module_path}\n") + else: + output_content.append(line) + output_content = "".join(output_content) + with open(path, 'w') as outfile: + outfile.write(output_content) + + +def parse_args(): + + def _check_path_valid(path): + if not os.access(path, os.R_OK): + raise argparse.ArgumentError("File does not exist") + return path + + parser = argparse.ArgumentParser() + parser.add_argument("path", type=_check_path_valid, + default="./configure/RELEASE") + return parser.parse_args() + + +def main(): + args = parse_args() + use_build_inputs = bool(os.environ.get('buildInputs', '').strip()) + pc = PatchConfigure(use_build_inputs) + pc.patch(args.path) + + +if __name__ == "__main__": + main()