On Wed, Sep 03, 2014 at 02:30:17PM +0200, Tijl Coosemans wrote: > On Wed, 3 Sep 2014 12:07:51 +0200 Baptiste Daroussin <b...@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 <b...@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
pgpSQVvMrq78x.pgp
Description: PGP signature