[BRAINSTORMING] simplifying maintainer's life

Baptiste Daroussin bapt at FreeBSD.org
Wed Sep 3 13:45:12 UTC 2014


On Wed, Sep 03, 2014 at 02:30:17PM +0200, Tijl Coosemans wrote:
> 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?
yes
> 
> Is pkg already keeping a reference count or something for every
> directory?
yes
> 
> > 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.
true
> 
> > 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.

regards,
Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20140903/9d9e3a7d/attachment.sig>


More information about the freebsd-ports mailing list