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
126
pkgs/development/tools/misc/ccache/default.nix
Normal file
126
pkgs/development/tools/misc/ccache/default.nix
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, binutils
|
||||
, asciidoctor
|
||||
, cmake
|
||||
, perl
|
||||
, zstd
|
||||
, bashInteractive
|
||||
, xcodebuild
|
||||
, makeWrapper
|
||||
, nix-update-script
|
||||
}:
|
||||
|
||||
let ccache = stdenv.mkDerivation rec {
|
||||
pname = "ccache";
|
||||
version = "4.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-XcelGBb5bRLZKSbtC2J40d6CsSF/ZF3eJW0UXe1Y40A=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
patches = [
|
||||
# When building for Darwin, test/run uses dwarfdump, whereas on
|
||||
# Linux it uses objdump. We don't have dwarfdump packaged for
|
||||
# Darwin, so this patch updates the test to also use objdump on
|
||||
# Darwin.
|
||||
(substituteAll {
|
||||
src = ./force-objdump-on-darwin.patch;
|
||||
objdump = "${binutils.bintools}/bin/objdump";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ asciidoctor cmake perl ];
|
||||
buildInputs = [ zstd ];
|
||||
|
||||
cmakeFlags = [
|
||||
# Build system does not autodetect redis library presence.
|
||||
# Requires explicit flag.
|
||||
"-DREDIS_STORAGE_BACKEND=OFF"
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkInputs = [
|
||||
# test/run requires the compgen function which is available in
|
||||
# bashInteractive, but not bash.
|
||||
bashInteractive
|
||||
] ++ lib.optional stdenv.isDarwin xcodebuild;
|
||||
|
||||
checkPhase = let
|
||||
badTests = [
|
||||
"test.trim_dir" # flaky on hydra (possibly filesystem-specific?)
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
"test.basedir"
|
||||
"test.multi_arch"
|
||||
"test.nocpp2"
|
||||
];
|
||||
in ''
|
||||
runHook preCheck
|
||||
export HOME=$(mktemp -d)
|
||||
ctest --output-on-failure -E '^(${lib.concatStringsSep "|" badTests})$'
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
# A derivation that provides gcc and g++ commands, but that
|
||||
# will end up calling ccache for the given cacheDir
|
||||
links = {unwrappedCC, extraConfig}: stdenv.mkDerivation {
|
||||
name = "ccache-links";
|
||||
passthru = {
|
||||
isClang = unwrappedCC.isClang or false;
|
||||
isGNU = unwrappedCC.isGNU or false;
|
||||
};
|
||||
inherit (unwrappedCC) lib;
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildCommand = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
wrap() {
|
||||
local cname="$1"
|
||||
if [ -x "${unwrappedCC}/bin/$cname" ]; then
|
||||
makeWrapper ${ccache}/bin/ccache $out/bin/$cname \
|
||||
--run ${lib.escapeShellArg extraConfig} \
|
||||
--add-flags ${unwrappedCC}/bin/$cname
|
||||
fi
|
||||
}
|
||||
|
||||
wrap cc
|
||||
wrap c++
|
||||
wrap gcc
|
||||
wrap g++
|
||||
wrap clang
|
||||
wrap clang++
|
||||
|
||||
for executable in $(ls ${unwrappedCC}/bin); do
|
||||
if [ ! -x "$out/bin/$executable" ]; then
|
||||
ln -s ${unwrappedCC}/bin/$executable $out/bin/$executable
|
||||
fi
|
||||
done
|
||||
for file in $(ls ${unwrappedCC} | grep -vw bin); do
|
||||
ln -s ${unwrappedCC}/$file $out/$file
|
||||
done
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Compiler cache for fast recompilation of C/C++ code";
|
||||
homepage = "https://ccache.dev";
|
||||
downloadPage = "https://ccache.dev/download.html";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ kira-bruneau r-burns ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
};
|
||||
in ccache
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
diff --git a/test/run b/test/run
|
||||
index 9623e49d..3df1c5a8 100755
|
||||
--- a/test/run
|
||||
+++ b/test/run
|
||||
@@ -126,23 +126,17 @@ file_size() {
|
||||
objdump_cmd() {
|
||||
local file="$1"
|
||||
|
||||
- if $HOST_OS_APPLE; then
|
||||
- xcrun dwarfdump -r 0 "$file"
|
||||
- elif $HOST_OS_WINDOWS || $HOST_OS_CYGWIN; then
|
||||
+ if $HOST_OS_WINDOWS || $HOST_OS_CYGWIN; then
|
||||
# For some reason objdump only shows the basename of the file, so fall
|
||||
# back to brute force and ignorance.
|
||||
strings "$1"
|
||||
else
|
||||
- objdump -W "$file"
|
||||
+ @objdump@ -W "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
objdump_grep_cmd() {
|
||||
- if $HOST_OS_APPLE; then
|
||||
- fgrep -q "\"$1\""
|
||||
- else
|
||||
- fgrep -q ": $1"
|
||||
- fi
|
||||
+ fgrep -q ": $1"
|
||||
}
|
||||
|
||||
expect_stat() {
|
||||
Loading…
Add table
Add a link
Reference in a new issue