Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Dec 2014 14:25:13 -0800
From:      Craig Rodrigues <rodrigc@FreeBSD.org>
To:        Alfred Perlstein <bright@mu.org>
Cc:        FreeBSD Ports <ports@freebsd.org>, Alfred Perlstein <alfred@freebsd.org>, Bryan Drewery <bdrewery@freebsd.org>
Subject:   Re: poudriere: bulk.sh: cpdup: Permission denied
Message-ID:  <CAG=rPVeQP9egZkcOY2Sa5z-vF%2Bd_xdaFK7shDzskWZwHAhvHAw@mail.gmail.com>
In-Reply-To: <59D51E6C-A7CF-4443-A384-CC7F442A94FF@mu.org>
References:  <548F2678.7040903@freebsd.org> <CAG=rPVeoGLaDX1cEp9sHMOM9PmC36x1ztuaRuTgJvGU6T13MhQ@mail.gmail.com> <59D51E6C-A7CF-4443-A384-CC7F442A94FF@mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 15, 2014 at 1:50 PM, Alfred Perlstein <bright@mu.org> wrote:

>
> Spent some time trying to do things using PS4 variable but it was for
> naught because $LINENO and $0 don't work properly in PS4 as far as I can
> tell in our version of Bourne shell. Bash on the other hand seems to have
> better support for expanding useful things into PS4, however it's still
> very poor as compared to the facilities of let's say Python or Ruby or
> probably even Javascript.
>
> I hear now that poudriere is being migrated to C of all things which IMO
> is a huge mistake. Almost as bad as having it in shell.
>


I'm not 100% sure of the history, but I think that poudriere was originally
intended to replace the scripts that the
portmgr team used to build the official FreeBSD ports tree.  It was written
to not depend on any other ports
or scripting language not in the FreeBSD base system to avoid breaking in
case the ports broke.
Most of it is in Bourne shell, but cpdup is in C for performance.  As it is
right now, poudriere I think meets the needs
of the portmgr team, with those constraints.

poudriere has become a generally useful tool for anyone (not just portmgr)
to build the FreeBSD ports tree,
because of its intimate knowledge of the FreeBSD ports Makefile rules and
dependencies.  That's why I integrated it into
the FreeNAS build, which built around 200 ports.
For the general user, having poudriere (or a similar tool) in another high
level language would be perfectly fine.
If there was a Python, ruby, node.js version of poudriere that worked, I
would have integrated it into the FreeNAS build, with no problem.

Lately, I have been building packages for Debian systems, and their build
scripts are a mix of
Python and bash scripts.  I've also been building packages for Homebrew on
MacOS X which is based on a Ruby build system.
While each system has its quirks, both systems do work and are actively
maintained, and life goes on.

It would definitely be possible to have a poudriere-like tool written in
another high-level language.
The implementation details of poudriere basically boils down to the
requirements and
personal preferences/biases of the people working on these tools.

--
Craig



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG=rPVeQP9egZkcOY2Sa5z-vF%2Bd_xdaFK7shDzskWZwHAhvHAw>