Subject: Re: [bug#28283] Status: [PATCH 1/1] gnu: services: version-control: Add cgit.

From: Oleg Pykhalov <[email-masked]>
Date: Thu, 21 Sep 2017 01:20:11 +0300

Hello Ludovic,

apologies for long responce.

[email-masked] (Ludovic Courtès) writes:

> Hello Oleg,
>
> This patch fell through the cracks.  :-)
>
> Could you look into the comments I made below and send updated patches?
> We’re almost there!

Yes, I looked them already few days ago.  Your last comment was about
nginx changes.  I'm working on it.  But I have issue with stucture when
I try to test.

--8<---------------cut here---------------start------------->8---
natsu@magnolia ~/src/guix$ guix environment guix -- make check-system TESTS=nginx
;;; note: source file /home/natsu/src/guix-wigust/wigust/packages/emacs.scm
;;;       newer than compiled /home/natsu/.cache/guile/ccache/2.2-LE-8-3.A/home/natsu/src/guix-wigust/wigust/packages/emacs.scm.go
substitute: updating list of substitutes from 'https://berlin.guixsd.org'... 100.0%
Compiling Scheme modules...
warning: failed to load '(gnu tests web)':
ERROR: In procedure allocate-struct: Wrong type argument in position 2: 9
Running 0 system tests...
TOTAL: 0
--8<---------------cut here---------------end--------------->8---

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 4aa6fd501..3063bd549 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -99,6 +99,8 @@
                        (default '()))
   (index               nginx-server-configuration-index
                        (default (list "index.html")))
+  (try-files           nginx-server-configuration-try-files
+                       (default '()))
   (ssl-certificate     nginx-server-configuration-ssl-certificate
                        (default "/etc/nginx/cert.pem"))
   (ssl-certificate-key nginx-server-configuration-ssl-certificate-key
@@ -179,6 +181,7 @@ of index files."
          (nginx-server-configuration-ssl-certificate-key server))
         (root (nginx-server-configuration-root server))
         (index (nginx-server-configuration-index server))
+        ;; (try-files (nginx-server-configuration-try-files server))
         (server-tokens? (nginx-server-configuration-server-tokens? server))
         (locations (nginx-server-configuration-locations server)))
     (define-syntax-parameter <> (syntax-rules ()))
@@ -207,6 +210,10 @@ of index files."
      (and/l ssl-certificate-key "      ssl_certificate_key " <> ";\n")
      "      root " root ";\n"
      "      index " (config-index-strings index) ";\n"
+     ;; (if (nil? (pk 'try-files try-files))
+     ;;     ""
+     ;;     (string append "      try_files "
+     ;;             (config-index-strings try-files) ";\n"))
      "      server_tokens " (if server-tokens? "on" "off") ";\n"
      "\n"
      (map emit-nginx-location-config locations)

> Ludo’.
>
> [email-masked] (Ludovic Courtès) skribis:
>
>> Hi Oleg,
>>
>> Oleg Pykhalov <[email-masked]> skribis:
>>
>>> From 65fa66cd761f3a9f8c6e84f8b5f7d8c643fe9731 Mon Sep 17 00:00:00 2001
>>> From: Oleg Pykhalov <[email-masked]>
>>> Date: Tue, 29 Aug 2017 23:40:05 +0300
>>> Subject: [PATCH 1/1] gnu: services: version-control: Add cgit.
>>>
>>> * gnu/services/version-control.scm
>>> (<cgit-configuration-file>, <cgit-configuration>): New record types.
>>> (cgit-configuration-robots-string, cgit-activation,
>>> cgit-configuration-nginx-config): New procedures.
>>> (%cgit-configuration-nginx, cgit-service-type): New variables.
>>> * doc/guix.texi (Version Control): Document the cgit service.
>>> * gnu/services/web.scm (<nginx-server-configuration>): Add
>>> nginx-server-configuration-try-files.
>>> (emit-nginx-server-config): Add this.
>>
>> That looks nice and useful!
>>
>> Minor issues:
>>
>>> +@subsubheading cgit service
>>
>> Please capitalize titles: “Cgit Service”
>>
>>> +@uref{https://git.zx2c4.com/cgit/, cgit} is a hyperfast web
>>> +frontend for git repositories written in C.
>>
>> “Git”, not “git”.  Also, not hypersuperlatives please.  :-)
>>
>> So what about this:
>>
>>   @uref{https://git.zx2c4.com/cgit/, cgit} is a Web interface to Git
>>   repositories, written in C.  It allows users to look at Git
>>   repository contents and history through their Web browsers.
>>
>>> +The following example will configure the service with default values.
>>> +By default, cgit can be accessed on port 80 (@code{http://localhost:80}).
>>> +
>>> +@example
>>> +(service nginx-service-type)
>>> +(service fcgiwrap-service-type)
>>> +(service cgit-service-type)
>>> +@end example
>>
>> Please add a sentence above or below the example like “This example
>> shows …”.
>>
>>> +@table @asis
>>> +@item @code{css} (default: @code{"/share/cgit/cgit.css"})
>>> +Url which specifies the css document to include in all cgit pages.
>>> +
>>> +@item @code{logo} (default: @code{"/share/cgit/cgit.png"})
>>> +Url which specifies the source of an image which will be used as a logo
>>> +on all cgit pages.
>>> +
>>> +@item @code{virtual-root} (default: @code{"/"})
>>> +Url which, if specified, will be used as root for all cgit links.
>>
>> s/Url/URL/
>>
>>> +@item @code{scan-path} (default: @code{"/srv/git"})
>>> +A path which will be scanned for repositories.
>>
>> Rather: “Name of the directory to scan for repositories.”
>>
>> Can you also rename ‘scan-path’ to ‘repository-directory’ or something
>> like that?  (Not “path.”)
>>
>>> +@item @code{robots} (default: @code{(list "noindex" "nofollow")})
>>> +Text used as content for the "robots" meta-tag.
>>
>> Write ``robots'' (literally) so that Texinfo typesets things correctly.
>>
>>> --- a/gnu/services/web.scm
>>> +++ b/gnu/services/web.scm
>>> @@ -99,6 +99,8 @@
>>>                         (default '()))
>>>    (index               nginx-server-configuration-index
>>>                         (default (list "index.html")))
>>> +  (try-files           nginx-server-configuration-try-files
>>> +                       (default #f))
>>>    (ssl-certificate     nginx-server-configuration-ssl-certificate
>>>                         (default "/etc/nginx/cert.pem"))
>>>    (ssl-certificate-key nginx-server-configuration-ssl-certificate-key
>>> @@ -179,6 +181,7 @@ of index files."
>>>           (nginx-server-configuration-ssl-certificate-key server))
>>>          (root (nginx-server-configuration-root server))
>>>          (index (nginx-server-configuration-index server))
>>> +        (try-files (nginx-server-configuration-try-files server))
>>>          (server-tokens? (nginx-server-configuration-server-tokens? server))
>>>          (locations (nginx-server-configuration-locations server)))
>>>      (define-syntax-parameter <> (syntax-rules ()))
>>> @@ -207,6 +210,7 @@ of index files."
>>>       (and/l ssl-certificate-key "      ssl_certificate_key " <> ";\n")
>>>       "      root " root ";\n"
>>>       "      index " (config-index-strings index) ";\n"
>>> +     "      try_files " (config-index-strings try-files) ";\n"
>>>       "      server_tokens " (if server-tokens? "on" "off") ";\n"
>>>       "\n"
>>>       (map emit-nginx-location-config locations)
>>
>> Could you submit these nginx changes separately for discussion?  We’ll
>> also need to document them.  Maybe Cc Chris Baines and other nginx
>> people.
>>
>> Thanks!
>>
>> Ludo’.