Package manager - interacting with the compiler

Chad J chadjoan at __spam.is.bad__gmail.com
Tue Dec 13 05:04:41 PST 2011


On 12/12/2011 08:58 AM, Jacob Carlborg wrote:
> On 2011-12-12 04:08, Chad J wrote:
>> On 12/10/2011 03:55 AM, Jacob Carlborg wrote:
>>> I think I've come so far in my development of a package manager that
>>> it's time to think how it should interact with the compiler.
>>> ...
>>
>> o.O
>>
>> I've read what I could find and I think I like where this is going.
>>
>> I'm not sure where you're drawing your inspiration from, but if this is
>> going to support features similar to Portage then I am willing to give
>> money to help make sure it happens.
> 
> It's basically RubyGems but for D. It's great to hear that someone likes
> it.
> 

OK, cool.  I should probably mention some of the things I like about
portage (off the top of my head), incase it helps:

- The world file: A list of all packages that the /user/ elected to
install.  It does not contain dependencies.  It is the top level.

- use-flags: Flags/keywords associated with packages that allow you to
turn specific features within packages on and off.

- Stability levels: Portage has a notion of unstable/untested or
"hardmasked" packages at one level, slightly unstable or
architecture-specific glitchiness at another level ("keyworded"), and
completely stable at another.

---------------------------------

As for why I like these things:

- The world file: This makes it really easy to replicate installations
on other machines.  It also allows me to cull my tree by removing
something from the world file and then telling it to remove all the
orphaned packages.

- use-flags:  These are super useful when a package has a dependency
that just will not compile on my system.  In some cases I can disable
the feature that causes that dependency, and then still be able to
install the package.

- Stability levels:  These can be controlled at different granularities,
examples: system has only stable packages, or all unstable, or stable
except for packages in the "keywords" file, and maybe one package in the
keywords file has all versions allowed, or just versions 1.3.44 and
1.5.21.  This is yet more control over giving troubling packages the boot.

---------------------------------

Things I don't like about portage:
- The portage tree doesn't keep enough old versions around sometimes.
- People who write crappy ebuilds or mark things stable when they mess
up my system.  The quality control used to be better.
(It's still my favorite package manager by a wide margin.)


More information about the Digitalmars-d mailing list