]> TLD Linux GIT Repositories - packages/rpm-build-tools.git/blobdiff - builder.sh
- move defines from command line to separate variable
[packages/rpm-build-tools.git] / builder.sh
index 1d876e589f1b12ec841a419cd0a14ea53a1f563c..be1009f405389fccbd19446021afe31d72f48287 100755 (executable)
@@ -97,6 +97,7 @@ LASTLOG_FILE=""
 CHMOD="no"
 CHMOD_MODE="0644"
 RPMOPTS=""
+RPMUSERDEFS=""
 RPMBUILDOPTS=""
 BCOND=""
 GROUP_BCONDS="no"
@@ -122,6 +123,7 @@ WGET_RETRIES=${MAX_WGET_RETRIES:-0}
 
 # rsync repository with git refs of packages
 PKGREVS_URL="http://pkgrevs.tld-linux.org"
+SETPKGREV="false"
 
 # TLD git/df config
 TLD_GIT_SERVER="git://git.tld-linux.org"
@@ -733,21 +735,27 @@ EOF
        if ! is_rpmorg; then
                local safe_macrofiles
                safe_macrofiles=$(rpm $TARGET_SWITCH --showrc | awk -F: '/^macrofiles/ { gsub(/^macrofiles[ \t]+:/, "", $0); print $0 } ')
-               eval PATH=$CLEAN_PATH $RPMBUILD $TARGET_SWITCH --macros "$safe_macrofiles:$BUILDER_MACROS" $QUIET $RPMOPTS $RPMBUILDOPTS $BCOND $* 2>&1
+               eval PATH=$CLEAN_PATH $RPMBUILD $TARGET_SWITCH --macros "$safe_macrofiles:$BUILDER_MACROS" $QUIET $RPMOPTS $RPMUSERDEFS $RPMBUILDOPTS $BCOND $* 2>&1
        else
-               eval PATH=$CLEAN_PATH $RPMBUILD $TARGET_SWITCH --load "$BUILDER_MACROS" $QUIET $RPMOPTS $RPMBUILDOPTS $BCOND $* 2>&1
+               eval PATH=$CLEAN_PATH $RPMBUILD $TARGET_SWITCH --load "$BUILDER_MACROS" $QUIET $RPMOPTS $RPMUSERDEFS $RPMBUILDOPTS $BCOND $* 2>&1
        fi
 }
 
 cache_rpm_dump() {
+       local SPEC_PATH
        if [ -n "$DEBUG" ]; then
                set -x
                set -v
        fi
 
+       if [ ! -z "$1" ]; then
+               SPEC_PATH="$1"
+       else
+               SPEC_PATH="$PACKAGE_DIR/$SPECFILE"
+       fi
        if [ -x /usr/bin/rpm-specdump ]; then
                update_shell_title "cache_rpm_dump using rpm-specdump command"
-               rpm_dump_cache=$(rpm-specdump $TARGET_SWITCH $BCOND --define "_specdir $PACKAGE_DIR" --define "_sourcedir $PACKAGE_DIR" $PACKAGE_DIR/$SPECFILE)
+               rpm_dump_cache=$(eval rpm-specdump $TARGET_SWITCH $BCOND $RPMUSERDEFS --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $SPEC_PATH)
        else
                update_shell_title "cache_rpm_dump using rpmbuild command"
                local rpm_dump
@@ -810,7 +818,7 @@ parse_spec() {
        get_icons
 
        cd $PACKAGE_DIR
-       cache_rpm_dump
+       cache_rpm_dump "$1"
 
        if rpm_dump | grep -qEi ":.*nosource.*1"; then
                FAIL_IF_NO_SOURCES="no"
@@ -941,7 +949,7 @@ init_builder() {
        fi
 
        if [ "$NOINIT" != "yes" ] ; then
-               TOP_DIR=$(eval $RPM $RPMOPTS --eval '%{_topdir}')
+               TOP_DIR=$(eval $RPM $RPMOPTS $RPMUSERDEFS --eval '%{_topdir}')
 
                local macros_ver=$(rpm -E %?rpm_build_macros)
                if [ -z "$macros_ver" ]; then
@@ -1553,6 +1561,7 @@ get_pkgrev() {
 
 set_pkgrev() {
        local _tag
+       parse_spec "$1"
        if [ "$TAG_VERSION" = "yes" ]; then
                _tag=`make_tagver`
        fi
@@ -1757,10 +1766,16 @@ build_package() {
        # Enable/disable distro wide bconds based on ~/.distbcond
        process_distbcond "$specdir/$SPECFILE"
        # Add %tld macro to release to allow release control
-       sed -i -r -e 's/^Release:\s+(.*)$/Release:\t\1%{?tld}/' $specdir/$SPECFILE
+       sed -i -r -e '/^Release:/s/%\{\?tld\}//g; s/^Release:\s+(.*)$/Release:\t\1%{?tld}/;' $specdir/$SPECFILE
        # FIXME: eval here is exactly why?
-       PATH=$CLEAN_PATH eval teeboth "'$logfile'" ${TIME_COMMAND} ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE
+       PATH=$CLEAN_PATH eval teeboth "'$logfile'" ${TIME_COMMAND} ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMUSERDEFS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE
        retval=$?
+
+       # Set pkgrev if requested and build status is OK
+       if [ ! -z "$SETPKGREV" ] && [ "$SETPKGREV" = "true" ] && [ "$retval" -eq "0" ]; then
+               set_pkgrev "$specdir/$SPECFILE"
+       fi
+
        rm -r $specdir
 
        if [ -n "$logfile" ] && [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
@@ -1889,9 +1904,9 @@ process_distbcond() {
                                # use only flags which are in this package.
                                if [[ $bcond_avail = *${opt}* ]]; then
                                        if [[ $flag = -* ]]; then
-                                               sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_with/g;' $specdir/$SPECFILE
+                                               sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_with/g;' "$1"
                                        elif [[ $flag = +* ]]; then
-                                               sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_without/g;' $specdir/$SPECFILE
+                                               sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_without/g;' "$1"
                                        fi
                                fi
                        done
@@ -2131,12 +2146,12 @@ install_build_requires_rpmdeps() {
        local DEPS CNFL
        if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ]; then
                # TODO: Conflicts list doesn't check versions
-               CNFL=$(eval rpm-getdeps $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
-               DEPS=$(eval rpm-getdeps $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
+               CNFL=$(eval rpm-getdeps $BCOND $RPMOPTS $RPMUSERDEFS $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
+               DEPS=$(eval rpm-getdeps $BCOND $RPMOPTS $RPMUSERDEFS $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
        fi
        if [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
-               CNFL=$(eval rpm -q --specsrpm --conflicts $BCOND $RPMOPTS $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs)
-               DEPS=$(eval rpm -q --specsrpm --requires $BCOND $RPMOPTS $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs)
+               CNFL=$(eval rpm -q --specsrpm --conflicts $BCOND $RPMOPTS $RPMUSERDEFS $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs)
+               DEPS=$(eval rpm -q --specsrpm --requires $BCOND $RPMOPTS $RPM_USERDEFS $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs)
        fi
 
        if [ -n "$CNFL" ]; then
@@ -2176,10 +2191,10 @@ init_repository() {
 }
 
 init_rpm_dir() {
-       local TOP_DIR=$(eval $RPM $RPMOPTS --eval '%{_topdir}')
-       local rpmdir=$(eval $RPM $RPMOPTS --eval '%{_rpmdir}')
-       local buildir=$(eval $RPM $RPMOPTS --eval '%{_builddir}')
-       local srpmdir=$(eval $RPM $RPMOPTS --eval '%{_srcrpmdir}')
+       local TOP_DIR=$(eval $RPM $RPMOPTS $RPMUSERDEFS --eval '%{_topdir}')
+       local rpmdir=$(eval $RPM $RPMOPTS $RPMUSERDEFS --eval '%{_rpmdir}')
+       local buildir=$(eval $RPM $RPMOPTS $RPMUSERDEFS --eval '%{_builddir}')
+       local srpmdir=$(eval $RPM $RPMOPTS $RPMUSERDEFS --eval '%{_srcrpmdir}')
        local TEMPLATES=template-specs
        local tmp
 
@@ -2470,11 +2485,11 @@ while [ $# -gt 0 ]; do
                        MACRO="${1}"
                        shift
                        if echo "${MACRO}" | grep -q '\W'; then
-                               RPMOPTS="${RPMOPTS} --define \"${MACRO}\""
+                               RPMUSERDEFS="${RPMUSERDEFS} --define \"${MACRO}\""
                        else
                                VALUE="${1}"
                                shift
-                               RPMOPTS="${RPMOPTS} --define \"${MACRO} ${VALUE}\""
+                               RPMUSERDEFS="${RPMUSERDEFS} --define \"${MACRO} ${VALUE}\""
                        fi
                        ;;
                --alt_kernel)
@@ -2520,7 +2535,8 @@ while [ $# -gt 0 ]; do
                        DISTFILES_SERVER=${TLD_DISTFILES_SERVER}
                        ;;
                --pkgrev)
-                       COMMAND="set_pkgrev"
+                       SETPKGREV="true"
+                       COMMAND="build-source"
                        shift;;
                -lp)
                        COMMAND="list_pkgrev"
@@ -2871,17 +2887,6 @@ case "$COMMAND" in
        "version" )
                echo "$VERSIONSTRING"
                ;;
-       "set_pkgrev" )
-               init_builder
-               if [ -z "$SPECFILE" ]; then
-                       Exit_error err_no_spec_in_cmdl
-               fi
-               get_spec > /dev/null
-               parse_spec
-               set_bconds_values
-               display_bconds
-               set_pkgrev
-               ;;
        "list_pkgrev" )
                init_builder
                if [ -z "$SPECFILE" ]; then