diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-24 14:51:52 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-25 11:12:28 -0500 | 
| commit | ef05733de0b5f308a8b3dcfb3c0fd547426883dd (patch) | |
| tree | 15becb648b356aadfa6cf91da3b9b6d3f86d1fb9 /org | |
| parent | dub default.nix (diff) | |
mkDub.nix project.nix spine.nix
Diffstat (limited to 'org')
| -rw-r--r-- | org/spine_build_scaffold.org | 71 | 
1 files changed, 43 insertions, 28 deletions
| diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org index 5bd2a6b..ace6bc7 100644 --- a/org/spine_build_scaffold.org +++ b/org/spine_build_scaffold.org @@ -2099,6 +2099,41 @@ mkDubDerivation rec {  }  #+END_SRC +** spine.nix (project.nix including import mkDub.nix) :project: + +#+BEGIN_SRC nix :tangle ../spine.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-build" +{ pkgs ? import <nixpkgs> {}, +  stdenv ? pkgs.stdenv, +  ldc ? pkgs.ldc, +  dub ? pkgs.dub +}: +#with import ./nix/mkDub.nix { inherit pkgs; }; +with ( # mkDub.nix +  <<mkDub_nix>> +); +mkDubDerivation rec { +  name = "spine-${version}"; +  version = "<<version_spine>>"; +  src = ./.; +  buildInputs = [ +    pkgs.sqlite +    ( +      <<nix_dub2nix_with_pkgs>> +    ) +  ]; +  shellHook = '' +    # nix-build -I nixpkgs=<provide local nix path> +    nix-build +    echo "built spine" +  ''; +  installPhase = '' +    install -m755 -D spine $out/bin/spine +    echo "built $out/bin/spine" +  ''; +  <<nix_project_meta>> +} +#+END_SRC +  - unused    - installPhase @@ -2146,56 +2181,51 @@ aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix ./nix    ldc ? pkgs.ldc,    dub ? pkgs.dub  }: +<<mkDub_nix>> +#+END_SRC +** mkDub.nix shared + +#+NAME: mkDub_nix +#+BEGIN_SRC nix  with stdenv;  let    # Filter function to remove the .dub package folder from src    filterDub = name: type: let baseName = baseNameOf (toString name); in ! (      type == "directory" && baseName == ".dub"    ); -    # Convert a GIT rev string (tag) to a simple semver version    rev-to-version = builtins.replaceStrings ["v" "refs/tags/v"] ["" ""]; -    dep2src = dubDep: pkgs.fetchgit { inherit (dubDep.fetch) url rev sha256 fetchSubmodules; }; -    # Fetch a dependency (source only for now)    fromDub = dubDep: mkDerivation rec {      name = "${src.name}-${version}";      version = rev-to-version dubDep.fetch.rev;      nativeBuildInputs = [ ldc dub ];      src = dep2src dubDep; -      buildPhase = ''        runHook preBuild -      export HOME=$PWD +      export HOME=$NIX_BUILD_TOP +      #export HOME=$PWD        dub build -b=release        runHook postBuild      ''; -      # outputs = [ "lib" ]; -      # installPhase = ''      #   runHook preInstall      #   mkdir -p $out/bin      #   runHook postInstall      # '';    }; -    # Adds a local package directory (e.g. a git repository) to Dub    dub-add-local = dubDep: "dub add-local ${(fromDub dubDep).src.outPath} ${rev-to-version dubDep.fetch.rev}"; -    # The target output of the Dub package    targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; -    # Remove reference to build tools and library sources    disallowedReferences = deps: [ ldc dub ] ++ builtins.map dep2src deps; -    removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; -  in {    inherit fromDub; -    mkDubDerivation = lib.makeOverridable ({      src,      nativeBuildInputs ? [], @@ -2206,54 +2236,39 @@ in {      package ? lib.importJSON dubJSON,      ...    } @ attrs: stdenv.mkDerivation (attrs // { -      pname = package.name; -      nativeBuildInputs = [ ldc dub pkgs.removeReferencesTo ] ++ nativeBuildInputs;      disallowedReferences = disallowedReferences deps; -      passthru = passthru // {        inherit dub ldc pkgs;      }; -      src = lib.cleanSourceWith {        filter = filterDub;        src = lib.cleanSource src;      }; -      preFixup = ''        find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true      ''; -      buildPhase = ''        runHook preBuild -        export HOME=$PWD        ${lib.concatMapStringsSep "\n" dub-add-local deps}        dub build --compiler=ldc2 --build=release --combined --skip-registry=all -        runHook postBuild      ''; -      checkPhase = ''        runHook preCheck -        export HOME=$PWD        ${lib.concatMapStringsSep "\n" dub-add-local deps}        dub test --combined --skip-registry=all -        runHook postCheck      ''; -      installPhase = ''        runHook preInstall -        mkdir -p $out/bin        cp -r "${targetOf package}" $out/bin -        runHook postInstall      ''; -      meta = lib.optionalAttrs (package ? description) {        description = package.description;      } // attrs.meta or {}; | 
