we have in do_install_append in initscripts bbappend this replace commands: perl -i -pe 's:mount -a.+?$:mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev 2>/dev/null:' ${D}${sysconfdir}/init.d/mountall.sh perl -i -pe 's:(mount -a).*?$:$1:' ${D}${sysconfdir}/init.d/mountnfs.sh which causes pseudo abort and build fail. this error became in place after this oe-core commit: https://git.openembedded.org/openembedded-core/commit/?h=master-next&id=2db491d97da08d44ebd257f98489550a82a7935c how can/should be this error fixed?
CAan you clean the recipe and report if this is reproducible? If it is, please also, try to remove your <proj>/tmp directory? Richard is going to add a warning if this clean-up is needed.
wipeing out tmpdir, do_cleanall and build from scratch didnt work, same error exit 134 from 'perl -i -pe 's:mount -a.+?$:mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,g fs2,ceph -O no_netdev 2>/dev/null:' tmp/work/mips32el-oe-linux/initscripts/1.0-r155.7/image/etc/init.d/mountall.sh'
I ran perl under strace to see if it's doing something weird. Here is the relevant output: $ touch foo.txt; strace perl -i -pe 's:(mount -a).*?$:$1:' foo.txt openat(AT_FDCWD, "foo.txt", O_RDONLY) = 3 ioctl(3, TCGETS, 0x7fffde1209f0) = -1 ENOTTY (Inappropriate ioctl for device) lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 unlink("foo.txt") = 0 openat(AT_FDCWD, "foo.txt", O_WRONLY|O_CREAT|O_EXCL, 0600) = 4 ioctl(4, TCGETS, 0x7fffde1209f0) = -1 ENOTTY (Inappropriate ioctl for device) lseek(4, 0, SEEK_CUR) = 0 fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 fchmod(4, 0100644) = 0 read(3, "", 8192) = 0 close(4) = 0 close(3) = 0
I think Joshua ran that under perl 5.26.1 and I saw similar on my build machine where that do_install_append worked. I did find a machine with perl 5.30 on it which gave: openat(AT_FDCWD, "foo.txt", O_RDONLY|O_CLOEXEC) = 3 ioctl(3, TCGETS, 0x7ffe3b6def30) = -1 ENOTTY (Inappropriate ioctl for device) lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0 umask(0177) = 002 getpid() = 3242451 openat(AT_FDCWD, "XXCPEqW8", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 4 fcntl(4, F_GETFD) = 0x1 (flags FD_CLOEXEC) umask(002) = 0177 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 ioctl(4, TCGETS, 0x7ffe3b6defc0) = -1 ENOTTY (Inappropriate ioctl for device) lseek(4, 0, SEEK_CUR) = 0 fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 getpid() = 3242451 openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5 fstat(5, {st_mode=S_IFDIR|S_ISVTX|0777, st_size=978944, ...}) = 0 fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 fchmod(4, 0100664) = 0 brk(0x55aebdfc7000) = 0x55aebdfc7000 read(3, "", 8192) = 0 close(4) = 0 getpid() = 3242451 renameat(5, "XXCPEqW8", 5, "foo.txt") = 0 close(5) = 0 close(3) = 0 Which perl version is on the system from the original report?
I confirmed this is only an issue with perl 5.30 and does abort on that system. It looks like the: openat(AT_FDCWD, "XXCPEqW8", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 4 call isn't seen by pseudo. Running out of time to work out why today though.
Created attachment 4737 [details] Patch to pseudo which fixed the issue on my system
When I applied the attached patch to pseudo, this started working for me on my system with perl 5.30. Could you confirm if it works for you please?
I can confirm, works with provided patch. Thank You.
Thanks for testing. I've merged the fix into pseudo and master: http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=d446d8b818a49e66b72fccbd29328cdbf4294239