From 5fb7365ba41f61e0db575eb35d844fa2f4fd6d0f Mon Sep 17 00:00:00 2001 From: Tatjana Kaschperko Lindt Date: Thu, 6 Nov 2025 13:56:06 +0100 Subject: [PATCH] fix(Makefile): add support for building apps with dev dependencies Signed-off-by: copilot Claude Sonnet 4.5 Co-authored-by: Tatjana Kaschperko Lindt --- Makefile | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 804300d..12d2328 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ ARCHITECTURE = x86_64 # Common build commands COMPOSER_INSTALL = composer install --no-dev -o --no-interaction +COMPOSER_INSTALL_WITH_DEV = composer install -o --no-interaction --no-scripts && composer run-script post-install-cmd --no-interaction 2>/dev/null || true NPM_INSTALL = npm ci --prefer-offline --no-audit NPM_BUILD = npm run build @@ -49,7 +50,10 @@ FULL_BUILD_APPS = \ twofactor_totp \ user_oidc \ viewer \ - whiteboard \ + whiteboard + +# App directories that need full build WITH dev dependencies (composer with dev + npm + build) +FULL_BUILD_WITH_DEV_APPS = \ password_policy # App directories that need only composer @@ -65,6 +69,7 @@ REMOVE_UNWANTED_APPS = $(shell [ -f IONOS/removed-apps.txt ] && sed '/^#/d;/^$$/ # Generate build targets dynamically FULL_BUILD_TARGETS = $(patsubst %,build_%_app,$(FULL_BUILD_APPS)) +FULL_BUILD_WITH_DEV_TARGETS = $(patsubst %,build_%_app,$(FULL_BUILD_WITH_DEV_APPS)) COMPOSER_ONLY_TARGETS = $(patsubst %,build_%_app,$(COMPOSER_ONLY_APPS)) NOTHING_TO_BUILD_TARGETS = $(patsubst %,build_%_app,$(NOTHING_TO_BUILD_APPS)) @@ -73,7 +78,7 @@ NOTHING_TO_BUILD_TARGETS = $(patsubst %,build_%_app,$(NOTHING_TO_BUILD_APPS)) # Main Nextcloud build .PHONY: build_ncw # Applications - dynamically generated -.PHONY: build_all_external_apps build_notify_push_app build_notify_push_binary build_core_app_theming $(FULL_BUILD_TARGETS) $(COMPOSER_ONLY_TARGETS) $(NOTHING_TO_BUILD_TARGETS) +.PHONY: build_all_external_apps build_notify_push_app build_notify_push_binary build_core_app_theming $(FULL_BUILD_TARGETS) $(FULL_BUILD_WITH_DEV_TARGETS) $(COMPOSER_ONLY_TARGETS) $(NOTHING_TO_BUILD_TARGETS) # Configuration and packaging .PHONY: add_config_partials patch_shipped_json version.json zip_dependencies # Pipeline targets for GitLab workflow @@ -94,6 +99,8 @@ help: ## This help. @echo "Individual app build targets:" @echo " Full build apps (composer + npm + build):" @for app in $(FULL_BUILD_APPS); do printf "\033[36m%-30s\033[0m Build $$app app (full build)\n" "build_$${app}_app"; done + @echo " Full build apps with dev dependencies (composer with dev + npm + build):" + @for app in $(FULL_BUILD_WITH_DEV_APPS); do printf "\033[36m%-30s\033[0m Build $$app app (full build with dev)\n" "build_$${app}_app"; done @echo " Composer-only apps:" @for app in $(COMPOSER_ONLY_APPS); do printf "\033[36m%-30s\033[0m Build $$app app (composer only)\n" "build_$${app}_app"; done @echo " Nothing to build apps:" @@ -119,6 +126,16 @@ define build_full_app @echo "[✓] $(1) app built successfully" endef +# Common function to build apps with full build + dev dependencies +define build_full_app_with_dev + @echo "[i] Building $(1) app (with dev dependencies)..." + @cd apps-external/$(1) && \ + $(COMPOSER_INSTALL_WITH_DEV) && \ + $(NPM_INSTALL) && \ + $(NPM_BUILD) + @echo "[✓] $(1) app built successfully" +endef + # Common function to build apps with composer only define build_composer_app @echo "[i] Building $(1) app..." @@ -143,6 +160,10 @@ build_ncw: build_core_app_theming ## Build Nextcloud Workspace $(FULL_BUILD_TARGETS): build_%_app: $(call build_full_app,$(patsubst build_%_app,%,$@)) +# Dynamic rules for full build apps with dev dependencies +$(FULL_BUILD_WITH_DEV_TARGETS): build_%_app: + $(call build_full_app_with_dev,$(patsubst build_%_app,%,$@)) + # Dynamic rules for composer-only apps $(COMPOSER_ONLY_TARGETS): build_%_app: $(call build_composer_app,$(patsubst build_%_app,%,$@)) @@ -247,7 +268,7 @@ zip_dependencies: patch_shipped_json version.json ## Zip relevant files @echo "[i] Package $(TARGET_PACKAGE_NAME) created successfully" # Parallel build targets -build_all_external_apps: $(FULL_BUILD_TARGETS) $(COMPOSER_ONLY_TARGETS) $(NOTHING_TO_BUILD_TARGETS) build_notify_push_app ## Build all external apps +build_all_external_apps: $(FULL_BUILD_TARGETS) $(FULL_BUILD_WITH_DEV_TARGETS) $(COMPOSER_ONLY_TARGETS) $(NOTHING_TO_BUILD_TARGETS) build_notify_push_app ## Build all external apps @echo "[i] All external apps built successfully" build_after_external_apps: build_ncw add_config_partials ## Build NCW and add configs after external apps are done