Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 May 2006 08:39:44 -0500
From:      Wesley Shields <wxs@atarininja.org>
To:        Edwin Groothuis <edwin@mavetju.org>, Vasil Dimov <vd@freebsd.org>, ports@freebsd.org, Paul Koch <paul.koch@statseeker.com>
Subject:   Re: Is it safe to compile multiple ports at the same time ?
Message-ID:  <20060517133944.GA39615@atarininja.org>
In-Reply-To: <20060517121337.GA50791@iib.unsam.edu.ar>
References:  <200605171353.37745.paul.koch@statseeker.com> <20060517045403.GI1113@k7.mavetju> <200605171508.07228.paul.koch@statseeker.com> <20060517060026.GA40653@qlovarnika.bg.datamax> <20060517061302.GR1116@k7.mavetju> <20060517121337.GA50791@iib.unsam.edu.ar>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 17, 2006 at 09:13:37AM -0300, Fernan Aguero wrote:
> +----[ Edwin Groothuis <edwin@mavetju.org> (17.May.2006 03:16):
> |
> | You have to obtain a lock on the X's Makefile before you are doing
> | to check if you have this port installed.
> | 
> | For example, a dependcy on pkg-config in the directory devel/pkgconfig:
> | 
> | - obtain lock on devel/pkgconfig/Makefile
> | - check if pkg-config exists, and if not, build and install it.
> | - release lock on devel/pkgconfig/Makefile
> | 
> |
> +----]
> 
> Why not
> 
> - check if pkg-config exists and only if it doesn't exist,
>   try to obtain lock on the lock target.

Because at that point aren't you in a race condition?

Port A finds out pkg-config doesn't exist.
Port B finds out pkg-config doesn't exist.

At this point both ports determine they need to build and install the
port.

Port B manages to obtain the lock first, and builds and installs
pkgconfig.
Port A waits on Port B to finish.
Upon finishing Port A obtains the lock and builds and attempts to
install an already installed port.

You must obtain the lock early on, like Edwin has stated.

-- WXS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060517133944.GA39615>