about summary refs log tree commit diff
path: root/pkgs/development/compilers/gerbil/gerbil-support.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/gerbil/gerbil-support.nix')
-rw-r--r--pkgs/development/compilers/gerbil/gerbil-support.nix203
1 files changed, 0 insertions, 203 deletions
diff --git a/pkgs/development/compilers/gerbil/gerbil-support.nix b/pkgs/development/compilers/gerbil/gerbil-support.nix
deleted file mode 100644
index e395d8ca1dec..000000000000
--- a/pkgs/development/compilers/gerbil/gerbil-support.nix
+++ /dev/null
@@ -1,203 +0,0 @@
-{ pkgs, lib, callPackage, ... }:
-
-let
-  inherit (builtins) filterSource;
-
-  inherit (lib)
-    commitIdFromGitRepo
-    concatStringsSep
-    elem
-    elemAt
-    hasSuffix
-    listToAttrs
-    mapAttrs
-    optionalString
-    pathExists
-    readFile
-    removeSuffix
-    substring
-    traceSeqN
-    ;
-
-  inherit (lib.strings) match;
-
-  # Implicitly calls through to this file, similar to `let .. in` or `rec`.
-  inherit (pkgs.gerbil-support)
-    callPpp
-    gerbilLoadPath
-    gerbilPackage
-    gerbilPackages-unstable
-    gerbilSkippableFiles
-    gerbilSourceFilter
-    overrideSrcIfShaDiff
-    ppaToPl
-    pppToKV
-    pppToName
-    ppplToPpa
-    prePackage-defaults
-    prePackages-unstable
-    resolve-pre-src
-    sha256-of-pre-src
-    view
-    ;
-in
-
-{
-  pppToName = ppp: removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name
-  callPpp = ppp: callPackage ppp prePackage-defaults; # from pre-package path to pre-package
-  pppToKV = ppp: { name = pppToName ppp; value = callPpp ppp; }; # from pre-package path to name
-  ppplToPpa = ppps: listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr
-
-  prePackages-unstable =
-    ppplToPpa
-      [ ./gerbil-leveldb.nix ./gerbil-lmdb.nix ./gerbil-mysql.nix
-        ./gerbil-libxml.nix ./gerbil-libyaml.nix
-        ./smug-gerbil.nix # ./ftw.nix
-        ./gerbil-utils.nix ./gerbil-crypto.nix ./gerbil-poo.nix
-        ./gerbil-persist.nix ./gerbil-ethereum.nix
-        # ./gerbil-libp2p.nix
-        ./glow-lang.nix
-      ];
-
-  prePackage-defaults = {
-    gerbil = pkgs.gerbil-unstable;
-    gambit-params = pkgs.gambit-support.unstable-params;
-    gerbilPackages = gerbilPackages-unstable;
-    git-version = "";
-    version-path = "";
-    gerbilInputs = [];
-    nativeBuildInputs = [];
-    buildInputs = [];
-    buildScript = "./build.ss";
-    postInstall = "";
-    softwareName = "";
-  };
-
-  ppaToPl = mapAttrs (_: gerbilPackage);
-  gerbilPackages-unstable = ppaToPl prePackages-unstable;
-
-  resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]);
-
-  gerbilVersionFromGit = srcDir: version-path:
-    let version-file = "${srcDir}/${version-path}.ss"; in
-    if pathExists version-file then
-      let m =
-        match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n"
-          (readFile version-file); in
-          { version = "${elemAt m 2}-git"; git-version = elemAt m 1; }
-     else { version = "0.0-git";
-            git-version = let gitpath = "${srcDir}/.git"; in
-              if pathExists gitpath then commitIdFromGitRepo gitpath else "0"; };
-
-  gerbilSkippableFiles = [".git" ".build" ".build_outputs" "run" "result" "dep" "BLAH" "tmp.nix"];
-
-  gerbilSourceFilter = path: type:
-    let baseName = baseNameOf path; in
-      ! (elem baseName gerbilSkippableFiles || hasSuffix "~" baseName);
-
-  gerbilFilterSource = filterSource gerbilSourceFilter;
-
-  # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH.
-  gerbilLoadPath =
-    gerbilInputs: concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
-
-  path-src = path: { fun = _: path; };
-
-  view = traceSeqN 4;
-
-  sha256-of-pre-src = pre-src: if pre-src ? sha256 then pre-src.sha256 else "none";
-
-  overrideSrcIfShaDiff = name: new-pre-src: super:
-    let old-sha256 = sha256-of-pre-src super.${name}.pre-src;
-        new-sha256 = sha256-of-pre-src new-pre-src; in
-    if old-sha256 == new-sha256 then {} else
-    view "Overriding ${name} old-sha256: ${old-sha256} new-sha256: ${new-sha256}"
-    { ${name} = super.${name} // {
-                       pre-src = new-pre-src;
-                       version = "override";
-                       git-version = if new-pre-src ? rev
-                                     then substring 0 7 new-pre-src.rev
-                                     else "unknown";};
-                     };
-
-  pkgsOverrideGerbilPackageSrc = name: pre-src: pkgs: super: {
-    gerbil-support = (super-support:
-      { prePackages-unstable =
-          (super-ppu: super-ppu // (overrideSrcIfShaDiff name pre-src super-ppu))
-          super-support.prePackages-unstable;}) super.gerbil-support;};
-
-  # Use this function to create a Gerbil library. See gerbil-utils as an example.
-  gerbilPackage = prePackage:
-    let pre-pkg = prePackage-defaults // prePackage;
-        inherit (pre-pkg) pname version pre-src git-version meta
-          softwareName gerbil-package version-path gerbil gambit-params
-          gerbilInputs nativeBuildInputs buildInputs buildScript postInstall;
-        buildInputs_ = buildInputs; in
-    pkgs.gccStdenv.mkDerivation rec { # See ../gambit/build.nix regarding why we use gccStdenv
-      inherit meta pname version nativeBuildInputs postInstall;
-      passthru = {
-        inherit pre-pkg;
-      };
-      src = resolve-pre-src pre-src;
-      buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_;
-
-      postPatch = ''
-        set -e ;
-        ${optionalString (version-path != "")
-          ''echo -e '(import :clan/versioning${concatStringsSep ""
-                     (map (x: let px = x.passthru.pre-pkg; in
-                              optionalString (px.version-path != "")
-                                " :${px.gerbil-package}/${px.version-path}")
-                          gerbilInputs)
-                     })\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''}
-        patchShebangs . ;
-      '';
-
-      postConfigure = ''
-        export GERBIL_BUILD_CORES=$NIX_BUILD_CORES
-        export GERBIL_PATH=$PWD/.build
-        export GERBIL_LOADPATH=${gerbilLoadPath (["$out"] ++ gerbilInputs)}
-        ${pkgs.gambit-support.export-gambopt gambit-params}
-      '';
-
-      buildPhase = ''
-        runHook preBuild
-        ${buildScript}
-        runHook postBuild
-      '';
-
-      installPhase = ''
-        runHook preInstall
-        mkdir -p $out/gerbil
-        cp -fa .build/* $out/gerbil/
-        if [[ -d $out/gerbil/bin ]] ; then
-          ( cd $out/gerbil
-            bins=$(find ../gerbil/bin -type f)
-            if [[ -n $bins ]] ; then
-              ( mkdir -p ../bin
-                cd ..
-                ln -s $bins bin
-              )
-            fi
-          )
-        fi
-        runHook postInstall
-      '';
-
-      dontFixup = true;
-
-      checkPhase = ''
-        runHook preCheck
-        if [[ -f unit-tests.ss ]] ; then
-          export GERBIL_APPLICATION_HOME=$PWD
-          ./unit-tests.ss version
-          ./unit-tests.ss
-        else
-          echo "No gerbil-utils style unit-tests.ss detected for ${pname} ${version}.";
-        fi
-        runHook postCheck
-      '';
-
-      doCheck = true;
-    };
-}