#!/bin/sh # Display bcond (_with_*, _without_*) macros from given spec # $Id$ if [ "$#" = 0 ]; then echo "Usage: $0 SPEC" exit 1 fi SPEC=$1 if [ $SPEC = "--" ]; then if [ "$#" -lt 2 ]; then echo "Usage: rpm --bcond SPEC" exit 1 fi SPEC=$2 fi if [ ! -f $SPEC ]; then echo "rpm: $SPEC: no such file" exit 1 fi bconds=`awk -F"\n" 'BEGIN { chlog=0 } /^%changelog/ { chlog=1 } /_with(out)?_[_a-zA-Z0-9]+/ && chlog == 0 { match($0, /_with(out)?_[_a-zA-Z0-9]+/); print substr($0, RSTART, RLENGTH) } /^%bcond_with/ && chlog == 0 { match($0, /bcond_with(out)?[ \t]+[_a-zA-Z0-9]+/); bcond = substr($0, RSTART +5 , RLENGTH -5); gsub(/[ \t]+/,"_",bcond); print bcond }' $SPEC | sort -u` for c in $bconds; do echo -n "$c" if ! echo `rpm --eval "%$c"` | grep $c >/dev/null; then echo " (on)" else echo "" fi done for bcond in $bconds; do isset=`awk -F"\n" "BEGIN { val=0 } /^%define[\t ]+$bcond/ { if (match(\\$0, /$bcond[\t ]+0[\t ]*$/)) { val = 0 } else if (match(\\$0, /$bcond[\t ]+1[\t ]*$/)) { val = 1 } else { print \"couldn't determine $bcond value from \", \\$0 } } END { print val }" $SPEC`; if [ x"$isset" = x"1" ]; then echo "WARN: $bcond defined in spec"; fi done