Re: Release process (was Re: DarwinPorts 1.3.1)

"Jordan K. Hubbard" <[email protected]>
Newsgroups gmane.os.opendarwin.darwinports
Message-ID <[email protected]>
On Aug 2, 2006, at 7:32 PM, Paul Guyot wrote:

> OK. Your proposition makes sense. The main difference I can see  
> between failing on read and reporting on read is to allow port  
> developers to not use the --without-X configuration option when they  
> develop variants (in some cases, at least). As long as the binary  
> package is built on a box with the trace mode, we can always make  
> sure that the port doesn't refer to anything that is undeclared, and  
> therefore forbidding read operations isn't required. Besides,  
> preventing reads can only be implemented once the trace mode is the  
> default one (and DP delivers binaries). Performance-wise, this  
> change should be implemented by pushing more code inside the native  
> library (instead of using the pipe and the Tcl thread) and this will  
> both yield an increase of speed and a better stability (did I  
> mention that trace mode reveals a hard to reproduce concurrency bug  
> in native code -- Tcl or Pextlib ).

Hmm, I still think we're somehow talking past one another.  I'm NOT  
suggesting that we deny read()s - if you look at my last 2 or 3  
messages again, you'll see that it's open(2) (and, by inference, access 
(2) and stat(2)) I think we should block.  I'm not worried just about  
reads, it's the probes that need to be defeated.

The reason it's so important to do that is due to the fact that not  
all configure probes are going to necessarily read data from files.   
Some will simply attempt to open or stat the file and, if it exists,  
do some conditional behavior based upon that fact.  If you don't  
actually control the namespace, you're not really controlling  
anything, and you only control the namespace by making file access  
attempts *fail*.   Again, your mental model should be the chroot build  
environment.  Can you open a file outside the chroot?  No.  Can you  
stat a file outside the chroot?  No.  If trace mode cannot fully  
simulate a chroot environment then we'll be soon back to using disk  
images again because other projects have already proven that you NEED  
this level of isolation in order to truly guarantee your results.    
We're not the first people to do this - we're probably closer to the  
last - and we should learn from the experience of other package  
generation projects.

> I can see four steps:
> * implement a test system relying on trace mode. This system would  
> try to compile the files and display the result on a web page or  
> possibly spam the port authors. This requires little or no change in  
> the base/ code. Actually, there are two changes that can be  
> implemented while the tests are already running: a conflict  
> dependency edge and a fixed upgrade code, disabling ports that a  
> port dependended on.

I agree, though I think we do need the "conflicts" and "broken"  
keywords we've discussed earlier.  If we have those, then we can flag  
known build issues and avoid spamming people without cause (which will  
make people more willing to pay attention to the failure reports).

> * modify base/ to introduce virtual ports for stuff provided by  
> MacOS X.

Yep.

> * re-design the dependency engine to use a provides/requires  
> relation. Two ports can provide the same feature. There has been  
> plenty of suggestions for this bit on the list.

That would be great, though not strictly necessary to get to a package- 
oriented world.  Having port -> port dependencies should be enough to  
get us to:

> * implement binary packages. These require all the previous changes  
> (working upgrade procedure, enhanced dependency code).

- Jordan
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.