Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Feb 2024 02:43:36 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Michael Grimm <trashcan@ellael.org>
Cc:        FreeBSD Mailing List <freebsd-ports@freebsd.org>
Subject:   Re: dns/knot3 and dns/knot-resolver do not get along with
Message-ID:  <6F77C083-4AC6-4592-88C3-626D138B10D0@yahoo.com>
In-Reply-To: <6C622E06-4CFC-4296-B0C8-6279F6BD3FDB@ellael.org>
References:  <79302DD2-2673-4745-82B3-06BEEC907DAE.ref@yahoo.com> <79302DD2-2673-4745-82B3-06BEEC907DAE@yahoo.com> <6C622E06-4CFC-4296-B0C8-6279F6BD3FDB@ellael.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 26, 2024, at 01:06, Michael Grimm <trashcan@ellael.org> wrote:

> Mark Millard <marklmi@yahoo.com> wrote:
>> Michael Grimm <trashcan_at_ellael.org> wrote on
>> Date: Sun, 25 Feb 2024 19:46:22 UTC :
>=20
>>> I am trying to install dns/knot3 and dns/knot-resolver =
simultaneously.
>>>=20
>>> Compilation is achieved with the help of poudriere which complains =
about dns/knot-resolver:
>>>=20
>>> =3D=3D=3D> Installing existing package =
/packages/All/knot-resolver-5.7.0_2.pkg
>>> [stable-default-job-02] Installing knot-resolver-5.7.0_2...
>>> [stable-default-job-02] `-- Installing knot3-lib-3.3.3_1...
>>> pkg-static: knot3-lib-3.3.3_1 conflicts with knot3-3.3.3_1 (installs =
files into the same place). Problematic file: =
/usr/local/include/knot/module.h
>>>=20
>>> Failed to install the following 1 package(s): =
/packages/All/knot-resolver-5.7.0_2.pkg
>>> *** Error code 1
>>>=20
>>> Stop.
>=20
> [=E2=80=A6]
>=20
>>> One needs to know, that there is a third port involved, namely =
dns/knot3-lib, dependent for dns/knot-resolver. And, dns/knot3-lib is =
simply a part of dns/knot3.
>>>=20
>>> Thus, knot3-lib-3.3.3_1 as part of dns/knot3 shouldn't conflict with =
dns/knot3.
>>>=20
>>>=20
>>> Questions:
>>>=20
>>> #) Bug?
>>> #) How to resolve this conflict?
>>> #) Anyone running both ports in parallel?
>>=20
>> If I understand right, if 2 more more installers should be allowed
>> to be used in the same context in overlapping it-is-installed
>> time frames, they must not conflict in what they install: no files
>> with the same paths.
>=20
>> Expected conflicts can be noted in the Makefiles to get earlier
>> notifications of the attempt to use conflicting material. But
>> having such conflicts means mutual exclusion as far as being
>> installed in overlapping time frames goes.
>=20
>> I'm not sure how your notes fit with the overlapping time frames
>> issue: is it valid to have knot3-?.?.? and knot3-lib-?.?.?
>> installed in overlapping time frames?
>=20
> FYI: I do not understand what you mean by 'overlapping time frames'

A time interval over which both dns/knot3 and dns/knot3-lib
are in the installed state in the context. You have answered
yes below.

> Ok, there are 3 ports involved:
>=20
> 1) authoritative dns: dns/knot3
> 2) library part of dns/knot3: dns/knot3-lib
> 3) recursive dns: dns/knot-resolver
>=20
> 2) is needed by 3),=20
> thus compiling 3) pulls all libraries and includes from 1),
> and stores them in the very same locations as 1) will.
>=20
> Thats, if I am not mistaken, the reason for pkg complaining =
'pkg-static: knot3-lib-3.3.3_1 conflicts with knot3-3.3.3_1 (installs =
files into the same place).'
>=20
> Thus, IMHO, both ports dns/knot3 and dns/knot-resolver cannot be =
installed simultaneously. One could install them in different jails, but =
that is not an option for me.
>=20
> Possible solutions:
>=20
> 1) dns/knot3-lib should store its libraries and includes into a =
different location as dns/knot3 does

A variation of that is that dns/knot-resolver has its own files
in its own locations for such, no dns/knot3-lib port involved.

> 2) discard dns/knot3-lib and make dns/knot3 and dns/knot-resolver =
mutually dependent
> 3) =E2=80=A6?

"..." might be: dns/knot3 uses the files from dns/knot3-lib instead of
installing its own and so has both a build dependency on dns/knot3-lib
and a run-time dependency on dns/knot3-lib . dns/knot-resolver also
then has such ( and no dependency on dns/knot3 ). The run-time =
dependency
leads to installation of either dns/knot3 or dns/knot-resolver first
installing dns/knot3-lib if it is not already installed. Uninstalling
dns/knot3-lib would lead to both dns/knot3 or dns/knot-resolver being
uninstalled if both were installed. The build time dependencies lead to
dns/knot3-lib being built first and being installed before builds of
either dns/knot3 or dns/knot-resolver if dns/knot3-lib is not already
installed. (In poudriere such build time install of dns/knot3-lib is
temporary and internal to the build activity.)

This allows both  dns/knot3 and dns/knot-resolver to be installed
in the same jail "simultaneously". (It does not matter which is
installed first vs. second in the sequence of installs.)

I do not know which way is simpler to support. That likely is dependent
on details I'm ignorant of. All look to be technically possible.

> I am not an expert in ports internals, thus: what would the best way =
to solve this issue?
>=20

=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6F77C083-4AC6-4592-88C3-626D138B10D0>