On Sun, Sep 03, 2006 at 10:34:41AM +0400, Alexey Tourbin wrote: > --- /usr/bin/filereq- 2006-09-03 00:03:03 +0000 > +++ /usr/bin/filereq 2006-09-03 05:58:00 +0000 > @@ -67,3 +67,9 @@ > while [ -f "$LOCKFILE" ]; do > usleep 100000 > done > + > +while read -r file; do > + readlink -ms "$file" || echo "$file" > + readlink -es "$file" ||: > +done <"$unsorted" >"$unsorted$$" > +mv "$unsorted$$" "$unsorted" > > Здесь решаются две разные проблемы. > > 1) Предварительная каноникализация путей. Это нужно для того, чтобы > правила /etc/buildreqs/files/ignore.d работали всегда, а не от случая > к случаю (т.е. не зависели от путей типа /usr/bin/../lib/... -- такие > пути делает gcc! -- и т.п.). > > 2) Окончательная каноникализация путей. Это нужно для того, о чем я > писал в процитированном письме: чтобы требование на симлинки дополнительно > переходило в требование на файлы, на которые симлинки смотрят. > > Проблема с этим патчем одна -- readlink'и в цикле будут работать долго. > Приходится ждать заметное время даже на мощной машине (порядка двух > секунд при линковке с -lSDL). Кстати, оптимизация {esound,libSDL-devel} > с этим патчем работает агрессивно. Ой, там же в unsorted много-много дупов. Если предварительно отсортировать unsorted, то работает гораздо быстрее, но задержка всё равно заметна.