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:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
|
|
@ -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}"; }
|
||||
)
|
||||
)
|
||||
|
|
@ -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}";
|
||||
}
|
||||
)
|
||||
)
|
||||
102
pkgs/development/interpreters/dhall/build-dhall-package.nix
Normal file
102
pkgs/development/interpreters/dhall/build-dhall-package.nix
Normal 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;
|
||||
}}
|
||||
''}
|
||||
''
|
||||
96
pkgs/development/interpreters/dhall/build-dhall-url.nix
Normal file
96
pkgs/development/interpreters/dhall/build-dhall-url.nix
Normal 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}
|
||||
'')
|
||||
|
|
@ -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 ];
|
||||
}
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue