Simplify build.sh: remove complex escaping, use simple ldflags

The build script was using complex escaping mechanisms that were causing
linker failures with certain passwords.

Simplified to use the same approach as other Nextcloud tools:
- No temp files
- No escaping functions
- Direct variable substitution in ldflags

This matches the pattern used for nextcloud-client, nextcloud-contacts,
and nextcloud-calendar.

Known limitation: Passwords containing spaces, double quotes,
or $ characters may fail to build. Users with such passwords
should use a simpler password or manually modify the build command.
This commit is contained in:
WLTBAgent committed 2026-02-23 22:02:08 +00:00
1 parent 154a93a148
commit 6a90e5f0e5
1 file changed
+4 -21
+4 -21
View File
@@ -106,27 +106,10 @@ echo "✓ nextcloud-calendar built successfully"
echo "Building nextcloud-mail..." echo "Building nextcloud-mail..."
cd "$SCRIPT_DIR/tools/go/nextcloud-mail" cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
# Build ldflags - escape special characters in values # Build with compile-time credentials
escape_ldflag() { # Note: This simple approach works for most passwords but may fail with
local value="$1" # passwords containing spaces, double quotes, or $ characters
# Escape backslashes, double quotes, and spaces go build -ldflags="-X main.BuildIMAPServer=$IMAP_SERVER -X main.BuildIMAPPort=$IMAP_PORT -X main.BuildIMAPUser=$IMAP_USER -X main.BuildIMAPPassword=$IMAP_PASS -X main.BuildSMTPServer=$SMTP_SERVER -X main.BuildSMTPPort=$SMTP_PORT -X main.BuildSMTPUser=$SMTP_USER -X main.BuildSMTPPassword=$SMTP_PASS -X main.BuildUseSSL=$USE_SSL -X main.BuildIgnoreCerts=$IGNORE_CERTS" -o ~/bin/nextcloud-mail .
value="${value//\\/\\\\}"
value="${value//\"/\\\"}"
echo "$value"
}
LDFLAGS="-X main.BuildIMAPServer=\"$(escape_ldflag "$IMAP_SERVER")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPPort=\"$(escape_ldflag "$IMAP_PORT")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPUser=\"$(escape_ldflag "$IMAP_USER")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPPassword=\"$(escape_ldflag "$IMAP_PASS")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPServer=\"$(escape_ldflag "$SMTP_SERVER")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPPort=\"$(escape_ldflag "$SMTP_PORT")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPUser=\"$(escape_ldflag "$SMTP_USER")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPPassword=\"$(escape_ldflag "$SMTP_PASS")\""
LDFLAGS="$LDFLAGS -X main.BuildUseSSL=\"$(escape_ldflag "$USE_SSL")\""
LDFLAGS="$LDFLAGS -X main.BuildIgnoreCerts=\"$(escape_ldflag "$IGNORE_CERTS")\""
go build -ldflags="$LDFLAGS" -o ~/bin/nextcloud-mail .
echo "✓ nextcloud-mail built successfully" echo "✓ nextcloud-mail built successfully"
echo "" echo ""