]> TLD Linux GIT Repositories - packages/rpm-build-tools.git/blobdiff - builder.sh
- update .distbcond before processing
[packages/rpm-build-tools.git] / builder.sh
index 222e6fc3e911813bdb8adfead1be32d32fc2db47..b022e1f062c7d1d98c133c620336f424647acae1 100755 (executable)
@@ -121,8 +121,12 @@ PARALLEL_DOWNLOADS=10
 
 WGET_RETRIES=${MAX_WGET_RETRIES:-0}
 
+# .distbcond URL
+DISTBCOND_URL="https://src.tld-linux.org/.distbcond"
+
 # rsync repository with git refs of packages
-PKGREVS_URL="http://pkgrevs.tld-linux.org"
+PKGREVS_URL="https://pkgrevs.tld-linux.org"
+PKGREVS_PREFIX="tld/"
 SETPKGREV="false"
 
 # TLD git/df config
@@ -337,13 +341,11 @@ usage() {
 # if the line contains short and long option, it will take only the long option
 # but if you want both being completed, put the short option to separate line
        echo "\
-Usage: builder [--all-branches] [-D|--debug] [-V|--version] [--short-version]  [-a|--add_cvs] [-b|-ba|--build]
-[-bb|--build-binary] [-bs|--build-source] [-bc] [-bi] [-bl] [-u|--try-upgrade]
-[{-cf|--cvs-force}] [{-B|--branch} <branch>] [--depth <number>]
-[-g|--get] [-h|--help] [--ftp] [--http] [{-l|--logtofile} <logfile>] [-m|--mr-proper]
-[-q|--quiet] [--date <yyyy-mm-dd> [-r <tag>] [{-T|--tag <tag>]
-[-Tvs|--tag-version-stable] [-Ts|--tag-stable] [-Tv|--tag-version]
-[{-Tp|--tag-prefix} <prefix>] [{-tt|--test-tag}]
+Usage: builder [--all-branches] [-D|--debug] [-V|--version] [--short-version]
+[-a|--add_cvs] [-b|-ba|--build] [-bb|--build-binary] [-bs|--build-source]
+[-bc] [-bi] [-bl] [-u|--try-upgrade] [{-cf|--cvs-force}] [{-B|--branch} <branch>]
+[--depth <number>] [-g|--get] [-h|--help] [--ftp] [--http] [{-l|--logtofile} <logfile>]
+[-m|--mr-proper] [-q|--quiet] [--date <yyyy-mm-dd>] [-r <tag>]
 [-nu|--no-urls] [-v|--verbose] [--opts <rpm opts>] [--short-circuit]
 [--show-bconds] [--with/--without <feature>] [--define <macro> <value>]
 [--git-pld|--git-tld] [--pkgrev] [-lp]
@@ -444,18 +446,6 @@ Usage: builder [--all-branches] [-D|--debug] [-V|--version] [--short-version]  [
                       but icon file is absent),
 -su, --source-urls  - list urls - urls to sources and patches
                       intended for copying urls with spec with lots of macros in urls
--T <tag> , --tag <tag>
-                    - add git tag <tag> for files,
--Tvs, --tag-version-stable
-                    - add git tags STABLE and NAME-VERSION-RELEASE for files,
--Ts, --tag-stable
-                    - add git tag STABLE for files,
--Tv,
---tag-version       - add git tag NAME-VERSION-RELEASE for files,
--Tp, --tag-prefix <prefix>
-                    - add <prefix> to NAME-VERSION-RELEASE tags,
--tt, --test-tag <prefix>
-                    - fail if tag is already present,
 -ir, --integer-release-only
                     - allow only integer and snapshot releases
 -v, --verbose       - be verbose,
@@ -904,9 +894,9 @@ Exit_error() {
                        remove_build_requires
                        echo >&2 "Error: couldn't get out package name/version/release from spec file."
                        exit 6 ;;
-               "err_tag_exists" )
+               "err_pkgrev_exists" )
                        remove_build_requires
-                       echo >&2 "Tag ${2} already exists"
+                       echo >&2 "Error: package revision ${2} already exists"
                        exit 9 ;;
                "err_fract_rel" )
                        remove_build_requires
@@ -933,6 +923,9 @@ Exit_error() {
                "err_pkgrev_get" )
                        echo >&2 "Error: failed to get package revision for tag ${2}"
                        exit 16 ;;
+               "err_distbcond_update" )
+                       echo >&2 "Error: failed to update .distbcond"
+                       exit 17 ;;
                "err_not_implemented" )
                        remove_build_requires
                        echo >&2 "Error: functionality not yet imlemented"
@@ -1476,19 +1469,13 @@ get_files() {
        fi
 }
 
-make_tagver() {
+make_pkgrev() {
        if [ -n "$DEBUG" ]; then
                set -x
                set -v
        fi
 
-       # Check whether first character of PACKAGE_NAME is legal for tag name
-       if [ -z "${PACKAGE_NAME##[_0-9]*}" -a -z "$TAG_PREFIX" ]; then
-               TAG_PREFIX=tag_
-       fi
-
-       # NOTE: CVS tags may must not contain the characters `$,.:;@'
-       TAGVER=$(echo $TAG_PREFIX$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_RELEASE)
+       TAGVER=$(echo $PKGREVS_PREFIX$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_RELEASE)
 
        # Remove @kernel.version_release from TAGVER because tagging sources
        # could occur with different kernel-headers than kernel-headers used at build time.
@@ -1514,12 +1501,7 @@ get_pkgrev() {
 set_pkgrev() {
        local _tag
        parse_spec "$1"
-       if [ "$TAG_VERSION" = "yes" ]; then
-               _tag=`make_tagver`
-       fi
-       if [ -n "$TAG" ]; then
-               _tag="$TAG"
-       fi
+       _tag=`make_pkgrev`
        echo "Writing git revision for tag $_tag"
        local _tmp=$(mktemp /tmp/.builder-XXXX)
        rm $_tmp 2>/dev/null
@@ -1529,7 +1511,7 @@ set_pkgrev() {
        rm $_tmp 2>/dev/null
        [ "$(get_pkgrev "$_tag")" = "$CVSTAG" ] && return 0
        echo "$result" | grep -q -E "^OK$" && return 0
-       echo "$result" | grep -q -E "^EXISTS$" && Exit_error err_tag_exists "$_tag"
+       echo "$result" | grep -q -E "^EXISTS$" && Exit_error err_pkgrev_exists "$_tag"
        Exit_error err_pkgrev_set
 }
 
@@ -1712,7 +1694,7 @@ build_package() {
        local specdir=$(insert_gitlog $SPECFILE)
        ulimit -c unlimited
        # If required exclude directories with systemd related files from package contents
-       if grep -q -E 'systemd(unitdir|userunitdir|tmpfilesdir)' $specdir/$SPECFILE; then
+       if grep -q -E '(lib/(systemd|binfmt.d|sysctl.d|sysusers.d|tmpfiles.d)|systemd(unitdir|userunitdir|tmpfilesdir))' $specdir/$SPECFILE; then
                sed -i -e '/^%exclude_systemd_files/d; /^%files/s/$/\n%exclude_systemd_files/g;' $specdir/$SPECFILE
        fi
        # Enable/disable distro wide bconds based on ~/.distbcond
@@ -1831,17 +1813,23 @@ process_distbcond() {
        # w32codec-installer license_agreement
        # php +mysqli
        # ---
-       if [ -f $HOME/.distbcond ] || ([ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ]); then
-               :
-       else
-               return
+
+       local distbcond=$HOME/.distbcond
+
+       echo "Updating .distbcond"
+       wget -q --no-check-certificate $DISTBCOND_URL -O "$distbcond"
+       if [ $? -ne 0 ]; then
+               Exit_error err_distbcond_update
+       fi
+       DISTBCOND_MD5=$(grep -E "^# MD5 " "$distbcond" | cut -d ' ' -f 3)
+       DISTBCOND_MD5_LOCAL=$(grep -v -E "^#" "$distbcond" | md5sum | cut -d ' ' -f 1)
+       if [ "$DISTBCOND_MD5" != "$DISTBCOND_MD5_LOCAL" ]; then
+               rm -f "$distbcond"
+               Exit_error err_distbcond_update
        fi
 
        SN=${SPECFILE%%\.spec}
 
-       local distbcond=$HOME/.distbcond
-       [ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ] && distbcond=$HOME_ETC/.distbcond
-
        local bcond_avail=$(find_spec_bcond $SPECFILE)
 
        while read pkg flags; do
@@ -2382,33 +2370,6 @@ while [ $# -gt 0 ]; do
                -su | --source-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;;