machinekit / EMCApplication

Machinekit Featured Application for Enhanced Motion Controller from LinuxCNC
GNU General Public License v2.0
14 stars 11 forks source link

Require specific Machinekit-HAL package version #6

Closed cerna closed 3 years ago

cerna commented 3 years ago

This pull request implements package locking to specific version of machinekit-hal packages as mentioned in issue #2. The new functionality works by requiring parameter when running the debian/configure bash script:

./debian/configure machinekit-hal=${WANTED_MACHINEKIT_HALPACKAGE_VERSION} no-docs
# For example for latest Python 2 Machinekit-HAL
./debian/configure machinekit-hal=0.4.20894-1.gitebe1344a0~$(lsb_release -cs) no-docs

It will create a debian/control file with specified versions:

Source: linuxcnc
Section: misc
Priority: optional
Maintainer: Machinekit Bot <machinekit@eryaf.com>
Build-Depends: debhelper (>= 6),
    dh-python,
    machinekit-hal (= 0.4.20894-1.gitebe1344a0~buster),
    ,
    ,
    python-yapps, machinekit-hal-dev (= 0.4.20894-1.gitebe1344a0~buster),
    tcl8.6-dev,
    tk8.6-dev,
    libtk-img,
    bwidget (>= 1.7),
    tclx,
    libreadline-gplv2-dev,
    , asciidoc-dblatex,
    python,
    python-dev,
    python-tk,
    libxmu-dev,
    libglu1-mesa-dev,
    libgl1-mesa-dev | libgl1-mesa-swx11-dev,
    libgtk2.0-dev,
    gettext,
    intltool,
    autoconf,
    libboost-python-dev,
    netcat,
    libmodbus-dev (>= 3.0),
    libusb-1.0-0-dev,
    procps,
    psmisc,
    desktop-file-utils,
    yapps2,
    libtirpc-dev
Standards-Version: 3.9.8
Vcs-Browser: https://github.com/machinekit/EMCApplication
Vcs-Git: https://github.com/machinekit/emcapplication.git

Package: emcapplication-dev
Architecture: any
Conflicts: linuxcnc-sim-dev, linuxcnc-uspace-dev , linuxcnc, linuxcnc-dev, machinekit-cnc
Depends: g++, ,
    python-serial,
    python (>= 2.7), python (<< 2.8),
    ${python:Depends}, ${misc:Depends},
    emcapplication (= ${binary:Version}),
    udev,
    python-yapps
Section: libs
Description: Enhanced Motion Controller for Machinekit-HAL
 Run EMC2 developed as part of LinuxCNC with the power of Machinekit-HAL engine
 Provides CNC capability and HMI for various applications (milling, cutting,
 routing, etc.).
 .
 This package includes files needed for development and testing

Package: emcapplication
Conflicts: linuxcnc-sim, linuxcnc-uspace , linuxcnc, linuxcnc-dev, machinekit-cnc
Architecture: any
Recommends: linuxcnc-doc-en | linuxcnc-doc, machinekit-hal-dev (= 0.4.20894-1.gitebe1344a0~buster)
Depends: ${shlibs:Depends}, machinekit-hal (= 0.4.20894-1.gitebe1344a0~buster),
    tcl8.6, tk8.6, bwidget (>= 1.7), libtk-img (>=1.13),
    python (>= 2.7), python (<< 2.8),
    ${python:Depends}, ${misc:Depends},
    python2.7-tk,
    python2.7-glade2 | python-glade2,
    python2.7-numpy | python-numpy,
    python2.7-imaging | python-imaging | python-pil,
    python2.7-imaging-tk | python-imaging-tk | python-pil.imagetk,
    python-gtksourceview2,
    python-vte | gir1.2-vte-2.91,
    python-gst-1.0,gstreamer1.0-plugins-base,
    python-xlib, python-gtkglext1, python-configobj,
    tclreadline, procps, psmisc, tclx, ,
    mesa-utils, blt, udev
Description: Enhanced Motion Controller for Machinekit-HAL
 Run EMC2 developed as part of LinuxCNC with the power of Machinekit-HAL engine
 Provides CNC capability and HMI for various applications (milling, cutting,
 routing, etc.).

Because of the problem with package solver in standard Debian apt when running the mk-build-deps, there is need for additional package name apt-cudf, which allows using smarter dependency solver:

mk-build-deps       \
    --install       \
    --remove        \
    --root-cmd sudo \
    --tool          \
    'apt-cudf-get --solver aspcud -o APT::Get::Assume-Yes=1 -o Debug::pkgProblemResolver=0 -o APT::Install-Recommends=0' \
    debian/control

This simpler implementation over the more magical one - the first idea was using dpkg to look for installed packages of machinekit-hal plus machinekit-hal-dev and lock to this version or download available version data from Machinekit's repository - was chosen after realization that this functionality is already part of apt and that CI (or user) should look for available versions as the address of remote repository is not known.

This change is already documented in pull request machinekit/machinekit-docs#320.

zultron commented 3 years ago

I'm not too nutty about being required to provide a specific MK version on the debian/configure command line, and would prefer the packaging just write a more static machinekit-hal-dev (> 0.4), which appears to solve the problem stated in #2. What do you think?

cerna commented 3 years ago

@zultron, to tell the truth I am not happy with forcing the user to pass the Machinekit-HAL package version either. This is probably the reason why CMAKE export and version scripts (and CPS to think of it) were implemented. When having multiple packages, one has to solve the problem of dependency graph - and this is exactly the problem.

LinuxCNC currently has no packaging support for Python 3 as noted in #2 (however this problem will not go away once it has it). And it presumes that all parts are compiled in one go. That is not a true when using combination of Machinekit-HAL and EMCApplication. As both can be compiled at different time and user can use time displaced versions. (He can have old version of Machinekit-HAL and current version of EMCApplication and vice versa.)

Machinekit-HAL is now Python 3 only software. LinuxCNC currently allows both Python 2 and Python 3 functionality. It is done (in LinuxCNC) the special way that the Python version is decided at compile time and from there stems the problem.

When one tries to compile the packages from current EMCApplication@master:

docker run
docker run -it --rm -v "$(pwd):/machinekit/emca" debian:buster bash -i
apt-get -y update && \
apt-get -y upgrade && \
apt-get -y install build-essential fakeroot devscripts equivs sudo curl python && \
addgroup machinekit --gid 1000 && \
adduser --uid 1000 --ingroup machinekit --home /home/machinekit \
    --shell /bin/bash --disabled-password --gecos "" machinekit && \
echo "machinekit ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers && \
chown -R machinekit:machinekit /machinekit && \
su machinekit -c "curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit/cfg/setup/bash.deb.sh' \
  | sudo -E bash && \
curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit-hal/cfg/setup/bash.deb.sh' \
  | sudo -E bash && \
cd /machinekit/emca && \
./debian/configure machinekit-hal no-docs && \
mk-build-deps -irs sudo -t 'apt-get -o APT::Get::Assume-Yes=1 -o Debug::pkgProblemResolver=0 -o APT::Install-Recommends=0' && \
dpkg-buildpackage -us -uc && \
mv ../*.deb . "

(Be aware that currently to build the packages one needs to do two changes [this change is part of this pull request]: delete the -1 from version in debian/changelog after generation with debian/configure script and add two lines to debian/emcapplication.files (also after generation):

usr/share/doc/linuxcnc/examples/sample-configs/maintainer_es.txt
usr/share/doc/linuxcnc/gcode_es.html

Then try to run the compiled packages:

docker run -it --rm -v "$(pwd):/machinekit/emca" -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/dri:/dev/dri debian:buster bash -i
apt-get -y update && \
apt-get -y upgrade && \
apt-get -y install sudo curl && \
addgroup machinekit --gid 1000 && \
adduser --uid 1000 --ingroup machinekit --home /home/machinekit \
    --shell /bin/bash --disabled-password --gecos "" machinekit && \
echo "machinekit ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers && \
chown -R machinekit:machinekit /machinekit && \
su machinekit -i "curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit/cfg/setup/bash.deb.sh' \
  | sudo -E bash && \
curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit-hal/cfg/setup/bash.deb.sh' \
  | sudo -E bash && \
cd /machinekit/emca && \
sudo apt-get -y install ./emcapplication_*.deb && \
echo -e ''ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0\n | sudo tee -a /etc/machinekit/machinekit.ini && \
export DISPLAY=:0 && \
export DEBUG=5 && \
linuxcnc"

You will get something like this:

LINUXCNC - 2.9.0~pre0
Machine configuration directory is '/home/machinekit/linuxcnc/configs/sim.axis'
Machine configuration file is 'axis.ini'
Starting LinuxCNC...
rtapi_msgd command:  /usr/libexec/machinekit/rtapi_msgd --instance=0 --rtmsglevel=5 --usrmsglevel=5 --debug=5 --halsize=524288
rtapi_app command:  /usr/libexec/machinekit/rtapi_app --instance=0 --debug=5
4:rtapi_app:10558:user Loaded module rtapi from path /usr/lib/machinekit/modules/rtapi.so
4:rtapi_app:10558:user rtapi default iparms: ''
3::10558:rt INFO:  Picked default flavor 'posix' automatically
4:rtapi_app:10558:user rtapi: loaded from /usr/lib/machinekit/modules/rtapi.so
4:rtapi_app:10558:user Loaded module hal_lib from path /usr/lib/machinekit/modules/hal_lib.so
4:rtapi_app:10558:user hal_lib default iparms: ''
4:rtapi_app:10558:user hal_lib: loaded from /usr/lib/machinekit/modules/hal_lib.so
2:rtapi_app:10558:user rtapi:0: cannot create core dumps - /proc/sys/fs/suid_dumpable contains 0
2:rtapi_app:10558:user you might have to run 'echo 1 > /proc/sys/fs/suid_dumpable' as root to enable rtapi_app core dumps
4:rtapi_app:10558:user accepting commands at ipc:///tmp/0.rtapi.2f15e0ae-4db1-4cc9-9bf5-828fccf4aa37
3:rtapi_app:10558:user rtapi_app:0 ready flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
<commandline>:0: Component 'iocontrol' ready
<commandline>:0: Program 'io' started
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
<commandline>:0: Component 'halui' ready
<commandline>:0: Program 'halui' started
Found file(lib): /usr/share/linuxcnc/hallib/core_sim.hal
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user Loaded module trivkins from path /usr/lib/machinekit/modules/trivkins.so
4:rtapi_app:10558:user trivkins default iparms: ''
4:rtapi_app:10558:user trivkins: loaded from /usr/lib/machinekit/modules/trivkins.so
/usr/share/linuxcnc/hallib/core_sim.hal:5: Realtime module 'trivkins' loaded
4:rtapi_app:10558:user Loaded module motmod from path /usr/lib/machinekit/modules/motmod.so
4:rtapi_app:10558:user motmod default iparms: ''
4:rtapi_app:10558:user motmod: loaded from /usr/lib/machinekit/modules/motmod.so
/usr/share/linuxcnc/hallib/core_sim.hal:7: Realtime module 'motmod' loaded
4:rtapi_app:10558:user Loaded module ddt from path /usr/lib/machinekit/modules/ddt.so
4:rtapi_app:10558:user ddt default iparms: ''
4:rtapi_app:10558:user ddt: loaded from /usr/lib/machinekit/modules/ddt.so
/usr/share/linuxcnc/hallib/core_sim.hal:9: Realtime module 'ddt' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user Loaded module hypot from path /usr/lib/machinekit/modules/hypot.so
4:rtapi_app:10558:user hypot default iparms: ''
4:rtapi_app:10558:user hypot: loaded from /usr/lib/machinekit/modules/hypot.so
/usr/share/linuxcnc/hallib/core_sim.hal:11: Realtime module 'hypot' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
/usr/share/linuxcnc/hallib/core_sim.hal:14: Function 'motion-command-handler' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:15: Function 'motion-controller' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:17: Function 'ddt_x' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:18: Function 'ddt_xv' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:19: Function 'ddt_y' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:20: Function 'ddt_yv' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:21: Function 'ddt_z' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:22: Function 'ddt_zv' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:23: Function 'vel_xy' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:24: Function 'vel_xyz' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/core_sim.hal:28: Pin 'joint.0.motor-pos-cmd' linked to signal 'Xpos'
/usr/share/linuxcnc/hallib/core_sim.hal:28: Pin 'joint.0.motor-pos-fb' linked to signal 'Xpos'
/usr/share/linuxcnc/hallib/core_sim.hal:28: Pin 'ddt_x.in' linked to signal 'Xpos'
/usr/share/linuxcnc/hallib/core_sim.hal:29: Pin 'joint.1.motor-pos-cmd' linked to signal 'Ypos'
/usr/share/linuxcnc/hallib/core_sim.hal:29: Pin 'joint.1.motor-pos-fb' linked to signal 'Ypos'
/usr/share/linuxcnc/hallib/core_sim.hal:29: Pin 'ddt_y.in' linked to signal 'Ypos'
/usr/share/linuxcnc/hallib/core_sim.hal:30: Pin 'joint.2.motor-pos-cmd' linked to signal 'Zpos'
/usr/share/linuxcnc/hallib/core_sim.hal:30: Pin 'joint.2.motor-pos-fb' linked to signal 'Zpos'
/usr/share/linuxcnc/hallib/core_sim.hal:30: Pin 'ddt_z.in' linked to signal 'Zpos'
/usr/share/linuxcnc/hallib/core_sim.hal:34: Pin 'ddt_x.out' linked to signal 'Xvel'
/usr/share/linuxcnc/hallib/core_sim.hal:34: Pin 'ddt_xv.in' linked to signal 'Xvel'
/usr/share/linuxcnc/hallib/core_sim.hal:34: Pin 'vel_xy.in0' linked to signal 'Xvel'
/usr/share/linuxcnc/hallib/core_sim.hal:35: Pin 'ddt_xv.out' linked to signal 'Xacc'
/usr/share/linuxcnc/hallib/core_sim.hal:36: Pin 'ddt_y.out' linked to signal 'Yvel'
/usr/share/linuxcnc/hallib/core_sim.hal:36: Pin 'ddt_yv.in' linked to signal 'Yvel'
/usr/share/linuxcnc/hallib/core_sim.hal:36: Pin 'vel_xy.in1' linked to signal 'Yvel'
/usr/share/linuxcnc/hallib/core_sim.hal:37: Pin 'ddt_yv.out' linked to signal 'Yacc'
/usr/share/linuxcnc/hallib/core_sim.hal:38: Pin 'ddt_z.out' linked to signal 'Zvel'
/usr/share/linuxcnc/hallib/core_sim.hal:38: Pin 'ddt_zv.in' linked to signal 'Zvel'
/usr/share/linuxcnc/hallib/core_sim.hal:38: Pin 'vel_xyz.in0' linked to signal 'Zvel'
/usr/share/linuxcnc/hallib/core_sim.hal:39: Pin 'ddt_zv.out' linked to signal 'Zacc'
/usr/share/linuxcnc/hallib/core_sim.hal:42: Pin 'vel_xy.out' linked to signal 'XYvel'
/usr/share/linuxcnc/hallib/core_sim.hal:42: Pin 'vel_xyz.in1' linked to signal 'XYvel'
/usr/share/linuxcnc/hallib/core_sim.hal:43: Pin 'vel_xyz.out' linked to signal 'XYZvel'
/usr/share/linuxcnc/hallib/core_sim.hal:46: Pin 'iocontrol.0.user-enable-out' linked to signal 'estop-loop'
/usr/share/linuxcnc/hallib/core_sim.hal:46: Pin 'iocontrol.0.emc-enable-in' linked to signal 'estop-loop'
/usr/share/linuxcnc/hallib/core_sim.hal:49: Pin 'iocontrol.0.tool-prepare' linked to signal 'tool-prep-loop'
/usr/share/linuxcnc/hallib/core_sim.hal:49: Pin 'iocontrol.0.tool-prepared' linked to signal 'tool-prep-loop'
/usr/share/linuxcnc/hallib/core_sim.hal:50: Pin 'iocontrol.0.tool-change' linked to signal 'tool-change-loop'
/usr/share/linuxcnc/hallib/core_sim.hal:50: Pin 'iocontrol.0.tool-changed' linked to signal 'tool-change-loop'
Found file(lib): /usr/share/linuxcnc/hallib/sim_spindle_encoder.hal
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user Loaded module sim_spindle from path /usr/lib/machinekit/modules/sim_spindle.so
4:rtapi_app:10558:user sim_spindle default iparms: ''
4:rtapi_app:10558:user sim_spindle: loaded from /usr/lib/machinekit/modules/sim_spindle.so
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:2: Realtime module 'sim_spindle' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:3: setting parameter 'sim_spindle.scale' to '0.01666667'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:3: Pin 'sim_spindle.scale' set to 0.01666667
4:rtapi_app:10558:user Loaded module limit2 from path /usr/lib/machinekit/modules/limit2.so
4:rtapi_app:10558:user limit2 default iparms: ''
4:rtapi_app:10558:user limit2: loaded from /usr/lib/machinekit/modules/limit2.so
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:4: Realtime module 'limit2' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user Loaded module lowpass from path /usr/lib/machinekit/modules/lowpass.so
4:rtapi_app:10558:user lowpass default iparms: ''
4:rtapi_app:10558:user lowpass: loaded from /usr/lib/machinekit/modules/lowpass.so
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:5: Realtime module 'lowpass' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user Loaded module near from path /usr/lib/machinekit/modules/near.so
4:rtapi_app:10558:user near default iparms: ''
4:rtapi_app:10558:user near: loaded from /usr/lib/machinekit/modules/near.so
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:6: Realtime module 'near' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
4:rtapi_app:10558:user Loaded module scale from path /usr/lib/machinekit/modules/scale.so
4:rtapi_app:10558:user scale default iparms: ''
4:rtapi_app:10558:user scale: loaded from /usr/lib/machinekit/modules/scale.so
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:7: Realtime module 'scale' loaded
4:rtapi_app:10558:user do_newinst_cmd: instargs=''
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:9: setting parameter 'rpm_rps.gain' to '.0167'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:9: Pin 'rpm_rps.gain' set to .0167
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:12: setting parameter 'limit_speed.maxv' to '5000.0'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:12: Pin 'limit_speed.maxv' set to 5000.0
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:16: Pin 'spindle.0.index-enable' linked to signal 'spindle-index-enable'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:16: Pin 'sim_spindle.index-enable' linked to signal 'spindle-index-enable'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:19: Pin 'sim_spindle.position-fb' linked to signal 'spindle-pos'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:19: Pin 'spindle.0.revs' linked to signal 'spindle-pos'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:22: setting parameter 'spindle_mass.gain' to '.07'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:22: Pin 'spindle_mass.gain' set to .07
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:25: Pin 'spindle.0.speed-out' linked to signal 'spindle-speed-cmd'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:25: Pin 'limit_speed.in' linked to signal 'spindle-speed-cmd'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:26: Pin 'limit_speed.out' linked to signal 'spindle-speed-limited'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:26: Pin 'sim_spindle.velocity-cmd' linked to signal 'spindle-speed-limited'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:26: Pin 'spindle_mass.in' linked to signal 'spindle-speed-limited'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:29: Pin 'spindle_mass.out' linked to signal 'spindle-rpm-filtered'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:29: Pin 'near_speed.in2' linked to signal 'spindle-rpm-filtered'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:30: Pin 'rpm_rps.in' linked to signal 'spindle-rpm-filtered'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:31: Pin 'rpm_rps.out' linked to signal 'spindle-rps-filtered'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:31: Pin 'spindle.0.speed-in' linked to signal 'spindle-rps-filtered'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:34: setting parameter 'near_speed.scale' to '1.1'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:34: Pin 'near_speed.scale' set to 1.1
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:35: setting parameter 'near_speed.difference' to '10'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:35: Pin 'near_speed.difference' set to 10
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:37: Pin 'near_speed.in1' linked to signal 'spindle-speed-cmd'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:38: Pin 'near_speed.out' linked to signal 'spindle-at-speed'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:38: Pin 'spindle.0.at-speed' linked to signal 'spindle-at-speed'
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:40: Function 'limit_speed' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:41: Function 'spindle_mass' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:42: Function 'rpm_rps' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:43: Function 'near_speed' added to thread 'servo-thread', rmb=0 wmb=0
/usr/share/linuxcnc/hallib/sim_spindle_encoder.hal:44: Function 'sim_spindle' added to thread 'servo-thread', rmb=0 wmb=0
Found file(lib): /usr/share/linuxcnc/hallib/axis_manualtoolchange.hal
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
Traceback (most recent call last):
  File "/usr/bin/hal_manualtoolchange", line 11, in <module>
    import linuxcnc, hal
ImportError: No module named hal
/usr/share/linuxcnc/hallib/axis_manualtoolchange.hal:1: hal_manualtoolchange exited without becoming ready
Shutting down and cleaning up LinuxCNC...
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
<commandline>:0: Realtime threads stopped
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user  'ddt' unloaded
<commandline>:0: Realtime module 'ddt' unloaded
4:rtapi_app:10558:user  'hypot' unloaded
<commandline>:0: Realtime module 'hypot' unloaded
4:rtapi_app:10558:user  'limit2' unloaded
<commandline>:0: Realtime module 'limit2' unloaded
4:rtapi_app:10558:user  'lowpass' unloaded
<commandline>:0: Realtime module 'lowpass' unloaded
4:rtapi_app:10558:user  'motmod' unloaded
<commandline>:0: Realtime module 'motmod' unloaded
4:rtapi_app:10558:user  'near' unloaded
<commandline>:0: Realtime module 'near' unloaded
4:rtapi_app:10558:user  'scale' unloaded
<commandline>:0: Realtime module 'scale' unloaded
4:rtapi_app:10558:user  'sim_spindle' unloaded
<commandline>:0: Realtime module 'sim_spindle' unloaded
4:rtapi_app:10558:user  'trivkins' unloaded
<commandline>:0: Realtime module 'trivkins' unloaded
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user pid=10558 flavor=posix gcc=8.3.0 git=unknown
4:rtapi_app:10558:user  'hal_lib' unloaded
4:rtapi_app:10558:user  'rtapi' unloaded
3:rtapi_app:10558:user exiting mainloop (by remote command)
LinuxCNC terminated with an error.  You can find more information in the log:
    /home/machinekit/linuxcnc_debug.txt
and
    /home/machinekit/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal

Which basically means that it is looking for Python 2 module of HAL, but it is not there. (Because the module is of Python 3 version.)

This is the reason why I think the pinning of dependency package (in this case Machinekit-HAL) version - the same version used for building and for installing - is unavoidable.

Of cource, one of the mistakes was to not raise the version number when Machinekit-HAL become exclusivelly Python 3.

I am open to all and any ideas as to how solve this isue without specifying special version. I just cannot think of any other way at the moment.

zultron commented 3 years ago

After offline discussion with @cerna, we're on the same page about this. Sorry for the delay, and thanks!