Re: Release process (was Re: DarwinPorts 1.3.1)

Paul Guyot <[email protected]>
Newsgroups gmane.os.opendarwin.darwinports
Message-ID <[email protected]>
Le 3 août 06 à 16:03, Ronald Oussoren a écrit :

>
> On Aug 3, 2006, at 6:15 AM, Paul Guyot wrote:
>
>>
>> Library injection gives enough granularity to be able to  
>> independently:
>> - detect what the package refers to
>> - prevent the package from doing dirty things
>> - prevent the package from referring to things
>>
>> While chroot doesn't provide this granularity.
>>
>> I maintain that the third item isn't required at all. It changes  
>> some details, but a robust package generation tool can only be  
>> based on the first two items.
>>
>> On the box building packages, it's perfectly fine if a port A  
>> refers to port B while the dependency isn't declared in the  
>> portfile. We only need to add the dependency rule because the box  
>> installing packages should install port B before installing port  
>> A. Preventing port A to detect port B either reduces the features  
>> of the package of port A (it could take advantage of port B) or  
>> will make it fail (if a node fails in the dependency graph, the  
>> connected nodes cannot be built either).
>
> Doesn't that mean that without the 3th item the contents of the  
> package for A would vary on whether or not port B happens to be  
> installed on the package build system? That is IMHO a bad thing,  
> this entire discussion seems to be about getting reproducable  
> builds and not having the 3th item seems to defeat that.

The 3rd item affects reproductability but not the way you seem to  
imply, on the contrary. Reproductability means that the third item  
should not be implemented.

Let's consider the following three concrete cases:
Case #1: All binaries are built on a given box with trace mode, users  
don't compile their own ports (or they do with trace mode).
Case #2: Some binaries are built on a given box with trace mode,  
users can also compile their own ports (without trace mode).
Case #3: Tests are run on a given box with trace mode. Users compile  
their own ports (without trace mode).

The path towards #1 (if desirable) obviously goes throuh #2 and #3.

In case #1, the 3rd item doesn't change much, especially if all ports  
are not buggy (which they are not). If the 3rd item is implemented,  
packages will ever only depend on what they declare they depend to.  
Not declaring a dependency can actually become intentional, for  
example to provide a no-jpeg variant of a software (although this  
increases the difficulty to maintain the port). If the 3rd item isn't  
implemented, packages will be able to refer to as many ports as  
possible (since quickly the box will have a large set of non- 
conflicting ports installed) and the dependency rules will be updated  
whenever a reference is detected.

There are additional slight differences between both cases. For  
example, not implementing the 3rd item will reveal conflicts between  
ports (imagine a configure program that test if something is not  
there and fail if it is). We can also imagine cases where the 3rd  
item is more desirable (imagine a configure program that iterates  
over many other ports it actually doesn't need to depend on).

In case #2 and #3, because users can compile their own ports without  
the trace mode, the third item should not be implemented in order to  
reproduce the installation of users as much as possible. We want to  
catch and update dependencies that might appear on user installations.

The way I see it is that we're not going to see case #1 any time  
soon, especially considering the combinatorial explosion of the  
number of binary packages (we support two MacOS X major releases, two  
processor architectures plus the variants and the dependency graph).  
And the third item slows down the testing process (the dependency  
graph walk will end at the first undeclared required dependency).

Paul
-- 
Ministre ultraplénipotentiaire en disponibilité.
Mobile. Sans baignoire fixe.
http://www.kallisys.com/
http://www-poleia.lip6.fr/~guyot/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.