Created attachment 184235 [details] add new stage-qa step: gemdeps Please perform an exp-run with this patch. This is intended to make runtime errors evident at build time, so I expect several ports to fail.
I really like this patch and was never able to write it by myself. One question: does it support the pessimistic operator of the Gem-definition?
It uses Gem class to do the actual match: bad=$(${LOCALBASE}/bin/ruby -e "puts 'BAD' if not Gem::Dependency.new('$name','$v').match?('$name','$(${LOCALBASE}/bin/gem list -e "$name" | sed "s|.*(\(.*\))|\1|")')") It works with all operators like ~=, <, etc.
Exp-run results on 11.0 i386: http://package23.nyi.freebsd.org/build.html?mastername=110i386-default-PR220605&build=2017-07-10_18h05m10s
Thank you!
I'm surprised about failures in rubygem-passenger and libfastcommon. Investigating....
FYI, I'm working on the failure of ruby@ ports and mine. libfastcommon has plist issue.
Ohh, cool, thanks! Would you like me to keep opening new bugs or not?
sunpoet: I saw that you fixed devel/rubygem-health_check. Does this also fix devel/rubygem-health_check22?
I think I filed the bugs for the rest of the fallout. Once the bulk of these is fixed and the new version of the patch is reviewed, we could run another exp-run.
Created attachment 184729 [details] add new stage-qa step: gemdeps refresh patch from Phabricator
May I have another exp-run with the updated patch please? This one fixes some false-positives and is also significantly changed following feedback.
Exp-run results on 11.0 i386: http://package23.nyi.freebsd.org/build.html?mastername=110i386-default-PR220605&build=2017-07-26_20h24m52s
rubygem-cogbot has already been fixed
I filed bugs for two new uncovered issues.
Question: do i read the patch correct, if i assume that it only checks *.gemspec files? I explicitly ask for Gemfile based ports like www/redmine or www/gitlab. It would be very very helpful to have this qa for them too, if possible! :)
This is an awesome idea, but I'd like to get at least this in first. Currently it only checks one gemspec file (portname-*.gemspec), but I would like to later check more gemspec files or Gemfile as well.
(In reply to Nikolai Lifanov from comment #16) > This is an awesome idea, but I'd like to get at least this in first. Fair enough. Sadly me understanding of the QA script is not enough to just copy your patch. But by trying it i learned something more. Some please come back to me, if you have some time for the new QA. It would really help me with all the ports depending on Gems.
Absolutely! I can work on a similar thing for non-gem ports once this lands.
Created attachment 185047 [details] add new stage-qa: gemdeps
Most issues have been fixed and I attached the patch with latest updates from Phabricator. May I have another exp-run please?
Exp-run results: http://package23.nyi.freebsd.org/build.html?mastername=110i386-default-PR220605&build=2017-08-06_10h50m45s
Thank you! There were only 3 new failures. I created dependent bugs.
A commit references this bug: Author: lifanov Date: Mon Aug 7 19:09:42 UTC 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 Changes: head/Mk/Scripts/qa.sh head/Mk/bsd.port.mk
Thank you for exp-runs! I forgot to close this bug.