[16:14] <Laney> xnox: Seems complicated for the task of saving top-level things - couldn't you check for '/' in the path?
[16:14] <Laney> (moving here from release :P)
[16:15] <xnox> Laney, this would only fix symlinks in the top-level dir though.... there might be symlinks to dirs in packages too, which should be copied.....
[16:15] <Laney> why would they be blacklisted?
[16:16] <xnox> or we can declare we don't care, than a '/' in relpath would do.
[16:16] <xnox> Laney, because blacklisted package ships it as a dir; whilst top-level one decided to move e.g. plugins dir elsewhere, hence declares a symlink dir.
[16:18] <Laney> doesn't your proposal do this 'bad' thing anyway?
[16:19] <xnox> Laney, also i noticed that libgtk2.0-0 ships a broken symlink.
[16:19] <xnox> $ ls /usr/share/doc/libgtk2.0-0/changelog.gz
[16:19] <xnox> lrwxrwxrwx 1 root root 32 Sep 21 11:54 /usr/share/doc/libgtk2.0-0/changelog.gz -> ../libgtk2.0-common/changelog.gz
[16:19] <xnox> Laney, with my proposal, the top-level package which is kept, will have its symlink installed into target. as is correct what dpkg did.
[16:20] <xnox> Laney, to be fair this is all very hackish. ideally we'd be using stacked squashfs ;-) or like actually execute dpkg to remove packages.
[16:20] <Laney> I see this "return '/' in relpath at the end"
[16:20] <Laney> so I don't get why it would work
[16:20] <xnox> Laney, but by that point all conditions above are true
[16:21] <xnox> as in, it is a blacklisted filename, it is a symlink, it is a symlink to a dir, it is not a broken symlink, and it's not a top level one.
[16:21] <xnox> and is kind of what infinity asked for
[16:21] <xnox> funny he is not in this channel.
[16:21] <Laney> yes and True means blacklisted no?
[16:21] <xnox> yes
[16:21] <xnox> horum.
[16:22] <xnox> as in do not copy.
[16:22] <xnox> argh
[16:23] <xnox> i do wonder if all of the conditions in between simply reduce to to '/i' in relpath
[16:23] <xnox> i do wonder if all of the conditions in between simply reduce to to '/' in relpath
[16:24] <xnox> also not sure if we should be copying broken symlinks from /rofs to /target
[16:25] <xnox> e.g. /usr/share/doc/libgtk2.0-0/changelog.gz
[16:25] <Laney> if the deb has it, I'd say you should keep it
[16:25] <xnox> right, it's just dirs and symlinks are funny. cause they exist in both list to keep and list to blacklist.
[16:26] <xnox> i wonder this
[16:26] <xnox> maybe directories should not be in the blacklist to begin with.
[16:26] <xnox> i.e. /usr /usr/bin should not be in the blacklist.....
[16:27] <Laney> they're all not considered anyway
[16:27] <xnox> what do you mean?
[16:27] <xnox> in this part of the code we decide what to copy from /rofs to /target
[16:27] <Laney> ubiquity stats the things and if it's a directory skips blacklisting
[16:27] <xnox> and /rofs has everything preinstalled.
[16:29] <xnox> meaning we potentially install many empty redundant dirs in /target, if they are fully blacklisted.
[16:30] <Laney> ref count them :-)
[16:30] <Laney> really though, more than a minimal amount of fixing in ubiquity is probably not a great idea at this point
[16:31] <Laney> given Installer NG™
[16:31] <xnox> Installer NG.io
[16:31] <xnox> hahahahhahaha
[16:33] <xnox> Laney, so i guess i should test this instead http://paste.ubuntu.com/p/kFPTzBMjNC/
[16:34] <xnox> cause this means our top-level tree stays.
[16:34] <xnox> and it will break when we decide to do usr/sbin -> usr/bin
[16:34] <xnox> kicking the can down the road.
[16:34] <xnox> right
[16:34] <xnox> so my long code works for nested symlinks to dirs.
[16:35] <xnox> because it does a stat on the symlink target, and if that is a dir, it skips blacklisting.
[16:35] <xnox> thus probably i never actually get to the '/' in relpath fallthrough.
[16:35] <xnox> maybe
[16:38] <Laney> how does usrmerge actually work?
[16:38] <Laney> something ships the symlink and dpkg follows that when unpacking packages?
[16:46] <xnox> Laney, debootstrap pre-creates /bin -> usr/bin symlink; dpkg never replaces a symlink with a dir; thus when it unpacks base-files or debs that ship /bin (dir) /bin/true (file) the `true` binary ends up in /usr/bin/true on disk