Makefile (4946B)
1 # This Makefile has been placed in the public domain. 2 3 archive = ./build-system/archive.py 4 version = $(shell node ./build-system/version-cli.mjs) 5 configurable-packages = $(patsubst %/,%,$(dir $(wildcard packages/*/Makefile))) 6 configure-files = configure $(addsuffix /configure,$(configurable-packages)) 7 archive-includes = $(addprefix --include ,$(configure-files)) 8 9 include .config.mk 10 11 # Let recursive Makefiles know that they're being invoked 12 # from the top-level makefile. 13 export TOPLEVEL := yes 14 export TOP_DESTDIR := $(abspath $(DESTDIR)) 15 16 .PHONY: build 17 build: 18 pnpm install -r --frozen-lockfile --filter '!@gnu-taler/qa-tooling' 19 pnpm run build 20 21 22 .PHONY: dist 23 dist: 24 $(archive) $(archive-includes) \ 25 taler-typescript-core-$(version).tar.gz 26 27 # Compatibility target; both archive targets retain the full build version. 28 .PHONY: dist-git 29 dist-git: 30 $(archive) $(archive-includes) \ 31 taler-typescript-core-$(version).tar.gz 32 33 .PHONY: clean 34 clean: 35 pnpm run clean 36 37 .PHONY: submodules-update 38 submodules-update: 39 git submodule update --recursive --remote 40 41 .PHONY: check 42 check: 43 pnpm install -r --frozen-lockfile 44 pnpm run clean 45 pnpm run build 46 pnpm run check 47 48 .PHONY: check-release-fast 49 check-release-fast: check 50 $(MAKE) lint 51 ./contrib/codespell.sh 52 pnpm run i18n:source2po 53 pnpm run i18n:po2strings 54 pnpm run i18n:check 55 @if test -n "$$(git status --porcelain --untracked-files=all -- packages/*/src/i18n)"; then \ 56 echo "generated i18n files are not up to date:"; \ 57 git status --short --untracked-files=all -- packages/*/src/i18n; \ 58 exit 1; \ 59 fi 60 61 .PHONY: check-release 62 check-release: check-release-fast 63 ./packages/taler-harness/bin/taler-harness.mjs run-integrationtests 64 65 .PHONY: config-lib 66 config-lib: 67 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/taler-config-lib... 68 cd ./packages/taler-config-lib/ && pnpm link -g 69 70 .PHONY: anastasis-webui 71 anastasis-webui: 72 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter . --filter @gnu-taler/anastasis-webui... 73 pnpm run --filter @gnu-taler/anastasis-webui... build 74 75 .PHONY: anastasis-webui-dist 76 anastasis-webui-dist: anastasis-webui 77 (cd packages/anastasis-webui/dist/prod && zip -r - ./*) > anastasis-webui.zip 78 79 80 .PHONY: anastasis-webui-dev 81 anastasis-webui-dev: 82 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/anastasis-webui... 83 pnpm run --filter @gnu-taler/anastasis-webui... dev 84 85 .PHONY: webextension 86 webextension: 87 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/wallet-webui... 88 pnpm run --filter @gnu-taler/wallet-webui build:store 89 90 .PHONY: webextension-dev 91 webextension-dev: 92 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/wallet-webui... 93 pnpm run --filter @gnu-taler/wallet-webui dev 94 95 .PHONY: embedded 96 embedded: 97 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/taler-wallet-embedded... 98 pnpm run --filter @gnu-taler/taler-wallet-embedded... build 99 @echo built packages/taler-wallet-embedded/dist/taler-wallet-core-qjs.mjs 100 101 .PHONY: lint 102 lint: 103 # (cd packages/qa-tooling && pnpm install) 104 ./packages/qa-tooling/bin/eslint.mjs . 105 106 .PHONY: ast-grep 107 ast-grep: 108 ast-grep scan -c contrib/sgconfig.yml 109 110 .PHONY: install 111 # Build and install everything 112 install: 113 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' 114 pnpm run build 115 pnpm run --filter @gnu-taler/wallet-webui build:harness 116 $(MAKE) -C packages/taler-wallet-cli install-nodeps 117 $(MAKE) -C packages/anastasis-cli install-nodeps 118 $(MAKE) -C packages/taler-harness install-nodeps 119 $(MAKE) -C packages/wallet-webui install-nodeps 120 $(MAKE) -C packages/libeufin-bank-webui install-nodeps 121 $(MAKE) -C packages/taler-merchant-webui install-nodeps 122 $(MAKE) -C packages/taler-auditor-webui install-nodeps 123 $(MAKE) -C packages/challenger-webui install-nodeps 124 $(MAKE) -C packages/taler-exchange-kyc-webui install-nodeps 125 $(MAKE) -C packages/taler-exchange-aml-webui install-nodeps 126 127 128 .PHONY: install-tools 129 # Install taler-wallet-cli, anastasis-cli and taler-harness 130 install-tools: 131 pnpm install --frozen-lockfile --filter '!@gnu-taler/qa-tooling' --filter @gnu-taler/taler-wallet-cli... --filter @gnu-taler/anastasis-cli... --filter @gnu-taler/taler-harness... 132 pnpm run --filter @gnu-taler/taler-wallet-cli... --filter @gnu-taler/anastasis-cli... --filter @gnu-taler/taler-harness... build 133 $(MAKE) -C packages/taler-wallet-cli install-nodeps 134 $(MAKE) -C packages/anastasis-cli install-nodeps 135 $(MAKE) -C packages/taler-harness install-nodeps 136 137 .PHONY: gana 138 gana: 139 ./contrib/gana_update.sh 140 141 # The recorded databases are replayed twice: as they are, and through the 142 # in-place migration to the native schema, which has to produce a wallet that 143 # answers identically. 144 .PHONY: check-migration 145 check-migration: 146 taler-harness advanced wallet-dbcheck --native-migration contrib/wallet-testdata/wallet-dbgen-0.9.4-dev.8