Skip to content

Creating a standalone driver module

Kevin Peterson edited this page Apr 3, 2019 · 5 revisions

Documentation of the specific approach to creating a standalone driver module. The procedure for creating motorNewport is expected to be more

Procedure

  1. Clone motor

    [~/epics/motor-split/Newport]$ git clone https://github.com/epics-modules/motor.git
    Cloning into 'motor'...
    remote: Enumerating objects: 34, done.
    remote: Counting objects: 100% (34/34), done.
    remote: Compressing objects: 100% (31/31), done.
    remote: Total 16693 (delta 13), reused 11 (delta 3), pack-reused 16659
    Receiving objects: 100% (16693/16693), 5.96 MiB | 0 bytes/s, done.
    Resolving deltas: 100% (12631/12631), done.
    Checking out files: 100% (853/853), done.
    
  2. Work with a clone of a clone to avoid pushing back to github and also allow a clean restart of the process

    [~/epics/motor-split/Newport]$ git clone file://motor motorNewport1
    Cloning into 'motorNewport1'...
    remote: Counting objects: 16301, done.
    remote: Compressing objects: 100% (3945/3945), done.
    remote: Total 16301 (delta 12330), reused 16301 (delta 12330)
    Receiving objects: 100% (16301/16301), 5.89 MiB | 0 bytes/s, done.
    Resolving deltas: 100% (12330/12330), done.
    Checking out files: 100% (853/853), done.
    
  3. Figure out the egrep pattern for the files that should be retained

    [~/epics/motor-split/Newport]$ cd motorNewport1/
    [~/epics/motor-split/Newport/motorNewport1]$ git ls-files | egrep "(XPS|xps|HXP|hxp|AG_|CONEX|SMC100|NewportSrc|Newport_|gitattributes|gitignore)"
    .gitattributes
    .gitignore
    iocBoot/iocWithAsyn/XPSAux.substitutions
    iocBoot/iocWithAsyn/connect_AG_CONEX
    iocBoot/iocWithAsyn/connect_AG_UC
    iocBoot/iocWithAsyn/motor.cmd.hxp
    iocBoot/iocWithAsyn/motor.substitutions.AG_CONEX
    iocBoot/iocWithAsyn/motor.substitutions.AG_UC
    iocBoot/iocWithAsyn/motor.substitutions.CONEX-PP
    iocBoot/iocWithAsyn/motor.substitutions.SMC100
    iocBoot/iocWithAsyn/motor.substitutions.hxp
    iocBoot/iocWithAsyn/motor.substitutions.xps
    iocBoot/iocWithAsyn/motor.substitutions.xps3
    iocBoot/iocWithAsyn/motor.substitutions.xps4
    iocBoot/iocWithAsyn/motor.substitutions.xps5
    iocBoot/iocWithAsyn/st.cmd.AG_CONEX
    iocBoot/iocWithAsyn/st.cmd.AG_UC
    iocBoot/iocWithAsyn/st.cmd.CONEX-PP
    iocBoot/iocWithAsyn/st.cmd.SMC100
    iocBoot/iocWithAsyn/st.cmd.xps
    iocBoot/iocWithAsyn/st.cmd.xps3
    iocBoot/iocWithAsyn/st.cmd.xps4
    iocBoot/iocWithAsyn/st.cmd.xps5
    iocBoot/iocWithAsyn/st.cmd.xps6
    iocsh/Newport_ESP300.iocsh
    iocsh/Newport_MM4000.iocsh
    iocsh/Newport_PM500.iocsh
    motorApp/Db/HXP_coords.db
    motorApp/Db/HXP_extra.db
    motorApp/Db/XPSAuxAi.db
    motorApp/Db/XPSAuxAo.db
    motorApp/Db/XPSAuxBi.db
    motorApp/Db/XPSAuxBo.db
    motorApp/Db/XPSAuxLi.db
    motorApp/Db/XPSAuxLo.db
    motorApp/Db/XPSPositionCompare.db
    motorApp/Db/XPSPositionCompare_settings.req
    motorApp/Db/XPSTclScript.template
    motorApp/Db/XPS_extra.db
    motorApp/Db/profileMoveAxisXPS.template
    motorApp/Db/profileMoveControllerXPS.template
    motorApp/Db/profileMoveControllerXPS_settings.req
    motorApp/Db/xpsSlave.db
    motorApp/NewportSrc/AG_CONEX.cpp
    motorApp/NewportSrc/AG_CONEX.h
    motorApp/NewportSrc/AG_UC.cpp
    motorApp/NewportSrc/AG_UC.h
    motorApp/NewportSrc/Firmware.txt
    motorApp/NewportSrc/HXPDriver.cpp
    motorApp/NewportSrc/HXPDriver.h
    motorApp/NewportSrc/MM4005_trajectoryScan.st
    motorApp/NewportSrc/Makefile
    motorApp/NewportSrc/NewportRegister.cc
    motorApp/NewportSrc/NewportRegister.h
    motorApp/NewportSrc/README
    motorApp/NewportSrc/SMC100Driver.cpp
    motorApp/NewportSrc/SMC100Driver.h
    motorApp/NewportSrc/SMC100Register.cc
    motorApp/NewportSrc/SMC100Register.h
    motorApp/NewportSrc/Socket.cpp
    motorApp/NewportSrc/Socket.h
    motorApp/NewportSrc/XPSAsynInterpose.c
    motorApp/NewportSrc/XPSAsynInterpose.h
    motorApp/NewportSrc/XPSAxis.cpp
    motorApp/NewportSrc/XPSAxis.h
    motorApp/NewportSrc/XPSController.cpp
    motorApp/NewportSrc/XPSController.h
    motorApp/NewportSrc/XPSGathering.c
    motorApp/NewportSrc/XPSGathering2.c
    motorApp/NewportSrc/XPSGatheringMain.c
    motorApp/NewportSrc/XPSGatheringRegister.c
    motorApp/NewportSrc/XPS_C8_drivers.cpp
    motorApp/NewportSrc/XPS_C8_drivers.h
    motorApp/NewportSrc/XPS_C8_errors.h
    motorApp/NewportSrc/XPS_trajectoryScan.st
    motorApp/NewportSrc/asynOctetSocket.cpp
    motorApp/NewportSrc/asynOctetSocket.h
    motorApp/NewportSrc/devESP300.cc
    motorApp/NewportSrc/devMM3000.cc
    motorApp/NewportSrc/devMM4000.cc
    motorApp/NewportSrc/devNewport.dbd
    motorApp/NewportSrc/devNewportSeq.dbd
    motorApp/NewportSrc/devPM500.cc
    motorApp/NewportSrc/drvESP300.cc
    motorApp/NewportSrc/drvMM3000.cc
    motorApp/NewportSrc/drvMM4000.cc
    motorApp/NewportSrc/drvMM4000Asyn.c
    motorApp/NewportSrc/drvMM4000Asyn.h
    motorApp/NewportSrc/drvMMCom.h
    motorApp/NewportSrc/drvPM500.cc
    motorApp/NewportSrc/drvXPSAsyn.c
    motorApp/NewportSrc/drvXPSAsyn.h
    motorApp/NewportSrc/drvXPSAsynAux.c
    motorApp/NewportSrc/hxp_drivers.cpp
    motorApp/NewportSrc/hxp_drivers.h
    motorApp/NewportSrc/hxp_errors.h
    motorApp/NewportSrc/seqPVmacros.h
    motorApp/NewportSrc/strtok_r.c
    motorApp/NewportSrc/strtok_r.h
    motorApp/NewportSrc/tclCall.cc
    motorApp/NewportSrc/tclCall.h
    motorApp/NewportSrc/trajectoryScan.h
    motorApp/NewportSrc/xpsSlave.st
    motorApp/NewportSrc/xps_ftp.c
    motorApp/NewportSrc/xps_ftp.h
    motorApp/op/adl/HXP.adl
    motorApp/op/adl/HXP_coordSys.adl
    motorApp/op/adl/HXP_extra.adl
    motorApp/op/adl/HXP_motors.adl
    motorApp/op/adl/HXP_moveAll.adl
    motorApp/op/adl/XPSAux.adl
    motorApp/op/adl/XPSAuxBi_more.adl
    motorApp/op/adl/XPSAuxTest.adl
    motorApp/op/adl/XPSExtra.adl
    motorApp/op/adl/XPSPositionCompare.adl
    motorApp/op/adl/XPSPositionCompare8.adl
    motorApp/op/adl/XPSTop.adl
    motorApp/op/adl/profileMoveXPS.adl
    motorApp/op/opi/HXP.opi
    motorApp/op/opi/HXP_coordSys.opi
    motorApp/op/opi/HXP_extra.opi
    motorApp/op/opi/HXP_motors.opi
    motorApp/op/opi/HXP_moveAll.opi
    motorApp/op/opi/XPSAux.opi
    motorApp/op/opi/XPSAuxBi_more.opi
    motorApp/op/opi/XPSAuxTest.opi
    motorApp/op/opi/XPSExtra.opi
    motorApp/op/opi/XPSTest.opi
    motorApp/op/opi/XPSTop.opi
    motorApp/op/opi/profileMoveXPS.opi
    motorApp/op/ui/autoconvert/HXP.ui
    motorApp/op/ui/autoconvert/HXP_coordSys.ui
    motorApp/op/ui/autoconvert/HXP_extra.ui
    motorApp/op/ui/autoconvert/HXP_motors.ui
    motorApp/op/ui/autoconvert/HXP_moveAll.ui
    motorApp/op/ui/autoconvert/XPSAux.ui
    motorApp/op/ui/autoconvert/XPSAuxBi_more.ui
    motorApp/op/ui/autoconvert/XPSAuxTest.ui
    motorApp/op/ui/autoconvert/XPSExtra.ui
    motorApp/op/ui/autoconvert/XPSTest.ui
    motorApp/op/ui/autoconvert/XPSTop.ui
    motorApp/op/ui/autoconvert/profileMoveXPS.ui
    
  4. Filter the git history to include only the specified files

    [~/epics/motor-split/Newport/motorNewport1]$ git filter-branch --prune-empty --index-filter 'git ls-files -z | egrep -zv "(XPS|xps|HXP|hxp|AG_|CONEX|SMC100|NewportSrc|Newport_|gitattributes|gitignore)" | xargs -0 -r git rm --cached -q' HEAD
    Rewrite 1196bbe4df5968ae4ac05c142a9f4be93827d06e (2487/2778)error: duplicate parent 2cc7aa2d7457306425e6ee27c8a688db50571cc9 ignored
    Rewrite ab6092f8b5dc3f07a055d4039bac44dd2c88bda4 (2491/2778)error: duplicate parent 0db4a37e80a8488a3dba413a2a28f996aeb5f978 ignored
    Rewrite 724dd71a723a4fb36fd84a08b4665091002cffd9 (2503/2778)error: duplicate parent adc4a679ee91e901ed1b089b76e5e2a4c4b254ca ignored
    Rewrite ae84076e42347a365b360d1d5f1583a07805b02d (2505/2778)error: duplicate parent b32cd24c638e1d72f2ab8f77b78fec1ad6930eae ignored
    Rewrite 6cb7ff2a5e4d19aad382f81b2c5fe50eec1e7da8 (2533/2778)error: duplicate parent a1f39cfc70cded11ca79d5c0edaea3406038bb3b ignored
    Rewrite 14b1070b7d64fb95e7dcf4be06b9386a088cf258 (2543/2778)error: duplicate parent cd379f7aea23c33cbb78b9213d908f02c76ec0a9 ignored
    Rewrite 6b9ca72120ce26c074a04f833363bb4c7400bb8d (2545/2778)error: duplicate parent 31ae96e1dffb60413074b46715b87dfca90a6993 ignored
    Rewrite 345fecadb8c1a20448ee54be3b9f2865da5fa0e5 (2555/2778)error: duplicate parent faaff0981d26bb0c6daa7b6f0f8ef005da388a5b ignored
    Rewrite 8966aeabf292874de8c78754e95e14cde1f1c776 (2568/2778)error: duplicate parent 01ff42a40354b828265ab8e4f422a7efea131b09 ignored
    Rewrite 4ade0a7f3717696d20dcfc75895acf4489c1fa40 (2588/2778)error: duplicate parent f34d55b819d2b1431ab6ded087ef5f2ad441458d ignored
    Rewrite 6990911206d54e5bf0ec1e4ba7284154b45866cf (2679/2778)error: duplicate parent b5ecd77677303ff237925a00e1ae13da371dbfc5 ignored
    Rewrite 09fcb5986c7bcb0d88d75949cf3ec40d680f4c17 (2725/2778)error: duplicate parent bdeee1578989eda786ae7999124ade8dd424af00 ignored
    Rewrite 548a013a38ea4c2b44953463162aaeb240a3efed (2729/2778)error: duplicate parent 3dee3edd2f3f762323bbae76dc7c686297e2333c ignored
    Rewrite c09b49c245aa0b8ad3f0cbb38e434de045f22d9d (2736/2778)error: duplicate parent 2d235e5a38c16432c49e734bcdf1586ba084f1bc ignored
    Rewrite 741d4292cd78cf7c059426ecf0aea6269c4f9a50 (2740/2778)error: duplicate parent c2d21902b2273aeccabdd196ce5abb589f590e8b ignored
    Rewrite f6e9f2620981aecd4e4793d56bbdf858dcb28a21 (2743/2778)error: duplicate parent a455255b50000416fb92e1eb9e98ec7d84a76976 ignored
    Rewrite 5cebc48ba84b77ed3ca470a5e0d3f4e32de9ca0e (2778/2778)
    Ref 'refs/heads/master' was rewritten
    [~/epics/motor-split/Newport/motorNewport1]$ cd ../
    
  5. Create a new clone

    [~/epics/motor-split/Newport]$ git clone file://motorNewport1 motorNewport2
    Cloning into 'motorNewport2'...
    remote: Counting objects: 18357, done.
    remote: Compressing objects: 100% (5697/5697), done.
    remote: Total 18357 (delta 12747), reused 15990 (delta 12317)
    Receiving objects: 100% (18357/18357), 6.06 MiB | 1.44 MiB/s, done.
    Resolving deltas: 100% (12747/12747), done.
    
  6. Remove the empty merge commits (the 'duplicate parent' commits from the previous filter-branch command)

    [~/epics/motor-split/Newport]$ cd motorNewport2/
    [~/epics/motor-split/Newport/motorNewport2]$ git filter-branch --prune-empty --parent-filter 'sed "s/-p //g" | xargs -r git show-branch --independent | sed "s/\</-p /g"'
    Rewrite 28aeff5d88fe103bb50c3d60b633ab7392fd2a19 (696/696)
    Ref 'refs/heads/master' was rewritten
    [~/epics/motor-split/Newport/motorNewport2]$ cd ../
    
  7. Make the example application and IOC

    [~/epics/motor-split/Newport]$ mkdir motorNewportBlank
    [~/epics/motor-split/Newport]$ cd motorNewportBlank/
    [~/epics/motor-split/Newport/motorNewportBlank]$ /APSshare/epics/base-3.15.6/bin/linux-x86_64/makeBaseApp.pl -t support newport
    [~/epics/motor-split/Newport/motorNewportBlank]$ ls -l
    total 12
    drwxrwxr-x 2 kpetersn aesbc 4096 Mar 19 16:31 configure
    -rw-rw-r-- 1 kpetersn aesbc  900 Mar 19 16:31 Makefile
    drwxrwxr-x 4 kpetersn aesbc 4096 Mar 19 16:31 newportApp
    [~/epics/motor-split/Newport/motorNewportBlank]$ mkdir -p iocs/newportIOC
    [~/epics/motor-split/Newport/motorNewportBlank]$ cd iocs/newportIOC/
    [~/epics/motor-split/Newport/motorNewportBlank/iocs/newportIOC]$ /APSshare/epics/base-3.15.6/bin/linux-x86_64/makeBaseApp.pl -t ioc newport
    [~/epics/motor-split/Newport/motorNewportBlank/iocs/newportIOC]$ /APSshare/epics/base-3.15.6/bin/linux-x86_64/makeBaseApp.pl -i -t ioc Newport
    The following target architectures are available in base:
        linux-x86_64
        vxWorks-ppc32sf-debug
        vxWorks-ppc32-debug
        vxWorks-ppc32sf
        vxWorks-ppc32
        linux-x86_64-debug
        linux-x86
        linux-arm
        rhel6-x86_64
        rhel6-x86_64-debug
        windows-x64-static
        win32-x86-static
    What architecture do you want to use? linux-x86_64
    The following applications are available:
        newport
    What application should the IOC(s) boot?
    The default uses the IOC's name, even if not listed above.
    Application name? newport
    
    [~/epics/motor-split/Newport/motorNewportBlank/iocs/newportIOC]$ cd ../../
    [~/epics/motor-split/Newport/motorNewportBlank]$ find .
    .
    ./configure
    ./configure/CONFIG
    ./configure/CONFIG_SITE
    ./configure/Makefile
    ./configure/RELEASE
    ./configure/RULES
    ./configure/RULES.ioc
    ./configure/RULES_DIRS
    ./configure/RULES_TOP
    ./Makefile
    ./newportApp
    ./newportApp/Makefile
    ./newportApp/src
    ./newportApp/src/Makefile
    ./newportApp/src/newport.dbd
    ./newportApp/Db
    ./newportApp/Db/Makefile
    ./iocs
    ./iocs/newportIOC
    ./iocs/newportIOC/configure
    ./iocs/newportIOC/configure/CONFIG
    ./iocs/newportIOC/configure/CONFIG_SITE
    ./iocs/newportIOC/configure/Makefile
    ./iocs/newportIOC/configure/RELEASE
    ./iocs/newportIOC/configure/RULES
    ./iocs/newportIOC/configure/RULES.ioc
    ./iocs/newportIOC/configure/RULES_DIRS
    ./iocs/newportIOC/configure/RULES_TOP
    ./iocs/newportIOC/Makefile
    ./iocs/newportIOC/newportApp
    ./iocs/newportIOC/newportApp/Makefile
    ./iocs/newportIOC/newportApp/src
    ./iocs/newportIOC/newportApp/src/Makefile
    ./iocs/newportIOC/newportApp/src/newportMain.cpp
    ./iocs/newportIOC/newportApp/Db
    ./iocs/newportIOC/newportApp/Db/Makefile
    ./iocs/newportIOC/iocBoot
    ./iocs/newportIOC/iocBoot/Makefile
    ./iocs/newportIOC/iocBoot/iocNewport
    ./iocs/newportIOC/iocBoot/iocNewport/Makefile
    ./iocs/newportIOC/iocBoot/iocNewport/st.cmd
    [~/epics/motor-split/Newport/motorNewportBlank]$ cd ../
    
  8. Create a new clone

    [~/epics/motor-split/Newport]$ git clone file://motorNewport2 motorNewport3
    Cloning into 'motorNewport3'...
    remote: Counting objects: 18290, done.
    remote: Compressing objects: 100% (5219/5219), done.
    remote: Total 18290 (delta 12739), reused 18255 (delta 12728)
    Receiving objects: 100% (18290/18290), 6.05 MiB | 0 bytes/s, done.
    Resolving deltas: 100% (12739/12739), done.
    
  9. Rename App & src directories

    [~/epics/motor-split/Newport]$ cd motorNewport3
    [~/epics/motor-split/Newport/motorNewport3]$ git filter-branch --tree-filter 'test -d motorApp/NewportSrc && mv motorApp/NewportSrc motorApp/src && mv motorApp newportApp || echo " Nothing to do"' HEAD
    Rewrite e820cf991f0a72e970cee529529b98fab94703b4 (1/629) Nothing to do
    Rewrite c890eb62a16ffe766c5fafb3443eb25060a099de (629/629)
    Ref 'refs/heads/master' was rewritten
    [~/epics/motor-split/Newport/motorNewport3]$ cd ../
    
  10. Create a new clone

    [~/epics/motor-split/Newport]$ git clone file://motorNewport3 motorNewport4
    Cloning into 'motorNewport4'...
    remote: Counting objects: 18290, done.
    remote: Compressing objects: 100% (5539/5539), done.
    remote: Total 18290 (delta 12722), reused 16178 (delta 12408)
    Receiving objects: 100% (18290/18290), 6.04 MiB | 324.00 KiB/s, done.
    Resolving deltas: 100% (12722/12722), done.
    
  11. Rename iocBoot directories

    [~/epics/motor-split/Newport]$ cd motorNewport4/
    [~/epics/motor-split/Newport/motorNewport4]$ git filter-branch --tree-filter 'test -d iocBoot/iocWithAsyn && mv iocBoot/iocWithAsyn iocBoot/iocNewport && mkdir -p iocs/newportIOC && mv iocBoot iocs/newportIOC || echo " Nothing to do"' HEAD
    Rewrite e820cf991f0a72e970cee529529b98fab94703b4 (1/629) Nothing to do
    <removed 131 lines>
    Rewrite 283468f9ddab4d50534acced680fd1b9f1487a8c (133/629) Nothing to do
    Rewrite 8c9906b4bd5907d6fdfa64cc9215c8d3a5d9e77e (629/629)
    Ref 'refs/heads/master' was rewritten
    [~/epics/motor-split/Newport/motorNewport4]$ cd ../
    
  12. Create a new clone

    [~/epics/motor-split/Newport]$ git clone file://motorNewport4 motorNewport5
    Cloning into 'motorNewport5'...
    remote: Counting objects: 18380, done.
    remote: Compressing objects: 100% (5465/5465), done.
    remote: Total 18380 (delta 12722), reused 17041 (delta 12482)
    Receiving objects: 100% (18380/18380), 6.05 MiB | 378.00 KiB/s, done.
    Resolving deltas: 100% (12722/12722), done.
    [~/epics/motor-split/Newport]$ 
    
  13. Copy the blank App & IOC files (DO NOT overwrite any files in the src dir; remove files that were added to src dir)

    [~/epics/motor-split/Newport]$ cp -riT motorNewportBlank motorNewport5
    cp: overwrite ‘motorNewport5/newportApp/src/Makefile’? n
    [~/epics/motor-split/Newport]$ rm motorNewport5/newportApp/src/newport.dbd
    
  14. Commit the makeBaseApp files

    [~/epics/motor-split/Newport]$ cd motorNewport5/
    [~/epics/motor-split/Newport/motorNewport5]$ git add Makefile configure/ iocs/newportIOC/Makefile iocs/newportIOC/configure/ iocs/newportIOC/iocBoot/Makefile iocs/newportIOC/iocBoot/iocNewport/Makefile iocs/newportIOC/iocBoot/iocNewport/st.cmd iocs/newportIOC/newportApp/ newportApp/Db/Makefile newportApp/Makefile
    [~/epics/motor-split/Newport/motorNewport5]$ git commit -m "Added files from makeBaseApp"
    [master d38b1a1]$ Added files from makeBaseApp
     27 files changed, 490 insertions(+)
     create mode 100644 Makefile
     create mode 100644 configure/CONFIG
     create mode 100644 configure/CONFIG_SITE
     create mode 100644 configure/Makefile
     create mode 100644 configure/RELEASE
     create mode 100644 configure/RULES
     create mode 100644 configure/RULES.ioc
     create mode 100644 configure/RULES_DIRS
     create mode 100644 configure/RULES_TOP
     create mode 100644 iocs/newportIOC/Makefile
     create mode 100644 iocs/newportIOC/configure/CONFIG
     create mode 100644 iocs/newportIOC/configure/CONFIG_SITE
     create mode 100644 iocs/newportIOC/configure/Makefile
     create mode 100644 iocs/newportIOC/configure/RELEASE
     create mode 100644 iocs/newportIOC/configure/RULES
     create mode 100644 iocs/newportIOC/configure/RULES.ioc
     create mode 100644 iocs/newportIOC/configure/RULES_DIRS
     create mode 100644 iocs/newportIOC/configure/RULES_TOP
     create mode 100644 iocs/newportIOC/iocBoot/Makefile
     create mode 100644 iocs/newportIOC/iocBoot/iocNewport/Makefile
     create mode 100644 iocs/newportIOC/iocBoot/iocNewport/st.cmd
     create mode 100644 iocs/newportIOC/newportApp/Db/Makefile
     create mode 100644 iocs/newportIOC/newportApp/Makefile
     create mode 100644 iocs/newportIOC/newportApp/src/Makefile
     create mode 100644 iocs/newportIOC/newportApp/src/newportMain.cpp
     create mode 100644 newportApp/Db/Makefile
     create mode 100644 newportApp/Makefile
    [~/epics/motor-split/Newport/motorNewport5]$ git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 1 commit.
    #   (use "git push" to publish your local commits)
    #
    nothing to commit, working directory clean
    
  15. Create an empty github repo

  16. Push the code to github

    [~/epics/motor-split/Newport/motorNewport5]$ git remote -v
    origin	file://motorNewport4 (fetch)
    origin	file://motorNewport4 (push)
    [~/epics/motor-split/Newport/motorNewport5]$ git remote rm origin
    [~/epics/motor-split/Newport/motorNewport5]$ git remote add origin [email protected]:kmpeters/motorNewport.git
    [~/epics/motor-split/Newport/motorNewport5]$ git remote -v
    origin	[email protected]:kmpeters/motorNewport.git (fetch)
    origin	[email protected]:kmpeters/motorNewport.git (push)
    [~/epics/motor-split/Newport/motorNewport5]$ git push -u origin master
    X11 forwarding request failed on channel 0
    Counting objects: 3651, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (1810/1810), done.
    Writing objects: 100% (3651/3651), 907.40 KiB | 0 bytes/s, done.
    Total 3651 (delta 1488), reused 3535 (delta 1427)
    remote: Resolving deltas: 100% (1488/1488), done.
    To [email protected]:kmpeters/motorNewport.git
     * [new branch]      master -> master
    Branch master set up to track remote branch master from origin.
    
  17. Applied patch to Makefiles, RELEASE and CONFIG_SITE files so that the module can be built inside of motor (NOTE: you'll probably also need to replace the username and path to BASE in the patch file)

    [~/epics/motor-split/Newport/motorNewport5]$ wget https://raw.githubusercontent.com/kmpeters/motor/motor-split-testing/modules/betterVendor.patch
    [~/epics/motor-split/Newport/motorNewport5]$ sed -e 's/vendor/newport/g' -e 's/Vendor/Newport/g' -e 's/VENDOR/NEWPORT/g' betterVendor.patch > betterNewport.patch
    [~/epics/motor-split/Newport/motorNewport5]$ git apply betterNewport.patch 
    ../newportMod.patch:138: new blank line at EOF.
    +
    ../newportMod.patch:167: new blank line at EOF.
    +
    warning: 2 lines add whitespace errors.
    [~/epics/motor-split/Newport/motorNewport5]$ git add .gitignore Makefile configure/RELEASE iocs/newportIOC/configure/CONFIG_SITE iocs/newportIOC/configure/RELEASE iocs/newportIOC/iocBoot/iocNewport/st.cmd iocs/newportIOC/newportApp/src/Makefile iocs/Makefile
    [~/epics/motor-split/Newport/motorNewport5]$ find . -name "*.local" -exec git add -f {} \;
    [~/epics/motor-split/Newport/motorNewport5]$ git commit -m "Applied patch to update Makefiles, RELEASE and CONFIG_SITE files"
    
  18. Build the module

  19. Build the IOC

  20. Correct IOC's src/Makefile if it fails to properly include the Newport support

  21. Correct the iocNewport examples so they can be used with the IOC rather than with the example app from the motor module.

  22. Commit all the manual changes

  23. Push all the changes to github

    [~/epics/motor-split/Newport/motorNewport5]$ git push
    
Clone this wiki locally