diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d390f4a8b66..4ef4a7ced91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,7 +84,6 @@ jobs: sudo apt install ./po4a_0.67-2_all.deb codename=$(lsb_release -cs) dch --maintmaint --distribution $codename "GitHub test package." - eatmydata debian/configure eatmydata debuild -us -uc sudo apt-get install ../*.deb ./scripts/runtests -p tests/ diff --git a/debian/.gitignore b/debian/.gitignore index e0685f83b4e..80d6a62cf8a 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -1,8 +1,5 @@ linuxcnc-uspace files -rules -compat -control tmp linuxcnc linuxcnc-dev @@ -12,4 +9,3 @@ linuxcnc-doc-*/ /linuxcnc*.install *.debhelper shlibs.local -linuxcnc-uspace.lintian-overrides diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000000..f599e28b8ab --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +10 diff --git a/debian/configure b/debian/configure index e311bf3ba95..e6e78c0209c 100755 --- a/debian/configure +++ b/debian/configure @@ -15,14 +15,10 @@ set -e usage () { P=${0##*/} cat < compat +if [ -z "$ENABLE_BUILD_DOCUMENTATION" ]; then + echo "error: No need to run debian/configure any more." + echo "To build without documentation use:" + echo " DEB_BUILD_OPTIONS=nodoc DEB_BUILD_PROFILES=nodoc debuild" + exit 1 fi -subst control.top.in > control - -echo >> control -subst control.main-pkg.in >> control - -subst linuxcnc.install.in > ${MAIN_PACKAGE_NAME}.install -subst linuxcnc.lintian-overrides.in > ${MAIN_PACKAGE_NAME}.lintian-overrides - -subst rules.in > rules -chmod +x rules - -if [ -n "$ENABLE_BUILD_DOCUMENTATION" ]; then - subst control.docs.in >> control -fi - - rm -f ../build-stamp echo "successfully configured for '$DISTRIB_NAME'.." diff --git a/debian/control b/debian/control new file mode 100644 index 00000000000..227f79fdc2e --- /dev/null +++ b/debian/control @@ -0,0 +1,278 @@ +Source: linuxcnc +Section: misc +Priority: optional +Maintainer: LinuxCNC Developers +Uploaders: Jeff Epler , Sebastian Kuzminsky +Build-Depends: + debhelper (>= 10), + dh-python, + libudev-dev, + autoconf, + automake, + bwidget (>= 1.7), + desktop-file-utils, + gettext, + intltool, + libboost-python-dev, + libepoxy-dev, + libgl1-mesa-dev | libgl1-mesa-swx11-dev, + libglu1-mesa-dev, + libgtk2.0-dev, + libgtk-3-dev, + libmodbus-dev (>= 3.0), + libeditreadline-dev (>= 3.1-20191231-2)| libreadline-gplv2-dev | libreadline-dev, + libtirpc-dev, + libusb-1.0-0-dev, + libxmu-dev, + netcat, + po4a, + procps, + psmisc, + python3, + python3-dev, + python3-tk, + python3-xlib, + tcl8.6-dev, + tclx, + tk8.6-dev, + yapps2 +Build-Depends-Indep: + asciidoc (>= 8.5) , + dblatex (>= 0.2.12) , + docbook-xsl , + dvipng , + ghostscript , + graphviz , + groff , + imagemagick , + inkscape , + python3-lxml , + source-highlight , + w3c-linkchecker , + xsltproc , + texlive-extra-utils , + texlive-font-utils , + texlive-fonts-recommended , + texlive-lang-cyrillic , + texlive-lang-french , + texlive-lang-german , + texlive-lang-polish , + texlive-lang-spanish , + texlive-latex-recommended , + asciidoc-dblatex , + texlive-xetex | texlive-lang-chinese (<= 2020.20210202~) +Standards-Version: 4.6.0 +Vcs-Browser: https://github.com/LinuxCNC/linuxcnc +Vcs-Git: https://github.com/LinuxCNC/linuxcnc.git +Rules-Requires-Root: binary-targets + +Package: linuxcnc-uspace-dev +Architecture: any +Conflicts: linuxcnc-sim-dev, linuxcnc-uspace-dev +Depends: ${misc:Depends}, + ${python3:Depends}, + python3-serial, + linuxcnc-uspace (= ${binary:Version}), + udev, + python3-yapps +Section: devel +Description: PC based motion controller for real-time Linux + LinuxCNC is a fully-realised CNC machine controller that can interpret + machine-control programs (such as G-code), plan trajectories and finally + output low-level signals to machine control hardware + . + LinuxCNC is modular and in principle the HAL (hardware abstraction layer), + pluggable interpreters and variety of hardware drivers mean that it can + control almost any software-defined physical system. + . + LinuxCNC relies on a realtime kernel to support real-time motion control, + typically updating the position waypoints every 1mS and reacting to + input within tens of microseconds. + . + Modules exist to use the low-level parts of LinuxCNC as a motion-control + client for OpenPnP. Interfaces exist for ROS (the Robot Operating System) + with which LinuxCNC has considerable overlap. + . + LinuxCNC supports arbitrary kinematics (the mapping between coordinate + space and actuator space) and can control both parallel (eg Stewart + platform) and serial (eg robot arm) systems in addition to conventional + cartesian machine tools. + . + LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) + though the joint limit is build-time configurable. + . + A variety of interface hardware is supported including Modbus, EtherCAT, + analogue +/-10V velocity control and Step/Dir. Step/Dir is supported by + several hardware interfaces, including, but not limited to, the legacy + Parallel Port. + . + A Hardware Abstraction Layer allows for great flexibility in signal + mapping between the controller and the driver hardware. An extensive + library of modules allow for complex signal processing within the HAL + layer. For specialised tasks custom HAL components can be created using + a C-like syntax and installed with the supplied tools. + . + By default LinuxCNC supports RS274 G-code but is extendable to parse + other grammars such as STEP-NC or Gerber through support for pluggable + interpreters. + . + If you want a computer to control things in the real world + then LinuxCNC can do it. It is especially applicable to systems that + are required to follow accurate paths described in cartesian space but + has been used for numerous other applications. + . + This package provides all files that you need to embed parts of LinuxCNC + in your developments. + +Package: linuxcnc-uspace +Conflicts: linuxcnc-sim, linuxcnc-uspace +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends}, + libudev-dev, + iptables, + blt, + mesa-utils, + python3-tk, + python3-numpy, + python3-cairo, + python3-gi-cairo, + python3-opengl, + python3-configobj, + python3-xlib, + libgtksourceview-3.0-dev, + tcl8.6, + tk8.6, + bwidget (>= 1.7), + tclreadline, + tclx, + procps, psmisc, + udev +Recommends: + linuxcnc-doc-en | linuxcnc-doc, + librsvg2-dev, + hostmot2-firmware-all, + linux-image-rt-amd64 [linux-amd64], + linux-image-rt-686-pae [linux-i386], + python3-pil, + imagetk, + python3-pyqt5, + python3-pyqt5.qsci, + python3-pyqt5.qtsvg, + python3-pyqt5.qtopengl, + python3-opencv, + python3-dbus,python3-espeak, + python3-dbus.mainloop.pyqt5, + python3-pyqt5.qtwebkit, + espeak-ng, + pyqt5-dev-tools, + gstreamer1.0-tools,espeak, + sound-theme-freedesktop +Suggests: mesaflash +Description: motion controller for CNC machines and robots + LinuxCNC is a fully-realised CNC machine controller that can interpret + machine-control programs (such as G-code), plan trajectories and finally + output low-level signals to machine control hardware + . + LinuxCNC is modular and in principle the HAL (hardware abstraction layer), + pluggable interpreters and variety of hardware drivers mean that it can + control almost any software-defined physical system. + . + LinuxCNC relies on a realtime kernel to support real-time motion control, + typically updating the position waypoints every 1mS and reacting to + input within tens of microseconds. + . + Modules exist to use the low-level parts of LinuxCNC as a motion-control + client for OpenPnP. Interfaces exist for ROS (the Robot Operating System) + with which LinuxCNC has considerable overlap. + . + LinuxCNC supports arbitrary kinematics (the mapping between coordinate + space and actuator space) and can control both parallel (eg Stewart + platform) and serial (eg robot arm) systems in addition to conventional + cartesian machine tools. + . + LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) + though the joint limit is build-time configurable. + . + A variety of interface hardware is supported including Modbus, EtherCAT, + analogue +/-10V velocity control and Step/Dir. Step/Dir is supported by + several hardware interfaces, including, but not limited to, the legacy + Parallel Port. + . + A Hardware Abstraction Layer allows for great flexibility in signal + mapping between the controller and the driver hardware. An extensive + library of modules allow for complex signal processing within the HAL + layer. For specialised tasks custom HAL components can be created using + a C-like syntax and installed with the supplied tools. + . + By default LinuxCNC supports RS274 G-code but is extendable to parse + other grammars such as STEP-NC or Gerber through support for pluggable + interpreters. + . + If you want a computer to control things in the real world + then LinuxCNC can do it. It is especially applicable to systems that + are required to follow accurate paths described in cartesian space but + has been used for numerous other applications. + . + This package provides the main package for LinuxCNC. + +Package: linuxcnc-doc-en +Build-Profiles: +Provides: linuxcnc-doc +Architecture: all +Depends: ${misc:Depends} +Recommends: xdg-utils +Suggests: pdf-viewer +Description: motion controller for CNC machines and robots (English documentation) + LinuxCNC is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package contains the documentation in English. + +Package: linuxcnc-doc-fr +Build-Profiles: +Provides: linuxcnc-doc +Architecture: all +Depends: ${misc:Depends} +Recommends: xdg-utils +Suggests: pdf-viewer +Description: motion controller for CNC machines and robots (French documentation) + LinuxCNC is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package contains the documentation in French. + +Package: linuxcnc-doc-es +Build-Profiles: +Provides: linuxcnc-doc +Architecture: all +Depends: ${misc:Depends} +Recommends: mailcap +Suggests: pdf-viewer +Description: controlador de movimiento para máquinas CNC y robots (Español). + LinuxCNC es EMC (controlador de máquina mejorado) que proporciona + control de movimiento para máquinas herramientas CNC (fresado, + torneado, ruteado, etc.) y aplicaciones de robótica. + . + Este paquete contiene la documentación en español. + +Package: linuxcnc-doc-zh-cn +Build-Profiles: +Provides: linuxcnc-doc +Architecture: all +Depends: ${misc:Depends} +Recommends: xdg-utils +Suggests: pdf-viewer +Conflicts: linuxcnc-doc-cn +Replaces: linuxcnc-doc-cn +Description: motion controller for CNC machines and robots (Chinese + documentation) + LinuxCNC is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package contains the documentation in Chinese. diff --git a/debian/control.docs.in b/debian/control.docs.in deleted file mode 100644 index 50011d7c1c3..00000000000 --- a/debian/control.docs.in +++ /dev/null @@ -1,55 +0,0 @@ -Package: linuxcnc-doc-en -Provides: linuxcnc-doc -Architecture: all -Depends: ${misc:Depends} -Recommends: xdg-utils -Suggests: pdf-viewer -Description: motion controller for CNC machines and robots (English documentation) - LinuxCNC is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package contains the documentation in English. - -Package: linuxcnc-doc-fr -Provides: linuxcnc-doc -Architecture: all -Depends: ${misc:Depends} -Recommends: xdg-utils -Suggests: pdf-viewer -Description: motion controller for CNC machines and robots (French documentation) - LinuxCNC is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package contains the documentation in French. - -Package: linuxcnc-doc-es -Provides: linuxcnc-doc -Architecture: all -Depends: ${misc:Depends} -Recommends: mailcap -Suggests: pdf-viewer -Description: controlador de movimiento para máquinas CNC y robots (Español). - LinuxCNC es EMC (controlador de máquina mejorado) que proporciona - control de movimiento para máquinas herramientas CNC (fresado, - torneado, ruteado, etc.) y aplicaciones de robótica. - . - Este paquete contiene la documentación en español. - -Package: linuxcnc-doc-zh-cn -Provides: linuxcnc-doc -Architecture: all -Depends: ${misc:Depends} -Recommends: xdg-utils -Suggests: pdf-viewer -Conflicts: linuxcnc-doc-cn -Replaces: linuxcnc-doc-cn -Description: motion controller for CNC machines and robots (Chinese - documentation) - LinuxCNC is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package contains the documentation in Chinese. - diff --git a/debian/control.main-pkg.in b/debian/control.main-pkg.in deleted file mode 100644 index 42fe6228c63..00000000000 --- a/debian/control.main-pkg.in +++ /dev/null @@ -1,81 +0,0 @@ -Package: @MAIN_PACKAGE_NAME@ -Conflicts: linuxcnc-sim, @OTHER_MAIN_PACKAGE_NAME@ -Architecture: any -Depends: - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, - @KERNEL_DEPENDS@, - @MODUTILS_DEPENDS@, - blt, - mesa-utils, - python3-tk, - python3-numpy, - python3-cairo, - python3-gi-cairo, - python3-opengl, - python3-configobj, - python3-xlib, - libgtksourceview-3.0-dev, - tcl@TCLTK_VERSION@, - tk@TCLTK_VERSION@, - bwidget (>= 1.7), - tclreadline, - tclx, - procps, psmisc, - udev -Recommends: - linuxcnc-doc-en | linuxcnc-doc, - librsvg2-dev, - @EXTRA_RECOMMENDS@, - @PYTHON_IMAGING@, - @PYTHON_IMAGING_TK@, - @QTVCP_DEPENDS@ -Suggests: mesaflash -Description: motion controller for CNC machines and robots - LinuxCNC is a fully-realised CNC machine controller that can interpret - machine-control programs (such as G-code), plan trajectories and finally - output low-level signals to machine control hardware - . - LinuxCNC is modular and in principle the HAL (hardware abstraction layer), - pluggable interpreters and variety of hardware drivers mean that it can - control almost any software-defined physical system. - . - LinuxCNC relies on a realtime kernel to support real-time motion control, - typically updating the position waypoints every 1mS and reacting to - input within tens of microseconds. - . - Modules exist to use the low-level parts of LinuxCNC as a motion-control - client for OpenPnP. Interfaces exist for ROS (the Robot Operating System) - with which LinuxCNC has considerable overlap. - . - LinuxCNC supports arbitrary kinematics (the mapping between coordinate - space and actuator space) and can control both parallel (eg Stewart - platform) and serial (eg robot arm) systems in addition to conventional - cartesian machine tools. - . - LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) - though the joint limit is build-time configurable. - . - A variety of interface hardware is supported including Modbus, EtherCAT, - analogue +/-10V velocity control and Step/Dir. Step/Dir is supported by - several hardware interfaces, including, but not limited to, the legacy - Parallel Port. - . - A Hardware Abstraction Layer allows for great flexibility in signal - mapping between the controller and the driver hardware. An extensive - library of modules allow for complex signal processing within the HAL - layer. For specialised tasks custom HAL components can be created using - a C-like syntax and installed with the supplied tools. - . - By default LinuxCNC supports RS274 G-code but is extendable to parse - other grammars such as STEP-NC or Gerber through support for pluggable - interpreters. - . - If you want a computer to control things in the real world - then LinuxCNC can do it. It is especially applicable to systems that - are required to follow accurate paths described in cartesian space but - has been used for numerous other applications. - . - This package provides the main package for LinuxCNC. - diff --git a/debian/control.top.in b/debian/control.top.in deleted file mode 100644 index f2e3c0868d5..00000000000 --- a/debian/control.top.in +++ /dev/null @@ -1,106 +0,0 @@ -Source: linuxcnc -Section: misc -Priority: optional -Maintainer: LinuxCNC Developers -Uploaders: Jeff Epler , Sebastian Kuzminsky -Build-Depends: - @DEBHELPER@, - @PYTHON_PACKAGING_DEPENDS@, - @KERNEL_DEPENDS_BUILD@, - @KERNEL_HEADERS@, - @MODUTILS_DEPENDS@, - @EXTRA_BUILD@, - autoconf, - automake, - bwidget (>= 1.7), - desktop-file-utils, - gettext, - intltool, - libboost-python-dev, - libepoxy-dev, - libgl1-mesa-dev | libgl1-mesa-swx11-dev, - libglu1-mesa-dev, - libgtk2.0-dev, - libgtk-3-dev, - libmodbus-dev (>= 3.0), - @LIBREADLINE_DEV@, - libtirpc-dev, - libusb-1.0-0-dev, - libxmu-dev, - netcat, - po4a, - procps, - psmisc, - python3, - python3-dev, - python3-tk, - python3-xlib, - tcl@TCLTK_VERSION@-dev, - tclx, - tk@TCLTK_VERSION@-dev, - yapps2 -Build-Depends-Indep: - @DOC_DEPENDS@, -Standards-Version: 4.6.0 -Vcs-Browser: https://github.com/LinuxCNC/linuxcnc -Vcs-Git: https://github.com/LinuxCNC/linuxcnc.git -Rules-Requires-Root: binary-targets - -Package: @MAIN_PACKAGE_NAME@-dev -Architecture: any -Conflicts: linuxcnc-sim-dev, @OTHER_MAIN_PACKAGE_NAME@-dev -Depends: ${misc:Depends}, - ${python3:Depends}, - @KERNEL_HEADERS@, - python3-serial, - @MAIN_PACKAGE_NAME@ (= ${binary:Version}), - udev, - @YAPPS_RUNTIME@ -Section: devel -Description: PC based motion controller for real-time Linux - LinuxCNC is a fully-realised CNC machine controller that can interpret - machine-control programs (such as G-code), plan trajectories and finally - output low-level signals to machine control hardware - . - LinuxCNC is modular and in principle the HAL (hardware abstraction layer), - pluggable interpreters and variety of hardware drivers mean that it can - control almost any software-defined physical system. - . - LinuxCNC relies on a realtime kernel to support real-time motion control, - typically updating the position waypoints every 1mS and reacting to - input within tens of microseconds. - . - Modules exist to use the low-level parts of LinuxCNC as a motion-control - client for OpenPnP. Interfaces exist for ROS (the Robot Operating System) - with which LinuxCNC has considerable overlap. - . - LinuxCNC supports arbitrary kinematics (the mapping between coordinate - space and actuator space) and can control both parallel (eg Stewart - platform) and serial (eg robot arm) systems in addition to conventional - cartesian machine tools. - . - LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) - though the joint limit is build-time configurable. - . - A variety of interface hardware is supported including Modbus, EtherCAT, - analogue +/-10V velocity control and Step/Dir. Step/Dir is supported by - several hardware interfaces, including, but not limited to, the legacy - Parallel Port. - . - A Hardware Abstraction Layer allows for great flexibility in signal - mapping between the controller and the driver hardware. An extensive - library of modules allow for complex signal processing within the HAL - layer. For specialised tasks custom HAL components can be created using - a C-like syntax and installed with the supplied tools. - . - By default LinuxCNC supports RS274 G-code but is extendable to parse - other grammars such as STEP-NC or Gerber through support for pluggable - interpreters. - . - If you want a computer to control things in the real world - then LinuxCNC can do it. It is especially applicable to systems that - are required to follow accurate paths described in cartesian space but - has been used for numerous other applications. - . - This package provides all files that you need to embed parts of LinuxCNC - in your developments. diff --git a/debian/control.uspace-rtai.in b/debian/control.uspace-rtai.in deleted file mode 100644 index 5027bdf1878..00000000000 --- a/debian/control.uspace-rtai.in +++ /dev/null @@ -1,9 +0,0 @@ -Package: @MAIN_PACKAGE_NAME@-rtai -Architecture: @RTAI_ARCHITECTURE@ -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: PC based motion controller for real-time Linux - LinuxCNC is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package contains extra files for use with RTAI realtime kernels. diff --git a/debian/control.uspace-xenomai.in b/debian/control.uspace-xenomai.in deleted file mode 100644 index 005909234cc..00000000000 --- a/debian/control.uspace-xenomai.in +++ /dev/null @@ -1,9 +0,0 @@ -Package: @MAIN_PACKAGE_NAME@-xenomai -Architecture: @XENOMAI_ARCHITECTURE@ -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: PC based motion controller for real-time Linux - LinuxCNC is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package contains extra files for use with Xenomai realtime kernels. diff --git a/debian/linuxcnc.lintian-overrides.in b/debian/linuxcnc-uspace.lintian-overrides similarity index 100% rename from debian/linuxcnc.lintian-overrides.in rename to debian/linuxcnc-uspace.lintian-overrides diff --git a/debian/linuxcnc.install.in b/debian/linuxcnc.install.in deleted file mode 100644 index ac695f27233..00000000000 --- a/debian/linuxcnc.install.in +++ /dev/null @@ -1 +0,0 @@ -debian/linuxcnc-uspace.metainfo.xml usr/share/metainfo diff --git a/debian/rules.in b/debian/rules old mode 100644 new mode 100755 similarity index 76% rename from debian/rules.in rename to debian/rules index 5285d5a58bb..80cf9da9a2f --- a/debian/rules.in +++ b/debian/rules @@ -28,11 +28,12 @@ TIMESTAMP=$(shell dpkg-parsechangelog -S timestamp) export DATE=$(shell LANG=C date --date='@$(TIMESTAMP)' '+%d\ %b\ %Y') export TIME=$(shell LANG=C date --date='@$(TIMESTAMP)' '+%T') -kernel_version = @KERNEL_VERSION@ -configure_realtime_arg = @CONFIGURE_REALTIME_ARG@ -enable_build_documentation = @ENABLE_BUILD_DOCUMENTATION@ -DESTDIR=$(CURDIR)/debian/@MAIN_PACKAGE_NAME@ -DEV_PACKAGE_NAME=@MAIN_PACKAGE_NAME@-dev +ifeq ($(filter nodoc,$(DEB_BUILD_OPTIONS)),) +enable_build_documentation = --enable-build-documentation=pdf +endif +MAIN_PACKAGE_NAME = linuxcnc-uspace +DESTDIR=$(CURDIR)/debian/linuxcnc-uspace +DEV_PACKAGE_NAME=linuxcnc-uspace-dev %: # With debhelper 10 the --parallel becomes the default @@ -43,7 +44,7 @@ override_dh_auto_configure: cd src && PYTHON=/usr/bin/python3 ./configure \ --prefix=/usr --sysconfdir=/etc \ --mandir=/usr/share/man \ - $(configure_realtime_arg) \ + --with-realtime=uspace \ $(enable_build_documentation) \ --disable-check-runtime-deps @@ -51,7 +52,7 @@ override_dh_auto_build-arch: $(MAKE) PYTHON=/usr/bin/python3 -C src override_dh_auto_build-indep: -ifneq "$(enable_build_documentation)" "" +ifeq ($(filter nodoc,$(DEB_BUILD_OPTIONS)),) $(MAKE) PYTHON=/usr/bin/python3 -C src manpages $(MAKE) PYTHON=/usr/bin/python3 -C src translateddocs $(MAKE) PYTHON=/usr/bin/python3 -C src docs @@ -70,7 +71,7 @@ override_dh_auto_install: # avoid installing into already existing directory rm -rf $(DESTDIR) # executing regular installation with regular prefix but unterneath the debian folder - DESTDIR=$(DESTDIR) $(MAKE) -C src install + $(MAKE) -C src DESTDIR=$(DESTDIR) install # Version 0.22 and newer of the desktop-file-validate program # (in Jessie and newer) can deal with multiple files specified # on the command line. Version 0.20 (in Wheezy) says it can, @@ -79,13 +80,13 @@ override_dh_auto_install: desktop-file-validate $$F; \ done # Adding files that are Debian-specific - cd debian/@EXTRAS@ && cp -a * $(DESTDIR) - DESTDIR=$(DESTDIR) $(MAKE) -C src INSTALL=install + cd debian/extras && cp -a * $(DESTDIR) + $(MAKE) -C src DESTDIR=$(DESTDIR) INSTALL=install py3clean . # In case that only the indep packages are built if ls lib|egrep -q "*.a$$"; then \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/lib ; \ - cp lib/*.a debian/$(DEV_PACKAGE_NAME)/usr/lib ; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/lib ; \ + cp lib/*.a debian/linuxcnc-uspace-dev/usr/lib ; \ fi mkdir -p $(DESTDIR)/usr/share/doc/linuxcnc cp docs/html/gcode*.html $(DESTDIR)/usr/share/doc/linuxcnc/ @@ -109,9 +110,9 @@ override_dh_auto_install: # The translated developer documentation goes to the respective regular -doc package # english documentation has no "en" suffix if [ -r $(DESTDIR)/usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf ]; then \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/share/doc/linuxcnc-dev; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/share/doc/linuxcnc-dev/ $(DESTDIR)/usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/share/doc/linuxcnc-dev/ $(DESTDIR)/usr/share/doc/linuxcnc/LinuxCNC_Developer_*.pdf; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/share/doc/linuxcnc-dev; \ + mv -t debian/linuxcnc-uspace-dev/usr/share/doc/linuxcnc-dev/ $(DESTDIR)/usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf; \ + mv -t debian/linuxcnc-uspace-dev/usr/share/doc/linuxcnc-dev/ $(DESTDIR)/usr/share/doc/linuxcnc/LinuxCNC_Developer_*.pdf; \ for lang in zh_CN es fr; do \ p=$$(echo $$lang | tr _ - | tr A-Z a-z); \ d=debian/linuxcnc-doc-$$p/usr/share/doc/linuxcnc ; \ @@ -125,27 +126,30 @@ override_dh_auto_install: cd $(DESTDIR)/usr/share/doc/linuxcnc/examples && ln -sf ../../../linuxcnc/ncfiles ./nc_files # -dev - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/include - mv -t debian/$(DEV_PACKAGE_NAME)/usr/include $(DESTDIR)/usr/include/linuxcnc + mkdir -p debian/linuxcnc-uspace-dev/usr/include + mv -t debian/linuxcnc-uspace-dev/usr/include $(DESTDIR)/usr/include/linuxcnc # In case that only the indep packages are built if ls $(DESTDIR)/usr/lib/*.a $(DESTDIR)/usr/lib/*.so | egrep -q "*.(a|so)$$"; then \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/lib; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/lib/ $(DESTDIR)/usr/lib/*.a $(DESTDIR)/usr/lib/*.so; \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/bin; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/bin $(DESTDIR)/usr/bin/halcompile; \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/share/man/man1; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/share/man/man1 $(DESTDIR)/usr/share/man/man1/halcompile.1; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/share/man $(DESTDIR)/usr/share/man/man3; \ - mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/share/linuxcnc; \ - mv -t debian/$(DEV_PACKAGE_NAME)/usr/share/linuxcnc $(DESTDIR)/usr/share/linuxcnc/Makefile.modinc; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/lib; \ + mv -t debian/linuxcnc-uspace-dev/usr/lib/ $(DESTDIR)/usr/lib/*.a $(DESTDIR)/usr/lib/*.so; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/bin; \ + mv -t debian/linuxcnc-uspace-dev/usr/bin $(DESTDIR)/usr/bin/halcompile; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/share/man/man1; \ + mv -t debian/linuxcnc-uspace-dev/usr/share/man/man1 $(DESTDIR)/usr/share/man/man1/halcompile.1; \ + mv -t debian/linuxcnc-uspace-dev/usr/share/man $(DESTDIR)/usr/share/man/man3; \ + mkdir -p debian/linuxcnc-uspace-dev/usr/share/linuxcnc; \ + mv -t debian/linuxcnc-uspace-dev/usr/share/linuxcnc $(DESTDIR)/usr/share/linuxcnc/Makefile.modinc; \ fi - #mkdir -p debian/$(DEV_PACKAGE_NAME)/usr/share/doc/ - #mkdir -t debian/$(DEV_PACKAGE_NAME)/usr/share/doc/ $(DESTDIR)/usr/share/doc/linuxcnc-dev/ + #mkdir -p debian/linuxcnc-uspace-dev/usr/share/doc/ + #mkdir -t debian/linuxcnc-uspace-dev/usr/share/doc/ $(DESTDIR)/usr/share/doc/linuxcnc-dev/ # not a package: drivers #mkdir -p debian/drivers/usr/bin #mv -t debian/drivers/usr/bin $(DESTDIR)/usr/bin/pci_write $(DESTDIR)/usr/bin/pci_read + # Install Appstream XML + install -D debian/linuxcnc-uspace.metainfo.xml $(DESTDIR)/usr/share/metainfo/linuxcnc-uspace.metainfo.xml + # some clean-up #rm -rf $(DESTDIR)/usr/share/doc/linuxcnc/html rm -f $(DESTDIR)/usr/share/doc/linuxcnc/examples/sample-configs/*/*position*.txt @@ -163,5 +167,5 @@ override_dh_fixperms: DEB_HOST_ARCH=`dpkg-architecture -qDEB_HOST_ARCH` dh_python3 override_dh_shlibdeps: - cat debian/@MAIN_PACKAGE_NAME@/DEBIAN/shlibs debian/shlibs.pre > debian/shlibs.local - dh_shlibdeps -u--warnings=0 -l debian/@MAIN_PACKAGE_NAME@/usr/lib + cat debian/linuxcnc-uspace/DEBIAN/shlibs debian/shlibs.pre > debian/shlibs.local + dh_shlibdeps -u--warnings=0 -l debian/linuxcnc-uspace/usr/lib diff --git a/docs/README.adoc b/docs/README.adoc index 83780e5176d..7331800e6c6 100644 --- a/docs/README.adoc +++ b/docs/README.adoc @@ -190,12 +190,6 @@ Edit debian/control.in to add the new linuxcnc-doc-$NEWLANG package. Add the new doc package to the "or" list of the "Recommends" line of the linuxcnc main package. -Add the new language to the list in the DOCS_PACKAGES variable in -debian/configure. - -If there is a texlive-lang-$NEWLANGUAGE package for your new language, -add it to the DOC_DEPENDS variable in debian/configure. - Add the appropriate `linuxcnc-doc-$NEWLANG.*` files for the new package, probably by copying and editing `debian/linuxcnc-doc-en.*`. diff --git a/docs/src/code/building-linuxcnc.adoc b/docs/src/code/building-linuxcnc.adoc index 201301d7f69..a9f6fa7d2fd 100644 --- a/docs/src/code/building-linuxcnc.adoc +++ b/docs/src/code/building-linuxcnc.adoc @@ -76,9 +76,9 @@ Xenomai:: kernel yourself. Preempt-RT:: - From https://rt.wiki.kernel.org. A Linux kernel with the - Preempt-RT patch is occasionally available from the Debian - archive at https://www.debian.org, and from the wayback machine at + From https://rt.wiki.kernel.org. A Linux kernel with the Preempt-RT + patch is available from the Debian archive at + https://www.debian.org, and from the wayback machine at https://snapshot.debian.org. To make use of the realtime capabilities of LinuxCNC, certain parts of @@ -195,7 +195,7 @@ delivery to end users, and when building the software for a machine that doesn't have the build environment installed, or that doesn't have internet access. -Building Debian packages requires the `dpkg-buildpackage` tool, from the +Building Debian packages uses the `dpkg-buildpackage` tool, from the `dpkg-dev` package: ----- @@ -206,78 +206,28 @@ Building Debian packages also requires that all build dependencies are installed, as described in the section <>. -Once those prerequisites are met, building the Debian packages consists -of two steps. - -The first step is generating the Debian package scripts and meta-data -from the git repo by running this: +Once those prerequisites are met, building the Debian packages +consists of a single steps. This step is to build the package by +running `dpkg-buildpackage`. One can also use `debuild` from the +devscripts package, to automate a few more steps in the build process. +Note that these programs needs to run from the `linuxcnc-dev` +directory, *not* from `linuxcnc-dev/debian`: ----- -$ cd linuxcnc-dev/debian -$ ./configure uspace -$ cd .. +$ dpkg-buildpackage -b -uc ----- -[NOTE] -===== -The `debian/configure` script is different from the `src/configure` -script! - -The `debian/configure` script needs different arguments depending on the -platform you're building on/for, see the <> section. -===== - -Once the Debian package scripts and meta-data are configured, build the -package by running `dpkg-buildpackage` (note that it needs to run from -the `linuxcnc-dev` directory, *not* from `linuxcnc-dev/debian`): +The build system is set up to use Debian +link:https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options[package options] +and link:https://wiki.debian.org/BuildProfileSpec[package profiles] to +make it optional to build documentation packages. This is done by +adding `BUILD_OPTIONS=nodoc` and 1DEB_BUILD_PROFILES=nodoc` to the +environment when building, for example like this: ----- -$ dpkg-buildpackage -b -uc +DEB_BUILD_OPTIONS=nodoc DEB_BUILD_PROFILES=nodoc debuild -b -uc" ----- -[[debian-configure-arguments]] -==== `debian/configure` arguments - -The `debian/configure` script configures the Debian packaging. It must -be run before `dpkg-checkbuilddeps` and `dpkg-buildpackage` can be run. - -It takes a single argument which specifies the realtime or non-realtime -platform to build for. The normal values for this argument are: - -`uspace`:: - Configure the Debian package for Preempt-RT realtime or for - non-realtime (these two are compatible). - -`noauto`:: -`rtai`:: -`xenomai`:: - Normally, the lists of RTOSes for uspace realtime to support is detected - automatically. However, if you wish, you may specify one or more of these - after `uspace` to enable support for these RTOSes. Or, to disable - autodetection, specify `noauto`. -+ -If you want just the traditional RTAI "kernel module" realtime, use -`-r` or `$KERNEL_VERSION` instead. - -`rtai=`:: - If the development package for rtai lxrt does not start with - "rtai-modules", or if the first such package listed by apt-cache search - is not the desired one, then explicitly specify the package name. - -`-r`:: - Configure the Debian package for the currently running RTAI kernel. - You must be running an RTAI kernel on your build machine for this - to work! - -`$KERNEL_VERSION`:: - Configure the debian package for the specified RTAI kernel version - (for example "3.4.9-rtai-686-pae"). The matching kernel headers - debian package must be installed on your build machine (for example - "linux-headers-3.4.9-rtai-686-pae"). Note that you can _build_ - LinuxCNC in this configuration, but if you are not running the - matching RTAI kernel you will not be able to _run_ LinuxCNC, including - the test suite. [[Satisfying-Build-Dependencies]] == Satisfying Build Dependencies diff --git a/scripts/travis-install-build-deps.sh b/scripts/travis-install-build-deps.sh index 1dc04b03acc..334cb533284 100755 --- a/scripts/travis-install-build-deps.sh +++ b/scripts/travis-install-build-deps.sh @@ -5,7 +5,6 @@ sudo apt-get update -qq sudo apt-get install -y devscripts equivs build-essential --no-install-recommends sudo apt-get remove -f libreadline6-dev || true sudo apt-get remove -f libreadline-dev || true -debian/configure # This gives an error that is hidden from us #mk-build-deps -i -r -s sudo -t 'apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --no-install-suggests' if ! sudo apt-get -y build-dep . ; then