diff --git a/debian/control.top.in b/debian/control.top.in index e018bcdf5f8..47791d731f6 100644 --- a/debian/control.top.in +++ b/debian/control.top.in @@ -47,6 +47,7 @@ Build-Depends: python3-tk, python3-pyqt5.qtwebengine | python3-pyqt5.qtwebkit, python3-xlib, + tcl, tcl@TCLTK_VERSION@-dev, tclx, tk@TCLTK_VERSION@-dev, diff --git a/debian/linuxcnc.install.in b/debian/linuxcnc.install.in index aeccb5f101e..7634a7e01cd 100644 --- a/debian/linuxcnc.install.in +++ b/debian/linuxcnc.install.in @@ -114,7 +114,7 @@ usr/bin/xyzbc-trt-gui usr/lib/lib*.so.* usr/lib/linuxcnc usr/lib/python3 -usr/lib/tcltk +usr/share/tcltk usr/share/axis usr/share/glade diff --git a/lib/python/nf.py.in b/lib/python/nf.py.in index e20a4675190..f2467613532 100644 --- a/lib/python/nf.py.in +++ b/lib/python/nf.py.in @@ -105,6 +105,7 @@ def find_prefix(f): return find_prefix(os.path.dirname(f)) PREFIX = "@prefix@" +EMC2_TCL_DIR = "@EMC2_TCL_DIR@" SHARE = os.path.join(PREFIX, "share", "axis") tcl_libdir = os.path.join(SHARE, "tcl") diff --git a/lib/python/rs274/options.py b/lib/python/rs274/options.py index 94f625ee148..2319a2c2006 100644 --- a/lib/python/rs274/options.py +++ b/lib/python/rs274/options.py @@ -18,11 +18,10 @@ import nf, os -# lib/tcltk/emc2 for installed emc -# tcl for run-in-place emc -for candidate in 'lib/tcltk/linuxcnc', 'tcl': - LINUXCNC_TCL = os.path.join(nf.PREFIX, candidate, 'linuxcnc.tcl') - if os.path.exists(LINUXCNC_TCL): break +# system Tcl path for installed emc +# tcl for run-in-place emc +rip = os.path.join(nf.PREFIX, 'tcl', 'linuxcnc.tcl') +LINUXCNC_TCL = rip if os.path.exists(rip) else os.path.join(nf.EMC2_TCL_DIR, 'linuxcnc.tcl') options = ''' . configure -bg #d9d9d9 diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index efe1eceb13a..5f05e464810 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -65,7 +65,7 @@ LANGUAGES = @LANGUAGES@ docsdir = ${prefix}/share/doc/linuxcnc sampleconfsdir = ${prefix}/share/doc/linuxcnc/examples/sample-configs ncfilesdir = ${prefix}/share/linuxcnc/ncfiles -tcldir = ${prefix}/lib/tcltk/linuxcnc +tcldir = @EMC2_TCL_DIR@ # /Standard configure directories diff --git a/src/configure.ac b/src/configure.ac index 58979305b8b..02407806a86 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -676,6 +676,15 @@ AC_DEFINE_UNQUOTED([EMC2_DEFAULT_TOOLTABLE], "$DEFAULT_TOOLTABLE", [Default nml # we decide based on RIP or install where stuff goes # ############################################################################## +AC_ARG_WITH([tcl-dir], + [AS_HELP_STRING([--with-tcl-dir=DIR], + [directory for LinuxCNC Tcl scripts (default: auto-detected from tcl_pkgPath)])], + [EMC2_TCL_DIR="$withval"], + [TCL_GET_DIR=$(echo [['set d [lindex [lsearch -all -inline -glob $tcl_pkgPath /usr/share/*] 0]; if {$d eq ""} {set d [lindex [lsearch -all -inline -glob $tcl_pkgPath /usr/lib*] 0]}; puts $d']] | tclsh 2>/dev/null) + AS_IF([test -z "$TCL_GET_DIR"], + [AC_MSG_ERROR([could not determine Tcl package dir from tcl_pkgPath])]) + EMC2_TCL_DIR="$TCL_GET_DIR/linuxcnc"]) + fe () { # Fully expand argument. Example: # ${datadir} -> ${datarootdir} -> ${prefix}/share -> /usr/local @@ -711,9 +720,8 @@ else EMC2_SCRIPT=$EMC2_BIN_DIR/linuxcnc EMC2_SUFFIX="" EMC2_ICON=linuxcncicon - EMC2_TCL_DIR=${prefix}/lib/tcltk/linuxcnc - EMC2_TCL_LIB_DIR=${prefix}/lib/tcltk/linuxcnc - EMC2_LANG_DIR=${prefix}/lib/tcltk/linuxcnc/msgs + EMC2_TCL_LIB_DIR="${EMC2_TCL_DIR}" + EMC2_LANG_DIR="${EMC2_TCL_DIR}/msgs" EMC2_PO_DIR=${prefix}/share/locale EMC2_HELP_DIR=${prefix}/share/doc/linuxcnc case $MODULE_DIR in