Notes on Path Pilot 1.8.2 source code

  • jepler
  • Topic Author
  • New Member
  • New Member
More
10 years 11 months ago #65848 by jepler
Executive Summary

Someone who used the written offer for the GPL source code from Tormach was kind enough to redistribute the tarball to me.

I compressed (xz) the archive and made it available at emergent.unpythonic.net/files/pathpilot_..._source-1.8.2.tar.xz

Path Pilot (version 1.8.2) is a fork of a prerelease of LinuxCNC 2.6.0 with significant back-ports (e.g., the planner that is new in LinuxCNC 2.7.x) changes not incorporated into LinuxCNC (e.g., inifile settings for default tolerances, single-stepping changes, a default preview plot size limit in AXIS/gremlin, remap changes, and other changes I don't grok at first glance), and some things that are worrying (removing the path whitelist checking of module_helper).

Organization seems to have linuxcnc/ as one subdirectory, and other stuff in sibling directories. A script implies that git submodules are probably in play.

It also includes significant non-linuxcnc portions, e.g., in depends:
Code:
check_operatorsudo mesaflash numlockx shifttest time-admin-wrapper truetype-tracer

In lib/ are files including a modified binary copy of libgtk "with FileChooser restricted to ~/gcode." (quoted text plus patch in lib/gtklibpatch.txt)

As yet, I have not investigated whether the source files build and work for me.

File details

File size 223774720 (214MB) latest dated files are 2015-07-21 14:01

Cryptographic checksums:
Code:
md5sum c7917534468b02fa609ccabc03dccc12 pathpilot_source-1.8.2.tar.xz 838c36835746e8b3c5a00c9c99c2649b pathpilot_source.tar sha1sum 47c9b81c3f588a11c14d24363492e09806a5bf9c pathpilot_source-1.8.2.tar.xz e51a14be8a3c8c9952668bde7294b9221cecc200 pathpilot_source.tar

Rambling narrative

this archive also contains a large number of object files such as ./linuxcnc/src/xor2.ko that are created by a linuxcnc build process.

Organization seems to have linuxcnc/ as one subdirectory, and other stuff in sibling directories.

this archive also contains a large number of object files such as ./linuxcnc/src/xor2.ko that are created by a linuxcnc build process. Organization seems to have linuxcnc/ as one subdirectory, and other stuff in sibling directories.

this archive also contains a large number of object files such as ./linuxcnc/src/xor2.ko that are created by a linuxcnc build process.

version.txt says "v1.8.2". This version numbering is unrelated to LinuxCNC's. linuxcnc/version.txt says "2.6.0~pre". linuxcnc/debian/changelog's latest entries pertain to the 2.5.3 release

At a first glance, this means that the forking point of pathpilot is between these two revisions:
Code:
ce9835a Release 2.5.3 (July 23, 2013) 3f5e5a5 2.6.0~pre1 changelog (April 7, 2014)

so I went prospecting with the help of a shell alias
Code:
$ f () { git rev-list --first-parent $range -- $1 | while read rev; do git log -1 --abbrev-commit --format="%H %aD %s" $rev ; git diff --shortstat --exit-code $rev -- $1 && echo MATCH; echo; done | less; } $ range=ce9835a..3f5e5a5 f src/hal/drivers/mesa-hostmot2/encoder.c 81876a9c1563246b0e19f7230a3577bdcc6cc227 Mon, 7 Apr 2014 01:35:55 +0200 hm2: muxed encoder: add support for FilterRate and Muxed Skew register. 1 file changed, 15 insertions(+), 77 deletions(-) 3923028b51b8ca2b4e7e2ae80b0896302e64ac56 Mon, 7 Apr 2014 01:33:00 +0200 hm2: add support for muxed encoder version 4 1 file changed, 1 insertion(+), 3 deletions(-) 7c112e5b77f0adb6094207645ef31bb49b4d1a1b Sun, 23 Feb 2014 17:57:00 +0100 Merge branch 'master' of ssh://norbert@git.linuxcnc.org/git/linuxcnc.git MATCH 91efbf5fe8da8e1d5c023c45a94a3303cf29c27f Thu, 15 Aug 2013 21:46:18 +0100 Merge remote branch 'origin/master' into hm2-resolver-fix-for-master 1 file changed, 24 insertions(+), 5 deletions(-)

Diffing against linuxcnc at this ref (7c112e5b) starts to produce results both mundane
Code:
diff --git a/src/emc/ini/initool.cc b/src/emc/ini/initool.cc index 29d8c27..4d5d1e4 100644 --- a/src/emc/ini/initool.cc +++ b/src/emc/ini/initool.cc @@ -42,6 +42,20 @@ static int loadTool(IniFile *toolInifile) const char *inistring; if (NULL != (inistring = toolInifile->Find("TOOL_TABLE", "EMCIO"))) { + // see if filename starts with '~' + if (inistring[0] == '~') { + // get user's HOME directory from environment + char *home; + char full_path[LINELEN]; + if ((home = getenv("HOME")) != NULL) { + // start with the path to the HOME directory + strcpy(full_path, home); + // skip the '~' + strcat(full_path, &inistring[1]); + inistring = full_path; + } + } + if (0 != emcToolSetToolTableFile(inistring)) { rcs_print("bad return value from emcToolSetToolTableFile\n"); retval = -1;
and interesting
Code:
diff --git a/src/emc/motion/command.c b/src/emc/motion/command.c index ada126d..6307a38 100644 --- a/src/emc/motion/command.c +++ b/src/emc/motion/command.c @@ -81,6 +83,52 @@ extern void check_stuff(const char *msg); KINEMATICS_FORWARD_FLAGS fflags = 0; KINEMATICS_INVERSE_FLAGS iflags = 0; + +/** + * Helper function to execute a single step command. + * This sets the appropriate flags so that the trajectory planner runs just the + * next segment. + */ +STATIC int do_step_cmd(struct state_tag_t const * const tag) { + + if(!emcmotStatus->paused) { + reportError(_("MOTION: can't STEP while already executing")); + return -1; + } + + if (!tag) { + reportError(_("MOTION: invalid ID trying to do a STEP")); + return -1; + } + + emcmotDebug->idForStep = tag->fields[GM_FIELD_STEPPING_ID]; + rtapi_print_msg(RTAPI_MSG_DBG," idForStep = %d, line = %d\n", + emcmotDebug->idForStep, + tag->fields[GM_FIELD_LINE_NUMBER]); + emcmotDebug->stepping = 1; + tpResume(&emcmotDebug->tp); + emcmotStatus->paused = 1; + return 0; +} + +/** + * Check if a move has been added to an empty queue, and trigger a step command + * if necessary. + * This assumes that single-stepping is done in task, and so receiving a new + * motion command on an empty queue while stepping will only happen when a step + * command is issued to task. + */ +STATIC int do_firstmove_step(struct state_tag_t const * const tag) { + + if(!emcmotStatus->paused || emcmotStatus->depth > 0) { + return -1; + } + + do_step_cmd(tag); + return 0; +} + + /* loops through the active joints and checks if any are not homed */ int checkAllHomed(void) { int joint_num;

Please Log in to join the conversation.

More
10 years 10 months ago #67311 by tkamsker
Hi Question
iĺl try to have a look what are they doing so thank you for that tarball
But did you get it to compile ?
Happy christmas
thomas

Please Log in to join the conversation.

More
10 years 5 months ago #74388 by smgvbest
Hi

I've been working on compiling PathPilot from the sources and have a few notes
My build environment is based on "ubuntu-10.04-linuxcnc3-i386.iso" running in a VM
First.
create the ID operator and use it. it seems to have less problems when you do
I created ~/pathpilot_source and put the tar there

Here is a list of make options you can use
Tormach highly editing the basic LinuxCNC Makefile
Code:
install-dep # Install system-wide dependencies needed to run linuxcnc and GUI lathe-tarball # Create encrypted tarball for CNC lathe with mill references removed tarball # Create encrypted tarball for mill and lathe used to create updates posted on website all-tarball # Create encrypted tarball including everything even unreleased projects list-tgp # Check tarball by extracting to a local folder run # Launch the GUI with the configuration stored in $(MACHINE_CONFIG) or launch config picker if this file does not exist build # Compile all objects install # Build and install all files to the run directory git-commands # Install symlinks for git scripts to $(GIT_SYMLINK_DIR) git-hooks # Setup git hooks by symlinking hook scripts into .git/hooks clean-git-hooks # Clean installed git hooks by unlinking them in .git/hooks first # Run this command on a fresh clone to do all the setup steps default # Automatically configure linuxcnc and dependencies and build configure-sim # Explicitly configure linuxcnc for local simulation build depends # Compile and install dependencies purge-packages # Purge packages not needed on the machine controller linuxcnc-modules # Build linuxcnc and all kernel modules python # Copy over all tormach python files to the appropriate folder structure in run. build-clean # Remove all files in the run folder clean # Recursively clean compiled objects and libraries distclean # Recursively clean all generated files (the nuclear option) strip # Search for all compiled objects and strip out debugging symbols resources # Copy resource files needed for GUI to $HOME/tmc

To get a working build environment after expanding the source tarball run
make install-dep
make
make install
make python # note sure if these two are really needed or not yet
make resources
make run # this setsup and runs pathpilot for first time. it will run with a 5i25 config file

it may take less that that but that is what I had to do to get it to work
the install-dep takes some time to complete, about 500+MB download

some basic notes

it was missing toplevel.py after make run

# note source does not include final images for pathpilot (tormach may consider these pro proprietary)
# quick fix, install v1.8.2.tgp from tormach download and put into update folder.
# note a diff of 1.8.2 installed from source and 1.8.2 from tgp have differences

I commented out the section of code in operator_login with $SHUTDOWN_CONTROLER in my sources folder to prevent ti from overwriting my change this way it never shutdown after an update

Manually Configure file with
echo `pwd`~/tmc/configs/tormach_lathe/tormach_lathe_5i25.ini > ~/config_file.txt

To Manually extract a *.tgp file
*.tgp # updates files are gpg password protect with moravianvalley
gpg --yes --no-use-agent --symmetric --output ~/v1.8.2.tgz --passphrase=moravianvalley v1.8.2.tgp

to get it fully working I have to apply the v1.8.2 update then all worked fine (graphics mostly)
it is a case of missing files the makefile is not completing from what I can tell.

All the python code is there to edit the interface including the *.ui or *.glade files.
if you want to play with these launch the software update and In the search box type in glade and look for GTK+ 2 User Interface Builder and install. I've also install eclipse C/C++ to work on source files.

That's all for now.
but wanted to show what's been going on

Please Log in to join the conversation.

More
10 years 5 months ago #74395 by cncbasher
the only differences i am aware of are indeed the graphics , tormach have copyrighted them , the version of graphics given in the source cd are more of a hand drawn variant as against the installed version .
i am not aware of any other differences , so if you find any , i would appricate a call , so it can be further investigated
i would be interested to know of Missing files ,

adding the pathpilot sources to the iso , will require the linuxcnc pre-requsites being installed , as if your building linuxcnc on it's own
it's easier to get linuxcnc build 2.6.3 source to build first , and then add the requirements for pathpilot.

toplevel.py is a python script for using remap from the linuxcnc sources , this is called from your ini script .

Please Log in to join the conversation.

More
10 years 5 months ago #74535 by smgvbest
Hi

I'm going to repeat what I did and be sure I didn't introduce anything else accidentally before I post any differences.

Please Log in to join the conversation.

Time to create page: 0.245 seconds
Powered by Kunena Forum