(text copied verbatim into the #913572 as justification) On Jan 8, 2012, at 6:45 PM, glen wrote:
> On 01/09/2012 01:11 AM, Jeffrey Johnson wrote: >> This is a hard link to a symlink which is pretty obscure functionality. > nevertheless, it's quite useful when optimizing for packaging speed > when you develop huge packages, you would appreciate faster repackaging > If you mean the speed with which rpm build produces multiple sub-pkgs, multi-threading likely is higher throughput than most anything else: all the digests have to be calculated, and that means all the content needs to be read, so there's likely little I/O savings. Dunno: the right approach is to do the measurement rather than guess at a performance speedup. Note that rpm-5.x has other performance issues that scale as some power of the #files that also slow down rpm build packaging with huge numbers of files (like kernel or texlive). > so instead of copying data from %build -> %install tree, one can do hardlinks > to speedup the process: > But calculating the digests is gonna read the content anyways: there's some chance that the copied buffers will still be in cache. Off-hand, its likely that all hard linked files will have their digest computed repeatedly by rpmbuild. *shrug* Meanwhile the flaw here is a hard linked symlink: avoiding I/O there is pointless (but you do have to be careful to use hard links only on files, never on symlinks) > cp -l build.txt $RPM_BUILD_ROOT/cp-test && l=l && rm -f > $RPM_BUILD_ROOT/cp-test > cp -a$l bin help lib license plugins $RPM_BUILD_ROOT%{_appdir} > > here it makes feature test if srcdir and $RPM_BUILD_ROOT are same disk, and > enables hardlinking > > now if there is a symlink in a tree, it gets affected by this bug. > Yup. > also: in rpm package there is packaged only one instance of the hardlink (one > in $RPM_BUILD_ROOT), > imho should decide on that actual number, not what it sees from filesystem > There are other issues such as when there are hard links outside of $RPM_BUILD_ROOT. There is no tag that carries st->st_nlink in rpm metadata. Instead st->st_nlink is computed by looking for identical {dev,ion} pairs for the 1-2 places where blink needs to be displayed by rpm. Might not be too hard to fix … just not sure whether the gain is worth the risk of breaking something else. Handling "partial hardline sets" was very hard to get right. hth 73 de Jeff _______________________________________________ pld-devel-en mailing list pld-devel-en@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-devel-en