@@ -15,6 +15,7 @@ ARCHITECTURE = x86_64
1515
1616# Common build commands
1717COMPOSER_INSTALL = composer install --no-dev -o --no-interaction
18+ COMPOSER_INSTALL_WITH_DEV = composer install -o --no-interaction --no-scripts && composer run-script post-install-cmd --no-interaction 2>/dev/null || true
1819NPM_INSTALL = npm ci --prefer-offline --no-audit
1920NPM_BUILD = npm run build
2021
@@ -49,7 +50,10 @@ FULL_BUILD_APPS = \
4950 twofactor_totp \
5051 user_oidc \
5152 viewer \
52- whiteboard \
53+ whiteboard
54+
55+ # App directories that need full build WITH dev dependencies (composer with dev + npm + build)
56+ FULL_BUILD_WITH_DEV_APPS = \
5357 password_policy
5458
5559# App directories that need only composer
@@ -65,6 +69,7 @@ REMOVE_UNWANTED_APPS = $(shell [ -f IONOS/removed-apps.txt ] && sed '/^#/d;/^$$/
6569
6670# Generate build targets dynamically
6771FULL_BUILD_TARGETS = $(patsubst % ,build_% _app,$(FULL_BUILD_APPS ) )
72+ FULL_BUILD_WITH_DEV_TARGETS = $(patsubst % ,build_% _app,$(FULL_BUILD_WITH_DEV_APPS ) )
6873COMPOSER_ONLY_TARGETS = $(patsubst % ,build_% _app,$(COMPOSER_ONLY_APPS ) )
6974NOTHING_TO_BUILD_TARGETS = $(patsubst % ,build_% _app,$(NOTHING_TO_BUILD_APPS ) )
7075
@@ -73,7 +78,7 @@ NOTHING_TO_BUILD_TARGETS = $(patsubst %,build_%_app,$(NOTHING_TO_BUILD_APPS))
7378# Main Nextcloud build
7479.PHONY : build_ncw
7580# Applications - dynamically generated
76- .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 )
81+ .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 )
7782# Configuration and packaging
7883.PHONY : add_config_partials patch_shipped_json version.json zip_dependencies
7984# Pipeline targets for GitLab workflow
@@ -94,6 +99,8 @@ help: ## This help.
9499 @echo " Individual app build targets:"
95100 @echo " Full build apps (composer + npm + build):"
96101 @for app in $(FULL_BUILD_APPS ) ; do printf " \033[36m%-30s\033[0m Build $$ app app (full build)\n" " build_$$ {app}_app" ; done
102+ @echo " Full build apps with dev dependencies (composer with dev + npm + build):"
103+ @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
97104 @echo " Composer-only apps:"
98105 @for app in $(COMPOSER_ONLY_APPS ) ; do printf " \033[36m%-30s\033[0m Build $$ app app (composer only)\n" " build_$$ {app}_app" ; done
99106 @echo " Nothing to build apps:"
@@ -119,6 +126,16 @@ define build_full_app
119126 @echo "[✓] $(1 ) app built successfully"
120127endef
121128
129+ # Common function to build apps with full build + dev dependencies
130+ define build_full_app_with_dev
131+ @echo "[i] Building $(1 ) app (with dev dependencies)..."
132+ @cd apps-external/$(1 ) && \
133+ $(COMPOSER_INSTALL_WITH_DEV ) && \
134+ $(NPM_INSTALL ) && \
135+ $(NPM_BUILD )
136+ @echo "[✓] $(1 ) app built successfully"
137+ endef
138+
122139# Common function to build apps with composer only
123140define build_composer_app
124141 @echo "[i] Building $(1 ) app..."
@@ -143,6 +160,10 @@ build_ncw: build_core_app_theming ## Build Nextcloud Workspace
143160$(FULL_BUILD_TARGETS ) : build_% _app:
144161 $(call build_full_app,$(patsubst build_% _app,% ,$@ ) )
145162
163+ # Dynamic rules for full build apps with dev dependencies
164+ $(FULL_BUILD_WITH_DEV_TARGETS ) : build_% _app:
165+ $(call build_full_app_with_dev,$(patsubst build_% _app,% ,$@ ) )
166+
146167# Dynamic rules for composer-only apps
147168$(COMPOSER_ONLY_TARGETS ) : build_% _app:
148169 $(call build_composer_app,$(patsubst build_% _app,% ,$@ ) )
@@ -247,7 +268,7 @@ zip_dependencies: patch_shipped_json version.json ## Zip relevant files
247268 @echo " [i] Package $( TARGET_PACKAGE_NAME) created successfully"
248269
249270# Parallel build targets
250- build_all_external_apps : $(FULL_BUILD_TARGETS ) $(COMPOSER_ONLY_TARGETS ) $(NOTHING_TO_BUILD_TARGETS ) build_notify_push_app # # Build all external apps
271+ 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
251272 @echo " [i] All external apps built successfully"
252273
253274build_after_external_apps : build_ncw add_config_partials # # Build NCW and add configs after external apps are done
0 commit comments