TL;DR:  I just pushed joints_axes4.  Please stop using joints_axes3, use 
joints_axes4 instead.  Please don't merge anything into joints_axes4.


Acknowledgements:

First of all, many thanks to the folks that have worked (for 5.5 years!) 
on the awesome feature in the joints_axes3 branch:
Michael Geszkiewicz, Chris Radek, Alex Joni, Jeff Epler, Stephen 
Willie-Padnos, John Kasunich, and John Thornton.


What I did:

At long last, i have pushed the new joints_axes4 branch to git.linuxcnc.org.

I created this branch by rebasing joints_axes3 onto master.  The 
motivation was to make a clean linear history for us to review, and 
possibly to rebase the branch again (and again) to fix bugs and other 
problems that were introduced during the five and a half years of 
development.

I tried to keep the commits in ja4 as similar to the commits in ja3 as 
possible, but obviously many commits had to change somwhat.  Most of the 
differences between the original commits in ja3 and the "derived" ones 
in ja4 consisted (logically) of taking changes made by a merge commit in 
ja3 and moving them backwards in history to the relevant commit in ja4. 
  joints_axes4 contains all the non-merge commits in joints_axes3, but 
with a linear history.

joints_axes4 is based on the commit in master that was most recently 
merged into joints_axes3.  I'm thus able to verify that I didn't mess up 
the rebase by comparing the final working trees of joints_axes3 and 
joints_axes4 - they should be identical.

But...  They're not.  There are a few hundred lines of diffstat between 
them.  All the differences are improvements in ja4 - removal of merge 
turds, removal of incorrectly resolved merge conflicts, etc.  Many of 
the errors in joints_axes3 were introduced by me, in various merges.  :-(

At the end of this email is a complete inventory of the differences 
between ja3 and ja4, and why I think ja4 is better (sorry if i botch the 
formatting on this list).


Where we go from here:

Please stop development on joints_axes3 - that branch should now be 
considered read-only, and will eventually be removed.

Use joints_axes4 instead.  This branch is now open for development!  Any 
commits you have that are based on joints_axes3 should rebase or 
cherry-pick without problem to joints_axes4.

Don't merge anything into joints_axes4.  Let's keep the history straight 
and simple.  If you really want to combine it with some other branch, do 
so in a throw-away integration test branch.  I repeat: do not push merge 
commits to the joints_axes4 branch.

Please join me in reviewing and testing ja4.  If you find a problem with 
a commit in it, please push a new commit that fixes the problem, and 
note in the commit message which old commit your new commit fixes.  If 
you find a problem that's not easily attributable to an older commit, 
push the fix as a new commit anyway.

If/when we all feel confident in joints_axes4 (or in some future 
larger-numbered descendant), we'll merge it into master for inclusion in 
the upcoming 2.6 release.


-------------------------------------------------------------------------------

$ git diff --stat -p joints_axes3..joints_axes4
  configs/max/max.hal              |   68 +++++-----------------------
  configs/motenc/motenc_motion.hal |    4 +-
  configs/sim/axis/axis.ini        |   36 ++++++++++-----
  configs/sim/axis/axis_9axis.ini  |   65 ++++++++++++++++++--------
  configs/sim/axis/axis_mm.ini     |   41 ++++++++---------
  src/emc/motion/control.c         |   34 ++++----------
  src/emc/motion/motion.c          |    4 +-
  src/emc/nml_intf/canon.hh        |    3 ++
  src/emc/nml_intf/emc.hh          |   30 ------------
  src/emc/usr_intf/emcsh.cc        |   10 ++--
  src/emc/usr_intf/halui.cc        |   25 ++++++----
  11 files changed, 138 insertions(+), 182 deletions(-)

     configs/max/max.hal

         Commit c44fdf6d481f4b3c19c1a52c3ede432fdfdfce75 merges master
         into ja3 and adds a bunch of merge turds.


     configs/motenc/motenc_motion.hal

         Commit 4011e450979a4b636a67c785ac63d5eb22053496 merges master
         into ja3 and introduces a copypasta error.


     configs/sim/axis/axis.ini
     configs/sim/axis/axis_9axis.ini
     configs/sim/axis/axis_mm.ini

         in ja3, a15ab9fd610b6f425e495a56ec16c71f0866bb45 merges master
         after the sim/axis configs moved.  The merge has conflicts on
         sim/axis.ini, sim/axis_9axis.ini, and sim/axis_mm.ini, and the
         resolution removes those files, thus losing all the ja3-specific
         changes made earlier.  ja4 does not have a merge, and all the
         .ini config changes were done with that rename already done,
         so the joints_axes changes were applied to the new files.

         Additionally, ja3 commit
         0b34a605d9485a978f7758f0193171e0ea1cdad9 modifies
         configs/sim/axis_9axis.ini but accidentally leaves behind
         "[AXIS_0]" which obviously is wrong, so i took that out.


     src/emc/motion/control.c

         print_pose() is in ja3 but not ja4:

             Commit 8b543dc77bafd1a02b6907edc1ad8ad3dc9fc9b0 merges
             master into joints_axes3, but it fails to remove
             print_pose() from control.c, even though this function was
             removed in master before that merge.

             print_pose() is never used, so the ja4 branch does not
             bother to reproduce this merge error.

         process_probe_inputs() in ja4 double-negates
         emcmot_hal_data->probe_input, but ja3 does not:

             ja3 moved the process_probe_inputs() function, which
             confused git's merge, which confused me.

             master double-negates the pin when reading it (commit
             b775d509786ae48c398bc21736be3ecae97dee73, "Further fix
             for bug 3040806"), so ja4 does too.  ja3 should have too,
             after merge commit 8122b6069bc62a03f9768c990acf87b0071ac460,
             but i botched it.

         process_probe_inputs() in ja4 moves the call to tpAbort() in the
         "read probe inputs" block:

             The tpAbort() call was moved in master in commit
             40dc95e48118ae2c58f65c8563a72c175131e0c2 "Set flags
             before aborting motion", but accidentally dropped
             in ja3 during the merge of that commit into ja3,
             8122b6069bc62a03f9768c990acf87b0071ac460.

         process_probe_inputs() in ja4 adds a check for
         "if(probe_whenclears)", which is missing in ja3:

             This was added in master, but dropped in my merge of
             master into ja3 (8122b6069bc62a03f9768c990acf87b0071ac460).
             What was i smoking?

         process_probe_inputs() in ja4 has a translatable g38.2 error
         string, but in ja3 the error string is not translatable:

             Changed in master, erroneously dropped in my merge
             8122b6069bc62a03f9768c990acf87b0071ac460.

         process_probe_inputs() in ja4 has different "Probe tripped
         during non-probe MDI command" handling:

             Changed in master, erroneously dropped in my merge
             8122b6069bc62a03f9768c990acf87b0071ac460.

         process_probe_inputs() in ja4 has translated "Probe tripped
         during *" messages (non-probe MDI, homing, jog):

             Changed in master, erroneously dropped in my merge
             8122b6069bc62a03f9768c990acf87b0071ac460.


     src/emc/motion/motion.c

         Commit 8437496a54180fb59aa24581f9c48ab28f789428 merges master
         into ja3 after master has gotten locked rotary support, and
         introduces a bug: incorrect return value when motion init fails
         to create joint pins).

         In ja4, the locked rotary support preceedes all
         joints_axes modifications, so I fixed it in ja4's commit
         08f8342625cde1423bba5f3621ecd929db7b133a ("Cleanup of motion
         code to prepare for deeper modifications").  This is the same
         commit that changes all the rest of motion joint init.


     src/emc/nml_intf/canon.hh

         ja3 moved a bunch of canon globals into structs (commit
         7a48f785019279058d98e045d002a99806e5a9dd, "Change globals
         canon variables into one struct CanonConfig_t").  Later, master
         added comments to some of the variables that ja3 moved (commit
         1113a06a65f3b2e9d824157acc7b4fdb2887a739, "Fix incorrect spindle
         direction after g43 in css+m4 mode").  The next merge of master
         into ja3 dropped the comments.

         In ja4, the move from globals to structs happened after the
         comments were added, so i moved the comments along with the
         variables that they describe.


     src/emc/nml_intf/emc.hh

         The EMC_SET_DIO_* and EMC_SET_AIO_* enums and the
         EMC_VERSION_* #defines were removed in master (commit
         ec24e13770d6bf04005d254e3fd46d2372895bed).  That commit was
         merged into ja3 in commit
         a9f21bc0dce5ffc3fd23db3c874eaefdc78286e6, but those hunks got
         dropped.

         ja4 is based on a version of master after those things got
         removed, and i didn't add them back in, to track master.


     src/emc/usr_intf/emcsh.cc

         Minor cosmetic differences in usage strings, all improvements
         over ja3.


     src/emc/usr_intf/halui.cc

         The EMC_JOINT_UNHOME_MSG message got misnamed in ja3 commit
         b200779f2808a8aaa93479203728afc111bd4eff, looks like a
         cut-n-paste error.  Fixed in ja4.

         sendJointInc() vs sendJointIncr()

             sendJogIncr() went away in master in 2006

             Then ja3 was branched off master

             sendJogIncr() was added in ja3

             sendJogInc() was added in master in 2011
             (f33f151f169e970e6362cf7f6f47b81bc3e541cd)

             when master was merged into ja3, the ja3 name for the
             function was kept, but since ja4 is based on a newer
             version of master that already has sendJogInc(), i decided
             to keep the name from master.

             I also kept two extra argument sanity checks that are in
             master but that got dropped when master was merged into ja3

-------------------------------------------------------------------------------


-- 
Sebastian Kuzminsky

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to