Ignore:
Timestamp:
Nov 21, 2004, 11:01:59 PM (20 years ago)
Author:
joergs
Message:

optimized: skip building rpms that do already exist in the current version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/technical/common/build/build.sh

    r694 r695  
    2424# %users  ALL=(ALL)       NOPASSWD: /bin/su
    2525# for automatic building
     26#
     27# return codes:
     28# 0: success
     29# 1: skipped (current RPM already in dest dir)
     30# >1: error
     31
    2632
    2733CONFIG_FILE=/usr/local/etc/build
     
    98104
    99105if [ "$1" ]; then
    100         cp -a "$1" ${BUILDTEMP}/src/${PACKAGE}
    101         cd ${BUILDTEMP}/src/${PACKAGE}; rpm2cpio $1 | cpio -i
     106        EXPECTED_DEST_RPM_FILENAME=${DEST_DIR}/${BUILD_DIST}/`echo $1 | sed 's/\.src\./.*./'`
     107        if [ -f $EXPECTED_DEST_RPM_FILENAME ]; then
     108                echo
     109                echo "Build of \"${PACKAGE}\" unnecessary. Current RPM already at " $EXPECTED_DEST_RPM_FILENAME
     110                echo
     111                exit 1
     112        else
     113                cp -a "$1" ${BUILDTEMP}/src/${PACKAGE}
     114                cd ${BUILDTEMP}/src/${PACKAGE}; rpm2cpio $1 | cpio -i
     115        fi
    102116else
    103117        cp -a $SPECFILE ${BUILDTEMP}/src/${PACKAGE}
     
    111125                # in case of local modification a "m" is added to the release number
    112126                SVN_BUILD_MODIFIED=$(svn status -v | grep "^ *M" | wc -l)
    113                 if [ $SVN_BUILD_MODIFIED -gt 0 ]; then
     127                # checks if a file is commited,
     128                # but update on its directory is not performed
     129                SVN_LAST_MODIFICATION=$(svn status -v | sed -n 's/^ *[0-9]* *\([0-9]*\) .*/\1/p' | sort -n | tail -1)
     130                if [ $SVN_BUILD_MODIFIED -gt 0 ]; then 
    114131                        SVN_BUILD_RELEASE=${SVN_BUILD_RELEASE}m
     132                elif [ $SVN_LAST_MODIFICATION -ne $SVN_BUILD_RELEASE ]; then
     133                        SVN_BUILD_RELEASE=${SVN_BUILD_RELEASE}p
    115134                else # check if RPM has been build already
    116135                        EXPECTED_DEST_RPM_FILENAME=${DEST_DIR}/${BUILD_DIST}/${PACKAGE}-${VERSION}-${SVN_BUILD_RELEASE}.*.rpm
     
    118137                                echo
    119138                                echo "Build of \"${PACKAGE}\" unnecessary. Current RPM already at " $EXPECTED_DEST_RPM_FILENAME
    120                                 echo "verify if 'svn update' has been performed on the source directory"
    121139                                echo
    122                                 exit
     140                                exit 1
    123141                        fi                     
    124142                fi
     
    174192#!/bin/bash
    175193# local buildscript
    176 #. /work/src/bin/.profile
    177194export BUILD_ROOT=$BUILD_ROOT
    178195export BUILD_DIST=$BUILD_DIST
     
    190207mkdir -p ${DEST_DIR}/src
    191208# delete all old versions of this package
    192 rm -f ${DEST_DIR}/src/${PACKAGE}-*.src.rpm
     209for i in ${DEST_DIR}/src/${PACKAGE}-*.src.rpm; do
     210        if [ -f $i -a ${PACKAGE} = "`rpm -qp --qf "%{NAME}\n" $i`" ]; then
     211                rm $i
     212        fi
     213done
     214#rm -f ${DEST_DIR}/src/${PACKAGE}-*.src.rpm
    193215
    194216if !(cp -a ${BUILD_ROOT}/usr/src/packages/SRPMS/${PACKAGE}-${VERSION}-*.src.rpm ${DEST_DIR}/src 2> /dev/null); then
    195         ERROR=1
     217        ERROR=4
    196218fi
    197219
    198220mkdir -p ${DEST_DIR}/${BUILD_DIST}
    199221# delete all old versions of this package
    200 rm -f ${DEST_DIR}/${BUILD_DIST}/${PACKAGE}-*.rpm
     222for i in ${DEST_DIR}/${BUILD_DIST}/${PACKAGE}-*.rpm; do
     223        if [ -f $i -a ${PACKAGE} = "`rpm -qp --qf "%{NAME}\n" $i`" ]; then
     224                rm $i
     225        fi
     226done
     227#rm -f ${DEST_DIR}/${BUILD_DIST}/${PACKAGE}-*.rpm
    201228
    202229if !(cp -a ${BUILD_ROOT}/usr/src/packages/RPMS/*/${PACKAGE}*${VERSION}-*.*.rpm ${DEST_DIR}/${BUILD_DIST} ); then
    203         ERROR=2
     230        ERROR=8
    204231fi
    205232
Note: See TracChangeset for help on using the changeset viewer.