summary refs log tree commit diff
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2022-03-26 15:58:08 +0100
committerGitHub <noreply@github.com>2022-03-26 15:58:08 +0100
commitf338d0737c08196cd7e2930b5cb0a906e76b47c5 (patch)
tree8a2cba0485846ec2a73d485ee51dde1ad6ecf72f
parent8377014562429368f3d019276828fd6f8bbc9775 (diff)
parent0391279c2479fa7dcf744238ac071b6cad0673b6 (diff)
downloadnixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar.gz
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar.bz2
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar.lz
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar.xz
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.tar.zst
nixpkgs-f338d0737c08196cd7e2930b5cb0a906e76b47c5.zip
Merge pull request #159997 from jvanbruegge/isabelle-linter
-rw-r--r--pkgs/applications/science/logic/isabelle/components/default.nix5
-rw-r--r--pkgs/applications/science/logic/isabelle/components/isabelle-linter.nix22
-rw-r--r--pkgs/applications/science/logic/isabelle/components/mkBuild.nix36
-rw-r--r--pkgs/applications/science/logic/isabelle/default.nix27
-rw-r--r--pkgs/top-level/all-packages.nix1
5 files changed, 90 insertions, 1 deletions
diff --git a/pkgs/applications/science/logic/isabelle/components/default.nix b/pkgs/applications/science/logic/isabelle/components/default.nix
new file mode 100644
index 00000000000..dd7b605f56a
--- /dev/null
+++ b/pkgs/applications/science/logic/isabelle/components/default.nix
@@ -0,0 +1,5 @@
+{ callPackage }:
+
+{
+  isabelle-linter = callPackage ./isabelle-linter.nix {};
+}
diff --git a/pkgs/applications/science/logic/isabelle/components/isabelle-linter.nix b/pkgs/applications/science/logic/isabelle/components/isabelle-linter.nix
new file mode 100644
index 00000000000..7fca547f67c
--- /dev/null
+++ b/pkgs/applications/science/logic/isabelle/components/isabelle-linter.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchFromGitHub, isabelle }:
+
+stdenv.mkDerivation rec {
+  pname = "isabelle-linter";
+  version = "Isabelle2021-1-v1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "isabelle-prover";
+    repo = "isabelle-linter";
+    rev = version;
+    sha256 = "0v6scc2rhj6bjv530gzz6i57czzcgpkw7a9iqnfdnm5gvs5qjk7a";
+  };
+
+  installPhase = import ./mkBuild.nix { inherit isabelle; path = "${pname}-${version}"; };
+
+  meta = with lib; {
+    description = "Linter component for Isabelle.";
+    homepage = "https://github.com/isabelle-prover/isabelle-linter";
+    maintainers = with maintainers; [ jvanbruegge ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/applications/science/logic/isabelle/components/mkBuild.nix b/pkgs/applications/science/logic/isabelle/components/mkBuild.nix
new file mode 100644
index 00000000000..a05b5196b00
--- /dev/null
+++ b/pkgs/applications/science/logic/isabelle/components/mkBuild.nix
@@ -0,0 +1,36 @@
+{ isabelle, path }:
+
+let
+  dir = "$out/isabelle/${isabelle.dirname}";
+  iDir = "${isabelle}/${isabelle.dirname}";
+in ''
+  shopt -s extglob
+  mkdir -p ${dir}/lib/classes
+
+  cDir=$out/${isabelle.dirname}/contrib/${path}
+  mkdir -p $cDir
+  cp -r !(isabelle) $cDir
+
+  cd ${dir}
+  ln -s ${iDir}/!(lib|bin) ./
+  ln -s ${iDir}/lib/!(classes) lib/
+  ln -s ${iDir}/lib/classes/* lib/classes/
+
+  mkdir bin/
+  cp ${iDir}/bin/* bin/
+
+  export HOME=$TMP
+  bin/isabelle components -u $cDir
+  bin/isabelle scala_build
+
+  cd lib/classes
+  for f in ${iDir}/lib/classes/*; do
+    rm $(basename $f)
+  done
+
+  lDir=$out/${isabelle.dirname}/lib/classes/
+  mkdir -p $lDir
+  cp -r * $lDir
+  cd $out
+  rm -rf isabelle
+''
diff --git a/pkgs/applications/science/logic/isabelle/default.nix b/pkgs/applications/science/logic/isabelle/default.nix
index 1c613419cc8..6696527cece 100644
--- a/pkgs/applications/science/logic/isabelle/default.nix
+++ b/pkgs/applications/science/logic/isabelle/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, coreutils, nettools, java, scala, polyml, z3, veriT, vampire, eprover-ho, naproche, rlwrap, perl, makeDesktopItem }:
+{ lib, stdenv, fetchurl, coreutils, nettools, java, scala, polyml, z3, veriT, vampire, eprover-ho, naproche, rlwrap, perl, makeDesktopItem, isabelle-components, isabelle, symlinkJoin }:
 # nettools needed for hostname
 
 stdenv.mkDerivation rec {
@@ -153,4 +153,29 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.jwiegley maintainers.jvanbruegge ];
     platforms = platforms.linux;
   };
+} // {
+  withComponents = f:
+    let
+      base = "$out/${isabelle.dirname}";
+      components = f isabelle-components;
+    in symlinkJoin {
+      name = "isabelle-with-components-${isabelle.version}";
+      paths = [ isabelle ] ++ components;
+
+      postBuild = ''
+        rm $out/bin/*
+
+        cd ${base}
+        rm bin/*
+        cp ${isabelle}/${isabelle.dirname}/bin/* bin/
+        rm etc/components
+        cat ${isabelle}/${isabelle.dirname}/etc/components > etc/components
+
+        export HOME=$TMP
+        bin/isabelle install $out/bin
+        patchShebangs $out/bin
+      '' + lib.concatMapStringsSep "\n" (c: ''
+        echo contrib/${c.pname}-${c.version} >> ${base}/etc/components
+      '') components;
+    };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 325e0ccad52..40672ae4dd5 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -32733,6 +32733,7 @@ with pkgs;
     java = openjdk17;
     z3 = z3_4_4_0;
   };
+  isabelle-components = recurseIntoAttrs (callPackage ../applications/science/logic/isabelle/components { });
 
   iprover = callPackage ../applications/science/logic/iprover { };