aboutsummaryrefslogtreecommitdiff
path: root/gnu/services/ssh.scm
blob: 25db78342048238db1bcac806738e9b471f426dd (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu services ssh)
  #:use-module (gnu packages ssh)
  #:use-module (gnu packages admin)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:use-module (gnu system pam)
  #:use-module (gnu system shadow)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (guix modules)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (ice-9 match)
  #:export (lsh-configuration
            lsh-configuration?
            lsh-service
            lsh-service-type

            openssh-configuration
            openssh-configuration?
            openssh-service-type

            dropbear-configuration
            dropbear-configuration?
            dropbear-service-type
            dropbear-service))

;;; Commentary:
;;;
;;; This module implements secure shell (SSH) services.
;;;
;;; Code:

(define-record-type* <lsh-configuration>
  lsh-configuration make-lsh-configuration
  lsh-configuration?
  (lsh lsh-configuration-lsh
       (default lsh))
  (daemonic? lsh-configuration-daemonic?)
  (host-key lsh-configuration-host-key)
  (interfaces lsh-configuration-interfaces)
  (port-number lsh-configuration-port-number)
  (allow-empty-passwords? lsh-configuration-allow-empty-passwords?)
  (root-login? lsh-configuration-root-login?)
  (syslog-output? lsh-configuration-syslog-output?)
  (pid-file? lsh-configuration-pid-file?)
  (pid-file lsh-configuration-pid-file)
  (x11-forwarding? lsh-configuration-x11-forwarding?)
  (tcp/ip-forwarding? lsh-configuration-tcp/ip-forwarding?)
  (password-authentication? lsh-configuration-password-authentication?)
  (public-key-authentication? lsh-configuration-public-key-authentication?)
  (initialize? lsh-configuration-initialize?))

(define %yarrow-seed
  "/var/spool/lsh/yarrow-seed-file")

(define (lsh-initialization lsh host-key)
  "Return the gexp to initialize the LSH service for HOST-KEY."
  #~(begin
      (unless (file-exists? #$%yarrow-seed)
        (system* (string-append #$lsh "/bin/lsh-make-seed")
                 "--sloppy" "-o" #$%yarrow-seed))

      (unless (file-exists? #$host-key)
        (mkdir-p (dirname #$host-key))
        (format #t "creating SSH host key '~a'...~%" #$host-key)

        ;; FIXME: We're just doing a simple pipeline, but 'system' cannot be
        ;; used yet because /bin/sh might be dangling; factorize this somehow.
        (let* ((in+out (pipe))
               (keygen (primitive-fork)))
          (case keygen
            ((0)
             (close-port (car in+out))
             (close-fdes 1)
             (dup2 (fileno (cdr in+out)) 1)
             (execl (string-append #$lsh "/bin/lsh-keygen")
                    "lsh-keygen" "--server"))
            (else
             (let ((write-key (primitive-fork)))
               (case write-key
                 ((0)
                  (close-port (cdr in+out))
                  (close-fdes 0)
                  (dup2 (fileno (car in+out)) 0)
                  (execl (string-append #$lsh "/bin/lsh-writekey")
                         "lsh-writekey" "--server" "-o" #$host-key))
                 (else
                  (close-port (car in+out))
                  (close-port (cdr in+out))
                  (waitpid keygen)
                  (waitpid write-key))))))))))

(define (lsh-activation config)
  "Return the activation gexp for CONFIG."
  #~(begin
      (use-modules (guix build utils))
      (mkdir-p "/var/spool/lsh")
      #$(if (lsh-configuration-initialize? config)
            (lsh-initialization (lsh-configuration-lsh config)
                                (lsh-configuration-host-key config))
            #t)))

(define (lsh-shepherd-service config)
  "Return a <shepherd-service> for lsh with CONFIG."
  (define lsh (lsh-configuration-lsh config))
  (define pid-file (lsh-configuration-pid-file config))
  (define pid-file? (lsh-configuration-pid-file? config))
  (define daemonic? (lsh-configuration-daemonic? config))
  (define interfaces (lsh-configuration-interfaces config))

  (define lsh-command
    (append
     (cons (file-append lsh "/sbin/lshd")
           (if daemonic?
               (let ((syslog (if (lsh-configuration-syslog-output? config)
                                 '()
                                 (list "--no-syslog"))))
                 (cons "--daemonic"
                       (if pid-file?
                           (cons #~(string-append "--pid-file=" #$pid-file)
                                 syslog)
                           (cons "--no-pid-file" syslog))))
               (if pid-file?
                   (list #~(string-append "--pid-file=" #$pid-file))
                   '())))
     (cons* #~(string-append "--host-key="
                             #$(lsh-configuration-host-key config))
            #~(string-append "--password-helper=" #$lsh "/sbin/lsh-pam-checkpw")
            #~(string-append "--subsystems=sftp=" #$lsh "/sbin/sftp-server")
            "-p" (number->string (lsh-configuration-port-number config))
            (if (lsh-configuration-password-authentication? config)
                "--password" "--no-password")
            (if (lsh-configuration-public-key-authentication? config)
                "--publickey" "--no-publickey")
            (if (lsh-configuration-root-login? config)
                "--root-login" "--no-root-login")
            (if (lsh-configuration-x11-forwarding? config)
                "--x11-forward" "--no-x11-forward")
            (if (lsh-configuration-tcp/ip-forwarding? config)
                "--tcpip-forward" "--no-tcpip-forward")
            (if (null? interfaces)
                '()
                (map (cut string-append "--interface=" <>)
                     interfaces)))))

  (define requires
    (if (and daemonic? (lsh-configuration-syslog-output? config))
        '(networking syslogd)
        '(networking)))

  (list (shepherd-service
         (documentation "GNU lsh SSH server")
         (provision '(ssh-daemon))
         (requirement requires)
         (start #~(make-forkexec-constructor (list #$@lsh-command)))
         (stop  #~(make-kill-destructor)))))

(define (lsh-pam-services config)
  "Return a list of <pam-services> for lshd with CONFIG."
  (list (unix-pam-service
         "lshd"
         #:allow-empty-passwords?
         (lsh-configuration-allow-empty-passwords? config))))

(define lsh-service-type
  (service-type (name 'lsh)
                (description
                 "Run the GNU@tie{}lsh secure shell (SSH) daemon,
@command{lshd}.")
                (extensions
                 (list (service-extension shepherd-root-service-type
                                          lsh-shepherd-service)
                       (service-extension pam-root-service-type
                                          lsh-pam-services)
                       (service-extension activation-service-type
                                          lsh-activation)))))

(define* (lsh-service #:key
                      (lsh lsh)
                      (daemonic? #t)
                      (host-key "/etc/lsh/host-key")
                      (interfaces '())
                      (port-number 22)
                      (allow-empty-passwords? #f)
                      (root-login? #f)
                      (syslog-output? #t)
                      (pid-file? #f)
                      (pid-file "/var/run/lshd.pid")
                      (x11-forwarding? #t)
                      (tcp/ip-forwarding? #t)
                      (password-authentication? #t)
                      (public-key-authentication? #t)
                      (initialize? #t))
  "Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}.
@var{host-key} must designate a file containing the host key, and readable
only by root.

When @var{daemonic?} is true, @command{lshd} will detach from the
controlling terminal and log its output to syslogd, unless one sets
@var{syslog-output?} to false.  Obviously, it also makes lsh-service
depend on existence of syslogd service.  When @var{pid-file?} is true,
@command{lshd} writes its PID to the file called @var{pid-file}.

When @var{initialize?} is true, automatically create the seed and host key
upon service activation if they do not exist yet.  This may take long and
require interaction.

When @var{initialize?} is false, it is up to the user to initialize the
randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create
a key pair with the private key stored in file @var{host-key} (@pxref{lshd
basics,,, lsh, LSH Manual}).

When @var{interfaces} is empty, lshd listens for connections on all the
network interfaces; otherwise, @var{interfaces} must be a list of host names
or addresses.

@var{allow-empty-passwords?} specifies whether to accept log-ins with empty
passwords, and @var{root-login?} specifies whether to accept log-ins as
root.

The other options should be self-descriptive."
  (service lsh-service-type
           (lsh-configuration (lsh lsh) (daemonic? daemonic?)
                              (host-key host-key) (interfaces interfaces)
                              (port-number port-number)
                              (allow-empty-passwords? allow-empty-passwords?)
                              (root-login? root-login?)
                              (syslog-output? syslog-output?)
                              (pid-file? pid-file?) (pid-file pid-file)
                              (x11-forwarding? x11-forwarding?)
                              (tcp/ip-forwarding? tcp/ip-forwarding?)
                              (password-authentication?
                               password-authentication?)
                              (public-key-authentication?
                               public-key-authentication?)
                              (initialize? initialize?))))


;;;
;;; OpenSSH.
;;;

(define-record-type* <openssh-configuration>
  openssh-configuration make-openssh-configuration
  openssh-configuration?
  ;; <package>
  (openssh               openssh-configuration-openssh
                         (default openssh))
  ;; string
  (pid-file              openssh-configuration-pid-file
                         (default "/var/run/sshd.pid"))
  ;; integer
  (port-number           openssh-configuration-port-number
                         (default 22))
  ;; Boolean | 'without-password
  (permit-root-login     openssh-configuration-permit-root-login
                         (default #f))
  ;; Boolean
  (allow-empty-passwords? openssh-configuration-allow-empty-passwords?
                          (default #f))
  ;; Boolean
  (password-authentication? openssh-configuration-password-authentication?
                            (default #t))
  ;; Boolean
  (public-key-authentication? openssh-configuration-public-key-authentication?
                              (default #t))
  ;; Boolean
  (x11-forwarding?       openssh-configuration-x11-forwarding?
                         (default #f))

  ;; Boolean
  (allow-agent-forwarding? openssh-configuration-allow-agent-forwarding?
                           (default #t))

  ;; Boolean
  (allow-tcp-forwarding? openssh-configuration-allow-tcp-forwarding?
                         (default #t))

  ;; Boolean
  (gateway-ports? openssh-configuration-gateway-ports?
                         (default #f))

  ;; Boolean
  (challenge-response-authentication? openssh-challenge-response-authentication?
                                      (default #f))
  ;; Boolean
  (use-pam?              openssh-configuration-use-pam?
                         (default #t))
  ;; Boolean
  (print-last-log?       openssh-configuration-print-last-log?
                         (default #t))
  ;; list of two-element lists
  (subsystems            openssh-configuration-subsystems
                         (default '(("sftp" "internal-sftp"))))

  ;; list of strings
  (accepted-environment  openssh-configuration-accepted-environment
                         (default '()))

  ;; symbol
  (log-level             openssh-configuration-log-level
                         (default 'info))

  ;; String
  ;; This is an "escape hatch" to provide configuration that isn't yet
  ;; supported by this configuration record.
  (extra-content         openssh-configuration-extra-content
                         (default ""))

  ;; list of user-name/file-like tuples
  (authorized-keys       openssh-authorized-keys
                         (default '()))

  ;; Boolean
  ;; XXX: This should really be handled in an orthogonal way, for instance as
  ;; proposed in <https://bugs.gnu.org/27155>.  Keep it internal/undocumented
  ;; for now.
  (%auto-start?          openssh-auto-start?
                         (default #t)))

(define %openssh-accounts
  (list (user-group (name "sshd") (system? #t))
        (user-account
          (name "sshd")
          (group "sshd")
          (system? #t)
          (comment "sshd privilege separation user")
          (home-directory "/var/run/sshd")
          (shell (file-append shadow "/sbin/nologin")))))

(define (openssh-activation config)
  "Return the activation GEXP for CONFIG."
  (with-imported-modules '((guix build utils))
    #~(begin
        (use-modules (guix build utils))

        (define (touch file-name)
          (call-with-output-file file-name (const #t)))

        ;; Make sure /etc/ssh can be read by the 'sshd' user.
        (mkdir-p "/etc/ssh")
        (chmod "/etc/ssh" #o755)
        (mkdir-p (dirname #$(openssh-configuration-pid-file config)))

        ;; 'sshd' complains if the authorized-key directory and its parents
        ;; are group-writable, which rules out /gnu/store.  Thus we copy the
        ;; authorized-key directory to /etc.
        (catch 'system-error
          (lambda ()
            (delete-file-recursively "/etc/authorized_keys.d"))
          (lambda args
            (unless (= ENOENT (system-error-errno args))
              (apply throw args))))
        (copy-recursively #$(authorized-key-directory
                             (openssh-authorized-keys config))
                          "/etc/ssh/authorized_keys.d")

        (chmod "/etc/ssh/authorized_keys.d" #o555)

        (let ((lastlog "/var/log/lastlog"))
          (when #$(openssh-configuration-print-last-log? config)
            (unless (file-exists? lastlog)
              (touch lastlog))))

        ;; Generate missing host keys.
        (system* (string-append #$(openssh-configuration-openssh config)
                                "/bin/ssh-keygen") "-A"))))

(define (authorized-key-directory keys)
  "Return a directory containing the authorized keys specified in KEYS, a list
of user-name/file-like tuples."
  (define build
    (with-imported-modules (source-module-closure '((guix build utils)))
      #~(begin
          (use-modules (ice-9 match) (srfi srfi-26)
                       (guix build utils))

          (mkdir #$output)
          (for-each (match-lambda
                      ((user keys ...)
                       (let ((file (string-append #$output "/" user)))
                         (call-with-output-file file
                           (lambda (port)
                             (for-each (lambda (key)
                                         (call-with-input-file key
                                           (cut dump-port <> port)))
                                       keys))))))
                    '#$keys))))

  (computed-file "openssh-authorized-keys" build))

(define (openssh-config-file config)
  "Return the sshd configuration file corresponding to CONFIG."
  (computed-file
   "sshd_config"
   #~(begin
       (use-modules (ice-9 match))
       (call-with-output-file #$output
         (lambda (port)
           (display "# Generated by 'openssh-service'.\n" port)
           (format port "Port ~a\n"
                   #$(number->string
                      (openssh-configuration-port-number config)))
           (format port "PermitRootLogin ~a\n"
                   #$(match (openssh-configuration-permit-root-login config)
                       (#t "yes")
                       (#f "no")
                       ('without-password "without-password")))
           (format port "PermitEmptyPasswords ~a\n"
                   #$(if (openssh-configuration-allow-empty-passwords? config)
                         "yes" "no"))
           (format port "PasswordAuthentication ~a\n"
                   #$(if (openssh-configuration-password-authentication? config)
                         "yes" "no"))
           (format port "PubkeyAuthentication ~a\n"
                   #$(if (openssh-configuration-public-key-authentication?
                          config)
                         "yes" "no"))
           (format port "X11Forwarding ~a\n"
                   #$(if (openssh-configuration-x11-forwarding? config)
                         "yes" "no"))
           (format port "AllowAgentForwarding ~a\n"
                   #$(if (openssh-configuration-allow-agent-forwarding? config)
                         "yes" "no"))
           (format port "AllowTcpForwarding ~a\n"
                   #$(if (openssh-configuration-allow-tcp-forwarding? config)
                         "yes" "no"))
           (format port "GatewayPorts ~a\n"
                   #$(if (openssh-configuration-gateway-ports? config)
                         "yes" "no"))
           (format port "PidFile ~a\n"
                   #$(openssh-configuration-pid-file config))
           (format port "ChallengeResponseAuthentication ~a\n"
                   #$(if (openssh-challenge-response-authentication? config)
                         "yes" "no"))
           (format port "UsePAM ~a\n"
                   #$(if (openssh-configuration-use-pam? config)
                         "yes" "no"))
           (format port "PrintLastLog ~a\n"
                   #$(if (openssh-configuration-print-last-log? config)
                         "yes" "no"))
           (format port "LogLevel ~a\n"
                   #$(string-upcase
                      (symbol->string
                       (openssh-configuration-log-level config))))

           ;; Add '/etc/authorized_keys.d/%u', which we populate.
           (format port "AuthorizedKeysFile \
 .ssh/authorized_keys .ssh/authorized_keys2 /etc/ssh/authorized_keys.d/%u\n")

           (for-each (lambda (s) (format port "AcceptEnv ~a\n" s))
                     '#$(openssh-configuration-accepted-environment config))

           (for-each
            (match-lambda
              ((name command) (format port "Subsystem\t~a\t~a\n" name command)))
            '#$(openssh-configuration-subsystems config))

           (format port "~a\n"
                   #$(openssh-configuration-extra-content config))
           #t)))))

(define (openssh-shepherd-service config)
  "Return a <shepherd-service> for openssh with CONFIG."

  (define pid-file
    (openssh-configuration-pid-file config))

  (define openssh-command
    #~(list (string-append #$(openssh-configuration-openssh config) "/sbin/sshd")
            "-D" "-f" #$(openssh-config-file config)))

  (list (shepherd-service
         (documentation "OpenSSH server.")
         (requirement '(syslogd loopback))
         (provision '(ssh-daemon))
         (start #~(make-forkexec-constructor #$openssh-command
                                             #:pid-file #$pid-file))
         (stop #~(make-kill-destructor))
         (auto-start? (openssh-auto-start? config)))))

(define (openssh-pam-services config)
  "Return a list of <pam-services> for sshd with CONFIG."
  (list (unix-pam-service
         "sshd"
         #:allow-empty-passwords?
         (openssh-configuration-allow-empty-passwords? config))))

(define (extend-openssh-authorized-keys config keys)
  "Extend CONFIG with the extra authorized keys listed in KEYS."
  (openssh-configuration
   (inherit config)
   (authorized-keys
    (append (openssh-authorized-keys config) keys))))

(define openssh-service-type
  (service-type (name 'openssh)
                (description
                 "Run the OpenSSH secure shell (SSH) server, @command{sshd}.")
                (extensions
                 (list (service-extension shepherd-root-service-type
                                          openssh-shepherd-service)
                       (service-extension pam-root-service-type
                                          openssh-pam-services)
                       (service-extension activation-service-type
                                          openssh-activation)
                       (service-extension account-service-type
                                          (const %openssh-accounts))

                       ;; Install OpenSSH in the system profile.  That way,
                       ;; 'scp' is found when someone tries to copy to or from
                       ;; this machine.
                       (service-extension profile-service-type
                                          (lambda (config)
                                            (list (openssh-configuration-openssh
                                                   config))))))
                (compose concatenate)
                (extend extend-openssh-authorized-keys)
                (default-value (openssh-configuration))))


;;;
;;; Dropbear.
;;;

(define-record-type* <dropbear-configuration>
  dropbear-configuration make-dropbear-configuration
  dropbear-configuration?
  (dropbear               dropbear-configuration-dropbear
                          (default dropbear))
  (port-number            dropbear-configuration-port-number
                          (default 22))
  (syslog-output?         dropbear-configuration-syslog-output?
                          (default #t))
  (pid-file               dropbear-configuration-pid-file
                          (default "/var/run/dropbear.pid"))
  (root-login?            dropbear-configuration-root-login?
                          (default #f))
  (allow-empty-passwords? dropbear-configuration-allow-empty-passwords?
                          (default #f))
  (password-authentication? dropbear-configuration-password-authentication?
                            (default #t)))

(define (dropbear-activation config)
  "Return the activation gexp for CONFIG."
  #~(begin
      (use-modules (guix build utils))
      (mkdir-p "/etc/dropbear")))

(define (dropbear-shepherd-service config)
  "Return a <shepherd-service> for dropbear with CONFIG."
  (define dropbear
    (dropbear-configuration-dropbear config))

  (define pid-file
    (dropbear-configuration-pid-file config))

  (define dropbear-command
    #~(list (string-append #$dropbear "/sbin/dropbear")

            ;; '-R' allows host keys to be automatically generated upon first
            ;; connection, at a time when /dev/urandom is more likely securely
            ;; seeded.
            "-F" "-R"

            "-p" #$(number->string (dropbear-configuration-port-number config))
            "-P" #$pid-file
            #$@(if (dropbear-configuration-syslog-output? config) '() '("-E"))
            #$@(if (dropbear-configuration-root-login? config) '() '("-w"))
            #$@(if (dropbear-configuration-password-authentication? config)
                   '()
                   '("-s" "-g"))
            #$@(if (dropbear-configuration-allow-empty-passwords? config)
                   '("-B")
                   '())))

  (define requires
    (if (dropbear-configuration-syslog-output? config)
        '(networking syslogd) '(networking)))

  (list (shepherd-service
         (documentation "Dropbear SSH server.")
         (requirement requires)
         (provision '(ssh-daemon))
         (start #~(make-forkexec-constructor #$dropbear-command
                                             #:pid-file #$pid-file))
         (stop #~(make-kill-destructor)))))

(define dropbear-service-type
  (service-type (name 'dropbear)
                (description
                 "Run the Dropbear secure shell (SSH) server.")
                (extensions
                 (list (service-extension shepherd-root-service-type
                                          dropbear-shepherd-service)
                       (service-extension activation-service-type
                                          dropbear-activation)))
                (default-value (dropbear-configuration))))

(define* (dropbear-service #:optional (config (dropbear-configuration)))
  "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH
daemon} with the given @var{config}, a @code{<dropbear-configuration>}
object."
  (service dropbear-service-type config))

;;; ssh.scm ends here
width: 0.9%;'/> -rw-r--r--gnu/services/security.scm25
-rw-r--r--gnu/services/shepherd.scm27
-rw-r--r--gnu/services/virtualization.scm1
-rw-r--r--gnu/services/web.scm66
-rw-r--r--guix/build/emacs-build-system.scm20
-rw-r--r--guix/build/emacs-utils.scm39
-rw-r--r--guix/import/gnome.scm37
-rw-r--r--nix/libstore/misc.cc8
-rw-r--r--nix/libstore/misc.hh4
-rw-r--r--nix/libstore/store-api.cc17
-rw-r--r--nix/libstore/store-api.hh12
118 files changed, 6738 insertions, 4859 deletions
diff --git a/NEWS b/NEWS
index a24256a7bb..12a6d8a8f9 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,7 @@
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -18,6 +18,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** New ‘guix shell’ command, the successor to ‘guix environment’
*** New ‘deb’ format for the ‘guix pack’ command
*** New ‘guix import minetest’ command, to import Minetest extensions
+*** New 'guix style' command, to auto-format package definitions
*** ‘guix import texlive’ rewritten to use the TLPDB as its source
*** ‘guix import elpa’ now supports the non-GNU ELPA repository
*** ‘guix import pypi’ can now import a specific version
@@ -30,6 +31,18 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** More control over boot-time file system checks and repairs
*** XFS file systems can be created by the installer and mounted by label/UUID
*** New interface for declaring swap space
+*** GNOME is now at version 42
+*** The Rust bootstrap now starts from 1.54 instead of 1.19
+*** Most Python 2 packages have been removed
+*** Guix now makes use of parallel xz compression
+*** Faster shared libraries discovery via a per-package dynamic linker cache
+*** Build phases are no longer required to return a boolean
+*** Package inputs can now be provided without explicit labels
+*** A package origin can now be a single file rather than an archive
+*** Multiple Tex Live trees can now be used via GUIX_TEXMF
+*** A new sanity-check phase detects packaging problems at build time
+*** G-Expressions can now be used to author build phases
+*** Fetching sources can now fall-back to use Disarchive
** Programming interfaces
*** (guix records) now supports “field sanitizers”
** Noteworthy bug fixes
@@ -43,7 +56,13 @@ Please send Guix bug reports to bug-guix@gnu.org.
(<https://issues.guix.gnu.org/24937>)
*** File system flags are validated before system instantiation
(<https://issues.guix.gnu.org/51425>)
-
+*** Fonts can now be discovered in any profile
+*** Python modules discovery no longer uses PYTHONPATH
+*** Various Python reproducibility fixes
+*** Installer now supports MSDOS disk labels on UEFI systems
+ (<https://issues.guix.gnu.org/47889>)
+*** Emacs handles major upgrades better without a re-login
+ (<https://bugs.gnu.org/47458>)
* Changes in 1.3.0 (since 1.2.0)
** Package management
*** POWER9 (powerpc64le-linux) is now supported as a technology preview
diff --git a/doc/guix.texi b/doc/guix.texi
index c21235f28d..c5d2c2d5d8 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36628,8 +36628,9 @@ extensions.
@item @code{extra-jails} (default: @code{()}) (type: list-of-fail2ban-jail-configurations)
Instances of @code{<fail2ban-jail-configuration>} explicitly provided.
-@item @code{extra-content} (type: maybe-string)
-Extra raw content to add to the end of the @file{jail.local} file.
+@item @code{extra-content} (default: @code{()}) (type: text-config)
+Extra raw content to add to the end of the @file{jail.local} file,
+provided as a list of file-like objects.
@end table
@@ -36756,8 +36757,9 @@ The file names of the log files to be monitored.
@item @code{action} (default: @code{()}) (type: list-of-fail2ban-jail-actions)
A list of @code{<fail2ban-jail-action-configuration>}.
-@item @code{extra-content} (type: maybe-string)
-Extra content for the jail configuration.
+@item @code{extra-content} (default: @code{()}) (type: text-config)
+Extra content for the jail configuration, provided as a list of file-like
+objects.
@end table
diff --git a/etc/news.scm b/etc/news.scm
index ae40f33cb0..ea5c908ef1 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -25,15 +25,56 @@
(channel-news
(version 0)
+ (entry (commit "11a06d1e49f4d50d6789e05bbf35e2e145ff7838")
+ (title
+ (en "Emacs now supports native compilation")
+ (de "Emacs kann Pakete nun nativ kompilieren")
+ (pt "O Emacs agora suporta compilação nativa"))
+ (body
+ (en "Emacs can now compile packages natively. Under the default
+configuration, this means that Emacs packages will now be just-in-time (JIT)
+compiled as you use them, and the results stored in a subdirectory of your
+@code{user-emacs-directory}.
+
+Furthermore, the build system for Emacs packages transparently supports native
+compilation, but note, that @code{emacs-minimal}---the default Emacs for
+building packages---has been configured without native compilation.
+To natively compile your emacs packages ahead of time, use a transformation
+like @option{--with-input=emacs-minimal=emacs}.")
+ (de "Emacs kann nun native Maschinenbefehle erzeugen. Standardgemäß
+kompiliert es nun Pakete „just in time“, während Sie diese laden, und platziert
+die so erzeugten nativen Bibliotheken in einem Unterverzeichnis Ihres
+@code{user-emacs-directory}.
+
+Darüber hinaus unterstützt das Erstellungssystem für Emacs-Pakete die Erzeugung
+nativer Maschinenbefehle. Beachten Sie jedoch, dass @code{emacs-minimal} –
+die Emacs-Variante, mit der normalerweise Emacs-Pakete erstellt werden –
+weiterhin keine nativen Befehle generiert. Um native Befehle für Ihre
+Emacs-Pakete schon im Voraus zu erzeugen, nutzen Sie eine Transformation, z.B.
+@option{--with-input=emacs-minimal=emacs}.")
+ (pt "Agora o Emacs pode compilar pacotes nativamente. Na
+configuração padrão os pacotes do Emacs serão compilados “just-in-time” (JIT)
+conforme forem usados, e os resultados armazenados em um subdiretório de
+@code{user-emacs-directory}.
+
+Além disso, o sistema de compilação para pacotes do Emacs suporta compilação
+nativa de forma transparente. Note porém que o @code{emacs-minimal} --- a
+variante padrão do Emacs para compilar pacotes --- foi configurado sem
+compilação nativa. Para pré-compilar nativamente seus pacotes do Emacs use
+uma transformação, como por exemplo
+@code{--with-input=emacs-minimal=emacs}.")))
(entry (commit "c188cf57f161c0c26e2d7c8516bd1ddd1492d686")
(title
(en "Linux-libre kernel updated to 5.19")
+ (de "Linux-libre-Kernel wird auf 5.19 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 5.19")
(pt "Kernel linux-libre atualizado para 5.19"))
(body
(en "The default version of the linux-libre kernel has been
updated to the 5.19 release series.")
+ (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
+ jetzt auf der 5.19-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 5.19.")
(pt "A versão padrão do kernel linux-libre foi atualizada para a
diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 9f220cc489..4c2926eba5 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -170,7 +170,7 @@ and the maven-build-system."))
(define-team home
(team 'home
- #:name "Team for \"guix home\""))
+ #:name "Team for \"Guix Home\""))
(define-team mentors
(team 'mentors
@@ -266,6 +266,10 @@ importer."))
"mail@cbaines.net")
core mentors ruby)
+(define-member (person "Andrew Tropin"
+ "andrew@trop.in")
+ home emacs)
+
(define (find-team name)
(or (hash-ref %teams (string->symbol name))
diff --git a/gnu/build/secret-service.scm b/gnu/build/secret-service.scm
index 1baa058635..b362b901be 100644
--- a/gnu/build/secret-service.scm
+++ b/gnu/build/secret-service.scm
@@ -119,7 +119,7 @@ wait for at most HANDSHAKE-TIMEOUT seconds for handshake to complete. Return
files)))
(log "sending secrets to ~a~%" port)
- (let ((sock (socket AF_INET SOCK_STREAM 0))
+ (let ((sock (socket AF_INET (logior SOCK_CLOEXEC SOCK_STREAM) 0))
(addr (make-socket-address AF_INET INADDR_LOOPBACK port))
(sleep (if (resolve-module '(fibers) #f)
(module-ref (resolve-interface '(fibers)) 'sleep)
@@ -177,7 +177,7 @@ and #f otherwise."
;; Wait for a TCP connection on PORT. Note: We cannot use the
;; virtio-serial ports, which would be safer, because they are
;; (presumably) unsupported on GNU/Hurd.
- (let ((sock (socket AF_INET SOCK_STREAM 0)))
+ (let ((sock (socket AF_INET (logior SOCK_CLOEXEC SOCK_STREAM) 0)))
(bind sock AF_INET INADDR_ANY port)
(listen sock 1)
(log "waiting for secrets on port ~a...~%" port)
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index 62ab0aadc6..d2a803279f 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -54,19 +54,22 @@
(default shepherd-0.9)) ; package
(auto-start? home-shepherd-configuration-auto-start?
(default #t))
+ (daemonize? home-shepherd-configuration-daemonize?
+ (default #t))
(services home-shepherd-configuration-services
(default '())))
-(define (home-shepherd-configuration-file services shepherd)
+(define (home-shepherd-configuration-file config)
"Return the shepherd configuration file for SERVICES. SHEPHERD is used
as shepherd package."
- (assert-valid-graph services)
-
- (let ((files (map shepherd-service-file services))
- ;; TODO: Add compilation of services, it can improve start
- ;; time.
- ;; (scm->go (cute scm->go <> shepherd))
- )
+ (let* ((daemonize? (home-shepherd-configuration-daemonize? config))
+ (services (home-shepherd-configuration-services config))
+ (_ (assert-valid-graph services))
+ (files (map shepherd-service-file services))
+ ;; TODO: Add compilation of services, it can improve start
+ ;; time.
+ ;; (scm->go (cute scm->go <> shepherd))
+ )
(define config
#~(begin
(use-modules (srfi srfi-34)
@@ -76,7 +79,11 @@ as shepherd package."
(map
(lambda (file) (load file))
'#$files))
- (action 'root 'daemonize)
+
+ #$@(if daemonize?
+ `((action 'root 'daemonize))
+ '())
+
(format #t "Starting services...~%")
(let ((services-to-start
'#$(append-map shepherd-service-provision
@@ -92,8 +99,7 @@ as shepherd package."
(scheme-file "shepherd.conf" config)))
(define (launch-shepherd-gexp config)
- (let* ((shepherd (home-shepherd-configuration-shepherd config))
- (services (home-shepherd-configuration-services config)))
+ (let* ((shepherd (home-shepherd-configuration-shepherd config)))
(if (home-shepherd-configuration-auto-start? config)
(with-imported-modules '((guix build utils))
#~(unless (file-exists?
@@ -104,22 +110,22 @@ as shepherd package."
(let ((log-dir (or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
(getenv "HOME")))))
+ ;; TODO: Remove it, 0.9.2 creates it automatically?
((@ (guix build utils) mkdir-p) log-dir)
(system*
#$(file-append shepherd "/bin/shepherd")
"--logfile"
(string-append log-dir "/shepherd.log")
"--config"
- #$(home-shepherd-configuration-file services shepherd)))))
+ #$(home-shepherd-configuration-file config)))))
#~"")))
(define (reload-configuration-gexp config)
- (let* ((shepherd (home-shepherd-configuration-shepherd config))
- (services (home-shepherd-configuration-services config)))
+ (let* ((shepherd (home-shepherd-configuration-shepherd config)))
#~(system*
#$(file-append shepherd "/bin/herd")
"load" "root"
- #$(home-shepherd-configuration-file services shepherd))))
+ #$(home-shepherd-configuration-file config))))
(define (ensure-shepherd-gexp config)
#~(if (file-exists?
@@ -130,6 +136,9 @@ as shepherd package."
#$(reload-configuration-gexp config)
#$(launch-shepherd-gexp config)))
+(define (shepherd-xdg-configuration-files config)
+ `(("shepherd/init.scm" ,(home-shepherd-configuration-file config))))
+
(define-public home-shepherd-service-type
(service-type (name 'home-shepherd)
(extensions
@@ -137,6 +146,9 @@ as shepherd package."
home-run-on-first-login-service-type
launch-shepherd-gexp)
(service-extension
+ home-xdg-configuration-files-service-type
+ shepherd-xdg-configuration-files)
+ (service-extension
home-activation-service-type
ensure-shepherd-gexp)
(service-extension
diff --git a/gnu/local.mk b/gnu/local.mk
index cc96b77e03..d05f9ff557 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -975,7 +975,7 @@ dist_patch_DATA = \
%D%/packages/patches/cling-use-shared-library.patch \
%D%/packages/patches/clucene-pkgconfig.patch \
%D%/packages/patches/cmake-curl-certificates.patch \
- %D%/packages/patches/cmh-support-fplll.patch \
+ %D%/packages/patches/cmake-curl-certificates-3.24.patch \
%D%/packages/patches/coda-use-system-libs.patch \
%D%/packages/patches/collectd-5.11.0-noinstallvar.patch \
%D%/packages/patches/containerd-create-pid-file.patch \
@@ -1051,9 +1051,9 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-telega-test-env.patch \
%D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \
%D%/packages/patches/emacs-yasnippet-fix-tests.patch \
+ %D%/packages/patches/emacs-kv-fix-tests.patch \
%D%/packages/patches/enjarify-setup-py.patch \
%D%/packages/patches/enlightenment-fix-setuid-path.patch \
- %D%/packages/patches/eog-update-libportal-usage.patch \
%D%/packages/patches/erlang-man-path.patch \
%D%/packages/patches/esmtp-add-lesmtp.patch \
%D%/packages/patches/eudev-rules-directory.patch \
@@ -1208,14 +1208,10 @@ dist_patch_DATA = \
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
%D%/packages/patches/gmp-faulty-test.patch \
%D%/packages/patches/gnash-fix-giflib-version.patch \
- %D%/packages/patches/gnome-boxes-add-guix-logo.patch \
- %D%/packages/patches/gnome-builder-update-libportal.patch \
%D%/packages/patches/gnome-control-center-libexecdir.patch \
%D%/packages/patches/gnome-online-miners-tracker-3.patch \
- %D%/packages/patches/gnome-screenshot-meson-0.60.patch \
%D%/packages/patches/gnome-settings-daemon-gc.patch \
%D%/packages/patches/gnome-session-support-elogind.patch \
- %D%/packages/patches/gnome-shell-polkit-autocleanup.patch \
%D%/packages/patches/gnome-todo-libportal.patch \
%D%/packages/patches/gnome-tweaks-search-paths.patch \
%D%/packages/patches/gnupg-CVE-2022-34903.patch \
@@ -1225,7 +1221,9 @@ dist_patch_DATA = \
%D%/packages/patches/gnutls-cross.patch \
%D%/packages/patches/gnutls-guile-eintr-eagain.patch \
%D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
+ %D%/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch \
%D%/packages/patches/gobject-introspection-cc.patch \
+ %D%/packages/patches/gobject-introspection-cc-1.72.patch \
%D%/packages/patches/gobject-introspection-girepository.patch \
%D%/packages/patches/go-fix-script-tests.patch \
%D%/packages/patches/go-github-com-golang-snappy-32bit-test.patch \
@@ -1243,7 +1241,6 @@ dist_patch_DATA = \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/grub-efi-fat-serial-number.patch \
%D%/packages/patches/grub-setup-root.patch \
- %D%/packages/patches/gspell-dash-test.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
%D%/packages/patches/guile-2.2-skip-so-test.patch \
@@ -1288,7 +1285,6 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
%D%/packages/patches/hdf-eos5-fix-szip.patch \
%D%/packages/patches/hdf-eos5-fortrantests.patch \
- %D%/packages/patches/hedgewars-network-bsd.patch \
%D%/packages/patches/helm-fix-gcc-9-build.patch \
%D%/packages/patches/http-parser-CVE-2020-8287.patch \
%D%/packages/patches/htslib-for-stringtie.patch \
@@ -1397,6 +1393,10 @@ dist_patch_DATA = \
%D%/packages/patches/libcroco-CVE-2020-12825.patch \
%D%/packages/patches/libcyaml-libyaml-compat.patch \
%D%/packages/patches/libexpected-nofetch.patch \
+ %D%/packages/patches/libgda-cve-2021-39359.patch \
+ %D%/packages/patches/libgda-fix-build.patch \
+ %D%/packages/patches/libgda-fix-missing-initialization.patch \
+ %D%/packages/patches/libgda-skip-postgresql-tests.patch \
%D%/packages/patches/libgit2-mtime-0.patch \
%D%/packages/patches/libgnome-encoding.patch \
%D%/packages/patches/libgnomeui-utf8.patch \
@@ -1528,7 +1528,6 @@ dist_patch_DATA = \
%D%/packages/patches/musl-cross-locale.patch \
%D%/packages/patches/mutt-store-references.patch \
%D%/packages/patches/m4-gnulib-libio.patch \
- %D%/packages/patches/nautilus-add-libportal-gtk3.patch \
%D%/packages/patches/ncompress-fix-softlinks.patch \
%D%/packages/patches/ncftp-reproducible.patch \
%D%/packages/patches/netcdf-date-time.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 21f9176bfa..5fb621e027 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -325,14 +325,14 @@ interface and is based on GNU Guile.")
(define-public shepherd-0.9
(package
(inherit shepherd)
- (version "0.9.1")
+ (version "0.9.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/shepherd/shepherd-"
version ".tar.gz"))
(sha256
(base32
- "0l2arn6gsyw88xk9phxnyplvv1mn8sqp3ipgyyb0nszdzvxlgd36"))
+ "0mcby3ygh3bpns44rb1vnk8bz2km4nlw092nrcgkm3nkqfmbp4p1"))
(modules '((guix build utils)))
(snippet
;; Avoid continuation barriers so (@ (fibers) sleep) can be
@@ -3815,13 +3815,13 @@ you are running, what theme or icon set you are using, etc.")
(define-public hyfetch
(package
(name "hyfetch")
- (version "1.0.2")
+ (version "1.4.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "HyFetch" version))
(sha256
- (base32 "1bfkycdhsyzkk6q24gdy1xwvyz0rvkr7xk2khbn74b3nk6kp83r2"))))
+ (base32 "18s8r63aqyah34vbahccgkiqw4008i2w5kvhqd9s8bdd4yvsrn4n"))))
(build-system python-build-system)
(inputs (list python-hypy-utils python-typing-extensions))
(arguments `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index e5bd12eeb8..87fcca746b 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -294,34 +294,33 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
(define-public cmh
(package
- (name "cmh")
- (version "1.1.0")
- (source (origin
- (method url-fetch)
- ;; Git repo at <https://gitlab.inria.fr/cmh/cmh>.
- (uri (string-append "http://www.multiprecision.org/downloads/cmh-"
- version ".tar.gz"))
- (sha256
- (base32
- "1ws2yhzxmm2l5xqqqcjcimmg40f9qq5l9i6d4i5434an9v9s8531"))
- (patches (search-patches "cmh-support-fplll.patch"))))
- (build-system gnu-build-system)
- (inputs
- (list gmp
- mpfr
- mpc
- mpfrcx
- fplll
- pari-gp))
- (synopsis "Igusa class polynomial computations")
- (description
- "The CMH software computes Igusa (genus 2) class polynomials, which
+ (name "cmh")
+ (version "1.1.1")
+ (source (origin
+ (method url-fetch)
+ ;; Git repo at <https://gitlab.inria.fr/cmh/cmh>.
+ (uri (string-append
+ "https://www.multiprecision.org/downloads/cmh-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0nadvqfmidgks1s7aljsf8dp32pz7vjaxyaym36m9bx4zr8msk91"))))
+ (build-system gnu-build-system)
+ (inputs (list gmp
+ mpfr
+ mpc
+ mpfrcx
+ fplll
+ pari-gp))
+ (synopsis "Igusa class polynomial computations")
+ (description
+ "The CMH software computes Igusa (genus 2) class polynomials, which
parameterize the CM points in the moduli space of 2-dimensional abelian
varieties, i.e. Jacobians of hyperelliptic curves.
It can also be used to compute theta constants at arbitrary
precision.")
- (license license:gpl3+)
- (home-page "http://www.multiprecision.org/cmh/home.html")))
+ (license license:gpl3+)
+ (home-page "https://www.multiprecision.org/cmh/home.html")))
(define-public giac
(package
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 72758560cd..86af26d648 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -37,6 +37,8 @@
#:use-module (gnu packages libffi)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages guile)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages less)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -456,3 +458,45 @@ in Bash, but you can use it to test any UNIX program.")
function interface (FFI) directly in your shell. In other words, it allows
you to call routines in shared libraries from within Bash.")
(license license:expat)))
+
+(define-public blesh
+ (package
+ (name "blesh")
+ (version "0.4.0-devel2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/akinomyoga/ble.sh")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02fdjyh4x6wr5hg3i86nsxhz8ysgjrvvxdmk6pqr0lm8ngw9p3sh"))))
+ (arguments
+ (list #:make-flags #~(list (string-append "PREFIX="
+ #$output))
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'pretend-contrib-.git-exists
+ (lambda _
+ (mkdir-p "contrib/.git")))
+ (add-after 'unpack 'make-readlink-work
+ (lambda _
+ (substitute* "ble.pp"
+ (("PATH=/bin:/usr/bin readlink")
+ (search-input-file %build-inputs
+ "/bin/readlink")))))
+ (delete 'configure) ;no configure
+ (add-before 'check 'use-LANG-for-tests
+ (lambda _
+ (setenv "LANG"
+ (getenv "LC_ALL"))
+ (unsetenv "LC_ALL"))))))
+ (build-system gnu-build-system)
+ (native-inputs (list less))
+ (home-page "https://github.com/akinomyoga/ble.sh")
+ (synopsis "Bash Line Editor")
+ (description
+ "Bash Line Editor (ble.sh) is a command line editor written in pure Bash
+which replaces the default GNU Readline. It adds syntax highlighting, auto
+suggestions, vim modes, and more to Bash interactive sessions.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 5c377a7d59..46278d326c 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -4708,6 +4708,35 @@ and the assessment of differential expression. The analysis methods apply to
different technologies, including microarrays, RNA-seq, and quantitative PCR.")
(license license:gpl2+)))
+(define-public r-made4
+ (package
+ (name "r-made4")
+ (version "1.70.0")
+ (source (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "made4" version))
+ (sha256
+ (base32
+ "1wrv9d2mp799qzy1bsaj4w7wx12gdhfv9qvklz7z41vfz59d6bq5"))))
+ (properties `((upstream-name . "made4")))
+ (build-system r-build-system)
+ (propagated-inputs
+ (list r-ade4
+ r-biobase
+ r-gplots
+ r-rcolorbrewer
+ r-scatterplot3d
+ r-summarizedexperiment))
+ (native-inputs (list r-knitr))
+ (home-page "http://www.hsph.harvard.edu/aedin-culhane/")
+ (synopsis "Multivariate analysis of microarray data using ADE4")
+ (description
+ "This is a package for multivariate data analysis and graphical display
+of microarray data. Functions are included for supervised dimension
+reduction (between group analysis) and joint dimension reduction of two
+datasets (coinertia analysis).")
+ (license license:artistic2.0)))
+
(define-public r-methylkit
(package
(name "r-methylkit")
@@ -16759,6 +16788,25 @@ with a nested autoregressive correlated error structure for the effect of
interest on transformed methylation proportions.")
(license license:expat)))
+(define-public r-omicade4
+ (package
+ (name "r-omicade4")
+ (version "1.36.0")
+ (source (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "omicade4" version))
+ (sha256
+ (base32
+ "1l7w3sczsimg640klq8navgdcwjj090wjqd40n4mw76pny2xj2lj"))))
+ (properties `((upstream-name . "omicade4")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-ade4 r-biobase r-made4))
+ (home-page "https://bioconductor.org/packages/omicade4")
+ (synopsis "Multiple co-inertia analysis of omics datasets")
+ (description
+ "This package performes multiple co-inertia analysis of omics datasets.")
+ (license license:gpl2)))
+
(define-public r-omnipathr
(package
(name "r-omnipathr")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 8700f42c5d..f9904a0f56 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -14984,7 +14984,7 @@ international community.")
(define-public kraken2
(package
(name "kraken2")
- (version "2.1.1")
+ (version "2.1.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -14993,7 +14993,7 @@ international community.")
(file-name (git-file-name name version))
(sha256
(base32
- "0h7a7vygd7y5isbrnc6srwq6xj1rmyd33pm8mmcgfkmlxlg5vkg3"))))
+ "1pl6ml1ldg2hnhy8ps56q0fl1wq3g91qkhinj6pb4yjjhv1rxsjf"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #false ; there are none
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index ef0c31c7e4..2286944ed2 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -56,6 +56,7 @@
(define-module (gnu packages check)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
@@ -2913,7 +2914,7 @@ provides a simple way to achieve this.")
(define-public umockdev
(package
(name "umockdev")
- (version "0.14.4")
+ (version "0.17.13")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2921,23 +2922,25 @@ provides a simple way to achieve this.")
"umockdev-" version ".tar.xz"))
(sha256
(base32
- "0xmi24ckpps32k7hc139psgbsnsf4g106sv4l9m445m46amkxggd"))))
- (build-system gnu-build-system)
+ "1kqkraag5v1jl5qfv0mb3ckm8yq2im21mng08sbs9dh9c9pbyvkc"))))
+ (build-system meson-build-system)
(arguments
(list #:phases
#~(modify-phases %standard-phases
- (add-after 'unpack 'fix-test
+ (add-after 'unpack 'skip-test-umockdev.c
+ ;; This test depends on /sys being available, among other
+ ;; things.
(lambda _
- (substitute* "tests/test-umockdev.c"
- (("/run") "/tmp"))))
+ (call-with-output-file "tests/test-umockdev.c"
+ (lambda (port)
+ (format port "int main(void) { return 0; }")))))
;; Avoid having to set 'LD_LIBRARY_PATH' to use umockdev
;; via introspection.
(add-after 'unpack 'absolute-introspection-library
- (lambda _
- (substitute* "Makefile.in"
- (("g-ir-compiler -l libumockdev")
- (string-append "g-ir-compiler -l " #$output
- "/lib/libumockdev")))))
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("libumockdev.so.0" all)
+ (string-append #$output "/lib/" all)))))
(add-after 'install 'absolute-filenames
(lambda* (#:key inputs #:allow-other-keys)
;; 'patch-shebangs' will take care of the shebang.
@@ -2946,17 +2949,19 @@ provides a simple way to achieve this.")
(("libumockdev")
(string-append #$output "/lib/libumockdev"))))))))
(native-inputs
- (list vala
- gobject-introspection
+ (list gobject-introspection
gtk-doc/stable
pkg-config
- ;; For tests.
python
+ vala
which))
(inputs
- (list bash-minimal ;for umockdev-wrapper
- coreutils-minimal ;for bin/env
- glib eudev libgudev))
+ (list bash-minimal ;for umockdev-wrapper
+ coreutils-minimal ;for bin/env
+ eudev
+ glib
+ libgudev
+ libpcap))
(home-page "https://github.com/martinpitt/umockdev/")
(synopsis "Mock hardware devices for creating unit tests")
(description "umockdev mocks hardware devices for creating integration
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 16c47be17b..77c51a00c6 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -317,7 +317,7 @@
;; run the Blink performance tests, just remove everything to save ~70MiB.
'("third_party/blink/perf_tests"))
-(define %chromium-version "105.0.5195.102")
+(define %chromium-version "105.0.5195.125")
(define %ungoogled-revision (string-append %chromium-version "-1"))
(define %debian-revision "debian/102.0.5005.61-1")
@@ -329,7 +329,7 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256
(base32
- "17n06lqzbz19a3fdqbv5wj7s6v3rc0bfshdz8syw0k2gkw3x6ivc"))))
+ "0k16wma9lj9q34xgz377nasnfzcw7wi73l91r41yilvgb3l2fgw8"))))
(define %debian-origin
(origin
@@ -506,7 +506,7 @@
%chromium-version ".tar.xz"))
(sha256
(base32
- "0qlj6s182d4nv0g76r0pcr1rvvh74pngcv79ml3cbqsir4khbfhw"))
+ "0rhay46fnfffqcpk6c856hj414508fmhda600lz5whcacr25q6r0"))
(modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system)
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index cf930c57fc..87fde01f63 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -8,7 +8,7 @@
;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
@@ -333,6 +333,24 @@ and workspaces that can be used in the compiler environment of your choice.")
(package
(inherit cmake-minimal)
(name "cmake")
+ (version "3.24.2")
+ (source (origin
+ (inherit (package-source cmake-minimal))
+ (method url-fetch)
+ (uri (string-append "https://cmake.org/files/v"
+ (version-major+minor version)
+ "/cmake-" version ".tar.gz"))
+ (snippet (match (origin-snippet (package-source cmake-minimal))
+ (('begin ('define 'preserved-files ('quote x))
+ rest ...)
+ `(begin (define preserved-files
+ ',(cons "Utilities/cmelf" x))
+ ,@rest))))
+ (sha256
+ (base32
+ "1ny8y2dzc6fww9gzb1ml0vjpx4kclphjihkxagxigprxdzq2140d"))
+ (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
+ (outputs '("out" "doc"))
(arguments
(substitute-keyword-arguments (package-arguments cmake-minimal)
;; Use cmake-minimal this time.
@@ -368,14 +386,12 @@ and workspaces that can be used in the compiler environment of your choice.")
(delete-file-recursively (string-append out html)))))))))
(inputs
(modify-inputs (package-inputs cmake-minimal)
- (prepend ncurses ;required for ccmake
- )))
+ (prepend ncurses))) ;required for ccmake
;; Extra inputs required to build the documentation.
(native-inputs
- `(,@(package-native-inputs cmake-minimal)
- ("python-sphinx" ,python-sphinx)
- ("texinfo" ,texinfo)))
- (outputs '("out" "doc"))
+ (modify-inputs (package-native-inputs cmake-minimal)
+ (append python-sphinx
+ texinfo)))
(properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
(define-public cmake-minimal-cross
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index 2c7e7ae9c4..029f0d4ba4 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2021 Timmy Douglas <mail@timmydouglas.com>
;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -155,7 +156,7 @@ runtime (like runc or crun) for a single container.")
(define-public libslirp
(package
(name "libslirp")
- (version "4.6.1")
+ (version "4.7.0")
(source
(origin
(method git-fetch)
@@ -163,10 +164,11 @@ runtime (like runc or crun) for a single container.")
(url "https://gitlab.freedesktop.org/slirp/libslirp")
(commit (string-append "v" version))))
(sha256
- (base32 "1b4cn51xvzbrxd63g6w1033prvbxfxsnsn1l0fa5i311xv28vkh0"))
+ (base32 "0dny8187a8qh6akaa37aa9b5pjxx88f02wh6achp4mygff0ipxba"))
(file-name (git-file-name name version))))
(build-system meson-build-system)
- (inputs
+ (propagated-inputs
+ ;; In Requires of slirp.pc.
(list glib))
(native-inputs
(list pkg-config))
@@ -180,7 +182,7 @@ containers or various tools.")
(define-public slirp4netns
(package
(name "slirp4netns")
- (version "1.1.12")
+ (version "1.2.0")
(source
(origin
(method git-fetch)
@@ -188,7 +190,7 @@ containers or various tools.")
(url "https://github.com/rootless-containers/slirp4netns")
(commit (string-append "v" version))))
(sha256
- (base32 "03llv4dlf7qqxwz4zdyk926g4bigfj2gb50glm70ciflpvzs8081"))
+ (base32 "1rlzwp5fx1x3q179j9s2jp02imjag5pgj333z110nrvi7azl22l8"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@@ -322,7 +324,11 @@ configure network interfaces in Linux containers.")
(("/usr/local/libexec/cni")
(string-append #$(this-package-input "cni-plugins")
"/bin"))
- (("/usr/bin/crun") (which "crun"))))))))
+ (("/usr/bin/crun") (which "crun")))))
+ (add-after 'install 'install-completions
+ (lambda _
+ (invoke "make" "install.completions"
+ (string-append "PREFIX=" #$output)))))))
(inputs
(list btrfs-progs
cni-plugins
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 606cd792c1..6289c9520f 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -406,7 +406,7 @@ combination of these streams.")
(define-public xsimd
(package
(name "xsimd")
- (version "8.1.0")
+ (version "9.0.1")
(source
(origin
(method git-fetch)
@@ -414,7 +414,7 @@ combination of these streams.")
(url "https://github.com/QuantStack/xsimd")
(commit version)))
(sha256
- (base32 "16b9fdvhhsbs93llbzccgpxjdkj8kfvac3wx0b30i306k5f3maq2"))
+ (base32 "1fcy0djwpwvls6yqxqa82s4l4gvwkqkr8i8bibbb3dm0lqvhnw52"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@@ -422,7 +422,7 @@ combination of these streams.")
#:test-target "xtest"))
(native-inputs
(list googletest))
- (home-page "https://github.com/QuantStack/xsimd")
+ (home-page "https://github.com/xtensor-stack/xsimd")
(synopsis "C++ wrappers for SIMD intrinsics and math implementations")
(description
"xsimd provides a unified means for using @acronym{SIMD, single instruction
@@ -456,12 +456,12 @@ operating on batches.")
library for SIMD (Single Instruction, Multiple Data) with runtime dispatch.")
(license license:asl2.0)))
-(define-public xsmimd-benchmark
+(define-public xsimd-benchmark
(package
(inherit xsimd)
(name "xsimd-benchmark")
(arguments
- `(#:configure-flags (list "-DBUILD_BENCHMARK=ON")
+ `(#:configure-flags (list "-DBUILD_BENCHMARK=ON" "-DBUILD_EXAMPLES=ON")
#:tests? #f
#:phases (modify-phases %standard-phases
(add-after 'unpack 'remove-march=native
@@ -470,9 +470,11 @@ library for SIMD (Single Instruction, Multiple Data) with runtime dispatch.")
(("-march=native") ""))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
- ;; Install nothing but the executable.
+ ;; Install nothing but the executables.
(let ((out (assoc-ref outputs "out")))
(install-file "benchmark/benchmark_xsimd"
+ (string-append out "/bin"))
+ (install-file "examples/mandelbrot"
(string-append out "/bin"))))))))
(synopsis "Benchmark of the xsimd library")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 3d90dc2caa..5cdb37075e 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -971,6 +971,28 @@ size and can be easily tested locally before being sent to a remote.")
the system clipboards.")
(license license:gpl3)))
+(define-public r-clvalid
+ (package
+ (name "r-clvalid")
+ (version "0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "clValid" version))
+ (sha256
+ (base32
+ "18aiyjhnh5mfdxbzns4cy0r8bymfikhwkybpn4g04qhli5ls8z83"))))
+ (properties `((upstream-name . "clValid")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-class r-cluster))
+ (home-page "https://cran.r-project.org/package=clValid")
+ (synopsis "Validation of clustering results")
+ (description
+ "Statistical and biological validation of clustering results. This
+package implements Dunn Index, Silhouette, Connectivity, Stability, BHI and
+BSI. Further information can be found in Brock, G et al. (2008) <doi:
+10.18637/jss.v025.i04>.")
+ (license license:lgpl3)))
+
(define-public r-dlm
(package
(name "r-dlm")
@@ -6819,6 +6841,30 @@ Rscript front-end and facilitates turning an R script into an executable
script.")
(license license:gpl3+)))
+(define-public r-aricode
+ (package
+ (name "r-aricode")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "aricode" version))
+ (sha256
+ (base32
+ "0772l9gyrih48l1kymih0mb7szjqqnwcm4lzj0yzp4cs8l2mdf4f"))))
+ (properties `((upstream-name . "aricode")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-matrix r-rcpp))
+ (home-page "https://github.com/jchiquet/aricode")
+ (synopsis "Efficient computations of standard clustering comparison measures")
+ (description
+ "This package implements an efficient O(n) algorithm based on
+bucket-sorting for fast computation of standard clustering comparison
+measures. Available measures include @dfn{adjusted Rand index} (ARI),
+@dfn{normalized information distance} (NID), @dfn{normalized mutual
+information} (NMI), @dfn{adjusted mutual information} (AMI), @dfn{normalized
+variation information} (NVI) and entropy.")
+ (license license:gpl3+)))
+
(define-public r-debugme
(package
(name "r-debugme")
@@ -7974,6 +8020,29 @@ sample Robust Rank-Order Distributional Test.")
exponential, logarithm, square root, and related quantities.")
(license license:gpl2+)))
+(define-public r-exposition
+ (package
+ (name "r-exposition")
+ (version "2.8.23")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "ExPosition" version))
+ (sha256
+ (base32
+ "0x9400ggmgrnaish0cfgnyvw549g4ibfv9aj6vzq7j68n58vq405"))))
+ (properties `((upstream-name . "ExPosition")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-prettygraphs))
+ (home-page "https://cran.r-project.org/package=ExPosition")
+ (synopsis "Exploratory analysis with the singular value decomposition")
+ (description
+ "This package provides a variety of descriptive multivariate analyses
+with the singular value decomposition, such as principal components analysis,
+correspondence analysis, and multidimensional scaling. See An ExPosition of
+the Singular Value Decomposition in R (Beaton et al 2014)
+<doi:10.1016/j.csda.2013.11.006>.")
+ (license license:gpl2)))
+
(define-public r-complexplus
(package
(name "r-complexplus")
@@ -9064,6 +9133,30 @@ and rows. The fst format allows for random access of stored data and
compression with the LZ4 and ZSTD compressors.")
(license license:agpl3)))
+(define-public r-snftool
+ (package
+ (name "r-snftool")
+ (version "2.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "SNFtool" version))
+ (sha256
+ (base32
+ "05hz230aq5wbzhknxzr4iqv3nqjhbpf66n6bp1rc5h2jgz2yfbwq"))))
+ (properties `((upstream-name . "SNFtool")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-alluvial r-exposition))
+ (home-page "https://cran.r-project.org/package=SNFtool")
+ (synopsis "Similarity network fusion")
+ (description
+ "Similarity Network Fusion takes multiple views of a network and fuses
+them together to construct an overall status matrix. The input to our
+algorithm can be feature vectors, pairwise distances, or pairwise
+similarities. The learned status matrix can then be used for retrieval,
+clustering, and classification.")
+ ;; Any version of the GPL
+ (license license:gpl3+)))
+
(define-public r-snowfall
(package
(name "r-snowfall")
@@ -10350,6 +10443,26 @@ from the @code{stats} package, as well as numerous other model classes from
other add-on packages.")
(license license:expat)))
+(define-public r-prettygraphs
+ (package
+ (name "r-prettygraphs")
+ (version "2.1.6")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "prettyGraphs" version))
+ (sha256
+ (base32
+ "0yjpwxdy9mkj2k33zvd5klyv4ava46i19yls87n0bvf79y90ikpy"))))
+ (properties `((upstream-name . "prettyGraphs")))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/package=prettyGraphs")
+ (synopsis "Publication-quality graphics")
+ (description
+ "This package provides simple and crisp publication-quality graphics for
+the ExPosition family of packages. See An ExPosition of the Singular Value
+Decomposition in R (Beaton et al 2014) <doi:10.1016/j.csda.2013.11.006>.")
+ (license license:gpl2)))
+
(define-public r-insight
(package
(name "r-insight")
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index f0414602bc..a8551c8f9f 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -3582,3 +3582,9 @@ the platform-specific getters provided by winit, or another library.")
(arguments
`(#:cargo-development-inputs
(("rust-resize" ,rust-resize-0.3))))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 316e427522..cfa5de9f2a 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -2232,3 +2232,9 @@ library.")
(synopsis "Rust binding for webkit-gtk library")
(description "This crate provides Rust binding for webkit-gtk library.")
(license license:expat)))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 3de9ddbf22..d3b1f179b6 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -492,7 +492,7 @@ device-specific programs to convert and print many types of files.")
(native-inputs
(list intltool pkg-config `(,glib "bin")))
(inputs
- (list glib polkit cups-minimal))
+ (list glib polkit-duktape cups-minimal))
(home-page "https://www.freedesktop.org/wiki/Software/cups-pk-helper/")
(synopsis "PolicyKit helper to configure CUPS with fine-grained privileges")
(description
diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm
index 413da49ece..3d89210956 100644
--- a/gnu/packages/dezyne.scm
+++ b/gnu/packages/dezyne.scm
@@ -31,14 +31,14 @@
(define-public dezyne
(package
(name "dezyne")
- (version "2.16.0")
+ (version "2.16.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://dezyne.org/download/dezyne/"
name "-" version ".tar.gz"))
(sha256
- (base32 "1x14jpv89dmrldar9g8pighbm68pvm4fvxz81mhjkimgf7kb4hbd"))))
+ (base32 "093kcgvmr1zyrfi02y0vzbfl4llrvlvjxjp9iczpdv34lasqp621"))))
(inputs (list bash-minimal
guile-3.0-latest
guile-json-4
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 1a9c946223..5aff012adb 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5045,18 +5045,20 @@ mode, which displays information about Elasticsearch clusters.")
(license license:gpl3+)))
(define-public emacs-expand-region
- (package
+ (let ((commit "c5c4362741deebb0985a8a29f9b8b0e25160764a")
+ (revision "1"))
+ (package
(name "emacs-expand-region")
- (version "0.11.0")
+ (version (git-version "0.11.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/magnars/expand-region.el")
- (commit version)))
+ (commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35"))))
+ (base32 "17h58v5mnggbrwrp61cwkqx8hzazkdqyz9p6s1hl9g2hys7zkb00"))))
(build-system emacs-build-system)
(home-page "https://github.com/magnars/expand-region.el")
(synopsis "Increase selected region by semantic units")
@@ -5064,7 +5066,7 @@ mode, which displays information about Elasticsearch clusters.")
"Expand region increases the selected region by semantic units. Just
keep pressing the key until it selects what you want. There's also
@code{er/contract-region} if you expand too far.")
- (license license:gpl3+)))
+ (license license:gpl3+))))
(define-public emacs-explain-pause-mode
(let ((commit "2356c8c3639cbeeb9751744dbe737267849b4b51")
@@ -13326,7 +13328,6 @@ passive voice.")
#:test-command '("make" "test-dirty")
#:phases
(modify-phases %standard-phases
- (delete 'build)
(add-before 'check 'make
(lambda _
(invoke "make" (string-append "ORGVERSION=" ,version))))
@@ -13399,23 +13400,24 @@ compatible with the Org stable version.")
(license license:gpl3+)))
(define-public emacs-org-contacts
- ;;; XXX: Upstream made no release yet.
- (let ((commit "3d2f39f62aefb0a32d10607703e8b1d4f43821fa")
- (revision "0"))
+ ;; XXX: Upstream does not tag version bumps. Commit below matches latest
+ ;; version bump.
+ (let ((commit "217ba04c9d638067a6ccb0829cf1885f54c1d568"))
(package
(name "emacs-org-contacts")
- (version (git-version "0" revision commit))
+ (version "1.1")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/stardiviner/org-contacts.el")
+ (url "https://repo.or.cz/org-contacts")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "0a654406w8zd1hbp8ckc975jhl9mi14xzqizzwiki625dymiw5g5"))))
+ (base32 "0f0vjdvx0hffj2xvyrya8yfl77djmzmpxdxsx58ym4lmdvwyb6x3"))))
(build-system emacs-build-system)
- (home-page "https://github.com/stardiviner/org-contacts.el")
+ (propagated-inputs (list emacs-org))
+ (home-page "https://repo.or.cz/org-contacts")
(synopsis "Contacts management system for Org mode")
(description "Manage your contacts from Org mode. You can auto
complete email addresses, export contacts to a vCard file, put birthdays
@@ -14159,6 +14161,34 @@ automatically using existing List-ID headers in your mu database. Just press
automatically discovered and presented in recency order.")
(license license:gpl3+))))
+(define-public emacs-mentor
+ (package
+ (name "emacs-mentor")
+ (version "0.3.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://elpa.nongnu.org/nongnu/mentor-"
+ version ".tar"))
+ (sha256
+ (base32
+ "01zrvfk2njzyzjzkvp5hv5cjl1k1qjrila1ab4bv26gf6bkq5xh3"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ (list emacs-async emacs-xml-rpc))
+ (home-page "https://elpa.nongnu.org/nongnu/mentor.html")
+ (synopsis "Emacs front-end for the rTorrent bittorrent client")
+ (description
+ "Mentor is a GNU Emacs frontend for the rTorrent bittorrent client.
+
+By default, it will start and run rTorrent from within Emacs but can also be
+configured to use an external rTorrent instance over XML-RPC.
+
+This project aims to provide a feature complete and customizable interface,
+that will feel familiar to Emacs users. Key bindings are chosen to be as
+close to the vanilla rTorrent curses interface as possible.")
+ (license license:gpl3+)))
+
(define-public emacs-message-view-patch
(let ((commit "40bc2e554fc1d0b6f0c403192c0a3ceaa019a78d")
(revision "2"))
@@ -15814,8 +15844,8 @@ lines, and @code{gc} to comment out the target of a motion.")
;; Tests for emacs-ansi have a circular dependency with ert-runner, and
;; therefore cannot be run
(define-public emacs-ansi
- (let ((commit "a41d5cc719297515d85bb5256980cd1204a71b88")
- (revision "1"))
+ (let ((commit "2367fba7b3b2340364a30cd6de7f3eb6bb9898a3")
+ (revision "2"))
(package
(name "emacs-ansi")
(version (git-version "0.4.1" revision commit))
@@ -15827,10 +15857,8 @@ lines, and @code{gc} to comment out the target of a motion.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "051v8dmji90chwbsyqsqry7h35mksal2j6rgw1kpmjsni86d79y1"))))
+ (base32 "1n7h6l4icm6lks3zpvd83j1fzrnspw19rmz7c96vy7pdh1y4v3p3"))))
(build-system emacs-build-system)
- (propagated-inputs
- (list emacs-dash emacs-s))
(home-page "https://github.com/rejeep/ansi.el")
(synopsis "Convert strings to ANSI")
(description "@code{emacs-ansi} defines functions that turns simple
@@ -16544,33 +16572,31 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
(license license:gpl3+)))
(define-public emacs-ement
- (let ((commit "02015eacf682b53baaddf26c8a4046e6ff84d4e8")
- (revision "3"))
- (package
- (name "emacs-ement")
- (version (git-version "0.1-pre" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/alphapapa/ement.el")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0xnhhzl1si09l7lgh5smgpmxgbkzi8p68dykdgsawqa960w6n1ks"))))
- (build-system emacs-build-system)
- (arguments
- `(#:emacs ,emacs)) ;need libxml support
- (propagated-inputs
- (list emacs-plz
- emacs-svg-lib
- emacs-taxy
- emacs-taxy-magit-section
- emacs-ts))
- (home-page "https://github.com/alphapapa/ement.el")
- (synopsis "Matrix client for Emacs")
- (description "Ement.el is a Matrix client for Emacs.")
- (license license:gpl3+))))
+ (package
+ (name "emacs-ement")
+ (version "0.1.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alphapapa/ement.el")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "075mwlc616rr86zgli36n6r8w09c5cvlk43by0f1xzla5rmiza8r"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:emacs ,emacs)) ;need libxml support
+ (propagated-inputs
+ (list emacs-plz
+ emacs-svg-lib
+ emacs-taxy
+ emacs-taxy-magit-section
+ emacs-ts))
+ (home-page "https://github.com/alphapapa/ement.el")
+ (synopsis "Matrix client for Emacs")
+ (description "Ement.el is a Matrix client for Emacs.")
+ (license license:gpl3+)))
(define-public emacs-rpm-spec-mode
(let ((commit "c1c38050c48ea330c7cea632b8785d66daeefb2b")
@@ -17634,7 +17660,7 @@ languages while remaining inside the primary Org buffer.")
(define-public eless
(package
(name "eless")
- (version "0.6")
+ (version "0.7")
(source
(origin
(method git-fetch)
@@ -17643,7 +17669,7 @@ languages while remaining inside the primary Org buffer.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1xif339wsc79hsab3l1nnwvy20jg7s1r4akfj4qqi6qxizfhmb52"))))
+ (base32 "01gpzg35v972ik4bimcyhqabjca6sjj41kw2i15xj1k33p4sjqpf"))))
(build-system copy-build-system)
(inputs
(list bash emacs))
@@ -17925,7 +17951,9 @@ formatting rules for that language.")
(file-name (git-file-name name version))
(sha256
(base32
- "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))))
+ "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))
+ (patches
+ (search-patches "emacs-kv-fix-tests.patch"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@@ -25153,7 +25181,7 @@ according to their use.")
(define-public emacs-detached
(package
(name "emacs-detached")
- (version "0.7")
+ (version "0.8.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -25162,22 +25190,17 @@ according to their use.")
(file-name (git-file-name name version))
(sha256
(base32
- "160h60vrpxslw6y290ndc065cc75dab58aq7kjqash94vkifnii2"))))
+ "190sil04wbnnml7i1nv19xn8fpqwng9xngpsxvmfxj3bzn7slid6"))))
(arguments
(list
#:tests? #t
#:test-command #~(list "ert-runner")
#:phases
#~(modify-phases %standard-phases
- (add-before 'install 'install-detached-env
- (lambda _
- (install-file "detached-env" (string-append #$output "/bin"))))
(add-after 'unpack 'configure
(lambda* (#:key inputs #:allow-other-keys)
(make-file-writable "detached.el")
(emacs-substitute-variables "detached.el"
- ("detached-env"
- (string-append #$output "/bin/detached-env"))
("detached-dtach-program"
(search-input-file inputs "/bin/dtach"))
("detached-shell-program"
@@ -25676,7 +25699,7 @@ processes for Emacs.")
(define-public emacs-treemacs
(package
(name "emacs-treemacs")
- (version "2.10")
+ (version "3.0")
(source
(origin
(method git-fetch)
@@ -25685,7 +25708,7 @@ processes for Emacs.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0wf26wkba89rr7j9vsvkp0jfr49560nbvykaxm9hk7zvhkwlm1np"))))
+ (base32 "0l6pbfrkl0v1iyc43vyhchbcfy7cjhinn8pw07aq4ssh6lxil7kp"))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-ace-window
@@ -25700,46 +25723,57 @@ processes for Emacs.")
(inputs
(list python))
(arguments
- `(#:tests? #t
- #:test-command '("make" "-C" "../.." "test")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-makefile
- (lambda _
- (substitute* "Makefile"
- (("@\\$\\(CASK\\) exec ") "")
- ;; Guix does not need to prepare dependencies before testing.
- (("test: prepare") "test:"))))
- (add-after 'fix-makefile 'chdir-elisp
- ;; Elisp directory is not in root of the source.
- (lambda _
- (chdir "src/elisp")))
- (add-before 'install 'patch-paths
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (with-directory-excursion "../.." ;treemacs root
- (chmod "src/elisp/treemacs-core-utils.el" #o644)
- (emacs-substitute-variables "src/elisp/treemacs-core-utils.el"
- ("treemacs-dir"
- (string-append (assoc-ref outputs "out") "/")))
- (chmod "src/elisp/treemacs-icons.el" #o644)
- (substitute* "src/elisp/treemacs-icons.el"
- (("icons/default") "share/emacs-treemacs/images"))
- (chmod "src/elisp/treemacs-customization.el" #o644)
- (emacs-substitute-variables "src/elisp/treemacs-customization.el"
- ("treemacs-python-executable"
- (search-input-file inputs "/bin/python3")))
- (chmod "src/elisp/treemacs-async.el" #o644)
- (substitute* "src/elisp/treemacs-async.el"
- (("src/scripts") (string-append "share/" ,name "/scripts"))))))
- (add-after 'install 'install-data
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (with-directory-excursion "../.." ;treemacs root
- (copy-recursively "icons/default"
- (string-append out "/share/" ,name "/images"))
- (copy-recursively
- "src/scripts"
- (string-append out "/share/" ,name "/scripts")))))))))
+ (list
+ #:tests? #t
+ #:test-command #~(list "make" "-C" "../.." "test")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-makefile
+ (lambda _
+ (substitute* "Makefile"
+ (("@\\$\\(CASK\\) exec ") "")
+ ;; Guix does not need to prepare dependencies before testing.
+ (("test: prepare") "test:"))))
+ (add-after 'fix-makefile 'chdir-elisp
+ ;; Elisp directory is not in root of the source.
+ (lambda _
+ (chdir "src/elisp")))
+ (add-before 'check 'delete-failing-tests
+ ;; FIXME: 4 tests out of 254 are failing.
+ (lambda _
+ (emacs-batch-edit-file "../../test/treemacs-test.el"
+ '(progn
+ (goto-char (point-min))
+ (re-search-forward "describe \"treemacs--parent\"")
+ (beginning-of-line)
+ (kill-sexp)
+ (basic-save-buffer)))))
+ (add-before 'install 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (make-file-writable "treemacs-core-utils.el")
+ (emacs-substitute-variables "treemacs-core-utils.el"
+ ("treemacs-dir" (string-append #$output "/")))
+ (make-file-writable "treemacs-icons.el")
+ (substitute* "treemacs-icons.el"
+ (("icons/default")
+ (string-append (elpa-directory #$output) "/icons/default")))
+ (make-file-writable "treemacs-customization.el")
+ (emacs-substitute-variables "treemacs-customization.el"
+ ("treemacs-python-executable"
+ (search-input-file inputs "/bin/python3")))
+ (make-file-writable "treemacs-async.el")
+ (substitute* "treemacs-async.el"
+ (("src/scripts")
+ (string-append (elpa-directory #$output) "/scripts")))))
+ (add-after 'install 'install-data
+ (lambda _
+ (with-directory-excursion "../.." ;treemacs root
+ (copy-recursively
+ "icons/default"
+ (string-append (elpa-directory #$output) "/icons/default"))
+ (copy-recursively
+ "src/scripts"
+ (string-append (elpa-directory #$output) "/scripts"))))))))
(home-page "https://github.com/Alexander-Miller/treemacs")
(synopsis "Emacs tree style file explorer")
(description
@@ -25761,7 +25795,8 @@ utilities.")
("emacs-magit" ,emacs-magit)
("emacs-projectile" ,emacs-projectile)
("emacs-perspective" ,emacs-perspective)
- ("emacs-persp-mode" ,emacs-persp-mode)))
+ ("emacs-persp-mode" ,emacs-persp-mode)
+ ("mu" ,mu)))
(arguments
(substitute-keyword-arguments
(package-arguments emacs-treemacs)
@@ -25773,9 +25808,9 @@ utilities.")
(define-public emacs-libyaml
;; Upstream made no release so far.
- (let ((version "0")
+ (let ((version "0.1")
(revision "1")
- (commit "703e0d448c7ee24e25b513a3c65980c80e166805"))
+ (commit "961e0d8b9ef47464c049e07be7fcefd3903f8cbc"))
(package
(name "emacs-libyaml")
(version (git-version version revision commit))
@@ -25787,34 +25822,33 @@ utilities.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "08l7pm9v50ykd3fkbm0bh2kcd57cadbc5i9r6rj51vd32w3pl2yl"))))
+ (base32 "1c85583r47yjbpzbjgjzrwzqdlmy229xx9az2r18smcyd9da92c3"))))
(build-system emacs-build-system)
(arguments
- `(#:tests? #f ;no test
- #:modules ((guix build emacs-build-system)
+ (list
+ #:tests? #f ;no test
+ #:modules '((guix build emacs-build-system)
(guix build emacs-utils)
(guix build utils))
- #:imported-modules (,@%emacs-build-system-modules
+ #:imported-modules `(,@%emacs-build-system-modules
(guix build gnu-build-system))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'substitute-libyaml-core-path
- (lambda* (#:key outputs #:allow-other-keys)
- (chmod "libyaml.el" #o644)
- (substitute* "libyaml.el"
- (("^\\(require 'libyaml-core\\)")
- (string-append "(module-load \"" (assoc-ref outputs "out")
- "/lib/libyaml-core.so\")")))
- #t))
- (add-after 'check 'make
- ;; Run make.
- (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
- ;; Compile the shared object file.
- (apply invoke "make" "all" "CPPFLAGS=" make-flags)
- ;; Move the file into /lib.
- (install-file "libyaml-core.so"
- (string-append (assoc-ref outputs "out") "/lib"))
- #t)))))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'substitute-libyaml-core-path
+ (lambda _
+ (make-file-writable "libyaml.el")
+ (substitute* "libyaml.el"
+ (("^\\(require 'libyaml-core\\)")
+ (string-append "(module-load \"" #$output
+ "/lib/libyaml-core.so\")")))))
+ (add-after 'check 'make
+ ;; Run make.
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ ;; Compile the shared object file.
+ (apply invoke "make" "all" "CPPFLAGS=" make-flags)
+ ;; Move the file into /lib.
+ (install-file "libyaml-core.so"
+ (string-append #$output "/lib")))))))
(native-inputs (list libyaml))
(home-page "https://github.com/syohex/emacs-libyaml")
(synopsis "Libyaml bindings for Emacs")
@@ -29722,6 +29756,30 @@ It also provides original Helm commands: @command{helm-cider-spec},
data format @code{edn}. See @url{https://github.com/edn-format/edn}.")
(license license:gpl3+))))
+(define-public emacs-ednc
+ (let ((commit "940a4adbbeb3b6b1a72270a814d52770dd89a997")
+ (revision "1"))
+ (package
+ (name "emacs-ednc")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sinic/ednc")
+ (commit commit)))
+ (sha256
+ (base32 "1gsx2qgv5xm9r0i0axd4hf31g2rq2m4a1hvnif48g4xb0llss73c"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/sinic/ednc")
+ (synopsis "Emacs Desktop Notification Center")
+ (description
+ "The Emacs Desktop Notification Center (EDNC) is an Emacs package written
+in pure Lisp that implements a Desktop Notifications service according to the
+freedesktop.org specification. EDNC aspires to be a small, but flexible
+drop-in replacement of standalone daemons like Dunst.")
+ (license license:gpl3+))))
+
(define-public emacs-helm-clojuredocs
(let ((commit "5a7f0f2cb401be0b09e73262a1c18265ab9a3cea"))
(package
@@ -31704,7 +31762,7 @@ and preferred services can easily be configured.")
(define-public emacs-vertico
(package
(name "emacs-vertico")
- (version "0.26")
+ (version "0.27")
(source
(origin
(method git-fetch)
@@ -31713,7 +31771,7 @@ and preferred services can easily be configured.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "16bv4pfc3k37dqyj1va3cb24db36pn8hsazk3ak4xhrgf2q5l548"))))
+ (base32 "17ip4v0hkv9q2fsnpja24jnf5d5zn4g91553n2s0l5c6gwwpilkp"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@@ -31930,7 +31988,7 @@ for detecting and improve non-idiomatic Clojure source code.")
(define-public emacs-mint-mode
(package
(name "emacs-mint-mode")
- (version "1.0.2")
+ (version "1.0.3")
(source
(origin
(method git-fetch)
@@ -31939,7 +31997,7 @@ for detecting and improve non-idiomatic Clojure source code.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1v8mp1k24lzvc0mh9l4k3fwzr4sr87f5p9ahpy7263pcbvcy11vl"))))
+ (base32 "19szk2dhsa0771kbg1ywp0zz8j6akysvwmmrx2bihq8h5j4y23pg"))))
(build-system emacs-build-system)
(arguments '(#:include '("\\.el$" "\\.txt$")))
(home-page "https://github.com/creatorrr/emacs-mint-mode")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ffd1eda08e..ef6e9ae1f1 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -45,6 +45,7 @@
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
@@ -55,6 +56,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
@@ -81,6 +83,13 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define (%emacs-modules build-system)
+ (let ((which (build-system-name build-system)))
+ `((guix build ,(symbol-append which '-build-system))
+ (guix build utils)
+ (srfi srfi-1)
+ (ice-9 ftw))))
+
(define-public emacs
(package
(name "emacs")
@@ -129,11 +138,33 @@
(arguments
(list
#:tests? #f ; no check target
+ #:modules (%emacs-modules build-system)
#:configure-flags #~(list "--with-modules"
"--with-cairo"
+ "--with-native-compilation"
"--disable-build-details")
+ #:make-flags #~(list "NATIVE_FULL_AOT=1")
#:phases
#~(modify-phases %standard-phases
+ (add-after 'set-paths 'set-libgccjit-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (first-subdirectory/absolute directory)
+ (let ((files (scandir
+ directory
+ (lambda (file)
+ (and (not (member file '("." "..")))
+ (file-is-directory? (string-append
+ directory "/"
+ file)))))))
+ (and (not (null? files))
+ (string-append directory "/" (car files)))))
+ (let* ((libgccjit-libdir
+ (first-subdirectory/absolute ;; version
+ (first-subdirectory/absolute ;; host type
+ (search-input-directory inputs "lib/gcc")))))
+ (setenv "LIBRARY_PATH"
+ (string-append (getenv "LIBRARY_PATH")
+ ":" libgccjit-libdir)))))
(add-after 'unpack 'enable-elogind
(lambda _
(substitute* "configure.ac"
@@ -164,6 +195,20 @@
(("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process)
(format #f "(or ~a (tramp-compat-process-running-p ~s))"
all (string-append "." process "-real"))))))
+ (add-after 'unpack 'patch-compilation-driver
+ (lambda _
+ (substitute* "lisp/emacs-lisp/comp.el"
+ (("\\(defcustom native-comp-driver-options nil")
+ (format
+ #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})"
+ (string-append
+ "-B" #$(this-package-input "binutils") "/bin/")
+ (string-append
+ "-B" #$(this-package-input "glibc") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/gcc/"))))))
(add-before 'configure 'fix-/bin/pwd
(lambda _
;; Use `pwd', not `/bin/pwd'.
@@ -256,6 +301,14 @@
(list gnutls
ncurses
+ ;; To "unshadow" ld-wrapper in native builds
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+
+ ;; For native compilation
+ binutils
+ glibc
+ libgccjit
+
;; Required for "core" functionality, such as dired and compression.
coreutils
gzip
@@ -308,6 +361,9 @@
(variable "EMACSLOADPATH")
(files '("share/emacs/site-lisp")))
(search-path-specification
+ (variable "EMACSNATIVELOADPATH")
+ (files '("lib/emacs/native-site-lisp")))
+ (search-path-specification
(variable "INFOPATH")
(files '("share/info")))))
@@ -378,11 +434,14 @@ GTK and also enables xwidgets.")))
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(list "--with-gnutls=no" "--disable-build-details"))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
(delete 'strip-double-wrap)))))
- (inputs (list ncurses coreutils gzip))
+ (inputs (list ncurses coreutils gzip
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+ binutils glibc libgccjit zlib))
(native-inputs (list autoconf pkg-config))))
(define-public emacs-xwidgets
@@ -395,6 +454,7 @@ editor (with xwidgets support)")
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-xwidgets" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -419,6 +479,7 @@ editor (console only)")
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(delete "--with-cairo" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -437,6 +498,7 @@ editor (without an X toolkit)" )
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-x-toolkit=no" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 951bbc8db4..0458ed5f13 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020, 2021, 2022 Simon South <simon@simonsouth.net>
@@ -1330,7 +1330,14 @@ these identified regions.
(file-name (git-file-name name version))
(sha256
(base32
- "1d10qxyghz66zp7iqpm8q8rfv9jz9n609gxmfcav1lssmf1dlyk3"))))
+ "1d10qxyghz66zp7iqpm8q8rfv9jz9n609gxmfcav1lssmf1dlyk3"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make tests compatible with PyYAML 6 and later.
+ '(substitute* '("tests/test_program.py"
+ "tests/test_fuzzing.py")
+ (("yaml\\.load\\(test_file\\.read\\(\\)\\)")
+ "yaml.load(test_file.read(), Loader=yaml.SafeLoader)")))))
(build-system python-build-system)
(propagated-inputs
(list python-pyserial python-pyusb python-tqdm))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index a8b9f1e786..673ea8023b 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2952,7 +2952,15 @@ dynamic calibration of the milling depth.")
(("message\\(STATUS \"Using in-tree mimalloc\"\\)")
"message(STATUS \"Using guix packaged mimalloc\")")
(("add_subdirectory\\(extlib/mimalloc EXCLUDE_FROM_ALL\\)")
- "find_package(mimalloc REQUIRED)")))))))
+ "find_package(mimalloc REQUIRED)"))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/solvespace")
+ ;; For GtkFileChooserDialog.
+ `("GSETTINGS_SCHEMA_DIR" =
+ (,(string-append (assoc-ref inputs "gtk+")
+ "/share/glib-2.0/schemas")))))))))
(inputs (list cairo
eigen
freetype
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index eae3f76301..4e3b0e05db 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -385,7 +385,7 @@ embedded systems.")
(define-public python-efl
(package
(name "python-efl")
- (version "1.25.0")
+ (version "1.26.0")
(source
(origin
(method url-fetch)
@@ -393,7 +393,7 @@ embedded systems.")
"python/python-efl-" version ".tar.xz"))
(sha256
(base32
- "0bk161xwlz4dlv56r68xwkm8snzfifaxd1j7w2wcyyk4fgvnvq4r"))
+ "0dj6f24n33hkpy0bkdclnzpxhvs8vpaxqaf7hkw0di19pjwrq25h"))
(modules '((guix build utils)))
;; Remove files generated by Cython
(snippet
@@ -404,8 +404,7 @@ embedded systems.")
(when (file-exists? generated-file)
(delete-file generated-file))))
(find-files "efl" "\\.pyx$"))
- (delete-file "efl/eo/efl.eo_api.h")
- #t))))
+ (delete-file "efl/eo/efl.eo_api.h")))))
(build-system python-build-system)
(arguments
'(#:phases
@@ -418,20 +417,18 @@ embedded systems.")
(lambda _
(setenv "CFLAGS"
(string-append "-I" (assoc-ref %build-inputs "python-dbus")
- "/include/dbus-1.0"))
- #t))
+ "/include/dbus-1.0"))))
(add-before 'check 'set-environment
(lambda _
;; Some tests require write access to HOME.
(setenv "HOME" "/tmp")
;; These tests try to connect to the internet.
(delete-file "tests/ecore/test_09_file_download.py")
- (delete-file "tests/ecore/test_11_con.py")
- #t)))))
+ (delete-file "tests/ecore/test_11_con.py"))))))
(native-inputs
(list pkg-config python-cython))
(inputs
- (list efl python-dbus))
+ (list efl python-dbus python-packaging))
(home-page "https://www.enlightenment.org/")
(synopsis "Python bindings for EFL")
(description
diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm
index 81906dac15..0651dda1b0 100644
--- a/gnu/packages/esolangs.scm
+++ b/gnu/packages/esolangs.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,6 +30,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
@@ -99,6 +101,24 @@ whenever possible to the extent that the above points are not compromized.
(home-page "http://lolcode.org/")
(license license:gpl3+))))
+(define-public folders
+ (package
+ (name "folders")
+ (version "0.0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "Folders" version))
+ (sha256
+ (base32 "0qh80qx7sjx0zii1hf8fm853d9rcg4rginm6v4gpp0hgn2a4q4gh"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/SinaKhalili/Folders.py")
+ (synopsis "Structural programming language")
+ (description "Folders is a programming language, in which programs
+are encoded as (nested) directories. Note that the switches you pass to
+@command{du} may affect your score when code golfing.")
+ (license license:expat)))
+
(define-public shakespeare-spl
(package
(name "shakespeare-spl")
diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm
index 53680058c0..5741b8d622 100644
--- a/gnu/packages/fcitx.scm
+++ b/gnu/packages/fcitx.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@
#:use-module ((guix licenses) #:select (gpl2+ bsd-3))
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk)
@@ -150,55 +152,55 @@ by the different predictive algorithms.")
(define-public fcitx
(package
(name "fcitx")
- (version "4.2.9.8")
+ (version "4.2.9.9")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.fcitx-im.org/fcitx/"
+ (uri (string-append "https://download.fcitx-im.org/fcitx/"
"fcitx-" version "_dict.tar.xz"))
(sha256
(base32
- "1iik80l7g8yk9iwsls6nl9whwgm0sj8i7s6s0bz4c5anl35iaddw"))))
+ "0x5980l7ry34scvfdwc330d9nxv3id9jj9wcl7bvqjkp32gz3aj5"))))
(build-system cmake-build-system)
(outputs '("out" "gtk2" "gtk3"))
(arguments
- `(#:configure-flags
- (list "-DENABLE_TEST=ON"
- (string-append "-DXKB_RULES_XML_FILE="
- (assoc-ref %build-inputs "xkeyboard-config")
- "/share/X11/xkb/rules/evdev.xml")
- "-DENABLE_GTK2_IM_MODULE=ON"
- "-DENABLE_GTK3_IM_MODULE=ON"
- (string-append "-DGTK2_IM_MODULEDIR="
- (assoc-ref %outputs "gtk2")
- "/lib/gtk-2.0/2.10.0/immodules")
- (string-append "-DGTK3_IM_MODULEDIR="
- (assoc-ref %outputs "gtk3")
- "/lib/gtk-3.0/3.0.0/immodules")
- ;; XXX: Enable GObject Introspection and Qt4 support.
- "-DENABLE_GIR=OFF"
- "-DENABLE_QT=OFF"
- "-DENABLE_QT_IM_MODULE=OFF")))
+ (list
+ #:configure-flags
+ #~(list "-DENABLE_TEST=ON"
+ (string-append "-DXKB_RULES_XML_FILE="
+ (search-input-file
+ %build-inputs "share/X11/xkb/rules/evdev.xml"))
+ "-DENABLE_GTK2_IM_MODULE=ON"
+ "-DENABLE_GTK3_IM_MODULE=ON"
+ (string-append "-DGTK2_IM_MODULEDIR="
+ #$output:gtk2
+ "/lib/gtk-2.0/2.10.0/immodules")
+ (string-append "-DGTK3_IM_MODULEDIR="
+ #$output:gtk3
+ "/lib/gtk-3.0/3.0.0/immodules")
+ ;; XXX: Enable GObject Introspection and Qt4 support.
+ "-DENABLE_GIR=OFF"
+ "-DENABLE_QT=OFF"
+ "-DENABLE_QT_IM_MODULE=OFF")))
(native-inputs
- `(("doxygen" ,doxygen)
- ("extra-cmake-modules"
- ;; XXX: We can't simply #:use-module due to a cycle somewhere.
- ,(module-ref
- (resolve-interface '(gnu packages kde-frameworks))
- 'extra-cmake-modules))
- ("glib:bin" ,glib "bin") ; for glib-genmarshal
- ("pkg-config" ,pkg-config)))
+ (list doxygen
+ ;; XXX: We can't simply #:use-module due to a cycle somewhere.
+ (module-ref
+ (resolve-interface '(gnu packages kde-frameworks))
+ 'extra-cmake-modules)
+ `(,glib "bin") ; for glib-genmarshal
+ pkg-config))
(inputs
- `(("dbus" ,dbus)
- ("enchant" ,enchant-1.6)
- ("gettext" ,gettext-minimal)
- ("gtk2" ,gtk+-2)
- ("gtk3" ,gtk+)
- ("icu4c" ,icu4c)
- ("iso-codes" ,iso-codes)
- ("json-c" ,json-c)
- ("libxkbfile" ,libxkbfile)
- ("libxml2" ,libxml2)
- ("xkeyboard-config" ,xkeyboard-config)))
+ (list dbus
+ enchant-1.6
+ gettext-minimal
+ gtk+-2
+ gtk+
+ icu4c
+ iso-codes
+ json-c
+ libxkbfile
+ libxml2
+ xkeyboard-config))
(home-page "https://fcitx-im.org")
(synopsis "Input method framework")
(description
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 849f9aba99..f8bacc2fe8 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1639,7 +1639,7 @@ a client based on Qt. This is a fork of Bitcoin Core.")
(define-public libofx
(package
(name "libofx")
- (version "0.9.15")
+ (version "0.10.7")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1648,14 +1648,15 @@ a client based on Qt. This is a fork of Bitcoin Core.")
(file-name (git-file-name name version))
(sha256
(base32
- "1jx56ma351p8af8dvavygjwf6ipa7qbgq7bpdsymwj27apdnixfy"))))
+ "1k3ygavyb9b3f1ra62dsa46iiia0a1588yn3zy7bh7w4vfcrbd6d"))))
(build-system gnu-build-system)
(arguments
- '(#:parallel-build? #f ;fails with -j64
- #:configure-flags
- (list (string-append "--with-opensp-includes="
- (assoc-ref %build-inputs "opensp")
- "/include/OpenSP"))))
+ (list
+ #:parallel-build? #f ;fails with -j64
+ #:configure-flags
+ #~(list (string-append "--with-opensp-includes="
+ (search-input-directory %build-inputs
+ "include/OpenSP")))))
(native-inputs
(list autoconf
automake
@@ -1664,9 +1665,9 @@ a client based on Qt. This is a fork of Bitcoin Core.")
libtool
pkg-config))
(inputs
- `(("curl" ,curl)
- ("libxml++-2" ,libxml++-2)
- ("opensp" ,opensp)))
+ (list curl
+ libxml++-2
+ opensp))
(home-page "http://libofx.sourceforge.net/")
(synopsis "Library supporting the Open Financial Exchange format")
(description
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 7a23aa8552..edcd888f73 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -42,7 +42,7 @@
;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
-;;; Copyright © 2021 Taiju HIGASHI <higashi@taiju.info>
+;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2022 Kitzman <kitzman@disroot.org>
;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
@@ -1993,7 +1993,7 @@ formatting.")
(define-public font-plemoljp
(package
(name "font-plemoljp")
- (version "1.2.2")
+ (version "1.2.7")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2001,7 +2001,7 @@ formatting.")
"v" version "/PlemolJP_v" version ".zip"))
(sha256
(base32
- "03cwzkqg09c87lmsx9xfzdrlgjml93bhhp1dqq3qkpdfww30wkaw"))))
+ "0pkkys5kl5s79shd1jmwfyk469ih8cymqb4vjwdadj52kzq4m9z6"))))
(build-system font-build-system)
(home-page "https://github.com/yuru7/PlemolJP")
(synopsis "Plex Mono Language JP")
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index da324a6a9d..257c7d4e37 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -9,11 +9,10 @@
;;; Copyright © 2017, 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
;;;
@@ -145,7 +144,15 @@ them as it goes.")
(method url-fetch)
(uri (pypi-uri "afdko" version))
(sha256
- (base32 "171r9f7n8fgz37dkcgpzj508lxfafcyzzx43ps12j1z2nk1sk905"))))
+ (base32 "171r9f7n8fgz37dkcgpzj508lxfafcyzzx43ps12j1z2nk1sk905"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ (with-directory-excursion "c/makeotf/lib/hotconv"
+ ;; Delete ANTLR-generated code.
+ (for-each delete-file
+ (find-files
+ "." "Feat(Parser|Lexer).*\\.(h|cpp|interp|tokens)$")))))))
(build-system python-build-system)
(arguments
(list
@@ -173,6 +180,17 @@ them as it goes.")
(substitute* "c/makeotf/lib/hotconv/CMakeLists.txt"
(("antlr4_static")
"antlr4-runtime"))))
+ (add-after 'unpack 'regenerate-hotconv-grammar
+ (lambda _
+ (let ((antlr-version #$(package-version
+ (this-package-native-input "antlr4"))))
+ (with-directory-excursion "c/makeotf/lib/hotconv"
+ (substitute* "BuildGrammar.py"
+ (("antlr_version = .*")
+ (string-append "antlr_version = \""
+ antlr-version
+ "\"")))
+ (invoke "python" "BuildGrammar.py")))))
;; The test suite expects the commands to be Python rather than
;; shell scripts, so move the wrap phase after the tests.
(delete 'wrap)
@@ -195,7 +213,12 @@ them as it goes.")
`("PATH" prefix (,bindir))))
commands)))))))
(native-inputs
- (list ninja python-pytest python-scikit-build python-setuptools-scm
+ (list antlr4
+ openjdk ;required by antlr4
+ ninja
+ python-pytest
+ python-scikit-build
+ python-setuptools-scm
python-wheel))
(inputs (list java-antlr4-runtime-cpp `(,util-linux "lib")))
(propagated-inputs
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 42fce62489..97d8bc3dbc 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -939,6 +939,48 @@ backends, PackageKit can perform these tasks using the appropriate package
manager for the current system.")
(license license:gpl2+)))
+(define-public python-libevdev
+ (package
+ (name "python-libevdev")
+ (version "0.11")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "libevdev" version))
+ (sha256
+ (base32
+ "03snix86j0angq0lydp29f8833clxq8h0x4spmh8lj7j9mm01jp9"))))
+ (build-system python-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-dlopen-calls
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "libevdev/_clib.py"
+ (("libevdev.so.2")
+ (search-input-file inputs "lib/libevdev.so.2")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vv" "test")))))))
+ (native-inputs (list python-pytest))
+ (inputs (list libevdev))
+ (home-page "https://gitlab.freedesktop.org/libevdev/python-libevdev")
+ (synopsis "Python wrapper for libevdev")
+ (description "This package provides a Python wrapper around
+@code{libevdev}, taking advantage of @code{libevdev}'s advanced event
+handling. Documentation is available at
+@url{https://python-libevdev.readthedocs.io/en/latest/}.
+@code{libevdev} makes it easy to:
+@itemize
+@item read and parse events from an input device;
+@item create a virtual input device and make it send events;
+@item duplicate an existing device and modify the event stream.
+@end itemize
+For information about libevdev, see:
+@url{https://freedesktop.org/wiki/Software/libevdev/}.")
+ (license license:expat)))
+
(define-public python-pyxdg
(package
(name "python-pyxdg")
@@ -1079,7 +1121,6 @@ protocol either in Wayland core, or some other protocol in wayland-protocols.")
. "https://wayland.freedesktop.org/releases.html")))
(license license:expat)))
-;;; This is just a temporary package that should be deleted
(define-public wayland-protocols-next
(package
(inherit wayland-protocols)
@@ -1513,12 +1554,14 @@ message bus.")
python-dbusmock
python-pygobject))
(inputs
- (list coreutils-minimal
+ (list bash-minimal
+ coreutils-minimal
dbus
elogind
shadow))
(propagated-inputs
- (list polkit)) ; listed in Requires.private
+ ;; accountsservice.pc 'Requires' these:
+ (list glib polkit))
(home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
(synopsis "D-Bus interface for user account query and manipulation")
(description
@@ -1605,18 +1648,17 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
#:configure-flags
#~(list (string-append "--with-udev-base-dir=" #$output "/lib/udev"))))
(native-inputs
- (list gettext-minimal
- `(,glib "bin") ; for glib-mkenums
+ (list dbus
+ gettext-minimal
gobject-introspection
+ `(,glib "bin") ;for glib-mkenums
pkg-config
- vala
- ;; For testing.
- dbus
python
python-dbus
- python-pygobject))
+ python-pygobject
+ vala))
(propagated-inputs
- (list glib)) ; required by mm-glib.pc
+ (list glib)) ;required by mm-glib.pc
(inputs
(list libgudev libmbim libqmi polkit))
(synopsis "Mobile broadband modems manager")
@@ -1728,27 +1770,37 @@ share connections to real-time communication services without conflicting.")
(define-public colord-gtk
(package
(name "colord-gtk")
- (version "0.1.26")
+ (version "0.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.freedesktop.org/software/colord"
"/releases/" name "-" version ".tar.xz"))
(sha256
(base32
- "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18"))))
- (build-system gnu-build-system)
- (arguments '(#:tests? #f)) ; require the colord system service
+ "1l61ydb0zv2ffilwpapgz5mm3bznr28zl16xqbxnz6kdsrb6cimr"))))
+ (build-system meson-build-system)
+ (arguments '(#:tests? #f ;require the colord system service
+ ;; Building documentation fails with: "Cannot build man pages
+ ;; without docbook-xsl-ns".
+ #:configure-flags (list "-Ddocs=false" "-Dman=false")))
(native-inputs
- (list gobject-introspection intltool pkg-config vala))
+ (list gettext-minimal
+ gobject-introspection
+ pkg-config
+ vala))
+ (inputs
+ ;; TODO: remove pango-next after it's the default.
+ (list gtk+
+ pango-next))
(propagated-inputs
;; colord-gtk.pc refers to all these.
- (list colord gtk+))
+ (list colord gtk))
(synopsis "GTK integration for libcolord")
(home-page "https://www.freedesktop.org/software/colord/")
(description
- "This is a GTK+ convenience library for interacting with colord. It is
-useful for both applications which need colour management and applications that
-wish to perform colour calibration.")
+ "This is a GTK convenience library for interacting with colord. It is
+useful for both applications which need colour management and applications
+that wish to perform colour calibration.")
(license license:lgpl2.1+)))
(define-public libfprint
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 010a926779..f42e380436 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1786,17 +1786,20 @@ destroying an ancient book using a special wand.")
;; Don't create 'icon-theme.cache'.
(lambda _
(substitute* "meson_post_install.py"
- (("gtk-update-icon-cache") "true"))
- #t)))))
+ (("gtk-update-icon-cache") "true")))))))
(inputs
- (list gtk+ clutter clutter-gtk libgee libgnome-games-support))
+ (list gtk+
+ clutter
+ clutter-gtk
+ libgee
+ libgnome-games-support-1))
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
- ("itstool" ,itstool)
- ("libxml2" ,libxml2)
- ("pkg-config" ,pkg-config)
- ("vala" ,vala)))
+ (list gettext-minimal
+ `(,glib "bin") ; for desktop-file-validate and appstream-util
+ itstool
+ libxml2
+ pkg-config
+ vala))
(home-page "https://wiki.gnome.org/Apps/2048")
(synopsis "Move the tiles until you obtain the 2048 tile")
(description "GNOME 2048 provides a 2D grid for playing 2048, a
@@ -6610,7 +6613,7 @@ fish. The whole game is accompanied by quiet, comforting music.")
(define-public crawl
(package
(name "crawl")
- (version "0.29.0")
+ (version "0.29.1")
(source
(origin
(method git-fetch)
@@ -6619,7 +6622,7 @@ fish. The whole game is accompanied by quiet, comforting music.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0cx67ln5qr4bawidi48ss63wflx7x22901da683c9wvy6m41vks8"))
+ (base32 "17bl8hdv2z3mpdfmd5gnwg3r1p9dqjbisiql24pxs1d33qcw0h7x"))
(patches (search-patches "crawl-upgrade-saves.patch"))))
(build-system gnu-build-system)
(inputs
@@ -9308,60 +9311,56 @@ play with up to four players simultaneously. It has network support.")
(define-public hedgewars
(package
(name "hedgewars")
- (version "1.0.0")
+ (version "1.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.hedgewars.org/download/releases/"
"hedgewars-src-" version ".tar.bz2"))
- (patches (search-patches "hedgewars-network-bsd.patch"))
(sha256
(base32
- "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
+ "04pjpkjhpy720n803gv35iygmjdvsrmw13mih4ympjnqbgjfa7r0"))))
(build-system cmake-build-system)
(arguments
- ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
- ;; Compiler, which we haven't packaged yet. With the flag below, we use
- ;; a Pascal to C translator and Clang instead.
- `(#:configure-flags (list "-DBUILD_ENGINE_C=ON"
- "-Dhaskell_flags=-dynamic;-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'fix-sources
- (lambda _
- ;; Fix a missing 'include'.
- (substitute* "QTfrontend/ui/page/pagegamestats.cpp"
- (("#include <QSizePolicy>")
- "#include <QSizePolicy>\n#include <QPainterPath>"))))
- (replace 'check
- (lambda _ (invoke "ctest")))
- (add-after 'install 'install-icon
- (lambda _
- ;; Install icon for the desktop file.
- (let* ((out (assoc-ref %outputs "out"))
- (icons (string-append out "/share/icons/hicolor/512x512/apps")))
- (with-directory-excursion (string-append "../hedgewars-src-" ,version)
- (install-file "misc/hedgewars.png" icons)))
- #t)))))
+ (list
+ ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
+ ;; Compiler, which we haven't packaged yet. With the flag below, we use
+ ;; a Pascal to C translator and Clang instead.
+ #:configure-flags #~(list "-DBUILD_ENGINE_C=ON"
+ "-Dhaskell_flags=-dynamic;-fPIC")
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "ctest"))))
+ (add-after 'install 'install-icon
+ (lambda _
+ ;; Install icon for the desktop file.
+ (let ((icons (string-append #$output
+ "/share/icons/hicolor/512x512/apps")))
+ (with-directory-excursion
+ (string-append "../hedgewars-src-" #$version)
+ (install-file "misc/hedgewars.png" icons))))))))
(inputs
- `(("ffmpeg" ,ffmpeg)
- ("freeglut" ,freeglut)
- ("ghc-entropy" ,ghc-entropy)
- ("ghc-hslogger" ,ghc-hslogger)
- ("ghc-network" ,ghc-network)
- ("ghc-random" ,ghc-random)
- ("ghc-regex-tdfa" ,ghc-regex-tdfa)
- ("ghc-sandi" ,ghc-sandi)
- ("ghc-sha" ,ghc-sha)
- ("ghc-utf8-string" ,ghc-utf8-string)
- ("ghc-vector" ,ghc-vector)
- ("ghc-zlib" ,ghc-zlib)
- ("glew" ,glew)
- ("libpng" ,libpng)
- ("lua" ,lua-5.1)
- ("physfs" ,physfs)
- ("qtbase" ,qtbase-5)
- ("sdl" ,(sdl-union
- (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
+ (list ffmpeg
+ freeglut
+ ghc-entropy
+ ghc-hslogger
+ ghc-network
+ ghc-random
+ ghc-regex-tdfa
+ ghc-sandi
+ ghc-sha
+ ghc-utf8-string
+ ghc-vector
+ ghc-zlib
+ glew
+ libpng
+ lua-5.1
+ physfs
+ qtbase-5
+ (sdl-union
+ (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image))))
(native-inputs
(list clang-9 ghc pkg-config qttools-5))
(home-page "https://hedgewars.org/")
@@ -11169,3 +11168,45 @@ principle of prioritizing the guests' happiness with a well-maintained park.
Should they go unwise, a theme park plunge into chaos with vandalizing guests
and unsafe rides. Which path will you take?")
(license license:gpl2)))
+
+(define-public steam-devices-udev-rules
+ ;; Last release from 2019-04-10
+ (let ((commit "d87ef558408c5e7a1a793d738db4c9dc2cb5f8fa")
+ (revision "0"))
+ (package
+ (name "steam-devices-udev-rules")
+ (version (git-version "1.0.0.61" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ValveSoftware/steam-devices")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1yqigraz9f19018ma5n2pbx7naadh9960lia3z8ayg7vz1fjdl54"))))
+ (build-system copy-build-system)
+ (arguments
+ '(#:install-plan '(("./" "lib/udev/rules.d"
+ #:include-regexp ("rules$")))
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "60-steam-input.rules"
+ (("/bin/sh")
+ (search-input-file inputs "/bin/sh"))
+ (("udevadm")
+ (search-input-file inputs "/bin/udevadm"))))))))
+ (inputs (list eudev))
+ (home-page "https://github.com/ValveSoftware/steam-devices")
+ (synopsis "udev rules for game controllers and virtual reality devices")
+ (description
+ "This package provides a set of udev rules for game controllers and
+virtual reality devices.")
+ (license license:expat))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 11ee631bf4..bb8a922d53 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -968,31 +968,43 @@ as the 'native-search-paths' field."
(custom-gcc gcc-11 "gdc" '("d")
%generic-search-paths)))
-(define-public libgccjit
+(define-public (make-libgccjit gcc)
(package
- (inherit gcc-9)
+ (inherit gcc)
(name "libgccjit")
(outputs (delete "lib" (package-outputs gcc)))
(properties (alist-delete 'hidden? (package-properties gcc)))
(arguments
- (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 regex)
- (srfi srfi-1)
- (srfi srfi-26))
- ,@(package-arguments gcc))
+ (substitute-keyword-arguments (package-arguments gcc)
+ ((#:modules _ '())
+ '((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (srfi srfi-1)
+ (srfi srfi-26)))
((#:configure-flags flags)
- `(append `("--enable-host-shared"
- ,(string-append "--enable-languages=jit"))
+ #~(cons* "--disable-bootstrap"
+ "--disable-libatomic"
+ "--disable-libgomp"
+ "--disable-libquadmath"
+ "--disable-libssp"
+ "--enable-host-shared"
+ "--enable-checking=release"
+ "--enable-languages=jit"
(remove (cut string-match "--enable-languages.*" <>)
- ,flags)))
+ #$flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'remove-broken-or-conflicting-files
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each delete-file
+ (find-files
+ (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ (inputs (modify-inputs (package-inputs gcc)
+ (delete "libstdc++")))
+ (native-inputs (modify-inputs (package-native-inputs gcc)
+ (prepend gcc)))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
@@ -1003,6 +1015,13 @@ It can also be used for ahead-of-time code generation for building standalone
compilers. The just-in-time (jit) part of the name is now something of a
misnomer.")))
+(define-public libgccjit-9 (make-libgccjit gcc-9))
+(define-public libgccjit-10 (make-libgccjit gcc-10))
+(define-public libgccjit-11 (make-libgccjit gcc-11))
+(define-public libgccjit-12 (make-libgccjit gcc-12))
+
+(define-public libgccjit libgccjit-10)
+
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
(let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 9734ae66fe..7789564c84 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -19,6 +19,7 @@
;;; Copyright © 2021 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2021, 2022 Nikolay Korotkiy <sikmir@disroot.org>
;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -253,7 +254,7 @@ topology functions.")
(define-public gnome-maps
(package
(name "gnome-maps")
- (version "42.2")
+ (version "43.rc") ;for libsoup 3 support
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -261,77 +262,56 @@ topology functions.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1cb9s2zz1zib3f33c035lmgshpl679isbzdd3alrx4yclw61nvay"))))
+ "16a3j896fwxgnvrmx27jnrvhxzh3v22paaq87ad57yp8wkq946il"))))
(build-system meson-build-system)
(arguments
- `(#:glib-or-gtk? #t
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'skip-gtk-update-icon-cache
- ;; Don't create 'icon-theme.cache'.
- (lambda _
- (substitute* "meson_post_install.py"
- (("gtk-update-icon-cache") "true"))))
- (add-after 'unpack 'patch-dbus-service
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* "data/org.gnome.Maps.service.in"
- (("@pkgdatadir@/org.gnome.Maps")
- (string-append (assoc-ref outputs "out")
- "/bin/gnome-maps")))))
- (add-after 'install 'wrap
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
- (geocode-glib-path (string-append
- (assoc-ref inputs "geocode-glib")
- "/lib"))
- (goa-path (string-append
- (assoc-ref inputs "gnome-online-accounts:lib")
- "/lib"))
- (gdk-pixbuf-path (string-append
- (assoc-ref inputs "gdk-pixbuf")
- "/lib"))
- (webkitgtk-path (string-append
- (assoc-ref inputs "webkitgtk")
- "/lib")))
- (wrap-program (string-append out "/bin/gnome-maps")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
-
- ;; There seems to be no way to embed the path of
- ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37,
- ;; libgdk_pixbuf-2.0.so, libjavascriptcoregtk-4.0.so.18, and
- ;; libgeocode-glib.so.0
- `("LD_LIBRARY_PATH" ":" prefix (,goa-path
- ,webkitgtk-path
- ,gdk-pixbuf-path
- ,geocode-glib-path)))
- #t))))))
+ (list
+ #:glib-or-gtk? #t
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'skip-gtk-update-icon-cache
+ ;; Don't create 'icon-theme.cache'.
+ (lambda _
+ (substitute* "meson_post_install.py"
+ (("gtk-update-icon-cache") "true"))))
+ (add-after 'unpack 'patch-dbus-service
+ (lambda _
+ (substitute* "data/org.gnome.Maps.service.in"
+ (("@pkgdatadir@/org.gnome.Maps")
+ (string-append #$output "/bin/gnome-maps")))))
+ (add-after 'install 'wrap
+ (lambda _
+ (wrap-program (string-append #$output "/bin/gnome-maps")
+ `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))))))))
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("gobject-introspection" ,gobject-introspection)
- ("pkg-config" ,pkg-config)))
+ (list gettext-minimal
+ `(,glib "bin")
+ gobject-introspection
+ pkg-config))
(inputs
- `(("evolution-data-server" ,evolution-data-server)
- ("folks" ,folks)
- ("libchamplain" ,libchamplain)
- ("libgee" ,libgee)
- ("libhandy" ,libhandy)
- ("libsecret" ,libsecret)
- ("libsoup" ,libsoup-minimal-2)
- ("libgweather" ,libgweather4)
- ("libxml2" ,libxml2)
- ("librsvg" ,librsvg)
- ("glib-networking" ,glib-networking)
- ("geoclue" ,geoclue)
- ("geocode-glib" ,geocode-glib)
- ("gfbgraph" ,gfbgraph)
- ("gjs" ,gjs)
- ("glib" ,glib)
- ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
- ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
- ("gtk+" ,gtk+)
- ("rest" ,rest)
- ("webkitgtk" ,webkitgtk-with-libsoup2)))
+ (list folks
+ evolution-data-server
+ geoclue
+ geocode-glib
+ gfbgraph
+ gjs
+ glib
+ glib-networking
+ gnome-online-accounts
+ gsettings-desktop-schemas
+ gtk+
+ libadwaita
+ libgee
+ libgweather4
+ libhandy
+ librsvg
+ libsecret
+ libshumate
+ libsoup
+ libxml2
+ pango-next ;TODO: remove when it's the default
+ rest-next
+ webkitgtk))
(synopsis "Graphical map viewer and wayfinding program")
(description "GNOME Maps is a graphical map viewer. It uses map data from
the OpenStreetMap project. It can provide directions for walking, bicycling,
@@ -536,7 +516,7 @@ fully fledged Spatial SQL capabilities.")
(define-public proj
(package
(name "proj")
- (version "7.2.1")
+ (version "9.1.0")
(source
(origin
(method url-fetch)
@@ -544,20 +524,10 @@ fully fledged Spatial SQL capabilities.")
version ".tar.gz"))
(sha256
(base32
- "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
+ "0593vd9sac0c98j1f4rammd90d4xnhygbr6d49i8il6ajjdj7cl1"))))
(build-system cmake-build-system)
- (arguments
- `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-version
- (lambda _
- (substitute* "CMakeLists.txt"
- (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1")))))))
- (inputs
- (list curl libjpeg-turbo libtiff sqlite))
- (native-inputs
- (list googletest pkg-config))
+ (native-inputs (list googletest pkg-config))
+ (propagated-inputs (list curl libtiff sqlite)) ;required by proj.pc
(home-page "https://proj.org/")
(synopsis "Coordinate transformation software")
(description
@@ -574,6 +544,27 @@ lets developers use the functionality of Proj in their own software.")
;; src/geodesic.*, src/tests/geodtest.cpp
license:x11))))
+; This is the last version of proj that provides the old proj.4 API.
+(define-public proj-7
+ (package (inherit proj)
+ (version "7.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://download.osgeo.org/proj/proj-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
+ (arguments
+ `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-version
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1")))))))))
+
(define-public proj.4
(package
(name "proj.4")
@@ -627,14 +618,14 @@ projections.")
(define-public python-pyproj
(package
(name "python-pyproj")
- (version "3.2.1")
+ (version "3.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyproj" version))
(sha256
(base32
- "0xrqpy708qlyd7nqjra0dl7nvkqzaj9w0v7wq4j5pxazha9n14sa"))))
+ "1gjg63irs44djyqbp9gg7s02d0y5i9cd1a83phyzp5fcj56y3n5k"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -1073,13 +1064,13 @@ utilities for data translation and processing.")
(package
(name "python-cartopy")
;; This is a post-release fix that adds build_ext to setup.py.
- (version "0.19.0.post1")
+ (version "0.20.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Cartopy" version))
(sha256
- (base32 "0xnm8z3as3hriivdfd26s6vn5b63gb46x6vxw6gh1mwfm5rlg2sb"))))
+ (base32 "01lhnkhw22jp6hnrs5qvgkq4fqcni2sx7ydiyv8w8xxx5wpglq0d"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -1097,11 +1088,16 @@ utilities for data translation and processing.")
(list python-matplotlib
python-numpy
python-pykdtree
+ python-pyproj
python-pyshp
python-scipy
python-shapely))
(inputs
- (list geos proj))
+ (list geos
+ ;; cartopy's setup.py looks for the proj executable.
+ ;; Not sure if it actually makes use of it since it
+ ;; probably uses proj only through pyproj.
+ proj))
(native-inputs
(list python-cython python-flufl-lock python-pytest))
(home-page "https://scitools.org.uk/cartopy/docs/latest/")
@@ -1501,7 +1497,7 @@ map display. Downloads map data from a number of websites, including
libnova
libpng
openjpeg
- proj
+ proj-7
qtbase-5
zlib))
(native-search-paths
@@ -1953,7 +1949,8 @@ using the dataset of topographical information collected by
(native-inputs
(list pkg-config qttools-5))
(inputs
- (list gdal
+ (list curl
+ gdal
libjpeg-turbo
proj
qtbase-5
@@ -2189,6 +2186,7 @@ track your position right from your laptop.")
(inputs
`(("clipper" ,clipper)
("cups" ,cups)
+ ("curl" ,curl)
("gdal" ,gdal)
("proj" ,proj)
("qtbase" ,qtbase-5)
@@ -2450,6 +2448,7 @@ growing set of geoscientific methods.")
"ProcessingOtbAlgorithmsTest"
"test_core_authmanager"
"test_core_compositionconverter"
+ "test_core_coordinatereferencesystem"
"test_core_gdalutils"
"test_core_labelingengine"
"test_core_layout"
@@ -2459,6 +2458,7 @@ growing set of geoscientific methods.")
"test_core_layoutpicture"
"test_core_legendrenderer"
"test_core_networkaccessmanager"
+ "test_core_rasterfilewriter"
"test_core_tiledownloadmanager"
"test_gui_dualview"
"test_gui_htmlwidgetwrapper"
@@ -2711,6 +2711,7 @@ using third-party geocoders and other data sources.")
(inputs
(list boost
cgal
+ curl
gdal
glew
glu
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 820a44cbde..61040c91e7 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -48,6 +48,7 @@
#:use-module (gnu packages enlightenment)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnome)
#:use-module (gnu packages graphviz)
@@ -379,46 +380,105 @@ functions for strings and common data structures.")
(license license:lgpl2.1+)
(properties '((hidden? . #t)))))
-(define-public glib-with-documentation
- ;; glib's doc must be built in a separate package since it requires gtk-doc,
- ;; which in turn depends on glib.
- (package/inherit glib
- (properties (alist-delete 'hidden? (package-properties glib)))
- (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
- (native-inputs
- `(("docbook-xml-4.2" ,docbook-xml-4.2)
- ("docbook-xml-4.5" ,docbook-xml)
- ("docbook-xsl" ,docbook-xsl)
- ("gtk-doc" ,gtk-doc)
- ("libxml2" ,libxml2)
- ("xsltproc" ,libxslt)
- ,@(package-native-inputs glib)))
+(define-public glib-next
+ (package
+ (inherit glib)
+ (name "glib")
+ (version "2.73.3")
+ (source
+ (origin
+ (inherit (package-source glib))
+ (uri
+ (string-append "mirror://gnome/sources/"
+ name "/" (string-take version 4) "/"
+ name "-" version ".tar.xz"))
+ (snippet
+ '(substitute* "glib/tests/spawn-test.c"
+ (("/bin/sh") "sh")))
+ (sha256
+ (base32 "1bgfch7zj1pq4rkqcibfky1470ijljyrx5pn5s5v9mk72s22n6nz"))))
(arguments
(substitute-keyword-arguments (package-arguments glib)
- ((#:configure-flags flags ''())
- #~(cons "-Dgtk_doc=true"
- (delete "-Dman=false" #$flags)))
- ((#:phases phases)
+ ((#:test-options test-options ''())
+ ;; Skip flaky or slow tests.
+ `(cons* "--no-suite=slow" "--no-suite=flaky" ,test-options))
+ ((#:phases phases '%standard-phases)
`(modify-phases ,phases
- (add-after 'unpack 'patch-docbook-xml
- (lambda* (#:key inputs #:allow-other-keys)
- (with-directory-excursion "docs"
- (substitute* (find-files "." "\\.xml$")
- (("http://www.oasis-open.org/docbook/xml/4\\.5/")
- (string-append (assoc-ref inputs "docbook-xml-4.5")
- "/xml/dtd/docbook/"))
- (("http://www.oasis-open.org/docbook/xml/4\\.2/")
- (string-append (assoc-ref inputs "docbook-xml-4.2")
- "/xml/dtd/docbook/"))))))
- (add-after 'install 'move-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (doc (assoc-ref outputs "doc"))
- (html (string-append "/share/gtk-doc")))
- (mkdir-p (string-append doc "/share"))
- (rename-file
- (string-append out html)
- (string-append doc html)))))))))))
+ (replace 'disable-failing-tests
+ (lambda _
+ (with-directory-excursion "glib/tests"
+ (substitute* '("unix.c" "utils.c")
+ (("[ \t]*g_test_add_func.*;") "")))
+ ;; The "glib:gio / file" test fails with the error "No
+ ;; application is registered as handling this file" (see:
+ ;; https://gitlab.gnome.org/GNOME/glib/-/issues/2742).
+ (with-directory-excursion "gio/tests"
+ (substitute* '("appinfo.c"
+ "contenttype.c"
+ "desktop-app-info.c"
+ "file.c"
+ "gdbus-address-get-session.c"
+ "gdbus-peer.c")
+ (("[ \t]*g_test_add_func.*;") "")))
+
+ ,@(if (target-x86-32?)
+ ;; Comment out parts of timer.c that fail on i686 due to
+ ;; excess precision when building with GCC 10:
+ ;; <https://gitlab.gnome.org/GNOME/glib/-/issues/820>.
+ '((substitute* "glib/tests/timer.c"
+ (("^ g_assert_cmpuint \\(micros.*" all)
+ (string-append "//" all "\n"))
+ (("^ g_assert_cmpfloat \\(elapsed, ==.*" all)
+ (string-append "//" all "\n"))))
+ '())))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs glib)
+ (append desktop-file-utils)))
+ (propagated-inputs
+ (modify-inputs (package-propagated-inputs glib)
+ (replace "pcre" pcre2)))))
+
+(define-public glib-with-documentation
+ ;; glib's doc must be built in a separate package since it requires gtk-doc,
+ ;; which in turn depends on glib.
+ (let ((base glib-next))
+ (package/inherit base
+ (properties (alist-delete 'hidden? (package-properties base)))
+ (outputs (cons "doc" (package-outputs base))) ; 20 MiB of GTK-Doc reference
+ (native-inputs
+ `(("docbook-xml-4.2" ,docbook-xml-4.2)
+ ("docbook-xml-4.5" ,docbook-xml)
+ ("docbook-xsl" ,docbook-xsl)
+ ("gtk-doc" ,gtk-doc)
+ ("libxml2" ,libxml2)
+ ("xsltproc" ,libxslt)
+ ,@(package-native-inputs base)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:configure-flags flags ''())
+ #~(cons "-Dgtk_doc=true"
+ (delete "-Dman=false" #$flags)))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'patch-docbook-xml
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "docs"
+ (substitute* (find-files "." "\\.xml$")
+ (("http://www.oasis-open.org/docbook/xml/4\\.5/")
+ (string-append (assoc-ref inputs "docbook-xml-4.5")
+ "/xml/dtd/docbook/"))
+ (("http://www.oasis-open.org/docbook/xml/4\\.2/")
+ (string-append (assoc-ref inputs "docbook-xml-4.2")
+ "/xml/dtd/docbook/"))))))
+ (add-after 'install 'move-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc"))
+ (html (string-append "/share/gtk-doc")))
+ (mkdir-p (string-append doc "/share"))
+ (rename-file
+ (string-append out html)
+ (string-append doc html))))))))))))
(define (python-extension-suffix python triplet)
"Determine the suffix for C extensions for PYTHON when compiled
@@ -546,6 +606,26 @@ provide bindings to call into the C library.")
;; For tools.
license:gpl2+))))
+(define-public gobject-introspection-next
+ (package
+ (inherit gobject-introspection)
+ (name "gobject-introspection")
+ (version "1.73.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/"
+ "gobject-introspection/" (version-major+minor version)
+ "/gobject-introspection-" version ".tar.xz"))
+ (sha256
+ (base32 "1gkbx32as3v2286w7k3j24fwhkxj6brr49881m2zavxamfwxdm34"))
+ (patches (search-patches
+ "gobject-introspection-cc-1.72.patch"
+ "gobject-introspection-girepository.patch"
+ "gobject-introspection-absolute-shlib-path-1.72.patch"))))
+ (propagated-inputs
+ (modify-inputs (package-propagated-inputs gobject-introspection)
+ (replace "glib" glib-next)))))
+
(define intltool
(package
(name "intltool")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index beab5429bf..74eaf74a37 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -776,7 +776,7 @@ notebooks and tiling window managers.")
(define-public gpaste
(package
(name "gpaste")
- (version "3.42.2")
+ (version "42.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -785,19 +785,25 @@ notebooks and tiling window managers.")
(file-name (git-file-name name version))
(sha256
(base32
- "1k5qvgzwl357k72qfim5zfas2a0n6j24jnlm1v472l7h6gb6lssm"))
+ "1dlqa69zvzzdxyh21qfrx2nhpfy0fbihxpgkxqmramcgv3h5k4q3"))
(patches
(search-patches "gpaste-fix-paths.patch"))))
(build-system meson-build-system)
(native-inputs
- (list autoconf automake gettext-minimal gobject-introspection
+ (list gettext-minimal
+ gobject-introspection
(list glib "bin") ; for glib-compile-resources
- libtool pkg-config vala))
+ pkg-config
+ vala))
(inputs
- (list appstream-glib libarchive gjs mutter graphene))
+ (list appstream-glib
+ gjs
+ gtk
+ mutter
+ libadwaita
+ libarchive))
(arguments
- (list #:meson meson-0.59 ;positional arguments error with meson 0.60
- #:glib-or-gtk? #true
+ (list #:glib-or-gtk? #true
#:configure-flags
#~(list
(string-append "-Dcontrol-center-keybindings-dir="
@@ -809,12 +815,11 @@ notebooks and tiling window managers.")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-introspection-install-dir
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* '("src/gnome-shell/extension.js"
- "src/gnome-shell/prefs.js")
- (("@typelibPath@")
- (string-append out "/lib/girepository-1.0/")))))))))
+ (lambda _
+ (substitute* '("src/gnome-shell/extension.js"
+ "src/gnome-shell/prefs.js")
+ (("@typelibPath@")
+ (string-append #$output "/lib/girepository-1.0/"))))))))
(home-page "https://github.com/Keruspe/GPaste")
(synopsis "Clipboard management system for GNOME Shell")
(description "GPaste is a clipboard manager, a tool which allows you to
@@ -1084,7 +1089,7 @@ of windows.")
(define-public arc-theme
(package
(name "arc-theme")
- (version "20210412")
+ (version "20220405")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1093,7 +1098,7 @@ of windows.")
(file-name (git-file-name name version))
(sha256
(base32
- "0zs44dagp6baiyszlr1kj5ncap43fg32dv07rl46nxbds2p65lh4"))))
+ "1gjwf75sg4xyfypb08qiy2cmqyr2mamjc4i46ifrq7snj15gy608"))))
(build-system meson-build-system)
(arguments
'(#:configure-flags
@@ -1102,8 +1107,7 @@ of windows.")
(modify-phases %standard-phases
(add-before 'build 'set-home ;placate Inkscape
(lambda _
- (setenv "HOME" (getcwd))
- #t)))))
+ (setenv "HOME" (getcwd)))))))
(native-inputs
(list `(,glib "bin") ; for glib-compile-resources
gnome-shell
@@ -1111,6 +1115,7 @@ of windows.")
inkscape/stable
optipng
pkg-config
+ python
sassc/libsass-3.5))
(synopsis "Flat GTK+ theme with transparent elements")
(description "Arc is a flat theme with transparent elements for GTK 3, GTK
@@ -1240,13 +1245,13 @@ Cinnamon, MATE, Unity, Xfce, LightDM, GDM, Chrome theme, etc.")
#:tests? #f
#:phases
(modify-phases %standard-phases
- (delete 'configure)))) ; no configure script
+ (delete 'configure)))) ; no configure script
(native-inputs
- `(("glib:bin" ,glib "bin") ; for glib-compile-schemas
- ("gnome-shell" ,gnome-shell)
- ("gtk+" ,gtk+)
- ("xmllint" ,libxml2)
- ("ruby-sass" ,ruby-sass)))
+ (list `(,glib "bin") ; for glib-compile-schemas
+ gnome-shell
+ gtk+
+ libxml2
+ ruby-sass))
(synopsis "Flat theme with light and dark elements")
(description "Numix is a modern flat theme with a combination of light and
dark elements. It supports GNOME, Unity, Xfce, and Openbox.")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e407547d58..670f12fed9 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm