From owner-svn-ports-head@freebsd.org Mon Aug 7 19:09:43 2017 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 29184DC24AC; Mon, 7 Aug 2017 19:09:43 +0000 (UTC) (envelope-from lifanov@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D4E9B7E29A; Mon, 7 Aug 2017 19:09:42 +0000 (UTC) (envelope-from lifanov@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v77J9fIQ048220; Mon, 7 Aug 2017 19:09:41 GMT (envelope-from lifanov@FreeBSD.org) Received: (from lifanov@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v77J9fXr048218; Mon, 7 Aug 2017 19:09:41 GMT (envelope-from lifanov@FreeBSD.org) Message-Id: <201708071909.v77J9fXr048218@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: lifanov set sender to lifanov@FreeBSD.org using -f From: Nikolai Lifanov Date: Mon, 7 Aug 2017 19:09:41 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r447515 - in head/Mk: . Scripts X-SVN-Group: ports-head X-SVN-Commit-Author: lifanov X-SVN-Commit-Paths: in head/Mk: . Scripts X-SVN-Commit-Revision: 447515 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Aug 2017 19:09:43 -0000 Author: lifanov Date: Mon Aug 7 19:09:41 2017 New Revision: 447515 URL: https://svnweb.freebsd.org/changeset/ports/447515 Log: add new stage-qa target: gemdeps This checks whether rubygem ports have all of their dependencies in gemspec satisfied by what's currently installed. Sample output: ====> Running Q/A tests (stage-qa) Error: RubyGem dependency archive-tar-minitar = 0.5.2 is not satisfied. *** Error code 1 Stop. make: stopped in /usr/home/lifanov/src/svn/freebsd/ports/head/archivers/rubygem-fpm These ports would be broken at runtime. Big thanks to: swills - discussion mat - reviews antoine - exp runs sunpoet - fixing several dozens of ports :) PR: 220605 Reviewed by: mat, sunpoet Approved by: portmgr (mat) Differential Revision: https://reviews.freebsd.org/D11841 Modified: head/Mk/Scripts/qa.sh head/Mk/bsd.port.mk Modified: head/Mk/Scripts/qa.sh ============================================================================== --- head/Mk/Scripts/qa.sh Mon Aug 7 18:52:15 2017 (r447514) +++ head/Mk/Scripts/qa.sh Mon Aug 7 19:09:41 2017 (r447515) @@ -830,10 +830,45 @@ no_arch() { return $rc } +gemdeps() +{ + rc=0 + if [ "${PKGBASE%%-*}" = "rubygem" ]; then + while read -r l; do + if [ -n "${l}" ]; then + name=${l%% *} + vers=${l#* } + while read -r v; do + if ! while read -r p; do + ${LOCALBASE}/bin/ruby -e "puts 'OK' if Gem::Dependency.new('${name}','${v}').match?('${name}','${p}')" + done | grep -qFx OK; then + err RubyGem dependency ${name} ${v} is not satisfied. + rc=1 + fi <<-EOF + $(${LOCALBASE}/bin/gem list -e "${name}" \ + | sed "s|.*(\(.*\))|\1|" \ + | tr -d ' ' \ + | tr , '\n') + EOF + done <<-EOF + $(while echo "${vers}" | grep -q '"'; do + echo "${vers}" | cut -d '"' -f2 + vers=$(echo "${vers}"|cut -d '"' -f3-) + done) + EOF + fi + done <<-EOF + $(grep -a 'add_runtime_dependency' ${STAGEDIR}${PREFIX}/lib/ruby/gems/*/specifications/${PORTNAME}-*.gemspec \ + | sed 's|.*<\(.*\)>.*\[\(.*\)\])|\1 \2|' \ + | sort -u) + EOF + fi + return $rc +} checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo" checks="$checks suidfiles libtool libperl prefixvar baselibs terminfo" -checks="$checks proxydeps sonames perlcore no_arch" +checks="$checks proxydeps sonames perlcore no_arch gemdeps" ret=0 cd ${STAGEDIR} Modified: head/Mk/bsd.port.mk ============================================================================== --- head/Mk/bsd.port.mk Mon Aug 7 18:52:15 2017 (r447514) +++ head/Mk/bsd.port.mk Mon Aug 7 19:09:41 2017 (r447515) @@ -1532,6 +1532,7 @@ QA_ENV+= STAGEDIR=${STAGEDIR} \ LIB_RUN_DEPENDS='${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}' \ UNIFIED_DEPENDS=${_UNIFIED_DEPENDS:C,([^:]*:[^:]*):?.*,\1,:O:u:Q} \ PKGBASE=${PKGBASE} \ + PORTNAME=${PORTNAME} \ NO_ARCH=${NO_ARCH} \ "NO_ARCH_IGNORE=${NO_ARCH_IGNORE}" .if !empty(USES:Mssl)