Dale Mellor <guix-devel-0brg6b@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 36451) by debbugs.gnu.org; 8 Mar 2024 11:51:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Mar 08 06:51:50 2024 Received: from localhost ([127.0.0.1]:56916 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1riYlR-00048A-RJ for submit <at> debbugs.gnu.org; Fri, 08 Mar 2024 06:51:50 -0500 Received: from [195.15.247.228] (port=40448 helo=rdmp.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <guix-devel-0brg6b@HIDDEN>) id 1riYlM-00047t-Vk for 36451 <at> debbugs.gnu.org; Fri, 08 Mar 2024 06:51:49 -0500 Received: from [127.0.0.1] (helo=localhost.localdomain) by rdmp.org with esmtp (Exim 4.96.1) (envelope-from <guix-devel-0brg6b@HIDDEN>) id 1riYkA-0004q8-1C; Fri, 08 Mar 2024 11:51:06 +0000 From: Dale Mellor <guix-devel-0brg6b@HIDDEN> To: 36451 <at> debbugs.gnu.org Subject: [PATCH v2] gnu: services: postgresql: Don't initdb when directory exists Date: Fri, 8 Mar 2024 11:51:01 +0000 Message-ID: <20240308115101.2047407-1-guix-devel-0brg6b@HIDDEN> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Robert Vollmert <rob@HIDDEN> * gnu/services/databases.scm (postgresql-activation): Check if directory exists. Dale Mellor: Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 T_SPF_HELO_TEMPERROR SPF: test of HELO record failed (temperror) 1.3 RDNS_NONE Delivered to internal network by a host with no rDNS -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 36451 Cc: Dale Mellor <guix-devel-0brg6b@HIDDEN>, guix-patches@HIDDEN, Robert Vollmert <rob@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.3 (/) From: Robert Vollmert <rob@HIDDEN> * gnu/services/databases.scm (postgresql-activation): Check if directory exists. -------------- Dale Mellor: - Modified to make patch apply to head of current master branch. - Verified working, does not break an existing system. - Code change is clean. Reviewed-by: Dale Mellor <guix-devel-0brg6b@HIDDEN> --- gnu/services/databases.scm | 68 ++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index 580031cb423..cb85d18e214 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -235,20 +235,7 @@ (define postgresql-activation (use-modules (guix build utils) (ice-9 match)) - (let ((user (getpwnam "postgres")) - (initdb (string-append - #$(final-postgresql postgresql - extension-packages) - "/bin/initdb")) - (initdb-args - (append - (if #$locale - (list (string-append "--locale=" #$locale)) - '())))) - ;; Create db state directory. - (mkdir-p #$data-directory) - (chown #$data-directory (passwd:uid user) (passwd:gid user)) - + (let ((user (getpwnam "postgres"))) ;; Create the socket directory. (let ((socket-directory #$(postgresql-config-file-socket-directory config-file))) @@ -261,25 +248,40 @@ (define postgresql-activation (mkdir-p #$log-directory) (chown #$log-directory (passwd:uid user) (passwd:gid user))) - ;; Drop privileges and init state directory in a new - ;; process. Wait for it to finish before proceeding. - (match (primitive-fork) - (0 - ;; Exit with a non-zero status code if an exception is thrown. - (dynamic-wind - (const #t) - (lambda () - (setgid (passwd:gid user)) - (setuid (passwd:uid user)) - (primitive-exit - (apply system* - initdb - "-D" - #$data-directory - initdb-args))) - (lambda () - (primitive-exit 1)))) - (pid (waitpid pid)))))))) + (unless (file-exists? #$data-directory) + (let ((initdb (string-append + #$(final-postgresql postgresql + extension-packages) + "/bin/initdb")) + (initdb-args + (append + (if #$locale + (list (string-append "--locale=" #$locale)) + '())))) + ;; Create db state directory. + (mkdir-p #$data-directory) + (chown #$data-directory (passwd:uid user) (passwd:gid user)) + + ;; Drop privileges and init state directory in a new + ;; process. Wait for it to finish before proceeding. + (match (primitive-fork) + (0 + ;; Exit with a non-zero status code if an exception is + ;; thrown. + (dynamic-wind + (const #t) + (lambda () + (setgid (passwd:gid user)) + (setuid (passwd:uid user)) + (primitive-exit + (apply system* + initdb + "-D" + #$data-directory + initdb-args))) + (lambda () + (primitive-exit 1)))) + (pid (waitpid pid)))))))))) (define postgresql-shepherd-service (match-lambda -- 2.41.0
guix-patches@HIDDEN
:bug#36451
; Package guix-patches
.
Full text available.Received: (at submit) by debbugs.gnu.org; 30 Jun 2019 20:56:56 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 30 16:56:56 2019 Received: from localhost ([127.0.0.1]:47361 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1hhgsa-0006Fh-4R for submit <at> debbugs.gnu.org; Sun, 30 Jun 2019 16:56:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:54105) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rob@HIDDEN>) id 1hhgsY-0006FV-Hd for submit <at> debbugs.gnu.org; Sun, 30 Jun 2019 16:56:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37988) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from <rob@HIDDEN>) id 1hhgsW-0002gu-Pw for guix-patches@HIDDEN; Sun, 30 Jun 2019 16:56:54 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <rob@HIDDEN>) id 1hhgsU-0001ky-0D for guix-patches@HIDDEN; Sun, 30 Jun 2019 16:56:51 -0400 Received: from mx1.mailbox.org ([80.241.60.212]:34076) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <rob@HIDDEN>) id 1hhgsT-0001gs-Bx for guix-patches@HIDDEN; Sun, 30 Jun 2019 16:56:49 -0400 Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:105:465:1:2:0]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (No client certificate requested) by mx1.mailbox.org (Postfix) with ESMTPS id A92745034E; Sun, 30 Jun 2019 22:56:46 +0200 (CEST) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp2.mailbox.org ([80.241.60.241]) by spamfilter02.heinlein-hosting.de (spamfilter02.heinlein-hosting.de [80.241.56.116]) (amavisd-new, port 10030) with ESMTP id ObQnP6pi6EQw; Sun, 30 Jun 2019 22:56:45 +0200 (CEST) From: Robert Vollmert <rob@HIDDEN> To: guix-patches@HIDDEN Subject: [PATCH] gnu: services: postgresql: Don't initdb when directory exists Date: Sun, 30 Jun 2019 22:56:42 +0200 Message-Id: <20190630205642.54866-1-rob@HIDDEN> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 80.241.60.212 X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: submit Cc: Robert Vollmert <rob@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.6 (--) * gnu/services/databases.scm (postgresql-activation): Check if directory exists. --- gnu/services/databases.scm | 63 +++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index ec31489d48..6b04ae0a0f 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -196,37 +196,38 @@ host all all ::1/128 md5")) (use-modules (guix build utils) (ice-9 match)) =20 - (let ((user (getpwnam "postgres")) - (initdb (string-append #$(final-postgresql postgresql ext= ension-packages) - "/bin/initdb")) - (initdb-args - (append - (if #$locale - (list (string-append "--locale=3D" #$locale)) - '())))) - ;; Create db state directory. - (mkdir-p #$data-directory) - (chown #$data-directory (passwd:uid user) (passwd:gid user)) - - ;; Drop privileges and init state directory in a new - ;; process. Wait for it to finish before proceeding. - (match (primitive-fork) - (0 - ;; Exit with a non-zero status code if an exception is thr= own. - (dynamic-wind - (const #t) - (lambda () - (setgid (passwd:gid user)) - (setuid (passwd:uid user)) - (primitive-exit - (apply system* - initdb - "-D" - #$data-directory - initdb-args))) - (lambda () - (primitive-exit 1)))) - (pid (waitpid pid)))))))) + (when (not (file-exists? #$data-directory)) + (let ((user (getpwnam "postgres")) + (initdb (string-append #$(final-postgresql postgresql e= xtension-packages) + "/bin/initdb")) + (initdb-args + (append + (if #$locale + (list (string-append "--locale=3D" #$locale)) + '())))) + ;; Create db state directory. + (mkdir-p #$data-directory) + (chown #$data-directory (passwd:uid user) (passwd:gid user)= ) + + ;; Drop privileges and init state directory in a new + ;; process. Wait for it to finish before proceeding. + (match (primitive-fork) + (0 + ;; Exit with a non-zero status code if an exception is t= hrown. + (dynamic-wind + (const #t) + (lambda () + (setgid (passwd:gid user)) + (setuid (passwd:uid user)) + (primitive-exit + (apply system* + initdb + "-D" + #$data-directory + initdb-args))) + (lambda () + (primitive-exit 1)))) + (pid (waitpid pid))))))))) =20 (define postgresql-shepherd-service (match-lambda --=20 2.20.1 (Apple Git-117)
Robert Vollmert <rob@HIDDEN>
:guix-patches@HIDDEN
.
Full text available.guix-patches@HIDDEN
:bug#36451
; Package guix-patches
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.