[sisyphus] shell.req

Alexey Tourbin at на altlinux.ru
Пн Авг 27 19:56:45 MSK 2012


On Mon, Aug 27, 2012 at 04:39:38PM +0300, Denis Kuznetsov wrote:
> Доброго времени суток.
> Решил попробовать собрать zfs. Сборка 
> завершается с ошибкой:
> 
> /home/kde/tmp/zfs-buildroot/usr/bin/zpool_layout: line 176: syntax error 
> near unexpected token `('
> /home/kde/tmp/zfs-buildroot/usr/bin/zpool_layout: line 176: `            
> ls ${LABEL}-+([0-9a-f])-switch-port:${p}-slot:+([0-9]) \'
> shell.req: ERROR: /home/kde/tmp/zfs-buildroot/usr/bin/zpool_layout: 
> /bin/bash --rpm-requires failed
> find-requires: ERROR: /usr/lib/rpm/shell.req failed
> ошибка: /bin/sh не удалось
> ошибка: Невозможно найти Requires
> 
> 
> Собственно что в скрипте.
> 167 # Generate channel/disk layout table for comment header.
> 168 print_channel_layout() {
> 169     pushd ${DEV_DISK_DIR} >/dev/null
> 170     echo "# ----------------- Channel/Disk Layout -------------------"
> 171     echo "# Channel  Disks"
> 172     if [ ${TOPOLOGY} = "switch" ] ; then
> 173         for (( i=0; i<${#SWITCH_PORTS[*]}; i++ )); do
> 174             printf "# %-9s" ${CHANNELS[$i]}
> 175             p=${SWITCH_PORTS[$i]}
> 176             ls ${LABEL}-+([0-9a-f])-switch-port:${p}-slot:+([0-9]) \
> 177                 2>/dev/null | cut -f3 -d':' | sort -u -n | \
> 178                 xargs | tr ' ' ','
> 179         done
> 180     else
> 181         for (( i=0, k=0; i<${#BUSES[*]}; i++ )); do
> 182             for (( j=0; j<${#HOST_PORTS[*]}; j++, k++ )); do
> 183                 printf "# %-9s" ${CHANNELS[$k]}
> 184                 ls *:${BUSES[$i]}:*:${HOST_PORTS[$j]}* \
> 185                     2>/dev/null | cut -f7 -d'-' | \
> 186                     sort -u -n | xargs | tr ' ' ','
> 187             done
> 188         done
> 189     fi
> 190     echo "#"
> 191     popd > /dev/null
> 192 }
> 193
> 
> Собственно вопрос как всегда, куда 
> копать?

Копать туда, что shell syntax check у этого скрипта не проходит:

$ sh -n test.sh
test.sh: line 9: syntax error near unexpected token `('
test.sh: line 9: `            ls ${LABEL}-+([0-9a-f])-switch-port:${p}-slot:+([0-9]) \'

Соответственно, rpm не дает запаковать этот скрипт в абсолютно
неработающем виде, есть считается, что это /bin/sh или /bin/bash скрипт.


Подробная информация о списке рассылки Sisyphus