Opened 10 years ago

Closed 10 years ago

#41773 closed defect (fixed)

kde can no longer be universal because of virtuoso

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: nerdling (Jeremy Lavergne)
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: Cc: pixilla (Bradley Giesbrecht), NicosPavlov, cooljeanius (Eric Gallager)
Port: virtuoso

Description

virtuoso was marked as x86_64-only in r114353. This makes pretty much all of kde no longer able to build universal:

$ port -u upgrade soprano
--->  Computing dependencies for soprano
Error: Cannot install soprano for the arch(s) 'i386 x86_64' because
Error: its dependency virtuoso only supports the arch(s) 'x86_64'.
Error: Unable to upgrade port: architecture mismatch
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets

Virtuoso needs to either be restored to i386 compatibility, or if that can't be done (and from #40882 I understand that upstream claims it cannot), then other ports like soprano that depend on virtuoso need to either have their universal variant disabled or use "depends_skip_archcheck virtuoso" to indicate that they don't use virtuoso's libraries. And the same needs to then be done for each of those ports, and so on up the dependency chain.

Change History (7)

comment:1 Changed 10 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:2 Changed 10 years ago by NicosPavlov

From what I could see, the two main ports which depend on virtuoso are soprano and kde4-runtime. In both cases, these are pure runtime dependencies, and both ports would build their virtuoso backend independently of the presence of virtuoso during build.

As such, I am not sure yet of the consequences, but it should be possible to remove virtuoso as a dependency to enable universal build if it is considered important enough, or declare "depends_skip_archcheck virtuoso", and the backend would activate if the binary runs on a 64 bit architecture.

As their dependence is similar, I would consider that the choice should be made for soprano as it is lower in the dependency chain, and the same could then be applied to kde4-runtime.

However, for what I could see, there is also redland (on which soprano depends) which declares virtuoso as a dependency. I did not look yet as the nature of the dependency in this case.

comment:3 in reply to:  2 Changed 10 years ago by nerdling (Jeremy Lavergne)

Replying to nicos@…:

declare "depends_skip_archcheck virtuoso"

I believe Redland is built without virtuoso. The Portfile shows that it's forcefully disabled in configure.args.

Sounds like it's optimal to use depends_skip_archeck in KDE land.

comment:4 Changed 10 years ago by NicosPavlov

Right, my mistake for redland. This makes things in fact easier.

Unless there is a reason I don't see, it seems to me that simplest way would be to declare the skip in the kde4 portgroup, as it involves all ports depending on soprano (and thus all ports depending on kdelibs4).

comment:5 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Isn't the only change we need to make then to add "depends_skip_archcheck virtuoso" to soprano? soprano will then be able to build universal, and the kde ports and all other ports may feel free to check soprano's archs as usual.

comment:6 Changed 10 years ago by NicosPavlov

Ah ok, thanks for the correction, I am not familiar with depends_skip_archcheck and was not sure if the architecture check was recursive in the dependencies. There will however also be a need to change kde4-runtime, which also declares a direct dependency to virtuoso.

Last edited 10 years ago by NicosPavlov (previous) (diff)

comment:7 Changed 10 years ago by NicosPavlov

Resolution: fixed
Status: newclosed

Committed respectively in r114783 and r114784 for soprano and kde4-runtime.

Note: See TracTickets for help on using tickets.