We are a package repository.

"Jordan K. Hubbard" <[email protected]> wrote:

>
>On Sep 20, 2010, at 2:09 PM, Jeremy Lavergne wrote:
>
>>> I'm sorry, but archives != packages, so in reality, the port(1) command is 
>>> not creating packages in that scenario at all.  Archives are missing a 
>>> bunch of the necessary metadata to quality as packages, the simplest 
>>> example of which are deletes.  If you upgrade a port simply by extracting 
>>> newer and newer archives, you will gradually accumulate cruft until such 
>>> time as certain ports actual fail to work due to legacy bits being detected 
>>> (and acted upon) when newer versions of the software were written with the 
>>> assumption that those files were long gone.  You can potentially create a 
>>> deletion list simply by "diffing" two archives, but that simply leaves you 
>>> with the next bit of missing metadata, namely the files to explicitly 
>>> migrate from version X to version X'.  There are also the post install 
>>> actions to consider (add a role account user, run a special post-install 
>>> script, etc) which archives do not provide.  Archives are essentially 
>>> "dumb", and even the über-simplistic
{Free,Net,Open}BSD package manager makes its .tar.gz package files "smarter" by 
including a special manifest file (+CONTENTS) that has a whole bunch of 
possible actions embedded in it.
>>> 
>>> You're a long way from binary packages with just archives alone, I'm 
>>> afraid. :(
>> 
>> Archives include the build folder, and the Portfile. To say we'd ruin people 
>> with archives you'd have to also agree we already ruin people with the way 
>> we run MacPorts entirely.
>
>Please don't confuse passive data with active data.  Sure, the archives can 
>and do include the original "port" metadata, but they don't actually include 
>the "package" metadata necessary to make that port work stand-alone in the 
>absence of macports (which, again, is a goal here since macports drags in an 
>entire devtools suite and still puts the burden of building some amount of 
>software on the user).
>
>That part is either not been done, or done in a limited way for a few popular 
>package formats like .pkg, .rpm and .deb (though some of those package formats 
>have bitrotted some and probably need updating).  This translation code 
>between "port metadata" and "package metadata"  is limited since it only knows 
>how to translate a certain number of runtime actions, like foo depends on bar, 
>or foo/blah should be installed with certain permissions, it doesn't know how 
>to translate the actual post-installation actions that many ports have inside 
>those Portfiles.   That is why those package targets have largely bitrotted - 
>they only do the job for a certain subset of the ports collection and nobody 
>quite finished them all the way such that all ports could be truly packageable.
>
>I also never said we were "ruining" people, I simply said that if you were 
>already required to install MacPorts itself (the infrastructure and ports 
>files) then you are providing MacPorts, same as always, and not a public 
>package collection.  Just making the archives available is more of an 
>optimization which the project could, someday, offer to its users as a way of 
>skipping some of the build process for certain popular projects, but they're 
>still going to be calling out to the compiler toolchain and still rebuilding 
>anything that a set of custom variants have been specified for (since you 
>won't have the right "canned archive" available) so it's just an optimization, 
>it's nothing particularly new or innovative.
>
>I'm still waiting for something new, like an actual package collection which 
>does not require anything but a very minimal Tcl runtime which is distributed 
>in the packages itself, making those packages genuinely stand-alone and worthy 
>of the name.
>
>- Jordan
>

_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev

Reply via email to