From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:53193) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gm4wg-0002DZ-1t for guix-patches@gnu.org; Tue, 22 Jan 2019 17:55:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gm4j8-0003MC-8l for guix-patches@gnu.org; Tue, 22 Jan 2019 17:41:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:42477) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gm4j7-0003Ls-UD for guix-patches@gnu.org; Tue, 22 Jan 2019 17:41:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gm4j7-0007Y9-Om for guix-patches@gnu.org; Tue, 22 Jan 2019 17:41:01 -0500 Subject: [bug#33185] [PATCH v2 2/2] services: Add patchwork. Resent-Message-ID: References: <87y3aie8a1.fsf@cbaines.net> <20190122220928.17927-1-mail@cbaines.net> <20190122220928.17927-2-mail@cbaines.net> From: Christopher Baines In-reply-to: <20190122220928.17927-2-mail@cbaines.net> Date: Tue, 22 Jan 2019 22:40:52 +0000 Message-ID: <87bm48iadn.fsf@cbaines.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 33185@debbugs.gnu.org --=-=-= Content-Type: text/plain Christopher Baines writes: > +(define (patchwork-django-admin-gexp patchwork settings-module) > + #~(lambda command > + (let ((pid (primitive-fork)) > + (user (getpwnam "httpd"))) > + (if (eq? pid 0) > + (dynamic-wind > + (const #t) > + (lambda () > + (setgid (passwd:gid user)) > + (setuid (passwd:uid user)) > + > + (setenv "DJANGO_SETTINGS_MODULE" "guix.patchwork.settings") > + (setenv "PYTHONPATH" #$settings-module) > + (primitive-exit > + (if (zero? > + (apply system* > + #$(file-append patchwork "/bin/patchwork-admin") > + command)) > + 0 > + 1))) > + (lambda () > + (primitive-exit 1))) > + (zero? (cdr (waitpid pid))))))) > + > +(define (patchwork-django-admin-action patchwork settings-module) > + (shepherd-action > + (name 'django-admin) > + (documentation > + "Run a django admin command for patchwork") > + (procedure (patchwork-django-admin-gexp patchwork settings-module)))) It would be really useful to provide an easy way of accessing the Django admin utilities. I think Shepherd actions might be a good way of doing this, but I haven't got it working yet... I think something goes wrong when it forks, so I might need to try different approaches to change user. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlxHm/RfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE 9Xehiw//d1FgpRGathpWxEyczj84ILPSjr+hoWzKgyGQDKausqZP08T69951VZcs XACoa0C+gKQOAUXN+qUmILcCxHTgP2XE3rOuQQX7bm+EN2ew03qxTgqjXR0D40dA grTq8RbDuQcrVkmKu0fLHq0a5Ju/eIBM2cIsZg3kct2da5+Ey0vRivd+EK3TSTM4 PdGvfcLScpeLJWTH+r0Hmc1flIJITZyMOMJ77rEHTXBzEnmJaWuoSfOhqICE4gP0 JSXU8STO6/Fj7xOSAjAOhJsjjphTqxZANAVE3nandAopGD0RPfCus1eQ8AQIJ+ft 2CEgp2/lxUP6RfsZlV/b7uWqf1nG/k6tbKoBnK4ugkqRg18b1h+kIuYpyuvv/4LU jdRUr5OZTiNJJklzU5MouYME7MAPg3Ka51mwM+nZM/DyyoAN0bkqQ8F36lPfuwwP CJWtb4/Yc7FkUB4xLIlDKSdhtutnkvum9mYbnE00dVqeA18e3anuOxffdvgDFx+c VSAdLhr6iy5I50qaRVoQUJ79X8i41peGXfRDfylMPcv/COLZ6i1c9++P/N3U3WFK 47ooTMmyr8yeABPqt7NMJ3h2O0dRD0XZ3UcETT54VJGI/EdZQv8lj/RDuRkMd624 33DjLbukBn9m78mjkwoXLpLEdPVSwNbK+7SDYFdZgi+yB3y2AF0= =+Fm5 -----END PGP SIGNATURE----- --=-=-=--