[BRAINSTORMING] simplifying maintainer's life

Tijl Coosemans tijl at FreeBSD.org
Wed Sep 3 12:30:31 UTC 2014

On Wed, 3 Sep 2014 12:07:51 +0200 Baptiste Daroussin <bapt at FreeBSD.org> wrote:
> On Wed, Sep 03, 2014 at 12:01:44PM +0200, Tijl Coosemans wrote:
>> On Wed, 3 Sep 2014 10:25:39 +0200 Baptiste Daroussin <bapt at FreeBSD.org> wrote:
>>> 2/ make pkg automatically remove directories under PREFIX without the
>>> need of adding them in plist, such as only empty directories and
>>> directories not under PREFIX will have to be listed. Of course pkg will
>>> not try to remove directories owned by another package.
>>> To achieve the point 2 that will mean we will stop using the mtree
>>> inside packages and create a "hier" package that will have the default
>>> hierarchy and every package but pkg will depend on this hier package
>>> (except if PREFIX != LOCALBASE)
>> I think you can avoid the hier package and thus the PREFIX != LOCALBASE
>> problem.
>> Assume there are no packages with empty directories, then pkg can
>> always remove empty directories when deinstalling a package, because
>> no files in the directory means no package requires it.  You don't need
>> a hier package in this case.
>> You can add support for packages with empty directories in two ways:
>> - Put a dummy file in the directory, e.g. .PKGNAME.keepme
>>   (simple to implement, but maybe some packages really need the
>>   directory to be empty or maybe they only expect a specific type of
>>   files)
>> - Record something like .PKGNAME.keepme in the pkg db but don't
>>   actually create that file.
> We do already support empty directories natively we do not need the .keep
> whatever and this works pretty well :)
> if a line in the plist is a directory (or @dirrm* ) then the directory is
> considered as owned by the package and always created

Does this work: packages A and B both create the same empty directory
and package C installs files in that directory.  Can you install and
deinstall A, B and C in any order and will that directory only be
deleted when you deinstall the last package?

Is pkg already keeping a reference count or something for every

> My only problem is to still provide the default grobal hier in provided
> by BSD.local.dist (like etc/rc.conf.d etc/libmap.d etc) that said we
> have actually only 4 empty directories all documented in the respective
> manpages from base where they are used, so yes probably I can just
> ignore the mtree at all
> Which makes the feature easy to implement then.

I don't think those directories actually need to exist.  On a fresh
installation /usr/local is empty.

> In anycase I will limit auto removal to PREFIX (the one supplied when
> creating the package) because base has its own mtree and I do not want
> to delete any empty directory from base at least until base is package
> itself.

Yes, it's probably a good idea to list everything outside PREFIX
explicitly.  Maybe you can limit it to the current @cwd instead of
PREFIX but then some existing pkg-plists may need to be fixed.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20140903/cdeb1b68/attachment.sig>

More information about the freebsd-ports mailing list