Skip to content

Build all derivations on Linux, unless specified otherwise #19990

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 29, 2016

Conversation

domenkozar
Copy link
Member

@domenkozar domenkozar commented Oct 30, 2016

We have packages dating back to 2010 that never get built or tested. In order to prevent that in the future, I propose we always build packages at least on Linux platform.

This will increase failed builds, but we should go through them and see what's feasible to keep.

If there won't be strong reasons not to do this, I'll make a separate hydra jobset to get the first impression.

PS: Haskell, Python and other will still not get build due to overrides in pkgs/top-level/release.nix
PS2: Broken derivation will still not build

@mention-bot
Copy link

@domenkozar, thanks for your PR! By analyzing the history of the files in this pull request, we identified @edolstra, @rbvermaa and @chaoflow to be potential reviewers.

@sternenseemann
Copy link
Member

Of what exactly does this change the behavior? The Hydra building the release?

@7c6f434c
Copy link
Member

You wanted to say «all except those marked as broken», right?

@@ -85,7 +85,7 @@ rec {
packagePlatforms = mapAttrs (name: value:
let res = builtins.tryEval (
if isDerivation value then
value.meta.hydraPlatforms or (value.meta.platforms or [])
value.meta.hydraPlatforms or (value.meta.platforms or [ platforms.linux ])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't platforms.linux already a list? Why the extra [] around?

@domenkozar
Copy link
Member Author

@7c6f434c correct.

@vcunat
Copy link
Member

vcunat commented Oct 30, 2016

Any idea how many that would be? Maybe we could restrict them just to [ "x86_64-linux" ].

@copumpkin
Copy link
Member

Doesn't this just mean "unless overridden to only be on other platforms"? I reacted negatively to the title but the code looks more reasonable.

@vcunat vcunat changed the title Build all derivations at least for Linux Build all derivations on Linux, unless specified otherwise Oct 31, 2016
@vcunat
Copy link
Member

vcunat commented Oct 31, 2016

Yes, it does.

@domenkozar
Copy link
Member Author

@vcunat yeah [ "x86_64-linux" ] seems more reasonable. I'll setup a jobset once Hydra is bored.

@vcunat
Copy link
Member

vcunat commented Nov 5, 2016

Yeah, now we have some security mass rebuilds.

@vcunat
Copy link
Member

vcunat commented Nov 19, 2016

@domenkozar: why do you think a separate jobset is needed? This can only add new builds, not break anything, right?

@NeQuissimus
Copy link
Member

@vcunat this is going to find packages I've already been hunting down that no longer have their sources available online. I would expect some breakage

@vcunat
Copy link
Member

vcunat commented Nov 19, 2016

Perhaps, but not breakage of anything that works now, so it shouldn't hurt anyone. And we're do have a few hundred failures already, so some more (temporary) red lines shouldn't make the result significantly more confusing.

@grahamc
Copy link
Member

grahamc commented Nov 28, 2016

Looks like @7c6f434c's feedback was resolved. I'd say we merge this and deal with the newly exposed brokenness.

@domenkozar
Copy link
Member Author

domenkozar commented Nov 28, 2016

@NeQuissimus
Copy link
Member

Is it expected that so many Haskell packages fail on Darwin?

Are we looking to fix the failures or drop some of these packages, especially if they have not been updated in a long time?

@domenkozar
Copy link
Member Author

Darwin failures have nothing to do with this PR :)

@grahamc
Copy link
Member

grahamc commented Nov 28, 2016 via email

@vcunat
Copy link
Member

vcunat commented Nov 28, 2016

862 new jobs but > 14k queued jobs. It would be nicer to base this on a more recent master to avoid that. (It would also actually prepare binaries useful after the merge.)

@domenkozar
Copy link
Member Author

@vcunat the parent commit is from yesterday. The queue was long since it just needs to be processed. I'm merging this, there are 95 build failures but I see no reason to block this change.

@domenkozar domenkozar merged commit 8b782f4 into NixOS:master Nov 29, 2016
@vcunat
Copy link
Member

vcunat commented Nov 29, 2016

Oh, I'm sorry, I should've checked the parent.

The first-pass processing tends to be relatively fast and this felt rather slow. There seems unfortunately no indication how much of queued jobs is in the first-pass stage...

dezgeg added a commit that referenced this pull request Dec 5, 2016
Or they will be tried to be built on x86_64 since #19990.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 28, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 28, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 28, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 29, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 29, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 29, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
emilazy added a commit to emilazy/nixpkgs that referenced this pull request Oct 29, 2024
This was added in <NixOS#19990> to
ensure that packages that previously weren’t building at all would
get at least one platform’s worth of coverage. However, since most
`runCommand` calls don’t explicitly set any `meta` information,
this meant that things like `tests.makeWrapper` were only being
run for `x86_64-linux`. Since most trivial builder calls should
work on all platforms, it doesn’t make much sense for them to be
restricted in this way, and we shouldn’t unnecessarily penalize
other platforms by treating an empty `meta.platforms` inconsistently
with `check-meta`’s maximally‐permissive interpretation. Actual
packages that only work on a subset of platforms should, of course,
set `meta.platforms` explicitly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants