开源改变世界!!

使用 –with-python=python3 构建 RIP 时出错 #1188

推推 grbl 2年前 (2023-01-30) 121次浏览
关闭
gcanzalo 打开了这个问题 2021 年 6 月 15 日 · 23条评论
关闭

使用 –with-python=python3 构建 RIP 时出错#1188

gcanzalo 打开了这个问题 2021 年 6 月 15 日 · 23条评论

注释

使用 --with-python=python3 构建 RIP 时出错 #1188

尝试使用以下命令为 rtai 构建 RIP:

make clean
./autogen.sh
./configure --with-python=python3
make

产生以下内容:

CC [M]  /home/jerry/src/linuxcnc/src/objects/hal/drivers/pcl720.o
LD [M]  /home/jerry/src/linuxcnc/src/pcl720.o
CC [M]  /home/jerry/src/linuxcnc/src/objects/hal/drivers/mesa_uart.o
LD [M]  /home/jerry/src/linuxcnc/src/mesa_uart.o
CC [M]  /home/jerry/src/linuxcnc/src/objects/hal/drivers/pluto_step.o
Traceback (most recent call last):
File "modsilent.py", line 14, in <module>
  m = duplicate_warning.match(line)
TypeError: cannot use a string pattern on a bytes-like object
make: *** [Makefile:501: modules] Error 1
使用 --with-python=python3 构建 RIP 时出错 #1188
作者

删除我的本地存储库并再次克隆它。现在收到此错误:

Preprocessing pluto_servo.comp
/usr/bin/python3 hal/drivers/rbf2h.py -g \
    -c "This is a component of pluto_servo, a PWM servo driver and" \
    -c "quadrature counter for emc2" \
    -c "Copyright (C) 2006, 2007 Jeff Epler" \
    hal/drivers/pluto_servo_firmware/pluto_servo.rbf > hal/drivers/pluto_servo_rbf.h
Traceback (most recent call last):
  File "hal/drivers/rbf2h.py", line 60, in <module>
    h = open(args[0]).read();
  File "/usr/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
make: *** [hal/drivers/Submakefile:2: hal/drivers/pluto_servo_rbf.h] Error 1

我在使用 python3 支持进行编译时做错了什么吗?

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

不,这就是这样做的方法。您使用哪个发行版?

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

德比安 10

uname -a
Linux proto 4.14.174-rtai-amd64 #3 SMP PREEMPT Wed Apr 22 12:38:32 BST 2020 x86_64 GNU/Linux

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

我创建了一个分支 rtai-python3 可能会解决问题,你能试试吗?我没有任何可以运行 rtai 的系统。

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

我可以在这里重现这个问题。这是一个开始。

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

@gcanzalo 试试这个分支:#1189

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

感谢您的快速回复。我不是编码员,也不是很熟悉 git,但我认为我检查了正确的分支。初始构建产生了以下内容:

Traceback (most recent call last):
  File "hal/drivers/rbf2h.py", line 64, in <module>
    print("%3d," % ord(c), end=' ')
TypeError: ord() expected string of length 1, but int found
make: *** [hal/drivers/Submakefile:2: hal/drivers/pluto_servo_rbf.h] Error 1

我删除了 ord() 并再次构建,产生了这个:

构建模块,第 2 阶段
。MODPOST 177 个模块追溯
(最近调用最后):
文件“modsilent.py”,第 14 行,在
m = duplicate_warning.match(line)类型
错误:不能在类字节对象上使用字符串
模式: *** [Makefile:501: 模块] 错误 1

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

您似乎没有从 jepler 获得最新更新。这并不奇怪,因为它还没有被合并……

我刚刚合并了,你能再试一次吗?

git reset –hard origin/master-gtk3
git pull
make clean
./autogen.sh
./configure –with-python=python3
make

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

@andypugh:

同样的错误:

回溯(最近调用最后):
文件“modsilent.py”,第 14 行,在
m = duplicate_warning.match(line)类型
错误:不能在类似字节的对象上使用字符串模式
make:*** [Makefile:501:模块]错误1

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

“ord()”问题已解决,我想这是下一个要看的问题。

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

看起来像

 m = duplicate_warning.match(line.decode('utf-8'))

可能会修复它。

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

明白了!谢谢!

这里有什么需要担心的吗?

运行测试:236 个测试运行,233 个成功,3 个失败 + 0 个预期
失败:
tests/pyhal
tests/realtime-math
tests/remap/remap-io

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

你可以 cd 进入测试,然后运行 ​​test.sh 它会给出详细的错误

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

皮哈尔:

./test
insmod: ERROR: could not insert module /usr/realtime-4.14.174-rtai-amd64/modules/rtai_hal.ko: File exists
HAL: ERROR: duplicate signal 'testSig-S'
Traceback (most recent call last):
  File "./test", line 33, in <module>
    c.sigNew("testSig-S", halType.SIGNED)
  File "/home/jerry/src/linuxcnc/lib/python/pyhal.py", line 230, in sigNew
    raise HalException('failed to create signal "{0}" with code {1}'.format(name, result))
pyhal.HalException: failed to create signal "testSig-S" with code -22

重新映射/重新映射 io:

bash test.sh
**********  Testing python remaps
----Testing M62/M63 digital output w/motion----
cmd: "M62 P1"
    M62 remapping pre: motion dout0=0; hal d_out=0
    M62 remapping post: motion dout0=1; hal d_out=1
cmd: "M63 P1"
    M63 remapping pre: motion dout0=1; hal d_out=1
    M63 remapping post: motion dout0=0; hal d_out=0
cmd: "M62 P1"
    M62 remapping pre: motion dout0=0; hal d_out=0
    M62 remapping post: motion dout0=1; hal d_out=1
cmd: "M63 P1"
    M63 remapping pre: motion dout0=1; hal d_out=1
    M63 remapping post: motion dout0=0; hal d_out=0
----Testing M64/M65 digital output, immediate----
cmd: "M64 P1"
    M64 remapping pre: motion dout0=0; hal d_out=0
    M64 remapping post: motion dout0=1; hal d_out=1
cmd: "M65 P1"
    M65 remapping pre: motion dout0=1; hal d_out=1
    M65 remapping post: motion dout0=0; hal d_out=0
cmd: "M64 P1"
    M64 remapping pre: motion dout0=0; hal d_out=0
    M64 remapping post: motion dout0=1; hal d_out=1
cmd: "M65 P1"
    M65 remapping pre: motion dout0=1; hal d_out=1
    M65 remapping post: motion dout0=0; hal d_out=0
----Testing M66 digital input----
cmd: "M66 P1"; input: 1.0000
    M66 remapping pre:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
    M66 remapping post:  5399=1.000000; 100=1.000000; ain0=0.00; din0=1
cmd: "M66 P1"; input: 0.0000
    M66 remapping pre:  5399=1.000000; 100=1.000000; ain0=0.00; din0=1
    M66 remapping post:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
----Testing M66 analog input----
cmd: "M66 E1 L0"; input: 42.1300
    M66 remapping pre:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
    M66 remapping post:  5399=42.130000; 100=42.130000; ain0=42.13; din0=0
cmd: "M66 E1 L0"; input: -13.4200
    M66 remapping pre:  5399=42.130000; 100=42.130000; ain0=42.13; din0=0
    M66 remapping post:  5399=-13.420000; 100=-13.420000; ain0=-13.42; din0=0
----Testing M67 analog output w/motion----
cmd: "M67 E1 Q42.13"
    M67 remapping pre: motion aout0=0.00; hal a_out=0.00
    M67 remapping post: motion aout0=42.13; hal a_out=42.13
cmd: "M67 E1 Q-13.42"
    M67 remapping pre: motion aout0=42.13; hal a_out=42.13
    M67 remapping post: motion aout0=-13.42; hal a_out=-13.42
cmd: "M67 E1 Q0.00"
    M67 remapping pre: motion aout0=-13.42; hal a_out=-13.42
    M67 remapping post: motion aout0=0.00; hal a_out=0.00
----Testing M68 analog output, immediate----
cmd: "M68 E1 Q42.13"
    M68 remapping pre: motion aout0=0.00; hal a_out=0.00
    M68 remapping post: motion aout0=42.13; hal a_out=42.13
cmd: "M68 E1 Q-13.42"
    M68 remapping pre: motion aout0=42.13; hal a_out=42.13
    M68 remapping post: motion aout0=-13.42; hal a_out=-13.42
cmd: "M68 E1 Q0.00"
    M68 remapping pre: motion aout0=-13.42; hal a_out=-13.42
    M68 remapping post: motion aout0=0.00; hal a_out=0.00

**********  Testing ngc remaps
----Testing M62/M63 digital output w/motion----
cmd: "M62 P1"
    M62 remapping pre: motion dout0=0; hal d_out=0
    M62 remapping post: motion dout0=1; hal d_out=1
cmd: "M63 P1"
    M63 remapping pre: motion dout0=1; hal d_out=1
    M63 remapping post: motion dout0=0; hal d_out=0
cmd: "M62 P1"
    M62 remapping pre: motion dout0=0; hal d_out=0
    M62 remapping post: motion dout0=1; hal d_out=1
cmd: "M63 P1"
    M63 remapping pre: motion dout0=1; hal d_out=1
    M63 remapping post: motion dout0=0; hal d_out=0
----Testing M64/M65 digital output, immediate----
cmd: "M64 P1"
    M64 remapping pre: motion dout0=0; hal d_out=0
    M64 remapping post: motion dout0=1; hal d_out=1
cmd: "M65 P1"
    M65 remapping pre: motion dout0=1; hal d_out=1
    M65 remapping post: motion dout0=0; hal d_out=0
cmd: "M64 P1"
    M64 remapping pre: motion dout0=0; hal d_out=0
    M64 remapping post: motion dout0=1; hal d_out=1
cmd: "M65 P1"
    M65 remapping pre: motion dout0=1; hal d_out=1
    M65 remapping post: motion dout0=0; hal d_out=0
----Testing M66 digital input----
cmd: "M66 P1"; input: 1.0000
    M66 remapping pre:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
    M66 remapping post:  5399=1.000000; 100=1.000000; ain0=0.00; din0=1
cmd: "M66 P1"; input: 0.0000
    M66 remapping pre:  5399=1.000000; 100=1.000000; ain0=0.00; din0=1
    M66 remapping post:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
----Testing M66 analog input----
cmd: "M66 E1 L0"; input: 42.1300
    M66 remapping pre:  5399=0.000000; 100=0.000000; ain0=0.00; din0=0
    M66 remapping post:  5399=42.130000; 100=42.130000; ain0=42.13; din0=0
cmd: "M66 E1 L0"; input: -13.4200
    M66 remapping pre:  5399=42.130000; 100=42.130000; ain0=42.13; din0=0
    M66 remapping post:  5399=-13.420000; 100=-13.420000; ain0=-13.42; din0=0
----Testing M67 analog output w/motion----
cmd: "M67 E1 Q42.13"
    M67 remapping pre: motion aout0=0.00; hal a_out=0.00
    M67 remapping post: motion aout0=42.13; hal a_out=42.13
cmd: "M67 E1 Q-13.42"
    M67 remapping pre: motion aout0=42.13; hal a_out=42.13
    M67 remapping post: motion aout0=-13.42; hal a_out=-13.42
cmd: "M67 E1 Q0.00"
    M67 remapping pre: motion aout0=-13.42; hal a_out=-13.42
    M67 remapping post: motion aout0=0.00; hal a_out=0.00
----Testing M68 analog output, immediate----
cmd: "M68 E1 Q42.13"
    M68 remapping pre: motion aout0=0.00; hal a_out=0.00
    M68 remapping post: motion aout0=42.13; hal a_out=42.13
cmd: "M68 E1 Q-13.42"
    M68 remapping pre: motion aout0=42.13; hal a_out=42.13
    M68 remapping post: motion aout0=-13.42; hal a_out=-13.42
cmd: "M68 E1 Q0.00"
    M68 remapping pre: motion aout0=-13.42; hal a_out=-13.42
    M68 remapping post: motion aout0=0.00; hal a_out=0.00

实时数学:

bash test.sh
+ halcompile --install rtmath.comp
make KBUILD_EXTRA_SYMBOLS=/home/jerry/src/linuxcnc/rtlib/Module.symvers -C /usr/src/linux-headers-4.14.174-rtai-amd64 SUBDIRS=`pwd` CC=gcc V=0 modules
make[1]: Entering directory '/usr/src/linux-headers-4.14.174-rtai-amd64'
  CC [M]  /tmp/tmpdy06ivl6/rtmath.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/tmpdy06ivl6/rtmath.mod.o
  LD [M]  /tmp/tmpdy06ivl6/rtmath.ko
make[1]: Leaving directory '/usr/src/linux-headers-4.14.174-rtai-amd64'
cp rtmath.ko /home/jerry/src/linuxcnc/rtlib/
+ halrun dotest.hal
使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

这里有什么需要担心的吗?
运行测试:236 次测试运行,233 次成功,3 次失败 + 0 次预期

我认为这是我们需要担心的事情,但你应该可以走了:-)

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

把它连接到我的机器上,并在 lib/python/python_event 中遇到了更多错误。我在该文件中编辑了以下行:

第 42 行:a = fcntl.ioctl(f, SZ(EVIOCGBIT+EV[o], sz), ‘\0’ * int( ((sz+7)/8**) ))
第 45 行:[删除]
行793: if name.find(pattern
 .encode(‘utf-8’) ) != -1 or fnmatch.fnmatch(name, pattern .encode(‘utf-8’)**):

现在 LinuxCNC 抛出错误:

在 /home/jerry/src/linuxcnc/rtlib 中找不到模块 ‘hm2_eth’

这确实不存在,但我的 Mesa 7i96 需要…

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

啊。您不能将 hm2_eth 与内核实时(默认 RTAI)一起使用 您需要配置 –with-realtime=uspace
(这实际上可能与 RTAI 一起使用,因为 RTAI 有一个用户空间模式。在您寻找抢占RT内核)

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

哦。我一直在抢占并遇到短途旅行问题,因此对 RTAI 感兴趣。这是一个严重的无赖。我将尝试在 RTAI 中进行抢占构建…

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

你是说 uspace 在 RTAI 中构建?

使用 --with-python=python3 构建 RIP 时出错 #1188
成员

有一种“uspace”的变体可以实时使用 rtai(有时称为 LXRT),但它也不适合 hm2_eth。只有使用 PREEMPT RT 内核和 POSIX/pthreads API 的那个才适合 hm2_eth。

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

@andypugh: 是的,对不起,我不清楚。

@jepler: 那么在 RTAI 中尝试 uspace 版本没有意义吗?

只是好奇为什么 RTAI 和以太网不能相处?是不可逾越的吗?

使用 --with-python=python3 构建 RIP 时出错 #1188
合作者

简短的回答是 rtai 在 linux 内核“之下”运行,并且不能使用 Linux 中存在的任何驱动程序。有 rtai 的以太网扩展,但它们需要特殊的驱动程序,而 linuxcnc 不使用它。
rt-preempt 就像任何普通线程一样运行,并且可以像其他任何东西一样使用以太网。它应该提供良好的性能,如果您有问题它可能是不合适的硬件或某些 bios 设置。

不幸的是,目前在任何地方都没有关于如何使用 rt-preempt 获得良好性能的良好文档。
wiki 上的大多数内容都非常过时。

这个问题可以关闭吗?

使用 --with-python=python3 构建 RIP 时出错 #1188
作者

是的。谢谢大家的帮助。