portmaster some_port vs. portmaster 'some_port*'

Ion-Mihai Tetcu itetcu at FreeBSD.org
Wed Jan 14 22:40:21 PST 2009


On Wed, 14 Jan 2009 14:11:04 -0800
Doug Barton <dougb at FreeBSD.org> wrote:

> Ion-Mihai Tetcu wrote:
> > Hi,
> > 
> > 
> > Maybe I'm not reading the man page correctly, but I would expect 
> > portmaster, if invoked with a wild-card, to:
> > - first update the dependencies of the ports matched by the
> > 'some_port*' it gets on the command line
> > - then to update the ports matched by said wild-card in dependency
> > order.
> 
> That's close to what actually happens. We actually have two issues
> here, so I'll address them separately.
> 
> When portmaster gets multiple ports on the command line (whether via a
> glob or via a list) the initial portmaster process acts like a task
> scheduler. The parent spawns new portmaster processes for each
> individual port and keeps track of the various issues such as
> dependencies already updated, etc. When all the ports listed have been
> updated the parent cleans up the temp files and exits.

Hmm, then can you please document this explicitly in the man page?

From my point of view it should also check the dependency relation
between whatever it gets after parsing the command line ( N ports, M
ports as a result of a wild-card, ...).

Else I'm afraid it is a nice way to self-foot-shooting.

> Thus, if you were to feed it a list like this:
> portmaster port1 dep1-of-port1 port2 dep2-of-port1
> it would do the configure phase on port1 which would unconditionally
> include the configure phases of dep1 and dep2 since they are on your
> list, as well as the configure phase for port2 of course. When the
> first child process (updating port1) exited the parent would see that
> dep1 has already been done and skip to port2, then it would see that
> dep2 was already done as well, and it would proceed to the build
> phase.
> 
> So, in theory there should have been no difference between your
> 2_ports and wildcars logs, but somehow portmaster acted properly in
> the first case, but thought everything was up to date in the second.
> That does look like a bug.
> 
> The other issue is that claws-mail failed to configure. Whether that's
> because all the dependencies were not up to date or because of a
> problem with that port, I do not know.

Well, it is a problem in the Makefile more or less. libetpan comes from
LIBDEPENDS, but it's un-version; not that being versioned would help
since it seems they didn't bother to bump the shlib version when they
should have. I discussed the problem with miwi@ and we're going to
explicitly depend on the pkg_version needed.

But this is how I found the problem with portmaster, since I had
libetpan-0.55 installed and claws-mail now requires 0.57 (which is the
current version in the ports).

> To debug the first problem please add a -x to the shebang line in
> /usr/local/sbin/portmaster and then run it in a script session like
> this: portmaster -vDHB claws-mail\*
> and send me the script output in private mail. If the build fails send
> me the log file for that too please.

Trouble is I already upgraded by hand. But since I still have some
hundred ports to upgrade and I'm pretty sure I saw this before I'll try
to reproduced it and pass you the results.


Thanks for your help,

-- 
IOnut - Un^d^dregistered ;) FreeBSD "user"
  "Intellectual Property" is   nowhere near as valuable   as "Intellect"
FreeBSD committer -> itetcu at FreeBSD.org, PGP Key ID 057E9F8B493A297B
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20090115/1d162a29/signature.pgp


More information about the freebsd-ports mailing list