pkgsrc-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bob: colliding workdirs?
* On 2026-09-17 at 18:23 BST, Greg Troxel wrote:
I'm doing builds on multiple machines, and have noticed enough of a
trend to feel it's ok to ask about it.
My builds are building both py313 and py314, due to a bob
bug/missing-feature of not being able to specify the wanted versions
when foo/py-bar appears in pkgpaths.*
In multiple builds, I have had a bunch of failures, pyN-foo when the
build was wanting to build both py313-foo and py314-foo. Doing "bob
rebuild --all" they build ok, and logs make it look like a working
directory collision. Building in tmfps, sandboxes are separate, but if
building on "disk", they appear to all end up in the same place.
This could happen if you are sharing the same mount, rather than using a
per-sandbox directory. For example if you have:
/data/wrkobjdir
and that gets mounted into
/data/chroot/0/data/wrkobjdir
/data/chroot/1/data/wrkobjdir
/data/chroot/2/data/wrkobjdir
...
then yes, you will effectively be using the same directory for all build
areas, which will then collide as there are no per-version work areas:
$ for v in 314 313 ...; do
bmake WRKOBJDIR=/data/wrkobjdir PYTHON_VERSION_REQD=$v -v WRKDIR
done
/data/wrkobjdir/devel/py-wheel/work
/data/wrkobjdir/devel/py-wheel/work
...
So, I think bob either needs:
- locking of a pkgpath that uses "disk" against simultaneous builds
of multi-version programs, or
- per-sandbox subdirs in the disk tmp
but I also think it's reasonably likely I'm off here.
The default configs ship with an example of how to automatically create
a build user home directory per-sandbox that works without locking, and
I really don't want to go down a path of trying to make a shared mount
work using locks etc. I see this as a configuration error.
I do think it might be useful though to specify something like:
dynamic = {
wrkobjdir = {
disk = "/data/wrkobjdir/${bob_sandbox_id}"
so that each WRKOBJDIR is then under /data/wrkobjdir/0, 1, etc. I'm
almost certain this won't work as-is, I'll create an issue for it.
*I want only the default pyversion, like make package would get you,
unless the package is coded not to accept that, in which case I want
what the package would choose if I typed make package, and obviously
dependencies should all work like they do not under bob -- but this
message is about something else. (My impression is that this is
supported in pbulk.)
I don't recall anything specifically in pbulk to support this, but you
can get something close to this by setting e.g.
PYTHON_VERSION_REQD= ${PYTHON_VERSION_DEFAULT}
in your mk.conf, which I use in one of my limited builds.
--
Jonathan Perkin pkgsrc.smartos.org
Open Source Complete Cloud www.tritondatacenter.com
Home |
Main Index |
Thread Index |
Old Index