packages feed

hercules-ci-cnix-expr 0.3.6.3 → 0.3.6.4

raw patch · 5 files changed

+6/−229 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -5,6 +5,10 @@  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 0.3.6.4 - 2024-06-12++Got rid of unnecessary data files, improving packaging.+ ## 0.3.6.3 - 2024-05-19  Solve build warnings.
− data/vendor/flake-compat/COPYING
@@ -1,20 +0,0 @@-Copyright (c) 2020-2021 Eelco Dolstra and the flake-compat contributors--Permission is hereby granted, free of charge, to any person obtaining-a copy of this software and associated documentation files (the-"Software"), to deal in the Software without restriction, including-without limitation the rights to use, copy, modify, merge, publish,-distribute, sublicense, and/or sell copies of the Software, and to-permit persons to whom the Software is furnished to do so, subject to-the following conditions:--The above copyright notice and this permission notice shall be-included in all copies or substantial portions of the Software.--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
− data/vendor/flake-compat/default.nix
@@ -1,197 +0,0 @@-# Compatibility function to allow flakes to be used by-# non-flake-enabled Nix versions. Given a source tree containing a-# 'flake.nix' and 'flake.lock' file, it fetches the flake inputs and-# calls the flake's 'outputs' function. It then returns an attrset-# containing 'defaultNix' (to be used in 'default.nix'), 'shellNix'-# (to be used in 'shell.nix').--{ src, system ? builtins.currentSystem or "unknown-system" }:--let--  lockFilePath = src + "/flake.lock";--  lockFile = builtins.fromJSON (builtins.readFile lockFilePath);--  fetchTree =-    info:-    if info.type == "github" then-      { outPath =-          fetchTarball-            ({ url = "https://api.${info.host or "github.com"}/repos/${info.owner}/${info.repo}/tarball/${info.rev}"; }-             // (if info ? narHash then { sha256 = info.narHash; } else {})-            );-        rev = info.rev;-        shortRev = builtins.substring 0 7 info.rev;-        lastModified = info.lastModified;-        lastModifiedDate = formatSecondsSinceEpoch info.lastModified;-        narHash = info.narHash;-      }-    else if info.type == "git" then-      { outPath =-          builtins.fetchGit-            ({ url = info.url; }-             // (if info ? rev then { inherit (info) rev; } else {})-             // (if info ? ref then { inherit (info) ref; } else {})-            );-        lastModified = info.lastModified;-        lastModifiedDate = formatSecondsSinceEpoch info.lastModified;-        narHash = info.narHash;-      } // (if info ? rev then {-        rev = info.rev;-        shortRev = builtins.substring 0 7 info.rev;-      } else {-      })-    else if info.type == "path" then-      { outPath = builtins.path { path = info.path; };-        narHash = info.narHash;-      }-    else if info.type == "tarball" then-      { outPath =-          fetchTarball-            ({ inherit (info) url; }-             // (if info ? narHash then { sha256 = info.narHash; } else {})-            );-      }-    else if info.type == "gitlab" then-      { inherit (info) rev narHash lastModified;-        outPath =-          fetchTarball-            ({ url = "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}"; }-             // (if info ? narHash then { sha256 = info.narHash; } else {})-            );-        shortRev = builtins.substring 0 7 info.rev;-      }-    else-      # FIXME: add Mercurial, tarball inputs.-      throw "flake input has unsupported input type '${info.type}'";--  callFlake4 = flakeSrc: locks:-    let-      flake = import (flakeSrc + "/flake.nix");--      inputs = builtins.mapAttrs (n: v:-        if v.flake or true-        then callFlake4 (fetchTree (v.locked // v.info)) v.inputs-        else fetchTree (v.locked // v.info)) locks;--      outputs = flakeSrc // (flake.outputs (inputs // {self = outputs;}));-    in-      assert flake.edition == 201909;-      outputs;--  callLocklessFlake = flakeSrc:-    let-      flake = import (flakeSrc + "/flake.nix");-      outputs = flakeSrc // (flake.outputs ({ self = outputs; }));-    in outputs;--  rootSrc = let-    # Try to clean the source tree by using fetchGit, if this source-    # tree is a valid git repository.-    tryFetchGit = src:-      if isGit && !isShallow-      then-        let res = builtins.fetchGit src;-        in if res.rev == "0000000000000000000000000000000000000000" then removeAttrs res ["rev" "shortRev"]  else res-      else { outPath = src; };-    # NB git worktrees have a file for .git, so we don't check the type of .git-    isGit = builtins.pathExists (src + "/.git");-    isShallow = builtins.pathExists (src + "/.git/shallow");--  in-    { lastModified = 0; lastModifiedDate = formatSecondsSinceEpoch 0; }-      // (if src ? outPath then src else tryFetchGit src);--  # Format number of seconds in the Unix epoch as %Y%m%d%H%M%S.-  formatSecondsSinceEpoch = t:-    let-      rem = x: y: x - x / y * y;-      days = t / 86400;-      secondsInDay = rem t 86400;-      hours = secondsInDay / 3600;-      minutes = (rem secondsInDay 3600) / 60;-      seconds = rem t 60;--      # Courtesy of https://stackoverflow.com/a/32158604.-      z = days + 719468;-      era = (if z >= 0 then z else z - 146096) / 146097;-      doe = z - era * 146097;-      yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;-      y = yoe + era * 400;-      doy = doe - (365 * yoe + yoe / 4 - yoe / 100);-      mp = (5 * doy + 2) / 153;-      d = doy - (153 * mp + 2) / 5 + 1;-      m = mp + (if mp < 10 then 3 else -9);-      y' = y + (if m <= 2 then 1 else 0);--      pad = s: if builtins.stringLength s < 2 then "0" + s else s;-    in "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}${pad (toString minutes)}${pad (toString seconds)}";--  allNodes =-    builtins.mapAttrs-      (key: node:-        let-          sourceInfo =-            if key == lockFile.root-            then rootSrc-            else fetchTree (node.info or {} // removeAttrs node.locked ["dir"]);--          subdir = if key == lockFile.root then "" else node.locked.dir or "";--          flake = import (sourceInfo + (if subdir != "" then "/" else "") + subdir + "/flake.nix");--          inputs = builtins.mapAttrs-            (inputName: inputSpec: allNodes.${resolveInput inputSpec})-            (node.inputs or {});--          # Resolve a input spec into a node name. An input spec is-          # either a node name, or a 'follows' path from the root-          # node.-          resolveInput = inputSpec:-              if builtins.isList inputSpec-              then getInputByPath lockFile.root inputSpec-              else inputSpec;--          # Follow an input path (e.g. ["dwarffs" "nixpkgs"]) from the-          # root node, returning the final node.-          getInputByPath = nodeName: path:-            if path == []-            then nodeName-            else-              getInputByPath-                # Since this could be a 'follows' input, call resolveInput.-                (resolveInput lockFile.nodes.${nodeName}.inputs.${builtins.head path})-                (builtins.tail path);--          outputs = flake.outputs (inputs // { self = result; });--          result = outputs // sourceInfo // { inherit inputs; inherit outputs; inherit sourceInfo; };-        in-          if node.flake or true then-            assert builtins.isFunction flake.outputs;-            result-          else-            sourceInfo-      )-      lockFile.nodes;--  result =-    if !(builtins.pathExists lockFilePath)-    then callLocklessFlake rootSrc-    else if lockFile.version == 4-    then callFlake4 rootSrc (lockFile.inputs)-    else if lockFile.version >= 5 && lockFile.version <= 7-    then allNodes.${lockFile.root}-    else throw "lock file '${lockFilePath}' has unsupported version ${toString lockFile.version}";--in-  rec {-    defaultNix =-      result-      // (if result ? defaultPackage.${system} then { default = result.defaultPackage.${system}; } else {});--    shellNix =-      defaultNix-      // (if result ? devShell.${system} then { default = result.devShell.${system}; } else {});-  }
hercules-ci-cnix-expr.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4  name:           hercules-ci-cnix-expr-version:        0.3.6.3+version:        0.3.6.4 synopsis:       Bindings for the Nix evaluator category:       Nix, CI, Testing, DevOps homepage:       https://docs.hercules-ci.com@@ -16,11 +16,6 @@     test/data/sample.json     test/data/simple-flake/flake.nix -data-dir: data-data-files:-  vendor/flake-compat/*.nix-  vendor/flake-compat/COPYING- source-repository head   type: git   location: https://github.com/hercules-ci/hercules-ci-agent@@ -91,10 +86,6 @@       Hercules.CNix.Expr.Raw       Hercules.CNix.Expr.Typed       Hercules.CNix.Expr.Schema-  other-modules:-      Paths_hercules_ci_cnix_expr-  autogen-modules:-      Paths_hercules_ci_cnix_expr    hs-source-dirs:       src
src/Hercules/CNix/Expr.hs view
@@ -90,7 +90,6 @@ import Hercules.CNix.Store.Context import qualified Language.C.Inline.Cpp as C import qualified Language.C.Inline.Cpp.Exception as C-import Paths_hercules_ci_cnix_expr (getDataFileName) import Protolude hiding (evalState) import System.Directory (makeAbsolute) import Data.Aeson.KeyMap (toMapText)@@ -327,7 +326,7 @@  addInternalAllowedPaths :: Ptr EvalState -> IO () addInternalAllowedPaths evalState = do-  addAllowedPath evalState . encodeUtf8 . toS =<< getDataFileName "vendor/flake-compat"+  pass  evalFile :: Ptr EvalState -> FilePath -> IO RawValue evalFile evalState filename = do