From: Mathieu Othacehe <othacehe@gnu.org>
To: 44801@debbugs.gnu.org
Cc: Mathieu Othacehe <othacehe@gnu.org>
Subject: [bug#44801] [PATCH 2/2] publish: Add avahi support.
Date: Sun, 22 Nov 2020 16:56:59 +0100 [thread overview]
Message-ID: <20201122155659.67235-3-othacehe@gnu.org> (raw)
In-Reply-To: <20201122155659.67235-1-othacehe@gnu.org>
* guix/scripts/publish.scm (%options): Add "--enable-avahi" option.
(show-help): Document it.
(service-name): New procedure,
(service-type): new variable.
(run-publish-server): Add "avahi?" and "port" parameters. Use them to publish
the server using Avahi.
(guix-publish): Pass the "avahi?" option to "run-publish-server".
---
doc/guix.texi | 4 ++++
guix/scripts/publish.scm | 23 +++++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index e2361c25e3..cfbf495cbc 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -12151,6 +12151,10 @@ The signing key pair must be generated before @command{guix publish} is
launched, using @command{guix archive --generate-key} (@pxref{Invoking
guix archive}).
+When the @option{--enable-avahi} option is passed, the publish server is
+advertised on the local network as an Avahi service, using Guile-Avahi
+bindings.
+
The general syntax is:
@example
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index a12abf5b4d..34fcb682b5 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -41,6 +41,7 @@
#:use-module (web server)
#:use-module (web uri)
#:autoload (sxml simple) (sxml->xml)
+ #:use-module (guix avahi)
#:use-module (guix base32)
#:use-module (guix base64)
#:use-module (guix config)
@@ -82,6 +83,8 @@ Publish ~a over HTTP.\n") %store-directory)
(display (G_ "
-u, --user=USER change privileges to USER as soon as possible"))
(display (G_ "
+ -a, --enable-avahi enable Avahi based discovery"))
+ (display (G_ "
-C, --compression[=METHOD:LEVEL]
compress archives with METHOD at LEVEL"))
(display (G_ "
@@ -156,6 +159,9 @@ usage."
(option '(#\V "version") #f #f
(lambda _
(show-version-and-exit "guix publish")))
+ (option '(#\a "enable-avahi") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'enable-avahi? #t result)))
(option '(#\u "user") #t #f
(lambda (opt name arg result)
(alist-cons 'user arg result)))
@@ -1043,11 +1049,25 @@ methods, return the applicable compression."
(x (not-found request)))
(not-found request))))
+(define (service-name)
+ "Return the Avahi service name of the server."
+ (string-append "guix-publish-" (gethostname)))
+
+(define service-type
+ ;; Return the Avahi service type of the server.
+ "_guix_publish._tcp")
+
(define* (run-publish-server socket store
#:key
+ avahi? port
(compressions (list %no-compression))
(nar-path "nar") narinfo-ttl
cache pool)
+ (when avahi?
+ (avahi-publish-service-thread (service-name)
+ #:type service-type
+ #:port port))
+
(run-server (make-request-handler store
#:cache cache
#:pool pool
@@ -1092,6 +1112,7 @@ methods, return the applicable compression."
(lambda (arg result)
(leave (G_ "~A: extraneous argument~%") arg))
%default-options))
+ (avahi? (assoc-ref opts 'enable-avahi?))
(user (assoc-ref opts 'user))
(port (assoc-ref opts 'port))
(ttl (assoc-ref opts 'narinfo-ttl))
@@ -1152,6 +1173,8 @@ consider using the '--user' option!~%")))
(with-store store
(run-publish-server socket store
+ #:avahi? avahi?
+ #:port port
#:cache cache
#:pool (and cache (make-pool workers
#:thread-name
--
2.29.2
next prev parent reply other threads:[~2020-11-22 15:58 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-22 15:56 [bug#44800] [PATCH 0/2] publish: Add Avahi support Mathieu Othacehe
2020-11-22 15:56 ` [bug#44802] [PATCH 1/2] " Mathieu Othacehe
2020-11-22 15:56 ` Mathieu Othacehe [this message]
2020-11-23 22:04 ` [bug#44800] [PATCH 0/2] publish: " zimoun
2020-11-24 13:35 ` Mathieu Othacehe
2020-11-24 13:21 ` [bug#44800] [PATCH v2 0/3] " Mathieu Othacehe
2020-11-24 13:21 ` [bug#44800] [PATCH v2 1/3] " Mathieu Othacehe
2020-11-27 17:04 ` Ludovic Courtès
2020-11-27 17:09 ` zimoun
2020-11-28 11:02 ` Ludovic Courtès
2020-11-28 18:59 ` zimoun
2020-11-29 14:18 ` Mathieu Othacehe
2020-11-24 13:21 ` [bug#44800] [PATCH v2 2/3] publish: Add avahi support Mathieu Othacehe
2020-11-27 17:12 ` Ludovic Courtès
2020-11-29 14:19 ` Mathieu Othacehe
2020-11-24 13:21 ` [bug#44800] [PATCH v2 3/3] Use substitute servers on the local network Mathieu Othacehe
2020-11-27 17:37 ` Ludovic Courtès
2020-11-29 14:29 ` Mathieu Othacehe
2020-11-30 13:46 ` Ludovic Courtès
2020-12-01 8:43 ` bug#44800: " Mathieu Othacehe
2020-11-27 16:54 ` [bug#44800] [PATCH v2 0/3] publish: Add Avahi support Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201122155659.67235-3-othacehe@gnu.org \
--to=othacehe@gnu.org \
--cc=44801@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).