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 à 10:09, Jordan K. Hubbard a écrit :

>
> On Aug 2, 2006, at 3:17 PM, Paul Guyot wrote:
>
>> Are you basically saying that trace mode should be used in  
>> production code to do the equivalent of --without-X in configure  
>> and enforce it during build and install phases?
>>
>> I was only thinking about using it for automatic testing. There  
>> are several reasons for not requiring its use in production code.  
>> For example, trace mode slows the installation process  
>> significantly. Besides, the mode isn't completely protected from a  
>> port that could get rid of it, for example by unsetting global  
>> variables. Finally, some dependencies cannot be detected because  
>> they only happen at runtime.
>
> I don't think there's any real distinction between "production  
> mode" and any other mode going forward.   End-user should (and want  
> to) be using packages.  Packages should be built by the DP project  
> on a regular basis for its users.  Building packages we can trust  
> will require using trace mode to sandbox builds.
>
> The only other people I would expect to be building stuff would be  
> the limited number of Portfile authors, and they'll also want to  
> use trace mode in their development process (at least at the  
> validation stage) to ensure that the Portfile is really correct.   
> End-users only build ports today because there are no packages, not  
> because end-users are good at building stuff (they're not) or enjoy  
> the process (they don't).  That makes the notion of a "faster  
> production mode" kind of irrelevant.

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?).

I think it's time the discussion be transformed into a realistic  
roadmap considering the human and hardware resources we have.

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.
* modify base/ to introduce virtual ports for stuff provided by MacOS X.
* 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.
* implement binary packages. These require all the previous changes  
(working upgrade procedure, enhanced dependency code).

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.