summary refs log tree commit diff
path: root/pkgs/development/compilers/crystal
diff options
context:
space:
mode:
authorMichael Fellinger <michael.fellinger@iohk.io>2020-04-17 18:18:36 +0200
committerMichael Fellinger <michael.fellinger@iohk.io>2020-04-17 18:18:36 +0200
commitdce6dd3345d700748de9bce948615985fd57575b (patch)
tree4e8dc4153b7cc61bad815932f4110f182fc06669 /pkgs/development/compilers/crystal
parent85897a44234a07941df7e402b800ba9e3cad0642 (diff)
downloadnixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar.gz
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar.bz2
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar.lz
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar.xz
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.tar.zst
nixpkgs-dce6dd3345d700748de9bce948615985fd57575b.zip
Revert "crystal: build using Makefile or shards if available"
This reverts commit 2ec0ad59849ee1a652a6534a2d2672fdb7b5fed5.
Diffstat (limited to 'pkgs/development/compilers/crystal')
-rw-r--r--pkgs/development/compilers/crystal/build-package.nix150
1 files changed, 45 insertions, 105 deletions
diff --git a/pkgs/development/compilers/crystal/build-package.nix b/pkgs/development/compilers/crystal/build-package.nix
index 9cf5701d12f..8ffa89a11b4 100644
--- a/pkgs/development/compilers/crystal/build-package.nix
+++ b/pkgs/development/compilers/crystal/build-package.nix
@@ -1,9 +1,6 @@
-{ stdenv, lib, crystal, shards, git, pkgconfig, which, linkFarm, fetchFromGitHub }:
-{
-  # Some projects do not include a lock file, so you can pass one
-  lockFile ? null
-  # Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root
-, shardsFile ? null
+{ stdenv, lib, crystal, linkFarm, fetchFromGitHub }:
+{ # Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root
+  shardsFile ? null
   # Specify binaries to build in the form { foo.src = "src/foo.cr"; }
   # The default `crystal build` options can be overridden with { foo.options = [ "--no-debug" ]; }
 , crystalBinaries ? {}
@@ -12,102 +9,45 @@
 let
   mkDerivationArgs = builtins.removeAttrs args [ "shardsFile" "crystalBinaries" ];
 
-  crystalLib = linkFarm "crystal-lib" (
-    lib.mapAttrsToList (
-      name: value: {
-        inherit name;
-        path = fetchFromGitHub value;
-      }
-    ) (import shardsFile)
-  );
-
-  # we previously had --no-debug here but that is not recommended by upstream
-  defaultOptions = [ "--release" "--progress" "--verbose" ];
-
-  buildDirectly = shardsFile == null || crystalBinaries != {};
-in
-stdenv.mkDerivation (
-  mkDerivationArgs // {
-
-    configurePhase = args.configurePhase or ''
-      runHook preConfigure
-
-      ${lib.optionalString (lockFile != null) "ln -s ${lockFile} ./shard.lock"}
-      ${lib.optionalString (shardsFile != null) "ln -s ${crystalLib} lib"}
-
-      runHook postConfigure
-    '';
-
-    CRFLAGS = lib.concatStringsSep " " defaultOptions;
-
-    buildInputs = args.buildInputs or [] ++ [ crystal shards ];
-
-    nativeBuildInputs = args.nativeBuildInputs or [] ++ [ git pkgconfig which ];
-
-    buildPhase = args.buildPhase or (
-      ''
-        runHook preBuild
-
-        if [ -e Makefile ]; then
-          echo " ** building with make"
-
-          make ''${buildTargets:-build} $buildFlags
-        else
-      '' + (
-        if buildDirectly then ''
-          echo " ** building with crystal"
-
-          ${lib.concatStringsSep "\n" (
-          lib.mapAttrsToList (
-            bin: attrs: ''
-              crystal ${lib.escapeShellArgs (
-              [
-                "build"
-                "-o"
-                bin
-                (attrs.src or (throw "No source file for crystal binary ${bin} provided"))
-              ] ++ attrs.options or defaultOptions
-            )}
-            ''
-          ) crystalBinaries
-        )}
-        '' else ''
-          echo " ** building with shards"
-          shards build --local --production ${lib.concatStringsSep " " defaultOptions}
-        ''
-      ) + ''
-        fi
-
-        runHook postBuild
-      ''
-    );
-
-    installPhase = args.installPhase or (
-      ''
-        runHook preInstall
-
-        if [ -e Makefile ]; then
-          make ''${installTargets:-install} $installFlags
-        else
-      '' + (
-        if buildDirectly then
-          lib.concatMapStringsSep "\n" (
-            bin: ''
-              install -Dm555 ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]}
-            ''
-          ) (lib.attrNames crystalBinaries)
-        else ''
-          shards install
-        ''
-      ) + ''
-        fi
-
-        runHook postInstall
-      ''
-    );
-
-    meta = args.meta or {} // {
-      platforms = args.meta.platforms or crystal.meta.platforms;
-    };
-  }
-)
+  crystalLib = linkFarm "crystal-lib" (lib.mapAttrsToList (name: value: {
+    inherit name;
+    path = fetchFromGitHub value;
+  }) (import shardsFile));
+
+  defaultOptions = [ "--release" "--progress" "--no-debug" "--verbose" ];
+
+in stdenv.mkDerivation (mkDerivationArgs // {
+
+  configurePhase = args.configurePhase or ''
+    runHook preConfigure
+    ${lib.optionalString (shardsFile != null) "ln -s ${crystalLib} lib"}
+    runHook postConfigure
+  '';
+
+  buildInputs = args.buildInputs or [] ++ [ crystal ];
+
+  buildPhase = args.buildPhase or ''
+    runHook preBuild
+    ${lib.concatStringsSep "\n" (lib.mapAttrsToList (bin: attrs: ''
+      crystal ${lib.escapeShellArgs ([
+        "build"
+        "-o" bin
+        (attrs.src or (throw "No source file for crystal binary ${bin} provided"))
+      ] ++ attrs.options or defaultOptions)}
+    '') crystalBinaries)}
+    runHook postBuild
+  '';
+
+  installPhase = args.installPhase or ''
+    runHook preInstall
+    mkdir -p "$out/bin"
+    ${lib.concatMapStringsSep "\n" (bin: ''
+      mv ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]}
+    '') (lib.attrNames crystalBinaries)}
+    runHook postInstall
+  '';
+
+  meta = args.meta or {} // {
+    platforms = args.meta.platforms or crystal.meta.platforms;
+  };
+})