From 2944aeb2c64d9e8eb060e14ae1762e208c53b3bb Mon Sep 17 00:00:00 2001 From: Nano Twerpus Date: Fri, 31 May 2024 06:11:31 -0400 Subject: [PATCH 1/2] ccache: 4.9.1 -> 4.10 Dependencies now necessary to compile `ccache` added: `doctest`, `fmt`, `hiredis`, `xxHash`. --- pkgs/by-name/cc/ccache/package.nix | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pkgs/by-name/cc/ccache/package.nix b/pkgs/by-name/cc/ccache/package.nix index 393857f1fe4d..5ac81019e111 100644 --- a/pkgs/by-name/cc/ccache/package.nix +++ b/pkgs/by-name/cc/ccache/package.nix @@ -5,23 +5,27 @@ , binutils , asciidoctor , cmake +, doctest +, fmt +, hiredis , perl , zstd , bashInteractive , xcodebuild +, xxHash , makeWrapper , nix-update-script }: stdenv.mkDerivation (finalAttrs: { pname = "ccache"; - version = "4.9.1"; + version = "4.10"; src = fetchFromGitHub { owner = "ccache"; repo = "ccache"; rev = "refs/tags/v${finalAttrs.version}"; - sha256 = "sha256-n0MTq8x6KNkgwhJQG7F+e3iCOS644nLkMsiRztJe8QU="; + sha256 = "sha256-0T9iJXnDX8LffhB/5hsfBNyZQ211f0lL/7dvTrjmiE0="; }; outputs = [ "out" "man" ]; @@ -39,14 +43,11 @@ stdenv.mkDerivation (finalAttrs: { }) ]; + strictDeps = true; nativeBuildInputs = [ asciidoctor cmake perl ]; - buildInputs = [ zstd ]; + buildInputs = [ fmt hiredis xxHash zstd ]; - cmakeFlags = [ - # Build system does not autodetect redis library presence. - # Requires explicit flag. - "-DREDIS_STORAGE_BACKEND=OFF" - ]; + cmakeFlags = lib.optional (!finalAttrs.finalPackage.doCheck) "-DENABLE_TESTING=OFF"; doCheck = true; nativeCheckInputs = [ @@ -55,6 +56,10 @@ stdenv.mkDerivation (finalAttrs: { bashInteractive ] ++ lib.optional stdenv.isDarwin xcodebuild; + checkInputs = [ + doctest + ]; + checkPhase = let badTests = [ From d148e5a6dad22903299e1264e848e0127d30ece2 Mon Sep 17 00:00:00 2001 From: Nano Twerpus Date: Fri, 31 May 2024 06:58:44 -0400 Subject: [PATCH 2/2] ccache: format with `nixfmt-rfc-style` --- pkgs/by-name/cc/ccache/package.nix | 177 +++++++++++++++++------------ 1 file changed, 102 insertions(+), 75 deletions(-) diff --git a/pkgs/by-name/cc/ccache/package.nix b/pkgs/by-name/cc/ccache/package.nix index 5ac81019e111..f39066fba289 100644 --- a/pkgs/by-name/cc/ccache/package.nix +++ b/pkgs/by-name/cc/ccache/package.nix @@ -1,20 +1,21 @@ -{ lib -, stdenv -, fetchFromGitHub -, substituteAll -, binutils -, asciidoctor -, cmake -, doctest -, fmt -, hiredis -, perl -, zstd -, bashInteractive -, xcodebuild -, xxHash -, makeWrapper -, nix-update-script +{ + lib, + stdenv, + fetchFromGitHub, + substituteAll, + binutils, + asciidoctor, + cmake, + perl, + fmt, + hiredis, + xxHash, + zstd, + bashInteractive, + doctest, + xcodebuild, + makeWrapper, + nix-update-script, }: stdenv.mkDerivation (finalAttrs: { @@ -28,7 +29,10 @@ stdenv.mkDerivation (finalAttrs: { sha256 = "sha256-0T9iJXnDX8LffhB/5hsfBNyZQ211f0lL/7dvTrjmiE0="; }; - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; patches = [ # When building for Darwin, test/run uses dwarfdump, whereas on @@ -44,12 +48,24 @@ stdenv.mkDerivation (finalAttrs: { ]; strictDeps = true; - nativeBuildInputs = [ asciidoctor cmake perl ]; - buildInputs = [ fmt hiredis xxHash zstd ]; + + nativeBuildInputs = [ + asciidoctor + cmake + perl + ]; + + buildInputs = [ + fmt + hiredis + xxHash + zstd + ]; cmakeFlags = lib.optional (!finalAttrs.finalPackage.doCheck) "-DENABLE_TESTING=OFF"; doCheck = true; + nativeCheckInputs = [ # test/run requires the compgen function which is available in # bashInteractive, but not bash. @@ -62,14 +78,16 @@ stdenv.mkDerivation (finalAttrs: { checkPhase = let - badTests = [ - "test.trim_dir" # flaky on hydra (possibly filesystem-specific?) - ] ++ lib.optionals stdenv.isDarwin [ - "test.basedir" - "test.fileclone" # flaky on hydra (possibly filesystem-specific?) - "test.multi_arch" - "test.nocpp2" - ]; + badTests = + [ + "test.trim_dir" # flaky on hydra (possibly filesystem-specific?) + ] + ++ lib.optionals stdenv.isDarwin [ + "test.basedir" + "test.fileclone" # flaky on hydra (possibly filesystem-specific?) + "test.multi_arch" + "test.nocpp2" + ]; in '' runHook preCheck @@ -81,53 +99,59 @@ stdenv.mkDerivation (finalAttrs: { 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 { - pname = "ccache-links"; - inherit (finalAttrs) version; - passthru = { - isClang = unwrappedCC.isClang or false; - isGNU = unwrappedCC.isGNU or false; - isCcache = true; + links = + { unwrappedCC, extraConfig }: + stdenv.mkDerivation { + pname = "ccache-links"; + inherit (finalAttrs) version; + passthru = { + isClang = unwrappedCC.isClang or false; + isGNU = unwrappedCC.isGNU or false; + isCcache = true; + }; + inherit (unwrappedCC) lib; + nativeBuildInputs = [ makeWrapper ]; + # Unwrapped clang does not have a targetPrefix because it is multi-target + # target is decided with argv0. + buildCommand = + let + targetPrefix = + if unwrappedCC.isClang or false then + "" + else + (lib.optionalString ( + unwrappedCC ? targetConfig && unwrappedCC.targetConfig != null && unwrappedCC.targetConfig != "" + ) "${unwrappedCC.targetConfig}-"); + in + '' + mkdir -p $out/bin + + wrap() { + local cname="${targetPrefix}$1" + if [ -x "${unwrappedCC}/bin/$cname" ]; then + makeWrapper ${finalAttrs.finalPackage}/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 + ''; }; - inherit (unwrappedCC) lib; - nativeBuildInputs = [ makeWrapper ]; - # Unwrapped clang does not have a targetPrefix because it is multi-target - # target is decided with argv0. - buildCommand = let - targetPrefix = if unwrappedCC.isClang or false - then - "" - else - (lib.optionalString (unwrappedCC ? targetConfig && unwrappedCC.targetConfig != null && unwrappedCC.targetConfig != "") "${unwrappedCC.targetConfig}-"); - in '' - mkdir -p $out/bin - - wrap() { - local cname="${targetPrefix}$1" - if [ -x "${unwrappedCC}/bin/$cname" ]; then - makeWrapper ${finalAttrs.finalPackage}/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 - ''; - }; updateScript = nix-update-script { }; }; @@ -141,7 +165,10 @@ stdenv.mkDerivation (finalAttrs: { }"; license = licenses.gpl3Plus; mainProgram = "ccache"; - maintainers = with maintainers; [ kira-bruneau r-burns ]; + maintainers = with maintainers; [ + kira-bruneau + r-burns + ]; platforms = platforms.unix; }; })