aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-10-29 18:18:43 +0200
committerMarius Bakke <marius@gnu.org>2022-11-20 17:54:05 +0100
commit6ac97bb5035ae10ed8ae39b7dbfbf60030dad4d8 (patch)
treeac159a4bfa749f0b5e85460a74b3f5f531bb38b6
parentc7b266fdf2754c139803c156677bf2828c78d072 (diff)
downloadguix-6ac97bb5035ae10ed8ae39b7dbfbf60030dad4d8.tar.gz
guix-6ac97bb5035ae10ed8ae39b7dbfbf60030dad4d8.zip
services: mysql-upgrade: Support custom datadir.
* gnu/services/databases.scm (mysql-upgrade-wrapper): Take service configuration as argument, and pass the config file to mysql_upgrade. (mysql-upgrade-shepherd-service): Pass CONFIG instead of just socket and executable to MYSQL-UPGRADE-WRAPPER.
-rw-r--r--gnu/services/databases.scm61
1 files changed, 31 insertions, 30 deletions
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index cc9379792d..96504a27ea 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
-;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
;;; Copyright © 2021 Aljosha Papsch <ep@stern-data.com>
;;;
@@ -678,33 +678,36 @@ FLUSH PRIVILEGES;
(list #$(mysql-install config))
#:log-file "/var/log/mysqld-install.log")))))
-(define (mysql-upgrade-wrapper mysql socket-file)
+(define (mysql-upgrade-wrapper config)
;; The MySQL socket and PID file may appear before the server is ready to
;; accept connections. Ensure the socket is responsive before attempting
;; to run the upgrade script.
- (program-file
- "mysql-upgrade-wrapper"
- #~(begin
- (let ((mysql-upgrade #$(file-append mysql "/bin/mysql_upgrade"))
- (timeout 20))
- (begin
- (let loop ((i 0))
- (catch 'system-error
- (lambda ()
- (let ((sock (socket PF_UNIX SOCK_STREAM 0)))
- (connect sock AF_UNIX #$socket-file)
- (close-port sock)
- ;; The socket is ready!
- (execl mysql-upgrade mysql-upgrade
- (string-append "--socket=" #$socket-file))))
- (lambda args
- (if (< i timeout)
- (begin
- (sleep 1)
- (loop (+ 1 i)))
- ;; No luck, give up.
- (throw 'timeout-error
- "MySQL server did not appear in time!"))))))))))
+ (let ((mysql (mysql-configuration-mysql config))
+ (socket-file (mysql-configuration-socket config))
+ (config-file (mysql-configuration-file config)))
+ (program-file
+ "mysql-upgrade-wrapper"
+ #~(begin
+ (let ((mysql-upgrade #$(file-append mysql "/bin/mysql_upgrade"))
+ (timeout 20))
+ (begin
+ (let loop ((i 0))
+ (catch 'system-error
+ (lambda ()
+ (let ((sock (socket PF_UNIX SOCK_STREAM 0)))
+ (connect sock AF_UNIX #$socket-file)
+ (close-port sock)
+ ;; The socket is ready!
+ (execl mysql-upgrade mysql-upgrade
+ (string-append "--defaults-file=" #$config-file))))
+ (lambda args
+ (if (< i timeout)
+ (begin
+ (sleep 1)
+ (loop (+ 1 i)))
+ ;; No luck, give up.
+ (throw 'timeout-error
+ "MySQL server did not appear in time!")))))))))))
(define (mysql-upgrade-shepherd-service config)
(list (shepherd-service
@@ -712,11 +715,9 @@ FLUSH PRIVILEGES;
(requirement '(mysql))
(one-shot? #t)
(documentation "Upgrade MySQL database schemas.")
- (start (let ((mysql (mysql-configuration-mysql config))
- (socket (mysql-configuration-socket config)))
- #~(make-forkexec-constructor
- (list #$(mysql-upgrade-wrapper mysql socket))
- #:user "mysql" #:group "mysql"))))))
+ (start #~(make-forkexec-constructor
+ (list #$(mysql-upgrade-wrapper config))
+ #:user "mysql" #:group "mysql")))))
(define (mysql-shepherd-services config)