Unverified Commit eb875b4a authored by Wolfgang Walther's avatar Wolfgang Walther
Browse files

pkgsi686Linux: only throw with aliases enabled

For the regular user, this still throws early whenever an attribute
tries to use `pkgsi686Linux`. For CI, this doesn't throw, but instead
overwrites `mkDerivation` to return only derivations marked as
`meta.broken`. This propagates to all reverse dependencies and allows
filtering out these attributes nicely on unsupported platforms.
parent 174e6bba
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -240,12 +240,32 @@ let
    # All packages built for i686 Linux.
    # Used by wine, firefox with debugging version of Flash, ...
    pkgsi686Linux =
      if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then
      let
        isSupported = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86;
      in
      if !config.allowAliases || isSupported then
        nixpkgsFun {
          overlays = [
            (self': super': {
            (
              self': super':
              {
                pkgsi686Linux = super';
            })
              }
              // lib.optionalAttrs (!isSupported) {
                # Overrides pkgsi686Linux.stdenv.mkDerivation to produce only broken derivations,
                # when used on a non x86_64-linux platform in CI.
                # TODO: Remove this, once pkgsi686Linux can become a variant.
                stdenv = super'.stdenv // {
                  mkDerivation =
                    args:
                    (super'.stdenv.mkDerivation args).overrideAttrs (prevAttrs: {
                      meta = prevAttrs.meta or { } // {
                        broken = true;
                      };
                    });
                };
              }
            )
          ] ++ overlays;
          ${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = {
            config = lib.systems.parse.tripleFromSystem (