uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,29 @@
{ buildDhallPackage, lib }:
# This is a minor variation on `buildDhallPackage` that splits the `code`
# argument into `src` and `file` in such a way that you can easily override
# the `file`
#
# This function is used by `dhall-to-nixpkgs` when given a directory
lib.makePackageOverridable
( { # Arguments passed through to `buildDhallPackage`
name
, dependencies ? []
, source ? false
, src
, # The file to import, relative to the root directory
file ? "package.dhall"
# Set to `true` to generate documentation for the package
, document ? false
}:
buildDhallPackage
( { inherit name dependencies source;
code = "${src}/${file}";
}
// lib.optionalAttrs document { documentationRoot = "${src}"; }
)
)

View file

@ -0,0 +1,62 @@
{ buildDhallPackage, fetchFromGitHub, lib }:
# This function is used by `dhall-to-nixpkgs` when given a GitHub repository
lib.makePackageOverridable
( { # Arguments passed through to `buildDhallPackage`
name
, dependencies ? []
, source ? false
, # The directory containing the Dhall files, if other than the root of the
# repository
directory ? ""
, # The file to import, relative to the above directory
file ? "package.dhall"
# Set to `true` to generate documentation for the package
, document ? false
# Arguments passed through to `fetchFromGitHub`
, owner
, repo
, rev
# Extra arguments passed through to `fetchFromGitHub`, such as the hash
# or `fetchSubmodules`
, ...
}@args:
let
versionedName = "${name}-${rev}";
src = fetchFromGitHub ({
name = "${versionedName}-source";
inherit owner repo rev;
} // removeAttrs args [
"name"
"dependencies"
"document"
"source"
"directory"
"file"
"owner"
"repo"
"rev"
]);
prefix = lib.optionalString (directory != "") "/${directory}";
in
buildDhallPackage
( { inherit dependencies source;
name = versionedName;
code = "${src}${prefix}/${file}";
}
// lib.optionalAttrs document
{ documentationRoot = "${src}/${prefix}";
baseImportUrl = "https://raw.githubusercontent.com/${owner}/${repo}/${rev}${prefix}";
}
)
)

View file

@ -0,0 +1,102 @@
{ dhall, dhall-docs, haskell, lib, lndir, runCommand, writeText }:
{ name
# Expressions to add to the cache before interpreting the code
, dependencies ? []
# A Dhall expression
#
# Carefully note that the following expression must be devoid of uncached HTTP
# imports. This is because the expression will be evaluated using an
# interpreter with HTTP support disabled, so all HTTP imports have to be
# protected by an integrity check that can be satisfied via cached
# dependencies.
#
# You can add a dependency to the cache using the preceding `dependencies`
# option
, code
# `buildDhallPackage` can include both a "source distribution" in
# `source.dhall` and a "binary distribution" in `binary.dhall`:
#
# * `source.dhall` is a dependency-free αβ-normalized Dhall expression
#
# * `binary.dhall` is an expression of the form: `missing sha256:${HASH}`
#
# This expression requires you to install the cache product located at
# `.cache/dhall/1220${HASH}` to successfully resolve
#
# By default, `buildDhallPackage` only includes "binary.dhall" to conserve
# space within the Nix store, but if you set the following `source` option to
# `true` then the package will also include `source.dhall`.
, source ? false
# Directory to generate documentation for (i.e. as the `--input` option to the
# `dhall-docs` command.)
#
# If `null`, then no documentation is generated.
, documentationRoot ? null
# Base URL prepended to paths copied to the clipboard
#
# This is used in conjunction with `documentationRoot`, and is unused if
# `documentationRoot` is `null`.
, baseImportUrl ? null
}:
let
# HTTP support is disabled in order to force that HTTP dependencies are built
# using Nix instead of using Dhall's support for HTTP imports.
dhallNoHTTP = haskell.lib.compose.appendConfigureFlag "-f-with-http" dhall;
file = writeText "${name}.dhall" code;
cache = ".cache";
data = ".local/share";
cacheDhall = "${cache}/dhall";
dataDhall = "${data}/dhall";
sourceFile = "source.dhall";
in
runCommand name { inherit dependencies; } ''
set -eu
mkdir -p ${cacheDhall}
for dependency in $dependencies; do
${lndir}/bin/lndir -silent $dependency/${cacheDhall} ${cacheDhall}
done
export XDG_CACHE_HOME=$PWD/${cache}
mkdir -p $out/${cacheDhall}
${dhallNoHTTP}/bin/dhall --alpha --file '${file}' > $out/${sourceFile}
SHA_HASH=$(${dhallNoHTTP}/bin/dhall hash <<< $out/${sourceFile})
HASH_FILE="''${SHA_HASH/sha256:/1220}"
${dhallNoHTTP}/bin/dhall encode --file $out/${sourceFile} > $out/${cacheDhall}/$HASH_FILE
echo "missing $SHA_HASH" > $out/binary.dhall
${lib.optionalString (!source) "rm $out/${sourceFile}"}
${lib.optionalString (documentationRoot != null) ''
mkdir -p $out/${dataDhall}
XDG_DATA_HOME=$out/${data} ${dhall-docs}/bin/dhall-docs --output-link $out/docs ${lib.cli.toGNUCommandLineShell { } {
base-import-url = baseImportUrl;
input = documentationRoot;
package-name = name;
}}
''}
''

View file

@ -0,0 +1,96 @@
{ cacert, dhall, dhall-docs, haskell, lib, runCommand }:
# `buildDhallUrl` is similar to `buildDhallDirectoryPackage` or
# `buildDhallGitHubPackage`, but instead builds a Nixpkgs Dhall package
# based on a hashed URL. This will generally be a URL that has an integrity
# check in a Dhall file.
#
# Similar to `buildDhallDirectoryPackage` and `buildDhallGitHubPackage`, the output
# of this function is a derivation that has a `binary.dhall` file, along with
# a `.cache/` directory with the actual contents of the Dhall file from the
# suppiled URL.
#
# This function is primarily used by `dhall-to-nixpkgs directory --fixed-output-derivations`.
{ # URL of the input Dhall file.
# example: "https://raw.githubusercontent.com/cdepillabout/example-dhall-repo/c1b0d0327146648dcf8de997b2aa32758f2ed735/example1.dhall"
url
# Nix hash of the input Dhall file.
# example: "sha256-ZTSiQUXpPbPfPvS8OeK6dDQE6j6NbP27ho1cg9YfENI="
, hash
# Dhall hash of the input Dhall file.
# example: "sha256:6534a24145e93db3df3ef4bc39e2ba743404ea3e8d6cfdbb868d5c83d61f10d2"
, dhallHash
# Name for this derivation.
, name ? (baseNameOf url + "-cache")
# `buildDhallUrl` can include both a "source distribution" in
# `source.dhall` and a "binary distribution" in `binary.dhall`:
#
# * `source.dhall` is a dependency-free αβ-normalized Dhall expression
#
# * `binary.dhall` is an expression of the form: `missing sha256:${HASH}`
#
# This expression requires you to install the cache product located at
# `.cache/dhall/1220${HASH}` to successfully resolve
#
# By default, `buildDhallUrl` only includes "binary.dhall" to conserve
# space within the Nix store, but if you set the following `source` option to
# `true` then the package will also include `source.dhall`.
, source ? false
}:
let
# HTTP support is disabled in order to force that HTTP dependencies are built
# using Nix instead of using Dhall's support for HTTP imports.
dhallNoHTTP = haskell.lib.appendConfigureFlag dhall "-f-with-http";
# This uses Dhall's remote importing capabilities for downloading a Dhall file.
# The output Dhall file has all imports resolved, and then is
# alpha-normalized and binary-encoded.
downloadedEncodedFile =
runCommand
(baseNameOf url)
{
outputHashAlgo = null;
outputHash = hash;
name = baseNameOf url;
nativeBuildInputs = [ cacert ];
}
''
echo "${url} ${dhallHash}" > in-dhall-file
${dhall}/bin/dhall --alpha --plain --file in-dhall-file | ${dhallNoHTTP}/bin/dhall encode > $out
'';
cache = ".cache";
data = ".local/share";
cacheDhall = "${cache}/dhall";
dataDhall = "${data}/dhall";
sourceFile = "source.dhall";
in
runCommand name { } (''
set -eu
mkdir -p ${cacheDhall} $out/${cacheDhall}
export XDG_CACHE_HOME=$PWD/${cache}
SHA_HASH="${dhallHash}"
HASH_FILE="''${SHA_HASH/sha256:/1220}"
cp ${downloadedEncodedFile} $out/${cacheDhall}/$HASH_FILE
echo "missing $SHA_HASH" > $out/binary.dhall
'' +
lib.optionalString source ''
${dhallNoHTTP}/bin/dhall decode --file ${downloadedEncodedFile} > $out/${sourceFile}
'')

View file

@ -0,0 +1,27 @@
{ dhall-nixpkgs, lib, stdenv }:
# This function calls `dhall-to-nixpkgs directory --fixed-output-derivations`
# within a Nix derivation.
#
# This is possible because
# `dhall-to-nixpkgs directory --fixed-output-derivations` will turn remote
# Dhall imports protected with Dhall integrity checksinto fixed-output
# derivations (with the `buildDhallUrl` function), so no unrestricted network
# access is necessary.
lib.makePackageOverridable
( { src
, # The file to import, relative to the root directory
file ? "package.dhall"
, # Set to `true` to generate documentation for the package
document ? false
}:
stdenv.mkDerivation {
name = "dhall-directory-package.nix";
buildCommand = ''
dhall-to-nixpkgs directory --fixed-output-derivations --file "${file}" "${src}" ${if document then "--document" else ""} > $out
'';
nativeBuildInputs = [ dhall-nixpkgs ];
}
)