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/spine_build_scaffold.org | |
parent | dub default.nix (diff) |
mkDub.nix project.nix spine.nix
Diffstat (limited to 'org/spine_build_scaffold.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 {}; |