mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
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
This commit is contained in:
parent
859fd6a16c
commit
2816b55780
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=459673
2 changed files with 48 additions and 2 deletions
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue