On Tue, Oct 14, 2008 at 04:07:22PM +0400, Konstantin A. Lepikhov wrote: > 14.10.2008 15:55, Dmitry V. Levin пишет: > > On Tue, Oct 14, 2008 at 02:03:59PM +0400, Konstantin A. Lepikhov wrote: > > > >> Update of /people/lakostis/packages/kernel-build-tools.git > >> > > [...] > > > >> new file mode 100755 > >> index 0000000..66f7500 > >> --- /dev/null > >> +++ b/modalias.prov > >> @@ -0,0 +1,20 @@ > >> +#!/bin/sh -efu > >> +# > >> +# Copyright (c) 2008 Konstantin Lepikhov . > >> +# > >> +# This program is free software; you can redistribute it and/or modify > >> +# it under the terms of the GNU General Public License as published by > >> +# the Free Software Foundation; either version 2 of the License, or > >> +# (at your option) any later version. > >> + > >> +. /usr/lib/rpm/functions > >> +. /usr/lib/rpm/find-package > >> + > >> +ModaliasReq() { > >> + local f t > > > > Поскольку тип не проверятеся, t здесь лишний. > > > Можно и тип проверить ;) Вопрос не совсем праздный. Например, как лучше обрабатывать ссылки. > >> + for f in "$@"; do > >> + /sbin/modinfo -F alias "$f" |sed -e 's/.*/modalias:&/' -e 's/[,]/?/g' > >> + done > >> +} > >> + > >> +ArgvFileAction ModaliasReq "$@" > >> diff --git a/modalias.prov.files b/modalias.prov.files > >> new file mode 100755 > >> index 0000000..b209954 > >> --- /dev/null > >> +++ b/modalias.prov.files > >> @@ -0,0 +1,11 @@ > >> +#!/bin/sh -efu > >> +buildroot="${RPM_BUILD_ROOT-}" > >> + > >> +while IFS=$'\t' read -r f t; do > >> + case "$f" in > >> + "$buildroot"/lib/modules/*/kernel/drivers/*.ko|"$buildroot"/lib/modules/*/kernel/sound/*.ko) > >> + [ -z "$f" ] || echo "$f" ;; > >> + "$buildroot"/lib/modules/*/*/*.ko) > >> + [ -z "$f" ] || echo "$f" ;; > >> > > > > Избыточность: последний case вполне покрывает первые два. Кстати, [ -z "$f" ] тоже лишний, простого echo достаточно. > Тогда вопрос - как это сделать правильно, если нужно проверять каталоги > > $buildroot"/lib/modules//kernel/drivers/*.ko|"$buildroot"/lib/modules//kernel/sound/*.ko > > и > > $buildroot"/lib/modules//<строго один уровень и не kernel>/*.ko Если продолжать стилистику case/esac, тожно так: "$buildroot"/lib/modules/*/kernel/drivers/*.ko|"$buildroot"/lib/modules/*/kernel/sound/*.ko) echo "$f" ;; "$buildroot"/lib/modules/*/kernel/*|"$buildroot"/lib/modules/*/*/*/*.ko) continue ;; "$buildroot"/lib/modules/*/*/*.ko) echo "$f" ;; А стоит ли так сужать множество обрабатываемых .ko-файлов? Разве в других местах depmod/modprobe их не найдут? -- ldv