Bug 283073 - www/rubygem-faraday-gitlab: conflicts with www/rubygem-faraday causing chain reaction of conflicts
Summary: www/rubygem-faraday-gitlab: conflicts with www/rubygem-faraday causing chain ...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Matthias Fechner
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-12-02 06:44 UTC by John Hein
Modified: 2025-02-14 06:15 UTC (History)
3 users (show)

See Also:
jcfyecrayz: maintainer-feedback? (mfechner)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Hein 2024-12-02 06:44:28 UTC
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.
Comment 1 John Hein 2024-12-02 17:53:13 UTC
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
=======================
Comment 2 Matthias Fechner freebsd_committer freebsd_triage 2024-12-03 05:03:22 UTC
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.
Comment 3 John Hein 2024-12-03 22:27:37 UTC
(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.
Comment 4 commit-hook freebsd_committer freebsd_triage 2024-12-04 12:50:47 UTC
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(-)
Comment 5 Matthias Fechner freebsd_committer freebsd_triage 2024-12-04 12:53:25 UTC
Can you please test if the commit fixes the problem for you?
Comment 6 John Hein 2024-12-04 16:44:00 UTC
(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.
Comment 7 commit-hook freebsd_committer freebsd_triage 2024-12-07 15:05:21 UTC
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(-)
Comment 8 Matthias Fechner freebsd_committer freebsd_triage 2025-02-14 06:15:57 UTC
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.