On Thu, Mar 26, 2020 at 01:41:40PM +0000, Ken Moffat via blfs-dev wrote: [snip who replied to whom]
Here is what I did for testing. > I'll reply in a while with what I have now tested (after I've > assembled my notes). I've gone with Bruce's suggestion to (only) > mount a tmpfs on /run when building in chroot - I think xry111 has > identified the issue (bind mounts are not recursive). > More likely, it is the fact that in BLFS it is a symlink to /run/shm. Anyway, here is what I did and the errors. Sorry, it is long. I'll post my proposed changes as a follow-up. I think that in the past I noted that /dev/shm existed in chroot, and since I don't often build these packages in chroot I assumed that part was OK. The testing: =========== For each package: mount a system at /mnt/lfs (host is 9.1, chroot is LFS from 20200127 with BLFS from then and later) bind /dev /proc /sys /sources /home chroot su - lfs Attempt to build as user lfs. ALL of these mozilla-derived packages failed. On failure: note the message exit back to root (cannot su, not a tty) mount -t tmpfs /run su - lfs Successful retry with DESTDIR install review contents of /run exit back to root umount /run review contents of /run exit chroot umount /mnt/lfs and everything mounted on it : mount | grep lfs | awk '{ print $3 }' | tac | xargs umount repeat for next package. mozjs60: ------- (I initially tried strace during the configure, but I could not find anything useful in the enormous output.) Failed (as they all did) while creating config.status - Traceback (most recent call last): File "../js/src/../../configure.py", line 127, in <module> sys.exit(main(sys.argv)) File "../js/src/../../configure.py", line 34, in main return config_status(config) File "../js/src/../../configure.py", line 122, in config_status return config_status(args=[], **encode(sanitized_config, encoding)) File "/home/lfs/mozjs-60.8.0/python/mozbuild/mozbuild/config_status.py", line 133, in config_status reader = BuildReader(env) File "/home/lfs/mozjs-60.8.0/python/mozbuild/mozbuild/frontend/reader.py", line 868, in __init__ self._gyp_worker_pool = ProcessPoolExecutor(max_workers=max_workers) File "/home/lfs/mozjs-60.8.0/third_party/python/futures/concurrent/futures/process.py", line 285, in __init__ EXTRA_QUEUED_CALLS) File "/usr/lib/python2.7/multiprocessing/__init__.py", line 218, in Queue return Queue(maxsize) File "/usr/lib/python2.7/multiprocessing/queues.py", line 63, in __init__ self._rlock = Lock() File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 147, in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1) File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__ sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue) OSError: [Errno 38] Function not implemented After successful build, /run was empty, but after I had umounted it, while still in chroot I looked again : /run/mount and /run/shm existed. seamonkey: --------- The traceback ends: File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__ sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue) OSError: [Errno 38] Function not implemented *** Fix above errors and then restart with\ "make -f client.mk build" make[1]: *** [/home/lfs/seamonkey-2.53.1/client.mk:362: configure] Error 1 make[1]: Leaving directory '/home/lfs/seamonkey-2.53.1' make: *** [client.mk:374: /home/lfs/seamonkey-2.53.1/obj-x86_64-pc-linux-gnu/Makefile] Error 2 Looking at /run, empty both before umounting and afterwards thunderbird: ----------- 0:18.73 File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__ 0:18.73 sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue) 0:18.73 OSError: [Errno 38] Function not implemented 0:18.79 *** Fix above errors and then restart with\ 0:18.79 "./mach build" 0:18.79 make: *** [client.mk:115: configure] Error 1 NB, client.mk is invoked from ./mach. Again. /run seemed to be empty even after unmounting. firefox: ------- 0:12.67 File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__ 0:12.67 sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue) 0:12.67 OSError: [Errno 38] Function not implemented with message about fixing, restart with ./mach build [snipped, messages like thunderbird ] After umount, /run contained /run/mount (only). JS68: ---- File "/usr/lib/python3.8/multiprocessing/synchronize.py", line 57, in __init__ sl = self._semlock = _multiprocessing.SemLock( OSError: [Errno 38] Function not implemented Again, after umount /run contained /run/mount (only). Tested, but does NOT require this - node-js: =========================================== When I first encountered this problem (years ago, in firefox) for some reason I thought it would be a good idea to rebuild node-js although that had not failed to configure. But instead I have now confirmed that it builds successfully in chroot without a tmpfs on /run. My limited understanding of python multiprocessing is that it tests at runtime, therefore a normal run after everything has been built will not be affected. To follow: planned Note copy member. ĸen -- When alle is ſayed and all is done, ye must chooſe your faces wisely, for soon enouff ye will be playing with fyre." The Nice and Accurate Prophecies of Agnes Nutter, Prophecy 5004 -- http://lists.linuxfromscratch.org/listinfo/blfs-dev FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page