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

Reply via email to