Build system: package build creates proper Joomla package ZIP with sub-packages #135

Open
opened 2026-06-21 15:51:21 +00:00 by jmiller · 0 comments
Owner

Summary

The current Makefile build target uses a simple rsync + zip approach that copies the entire source tree into a single ZIP. A Joomla package extension (pkg_mokosuitecross) requires a specific structure where each sub-extension (component, plugins) is individually zipped, then bundled into the outer package ZIP alongside the package manifest.

Expected package structure

pkg_mokosuitecross-1.0.0.zip
├── pkg_mokosuitecross.xml          (package manifest)
├── script.php                       (install/update script)
├── language/en-GB/pkg_mokosuitecross.sys.ini
├── packages/
│   ├── com_mokosuitecross.zip       (component)
│   ├── plg_system_mokosuitecross.zip
│   ├── plg_content_mokosuitecross.zip
│   ├── plg_task_mokosuitecross.zip
│   ├── plg_webservices_mokosuitecross.zip
│   ├── plg_system_mokosuitecross_events.zip
│   ├── plg_system_mokosuitecross_gallery.zip
│   ├── plg_mokosuitecross_facebook.zip
│   ├── plg_mokosuitecross_twitter.zip
│   ├── ... (all 30+ service plugins)
│   └── plg_mokosuitecross_wordpress.zip

Current issues

  1. Makefile build target doesn't create individual sub-package ZIPs
  2. No validation that pkg_mokosuitecross.xml lists all sub-packages
  3. index.html files throughout the tree are for Joomla directory listing prevention — must be included
  4. Build should exclude dev files (.git, tests/, vendor/, *.md, etc.)

Acceptance Criteria

  • make build creates proper nested package ZIP
  • Each sub-extension zipped individually into packages/
  • Package manifest references match actual sub-package ZIPs
  • Built package installs cleanly on Joomla 5
  • CI workflow uses make build for release artifacts
## Summary The current `Makefile` build target uses a simple rsync + zip approach that copies the entire source tree into a single ZIP. A Joomla **package** extension (`pkg_mokosuitecross`) requires a specific structure where each sub-extension (component, plugins) is individually zipped, then bundled into the outer package ZIP alongside the package manifest. ## Expected package structure ``` pkg_mokosuitecross-1.0.0.zip ├── pkg_mokosuitecross.xml (package manifest) ├── script.php (install/update script) ├── language/en-GB/pkg_mokosuitecross.sys.ini ├── packages/ │ ├── com_mokosuitecross.zip (component) │ ├── plg_system_mokosuitecross.zip │ ├── plg_content_mokosuitecross.zip │ ├── plg_task_mokosuitecross.zip │ ├── plg_webservices_mokosuitecross.zip │ ├── plg_system_mokosuitecross_events.zip │ ├── plg_system_mokosuitecross_gallery.zip │ ├── plg_mokosuitecross_facebook.zip │ ├── plg_mokosuitecross_twitter.zip │ ├── ... (all 30+ service plugins) │ └── plg_mokosuitecross_wordpress.zip ``` ## Current issues 1. Makefile build target doesn't create individual sub-package ZIPs 2. No validation that `pkg_mokosuitecross.xml` lists all sub-packages 3. `index.html` files throughout the tree are for Joomla directory listing prevention — must be included 4. Build should exclude dev files (`.git`, `tests/`, `vendor/`, `*.md`, etc.) ## Acceptance Criteria - [ ] `make build` creates proper nested package ZIP - [ ] Each sub-extension zipped individually into `packages/` - [ ] Package manifest references match actual sub-package ZIPs - [ ] Built package installs cleanly on Joomla 5 - [ ] CI workflow uses `make build` for release artifacts
Sign in to join this conversation.
No labels
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteCross#135