Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 2020 13:03:58 -0700
From:      bob prohaska <fbsd@www.zefox.net>
To:        Mark Millard <marklmi@yahoo.com>
Cc:        FreeBSD ports <freebsd-ports@freebsd.org>
Subject:   Re: Conflict on very first port (xorg) on rpi3
Message-ID:  <20200515200358.GA54521@www.zefox.net>
In-Reply-To: <E0670AB1-42E5-4A01-87AE-0C671CC5CEB0@yahoo.com>
References:  <4961F458-26EF-447F-8033-B00FA720C58F.ref@yahoo.com> <4961F458-26EF-447F-8033-B00FA720C58F@yahoo.com> <20200515151922.GC51382@www.zefox.net> <20200515164921.6zyiorfgnqhf5nls@t480.local> <20200515180554.GD51382@www.zefox.net> <35F4EC61-AC55-4FA4-89D4-7742E449CC8A@yahoo.com> <E0670AB1-42E5-4A01-87AE-0C671CC5CEB0@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, May 15, 2020 at 12:33:02PM -0700, Mark Millard wrote:
> [Gack: devel/cmake needs devel/py-sphinx by default
> and devel/llvm80 needs both devel/cmake and
> devel/py-pshinx18 by default.]
> 
> On 2020-May-15, at 11:59, Mark Millard <marklmi at yahoo.com> wrote:
> > 
> > On 2020-May-15, at 11:05, bob prohaska <fbsd at www.zefox.net> wrote:
> > 
> >> On Fri, May 15, 2020 at 01:49:21PM -0300, Danilo G. Baio wrote:
> >>> On Fri, May 15, 2020 at 08:19:22AM -0700, bob prohaska wrote:
> >>>> On Fri, May 15, 2020 at 12:33:10AM -0700, Mark Millard via freebsd-ports wrote:
> >>>>> 
> >>>>> Some building and isntalling had to occur prior to the
> >>>>> textproc/py-sphinx18 build attempt, possibly from
> >>>>> prior session(s) of building and installing.
> >>>>> 
> >>>>> 
> >>>> 
> >>>> In this case x11/xorg was the first port attempted in a new
> >>>> ports tree. The only "prior sessions" would have been within
> >>>> the dependencies of x11/xorg. Is that resolvable by poudriere?
> >>>> 
> >>>>> textproc/py-sphinx18 is new as of 2020-May-11.
> >>>>> The devel/llvm[16789]0 ports require textproc/py-sphinx18 .
> >>>>> Only about 26 ports require textproc/py-sphinx18 but
> >>>>> I'll not list the others.
> >>>>> 
> >>>>> textproc/py-sphinx has been around longer and has
> >>>>> 142 ports that require it. I'll not list them.
> >>>>> 
> >>>>> 
> >>>>> textproc/py-sphinx18/Makefile lists:
> >>>>> 
> >>>>> CONFLICTS_INSTALL=      py*-sphinx
> >>>>> 
> >>>>> textproc/py-sphinx/Makefile lists:
> >>>>> 
> >>>>> CONFLICTS_INSTALL=      py*-sphinx18
> >>>>> 
> >>>>> 
> >>>>> So, for example, indirectly the devel/llvm[16789]0
> >>>>> ports conflict with at least 142 other ports because
> >>>>> of the textproc/py-sphinx* difference in requirements.
> >>>>> 
> >>>>> 
> >>>>> The conflict is real and limits what combinations
> >>>>> of ports you may have installed at the same time.
> >>>> 
> >>>> I'll try deinstalling the conflicting port and hope
> >>>> it won't be required later....
> >>> 
> >>> It seems that just devel/llvm80 is pulling sphinx18 when building
> >>> x11/xorg.
> >>> 
> >>> Try disabling DOCS option on devel/llvm80 for now.
> >>> 
> >>> I've opened a PR to track this issue:
> >>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246487
> >>> 
> >> 
> >> Wish I'd known it was only the DOCS option! Too late now,
> >> sphinx18 is deinstalled and llvm80 is building.
> > 
> > What? llvm80 requires textproc/py-sphinx18 (when
> > the options cause such), not textproc/py-sphinx .
> > Deleting textproc/py-sphinx18 and building
> > devel/llvm80 will try to rebuild/install
> > textproc/py-sphinx18 unless the options are
> > set to avoid needing textproc/py-sphinx18 .
> > 
> > To build devel/llvm80 it would be
> > textproc/py-sphinx that would be deinstalled first
> > so that textproc/py-sphinx18 could be built and
> > installed during the build.

Sorry, I mis-wrote. What you're describing is what I did.....


> > 
> > After devel/llvm80 is installed, textproc/py-sphinx18
> > would be uninstalled so that textproc/py-sphinx could
> > be built/installed when xorg is re-tried with llvm80
> > already installed.
> 
> I did not trace down other dependencies but now
> looking a little (leaving options at defaults):
> 
> devel/cmake needs devel/py-sphinx by default
> and devel/llvm80 needs both devel/cmake and
> devel/py-pshinx18 by default. (xorg need not
> bein involved: just building devel/llvm[16789]0
> has the issue.)
> 
> Thus the sequence for default options may need
> to be something like:
> 
> *) Starting without textproc/py-sphinx18
>    installed
> 
> A) build textproc/py-sphinx and devel/cmake
>    and install devel/cmake ( py-sphinx can
>    be via indirection through devel/cmake )
>    (cmake does not have a run-time dependency
>    on textproc/py-sphinx as far as I can tell.)
> 
> B) uninstall textproc/py-sphinx so that
>    textproc/py-sphinx18 can be built and
>    installed
> 
> C) build textproc/py-shpyinx18 and devel/llvm80
>    and install devel/llvm80 ( py-sphinx18 can
>    be via indirection through devel/llvm80 )
> 
> D) uninstall textproc/py-sphinx18 so that
>    either textproc/py-sphinx* can be installed
>    if needed
> 
> E) build xorg.
> 
> (Since I use devel/poudriere-develto build
> packages and then install just packages for
> things that I run, I do not have to do such
> explicit conflict management for build-time
> conflicts.)
>
 
A brief look at the man page for devel/poudriere suggests
that several GB of space will be required for each port
to be built; is that the case in practice? Seems like that
would lead to stupendous overhead for complex ports, like
browsers.

> Of course, figuring out options to change
> the status of also may avoid having some
> of the dependencies and so avoid some
> conflicts.
> 
> >> This is probably a dumb question, but is there some way
> >> to learn at the outset what conflicts need to be worked
> >> around? Something like a "make conflicts" target? Seemingly 
> >> it could be done by hand, but that promises to be tedious. 
> > 
> > Not that will tell you what combinations of
> > options lead to what combinations of required
> > build or run prerequisites: That could be
> > a lot of combinations to cover. It is also
> > dependent on poudriere-like-building vs. not
> > for build prerequisites having conflicts
> > involved or not.
> > 
> > If one is familiar enough to see potential
> > conflicts in lists of dependencies there are
> > the makefile targets:
> > 
> >     run-depends-list, build-depends-list
> >                          Print a list of all the compile and run
> >                          dependencies, and dependencies of those
> >                          dependencies, by port directory.
> > 
> >     all-depends-list     Print a list of all dependencies for the port.
> > 
> >     pretty-print-run-depends-list, pretty-print-build-depends-list
> >                          Print a list of all the compile and run
> >                          dependencies, and dependencies of those
> >                          dependencies, by port name and version.
> > 
> > (but no "all" variant for pretty-print-* ?).
> > What is listed would depend on the options
> > specified.
>
It appears that simply deinstalling the existing port causing a
conflict is the best short-term approach. Can't solve the run-time
conflict issue that way, but it's a start...

Thanks for writing!

bob prohaska
 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200515200358.GA54521>