From d6a55b515cd0d581a5054e3658cf272650cd89a1 Mon Sep 17 00:00:00 2001 From: Phil de Joux Date: Sun, 24 Dec 2023 12:06:27 -0500 Subject: [PATCH 1/3] Ignore .updo and updo --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index f94ebc47b..e84a5c344 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ cabal.project.local~ copilot-profiling .DS_Store .log +.updo +updo From 25535ba3983335266fad022ad38cee5b893f1a52 Mon Sep 17 00:00:00 2001 From: Phil de Joux Date: Sun, 24 Dec 2023 12:28:57 -0500 Subject: [PATCH 2/3] Configure updo --- project-dhall/ghc-9.4.8/constraints.dhall | 12 ++++ .../text-templates/cabal-snippet.dhall | 4 ++ .../text-templates/dhall2cabal.dhall | 35 ++++++++++++ .../text-templates/dhall2stack.dhall | 34 +++++++++++ .../text-templates/stack-snippet.dhall | 4 ++ project-dhall/pkg-groups.dhall | 1 + project-dhall/pkgs-upgrade-todo.dhall | 1 + project-dhall/pkgs/copilot.dhall | 9 +++ project-files.mk | 56 +++++++++++++++++++ project-versions.mk | 13 +++++ 10 files changed, 169 insertions(+) create mode 100644 project-dhall/ghc-9.4.8/constraints.dhall create mode 100644 project-dhall/ghc-9.4.8/text-templates/cabal-snippet.dhall create mode 100644 project-dhall/ghc-9.4.8/text-templates/dhall2cabal.dhall create mode 100644 project-dhall/ghc-9.4.8/text-templates/dhall2stack.dhall create mode 100644 project-dhall/ghc-9.4.8/text-templates/stack-snippet.dhall create mode 100644 project-dhall/pkg-groups.dhall create mode 100644 project-dhall/pkgs-upgrade-todo.dhall create mode 100644 project-dhall/pkgs/copilot.dhall create mode 100644 project-files.mk create mode 100644 project-versions.mk diff --git a/project-dhall/ghc-9.4.8/constraints.dhall b/project-dhall/ghc-9.4.8/constraints.dhall new file mode 100644 index 000000000..82555344e --- /dev/null +++ b/project-dhall/ghc-9.4.8/constraints.dhall @@ -0,0 +1,12 @@ +[ { dep = "bitwise", ver = "1.0.0.1" } +, { dep = "bv-sized", ver = "1.0.5" } +, { dep = "config-value", ver = "0.8.3" } +, { dep = "language-c99", ver = "0.2.0" } +, { dep = "language-c99-simple", ver = "0.2.3" } +, { dep = "language-c99-util", ver = "0.2.0" } +, { dep = "panic", ver = "0.4.0.1" } +, { dep = "parameterized-utils", ver = "2.1.7.0" } +, { dep = "s-cargot", ver = "0.1.6.0" } +, { dep = "what4", ver = "1.5.1" } +, { dep = "zenc", ver = "0.1.2" } +] diff --git a/project-dhall/ghc-9.4.8/text-templates/cabal-snippet.dhall b/project-dhall/ghc-9.4.8/text-templates/cabal-snippet.dhall new file mode 100644 index 000000000..2d7a4eebb --- /dev/null +++ b/project-dhall/ghc-9.4.8/text-templates/cabal-snippet.dhall @@ -0,0 +1,4 @@ +'' +program-options + ghc-options: -fhide-source-paths +'' diff --git a/project-dhall/ghc-9.4.8/text-templates/dhall2cabal.dhall b/project-dhall/ghc-9.4.8/text-templates/dhall2cabal.dhall new file mode 100644 index 000000000..fc7b24dbd --- /dev/null +++ b/project-dhall/ghc-9.4.8/text-templates/dhall2cabal.dhall @@ -0,0 +1,35 @@ +let TYPES = ./../../../updo/types.dhall + +let empty-constraints = ./../../../updo/empty/constraints.dhall + +let empty-source-pkgs = ./../../../updo/empty/source-pkgs.dhall + +let null = https://prelude.dhall-lang.org/List/null + +in \(pkgs-done : List Text) -> + \(stackage-resolver : Text) -> + let pkgs-todo = ../../pkgs-upgrade-todo.dhall + + let pkg-config = + { constraints = ./../constraints.dhall ? empty-constraints + , source-pkgs = + { deps-external = ./../deps-external.dhall ? empty-source-pkgs + , deps-internal = ./../deps-internal.dhall ? empty-source-pkgs + , forks-external = ./../forks-external.dhall ? empty-source-pkgs + , forks-internal = ./../forks-internal.dhall ? empty-source-pkgs + } + } + + in '' + ${../../../updo/text-templates/dhall2cabal.dhall + TYPES.Verbosity.Info + TYPES.Stackage.StackageWeb + stackage-resolver + ( if null Text pkgs-todo + then TYPES.PkgSet.AllPkgs pkgs-done + else TYPES.PkgSet.PkgUpgrade + { todo = pkgs-todo, done = pkgs-done } + ) + pkg-config} + ${./cabal-snippet.dhall} + '' diff --git a/project-dhall/ghc-9.4.8/text-templates/dhall2stack.dhall b/project-dhall/ghc-9.4.8/text-templates/dhall2stack.dhall new file mode 100644 index 000000000..9e26584c1 --- /dev/null +++ b/project-dhall/ghc-9.4.8/text-templates/dhall2stack.dhall @@ -0,0 +1,34 @@ +let TYPES = ./../../../updo/types.dhall + +let empty-constraints = ./../../../updo/empty/constraints.dhall + +let empty-source-pkgs = ./../../../updo/empty/source-pkgs.dhall + +let null = https://prelude.dhall-lang.org/List/null + +in \(pkgs-done : List Text) -> + \(stackage-resolver : Text) -> + let pkgs-todo = ../../pkgs-upgrade-todo.dhall + + let pkg-config = + { constraints = ./../constraints.dhall ? empty-constraints + , source-pkgs = + { deps-external = ./../deps-external.dhall ? empty-source-pkgs + , deps-internal = ./../deps-internal.dhall ? empty-source-pkgs + , forks-external = ./../forks-external.dhall ? empty-source-pkgs + , forks-internal = ./../forks-internal.dhall ? empty-source-pkgs + } + } + + in '' + ${./stack-snippet.dhall (None Text)} + ${../../../updo/text-templates/dhall2stack.dhall + TYPES.Verbosity.Info + stackage-resolver + ( if null Text pkgs-todo + then TYPES.PkgSet.AllPkgs pkgs-done + else TYPES.PkgSet.PkgUpgrade + { todo = pkgs-todo, done = pkgs-done } + ) + pkg-config} + '' diff --git a/project-dhall/ghc-9.4.8/text-templates/stack-snippet.dhall b/project-dhall/ghc-9.4.8/text-templates/stack-snippet.dhall new file mode 100644 index 000000000..2f0d5fd0f --- /dev/null +++ b/project-dhall/ghc-9.4.8/text-templates/stack-snippet.dhall @@ -0,0 +1,4 @@ +\(_stackage-resolver : Optional Text) -> + '' + user-message: "WARNING: This stack project is generated." + '' diff --git a/project-dhall/pkg-groups.dhall b/project-dhall/pkg-groups.dhall new file mode 100644 index 000000000..3ea97f246 --- /dev/null +++ b/project-dhall/pkg-groups.dhall @@ -0,0 +1 @@ +[ "copilot" ] diff --git a/project-dhall/pkgs-upgrade-todo.dhall b/project-dhall/pkgs-upgrade-todo.dhall new file mode 100644 index 000000000..a45600ffa --- /dev/null +++ b/project-dhall/pkgs-upgrade-todo.dhall @@ -0,0 +1 @@ +[] : List Text diff --git a/project-dhall/pkgs/copilot.dhall b/project-dhall/pkgs/copilot.dhall new file mode 100644 index 000000000..46aa843a6 --- /dev/null +++ b/project-dhall/pkgs/copilot.dhall @@ -0,0 +1,9 @@ +[ "copilot" +, "copilot-c99" +, "copilot-core" +, "copilot-interpreter" +, "copilot-language" +, "copilot-libraries" +, "copilot-prettyprinter" +, "copilot-theorem" +] diff --git a/project-files.mk b/project-files.mk new file mode 100644 index 000000000..aa538fd4a --- /dev/null +++ b/project-files.mk @@ -0,0 +1,56 @@ +CABAL_VIA ?= dhall2cabal + +# How to generate project-nix/ghc-$(GHC_VERSION)/sha256map.nix? +# This is copied from ghc-$(GHC_VERSION).sha256map.nix. +# - false to generate from *.dhall inputs via sha256map.hs. +# - true to generate from stack.yaml via sha256map.py. +SHA256MAP_VIA_PYTHON ?= false + +# To use installed executables instead of *.hs scripts, set these to true. +SHA256MAP_HS_EXE ?= false +PKG_GROUPS_HS_EXE ?= false +PKGS_SORTED_HS_EXE ?= false +PKGS_UPGRADE_DONE_HS_EXE ?= false + +include project-versions.mk +include updo/Makefile + +project-nix/ghc-%/sha256map.nix: ghc-%.sha256map.nix + mkdir -p $(@D) && cp $^ $@ + +.PHONY: all +all: \ + projects \ + project-nix/ghc-$(GHC_VERSION)/sha256map.nix \ + project-versions.nix + +# To make stack.yaml or cabal.project and no other, mark the file we copy from +# as intermediate. This is all we want when not doing a GHC upgrade. +# +# Comment out these .INTERMEDIATE targets to allow these files to be kept. +.INTERMEDIATE: ghc-$(GHC_VERSION).$(CABAL_VIA).project +.INTERMEDIATE: ghc-$(GHC_UPGRADE).$(CABAL_VIA).project +.INTERMEDIATE: ghc-$(GHC_VERSION).$(STACK_VIA).yaml +.INTERMEDIATE: ghc-$(GHC_UPGRADE).$(STACK_VIA).yaml +.INTERMEDIATE: ghc-$(GHC_VERSION).sha256map.nix +.INTERMEDIATE: ghc-$(GHC_UPGRADE).sha256map.nix + +# If true, generate the sha256map from the stack.yaml with python, +# overriding the recipe for this target. +ifeq ($(SHA256MAP_VIA_PYTHON), true) +ghc-$(GHC_VERSION).sha256map.nix: stack.yaml + updo/project-nix/sha256map.py <$^ >$@ +ghc-$(GHC_UPGRADE).sha256map.nix: stack.upgrade.yaml + updo/project-nix/sha256map.py <$^ >$@ +endif + +.DEFAULT_GOAL := all + +UPDO_VERSION ?= a86c165687b2b5e8251265418a9c4181c6a651a0 +UPDO_URL := https://github.com/cabalism/updo/archive/${UPDO_VERSION}.tar.gz + +updo/Makefile: + rm -rf updo + curl -sSL ${UPDO_URL} | tar -xz + mv updo-* updo + chmod +x $$(grep -RIl '^#!' updo) \ No newline at end of file diff --git a/project-versions.mk b/project-versions.mk new file mode 100644 index 000000000..34e718fcd --- /dev/null +++ b/project-versions.mk @@ -0,0 +1,13 @@ +# Versions of GHC and stackage resolver, the ones we're on and the next ones +# we're upgrading to. +GHC_VERSION ?= 9.4.8 +STACKAGE_VERSION ?= lts-21.25 + +# For the upgrade, pick a matching pair of ghc-version and stack resolver. +GHC_UPGRADE ?= 9.4.8 +STACKAGE_UPGRADE ?= lts-21.25 + +# Imports can be relative to the project or relative to importing file. +# ImportRelative works with cabal-3.10 and is the default. +# ProjectRelative works with cabal-3.8. +CABAL_RELATIVITY ?= ImportRelative \ No newline at end of file From cfb1d05bfb5c182493d6c006b7b3ad0fcb79d94c Mon Sep 17 00:00:00 2001 From: Phil de Joux Date: Sun, 24 Dec 2023 12:29:06 -0500 Subject: [PATCH 3/3] Generate projects --- cabal.project | 29 +++++++++- project-nix/ghc-9.4.8/sha256map.nix | 2 + project-versions.nix | 11 ++++ stack.yaml | 30 ++++++++++ stack.yaml.lock | 89 +++++++++++++++++++++++++++++ 5 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 project-nix/ghc-9.4.8/sha256map.nix create mode 100644 project-versions.nix create mode 100644 stack.yaml create mode 100644 stack.yaml.lock diff --git a/cabal.project b/cabal.project index 00dfed318..fbd261680 100644 --- a/cabal.project +++ b/cabal.project @@ -1,2 +1,29 @@ +import: https://stackage.org/lts-21.25/cabal.config + +-- We have 8 packages. packages: - */*.cabal + copilot + , copilot-c99 + , copilot-core + , copilot-interpreter + , copilot-language + , copilot-libraries + , copilot-prettyprinter + , copilot-theorem + +-- Version equality constraints. +constraints: + bitwise ==1.0.0.1 + , bv-sized ==1.0.5 + , config-value ==0.8.3 + , language-c99 ==0.2.0 + , language-c99-simple ==0.2.3 + , language-c99-util ==0.2.0 + , panic ==0.4.0.1 + , parameterized-utils ==2.1.7.0 + , s-cargot ==0.1.6.0 + , what4 ==1.5.1 + , zenc ==0.1.2 +program-options + ghc-options: -fhide-source-paths + diff --git a/project-nix/ghc-9.4.8/sha256map.nix b/project-nix/ghc-9.4.8/sha256map.nix new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/project-nix/ghc-9.4.8/sha256map.nix @@ -0,0 +1,2 @@ +{ +} diff --git a/project-versions.nix b/project-versions.nix new file mode 100644 index 000000000..7b898768f --- /dev/null +++ b/project-versions.nix @@ -0,0 +1,11 @@ +{ current-version = + { ghc-xyz-project-stack = "stack.yaml"; + ghc-xyz-project-cabal = "cabal.project"; + ghc-xyz-sha256map = import ./project-nix/ghc-9.4.8/sha256map.nix; + }; + upgrade-version = + { ghc-xyz-project-stack = "stack.upgrade.yaml"; + ghc-xyz-project-cabal = "cabal.upgrade.project"; + ghc-xyz-sha256map = import ./project-nix/ghc-9.4.8/sha256map.nix; + }; +} diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 000000000..555563a4c --- /dev/null +++ b/stack.yaml @@ -0,0 +1,30 @@ +user-message: "WARNING: This stack project is generated." + +resolver: lts-21.25 + +# We have 8 packages. +packages: + - ./copilot + - ./copilot-c99 + - ./copilot-core + - ./copilot-interpreter + - ./copilot-language + - ./copilot-libraries + - ./copilot-prettyprinter + - ./copilot-theorem + +extra-deps: + # Package versions for published packages either not on Stackage or + # not matching the version on Stackage for the resolver we use. + # These package-version extra dependencies are equivalent to cabal constraints. + - bitwise-1.0.0.1 + - bv-sized-1.0.5 + - config-value-0.8.3 + - language-c99-0.2.0 + - language-c99-simple-0.2.3 + - language-c99-util-0.2.0 + - panic-0.4.0.1 + - parameterized-utils-2.1.7.0 + - s-cargot-0.1.6.0 + - what4-1.5.1 + - zenc-0.1.2 diff --git a/stack.yaml.lock b/stack.yaml.lock new file mode 100644 index 000000000..d3e698684 --- /dev/null +++ b/stack.yaml.lock @@ -0,0 +1,89 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: +- completed: + hackage: bitwise-1.0.0.1@sha256:36efc93d2dc8af501a1c1d06916452ca8caec770969385c4787d33241ce8b14a,3110 + pantry-tree: + sha256: 0debee8b373b64b587a90c9380302c37d5bd9b066cf4c2873b3a5818c3690b59 + size: 760 + original: + hackage: bitwise-1.0.0.1 +- completed: + hackage: bv-sized-1.0.5@sha256:7f8d87497711de73ee087915e3f05f66060c9b875f3deec85edc8ff7cdd6e2a0,2095 + pantry-tree: + sha256: 878632b918435eb8bbb70b2975eebf4f402ba999be06d5136cf5da38da613683 + size: 709 + original: + hackage: bv-sized-1.0.5 +- completed: + hackage: config-value-0.8.3@sha256:570fb6583bfa37aa89e0642366b4f80b65b084d83b79c5158b479e62125f3d95,1983 + pantry-tree: + sha256: ae74b05b26bb82df94f6e2cfc657f149445d76eb79c0b146af85349d32d825b6 + size: 1034 + original: + hackage: config-value-0.8.3 +- completed: + hackage: language-c99-0.2.0@sha256:660689db3191edf6164b6e1a00f700bd8d3ebc46dde87c26ad975fd0edbb9953,1587 + pantry-tree: + sha256: 2cd4138363d171c8d1d5995e4fe6022adc1c940874bcca5b07b129af923d33e8 + size: 399 + original: + hackage: language-c99-0.2.0 +- completed: + hackage: language-c99-simple-0.2.3@sha256:a58208cdb80dbccc605441f6da45b42e58cf9f930a112bcc5eea187922a320d3,1540 + pantry-tree: + sha256: c294bfa07d2bb2e59f03c31850611aa1f66cf3793a94714665772e9e04eeb7ad + size: 574 + original: + hackage: language-c99-simple-0.2.3 +- completed: + hackage: language-c99-util-0.2.0@sha256:a46f27692e8d56645a4c9cc6faf530346d35f17002cede64372f025b8d3a57cf,1230 + pantry-tree: + sha256: 14e0c8c5cf3ee252551efacbc551e5f8c8bab413481c17bc7b85f4dafe478c1d + size: 489 + original: + hackage: language-c99-util-0.2.0 +- completed: + hackage: panic-0.4.0.1@sha256:fb46577c9e0ca38c37960572f958a8469f2b577e963ed4f3ea1904d8400d828b,702 + pantry-tree: + sha256: 2f4a32588a5935a4d58ee50ae2b83cd5be25b1a1b814dbd2c6a9451248c32b4a + size: 252 + original: + hackage: panic-0.4.0.1 +- completed: + hackage: parameterized-utils-2.1.7.0@sha256:c083eb4662f7a8235d7ef6e081823512d94ab4aaaa8a3e4d2c9aaf7d4ccd37df,4611 + pantry-tree: + sha256: 384e330e1bfa2f71eb31f624d9425d49b905656766b9cbcb451a0bdea4c028bf + size: 3642 + original: + hackage: parameterized-utils-2.1.7.0 +- completed: + hackage: s-cargot-0.1.6.0@sha256:cc48d07c098c6fe97df1ac2b8f417faf40282b3e518191d401371e0c1c95acc3,3616 + pantry-tree: + sha256: 7cd602652672ee316c830696590faa72f68076b4e1ea7744caaa85103a39c7e4 + size: 1467 + original: + hackage: s-cargot-0.1.6.0 +- completed: + hackage: what4-1.5.1@sha256:74813c9b8d1fadf1b8da045817c29eb882b745779d36a5270e3eeb28504904dc,10631 + pantry-tree: + sha256: b543c425dc18b8401ac91bbec81d9dc469d1785c606867c8a4ddf2d2cb0b82c5 + size: 10026 + original: + hackage: what4-1.5.1 +- completed: + hackage: zenc-0.1.2@sha256:2b32c40a3c11f07f466604526aacad2a535309da11b203334dbf586333c13534,1350 + pantry-tree: + sha256: e33b84b5528779e4d5c0887b88ebdb0290902ba4367ed786dfc366b29d485d81 + size: 302 + original: + hackage: zenc-0.1.2 +snapshots: +- completed: + sha256: a81fb3877c4f9031e1325eb3935122e608d80715dc16b586eb11ddbff8671ecd + size: 640086 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/25.yaml + original: lts-21.25