Ticket #14796 (pike): please commit

Jordan K. Hubbard jkh at apple.com
Mon Mar 31 09:36:36 PDT 2008


On Mar 31, 2008, at 4:32 AM, Guido Soranzio wrote:

> We are in serious need of:
>
> 1. An open repository where to exchange precompiled archives in
>   order to avoid the lengthy compilations of the dependencies.

One might argue instead that we are in serious need of a binary  
packages collection, any package from which could/should be detectable  
by the dependency checking machinery and, if suitable, used in lieu of  
a build.   That would kill two birds with one stone - make development  
easier and also give end-users what they've wanted since the project  
was announced.

> 2. A buildbot on a central server which automatically builds
>   and tests the proposed portfiles in a chroot'ed environment.

That would be nice (and, given a centralized package building/hosting  
structure, would also give us this for all the existing ports as a  
side-effect), but the project has also claimed to want such a thing  
for a long time without actually being motivated enough to create the  
software for driving such a buildbot, so the actual need remains  
debatable.   In lieu of this possible future development, I think it  
would be useful enough just to be able to turn any individual machine  
into a "buildbot" for short periods of time since disk space and CPU  
horsepower are getting cheaper and cheaper and I doubt even 20% of Mac  
users these days really push their machines to the limit.   It could  
be something as simple as this to start:

port chroot-create /tmp/mychroot [optional target describing flags]
while <my-port-doesn't-work>; do
	port chroot-exec target portname|portfile
	<edit>
done
port chroot-destroy /tmp/mychroot

The mechanics of chroot-create wouldn't even be particularly complex,  
but creating an effective chroot environment on MacOSX is a little  
harder than on less dynamically linked/less complex systems like Linux  
and FreeBSD and requires knowledge of what files to copy in as well as  
what specialized filesystems to mount in order to keep, among other  
things, Carbon apps from blowing up (see macports/base/portmgr/ 
packaging/buildall.sh for an earlier attempt to do this for each port  
in the collection as a regression test).  The chroot-destroy command  
would, of course, be responsible for unmounting stuff and properly  
nuking the chroot environment again.

Either way, you've provided a nice abstraction boundary for the  
developer and can refine the definition of "chroot" as various edge  
cases are found without having to disseminate updated instructions to  
everyone.  I probably updated my chroot definition about 20 times  
while I was creating that buildall.sh script I just mentioned and I  
still don't think I got it totally right in terms of "minimum  
functional footprint."

> 3. A "testing" branch for the beta-testers who would like to help
>   transitioning to development releases without breaking
>   the main trunk (i.e. Gnome 2.22, Python 3.0, KDE 4.0, ...).

We could do that, or we could do what many other projects seem to do,  
which is to get most people living on the -stable branch, where the  
releases also come from, and get trunk back to the purpose of doing  
just that sort of testing.  Developers shouldn't be so terrified of  
breaking trunk, assuming that they're also willing to be responsible  
enough to quickly fix what they break (and, if they don't, there's the  
back-out rule).

- Jordan



More information about the macports-dev mailing list