]> git.pld-linux.org Git - packages/rpm-build-tools.git/blobdiff - builder.sh
Inserts git log instead of %changelog
[packages/rpm-build-tools.git] / builder.sh
index 8e2171e98679d75ec437090142d695ac5699ffc3..d6595afaf2398daa7bea41b90834d01355964f20 100755 (executable)
@@ -55,7 +55,6 @@ QUIET=""
 CLEAN=""
 DEBUG=""
 NOURLS=""
-NOCVS=""
 NOCVSSPEC=""
 NODIST=""
 NOINIT=""
@@ -65,7 +64,6 @@ ADD5=""
 NO5=""
 ALWAYS_CVSUP=${ALWAYS_CVSUP:-"yes"}
 CVSROOT=""
-GREEDSRC=""
 
 # use rpm 4.4.6+ digest format instead of comments if non-zero
 USEDIGEST=
@@ -115,6 +113,9 @@ CVSIGNORE_DF="yes"
 CVS_RETRIES=${MAX_CVS_RETRIES:-1000}
 CVS_SERVER="cvs.pld-linux.org"
 CVSTAG=""
+GIT_SERVER="git://github.com/draenog"
+HEAD_DETACHED=""
+DEPTH=""
 
 RES_FILE=""
 
@@ -221,13 +222,6 @@ if [ -d $HOME/rpm/SOURCES ]; then
        exit 1
 fi
 
-#
-# are we using cvs-nserver ?
-#
-CVS_NSERVER=0
-$CVS_COMMAND --version 2>&1 | grep -q 'CVS-nserver'
-[ $? -eq 0 ] && CVS_NSERVER=1
-
 POLDEK_INDEX_DIR="$($RPM --eval %_rpmdir)/"
 POLDEK_CMD="$SU_SUDO /usr/bin/poldek --noask"
 
@@ -255,11 +249,11 @@ usage() {
        echo "\
 Usage: builder [-D|--debug] [-V|--version] [--short-version] [--as_anon] [-a|--add_cvs] [-b|-ba|--build]
 [-bb|--build-binary] [-bs|--build-source] [-bc] [-bi] [-bl] [-u|--try-upgrade]
-[{-cf|--cvs-force}] [{-B|--branch} <branch>] [{-d|--cvsroot} <cvsroot>]
+[{-cf|--cvs-force}] [{-B|--branch} <branch>] [{-d|--cvsroot} <cvsroot>] [--depth <number>]
 [-g|--get] [-h|--help] [--ftp] [--http] [{-l|--logtofile} <logfile>] [-m|--mr-proper]
 [-q|--quiet] [--date <yyyy-mm-dd> [-r <cvstag>] [{-T|--tag <cvstag>]
 [-Tvs|--tag-version-stable] [-Ts|--tag-stable] [-Tv|--tag-version]
-[{-Tp|--tag-prefix} <prefix>] [{-tt|--test-tag}] [--use-greed-sources]
+[{-Tp|--tag-prefix} <prefix>] [{-tt|--test-tag}]
 [-nu|--no-urls] [-v|--verbose] [--opts <rpm opts>] [--short-circuit]
 [--show-bconds] [--with/--without <feature>] [--define <macro> <value>]
 <package>[.spec][:cvstag]
@@ -295,6 +289,8 @@ Usage: builder [-D|--debug] [-V|--version] [--short-version] [--as_anon] [-a|--a
                     - setup \$CVSROOT,
 --define <macro> <value>
                     - define a macro <macro> with value <value>,
+--depth <number>
+                                       - make shallow fetch
 --alt_kernel <kernel>
                     - same as --define 'alt_kernel <kernel>'
 --nodeps            - rpm won't check any dependences
@@ -305,7 +301,6 @@ Usage: builder [-D|--debug] [-V|--version] [--short-version] [--as_anon] [-a|--a
 --ftp, --http       - use ftp or http protocol to access distfiles server
 -l <logfile>, --logtofile <logfile>
                     - log all to file,
--nc, --no-cvs       - don't download sources from CVS, if source URL is given,
 -ncs, --no-cvs-specs
                     - don't check specs in CVS
 -nd, --no-distfiles - don't download from distfiles
@@ -368,9 +363,6 @@ Usage: builder [-D|--debug] [-V|--version] [--short-version] [--as_anon] [-a|--a
                     - as above, but allow float version
                                        php-pear-Services_Digg/
 --upgrade-version   - upgrade to specified version in try-upgrade
---use-greed-sources
-                    - try download source from tag head if don't find it in
-                      current tag
 -U, --update        - refetch sources, don't use distfiles, and update md5 comments
 -Upi, --update-poldek-indexes
                     - refresh or make poldek package index files.
@@ -400,6 +392,31 @@ tempfile() {
        mktemp -t builder.XXXXXX || ${TMPDIR:-/tmp}/builder.$RANDOM.$$
 }
 
+# inserts git log instead of %changelog
+# outputs name of modified file created by tempfile
+insert_gitlog() {
+       local SPECFILE=$1 specfile=$(tempfile) gitlog=$(tempfile) speclog=$(tempfile) 
+
+       # allow this being customized
+       local log_entries=$(rpm -E '%{?_buildchangelogtruncate}')
+
+       # rpm5.org/rpm.org do not parse any other date format than 'Wed Jan 1 1997'
+       # otherwise i'd use --date=iso here
+       # http://rpm5.org/cvs/fileview?f=rpm/build/parseChangelog.c&v=2.44.2.1
+       # http://rpm.org/gitweb?p=rpm.git;a=blob;f=build/parseChangelog.c#l31
+       # NOTE: changelog date is always in UTC for rpmbuild
+       # * 1265749244 +0000 Random Hacker <nikt@pld-linux.org> 9370900
+       git log -${log_entries:-20} --format=format:"* %ad %an <%ae> %h%n%s%n" --date=raw > $gitlog
+       gawk '/^\* /{printf("* %s %s\n", strftime("%a %b %d %Y", $2), substr($0, length($1)+length($2)+length($3)+4)); next}{print}' $gitlog > $speclog
+       sed '/^%changelog/,$d' $SPECFILE | sed -e "\${
+                       a%changelog
+                       r $speclog
+               }
+       " > $specfile
+       rm -f $gitlog $speclog
+       echo $specfile
+}
+
 # change dependency to specname
 # common changes:
 # - perl(Package::Name) -> perl-Package-Name
@@ -691,7 +708,7 @@ Exit_error() {
                        echo >&2 "Error: conditions reject building this spec (${2})."
                        exit 12 ;;
                "err_not_implemented" )
-                       remov_build_requires
+                       remove_build_requires
                        echo >&2 "Error: functionality not yet imlemented"
                        exit 110 ;;
        esac
@@ -724,6 +741,8 @@ init_builder() {
                REPO_DIR="."
                PACKAGE_DIR="."
        fi
+       export GIT_WORK_TREE=$PACKAGE_DIR
+       export GIT_DIR=$PACKAGE_DIR/.git
 
        __PWD=$(pwd)
 }
@@ -744,36 +763,41 @@ get_spec() {
        fi
 
        if [ "$NOCVSSPEC" != "yes" ]; then
-               if [ ! -s CVS/Root -a "$NOCVSSPEC" != "yes" ]; then
-                       echo "Warning: No CVS access defined - using local .spec file"
-                       NOCVSSPEC="yes"
-               fi
-
-               if [ -d "$ASSUMED_NAME" -a -s "$ASSUMED_NAME/CVS/Root" ]; then
-                       cvsup "$ASSUMED_NAME/$SPECFILE" || Exit_error err_no_spec_in_repo
-               elif [ "$ADD_PACKAGE_CVS" = "yes" ]; then
-                       if [ ! -r "$ASSUMED_NAME/$SPECFILE" ]; then
-                               echo "ERROR: No package to add ($ASSUMED_NAME/$SPECFILE)" >&2
-                               exit 101
-                       fi
-                       if [ ! -s "$ASSUMED_NAME/CVS/Root" ]; then
-                               cvsup -a $ASSUMED_NAME || Exit_error err_cvs_add_failed
+               if [ -z "$DEPTH" ]; then
+                       if [ -d "$ASSUMED_NAME/.git" ]; then
+                               git fetch origin || Exit_error err_no_spec_in_repo
+                       elif [ "$ADD_PACKAGE_CVS" = "yes" ]; then
+                               if [ ! -r "$ASSUMED_NAME/$SPECFILE" ]; then
+                                       echo "ERROR: No package to add ($ASSUMED_NAME/$SPECFILE)" >&2
+                                       exit 101
+                               fi
+                               Exit_error err_not_implemented
+                       else
+                               (
+                                       unset GIT_WORK_TREE
+                                       git clone  ${GIT_SERVER}/${ASSUMED_NAME}.git || {
+                                               # softfail if new package, i.e not yet added to cvs
+                                               [ ! -f "$ASSUMED_NAME/$SPECFILE" ] && Exit_error err_no_spec_in_repo
+                                               echo "Warning: package not in CVS - assuming new package"
+                                               NOCVSSPEC="yes"
+                                       }
+                               )
                        fi
-                       cvsup -a "$ASSUMED_NAME/$SPECFILE" || Exit_error err_cvs_add_failed
                else
-                       cvsup -c -d $ASSUMED_NAME "packages/$ASSUMED_NAME/$SPECFILE" || {
-                               # softfail if new package, i.e not yet added to cvs
-                               [ ! -f "$ASSUMED_NAME/$SPECFILE" ] && Exit_error err_no_spec_in_repo
-                               echo "Warning: package not in CVS - assuming new package"
-                               NOCVSSPEC="yes"
-                               NOCVS="yes"
+                       if [ ! -d "$ASSUMED_NAME/.git" ]; then
+                               if [ ! -d "$ASSUMED_NAME" ]; then
+                                       mkdir $ASSUMED_NAME
+                               fi
+                               git init
+                               git remote add origin ${GIT_SERVER}/${ASSUMED_NAME}.git
+                       fi
+                       git fetch "$DEPTH" origin ${CVSTAG}:remotes/origin/${CVSTAG} || {
+                               echo >&2 "Error: branch $CVSTAG does not exist"
+                               exit 3
                        }
-
-                       # remove Entries.Static -- so 'cvs up' would update all files in a repo
-                       rm -f "$ASSUMED_NAME/CVS/Entries.Static"
                fi
 
-               cvsignore_df .cvsignore
+               cvsignore_df .gitignore
 
                # add default log format to .cvsignore if it is relative to package dir
                if [ -n "$LOGFILE" -a "$LOGFILE" = "${LOGFILE##*/}" ]; then
@@ -794,6 +818,15 @@ get_spec() {
                fi
        fi
 
+       if [ -n "$CVSTAG" ]; then
+               git checkout "$CVSTAG" -- 2>/dev/null || git checkout -t "origin/$CVSTAG" > /dev/null || exit
+               git symbolic-ref -q HEAD > /dev/null &&
+                       git merge '@{u}'
+               if [ -n "$CVSDATE" ]; then
+                       git checkout $(git rev-list -n1 --before="'$CVSDATE'" $CVSTAG) || exit 1
+               fi
+       fi
+
        if [ ! -f "$ASSUMED_NAME/$SPECFILE" ]; then
                Exit_error err_no_spec_in_repo
        fi
@@ -849,13 +882,8 @@ src_md5() {
        local md5
 
        if [ -f additional-md5sums ]; then
-               local spec_rev=$(grep $SPECFILE CVS/Entries 2>/dev/null | sed -e s:/$SPECFILE/:: -e s:/.*::)
-               if [ -z "$spec_rev" ]; then
-                       spec_rev=$(head -n 1 $SPECFILE | sed -e 's/.*\$Revision: \([0-9.]*\).*/\1/')
-               fi
-               local spec="$SPECFILE[0-9.,]*,$(echo $spec_rev | sed 's/\./\\./g')"
                md5=$(grep -s -v '^#' additional-md5sums | \
-               grep -E "[      ]$(basename "$1")[      ]+${spec}([     ,]|\$)" | \
+               grep -E "[      ]$(basename "$1")([     ,]|\$)" | \
                sed -e 's/^\([0-9a-f]\{32\}\).*/\1/' | \
                grep -E '^[0-9a-f]{32}$')
 
@@ -913,7 +941,7 @@ cvsignore_df() {
        if [ "$CVSIGNORE_DF" != "yes" ]; then
                return
        fi
-       cvsignore=${PACKAGE_DIR}/.cvsignore
+       cvsignore=${PACKAGE_DIR}/.gitignore
 
        # add only if not yet there
        if ! awk -vf="$1" -vc=1 '$0 == f { c = 0 } END { exit c }' $cvsignore 2>/dev/null; then
@@ -921,67 +949,6 @@ cvsignore_df() {
        fi
 }
 
-cvsup() {
-       update_shell_title "cvsup"
-       local OPTIONS="" ACTION="up"
-
-       # checkout
-       if [ "$1" = "-c" ]; then
-               ACTION="co"
-               shift
-       fi
-       # add
-       if [ "$1" = "-a" ]; then
-               ACTION="add"
-               shift
-       fi
-
-       OPTIONS="$ACTION "
-
-       if [ -n "$CVSROOT" ]; then
-               OPTIONS="-d $CVSROOT $OPTIONS"
-       fi
-
-       if [ "$ACTION" != "add" ]; then
-               if [ -z "$CVSDATE" -a -z "$CVSTAG" ]; then
-                       OPTIONS="$OPTIONS -A"
-               else
-                       if [ -n "$CVSDATE" ]; then
-                               OPTIONS="$OPTIONS -D $CVSDATE"
-                       fi
-                       if [ -n "$CVSTAG" ]; then
-                               # FIXME: cvs add actually works with -r ?
-                               OPTIONS="$OPTIONS -r $CVSTAG"
-                       fi
-               fi
-       fi
-
-       local result=1
-       local retries_counter=0
-       if [ $# = 1 ]; then
-               update_shell_title "cvsup: $*"
-       else
-               update_shell_title "cvsup: $# files"
-       fi
-       while [ "$result" != "0" -a "$retries_counter" -le "$CVS_RETRIES" ]; do
-               retries_counter=$(( $retries_counter + 1 ))
-               output=$(LC_ALL=C $CVS_COMMAND $OPTIONS "$@" 2>&1)
-               result=$?
-               [ -n "$output" ] && echo "$output"
-               if echo "$output" | grep -qE "(Cannot connect to|connect to .* failed|Connection reset by peer|Connection timed out|Unknown host)" \
-                       && [ "$result" -ne "0" -a "$retries_counter" -le "$CVS_RETRIES" ]; then
-                       echo "Trying again [$*]... ($retries_counter)"
-                       update_shell_title "cvsup: retry #$retries_counter"
-                       sleep 2
-                       continue
-               else
-                       break
-               fi
-       done
-       update_shell_title "cvsup: done!"
-       return $result
-}
-
 # returns true if "$1" is ftp, http or https protocol url
 is_url() {
        case "$1" in
@@ -1090,11 +1057,6 @@ get_files() {
        if [ $# -gt 0 ]; then
                cd "$PACKAGE_DIR"
 
-               if [ ! -s CVS/Root -a "$NOCVS" != "yes" ]; then
-                       echo "Warning: No CVS access defined for SOURCES"
-                       NOCVS="yes"
-               fi
-
                local nc=0
                local get_files_cvs=""
                for i in "$@"; do
@@ -1187,14 +1149,6 @@ get_files() {
                                                rm -f "$target"
                                                FROM_DISTFILES=0
                                        fi
-                               elif [ "$NOCVS" != "yes" -a -z "$srcmd5" ]; then
-                                       if [ $# -gt 1 ]; then
-                                               get_files_cvs="$get_files_cvs $fp"
-                                               update_shell_title "$fp (will cvs up later)"
-                                               cvsup=1
-                                       else
-                                               cvsup $fp
-                                       fi
                                fi
 
                                if [ -z "$NOURLS" ] && [ ! -f "$fp" -o -n "$UPDATE" ] && [ "`echo $i | grep -E 'ftp://|http://|https://'`" ]; then
@@ -1220,11 +1174,7 @@ get_files() {
 
                        # the md5 check must be moved elsewhere as if we've called from update_md5 the md5 is wrong.
                        if [ ! -f "$fp" -a "$FAIL_IF_NO_SOURCES" != "no" ]; then
-                               if [ -n "GREEDSRC" ]; then
-                                       get_greed_sources $i
-                               else
-                                       Exit_error err_no_source_in_repo $i
-                               fi
+                               Exit_error err_no_source_in_repo $i
                        fi
 
                        # we check md5 here just only to refetch immediately
@@ -1256,9 +1206,6 @@ get_files() {
                done
                SHELL_TITLE_PREFIX=""
 
-               if [ "$get_files_cvs" ]; then
-                       cvsup $get_files_cvs
-               fi
 
                if [ "$CHMOD" = "yes" ]; then
                        CHMOD_FILES=$(nourl "$@")
@@ -1294,26 +1241,6 @@ make_tagver() {
        echo -n "$TAGVER"
 }
 
-# bool is_tag_a_branch(tag)
-#
-# returns 1 if a tag is a branch set on SPECFILE
-is_tag_a_branch() {
-       if [ -n "$DEBUG" ]; then
-               set -x
-               set -v
-       fi
-
-       if [ $# -ne 1 ]; then
-               return 0;
-       fi
-
-       TAG=$1
-
-       cd "$PACKAGE_DIR"
-       $CVS_COMMAND status -v $SPECFILE | grep -Eiq "${TAG}.+(branch: [0-9.]+)"
-       return $?
-}
-
 tag_files() {
        TAG_FILES="$@"
 
@@ -1328,114 +1255,45 @@ tag_files() {
        local TAGVER
        if [ "$TAG_VERSION" = "yes" ]; then
                TAGVER=`make_tagver`
-               echo "CVS tag: $TAGVER"
+               echo "tag: $TAGVER"
        fi
        if [ -n "$TAG" ]; then
-               echo "CVS tag: $TAG"
+               echo "tag: $TAG"
        fi
 
        local OPTIONS="tag $CVS_FORCE"
-       if [ -n "$CVSROOT" ]; then
-               OPTIONS="-d $CVSROOT $OPTIONS"
-       fi
 
-       # if a tagname we are about to set already exists
-       # and happens to be a branch (common case with AC-branch)
-       # pass -B (allows -F to disturb branch tag)
        local _tag=$TAG
        if [ "$TAG_VERSION" = "yes" ]; then
                _tag=$TAGVER
        fi;
-       is_tag_a_branch $_tag
-       if [ $? -eq 0 -a $CVS_NSERVER -eq 0 ]; then
-               OPTIONS="$OPTIONS -B"
-       fi;
 
        cd "$PACKAGE_DIR"
-       local tag_files
-       for i in $TAG_FILES; do
-               # don't tag files stored on distfiles
-               [ -n "`src_md5 $i`" ] && continue
-               local fp=`nourl "$i"`
-               if [ -f "$fp" ]; then
-                       tag_files="$tag_files $fp"
-               elif [ -n "GREEDSRC" ]; then
-                       get_greed_sources $i
-               else
-                       Exit_error err_no_source_in_repo $i
-               fi
-       done
 
-       if [ "$tag_files" ]; then
-               if [ "$TAG_VERSION" = "yes" ]; then
-                       update_shell_title "tag sources: $TAGVER"
-                       printf "Tagging %d files\n" $(echo $tag_files | wc -w)
-                       $CVS_COMMAND $OPTIONS $TAGVER $tag_files || exit
-               fi
-               if [ -n "$TAG" ]; then
-                       update_shell_title "tag sources: $TAG"
-
-                       while [ "$tag_files" ]; do
-                               local chunk=$(echo $tag_files | tr ' ' '\n' | head -n 100)
-                               printf "Tagging %d files\n" $(echo $chunk | wc -w)
-                               $CVS_COMMAND $OPTIONS $TAG $chunk || exit
-                               tag_files=$(echo $tag_files | tr ' ' '\n' | tail +101)
-                       done
-               fi
-       fi
-
-       cd "$PACKAGE_DIR"
        if [ "$TAG_VERSION" = "yes" ]; then
-               update_shell_title "tag spec: $TAGVER"
-               $CVS_COMMAND $OPTIONS $TAGVER $SPECFILE || exit
+               update_shell_title "tag sources: $TAGVER"
+               git $OPTIONS $TAGVER || exit
        fi
        if [ -n "$TAG" ]; then
-               update_shell_title "tag spec: $TAG"
-               $CVS_COMMAND $OPTIONS $TAG $SPECFILE || exit
+               update_shell_title "tag sources: $TAG"
+               git $OPTIONS $TAG $chunk || exit
        fi
 }
 
 branch_files() {
        TAG=$1
-       echo "CVS branch tag: $TAG"
+       echo "Git branch: $TAG"
        shift
 
-       TAG_FILES="$@"
-
        if [ -n "$DEBUG" ]; then
                set -x
                set -v
        fi
 
-       local OPTIONS="tag $CVS_FORCE -b"
-
-       # branch exists?
-       is_tag_a_branch $TAG
-       if [ $? -eq 1 ]; then
-               OPTIONS="$OPTIONS -B"
-       fi
-
-       if [ -n "$CVSROOT" ]; then
-               OPTIONS="-d $CVSROOT $OPTIONS"
-       fi
-       cd "$PACKAGE_DIR"
-       local tag_files
-       for i in $TAG_FILES; do
-               local fp=`nourl "$i"`
-               if [ -f "$fp" ]; then
-                       tag_files="$tag_files $fp"
-               elif [ -n "GREEDSRC" ]; then
-                       get_greed_sources $i
-               else
-                       Exit_error err_no_source_in_repo $i
-               fi
-       done
-       if [ "$tag_files" ]; then
-               $CVS_COMMAND $OPTIONS $TAG $tag_files || exit
-       fi
+       local OPTIONS="branch $CVS_FORCE"
 
        cd "$PACKAGE_DIR"
-       $CVS_COMMAND $OPTIONS $TAG $SPECFILE || exit
+       git $OPTIONS $TAG || exit
 }
 
 
@@ -1566,10 +1424,11 @@ build_package() {
                        echo "LASTLOG=$LOG" > $LASTLOG_FILE
                fi
                RES_FILE=$(tempfile)
+               local specfile=$(insert_gitlog $SPECFILE)
 
-               (time eval ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $SPECFILE; echo $? > $RES_FILE) 2>&1 |tee $LOG
+               (time eval ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specfile; echo $? > $RES_FILE) 2>&1 |tee $LOG
                RETVAL=`cat $RES_FILE`
-               rm $RES_FILE
+               rm $RES_FILE $specfile
                if [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
                        if [ "$RETVAL" -eq "0" ]; then
                                mv $LOG $LOGDIROK
@@ -1813,7 +1672,7 @@ display_bconds() {
 display_branches() {
        if [ "$NOCVSSPEC" != "yes" ]; then
                echo -n "Available branches: "
-               $CVS_COMMAND status -v "${SPECFILE}" | awk '!/Sticky Tag:/ && /\(branch:/ { print $1 } ' | xargs
+               git branch -r | grep '^  origin' | grep -v origin/HEAD | sed 's#^ *origin/##' | xargs
        fi
 }
 
@@ -2084,18 +1943,6 @@ init_rpm_dir() {
        echo "- edit $TOP_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_COMMAND -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
@@ -2119,11 +1966,11 @@ mr_proper() {
        get_spec
        parse_spec
 
-       # remove from CVS/Entries
-       cvs_entry_remove $PACKAGE_DIR $SPECFILE $SOURCES $PATCHES
-
        # remove spec and sources
-       $RPMBUILD --clean --rmsource --rmspec --nodeps --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $SPECFILE
+       $RPMBUILD --clean --rmsource --rmspec --nodeps --define "_specdir $PACKAGE_DIR" --define "_sourcedir $PACKAGE_DIR" $SPECFILE
+       rm -rf $PACKAGE_DIR/.git .gitignore
+       cd $__PWD
+       rmdir --ignore-fail-on-non-empty $PACKAGE_DIR
 }
 
 #---------------------------------------------
@@ -2144,7 +1991,6 @@ while [ $# -gt 0 ]; do
                -a5 | --add-md5 )
                        COMMAND="update_md5"
                        NODIST="yes"
-                       NOCVS="yes"
                        NOCVSSPEC="yes"
                        ADD5="yes"
                        shift ;;
@@ -2181,9 +2027,13 @@ while [ $# -gt 0 ]; do
                -c | --clean )
                        CLEAN="--clean"; shift ;;
                -cf | --cvs-force )
-                       CVS_FORCE="-F"; shift;;
+                       CVS_FORCE="-f"; shift;;
                -d | --cvsroot )
                        shift; CVSROOT="${1}"; shift ;;
+               --depth )
+                       DEPTH="--depth=$2"
+                       shift 2
+                       ;;
                -g | --get )
                        COMMAND="get"; shift ;;
                -h | --help )
@@ -2208,8 +2058,6 @@ while [ $# -gt 0 ]; do
                        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 )
@@ -2223,7 +2071,6 @@ while [ $# -gt 0 ]; do
                -ns0 | --no-source0 )
                        NOSOURCE0="yes"; shift ;;
                -nn | --no-net )
-                       NOCVS="yes"
                        NOCVSSPEC="yes"
                        NODIST="yes"
                        NOMIRRORS="yes"
@@ -2276,14 +2123,16 @@ while [ $# -gt 0 ]; do
                -q | --quiet )
                        QUIET="--quiet"; shift ;;
                --date )
-                       CVSDATE="${2}"; shift 2 ;;
+                       CVSDATE="${2}"; shift 2
+                       date -d "$CVSDATE" > /dev/null 2>&1 || { echo >&2 "No valid date specified"; exit 3; }
+                       ;;
                -r | --cvstag )
                        CVSTAG="$2"
                        shift 2
                        ;;
                -A)
                        shift
-                       CVSTAG="HEAD"
+                       CVSTAG="master"
                        ;;
                -R | --fetch-build-requires)
                        FETCH_BUILD_REQUIRES="yes"
@@ -2355,9 +2204,6 @@ while [ $# -gt 0 ]; do
                --init-rpm-dir)
                        COMMAND="init_rpm_dir"
                        shift ;;
-               --use-greed-sources )
-                       GREEDSRC="1"
-                       shift;;
                -u | --try-upgrade )
                        TRY_UPGRADE="1"; shift ;;
                --upgrade-version )
@@ -2422,15 +2268,20 @@ while [ $# -gt 0 ]; do
        esac
 done
 
-[ -d "$ASSUMED_NAME" ] && CVS_ENTRIES="$ASSUMED_NAME/CVS/Entries" || CVS_ENTRIES="CVS/Entries"
-if [ -f "$CVS_ENTRIES" ] && [ -z "$CVSTAG" ]; then
-       CVSTAG=$(awk -vSPECFILE=$(basename $SPECFILE) -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' ${CVS_ENTRIES})
-       if [ "$CVSTAG" ]; then
-               echo >&2 "builder: Sticky tag $CVSTAG active. Use -r TAGNAME to override."
+[ -d "$ASSUMED_NAME" ] && GIT_DIR="$ASSUMED_NAME/.git" || GIT_DIR=.git
+if [ -d "$GIT_DIR" ] && [ -z "$CVSTAG" ]; then
+       if CVSTAG=$(GIT_DIR=$GIT_DIR git symbolic-ref HEAD) 2>/dev/null; then
+               CVSTAG=${CVSTAG#refs/heads/}
+               if [ "$CVSTAG" != "master" ]; then
+                       echo >&2 "builder: Active branch $CVSTAG. Use -r BRANCHNAME to override"
+               fi
+       else
+               echo >&2 "On detached HEAD. Use -r BRANCHNAME to override"
+               HEAD_DETACHED="yes"
        fi
 elif [ "$CVSTAG" = "HEAD" ]; then
        # assume -r HEAD is same as -A
-       CVSTAG=""
+       CVSTAG="master"
 fi
 
 if [ "$CVSTAG" ]; then
@@ -2541,17 +2392,14 @@ case "$COMMAND" in
                if [ -n "$TEST_TAG" ]; then
                        local TAGVER=`make_tagver`
                        echo "Searching for tag $TAGVER..."
-                       TAGREL=$($CVS_COMMAND 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
+                       git show-ref --quiet --verify "refs/tags/$TAGVER" && Exit_error err_tag_exists "$TAGVER" "$TAGREL"
 
                        # - 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_COMMAND status -v $SPECFILE | grep -Ei "${TAG_BRANCH}.+(branch: [0-9.]+)")
-                               if [ -n "$TAG_STATUS" -a "$CVSTAG" = "HEAD" ]; then
+                               TAG_STATUS=$(git branch -r | grep -i "origin/$TAG_BRANCH$" | sed 's# *origin/##')
+                               if [ -n "$TAG_STATUS" -a -z "$CVSTAG" ]; then
                                        Exit_error err_branch_exists "$TAG_STATUS"
                                fi
                        fi
@@ -2586,16 +2434,7 @@ case "$COMMAND" in
 
                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
+               branch_files $TAG
                ;;
        "add_cvs" )
                init_builder
@@ -2651,17 +2490,7 @@ case "$COMMAND" in
 
                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
+               tag_files
                ;;
        "mr-proper" )
                mr_proper
This page took 0.082315 seconds and 4 git commands to generate.