开源改变世界

debian/configure:重新添加对 RTAI 的支持 #2052

推推 grbl 3年前 (2023-01-31) 325次浏览
打开
NTULINUX 开启了这个issue 2022 年 9 月 20 日 · 18条评论
打开

debian/configure:重新添加对 RTAI 的支持#2052

NTULINUX 开启了这个issue 2022 年 9 月 20 日 · 18条评论

注释

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者

使用 Bullseye RTAI 内核 (4.19.257) 6f28560应该至少部分恢复。

debian/configure:重新添加对 RTAI 的支持 #2052
合作者
彼得赖因霍尔特森 评论了 2022 年 9 月 20 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052

我不知道我是否理解正确,但官方没有来自 Debian 开发人员的 RTAI 内核。内核 4.19.257 来自他们的开发。这就是为什么我认为进行此更改6f28560的原因。但我很高兴受到启发,因为我个人更喜欢 RTAI。

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者
NTULINUX 评论了 2022 年 9 月 20 日  

我不知道我是否理解正确,但官方没有来自 Debian 开发人员的 RTAI 内核。内核 4.19.257 来自他们的开发。这就是为什么我认为进行此更改6f28560的原因。但我很高兴受到启发,因为我个人更喜欢 RTAI。

Debian 开发人员从未提供过 RTAI 内核,但是在我记得直到提交之前,构建具有 RTAI 支持的 LinuxCNC Debian 软件包的能力一直是一个选项。LinuxCNC 将在他们的存储库中托管他们自己的 RTAI 内核包以及相应的 LinuxCNC 包。由于 LinuxCNC 存储库,在 PREEMPT_RT 和 RTAI 安装之间切换的能力应该并且已经使用了相当长一段时间的包管理器。

看起来 LinuxCNC 存储库中先前托管的 RTAI Debian 软件包已被删除。LinuxCNC 托管了 RTAI 内核、模块包和用于 Buster 和 Stretch 的 LinuxCNC,但是我再也找不到它们了:

https://linuxcnc.org/dists/stretch/

https://linuxcnc.org/dists/buster/

debian/configure:重新添加对 RTAI 的支持 #2052

非常感谢您提供的信息。我最后一个 RTAI 内核是 Debian 7 32 位。

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者

啊,我找到他们了!

https://www.linuxcnc.org/dists/buster/base/binary-amd64/

我正在寻找2.8-rt而不是base.

debian/configure:重新添加对 RTAI 的支持 #2052

好的??很好。

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者

需要帮忙:

From 9b840b0c01f49022379a46e29a9a86e9d0f54062 Mon Sep 17 00:00:00 2001
From: Alec Ari <neotheuser@ymail.com>
Date: Sun, 9 Oct 2022 00:14:04 -0500
Subject: BROKEN: Revert "debian/configure: Drop outdated support for rtai and
 xenomai"

BROKEN
This reverts commit 6f285604ac1a1b58b2d65d5904ffec3998a833ef.
BROKEN

Signed-off-by: Alec Ari <neotheuser@ymail.com>
---
 debian/configure                     | 144 +++++++++++++++++++++++----
 debian/linuxcnc-uspace-rtai.files.in |   1 +
 2 files changed, 123 insertions(+), 22 deletions(-)
 create mode 100644 debian/linuxcnc-uspace-rtai.files.in

diff --git a/debian/configure b/debian/configure
index f5a9683549..1973b1cf0e 100755
--- a/debian/configure
+++ b/debian/configure
@@ -18,7 +18,22 @@ usage () {
 $P: Set up debian/ files to build for a particular kernel
 
 Usage:
-  $P [no-docs]
+    $P uspace [noauto | rtai | rtai=packagename] ...
+        Build for a userspace realtime systems or simulator
+
+    $P sim
+        Deprecated synonym for '$P uspace'
+
+    $P [kernel-version]
+        Build for the installed RTAI realtime kernel specified by
+        [kernel-version], for example "3.4.9-rtai-686-pae"
+
+    $P -r
+        Build for the currently running kernel for RTAI realtime only
+
+    $P -a
+        If the currently running kernel has realtime extensions, use it.
+        Otherwise use any available realtime kernel it can find.
 
   Extra options:
     no-docs
@@ -28,15 +43,48 @@ EOF
 
 cd "${0%/*}"
 
-if [ "$1" == "-h" -o "$1" == "-help" -o "$1" == "--help" ]; then
+if [ $# -eq 0 -o "$1" == "-h" -o "$1" == "-help" -o "$1" == "--help" ]; then
     usage
+    if [ $# -ne 1 ]; then
+        exit 1
+    fi
     exit 0
 fi
 
+if [ $1 = "-r" ]; then
+    set -- `uname -r`
+elif [ $1 = "-a" ]; then
+    KERNEL="$(uname -r)"
+    if [ ! -d "/usr/realtime-$KERNEL" ]; then
+        KERNEL=$(ls -1d /usr/realtime-* 2> /dev/null | cut -d - -f 2- | head -1)
+        if [ -z "$KERNEL" ]; then
+            echo "no realtime kernels found!"
+            exit 1
+        fi
+    fi
+    set -- $KERNEL
+fi
+
+TARGET=$1; shift
+
+# for example: "3.16.0-9"
+KERNEL_VERSION_ABI=${TARGET%-rtai-*}
+
+MODULE_PATH=usr/realtime-$TARGET/modules/linuxcnc
+MODULE_EXT=.ko
+KERNEL_DEPENDS="linux-image-$TARGET,rtai-modules-$TARGET|rtai-modules-$KERNEL_VERSION_ABI"
+KERNEL_HEADERS=linux-headers-$TARGET
+EXTRA_FILES=
 EXTRA_BUILD=
+KERNEL_VERSION=$TARGET
+DRIVERS=drivers.files.in
+PYTHON_VERSION=$(python3 -c 'import sys; print (sys.version[:3])')
 PYTHON_VERSION_NEXT=$(python3 -c 'import sys; print (sys.version[:2] + str(1+int(sys.version[2])))')
 LIBREADLINE_DEV="libreadline-gplv2-dev | libreadline-dev"
 
+BUILD_RTAI=false
+BUILD_AUTO=true
+
 ENABLE_BUILD_DOCUMENTATION=--enable-build-documentation=pdf
 
 # Specialize these based on DISTRIB_NAME as needed
@@ -44,11 +92,21 @@ ENABLE_BUILD_DOCUMENTATION=--enable-build-documentation=pdf
 # the whole point is to allow a range of kernels to work, and we don't know
 # of any common thing that all such kernels would provide.
 
+# rtai-modules typically doesn't properly declare the architectures where
+# it works, so hardcode it...
+RTAI_DEV="$(apt-cache search -n rtai-modules | head -1 | awk '{print $1}')"
+RTAI_ARCHITECTURE="i386 amd64"
+if [ ! -z "$RTAI_DEV" ]; then
+    RTAI_DEV="$RTAI_DEV [i386], $RTAI_DEV [amd64]"
+fi
+
 while test $# -ne 0; do
     case "$1" in
-    sim|uspace|noauto) echo "$1 is accepted for compatibility, but ignored";;
+    noauto) BUILD_AUTO=false ;;
+    rtai) BUILD_RTAI=true ;;
+    rtai=*) BUILD_RTAI=true; RTAI_DEV=${1#rtai=} ;;
     no-docs) unset ENABLE_BUILD_DOCUMENTATION ;;
-    *) echo 1>&2 "Unknown option: $1"; exit 99 ;;
+    *) echo 1>&2 "Unknown feature: $1"; exit 99 ;;
     esac
     shift
 done
@@ -104,8 +162,15 @@ case $DISTRIB_NAME in
         DEBHELPER="debhelper-compat (= 13)"
         ;;
     Ubuntu-20.*)
+        DOC_DEPENDS="$DOC_DEPENDS, asciidoc-dblatex"
+        YAPPS_RUNTIME="yapps2"
         ;;
     Debian-10|Debian-10.*|Raspbian-10|Raspbian-10.*)
+        DOC_DEPENDS="$DOC_DEPENDS, asciidoc-dblatex"
+        PYTHON_GST=python-gst-1.0,gstreamer1.0-plugins-base
+        EXTRA_BUILD=python-yapps
+        YAPPS_RUNTIME="python-yapps"
+        STANDARDS_VERSION="3.9.8"
         ;;
     *)
         echo "unknown distribution: $DISTRIB_NAME"
@@ -114,23 +179,45 @@ case $DISTRIB_NAME in
         ;;
 esac
 
-TARGET=uspace
+TARGET_EXTRA=
 MAIN_PACKAGE_NAME=linuxcnc
 OTHER_MAIN_PACKAGE_NAME=linuxcnc-uspace
 EXTRA_RECOMMENDS=hostmot2-firmware-all
-MODULE_PATH=usr/lib/linuxcnc/modules
-MODULE_EXT=.so
-KERNEL_DEPENDS=libudev-dev,iptables
-KERNEL_DEPENDS_BUILD=libudev-dev
-KERNEL_HEADERS=
-KERNEL_VERSION=uspace
-MODUTILS_DEPENDS=
-DISTRIB_NAME=uspace-$DISTRIB_NAME
-MAIN_PACKAGE_NAME=linuxcnc-uspace
-OTHER_MAIN_PACKAGE_NAME=linuxcnc
-
-EXTRA_RECOMMENDS="$EXTRA_RECOMMENDS, linux-image-rt-amd64 [linux-amd64], linux-image-rt-686-pae [linux-i386]"
-CONFIGURE_REALTIME_ARG=--with-realtime=uspace
+case $TARGET in
+    uspace|sim)
+        if $BUILD_AUTO; then
+            if test ! -z "$RTAI_DEV"; then
+                BUILD_RTAI=true
+            fi
+        fi
+
+        if $BUILD_RTAI; then
+            EXTRA_BUILD="$EXTRA_BUILD,$RTAI_DEV"
+            TARGET_EXTRA="$TARGET_EXTRA+rtai"
+        fi
+
+	TARGET=uspace
+        MODULE_PATH=usr/lib/linuxcnc/modules
+	MODULE_EXT=.so
+	KERNEL_DEPENDS=libudev-dev,iptables
+	KERNEL_HEADERS=
+	KERNEL_VERSION=uspace
+        MODUTILS_DEPENDS=
+	DRIVERS=
+        EXTRA_FILES="usr/bin/rtapi_app"
+	DISTRIB_NAME=uspace-$DISTRIB_NAME
+	MAIN_PACKAGE_NAME=linuxcnc-uspace
+        OTHER_MAIN_PACKAGE_NAME=linuxcnc
+
+        EXTRA_RECOMMENDS="$EXTRA_RECOMMENDS, linux-image-rt-amd64 [linux-amd64]"
+        CONFIGURE_REALTIME_ARG=--with-realtime=uspace
+    ;;
+    4.19.*-rtai-*)
+        CONFIGURE_REALTIME_ARG=--with-realtime=/usr/realtime-$KERNEL_VERSION
+    ;;
+    *)
+	echo "your kernel '$TARGET' is not known. There might be needed dependencies which won't get set automatically."
+esac
 
 subst () {
 sed \
@@ -160,7 +247,6 @@ sed \
     -e "s#@TARGET@#$TARGET#g" \
     -e "s#@CONFIGURE_REALTIME_ARG@#$CONFIGURE_REALTIME_ARG#g" \
     -e "s#@TCLTK_VERSION@#$TCLTK_VERSION#g" \
-    -e "s#@XENOMAI_ARCHITECTURE@#$XENOMAI_ARCHITECTURE#g" \
     -e "s|@YAPPS_RUNTIME@|$YAPPS_RUNTIME|g" \
     -e "s#@ENABLE_BUILD_DOCUMENTATION@#$ENABLE_BUILD_DOCUMENTATION#g" \
     -e '/^\s*,\s*$/d' \
@@ -175,11 +261,25 @@ fi
 
 subst control.top.in > control
 
+if [ "$TARGET" == "uspace" ]; then
+    if $BUILD_RTAI; then
+        echo >> control
+        subst control.uspace-rtai.in >> control
+        subst linuxcnc-uspace-rtai.files.in > linuxcnc-uspace-rtai.files
+    fi
+fi
+
 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
+if [ "$TARGET" == "uspace" ]; then
+    cp linuxcnc-dev.files.in linuxcnc-uspace-dev.files
+else
+    cp linuxcnc-dev.files.in linuxcnc-dev.files
+    echo "$MODULE_PATH/Module.symvers" >> linuxcnc-dev.files
+fi
+
+subst rules.in > rules; chmod +x rules
 
 subst rules.in > rules
 chmod +x rules
@@ -190,4 +290,4 @@ fi
 
 
 rm -f ../build-stamp
-echo "successfully configured for '$DISTRIB_NAME'.."
+echo "successfully configured for '$DISTRIB_NAME'-'$TARGET$TARGET_EXTRA'.."
diff --git a/debian/linuxcnc-uspace-rtai.files.in b/debian/linuxcnc-uspace-rtai.files.in
new file mode 100644
index 0000000000..0b05b4f794
--- /dev/null
+++ b/debian/linuxcnc-uspace-rtai.files.in
@@ -0,0 +1 @@
+/usr/lib/libuspace-rtai.so.0
-- 
2.30.2
debian/configure:重新添加对 RTAI 的支持 #2052
合作者

你需要什么帮助?

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者
NTULINUX 评论了 2022 年 10 月 11 日  

我在添加 RTAI 支持时遇到问题。如果你应用那个补丁,你能至少让我知道我有多接近和任何指示吗?我也不知道调用 debian 配置脚本来构建 RTAI 的语法是什么。

我认为我们已经取消了 linuxcnc-dev.files.in linuxcnc-uspace-dev.files ?不确定,但它说:

没有这样的文件:linuxcnc-dev.files.in

debian/configure:重新添加对 RTAI 的支持 #2052
合作者

如果您被引导进入 RTAI 内核,那么要配置 RTAI,那么它是

./debian/配置-r

我可能会找时间试试你的补丁,但我现在几乎连个人电子邮件都跟不上了。

debian/configure:重新添加对 RTAI 的支持 #2052
合作者
彼得赖因霍尔特森 评论了 2022 年 11 月 16 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052
合作者

我没试过,但我的感觉是它至少需要内核头文件。

debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者

是的,你需要标题。-r看起来像它使用uname -r,所以你需要使用那个$P [kernel-version]

debian/configure:重新添加对 RTAI 的支持 #2052
合作者
彼得赖因霍尔特森 评论了 2022 年 11 月 16 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052
贡献者
筒仓 评论了 2022 年 11 月 16 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052
合作者
彼得赖因霍尔特森 评论了 2022 年 11 月 16 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052
贡献者
筒仓 评论了 2022 年 11 月 16 日 通过电子邮件
debian/configure:重新添加对 RTAI 的支持 #2052
贡献者作者

如果构建系统发布runtests,那么它可以确保 RTAI 工作正常。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

5人参加
debian/configure:重新添加对 RTAI 的支持 #2052debian/configure:重新添加对 RTAI 的支持 #2052debian/configure:重新添加对 RTAI 的支持 #2052debian/configure:重新添加对 RTAI 的支持 #2052debian/configure:重新添加对 RTAI 的支持 #2052

喜欢 (0)