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
|
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()
|
flavors()
|
||||||
{
|
{
|
||||||
local rc pkgnames uniques
|
local rc pkgnames uniques
|
||||||
|
@ -860,7 +905,7 @@ flavors()
|
||||||
|
|
||||||
checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo"
|
checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo"
|
||||||
checks="$checks suidfiles libtool libperl prefixvar baselibs terminfo"
|
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
|
ret=0
|
||||||
cd ${STAGEDIR}
|
cd ${STAGEDIR}
|
||||||
|
|
|
@ -1616,7 +1616,8 @@ QA_ENV+= STAGEDIR=${STAGEDIR} \
|
||||||
PKGBASE=${PKGBASE} \
|
PKGBASE=${PKGBASE} \
|
||||||
PORTNAME=${PORTNAME} \
|
PORTNAME=${PORTNAME} \
|
||||||
NO_ARCH=${NO_ARCH} \
|
NO_ARCH=${NO_ARCH} \
|
||||||
"NO_ARCH_IGNORE=${NO_ARCH_IGNORE}"
|
"NO_ARCH_IGNORE=${NO_ARCH_IGNORE}" \
|
||||||
|
USE_RUBY=${USE_RUBY}
|
||||||
.if !empty(USES:Mssl)
|
.if !empty(USES:Mssl)
|
||||||
QA_ENV+= USESSSL=yes
|
QA_ENV+= USESSSL=yes
|
||||||
.endif
|
.endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue