diff --git a/make/rpmdist.mk b/make/rpmdist.mk index 9fefadc3..3c48823a 100644 --- a/make/rpmdist.mk +++ b/make/rpmdist.mk @@ -79,6 +79,8 @@ RPM_REQUIRES_DEVEL += $(call proj_query, pkg-requires --dont-expand-versi RPM_REQUIRES_RUN += $(call proj_query, pkg-requires --dont-expand-version-macros $(PROJ_QUERY_PKG_REQUIRES_EXTRA_ARGS) run $(PROJECT)) RPM_CONFLICTS_DEVEL += $(call proj_query, pkg-conflicts --dont-expand-version-macros $(PROJ_QUERY_PKG_CONFLICTS_EXTRA_ARGS) devel $(PROJECT)) RPM_CONFLICTS_RUN += $(call proj_query, pkg-conflicts --dont-expand-version-macros $(PROJ_QUERY_PKG_CONFLICTS_EXTRA_ARGS) run $(PROJECT)) +RPM_PROVIDES_DEVEL += $(call proj_query, pkg-provides --dont-expand-version-macros $(PROJ_QUERY_PKG_PROVIDES_EXTRA_ARGS) devel $(PROJECT)) +RPM_PROVIDES_RUN += $(call proj_query, pkg-provides --dont-expand-version-macros $(PROJ_QUERY_PKG_PROVIDES_EXTRA_ARGS) run $(PROJECT)) RPM_UPLOAD_OS_NAME = $(shell echo $(OS) | sed 's/-.*//') RPM_UPLOAD_OS_VERSION = $(shell echo $(OS) | sed 's/[^-]\+-//') @@ -96,6 +98,7 @@ PKG_SH = $(PKG_SH_EXE) \ -N $(RPM_PROJECT) -P $(PROJECT) \ -R "$(RPM_REQUIRES_RUN)" -D "$(RPM_REQUIRES_DEVEL)" \ -X "$(RPM_CONFLICTS_RUN)" -Y "$(RPM_CONFLICTS_DEVEL)" \ + --provides-run "$(RPM_PROVIDES_RUN)" --provides-devel "$(RPM_PROVIDES_DEVEL)" \ -m $(MOD_SCRIPT_DIR) -a $(RPM_ARCH) -p $(DIST_PCKG_DIR) -F $(PKG_FORMAT) \ -B $(RPM_UPLOAD_URLPREFIX) -A $(RPM_UPLOAD_FILE_ATTRIB) diff --git a/scripts/create-mkspec.sh b/scripts/create-mkspec.sh index c13c0da2..c3f41434 100644 --- a/scripts/create-mkspec.sh +++ b/scripts/create-mkspec.sh @@ -110,6 +110,7 @@ for p in $subpackages; do |echo "Group: `cfg_value global.group`" |[ "\$REQUIRES_$P" ] && echo "Requires: \$REQUIRES_$P" |[ "\$CONFLICTS_$P" ] && echo "Conflicts: \$CONFLICTS_$P" + |[ "\$PROVIDES_$P" ] && echo "Provides: \$PROVIDES_$P" |echo "" EOT diff --git a/scripts/mkspec-wrapper.sh b/scripts/mkspec-wrapper.sh index 6ff4ef55..4b0b4630 100644 --- a/scripts/mkspec-wrapper.sh +++ b/scripts/mkspec-wrapper.sh @@ -18,13 +18,9 @@ append() #set -x -if [ ! "$INSTALL_LOG" ]; then - #INSTALL_LOG=/var/tmp/%{name}-buildroot/install.log - INSTALL_LOG=/tmp/rpmbuild-$ID/install.log -fi - MYNAME=`basename $0` ID=`whoami` +[ ! "$INSTALL_LOG" ] && INSTALL_LOG=/tmp/rpmbuild-$ID/install.log eval set -- `getopt -l "provides-run:" -l "provides-devel:" -o "P:T:V:S:N:hR:D:X:Y:d:" -- "$@"` @@ -122,6 +118,7 @@ CONFLICTS="$CONFLICTS_RUN $CONFLICTS_DEVEL" export \ REQUIRES REQUIRES_RUN REQUIRES_DEVEL \ CONFLICTS CONFLICTS_RUN CONFLICTS_DEVEL \ + PROVIDES PROVIDES_RUN PROVIDES_DEVEL \ TOPDIR \ PROJECT NAME \ SOURCE \ diff --git a/scripts/pkg.sh b/scripts/pkg.sh index 84dab377..d079a9ef 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -409,10 +409,17 @@ build_pkg() local tar_archive=$src_base.tar.bz2 local tar_archive_orig=$src_base.orig.tar.bz2 local distribution=`os` - local RPM_REQUIRES_RUN=`echo $RPM_REQUIRES_RUN | sed "s/__NEXT_VERSION__/$version/g; s/VERSION-REVISION/$version/g; s/VERSION/$version/g"` - local RPM_REQUIRES_DEVEL=`echo $RPM_REQUIRES_DEVEL | sed "s/__NEXT_VERSION__/$version/g; s/VERSION-REVISION/$version/g; s/VERSION/$version/g"` - local RPM_CONFLICTS_RUN=`echo $RPM_CONFLICTS_RUN | sed "s/__NEXT_VERSION__/$version/g; s/VERSION-REVISION/$version/g; s/VERSION/$version/g"` - local RPM_CONFLICTS_DEVEL=`echo $RPM_CONFLICTS_DEVEL | sed "s/__NEXT_VERSION__/$version/g; s/VERSION-REVISION/$version/g; s/VERSION/$version/g"` + + expand_version_macros() { + echo $@ | sed "s/__NEXT_VERSION__/$version/g; s/VERSION-REVISION/$version/g; s/VERSION/$version/g" + } + + local rpm_requires_run=`expand_version_macros $RPM_REQUIRES_RUN` + local rpm_requires_devel=`expand_version_macros $RPM_REQUIRES_DEVEL` + local rpm_conflicts_run=`expand_version_macros $RPM_CONFLICTS_RUN` + local rpm_conflicts_devel=`expand_version_macros $RPM_CONFLICTS_DEVEL` + local rpm_provides_run=`expand_version_macros $RPM_PROVIDES_RUN` + local rpm_provides_devel=`expand_version_macros $RPM_PROVIDES_DEVEL` # --- create source directory tree create_empty_dir $src_tree "Source files compilation directory" @@ -466,10 +473,12 @@ build_pkg() -V $version \ -S $tar_archive \ -N $RPM_PROJECT \ - -R "$RPM_REQUIRES_RUN" \ - -X "$RPM_CONFLICTS_RUN" \ - -D "$RPM_REQUIRES_DEVEL" \ - -Y "$RPM_CONFLICTS_DEVEL" \ + -R "$rpm_requires_run" \ + -X "$rpm_conflicts_run" \ + -D "$rpm_requires_devel" \ + -Y "$rpm_conflicts_devel" \ + --provides-run "$rpm_provides_run" \ + --provides-devel "$rpm_provides_devel" \ -P $PROJECT \ -d $distribution \ > $RPM_PROJECT.$deffmt @@ -1049,23 +1058,7 @@ SCM=cvs [ "$CVS_RSH" ] && SSH=$CVS_RSH [ -d .git ] && SCM=git -opts='ht:p:m:N:R:D:X:Y:P:a:F:B:A:' -args=("$@") -global_args=() -while [ "$1" ]; do - [ ${#1} = 2 -a ${1:0:1} = - ] && echo $opts | grep -q "${1:1}" && { - echo $opts | grep -q "${1:1}" && shift - shift - continue - } - break -done -cmd=$1 - -set -- "${args[@]}" -#set -- "${@/$cmd/--}" - -while [ "$1" != -- -a "$1" != "$cmd" ] ; do +while [ ${1:0:1} = - ]; do case "$1" in -h) usage 0;; @@ -1101,6 +1094,14 @@ while [ "$1" != -- -a "$1" != "$cmd" ] ; do eval RPM_CONFLICTS_DEVEL=\"$2\" shift ;; + --provides-run) + eval RPM_PROVIDES_RUN=\"$2\" + shift + ;; + --provides-devel) + eval RPM_PROVIDES_DEVEL=\"$2\" + shift + ;; -P) eval PROJECT=\"$2\" shift @@ -1121,9 +1122,15 @@ while [ "$1" != -- -a "$1" != "$cmd" ] ; do eval upload_file_attrib=\"$2\" shift ;; + *) + echo "unrecognized option $1, giving up" >&2 + usage 1 + ;; esac shift done + +cmd=$1 shift export MOD_SCRIPT_DIR=`readlink -f $MOD_SCRIPT_DIR` @@ -1140,7 +1147,10 @@ RPMS_DIR=$RPMS_BUILD_DIR/RPMS/$RPM_ARCH # shift -[ ! "$cmd" ] && usage 1 +[ ! "$cmd" ] && { + echo "missing command, giving up" >&2 + usage 1 +} case $PKG_FORMAT in rpm) diff --git a/scripts/projects.py b/scripts/projects.py index 2bfe6d43..0492fa54 100644 --- a/scripts/projects.py +++ b/scripts/projects.py @@ -743,6 +743,9 @@ def cmd_pkg_requires(args_): def cmd_pkg_conflicts(args_): return pkg_relations("conflicts", args_) +def cmd_pkg_provides(args_): + return pkg_relations("provides", args_) + def cmd_proj_dir(args_): parser = argparse.ArgumentParser(description='proj-dir') parser.add_argument('module', nargs='*', help='Modules')