ports edc8d0390e04 adds two different versions of some rubygem ports to exist in the ports tree because some ports depend on an older version of some of those rubygem ports and some ports depend on a newer version. Just picking one example: www/rubygem-faraday-gitlab was added along side www/rubygem-faraday. Right now they are identical - both are built from faraday-2.12.1.gem, and both install exactly the same files. And they can't both be installed because of that (installing the same files to the same directory locations - e.g., /usr/local/lib/ruby/gems/3.2/gems/faraday-2.12.1/). If they were actually different versions the files it appears would not conflict because they would install to a different directory. But some ports depend on www/rubygem-faraday-gitlab and some depend on www/rubygem-faraday. For instance, net/rubygem-oauth2 depends on www/rubygem-faraday and net/rubygen-octokit-gitlab depends on www/rubygem-faraday-gitlab. So those two packages (rubygem-oauth2 and rubygem-octokit-gitlab) cannot be installed together. Nor can any ports that require them (e.g., sysutils/rubygem-vagrant_cloud and devel/rubygem-licensee) as run-time dependencies. Is there a plan to resolve this problem? I'm wondering if the cure that ports edc8d0390e04 implemented might have fixed one problem just to make another problem. Maybe the ports that still want the older version of a rubygem port should look in a different search location for the older version - for instance, a private namespace bundled just for the port that needs the older version of the rubygem port.
For the moment, I applied the following change to get past the problem locally. After applying that change to devel/rubygem-licensee with that change, it builds / installs fine, and it seems to run just fine in a quick couple tests. ======================= diff --git a/devel/rubygem-licensee/Makefile b/devel/rubygem-licensee/Makefile index c66e851cce5f..c37794954613 100644 --- a/devel/rubygem-licensee/Makefile +++ b/devel/rubygem-licensee/Makefile @@ -11,8 +11,16 @@ WWW= https://github.com/benbalter/licensee LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE.md +#RUN_DEPENDS= rubygem-dotenv>=2.0<4:misc/rubygem-dotenv \ +# rubygem-octokit-gitlab>=4.20<10:net/rubygem-octokit-gitlab \ +# rubygem-reverse_markdown>=1.0<3:textproc/rubygem-reverse_markdown \ +# rubygem-rugged>=0.24<2.0:devel/rubygem-rugged \ +# rubygem-thor>=0.19<2.0:devel/rubygem-thor + +# XXX why does licensee need the -gitlab flavor of rubgem-octokit? +# see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283073 RUN_DEPENDS= rubygem-dotenv>=2.0<4:misc/rubygem-dotenv \ - rubygem-octokit-gitlab>=4.20<10:net/rubygem-octokit-gitlab \ + rubygem-octokit-gitlab>=4.20<10:net/rubygem-octokit \ rubygem-reverse_markdown>=1.0<3:textproc/rubygem-reverse_markdown \ rubygem-rugged>=0.24<2.0:devel/rubygem-rugged \ rubygem-thor>=0.19<2.0:devel/rubygem-thor =======================
Could you please make clear, which port does not work? Normally you cannot mix ports with a PKGNAMESUFFIX of -gitlab with ports that do not have that suffix as dependencies are upgrade to a version that is to new for the dependency chain.
(In reply to Matthias Fechner from comment #2) You can't install sysutils/rubygem-vagrant_cloud and devel/rubygem-licensee together now. That is the example mentioned in comment 0. But there may be others.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=ad3b00d8c41651b24fddaf19228561131743c739 commit ad3b00d8c41651b24fddaf19228561131743c739 Author: Matthias Fechner <mfechner@FreeBSD.org> AuthorDate: 2024-12-04 12:43:02 +0000 Commit: Matthias Fechner <mfechner@FreeBSD.org> CommitDate: 2024-12-04 12:49:38 +0000 devel/rubygem-licensee: fix another conflict with faraday further isolation ports required for gitlab to work around update by 335fc7c38d61142727cb9f01fd9e401c476e4ad8 This should fix the problem if the two ports are installed: sysutils/rubygem-vagrant_cloud devel/rubygem-licensee PR: 283073 devel/Makefile | 1 + devel/rubygem-licensee-gitlab/Makefile (new) | 26 ++++++++++++++++++++++++++ devel/rubygem-licensee-gitlab/distinfo (new) | 3 +++ devel/rubygem-licensee-gitlab/pkg-descr (new) | 3 +++ devel/rubygem-licensee/Makefile | 6 +++--- www/gitlab/Makefile | 2 +- www/gitlab/Makefile.common | 2 +- 7 files changed, 38 insertions(+), 5 deletions(-)
Can you please test if the commit fixes the problem for you?
(In reply to Matthias Fechner from comment #5) That fixes things for rubygem-vagrant_cloud and rubygem-licenses. But this seems like a never ending problem. I think that if gitlab depends on an older package than the one that most rubygem ports depend on (e.g., rubygem-net-http), it should be using that older dependency installed in a non-default (private) location. If lots of ports need the old and lots need the new version, they should be installed such that they can be installed together. At this point there are 50+ *-gitlab ports many which are basically just dupes of the non "-gitlab" port except for one or two "gitlab" vs "non-gitlab" dependencies. Just adding more and more -gitlab ports does not seem like a sustainable plan. So yes, your commit from comment 4 "fixes" the breakage for licensee & vagrant_cloud. But this is a bigger problem. Here's the next one: devel/rubygem-licensee and devel/rubygem-danger result in a conflict: . . ===> Checking if rubygem-faraday-gitlab is already installed ===> Registering installation for rubygem-faraday-gitlab-2.12.1 as automatic pkg-static: rubygem-faraday-gitlab-2.12.1 conflicts with rubygem-faraday-2.12.1 (installs files into the same place). Problematic file: /usr/local/lib/ruby/gems/3.2/specifications/faraday-2.12.1.gemspec *** Error code 1 Stop. make[1]: stopped in /usr/ports/www/rubygem-faraday-gitlab *** Error code 1 Stop. make: stopped in /usr/ports/devel/rubygem-danger Sure, we could open a new bug (and a meta-bug for all the -gitlab conflicts that are pushing for the proliferation of -gitlab port "flavors") for rubygem-danger. But we need to think of better ways than basically having a second -gitlab ports tree inside the non-gitlab ports tree.
A commit in branch 2024Q4 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=e63c52cbbad074599994aa8b6ac22114e76be992 commit e63c52cbbad074599994aa8b6ac22114e76be992 Author: Matthias Fechner <mfechner@FreeBSD.org> AuthorDate: 2024-12-04 12:43:02 +0000 Commit: Matthias Fechner <mfechner@FreeBSD.org> CommitDate: 2024-12-06 10:17:35 +0000 devel/rubygem-licensee: fix another conflict with faraday further isolation ports required for gitlab to work around update by 335fc7c38d61142727cb9f01fd9e401c476e4ad8 This should fix the problem if the two ports are installed: sysutils/rubygem-vagrant_cloud devel/rubygem-licensee PR: 283073 (cherry picked from commit ad3b00d8c41651b24fddaf19228561131743c739) devel/Makefile | 1 + devel/rubygem-licensee-gitlab/Makefile (new) | 26 ++++++++++++++++++++++++++ devel/rubygem-licensee-gitlab/distinfo (new) | 3 +++ devel/rubygem-licensee-gitlab/pkg-descr (new) | 3 +++ devel/rubygem-licensee/Makefile | 6 +++--- www/gitlab/Makefile | 2 +- www/gitlab/Makefile.common | 2 +- 7 files changed, 38 insertions(+), 5 deletions(-)
This is a slow transition. If you have a specific application that is effected, we can have a look into it. Single gems that are only used by gitlab will maybe not be fixed, if that is not necessary. If a specific app (not gem) is broken, please create a specific ticket for it.