+
+ DEPS=$(rpm -q --whatprovides $DEPS 2>&1 | awk '/^(error:|no package provides)/ { print }')
+
+ # packages
+ echo "$DEPS" | awk '/^no package provides/ { print $NF }'
+
+ # other deps (files)
+ echo "$DEPS" | awk -F: '/^error:.*No such file/{o = $2; gsub("^ file ", "", o); print o}'
+}
+
+# checks if given package/files/provides exists in rpmdb.
+# input can be either stdin or parameters
+# returns packages which are present in the rpmdb
+_rpm_cnfl_check()
+{
+ local DEPS
+
+ if [ $# -gt 0 ]; then
+ DEPS="$@"
+ else
+ DEPS=$(cat)
+ fi
+
+ rpm -q --whatprovides $DEPS 2>/dev/null | awk '!/no package provides/ { print }'
+}
+
+fetch_build_requires()
+{
+ if [ "${FETCH_BUILD_REQUIRES}" = "yes" ]; then
+ update_shell_title "fetch build requires"
+ if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
+ if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ]; then
+ # TODO: Conflicts list doesn't check versions
+ local CNFL=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
+ local DEPS=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
+ fi
+ if [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
+ local CNFL=$(rpm -q --specsrpm --conflicts $BCOND $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs)
+ local DEPS=$(rpm -q --specsrpm --requires $BCOND $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs)
+ fi
+
+ if [ -n "$CNFL" ] || [ -n "$DEPS" ]; then
+ echo "fetch BuildRequires: install [$DEPS]; remove [$CNFL]"
+ update_shell_title "poldek: install [$DEPS]; remove [$CNFL]"
+ $SU_SUDO /usr/bin/poldek -q --update || $SU_SUDO /usr/bin/poldek -q --upa
+ fi
+ if [ -n "$CNFL" ]; then
+ update_shell_title "uninstall conflicting packages: $CNFL"
+ echo "Trying to uninstall conflicting packages ($CNFL):"
+ $SU_SUDO /usr/bin/poldek --noask --nofollow -ev $CNFL
+ fi
+
+ while [ "$DEPS" ]; do
+ update_shell_title "install deps: $DEPS"
+ echo "Trying to install dependencies ($DEPS):"
+ local log=.${SPECFILE}_poldek.log
+ $SU_SUDO /usr/bin/poldek --caplookup -uGqQ $DEPS | tee $log
+ failed=$(awk '/^error:/{a=$2; sub(/^error: /, "", a); sub(/:$/, "", a); print a}' $log)
+ rm -f $log
+ local ok
+ if [ -n "$failed" ]; then
+ for package in $failed; do
+ spawn_sub_builder -bb $(depspecname $package) && ok="$ok $package"
+ done
+ DEPS="$ok"
+ else
+ DEPS=""
+ fi
+ done
+ return
+ fi
+
+ echo -ne "\nAll packages installed by fetch_build_requires() are written to:\n"
+ echo -ne "`pwd`/.${SPECFILE}_INSTALLED_PACKAGES\n"
+ echo -ne "\nIf anything fails, you may get rid of them by executing:\n"
+ echo "poldek -e \`cat `pwd`/.${SPECFILE}_INSTALLED_PACKAGES\`\n\n"
+ echo > `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
+ for package_item in `cat $SPECFILE|grep -B100000 ^%changelog|grep -v ^#|grep BuildRequires|grep -v ^-|sed -e "s/^.*BuildRequires://g"|awk '{print $1}'|sed -e s,perl\(,perl-,g -e s,::,-,g -e s,\(.*\),,g -e s,%{,,g -e s,},,g|grep -v OpenGL-devel|sed -e s,sh-utils,coreutils,g -e s,fileutils,coreutils,g -e s,textutils,coreutils,g -e s,kgcc_package,gcc,g -e s,\),,g`
+ do
+ package_item="`echo $package_item|sed -e s,rpmbuild,rpm-build,g |sed -e s,__perl,perl,g |sed -e s,gasp,binutils-gasp,g -e s,binutils-binutils,binutils,g -e s,apxs,apache,g|sed -e s,apache\(EAPI\)-devel,apache-devel,g -e s,kernel-headers\(netfilter\),kernel-headers,g -e s,awk,mawk,g -e s,mmawk,mawk,g -e s,motif,openmotif,g -e s,openopenmotif,openmotif,g`"
+ GO="yes"
+ package=`basename "$package_item"|sed -e "s/}$//g"`
+ COND_ARCH_TST="`cat $SPECFILE|grep -B1 BuildRequires|grep -B1 $package|grep ifarch|sed -e "s/^.*ifarch//g"`"
+ mach=`uname -m`
+
+ COND_TST=`cat $SPECFILE|grep BuildRequires|grep "$package"`
+ if `echo $COND_TST|grep -q '^BuildRequires:'`; then
+ if [ "$COND_ARCH_TST" != "" ] && [ "`echo $COND_ARCH_TST|sed -e "s/i.86/ix86/g"`" != "`echo $mach|sed -e "s/i.86/ix86/g"`" ]; then
+ GO="yes"
+ fi
+ # bcond:
+ else
+ COND_NAME=`echo $COND_TST|sed -e s,:BuildRequires:.*$,,g`
+ GO=""
+ # %{without}
+ if `echo $COND_TST|grep -q 'without_'`; then
+ COND_NAME=`echo $COND_NAME|sed -e s,^.*without_,,g`
+ if `echo $COND_TST|grep -q !`; then
+ COND_STATE="with"
+ else
+ COND_STATE="wout"
+ fi
+ COND_WITH=`echo $AVAIL_BCONDS_WITH|grep "<$COND_NAME>"`
+ COND_WITHOUT=`echo $AVAIL_BCONDS_WITHOUT|grep "<$COND_NAME>"`
+ if [ -n "$COND_WITHOUT" ] || [ -z "$COND_WITH" ]; then
+ COND_ARGV="wout"
+ else
+ COND_ARGV="with"
+ fi
+ # %{with}
+ elif `echo $COND_TST|grep -q 'with_'`; then
+ COND_NAME=`echo $COND_NAME|sed -e s,^.*with_,,g`
+ if `echo $COND_TST|grep -q !`; then
+ COND_STATE="wout"
+ else
+ COND_STATE="with"
+ fi
+ COND_WITH=`echo $AVAIL_BCONDS_WITH|grep "<$COND_NAME>"`
+ COND_WITHOUT=`echo $AVAIL_BCONDS_WITHOUT|grep "<$COND_NAME>"`
+ if [ -n "$COND_WITH" ] || [ -z "$COND_WITHOUT" ]; then
+ COND_ARGV="with"
+ else
+ COND_ARGV="wout"
+ fi
+ fi
+ RESULT="${COND_STATE}-${COND_ARGV}"
+ case "$RESULT" in
+ "with-wout" | "wout-with" )
+ GO=""
+ ;;
+ "wout-wout" | "with-with" )
+ GO="yes"
+ ;;
+ * )
+ echo "Action '$RESULT' was not defined for package '$package_item'"
+ GO="yes"
+ ;;
+ esac
+ fi
+
+ if [ "$GO" = "yes" ]; then
+ if [ "`rpm -q $package|sed -e "s/$package.*/$package/g"`" != "$package" ]; then
+ echo "Testing if $package has subrequirements..."
+ run_poldek -t -i $package --dumpn=".$package-req.txt"
+ if [ -f ".$package-req.txt" ]; then
+ for package_name in `cat ".$package-req.txt"|grep -v ^#`
+ do
+ if [ "$package_name" = "$package" ]; then
+ echo -ne "Installing BuildRequired package:\t$package_name\n"
+ update_shell_title "Installing BuildRequired package: ${package_name}"
+ install_required_packages $package
+ else
+ echo -ne "Installing (sub)Required package:\t$package_name\n"
+ update_shell_title "Installing (sub)Required package: ${package_name}"
+ install_required_packages $package_name
+ fi
+ case $? in
+ 0)
+ INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
+ echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
+ ;;
+ *)
+ echo "Attempting to run spawn sub - builder..."
+ echo -ne "Package installation failed:\t$package_name\n"
+ run_sub_builder $package_name
+ if [ $? -eq 0 ]; then
+ install_required_packages $package_name
+ case $? in
+ 0)
+ INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
+ echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
+ ;;
+ *)
+ NOT_INSTALLED_PACKAGES="$package_name $NOT_INSTALLED_PACKAGES"
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+ rm -f ".$package-req.txt"
+ else
+ echo "Attempting to run spawn sub - builder..."
+ echo -ne "Package installation failed:\t$package\n"
+ run_sub_builder $package
+ if [ $? -eq 0 ]; then
+ install_required_packages $package
+ case $? in
+ 0)
+ INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
+ echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
+ ;;
+ *)
+ NOT_INSTALLED_PACKAGES="$package_name $NOT_INSTALLED_PACKAGES"
+ ;;
+ esac
+ fi
+ fi
+ else
+ echo "Package $package is already installed. BuildRequirement satisfied."
+ fi
+ fi
+ done
+ if [ "$NOT_INSTALLED_PACKAGES" != "" ]; then
+ echo "Unable to install following packages and their dependencies:"
+ for pkg in "$NOT_INSTALLED_PACKAGES"
+ do
+ echo $pkg
+ done
+ remove_build_requires
+ exit 8
+ fi
+ fi
+}
+
+init_rpm_dir() {
+
+ TOP_DIR="`eval $RPM $RPMOPTS --eval '%{_topdir}'`"
+ CVSROOT=":pserver:cvs@$CVS_SERVER:/cvsroot"
+
+ mkdir -p $TOP_DIR/{RPMS,BUILD,SRPMS}
+ cd $TOP_DIR
+ cvs -d $CVSROOT co SOURCES/{.cvsignore,dropin} SPECS/{mirrors,md5,adapter{,.awk},fetchsrc_request,builder,{relup,compile,repackage}.sh}
+
+ init_builder
+
+ echo "To checkout *all* .spec files:"
+ echo "- remove $SPEC_DIR/CVS/Entries.Static"
+ echo "- run cvs up in $SPEC_DIR dir"
+
+ echo ""
+ echo "To commit with your developer account:"
+ echo "- edit $SPEC_DIR/CVS/Root"
+ echo "- edit $SOURCE_DIR/CVS/Root"
+}
+
+get_greed_sources() {
+ CVSROOT=":pserver:cvs@$CVS_SERVER:/cvsroot"
+ if [ -n "BE_VERBOSE" ]; then
+ echo "Try greed download: $1 from: $CVSROOT"
+ fi
+ cvs -d $CVSROOT get SOURCES/$1
+ if [ $? != 0 ]; then
+ Exit_error err_no_source_in_repo $1
+ fi
+
+}
+
+# remove entries from CVS/Entries
+cvs_entry_remove() {
+ local cvsdir="$1"; shift
+ if [ ! -d "$cvsdir" ]; then
+ echo >&2 "cvs_entry_remove: $cvsdir is not a directory"
+ exit 1
+ fi
+
+ for file in "$@"; do
+ rm -f $cvsdir/CVS/Entries.new || return 1
+ awk -ve="${file##*/}" -F/ '$2 != e {print}' $cvsdir/CVS/Entries > $cvsdir/CVS/Entries.new || return 1
+ mv -f $cvsdir/CVS/Entries.new $cvsdir/CVS/Entries || return 1
+ done
+ return 0
+}
+
+mr_proper() {
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+
+ # remove from CVS/Entries
+ cvs_entry_remove $SPEC_DIR $SPECFILE
+ cvs_entry_remove $SOURCE_DIR $SOURCES $PATCHES
+
+ # remove spec and sources
+ $RPMBUILD --clean --rmsource --rmspec --nodeps $SPECFILE
+}
+
+#---------------------------------------------
+# main()
+
+if [ $# = 0 ]; then
+ usage
+ exit 1
+fi
+
+while [ $# -gt 0 ]; do
+ case "${1}" in
+ -5 | --update-md5)
+ COMMAND="update_md5"
+ NODIST="yes"
+ NOCVSSPEC="yes"
+ shift ;;
+ -a5 | --add-md5 )
+ COMMAND="update_md5"
+ NODIST="yes"
+ NOCVS="yes"
+ NOCVSSPEC="yes"
+ ADD5="yes"
+ shift ;;
+ -n5 | --no-md5 )
+ NO5="yes"
+ shift ;;
+ -D | --debug )
+ DEBUG="yes"; shift ;;
+ -V | --version )
+ COMMAND="version"; shift ;;
+ --short-version )
+ COMMAND="short-version"; shift ;;
+ -a | --as_anon )
+ CVSROOT=":pserver:cvs@$CVS_SERVER:/cvsroot"; shift ;;
+ -b | -ba | --build )
+ COMMAND="build"; shift ;;
+ -bb | --build-binary )
+ COMMAND="build-binary"; shift ;;
+ -bc )
+ COMMAND="build-build"; shift ;;
+ -bi )
+ COMMAND="build-install"; shift ;;
+ -bl )
+ COMMAND="build-list"; shift ;;
+ -bp | --build-prep )
+ COMMAND="build-prep"; shift ;;
+ -bs | --build-source )
+ COMMAND="build-source"; shift ;;
+ -B | --branch )
+ COMMAND="branch"; shift; TAG="${1}"; shift;;
+ -c | --clean )
+ CLEAN="--clean --rmspec --rmsource"; shift ;;
+ -cf | --cvs-force )
+ CVS_FORCE="-F"; shift;;
+ -d | --cvsroot )
+ shift; CVSROOT="${1}"; shift ;;
+ -g | --get )
+ COMMAND="get"; shift ;;
+ -h | --help )
+ COMMAND="usage"; shift ;;
+ --http )
+ PROTOCOL="http"; shift ;;
+ -l | --logtofile )
+ shift; LOGFILE="${1}"; shift ;;
+ -ni| --nice )
+ shift; DEF_NICE_LEVEL=${1}; shift ;;
+ -ske | --skip-existing-files)
+ SKIP_EXISTING_FILES="yes"; shift ;;
+ -m | --mr-proper )
+ COMMAND="mr-proper"; shift ;;
+ -nc | --no-cvs )
+ NOCVS="yes"; shift ;;
+ -ncs | --no-cvs-specs )
+ NOCVSSPEC="yes"; shift ;;
+ -nd | --no-distfiles )
+ NODIST="yes"; shift ;;
+ -nm | --no-mirrors )
+ NOMIRRORS="yes"; shift ;;
+ -nu | --no-urls )
+ NOURLS="yes"; shift ;;
+ -ns | --no-srcs )
+ NOSRCS="yes"; shift ;;
+ -ns0 | --no-source0 )
+ NOSOURCE0="yes"; shift ;;
+ -nn | --no-net )
+ NOCVS="yes"
+ NOCVSSPEC="yes"
+ NODIST="yes"
+ NOMIRRORS="yes"
+ NOURLS="yes"
+ NOSRCS="yes"
+ ALWAYS_CVSUP="no"
+ shift;;
+ -pm | --prefer-mirrors )
+ PREFMIRRORS="yes"
+ shift;;
+ --no-init )
+ NOINIT="yes"
+ shift;;
+ --opts )
+ shift; RPMOPTS="${RPMOPTS} ${1}"; shift ;;
+ --nopatch | -np )
+ shift; RPMOPTS="${RPMOPTS} --define \"patch${1} : ignoring patch${1}; exit 1; \""; shift ;;
+ --with | --without )
+ case $GROUP_BCONDS in
+ "yes")
+ COND=${1}
+ shift
+ while ! `echo ${1}|grep -qE '(^-|spec)'`
+ do
+ BCOND="$BCOND $COND $1"
+ shift
+ done;;
+ "no")
+ if [[ "$2" = *,* ]]; then
+ for a in $(echo "$2" | tr , ' '); do
+ BCOND="$BCOND $1 $a"
+ done
+ else
+ BCOND="$BCOND $1 $2"
+ fi
+ shift 2 ;;
+ esac
+ ;;
+ --target )
+ shift; TARGET="${1}"; shift ;;
+ --target=* )
+ TARGET=$(echo "${1}" | sed 's/^--target=//'); shift ;;
+ -q | --quiet )
+ QUIET="--quiet"; shift ;;
+ --date )
+ CVSDATE="${2}"; shift 2 ;;
+ -r | --cvstag )
+ shift; CVSTAG="${1}"; shift ;;
+ -A)
+ shift; CVSTAG="HEAD"; ;;
+ -R | --fetch-build-requires)
+ FETCH_BUILD_REQUIRES="yes"
+ NOT_INSTALLED_PACKAGES=
+ shift ;;
+ -RB | --remove-build-requires)
+ REMOVE_BUILD_REQUIRES="nice"
+ shift ;;
+ -FRB | --force-remove-build-requires)
+ REMOVE_BUILD_REQUIRES="force"
+ shift ;;
+ -sc | --sources-cvs)
+ COMMAND="list-sources-cvs"
+ shift ;;
+ -sd | --sources-distfiles)
+ COMMAND="list-sources-distfiles"
+ shift ;;
+ -sdp | --sources-distfiles-paths)
+ COMMAND="list-sources-distfiles-paths"
+ shift ;;
+ -sf | --sources-files)
+ COMMAND="list-sources-files"
+ shift ;;
+ -sp | --sources-paths)
+ COMMAND="list-sources-local-paths"
+ shift ;;
+ -su | --sources-urls)
+ COMMAND="list-sources-urls"
+ shift ;;
+ -Tvs | --tag-version-stable )
+ COMMAND="tag"
+ TAG="STABLE"
+ TAG_VERSION="yes"
+ shift;;
+ -Ts | --tag-stable )
+ COMMAND="tag"
+ TAG="STABLE"
+ TAG_VERSION="no"
+ shift;;
+ -Tv | --tag-version )
+ COMMAND="tag"
+ TAG=""
+ TAG_VERSION="yes"
+ shift;;
+ -Tp | --tag-prefix )
+ TAG_PREFIX="$2"
+ shift 2;;
+ -tt | --test-tag )
+ TEST_TAG="yes"
+ shift;;
+ -T | --tag )
+ COMMAND="tag"
+ shift
+ TAG="$1"
+ TAG_VERSION="no"
+ shift;;
+ -ir | --integer-release-only )
+ INTEGER_RELEASE="yes"
+ shift;;
+ -U | --update )
+ COMMAND="update_md5"
+ UPDATE="yes"
+ NOCVSSPEC="yes"
+ NODIST="yes"
+ shift ;;
+ -Upi | --update-poldek-indexes )
+ UPDATE_POLDEK_INDEXES="yes"
+ shift ;;
+ --init-rpm-dir)
+ COMMAND="init_rpm_dir"
+ shift ;;
+ --use-greed-sources )
+ GREEDSRC="1"
+ shift;;
+ -u | --try-upgrade )
+ TRY_UPGRADE="1"; shift ;;
+ -un | --try-upgrade-with-float-version )
+ TRY_UPGRADE="1"; FLOAT_VERSION="1"; shift ;;
+ -v | --verbose )
+ BE_VERBOSE="1"; shift ;;
+ --define)
+ shift
+ MACRO="${1}"
+ shift
+ if echo "${MACRO}" | grep -q '\W'; then
+ RPMOPTS="${RPMOPTS} --define \"${MACRO}\""
+ else
+ VALUE="${1}"
+ shift
+ RPMOPTS="${RPMOPTS} --define \"${MACRO} ${VALUE}\""
+ fi
+ ;;
+ --alt_kernel)
+ shift
+ RPMOPTS="${RPMOPTS} --define \"alt_kernel $1\""
+ shift
+ ;;
+ --short-circuit)
+ RPMBUILDOPTS="${RPMBUILDOPTS} --short-circuit"
+ shift
+ ;;
+ --show-bconds | -show-bconds | -print-bconds | --print-bconds | -display-bconds | --display-bconds )
+ COMMAND="show_bconds"
+ shift
+ ;;
+ --show-bcond-args)
+ COMMAND="show_bcond_args"
+ shift
+ ;;
+ --nodeps)
+ shift
+ RPMOPTS="${RPMOPTS} --nodeps"
+ ;;
+ -debug)
+ RPMBUILDOPTS="${RPMBUILDOPTS} -debug"; shift
+ ;;
+ -*)
+ Exit_error err_invalid_cmdline "$1"
+ ;;
+ *)
+ SPECFILE="${1}"
+ # check if specname was passed as specname:cvstag
+ if [ "${SPECFILE##*:}" != "${SPECFILE}" ]; then
+ CVSTAG="${SPECFILE##*:}"
+ SPECFILE="${SPECFILE%%:*}"
+ fi
+ ASSUMED_NAME="$(basename ${SPECFILE%%.spec})"
+ shift
+ esac
+done
+
+if [ -f CVS/Entries ] && [ -z "$CVSTAG" ]; then
+ CVSTAG=$(awk -vSPECFILE=$(basename ${SPECFILE%.spec}.spec) -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' CVS/Entries)
+ if [ "$CVSTAG" ]; then
+ echo >&2 "builder: Stick tag $CVSTAG active. Use -r TAGNAME to override."
+ fi
+elif [ "$CVSTAG" = "HEAD" ]; then
+ # assume -r HEAD is same as -A
+ CVSTAG=""
+fi
+
+if [ -n "$DEBUG" ]; then
+ set -x
+ set -v
+fi
+
+if [ -n "$TARGET" ]; then
+ case "$RPMBUILD" in
+ "rpmbuild")
+ TARGET_SWITCH="--target $TARGET" ;;
+ "rpm")
+ TARGET_SWITCH="--target=$TARGET" ;;
+ esac
+fi
+
+if [ "$SCHEDTOOL" != "no" ]; then
+ NICE_COMMAND="$SCHEDTOOL"
+else
+ NICE_COMMAND="nice -n ${DEF_NICE_LEVEL}"
+fi
+
+update_shell_title "$COMMAND"
+case "$COMMAND" in
+ "show_bconds")
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec > /dev/null
+ parse_spec
+ set_bconds_values
+ display_bconds
+ fi
+ ;;
+ "show_bcond_args")
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec > /dev/null
+ parse_spec
+ set_bconds_values
+ echo "$BCOND"
+ fi
+ ;;
+ "build" | "build-binary" | "build-source" | "build-prep" | "build-build" | "build-install" | "build-list")
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec
+ parse_spec
+ set_bconds_values
+ display_bconds
+ display_branches
+ if [ "$COMMAND" != "build-source" ]; then
+ check_buildarch
+ fi
+ fetch_build_requires
+ if [ "$INTEGER_RELEASE" = "yes" ]; then
+ echo "Checking release $PACKAGE_RELEASE..."
+ if echo $PACKAGE_RELEASE | grep -q '^[^.]*\.[^.]*$' 2>/dev/null ; then
+ Exit_error err_fract_rel "$PACKAGE_RELEASE"
+ fi
+ fi
+
+ # ./builder -bs test.spec -r AC-branch -Tp auto-ac- -tt
+ if [ -n "$TEST_TAG" ]; then
+ local TAGVER=`make_tagver`
+ echo "Searching for tag $TAGVER..."
+ TAGREL=$(cvs status -v $SPECFILE | grep -E "^[[:space:]]*${TAGVER}[[[:space:]]" | sed -e 's#.*(revision: ##g' -e 's#).*##g')
+ if [ -n "$TAGREL" ]; then
+ Exit_error err_tag_exists "$TAGVER" "$TAGREL"
+ fi
+
+ # - do not allow to build from HEAD when XX-branch exists
+ TREE_PREFIX=$(echo "$TAG_PREFIX" | sed -e 's#^auto-\([a-zA-Z]\+\)-.*#\1#g')
+ if [ "$TREE_PREFIX" != "$TAG_PREFIX" ]; then
+ TAG_BRANCH="${TREE_PREFIX}-branch"
+ TAG_STATUS=$(cvs status -v $SPECFILE | grep -Ei "${TAG_BRANCH}.+(branch: [0-9.]+)")
+ if [ -n "$TAG_STATUS" -a "$CVSTAG" = "HEAD" ]; then
+ Exit_error err_branch_exists "$TAG_STATUS"
+ fi
+ fi
+
+ fi
+
+ if [ -n "$NOSOURCE0" ] ; then
+ SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
+ fi
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ build_package
+ if [ "$UPDATE_POLDEK_INDEXES" = "yes" -a "$COMMAND" != "build-prep" ]; then
+ run_poldek --sdir="${POLDEK_INDEX_DIR}" --mkidxz
+ fi
+ remove_build_requires
+ else
+ Exit_error err_no_spec_in_cmdl
+ fi
+ ;;
+ "branch" )
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec
+ parse_spec
+ # don't fetch sources from remote locations
+ new_SOURCES=""
+ for file in $SOURCES; do
+ [ -n "`src_md5 $file`" ] && continue
+ new_SOURCES="$new_SOURCES $file"
+ done
+ SOURCES="$new_SOURCES"
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ branch_files $TAG $SOURCES $PATCHES $ICONS
+ else
+ Exit_error err_no_spec_in_cmdl
+ fi
+ ;;
+ "get" )
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec
+ parse_spec
+
+ if [ -n "$NOSOURCE0" ] ; then
+ SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
+ fi
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ else
+ Exit_error err_no_spec_in_cmdl
+ fi
+ ;;
+ "update_md5" )
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec
+ parse_spec
+
+ if [ -n "$NOSOURCE0" ] ; then
+ SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
+ fi
+ update_md5 $SOURCES
+ else
+ Exit_error err_no_spec_in_cmdl
+ fi
+ ;;
+ "tag" )
+ NOURLS=1
+ NODIST="yes"
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec
+ parse_spec
+
+ # don't fetch sources from remote locations
+ new_SOURCES=""
+ for file in $SOURCES; do
+ [ -n "`src_md5 $file`" ] && continue
+ new_SOURCES="$new_SOURCES $file"
+ done
+ SOURCES="$new_SOURCES"
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ tag_files $SOURCES $PATCHES $ICONS
+ else
+ Exit_error err_no_spec_in_cmdl
+ fi
+ ;;
+ "mr-proper" )
+ mr_proper
+ ;;
+ "list-sources-files" )
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ for SAP in $SOURCES $PATCHES; do
+ echo $SAP | awk '{gsub(/.*\//,"") ; print}'
+ done
+ ;;
+ "list-sources-urls" )
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ SAPS="$SOURCES $PATCHES"
+ for SAP in $SAPS ; do
+ echo $SAP
+ done
+ ;;
+ "list-sources-local-paths" )
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ for SAP in $SOURCES $PATCHES; do
+ echo $SOURCE_DIR/$(echo $SAP | awk '{gsub(/.*\//,"") ; print }')
+ done
+ ;;
+ "list-sources-distfiles-paths" )
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ for SAP in $SOURCES $PATCHES; do
+ if [ -n "$(src_md5 "$SAP")" ]; then
+ distfiles_path "$SAP"
+ fi
+ done
+ ;;
+ "list-sources-distfiles" )
+ init_builder
+ NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ for SAP in $SOURCES $PATCHES; do
+ if [ -n "$(src_md5 "$SAP")" ]; then
+ distfiles_url "$SAP"
+ fi
+ done
+ ;;
+ "list-sources-cvs" )
+ init_builder
+# NOCVSSPEC="yes"
+ DONT_PRINT_REVISION="yes"
+ get_spec
+ parse_spec
+ for SAP in $SOURCES $PATCHES; do
+ if [ -z "$(src_md5 "$SAP")" ]; then
+ echo $SAP | awk '{gsub(/.*\//,"") ; print}'
+ fi
+ done
+ ;;
+ "init_rpm_dir")
+ init_rpm_dir
+ ;;
+ "usage" )
+ usage
+ ;;
+ "short-version" )
+ echo "$VERSION"
+ ;;
+ "version" )
+ echo "$VERSIONSTRING"
+ ;;