erlang: update to 25.3#5829
Conversation
- update erlang to v25.3.2.5 - includes update to cross/openssl3
- add a git tag for the time of the build as included packages evaluate the rabbitmq version with "git describe --tag"
|
hey @hgy59, based on your #6886 (comment), this should be merged before any other updates to Erlang. From what I see the latest version in the 25.3.x train is OTP 25.3.2.21. Would you like me to bump to the latest versions compatible with this (RabbitMQ 3.11.28 and ejabberd 25.10), test and publish for you? Any other things need to be completed in this PR? |
I tried to build Erlang 25.3.2.21 but it fails (conflicts with openssl) the latest 25.3.x that builds is 25.3.2.7 (we already have 25.3.2.5 that is almoste the same). rabbitmq that is compatible with erlang 25.3.x fails to build, this must be fixed first. |
|
hey @hgy59, may I add some commits to your PR to get the build to work again? |
Yes, please, if you have a solution... |
Elixir's Makefile has .NOTPARALLEL: compile but spksrc's make -j overwrites this, causing race conditions during bootstrap that result in 'init terminating in do_boot' errors in CI.
Adds patch to fix erl_interface and erts/emulator build when cross-compiling. The issue is that the staging directory's OpenSSL headers get picked up before Erlang's custom headers, preventing proper MD5 function renaming (ei_MD5Init/ei_MD5Update/ei_MD5Final). The patch prepends -Iopenssl/include to CFLAGS to ensure Erlang's custom OpenSSL headers are found first.
My solutions have beed added. As you will note I've gone to the latest compatible versions as follows:
The native libraries have also been updated to latest compatible versions:
|
This can stay on 25.3 as before. It must not match the cross/erlang version (this is different to other systems like native/python*). |
Can you explain why this may be? Happy to roll it back but was curious about this. |
I did it this way since first erlang package and it was confirmed by an AI query. The "major.minor must match" requirement is essentially this combination of:
|
|
@mreid-tt thanks for your fixes! |
|
just found that rabbitmq never worked on DSM 7+... |
|
ejabberd (also the current version) does not work in DSM 7+. But the fix is not so easy as for rabbitmq. |
If you can spell out the precise issues to be resolved I can try to tackle them for you. EDIT: hey @hgy59, I've proposed a fix. Feel free to revert it if this was not what you were taking about. |
Fix ejabberdctl paths to use /var/packages/ejabberd/var instead of /var/packages/ejabberd/target/var for CONFIG_DIR, LOGS_DIR, and SPOOL_DIR. This uses the INSTALL_PREFIX_VAR variable which is correctly set by the framework for DSM 7+ packages.
This comment was marked as resolved.
This comment was marked as resolved.
|
@mreid-tt good catch, ../../mk/spksrc.common.mk must always be included before use of When |
|
@mreid-tt indeed good catch. I suggest you make the change, either here and confirm it runs as expected or through a standalone PR with a few test build to confirm. |
This is not a small framework change I would like a dedicated PR and continue here with a workaround that does not need this fix. Except we can avoid the use of version_ge in spksrc.directories.mk by definition of INSTALL_PREFIX_VAR the same for all DSM versions... |
|
@hgy59 can or can't? DSM7's var environment is indeed different, thus this variable. Personally the option 1 of reordering is limited in scope and would suffice for now. spksrc.common.mk could be added to the META issue and done at a later time into its own PR indeed. |
- use the same approach for all DSM versions
- install several config files to var folder - use bin instead of sbin folder to avoid additional patch - add missing artifacts to PLIST - PLIST: remove files in var folder - configure web admin authentication in ejabberd.yml
The generic installer of spksrc ensures the |
This comment was marked as outdated.
This comment was marked as outdated.
Replace the call to version_ge with an inline shell comparison to avoid the circular dependency issue where spksrc.directories.mk is included before spksrc.common.mk (where version_ge is defined). This fixes the INSTALL_PREFIX_VAR evaluation for packages like erlang where the version conditional was silently failing. Ref: PR SynoCommunity#5829 discussion
This reverts commit e0bcf98.
- Fix SPK_DEPENDS decimal format (erlang>=25.0:erlang<25.4) - Add wrapper scripts for CLI tools (rabbitmqctl, rabbitmq-diagnostics, rabbitmq-plugins, rabbitmq-queues, rabbitmq-streams, rabbitmq-upgrade) - CLI wrappers run as package user (sc-rabbitmq) via sudo to access the Erlang cookie (which must be mode 400 per Erlang requirements) - Set HOME to SYNOPKG_PKGVAR in service-setup.sh and rabbitmq-env.conf - Add SPK_COMMANDS for CLI tool symlinks in PATH - Display user-friendly message when sudo password is required
|
hey @hgy59 — hope you don’t mind, I was trying to help get this one over the line and ready for publishing. I saw your earlier concern about RabbitMQ not working on DSM 7, so I did some upgrade testing on my end. During testing, I found that Based on my DSM 7.1 testing, everything appears to be working now. |
This comment was marked as resolved.
This comment was marked as resolved.
During upgrades, check if the existing ejabberd.yml has a properly configured admin ACL. If the admin ACL section is missing or has no valid user entries (or still has the @@adminuser@@ placeholder), the upgrade wizard prompts the user for their existing admin credentials. The admin account is validated against the ejabberd database using ejabberdctl check_account before the upgrade proceeds, ensuring the credentials match an actual account in the system. This approach detects the actual configuration state regardless of which version the user is upgrading from.
Summary of ChangesI've tested and extended this PR with additional fixes for upgrade scenarios for ejabberd. The changes are added in the commit 8ee216a. New FeaturesAdmin ACL Migration for Upgrades
CLI Wrapper Script
Bug FixesDSM 7 Data Migration
Upgrade Validation
Technical Details
TestingBuilt and tested on:
|
|
hey @hgy59 - I've reviewed, tested, and enhanced this PR. The changes are now ready for merging. Testing completed:
Functional testing: Erlang: RabbitMQ: ejabberd: Additional improvements made:
The PR description has been updated to reflect all changes. Do you have any other comments or changes before we merge? |
- Split wizard into two logical steps: Administrator Account and Server Domain - Add introductory descriptions explaining ejabberd and XMPP - Improve field labels for consistency with upgrade wizard - Remove insecure default password (admin) - Add minimum password length validation (4 characters) - Clarify username format and login instructions - Quote variables in register command to support passwords with spaces Password validation follows XMPP ResourcePrep (RFC 6122) - special characters are allowed; only non-printable and control characters are prohibited.
Description
This PR updates the Erlang ecosystem packages (Erlang, Elixir, RabbitMQ, ejabberd) and fixes critical DSM 7 upgrade issues.
Version Updates
Key Improvements
ejabberd
SYNOPKG_PKGVARinstead ofSYNOPKG_PKGDEST)ejabberdctlRabbitMQ
Erlang
Checklist
all-supportedcompleted successfullyType of change