On Wed, Sep 03, 2014 at 12:01:44PM +0200, Tijl Coosemans wrote: > On Wed, 3 Sep 2014 10:25:39 +0200 Baptiste Daroussin <b...@freebsd.org> wrote: > > On of the most borring thing IMHO in the plist maintainance is all the > > directories. > > > > I have been working on some evolutions I want to share and discuss before > > making them official. > > > > First you have to know that since pkg 1.3 @dirrm and @dirrmtry are > > equivalent. > > > > Evolutions: > > 1/ stop prepending directories in plist with @dir*: let pkg discover > > the path correspond to a directory and handle it as such (easy) > > Good. > > > 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 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. 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. regards, Bapt
pgphlxvnINy0n.pgp
Description: PGP signature