I have a local "build machine" that tracks & rebuilds FreeBSD (stable/10 & head) daily , from a private SVN mirror. While I also update its installed ports daily, there is very little activity on that front, as the build machine has few ports actually installed. (The way I used the build machine, I would NFS-mount its /usr/src & /usr/obj read-only from a couple of "target" machines every Sunday, and thus update the target machines -- which worked a treat for base FreeBSD. But I have been updating the installed ports on all machines on themselves (using portmaster), based on an NFS-mounted /usr/ports (that is a working copy updated from the local private SVN mirror).
One of the reasons I am doing things from my local private SVN mirror is to enforce consistency: I only update my mirror overnight; until I update it again, it presents a consistent image of the state of the repositories in question.
Historically, the build machine was both rather slow and very space-constrained (total 80GB disk). A couple of weeks ago, I finally retired that machine in favor of a shiny new machine that is quite a bit faster, and has plenty of disk space.
I would now like to have the new build machine also build the ports for the target machines; I thought that this seemed to be a task ideally suited to poudriere.
But I'm finding the poudriere.conf a bit confusing:
The problem I'm trying to solve (by using poudriere) is that, while my updates to base FreeBSD are simple, short, and straightforward, the follow-on ports updates (for the "target" machines, at least) can take hours (during which I have services such as email delivery disabled, as that part of my infrastructure depends (in part) on ports (which may be in the process of being updated). The build machine, however, is not directly involved in the "production" activities -- so if it is unable to do anything but build ports for a few hours, that's not a big deal.
Is there a way to persuade poudriere to do this? Is there some other approach I might consider?
Thanks!
david
One of the reasons I am doing things from my local private SVN mirror is to enforce consistency: I only update my mirror overnight; until I update it again, it presents a consistent image of the state of the repositories in question.
Historically, the build machine was both rather slow and very space-constrained (total 80GB disk). A couple of weeks ago, I finally retired that machine in favor of a shiny new machine that is quite a bit faster, and has plenty of disk space.
I would now like to have the new build machine also build the ports for the target machines; I thought that this seemed to be a task ideally suited to poudriere.
But I'm finding the poudriere.conf a bit confusing:
- I wish to use my mirror of the SVN repositories, which are accessible from the build machine:
Code:freebeast(10.2-P)[2] ls -F /repo/svn/freebsd/ doc/ ports/ src/
- Perhaps more to the point, I wish to use my existing SVN working copies (such as /usr/src and /usr/ports).
- And I'd prefer to use my just-built userland, as well (for the jails) -- after all, I will have just built it before I try to build any ports, and I know that userland is consistent with my working copy and with the running system, because that 's the way I do things. And I have no confidence that something fetched from somewhere else will match what I just built or with my sources or the current state of my mirrors.
make installworld DESTDIR=...
But I don't see a way to do that.The problem I'm trying to solve (by using poudriere) is that, while my updates to base FreeBSD are simple, short, and straightforward, the follow-on ports updates (for the "target" machines, at least) can take hours (during which I have services such as email delivery disabled, as that part of my infrastructure depends (in part) on ports (which may be in the process of being updated). The build machine, however, is not directly involved in the "production" activities -- so if it is unable to do anything but build ports for a few hours, that's not a big deal.
Is there a way to persuade poudriere to do this? Is there some other approach I might consider?
Thanks!
david