From 7fa4c267ef20ca5c3034bfe6df00346b5a9f8b8f Mon Sep 17 00:00:00 2001
From: Christian Gram Kalhauge <chrg@dtu.dk>
Date: Fri, 9 Feb 2024 15:26:05 +0100
Subject: [PATCH] Moving around

---
 cabal.project                              |  3 ++
 example/README.md                          |  1 +
 flake.lock                                 | 16 ++++++++
 flake.nix                                  | 28 +++++++++-----
 hie.yaml                                   |  8 ----
 {bin/rtree-c => rtree-c/bin}/Main.hs       |  0
 package.yaml => rtree-c/package.yaml       | 19 +++------
 rtree.cabal => rtree-c/rtree-c.cabal       | 45 ++++++----------------
 {bin/rtree-c => rtree-c/src}/ReduceC.hs    |  0
 {test => rtree-c/test}/src/Main.hs         |  2 -
 README.md => rtree/README.md               |  0
 rtree/package.yaml                         | 20 ++++++++++
 rtree/rtree.cabal                          | 28 ++++++++++++++
 {src => rtree/src}/Control/Monad/Reduce.hs |  0
 {src => rtree/src}/Control/RTree.hs        |  0
 {src => rtree/src}/Data/Valuation.hs       |  0
 test/data/.gitignore                       |  2 -
 test/data/simple1.c                        |  7 ----
 test/data/typedef.c                        |  6 ---
 test/test.sh                               |  1 -
 20 files changed, 104 insertions(+), 82 deletions(-)
 create mode 100644 cabal.project
 create mode 100644 example/README.md
 delete mode 100644 hie.yaml
 rename {bin/rtree-c => rtree-c/bin}/Main.hs (100%)
 rename package.yaml => rtree-c/package.yaml (78%)
 rename rtree.cabal => rtree-c/rtree-c.cabal (65%)
 rename {bin/rtree-c => rtree-c/src}/ReduceC.hs (100%)
 rename {test => rtree-c/test}/src/Main.hs (50%)
 rename README.md => rtree/README.md (100%)
 create mode 100644 rtree/package.yaml
 create mode 100644 rtree/rtree.cabal
 rename {src => rtree/src}/Control/Monad/Reduce.hs (100%)
 rename {src => rtree/src}/Control/RTree.hs (100%)
 rename {src => rtree/src}/Data/Valuation.hs (100%)
 delete mode 100644 test/data/.gitignore
 delete mode 100644 test/data/simple1.c
 delete mode 100644 test/data/typedef.c
 delete mode 100755 test/test.sh

diff --git a/cabal.project b/cabal.project
new file mode 100644
index 0000000..e5f5f2e
--- /dev/null
+++ b/cabal.project
@@ -0,0 +1,3 @@
+packages:
+  rtree/
+  rtree-c/
diff --git a/example/README.md b/example/README.md
new file mode 100644
index 0000000..345e6ae
--- /dev/null
+++ b/example/README.md
@@ -0,0 +1 @@
+Test
diff --git a/flake.lock b/flake.lock
index f37ab3b..b331d35 100644
--- a/flake.lock
+++ b/flake.lock
@@ -34,6 +34,21 @@
         "type": "github"
       }
     },
+    "nix-filter": {
+      "locked": {
+        "lastModified": 1705332318,
+        "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
+        "owner": "numtide",
+        "repo": "nix-filter",
+        "rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "nix-filter",
+        "type": "github"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1699065553,
@@ -54,6 +69,7 @@
       "inputs": {
         "flake-utils": "flake-utils",
         "language-c": "language-c",
+        "nix-filter": "nix-filter",
         "nixpkgs": "nixpkgs"
       }
     },
diff --git a/flake.nix b/flake.nix
index eee7af2..d510940 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,6 +2,7 @@
   inputs = {
     nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable;
     flake-utils.url = github:numtide/flake-utils;
+    nix-filter.url = github:numtide/nix-filter;
     language-c = {
       url = github:kalhauge/language-c;
       flake = false;
@@ -11,16 +12,24 @@
     self,
     nixpkgs,
     flake-utils,
+    nix-filter,
     ...
   } @ inputs: let
-    packages = final: p: {
-      "rtree" = p.callCabal2nixWithOptions "rtree" "${self}" "" {};
-      "language-c" =
-        final.haskell.lib.overrideCabal
-        (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) {
-          doCheck = false;
-        };
+    load = p: n: {
+      "${n}" =
+        p.callCabal2nixWithOptions n
+        "${self}/${n}" "" {};
     };
+    packages = final: p:
+      {
+        "language-c" =
+          final.haskell.lib.overrideCabal
+          (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) {
+            doCheck = false;
+          };
+      }
+      // load p "rtree"
+      // load p "rtree-c";
     overlays = final: prev: {
       haskellPackages = prev.haskellPackages.extend (p: _: packages final p);
     };
@@ -40,6 +49,7 @@
       packages = {
         default = hpkgs.rtree;
         rtree = hpkgs.rtree;
+        rtree-c = hpkgs.rtree-c;
       };
       devShells = let
         nativeBuildInputs = with hpkgs; [
@@ -54,8 +64,8 @@
         default =
           hpkgs.shellFor
           {
-            name = "rtree-shell";
-            packages = p: [p.rtree];
+            name = "rtree-shells";
+            packages = p: [p.rtree p.rtree-c];
             doBenchmark = true;
             inherit nativeBuildInputs withHoogle;
           };
diff --git a/hie.yaml b/hie.yaml
deleted file mode 100644
index 8764232..0000000
--- a/hie.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-cradle:
-  cabal:
-    - path: "./src"
-      component: "lib:rtree"
-    - path: "./bin/rtree-c"
-      component: "exe:rtree-c"
-    - path: "./test/src"
-      component: "test:rtree-test"
diff --git a/bin/rtree-c/Main.hs b/rtree-c/bin/Main.hs
similarity index 100%
rename from bin/rtree-c/Main.hs
rename to rtree-c/bin/Main.hs
diff --git a/package.yaml b/rtree-c/package.yaml
similarity index 78%
rename from package.yaml
rename to rtree-c/package.yaml
index 8f266d5..6a2525f 100644
--- a/package.yaml
+++ b/rtree-c/package.yaml
@@ -1,4 +1,4 @@
-name: rtree 
+name: rtree-c
 # version: 0.1.0
 # synopsis: synopsis
 # maintainer: maintainer <email>
@@ -9,27 +9,19 @@ ghc-options: -Wall -fno-warn-incomplete-uni-patterns
 
 dependencies:
   - base >= 4.9 && < 5
-  - transformers
-  - free
-  - vector
-  - data-fix
-  - mtl
-  - directory
-  - containers
-  - text
-  - pretty-simple
+  - rtree
+  - language-c
 
 library:
   source-dirs: src
 
 executables:
   rtree-c: 
-    source-dirs: bin/rtree-c
+    source-dirs: bin/
     main: Main.hs
     dependencies:
-      - rtree
+      - rtree-c
       - optparse-applicative
-      - language-c
       - typed-process
       - directory
       - pretty
@@ -44,6 +36,7 @@ tests:
     main: Main.hs
     dependencies:
       - rtree
+      - rtree-c
       # - template
       # - hedgehog
       # - hspec
diff --git a/rtree.cabal b/rtree-c/rtree-c.cabal
similarity index 65%
rename from rtree.cabal
rename to rtree-c/rtree-c.cabal
index af80d3d..4d7d26c 100644
--- a/rtree.cabal
+++ b/rtree-c/rtree-c.cabal
@@ -4,80 +4,57 @@ cabal-version: 1.12
 --
 -- see: https://github.com/sol/hpack
 
-name:           rtree
+name:           rtree-c
 version:        0.0.0
 build-type:     Simple
 
 library
   exposed-modules:
-      Control.Monad.Reduce
-      Control.RTree
-      Data.Valuation
+      ReduceC
   other-modules:
-      Paths_rtree
+      Paths_rtree_c
   hs-source-dirs:
       src
   ghc-options: -Wall -fno-warn-incomplete-uni-patterns
   build-depends:
       base >=4.9 && <5
-    , containers
-    , data-fix
-    , directory
-    , free
-    , mtl
-    , pretty-simple
-    , text
-    , transformers
-    , vector
+    , language-c
+    , rtree
   default-language: Haskell2010
 
 executable rtree-c
   main-is: Main.hs
   other-modules:
-      ReduceC
-      Paths_rtree
+      Paths_rtree_c
   hs-source-dirs:
-      bin/rtree-c
+      bin/
   ghc-options: -Wall -fno-warn-incomplete-uni-patterns
   build-depends:
       base >=4.9 && <5
     , co-log
-    , containers
-    , data-fix
     , directory
     , filepath
-    , free
     , language-c
-    , mtl
     , optparse-applicative
     , pretty
-    , pretty-simple
     , rtree
+    , rtree-c
     , text
     , time
-    , transformers
     , typed-process
-    , vector
   default-language: Haskell2010
 
 test-suite rtree-test
   type: exitcode-stdio-1.0
   main-is: Main.hs
   other-modules:
-      Paths_rtree
+      Paths_rtree_c
   hs-source-dirs:
       test/src
   ghc-options: -Wall -fno-warn-incomplete-uni-patterns
   build-depends:
       base >=4.9 && <5
-    , containers
-    , data-fix
-    , directory
-    , free
-    , mtl
-    , pretty-simple
+    , language-c
     , rtree
-    , text
-    , transformers
-    , vector
+    , rtree-c
   default-language: Haskell2010
diff --git a/bin/rtree-c/ReduceC.hs b/rtree-c/src/ReduceC.hs
similarity index 100%
rename from bin/rtree-c/ReduceC.hs
rename to rtree-c/src/ReduceC.hs
diff --git a/test/src/Main.hs b/rtree-c/test/src/Main.hs
similarity index 50%
rename from test/src/Main.hs
rename to rtree-c/test/src/Main.hs
index d2a6c17..76a9bdb 100644
--- a/test/src/Main.hs
+++ b/rtree-c/test/src/Main.hs
@@ -1,3 +1 @@
-
-main :: IO ()
 main = pure ()
diff --git a/README.md b/rtree/README.md
similarity index 100%
rename from README.md
rename to rtree/README.md
diff --git a/rtree/package.yaml b/rtree/package.yaml
new file mode 100644
index 0000000..0330af8
--- /dev/null
+++ b/rtree/package.yaml
@@ -0,0 +1,20 @@
+name: rtree 
+# version: 0.1.0
+# synopsis: synopsis
+# maintainer: maintainer <email>
+# category: categories
+# extra-source-files: []
+
+ghc-options: -Wall -fno-warn-incomplete-uni-patterns 
+
+dependencies:
+  - base >= 4.9 && < 5
+  - transformers
+  - vector
+  - mtl
+  - containers
+  - text
+
+library:
+  source-dirs: src
+
diff --git a/rtree/rtree.cabal b/rtree/rtree.cabal
new file mode 100644
index 0000000..3cf39c8
--- /dev/null
+++ b/rtree/rtree.cabal
@@ -0,0 +1,28 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.35.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           rtree
+version:        0.0.0
+build-type:     Simple
+
+library
+  exposed-modules:
+      Control.Monad.Reduce
+      Control.RTree
+      Data.Valuation
+  other-modules:
+      Paths_rtree
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -fno-warn-incomplete-uni-patterns
+  build-depends:
+      base >=4.9 && <5
+    , containers
+    , mtl
+    , text
+    , transformers
+    , vector
+  default-language: Haskell2010
diff --git a/src/Control/Monad/Reduce.hs b/rtree/src/Control/Monad/Reduce.hs
similarity index 100%
rename from src/Control/Monad/Reduce.hs
rename to rtree/src/Control/Monad/Reduce.hs
diff --git a/src/Control/RTree.hs b/rtree/src/Control/RTree.hs
similarity index 100%
rename from src/Control/RTree.hs
rename to rtree/src/Control/RTree.hs
diff --git a/src/Data/Valuation.hs b/rtree/src/Data/Valuation.hs
similarity index 100%
rename from src/Data/Valuation.hs
rename to rtree/src/Data/Valuation.hs
diff --git a/test/data/.gitignore b/test/data/.gitignore
deleted file mode 100644
index b86ba2e..0000000
--- a/test/data/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-file2.c
-*.bak
diff --git a/test/data/simple1.c b/test/data/simple1.c
deleted file mode 100644
index 206e198..0000000
--- a/test/data/simple1.c
+++ /dev/null
@@ -1,7 +0,0 @@
-extern int printf (const char *, ...);
-
-int main (void)
-{
-  printf("hello");
-  return 0;
-}
diff --git a/test/data/typedef.c b/test/data/typedef.c
deleted file mode 100644
index 98d1033..0000000
--- a/test/data/typedef.c
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef const int size_t;
-void main()
-{
-    size_t a = 0;
-    return 0;
-}
\ No newline at end of file
diff --git a/test/test.sh b/test/test.sh
deleted file mode 100755
index 2cfc4fb..0000000
--- a/test/test.sh
+++ /dev/null
@@ -1 +0,0 @@
-cabal test --test-options='-o test.svg -w 600 -h 400' --test-show-details=streaming
-- 
GitLab