diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-27 10:45:51 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-27 15:33:24 -0500 | 
| commit | d0465e3837a71afae2f1a6f42eb923350d826e27 (patch) | |
| tree | 7e2eda3dce2ee7199044ef2cc4f53652e593e261 | |
| parent | mkDub.nix project.nix spine.nix (diff) | |
shell.nix project.nix spine.nix mkDub.nix
| -rw-r--r-- | .envrc | 14 | ||||
| -rwxr-xr-x | default.nix | 2 | ||||
| -rw-r--r-- | flake.nix | 21 | ||||
| -rw-r--r-- | nix/mkDub.nix | 25 | ||||
| -rw-r--r-- | nix/pkglst/meson-pkgs.nix | 17 | ||||
| -rw-r--r-- | nix/pkglst/shell-pkgs.nix (renamed from nix/shell-packages.nix) | 1 | ||||
| -rwxr-xr-x | nix/shell/meson.nix | 10 | ||||
| -rw-r--r-- | org/spine_build_scaffold.org | 82 | ||||
| -rwxr-xr-x | project.nix | 1 | ||||
| -rwxr-xr-x | shell.nix | 3 | ||||
| -rwxr-xr-x | spine.nix | 27 | 
11 files changed, 145 insertions, 58 deletions
| @@ -1,13 +1,13 @@  if type lorri &>/dev/null; then -    echo "direnv: using lorri from PATH ($(type -p lorri))" -    eval "$(lorri direnv)" +  echo "direnv: using lorri from PATH ($(type -p lorri))" +  eval "$(lorri direnv)"  else -    # fall back to using direnv's builtin nix support -    # to prevent bootstrapping problems. -    use nix -    NIX_ENFORCE_PURITY=0 +  # fall back to using direnv's builtin nix support +  # to prevent bootstrapping problems. +  use nix +  NIX_ENFORCE_PURITY=0  fi  # source an additional user-specific .envrc in ./.envrc-local  if [ -e .envrc-local ]; then -   source .envrc-local +  source .envrc-local  fi diff --git a/default.nix b/default.nix index fa6adad..5826a65 100755 --- a/default.nix +++ b/default.nix @@ -9,7 +9,7 @@ mkDubDerivation rec {    src = ./.;    buildInputs = [      pkgs.sqlite -    (import ./nix/shell-packages.nix { inherit pkgs; }) +    (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })    ];    # installPhase = ''    #   install -m755 -D spine $out/bin/spine @@ -3,9 +3,6 @@    inputs = {      flake-utils.url = "github:numtide/flake-utils";      nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; -    # pkgs /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {} -    #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform"; -    #spine.url = "./.";      d2sqlite3 = {        url    = "github:dlang-community/d2sqlite3";        flake  = false; @@ -27,11 +24,19 @@        flake  = false;      };    }; -  outputs = { self, nixpkgs, flake-utils }: -    flake-utils.lib.simpleFlake { -    #flake-utils.lib.spine { -      inherit self nixpkgs; +  outputs = { self, d2sqlite3, tinyendian, dyaml, imageformats, dub2nix-src, nixpkgs, flake-utils }: +  let +    pkgs = nixpkgs.legacyPackages.x86_64-linux; +  in { +    packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {        name = "spine"; -      #shell = ./shell.nix; +      inherit self; +      src = self; +      shell = ./shell.nix; +      installPhase = '' +         install -m755 spine $out/bin/spine +      '';      }; +    defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine; +  };  } diff --git a/nix/mkDub.nix b/nix/mkDub.nix index 8f4014b..2a6570f 100644 --- a/nix/mkDub.nix +++ b/nix/mkDub.nix @@ -1,8 +1,10 @@  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv, -  ldc ? pkgs.ldc, +  ldc ? null, +  dcompiler ? pkgs.ldc,    dub ? pkgs.dub  }: +assert dcompiler != null;  with stdenv;  let    # Filter function to remove the .dub package folder from src @@ -16,7 +18,7 @@ let    fromDub = dubDep: mkDerivation rec {      name = "${src.name}-${version}";      version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ ldc dub ]; +    nativeBuildInputs = [ dcompiler dub ];      src = dep2src dubDep;      buildPhase = ''        runHook preBuild @@ -37,7 +39,7 @@ let    # 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; +  disallowedReferences = deps: [ dcompiler dub ] ++ builtins.map dep2src deps;    removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';  in {    inherit fromDub; @@ -52,10 +54,10 @@ in {      ...    } @ attrs: stdenv.mkDerivation (attrs // {      pname = package.name; -    nativeBuildInputs = [ ldc dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; +    nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs;      disallowedReferences = disallowedReferences deps;      passthru = passthru // { -      inherit dub ldc pkgs; +      inherit dub dcompiler pkgs;      };      src = lib.cleanSourceWith {        filter = filterDub; @@ -68,7 +70,18 @@ in {        runHook preBuild        export HOME=$PWD        ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --compiler=ldc2 --build=release --combined --skip-registry=all +      for dc_ in dmd ldmd2 gdmd; do +        echo "check for D compiler $dc_" +        dc=$(type -P $dc_ || echo "") +        if [ ! "$dc" == "" ]; then +          break +        fi +      done +      if [ "$dc" == "" ]; then +        exit "Error: could not find D compiler" +      fi +      echo "$dc_ used as D compiler to build $pname" +      dub build --compiler=$dc --build=release --combined --skip-registry=all        runHook postBuild      '';      checkPhase = '' diff --git a/nix/pkglst/meson-pkgs.nix b/nix/pkglst/meson-pkgs.nix new file mode 100644 index 0000000..0066e34 --- /dev/null +++ b/nix/pkglst/meson-pkgs.nix @@ -0,0 +1,17 @@ +{ pkgs ? import <nixpkgs> {} }: +let +  dub2nix-src = fetchTarball { +    url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; +  }; +  dub2nix = (import dub2nix-src) { inherit pkgs; }; +in +with pkgs; [ +  nix +  meson +  ninja +  dub +  ldc +  sqlite +  nix-prefetch-git +  validatePkgConfig +] diff --git a/nix/shell-packages.nix b/nix/pkglst/shell-pkgs.nix index 9e40e24..7587c02 100644 --- a/nix/shell-packages.nix +++ b/nix/pkglst/shell-pkgs.nix @@ -12,4 +12,5 @@ with pkgs; [    sqlite    nix-prefetch-git    validatePkgConfig +  jq  ] diff --git a/nix/shell/meson.nix b/nix/shell/meson.nix new file mode 100755 index 0000000..8c06eb8 --- /dev/null +++ b/nix/shell/meson.nix @@ -0,0 +1,10 @@ +{ pkgs ? import <nixpkgs> {} }: +pkgs.mkShell { +  buildInputs = with pkgs; [ +    (import ../pkgs/meson-pkgs.nix { inherit pkgs; }) +  ]; +  shellHook = '' +    meson setup --wipe build && ninja -v -C build +  ''; +} +# nix-shell nix/shell/meson.nix diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org index ace6bc7..79ecff7 100644 --- a/org/spine_build_scaffold.org +++ b/org/spine_build_scaffold.org @@ -1757,17 +1757,17 @@ make modificatons if desired  #+BEGIN_SRC nix :tangle ../.envrc  if type lorri &>/dev/null; then -    echo "direnv: using lorri from PATH ($(type -p lorri))" -    eval "$(lorri direnv)" +  echo "direnv: using lorri from PATH ($(type -p lorri))" +  eval "$(lorri direnv)"  else -    # fall back to using direnv's builtin nix support -    # to prevent bootstrapping problems. -    use nix -    NIX_ENFORCE_PURITY=0 +  # fall back to using direnv's builtin nix support +  # to prevent bootstrapping problems. +  use nix +  NIX_ENFORCE_PURITY=0  fi  # source an additional user-specific .envrc in ./.envrc-local  if [ -e .envrc-local ]; then -   source .envrc-local +  source .envrc-local  fi  #+END_SRC @@ -1842,8 +1842,8 @@ nix-instantiate --find-file nixpkgs      /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs      ./shell.nix    - shell.nix -      ./shell-packages.nix -    - shell-packages.nix +      ./pkgs/shell-pkgs.nix +    - pkgs/shell-pkgs.nix    - default.nix        ./nix/mkDub.nix      - mkdub.nix @@ -1852,15 +1852,14 @@ nix-instantiate --find-file nixpkgs  nix develop +nix flake update --recreate-lock-file +  #+BEGIN_SRC nix :tangle ../flake.nix  {    description = "a sisu like document parser";    inputs = {      flake-utils.url = "github:numtide/flake-utils";      nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; -    # pkgs /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {} -    #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform"; -    #spine.url = "./.";      d2sqlite3 = {        url    = "github:dlang-community/d2sqlite3";        flake  = false; @@ -1882,13 +1881,21 @@ nix develop        flake  = false;      };    }; -  outputs = { self, nixpkgs, flake-utils }: -    flake-utils.lib.simpleFlake { -    #flake-utils.lib.spine { -      inherit self nixpkgs; +  outputs = { self, d2sqlite3, tinyendian, dyaml, imageformats, dub2nix-src, nixpkgs, flake-utils }: +  let +    pkgs = nixpkgs.legacyPackages.x86_64-linux; +  in { +    packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {        name = "spine"; -      #shell = ./shell.nix; +      inherit self; +      src = self; +      shell = ./shell.nix; +      installPhase = '' +         install -m755 spine $out/bin/spine +      '';      }; +    defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine; +  };  }  #+END_SRC @@ -1950,11 +1957,12 @@ nix develop  { pkgs ? import <nixpkgs> {} }:  pkgs.mkShell {    buildInputs = with pkgs; [ -    (import ./nix/shell-packages.nix { inherit pkgs; }) +    (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })    ];    shellHook = ''      nix-build      echo "built spine @ ./result/bin/spine" +    nix-instantiate | nix show-derivation | jq    '';  }  #+END_SRC @@ -1972,7 +1980,7 @@ mkDubDerivation rec {    version = "0.11.1";    src = ./.;    buildInputs = with pkgs; [( -    import ./nix/shell-packages.nix +    import ./nix/pkglst/shell-pkgs.nix      { inherit pkgs; }    )];    meta = with stdenv.lib; { @@ -2059,7 +2067,7 @@ mkDubDerivation rec {    src = ./.;    buildInputs = [      pkgs.sqlite -    (import ./nix/shell-packages.nix { inherit pkgs; }) +    (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })    ];    # installPhase = ''    #   install -m755 -D spine $out/bin/spine @@ -2104,9 +2112,11 @@ mkDubDerivation rec {  #+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, +  ldc ? null, +  dcompiler ? pkgs.ldc,    dub ? pkgs.dub  }: +assert dcompiler != null;  #with import ./nix/mkDub.nix { inherit pkgs; };  with ( # mkDub.nix    <<mkDub_nix>> @@ -2168,7 +2178,7 @@ aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix ./nix  *** dub2nix -#+BEGIN_SRC nix :tangle ../nix/shell-packages.nix +#+BEGIN_SRC nix :tangle ../nix/pkglst/shell-pkgs.nix  { pkgs ? import <nixpkgs> {} }:  <<nix_dub2nix_with_pkgs>>  #+END_SRC @@ -2178,7 +2188,8 @@ aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix ./nix  #+BEGIN_SRC nix :tangle ../nix/mkDub.nix  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv, -  ldc ? pkgs.ldc, +  ldc ? null, +  dcompiler ? pkgs.ldc,    dub ? pkgs.dub  }:  <<mkDub_nix>> @@ -2188,6 +2199,7 @@ aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix ./nix  #+NAME: mkDub_nix  #+BEGIN_SRC nix +assert dcompiler != null;  with stdenv;  let    # Filter function to remove the .dub package folder from src @@ -2201,7 +2213,7 @@ let    fromDub = dubDep: mkDerivation rec {      name = "${src.name}-${version}";      version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ ldc dub ]; +    nativeBuildInputs = [ dcompiler dub ];      src = dep2src dubDep;      buildPhase = ''        runHook preBuild @@ -2222,7 +2234,7 @@ let    # 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; +  disallowedReferences = deps: [ dcompiler dub ] ++ builtins.map dep2src deps;    removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';  in {    inherit fromDub; @@ -2237,10 +2249,10 @@ in {      ...    } @ attrs: stdenv.mkDerivation (attrs // {      pname = package.name; -    nativeBuildInputs = [ ldc dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; +    nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs;      disallowedReferences = disallowedReferences deps;      passthru = passthru // { -      inherit dub ldc pkgs; +      inherit dub dcompiler pkgs;      };      src = lib.cleanSourceWith {        filter = filterDub; @@ -2253,7 +2265,18 @@ in {        runHook preBuild        export HOME=$PWD        ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --compiler=ldc2 --build=release --combined --skip-registry=all +      for dc_ in dmd ldmd2 gdmd; do +        echo "check for D compiler $dc_" +        dc=$(type -P $dc_ || echo "") +        if [ ! "$dc" == "" ]; then +          break +        fi +      done +      if [ "$dc" == "" ]; then +        exit "Error: could not find D compiler" +      fi +      echo "$dc_ used as D compiler to build $pname" +      dub build --compiler=$dc --build=release --combined --skip-registry=all        runHook postBuild      '';      checkPhase = '' @@ -2312,6 +2335,7 @@ ldc  sqlite  nix-prefetch-git  validatePkgConfig +jq  #+END_SRC  * .gitignore :gitignore: @@ -2766,7 +2790,7 @@ stdenv.mkDerivation rec {      if [ "$dc" == "" ]; then        exit "Error: could not find D compiler"      fi -    echo "$dc_ used as D compiler to build dub" +    echo "$dc_ used as D compiler to build $pname"      $dc ./build.d      ./build    ''; diff --git a/project.nix b/project.nix index 1877443..8acb093 100755 --- a/project.nix +++ b/project.nix @@ -23,6 +23,7 @@ mkDubDerivation rec {          sqlite          nix-prefetch-git          validatePkgConfig +        jq        ]      )    ]; @@ -2,10 +2,11 @@  { pkgs ? import <nixpkgs> {} }:  pkgs.mkShell {    buildInputs = with pkgs; [ -    (import ./nix/shell-packages.nix { inherit pkgs; }) +    (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })    ];    shellHook = ''      nix-build      echo "built spine @ ./result/bin/spine" +    nix-instantiate | nix show-derivation | jq    '';  } @@ -1,11 +1,14 @@  #!/usr/bin/env -S nix-build  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv, -  ldc ? pkgs.ldc, +  ldc ? null, +  dcompiler ? pkgs.ldc,    dub ? pkgs.dub  }: +assert dcompiler != null;  #with import ./nix/mkDub.nix { inherit pkgs; };  with ( # mkDub.nix +  assert dcompiler != null;    with stdenv;    let      # Filter function to remove the .dub package folder from src @@ -19,7 +22,7 @@ with ( # mkDub.nix      fromDub = dubDep: mkDerivation rec {        name = "${src.name}-${version}";        version = rev-to-version dubDep.fetch.rev; -      nativeBuildInputs = [ ldc dub ]; +      nativeBuildInputs = [ dcompiler dub ];        src = dep2src dubDep;        buildPhase = ''          runHook preBuild @@ -40,7 +43,7 @@ with ( # mkDub.nix      # 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; +    disallowedReferences = deps: [ dcompiler dub ] ++ builtins.map dep2src deps;      removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';    in {      inherit fromDub; @@ -55,10 +58,10 @@ with ( # mkDub.nix        ...      } @ attrs: stdenv.mkDerivation (attrs // {        pname = package.name; -      nativeBuildInputs = [ ldc dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; +      nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs;        disallowedReferences = disallowedReferences deps;        passthru = passthru // { -        inherit dub ldc pkgs; +        inherit dub dcompiler pkgs;        };        src = lib.cleanSourceWith {          filter = filterDub; @@ -71,7 +74,18 @@ with ( # mkDub.nix          runHook preBuild          export HOME=$PWD          ${lib.concatMapStringsSep "\n" dub-add-local deps} -        dub build --compiler=ldc2 --build=release --combined --skip-registry=all +        for dc_ in dmd ldmd2 gdmd; do +          echo "check for D compiler $dc_" +          dc=$(type -P $dc_ || echo "") +          if [ ! "$dc" == "" ]; then +            break +          fi +        done +        if [ "$dc" == "" ]; then +          exit "Error: could not find D compiler" +        fi +        echo "$dc_ used as D compiler to build $pname" +        dub build --compiler=$dc --build=release --combined --skip-registry=all          runHook postBuild        '';        checkPhase = '' @@ -116,6 +130,7 @@ mkDubDerivation rec {          sqlite          nix-prefetch-git          validatePkgConfig +        jq        ]      )    ]; | 
