Opened 11 years ago

Closed 8 years ago

#40293 closed enhancement (fixed)

Avoid building broken/incompatible ports on buildbots (or don't report an error)

Reported by: mojca (Mojca Miklavec) Owned by: admin@…
Priority: Low Milestone:
Component: server/hosting Version:
Keywords: Cc: cooljeanius (Eric Gallager)
Port:

Description (last modified by mojca (Mojca Miklavec))

There are certain ports which are known to be broken or which are known to be incompatible with a certain version of Mac OS X (wxWidgets 2.8 won't compile on 10.7 and later).

And there are ports like p5-graveyard and py-graveyard whose compilation on the buildbot might take more than a day and are programmed in such a way that they don't produce any package/output at all. The whole process is just a hack to allow auto-upgrade (and all the subports in the graveyard port are programmed to fail).

Would it be possible to skip building some of these ports on the buildbot (or at least avoid treating that failure as an error)?

Change History (14)

comment:1 Changed 11 years ago by larryv (Lawrence Velázquez)

How is the buildbot supposed to know whether a port is broken unless it tries building it? We are not going to add a Portfile keyword indicating brokenness.

As for version incompatibility, that’s #15712, which I haven’t gotten around to working on.

comment:2 Changed 11 years ago by cooljeanius (Eric Gallager)

You could always set the license to something that isn't distributable...

comment:3 Changed 11 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:4 Changed 11 years ago by mojca (Mojca Miklavec)

Yes, I had a separate keyword in mind, for example

buildbot.skip

Maybe not a keyword for this exclusively, but there might be other things which could be useful to assist the buildbot. I'm not sure what that could be at the moment, but the first example that comes to mind would be

buildbot.variant +quartz
buildbot.variant +x11

to request from the buildbot to build with both +x11 and +quartz. Before #35897 gets implemented, this could be used to build qt4-mac +universal and other special cases that justify the extra building time.

I know it sounds a bit insane, but ...

(Why has the other ticket been open for so long? Maybe now that buildbots exist, this would be another reason to fix this.)

comment:5 in reply to:  2 ; Changed 11 years ago by mojca (Mojca Miklavec)

Replying to egall@…:

You could always set the license to something that isn't distributable...

Are you suggesting to change the licence to something non-distributable just for Snow Leopard? I find this to be a horrible abuse of the system.

comment:6 Changed 11 years ago by mojca (Mojca Miklavec)

This should probably be in a separate ticket, but I just realized that if I use

sudo port install wxWidgets-2.8

it will first attempt to build all dependencies with +universal and only fail once all the universal dependencies are installed. Shouldn't this be prevented *before* a whole bunch of dependencies gets installed?

comment:7 in reply to:  5 ; Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to mojca@…:

Replying to egall@…:

You could always set the license to something that isn't distributable...

Are you suggesting to change the licence to something non-distributable just for Snow Leopard? I find this to be a horrible abuse of the system.

Well, yes, it would be a dirty hack, but it would work in the meantime until your idea gets implemented.

comment:8 in reply to:  4 Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to mojca@…:

Yes, I had a separate keyword in mind, for example

buildbot.skip

Maybe not a keyword for this exclusively, but there might be other things which could be useful to assist the buildbot.

I am very much against adding Portfile features that even acknowledge the existence of our Buildbot system, because it is completely accessory and not critical to MacPorts. I’m all for enhancing the system server-side, but not by adding cruft to Portfiles.

And I don’t see the problem with allowing failing builds. What happens if Port A requires Port B, which is marked to be skipped without failing? I don’t even think base can handle this situation.

I'm not sure what that could be at the moment, but the first example that comes to mind would be

buildbot.variant +quartz
buildbot.variant +x11

to request from the buildbot to build with both +x11 and +quartz. Before #35897 gets implemented, this could be used to build qt4-mac +universal and other special cases that justify the extra building time.

Allowing port maintainers to dictate which binary archives get built does not seem like a good idea to me.

(Why has the other ticket been open for so long? Maybe now that buildbots exist, this would be another reason to fix this.)

Frankly, it’s never been fixed because it’s not really a problem. Just erroring out is kind of messy but more-or-less works. Enforcing platform versioning would really just be syntactic sugar for the way it works now.

comment:9 in reply to:  7 Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to egall@…:

Replying to mojca@…:

Replying to egall@…:

You could always set the license to something that isn't distributable...

Are you suggesting to change the licence to something non-distributable just for Snow Leopard? I find this to be a horrible abuse of the system.

Well, yes, it would be a dirty hack, but it would work in the meantime until your idea gets implemented.

DO NOT DO THIS. Failing builds on the buildslaves is not a problem. Don’t screw up the Portfiles to work around a non-issue.

comment:10 in reply to:  6 ; Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to mojca@…:

This should probably be in a separate ticket, but I just realized that if I use

sudo port install wxWidgets-2.8

it will first attempt to build all dependencies with +universal and only fail once all the universal dependencies are installed. Shouldn't this be prevented *before* a whole bunch of dependencies gets installed?

Depends. Why does it fail?

comment:11 in reply to:  10 ; Changed 11 years ago by mojca (Mojca Miklavec)

Replying to larryv@…:

Replying to mojca@…:

This should probably be in a separate ticket, but I just realized that if I use

sudo port install wxWidgets-2.8

it will first attempt to build all dependencies with +universal and only fail once all the universal dependencies are installed. Shouldn't this be prevented *before* a whole bunch of dependencies gets installed?

Depends. Why does it fail?

pre-fetch {
    # 10.8 (or later) -or- 10.7 with Xcode 4.4 (or later)
    if {${os.major} >= 12 || [vercmp $xcodeversion 4.4] >= 0} {
        ui_error "${wxWidgets.port} cannot be built on Moc OS X >= 10.7 with Xcode >= 4.4, please use port wxWidgets-3.0 or wxgtk-2.8 instead"
        return -code return "wxWidgets-2.8 cannot be built on Moc OS X >= 10.7 with Xcode >= 4.4, please use port wxWidgets-3.0 or wxgtk-2.8 instead"
    }
}

comment:12 in reply to:  11 Changed 11 years ago by larryv (Lawrence Velázquez)

Oh, it’s one of those. Yes, it would certainly be better if base just didn’t even bother in this case. (Or in the case of ports with unsatisfiable supported_archs.)

It’s on my to-do list, although it’s admittedly not very high on it. As always, patches are welcome.

Last edited 11 years ago by larryv (Lawrence Velázquez) (previous) (diff)

comment:13 Changed 9 years ago by mojca (Mojca Miklavec)

Description: modified (diff)
Owner: changed from wsiegrist@… to admin@…

comment:14 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

We've discussed lately on the mailing list that it would be good to add keywords to MacPorts that allow a port to specify conditions when it does not build, for example based on macOS version or whatever other reason.

Until that's implemented, the new build system skips ports using the obsolete portgroup or whose name contains "graveyard".

Note: See TracTickets for help on using tickets.