[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openbsd-ports
Subject:    new proot tool
From:       Marc Espie <espie () nerim ! net>
Date:       2016-04-30 9:24:52
Message-ID: 20160430092452.GA1949 () lain ! home
[Download RAW message or body]

I've been using dpb(1) chroot'd for a long time, using my own methods.

This is a first try at making things "simple".

Basically,

proot -B /build
should more or less do something sane, and then you can build ports in that
chroot.

If you don't pass any more options, it will copy enough files from your
current working system, and... that's more or less it!

Well, it doesn't deal with copying the ports tree, because most often you
will want to check it out, or copy it manually.


proot invokes a series of actions, you get to decide what you want...
see the manpage. The nitty-gritty options (makedev, ldconfig) you very
often won't touch.

What you want to do is:
- figure out if you want to get release copied over based on the system
locate databases, or based on a snapshot
- figure out whether you want to copy ports over, check it out thru cvs,
or do your own thing.
- provide specific variables if some of your ports tree lives in a funny
place.

For cluster-based builds, you have to figure out your nfs and file system
options first, then use proot.  It will try as much as possible not to
perturb  mounts within the chroot.

For performance reasons, it does hardlinks to files when it can, so that
it's cheap to clone chrooot (this will integrate with dpb later).

It will also give files to proper users. If you deal with an actual
ports tree, you want to give PORT_USER to you (proot wants to be run as root,
duh). The other stuff will automatically belong to _pfetch or _pbuild
accordingly.

Right now, I have a config file that just says:
chroot=/home/build
PORT_USER=espie
WRKOBJDIR=/pobj

and my local dpb host file is very short
PORT_USER=espie
DEFAULT chroot=/home/build
localhost


and this works.


On a slightly more complex setup, I have:

chroot=/build
preserve=/usr/ports
PORT_USER=espie
PORTSDIR=/source/ports
WRKOBJDIR=/tmp/pobj
LOCKDIR=/tmp/locks
PLIST_DB=/data/p/plist
DISTDIR=/distfiles
actions=unpopulate

with a dpb hosts file:
STARTUP=%p/cleanup
LOG_USER=espie
DEFAULT chroot=/build
localhost
openbsd-2
openbsd-3

(that setup has /build/source, /build/data/p, /build/distfiles as separate
filesystems that get exported thru NFS, and /build/tmp is an async fs
on every machine)

Note that you need to be fairly current. I did commit stuff to dpb(1) to make
sure it uses _pfetch/_pbuild by default, and there are more tweaks to come
yet...

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic