Build failure: yacreader on aarch64-darwin
Open
Beginner friendly
Nobody has claimed this yet.
- Dominant language
- Nix
- Stars
- 26.2k
- Forks
- 20.1k
- PR merge metrics
- PR metrics pending
Description
pipewire is not available on darwin, and I believe this change caused yacreader to become unavailable. I believe the fix would probably be similar to #407759.
Here is the full evaluation error I got trying to build my home-manager config:
error:
… while calling the 'derivationStrict' builtin
at «nix-internal»/derivation-internal.nix:38:12:
37|
38| strict = drvFunc drvAttrs;
| ^
39|
… while evaluating derivation 'home-manager-generation'
whose name attribute is located at «github:nixos/nixpkgs/567a49d»/pkgs/stdenv/generic/make-derivation.nix:651:11
… while evaluating attribute 'buildCommand' of derivation 'home-manager-generation'
at «github:nixos/nixpkgs/567a49d»/pkgs/build-support/trivial-builders/default.nix:81:17:
80| enableParallelBuilding = true;
81| inherit buildCommand name;
| ^
82| passAsFile = [ "buildCommand" ] ++ (derivationArgs.passAsFile or [ ]);
<snip>
… while calling the 'throw' builtin
at «github:nixos/nixpkgs/567a49d»/pkgs/stdenv/generic/check-meta.nix:701:13:
700| else
701| throw msg;
| ^
702|
error: Refusing to evaluate package 'pipewire-1.6.5' in /nix/store/lbi962pdq1l03sb813j3dq4af06zwk36-source/pkgs/by-name/pi/pipewire/package.nix:293 because it is not available on the requested hostPlatform:
hostPlatform.system = "aarch64-darwin"
package.meta.platforms = [
"aarch64-linux"
"arc-linux"
"armv5tel-linux"
"armv6l-linux"
"armv7a-linux"
"armv7l-linux"
"i686-linux"
"loongarch64-linux"
"m68k-linux"
"sh4-linux"
"microblaze-linux"
"microblazeel-linux"
"mips-linux"
"mips64-linux"
"mips64el-linux"
"mipsel-linux"
"powerpc-linux"
"powerpc64-linux"
"powerpc64le-linux"
"riscv32-linux"
"riscv64-linux"
"s390-linux"
"s390x-linux"
"x86_64-linux"
"i686-freebsd"
"x86_64-freebsd"
"aarch64-freebsd"
]
package.meta.badPlatforms = [ ]
a) To temporarily allow packages that are unsupported for this system, you can use an environment variable
for a single invocation of the nix tools.
$ export NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1
Note: When using `nix shell`, `nix build`, `nix develop`, etc with a flake,
then pass `--impure` in order to allow use of environment variables.
b) For `nixos-rebuild` you can set
{ nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.
c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
{ allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.
Originally posted by @bcc32 in https://github.com/NixOS/nixpkgs/issues/527314#issuecomment-4724878472
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with pkgs/by-name/pi/pipewire/package.nix at line 293 and compare the platform-handling change in issue #407759. Trace how yacreader depends on pipewire, then verify that evaluating yacreader for aarch64-darwin no longer rejects the unavailable dependency.
Written by the indexing model from the issue text.
Assessment
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100