On Wed, 3 Sep 2014 12:07:51 +0200 Baptiste Daroussin <[email protected]> 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 <[email protected]> >> 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 directory? > 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.
signature.asc
Description: PGP signature
