svn commit: r459673 - in head/Mk: . Scripts
Torsten Zuehlsdorff
tz at FreeBSD.org
Mon Jan 22 16:35:24 UTC 2018
Author: tz
Date: Mon Jan 22 16:35:23 2018
New Revision: 459673
URL: https://svnweb.freebsd.org/changeset/ports/459673
Log:
add new stage-qa target: gemfiledeps
This checks whether rubygem based ports have all of their dependencies
in Gemfile(s) satisfied by what's currently installed. Sample output:
====> Running Q/A tests (stage-qa)
Warning: Dependencies defined in /usr/ports/www/gitlab/work/stage/usr/local/www/gitlab/Gemfile are not satisfied
These ports could (!) be broken at runtime. Be aware: some projects
defines multiple Gemfiles and not all are used at runtime. For example
www/gitlab has two Gemfiles, but only one is used for testing and warnings
about it can be ignored.
Approved by: portmgr (mat), lifanov
Differential Revision: https://reviews.freebsd.org/D11865
Modified:
head/Mk/Scripts/qa.sh
head/Mk/bsd.port.mk
Modified: head/Mk/Scripts/qa.sh
==============================================================================
--- head/Mk/Scripts/qa.sh Mon Jan 22 16:17:23 2018 (r459672)
+++ head/Mk/Scripts/qa.sh Mon Jan 22 16:35:23 2018 (r459673)
@@ -841,6 +841,51 @@ gemdeps()
return $rc
}
+# If an non rubygem-port has a 'Gemfile' file
+# it is checked with bundle to be sure
+# all dependencies are satisfied.
+# Without the check missing/wrong dependencies
+# are just found when executing the application
+gemfiledeps()
+{
+ # skip check if port does not use ruby at all
+ if [ -z "$USE_RUBY" ]; then
+ return 0
+ fi
+
+ # skip check if port is a rubygem-* one; they have no Gemfiles
+ if [ "${PKGBASE%%-*}" = "rubygem" ]; then
+ return 0
+ fi
+
+ # advise install of bundler if its not present for check
+ if ! type bundle > /dev/null 2>&1; then
+ notice "Please install sysutils/rubygem-bundler for additional Gemfile-checks"
+ return 0
+ fi
+
+ # locate the Gemfile(s)
+ while read -r f; do
+
+ # no results presents a blank line from heredoc
+ [ -z "$f" ] && continue
+
+ # if there is no Gemfile everything is fine - stop here
+ [ ! -f "$f" ] && return 0;
+
+ # use bundle to check if Gemfile is satisfied
+ # if bundle returns 1 the Gemfile is not satisfied
+ # and so stage-qa isn't also
+ if ! bundle check --dry-run --gemfile $f > /dev/null 2>&1; then
+ warn "Dependencies defined in ${f} are not satisfied"
+ fi
+
+ done <<-EOF
+ $(find ${STAGEDIR} -name Gemfile)
+ EOF
+ return 0
+}
+
flavors()
{
local rc pkgnames uniques
@@ -860,7 +905,7 @@ flavors()
checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo"
checks="$checks suidfiles libtool libperl prefixvar baselibs terminfo"
-checks="$checks proxydeps sonames perlcore no_arch gemdeps flavors"
+checks="$checks proxydeps sonames perlcore no_arch gemdeps gemfiledeps flavors"
ret=0
cd ${STAGEDIR}
Modified: head/Mk/bsd.port.mk
==============================================================================
--- head/Mk/bsd.port.mk Mon Jan 22 16:17:23 2018 (r459672)
+++ head/Mk/bsd.port.mk Mon Jan 22 16:35:23 2018 (r459673)
@@ -1616,7 +1616,8 @@ QA_ENV+= STAGEDIR=${STAGEDIR} \
PKGBASE=${PKGBASE} \
PORTNAME=${PORTNAME} \
NO_ARCH=${NO_ARCH} \
- "NO_ARCH_IGNORE=${NO_ARCH_IGNORE}"
+ "NO_ARCH_IGNORE=${NO_ARCH_IGNORE}" \
+ USE_RUBY=${USE_RUBY}
.if !empty(USES:Mssl)
QA_ENV+= USESSSL=yes
.endif
More information about the svn-ports-head
mailing list