Bug 256076 - devel/libsoup: circular dependencies with samba413 and tracker
Summary: devel/libsoup: circular dependencies with samba413 and tracker
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-desktop (Team)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-05-22 10:29 UTC by Dimitry Andric
Modified: 2021-06-28 14:44 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (desktop)


Attachments
Patch to make samba a run-time dep (2.00 KB, patch)
2021-06-12 14:28 UTC, Adriaan de Groot
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dimitry Andric freebsd_committer freebsd_triage 2021-05-22 10:29:02 UTC
After ports commit 0e94a54ee19481e569344e95d5d28732ce3a86ef ("devel/libsoup: Massage features and options", see bug 235207 and bug 231160), I get a circular dependency error from poudriere:

[00:00:21] Sanity checking build queue
[00:00:21] Error: Dependency loop detected:
These packages depend on each other: libsoup-2.72.0_3 samba413-4.13.8 tracker-2.3.4_3

This is because I enabled the SPOTLIGHT option in net/samba413, which pulls in sysutils/tracker:

SPOTLIGHT_BUILD_DEPENDS=	tracker>=1.4.1:sysutils/tracker
SPOTLIGHT_RUN_DEPENDS=		tracker>=1.4.1:sysutils/tracker

In turn, sysutils/tracker depends on devel/libsoup:

LIB_DEPENDS=    libuuid.so:misc/e2fsprogs-libuuid \
                libsoup-2.4.so:devel/libsoup \
                libdbus-1.so:devel/dbus \
                libjson-glib-1.0.so:devel/json-glib \
                libicutu.so:devel/icu

Is the only option now to disable the SMB option for libsoup?
Comment 1 Adriaan de Groot freebsd_committer freebsd_triage 2021-06-12 14:28:27 UTC
Created attachment 225755 [details]
Patch to make samba a run-time dep

This picks up an idea from PR 235207 and applies it to meson. It ought to break the circular dependency, although I haven't tested that specifically.
Comment 2 Adriaan de Groot freebsd_committer freebsd_triage 2021-06-12 14:29:07 UTC
Please apply patch to ports (patch -p0) and try to build the things you're interested in. If it works out, I'll commit it.
Comment 3 Adriaan de Groot freebsd_committer freebsd_triage 2021-06-28 08:50:30 UTC
Ping? I'd really like to have this tested / built by someone who cares about the specific functionality, rather than the "it compiles, ship it" that I would have to apply.
Comment 4 Dimitry Andric freebsd_committer freebsd_triage 2021-06-28 12:19:47 UTC
(In reply to Adriaan de Groot from comment #3)

Hmm, it doesn't seem to make difference for "make index", at least:

% git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   devel/libsoup/Makefile
        new file:   devel/libsoup/files/patch-meson.build

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        devel-libsoup.patch

% nice make index
Generating INDEX-14 - please wait..--- describe.accessibility ---
--- describe.arabic ---
--- describe.archivers ---
--- describe.astro ---
--- describe.audio ---
--- describe.benchmarks ---
--- describe.biology ---
--- describe.cad ---
--- describe.chinese ---
--- describe.comms ---
--- describe.converters ---
--- describe.databases ---
--- describe.deskutils ---
--- describe.devel ---
--- describe.dns ---
--- describe.editors ---
--- describe.emulators ---
--- describe.finance ---
--- describe.french ---
--- describe.ftp ---
--- describe.games ---
--- describe.german ---
--- describe.graphics ---
--- describe.hebrew ---
--- describe.hungarian ---
--- describe.irc ---
--- describe.japanese ---
--- describe.java ---
--- describe.korean ---
--- describe.lang ---
--- describe.mail ---
--- describe.math ---
--- describe.misc ---
--- describe.multimedia ---
--- describe.net ---
--- describe.net-im ---
--- describe.net-mgmt ---
--- describe.net-p2p ---
--- describe.news ---
--- describe.polish ---
--- describe.ports-mgmt ---
--- describe.portuguese ---
--- describe.print ---
--- describe.russian ---
--- describe.science ---
--- describe.security ---
--- describe.shells ---
--- describe.sysutils ---
--- describe.textproc ---
--- describe.ukrainian ---
--- describe.vietnamese ---
--- describe.www ---
--- describe.x11 ---
--- describe.x11-clocks ---
--- describe.x11-drivers ---
--- describe.x11-fm ---
--- describe.x11-fonts ---
--- describe.x11-servers ---
--- describe.x11-themes ---
--- describe.x11-toolkits ---
--- describe.x11-wm ---
make_index: Circular dependency loop found: libsoup-2.72.0_4 depends upon itself.

 Done.

I can probably build the ports themselves, but if make index keeps complaining we might not want to bother.
Comment 5 commit-hook freebsd_committer freebsd_triage 2021-06-28 14:39:57 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ed9df2d08f7837c866f525515b8fc8c83a919694

commit ed9df2d08f7837c866f525515b8fc8c83a919694
Author:     Adriaan de Groot <adridg@FreeBSD.org>
AuthorDate: 2021-06-12 14:19:46 +0000
Commit:     Adriaan de Groot <adridg@FreeBSD.org>
CommitDate: 2021-06-28 14:39:46 +0000

    devel/libsoup: make samba a (not registered) runtime dep

    This picks up an idea from PR 235207 again, where NTLM authentication
    is optional. Previous commits made samba a build-dependency so
    that the --enable-ntlm option would work. The meson build -- even
    though the dep is entirely runtime -- would check for the presence
    of ntlm_auth at build-time, to be able to pass in the path to
    ntlm_auth to the build.

    Re-jig this to not do the check, accept the option as-is, and
    use a likely path to ntlm_auth instead (which is what the original
    patch in 235207 did).

    A circular dependency from samba41[23] -> libsoup and back
    can be triggered by setting option SMB in libsoup and
    option SPOTLIGHT in samba. Originally the runtime dependency
    was registered as
            USES=   samba:run
    A _RUN dependency still wants to build, though, and package and
    index builds failed. Cut the circular dependency by **not**
    registering samba as a runtime dependency and using a pkg-message
    to tell users to possibly install samba.

    Anyone who now has "but my samba is installed in a different prefix"
    can file a PR with a patch fixing meson better.

    PR:             256076
    Reported by:    Dimitry Andric

 devel/libsoup/Makefile                      | 31 +++++++++++++++++++++--------
 devel/libsoup/files/patch-meson.build (new) | 17 ++++++++++++++++
 devel/libsoup/pkg-message (new)             | 10 ++++++++++
 3 files changed, 50 insertions(+), 8 deletions(-)
Comment 6 Adriaan de Groot freebsd_committer freebsd_triage 2021-06-28 14:44:50 UTC
I played with it a while, but it comes down to _RUN being just as hard a dependency as any other, for the ports system. So I cut it at libsoup and added a message instead. You can build samba / tracker / libsoup now with the options you like; installing samba should get you NTLM auth at runtime.