W dniu sob, 11.11.2017 o godzinie 12∶31 -0500, użytkownik Michael Orlitzky napisał: > > > and a meta-question, > > > > > > c) Seriously, empty directories are undefined behavior? > > > > ...and how could they be defined if a directory can be installed by > > multiple packages and has no explicit ownership? > > I see the problem, but the package manager knows which packages are > using a given directory. (Portage does, and it is at least easy to > record that information.) > > Empty directories could be installed normally, and then during an > unmerge, the package manager could check to see if the empty directory > is used by any package. If it is, leave it -- if not, remove it. You > might object that this would slow down the unmerge process, but a clever > lookup scheme would let you map directory names to packages quickly. > > In fact, such a lookup scheme is already implemented in the filesystem > itself, leading me full circle to the following idea: if the package > manager is about to install an empty directory, it could create the > ".keep" file itself. Then "ls -a $dir" is your lookup function that > determines whether or not a directory is in use by a package.
What about a directory that is installed empty by multiple different packages, and non-empty by some other packages? > Having the package manager handle empty directories solves two problems, > > 1) Use of "keepdir" is inconsistent, because portage is happy to let > you create an empty directory without it (even though that > operation is illegal). It is not. It is just not guaranteed to be meaningful. > > 2) The build systems of many packages will create empty directories > during "make install", and it's unreasonable to expect developers > to "keepdir" them all. Not all of those directories are really meaningful. > Essentially,we have two commands to create a directory, "dodir" and > "do-empty-dir" (which we call "keepdir"). The latter is only necessary > due to an implementation detail, so it doesn't belong in the user > interface -- the PM should figure out what to do. > > As far as the actual implementation goes, I'm not sure that > automatically-generated ".keep" files are better than having the package > manager maintain its own database. The latter would be more complex, but > would avoid littering everyone's filesystems with ".keep" files. Do you care enough to spec this properly, introduce EAPI-conditional behavior for it and prepare patches for the package managers? -- Best regards, Michał Górny