Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Apr 2018 19:53:49 +0200
From:      Stefan Esser <se@freebsd.org>
To:        Ports FreeBSD <freebsd-ports@FreeBSD.org>
Cc:        Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject:   Re: Conflicts due to renamed KDE4 ports
Message-ID:  <f5e5fc69-c3e5-fbfc-485c-01ed18b0cbbe@freebsd.org>
In-Reply-To: <20180414165707.GA83446@troutmask.apl.washington.edu>
References:  <a9ce1576-a254-4e79-3e50-b90d49827a1e@freebsd.org> <BN6PR2001MB1730DAE90491E510EDED691F80B20@BN6PR2001MB1730.namprd20.prod.outlook.com> <20180414165707.GA83446@troutmask.apl.washington.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 14.04.18 um 18:57 schrieb Steve Kargl:
> On Sat, Apr 14, 2018 at 02:30:09PM +0000, Carmel NY wrote:
>> On Sat, 14 Apr 2018 14:18:22 +0200, Stefan Esser stated:
>>
>> {truncated}
>>
>>> This is another case (after the implementation of FLAVOR support that does
>>> not seem well-designed and causes lots of effort and inefficiencies in port
>>> management tools like portmaster), which makes me consider giving up my
>>> efforts to keep portmaster alive.
>>
>> Have you tried using "synth"?
> 
> This discussion occurred with the introduction of FLAVORS,
> which broken all ports management tools except poudriere.

Yes, but I put literally hundreds of hours of effort into
understanding portmaster (which is one monolythic 4000 line
shell script with global state that recursively invokes itself
to implement local state, with hundreds of instances forked in
practice) and implementing FLAVOR support.

That worked, until the next breakage was introduced by port
and package renames, that make it impossible to automatically
track the history of a port and to upgrade it correctly.

While poudriere just rebuilds ports (using available packages
to satisfy dependencies) and does not care what dependencies
a user has previously used on a system (e.g. which of multiple
SSL libraries, for ports that offer a choice). Instead the
packages built by poudriere will enforce a certain set of
dependencies, giving the user no choice (unless the packages
were custom built with specific options).

But it seems that the packages built by poudriere are also
not suitable for a clean upgrade of installed KDE4 ports.
At least in a test run, some 10 KF5 ports were going to be
installed during an attempt to upgrade a KDE4 port from an
official package.

Portmaster was fully functional before this new breakage, and
I'm really annoyed, that the KDE port and package name changes
have been performed without any thought about the consequences
for port management tools.

It is possible to work around this problem by manually setting
certain parameters in the package DB for each affected port.

I had expected that at least a script that perform these
operations on the package DB was provided.

Now the best option appears to be to remove all installed KDE4
ports and then to rebuild them with portmaster (which will work,
but requires a lot of unnecessary effort and time).

I'm still trying to find a satisfactory heuristic that lets
portmaster DTRT.

But this is a problem, since there are situations where one
choice of action is correct, while it will lead to corruption
of the installed packages in other cases.

The problem is, that now there are systems that have KDE4 ports
with package names (sans version) and origin identical to KDE5
versions of the respective program (e.g. databases/akonadi used
to be a KDE4 port that built akonadi-1.*, now it is a KDE5 port
that builds akonadi-17.*, which is of no use on a KDE4 system and
not suitable for use with KDE4 ports.

Upgrading akonadi (and the tens of other KDE4 ports whose port
directory has been hijacked by KDE5 versions) will thus create
useless KDE5 versions (and the KDE4 version will be removed
when the KDE5 version is installed).

Later upgrades of ports that depend on akonadi-kde4 will install
the correct new dependency (but are broken up to that point). But
the useless KDE5 ports will not be automatically removed.

Hmmm, if they were installed as an automatic dependency (and not
directly by the user), I could use that as a sign, that no other
port depends on them (unless they are actually required by a KDE5
package). This will require extra effort, but I can try whether
this works reliably.

I'll see whether I find an algorithm that uses information not
currently required or used to resolve these cases.

But this will only be in a completely new portmaster, which
shares just the options processing (to stay as compatible as
possible with existing scripts that invoke it) with the current
version in ports.

Regards, STefan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f5e5fc69-c3e5-fbfc-485c-01ed18b0cbbe>