packages feed

updo-1.0.0: project-dhall2config/Makefile

ifeq ($(PKG_GROUPS_HS_EXE), true)
PKG_GROUPS_HS := updo-pkg-groups
else
PKG_GROUPS_HS := ./updo/project-dhall2config/pkg-groups.hs
endif

.PHONY: dhall2config-projects
dhall2config-projects: \
  ghc-$(GHC_VERSION).dhall2config.project \
  ghc-$(GHC_UPGRADE).dhall2config.project

project-cabal/pkgs.config: \
  updo/text-templates/cabal/pkg-groups.dhall \
  project-dhall/pkg-groups.dhall \
  $(patsubst project-dhall/pkgs/%.dhall, project-cabal/pkgs/%.config, $(wildcard project-dhall/pkgs/*.dhall))
  ifeq ($(CABAL_RELATIVITY), ImportRelative)
	echo 'let f = ./updo/types/CabalRelativity.dhall in ./$< f.CabalImportRelative ./project-dhall/pkg-groups.dhall' | dhall text --output $@
  else
	echo 'let f = ./updo/types/CabalRelativity.dhall in ./$< f.CabalProjectRelative ./project-dhall/pkg-groups.dhall' | dhall text --output $@
  endif

generate-pkg-configs: \
  project-dhall/pkg-groups.dhall \
  project-dhall/pkgs-upgrade-todo.dhall
  ifeq ($(CABAL_RELATIVITY), ImportRelative)
	mkdir -p project-cabal/pkgs && $(PKG_GROUPS_HS) "let f = ./updo/types/CabalRelativity.dhall in f.CabalImportRelative" "$(GHC_VERSION)" "$(GHC_UPGRADE)"
  else
	mkdir -p project-cabal/pkgs && $(PKG_GROUPS_HS) "let f = ./updo/types/CabalRelativity.dhall in f.CabalProjectRelative" "$(GHC_VERSION)" "$(GHC_UPGRADE)"
  endif

# Mirror packages (package groups) from dhall to config with
# generate-pkg-configs doing the work once for all package groups.
#
# The "target: prerequisites ;" explicitly defines an empty recipe.
# SEE: https://www.gnu.org/software/make/manual/html_node/Empty-Recipes.html
project-cabal/pkgs/%.config: project-dhall/pkgs/%.dhall generate-pkg-configs ;

# Mirror constraints from dhall to config. Any revisions in the constraints are
# stripped, like this for example:
# - hedgehog-quickcheck ==0.1.1@rev:4
# + hedgehog-quickcheck ==0.1.1
project-cabal/ghc-%/constraints.config : \
  updo/text-templates/cabal/package.dhall \
  project-dhall/ghc-%/constraints.dhall
	mkdir -p $(@D)
	echo "let f = ./$< in f.constraints ./project-dhall/ghc-$*/constraints.dhall" \
	| dhall text | sed "s/@rev:.*//" >$@

# Mirror source repositories from dhall to config.
project-cabal/ghc-%.config: \
  updo/text-templates/cabal/package.dhall \
  project-dhall/ghc-%.dhall
	mkdir -p $(@D) && echo "let f = ./$< in f.repo-items ./project-dhall/ghc-$*.dhall" | dhall text --output $@

ghc-$(GHC_VERSION).dhall2config.project: \
  project-dhall/ghc-$(GHC_VERSION)/text-templates/dhall2config.dhall \
  updo/text-templates/dhall2config.dhall \
  project-cabal/ghc-$(GHC_VERSION)/constraints.config \
  project-cabal/ghc-$(GHC_VERSION)/deps-external.config \
  project-cabal/ghc-$(GHC_VERSION)/deps-internal.config \
  project-cabal/ghc-$(GHC_VERSION)/forks-external.config \
  project-cabal/ghc-$(GHC_VERSION)/forks-internal.config \
  project-cabal/pkgs.config
	echo './$< "$(STACKAGE_VERSION)" "$(GHC_VERSION)"' | dhall text --output $@

ghc-$(GHC_UPGRADE).dhall2config.project: \
  project-dhall/ghc-$(GHC_UPGRADE)/text-templates/dhall2config.dhall \
  updo/text-templates/dhall2config.dhall \
  project-cabal/ghc-$(GHC_UPGRADE)/constraints.config \
  project-cabal/ghc-$(GHC_UPGRADE)/deps-external.config \
  project-cabal/ghc-$(GHC_UPGRADE)/deps-internal.config \
  project-cabal/ghc-$(GHC_UPGRADE)/forks-external.config \
  project-cabal/ghc-$(GHC_UPGRADE)/forks-internal.config \
  project-cabal/pkgs.config
	echo './$< "$(STACKAGE_UPGRADE)" "$(GHC_UPGRADE)"' | dhall text --output $@