~ruther/guix-local

4bb5e0aeb3b7f5396dff1fcd2b85b65af5e07038 — Ludovic Courtès 9 years ago cdd7a7d
publish: Add '--nar-path'.

* guix/scripts/publish.scm (show-help, %options): Add '--nar-path'.
(%default-options): Add 'nar-path'.
(guix-publish): Honor it.
2 files changed, 18 insertions(+), 0 deletions(-)

M doc/guix.texi
M guix/scripts/publish.scm
M doc/guix.texi => doc/guix.texi +8 -0
@@ 6523,6 6523,14 @@ This allows the user's Guix to keep substitute information in cache for
guarantee that the store items it provides will indeed remain available
for as long as @var{ttl}.

@item --nar-path=@var{path}
Use @var{path} as the prefix for the URLs of ``nar'' files
(@pxref{Invoking guix archive, normalized archives}).

By default, nars are served at a URL such as
@code{/nar/gzip/@dots{}-coreutils-8.25}.  This option allows you to
change the @code{/nar} part to @var{path}.

@item --public-key=@var{file}
@itemx --private-key=@var{file}
Use the specific @var{file}s as the public/private key pair used to sign

M guix/scripts/publish.scm => guix/scripts/publish.scm +10 -0
@@ 72,6 72,8 @@ Publish ~a over HTTP.\n") %store-directory)
  (display (_ "
      --ttl=TTL          announce narinfos can be cached for TTL seconds"))
  (display (_ "
      --nar-path=PATH    use PATH as the prefix for nar URLs"))
  (display (_ "
      --public-key=FILE  use FILE as the public key for signatures"))
  (display (_ "
      --private-key=FILE use FILE as the private key for signatures"))


@@ 152,6 154,9 @@ compression disabled~%"))
                      (leave (_ "~a: invalid duration~%") arg))
                    (alist-cons 'narinfo-ttl (time-second duration)
                                result))))
        (option '("nar-path") #t #f
                (lambda (opt name arg result)
                  (alist-cons 'nar-path arg result)))
        (option '("public-key") #t #f
                (lambda (opt name arg result)
                  (alist-cons 'public-key-file arg result)))


@@ 167,6 172,9 @@ compression disabled~%"))
(define %default-options
  `((port . 8080)

    ;; By default, serve nars under "/nar".
    (nar-path . "nar")

    (public-key-file . ,%public-key-file)
    (private-key-file . ,%private-key-file)



@@ 589,6 597,7 @@ blocking."
                                           (sockaddr:addr addr)
                                           port)))
           (socket  (open-server-socket address))
           (nar-path  (assoc-ref opts 'nar-path))
           (repl-port (assoc-ref opts 'repl))

           ;; Read the key right away so that (1) we fail early on if we can't


@@ 615,5 624,6 @@ consider using the '--user' option!~%")))
          (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port)))
        (with-store store
          (run-publish-server socket store
                              #:nar-path nar-path
                              #:compression compression
                              #:narinfo-ttl ttl))))))