;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Ludovic Courtès ;;; ;;; 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 . ;;; ;;; Validate 'etc/news.scm'. ;;; (use-modules (git) (guix git) (guix ui) (guix channels) (srfi srfi-26) (ice-9 match)) ;; XXX: These two things are currently private. (define read-channel-news (@@ (guix channels) read-channel-news)) (define channel-news-entries (cut struct-ref <> 0)) (define (all-the-news directory) "Return the read from DIRECTORY, a checkout of the 'guix' channel." (call-with-input-file (string-append directory "/etc/news.scm") read-channel-news)) (define (validate-texinfo str type language) "Parse STR as a Texinfo fragment and raise an error if that fails." (catch #t (lambda () (texi->plain-text str)) (lambda (key . args) (print-exception (current-error-port) #f key args) (report-error (G_ "the Texinfo snippet below is invalid (~a, ~a):~%") type language) (display str (current-error-port)) (exit 1)))) (define (validate-news-entry repository entry) "Validate ENTRY, a , making sure it refers to an existent commit of REPOSITORY and contains only valid Texinfo." (catch 'git-error (lambda () (let ((commit (commit-lookup repository (string->oid (channel-news-entry-commit entry))))) (for-each (match-lambda ((language . title) (validate-texinfo title 'title language))) (channel-news-entry-title entry)) (for-each (match-lambda ((language . body) (validate-texinfo body 'body language))) (channel-news-entry-body entry)))) (lambda (key error . rest) (if (= GIT_ENOTFOUND (git-error-code error)) (leave (G_ "commit '~a' of entry '~a' does not exist~%") (channel-news-entry-commit entry) (channel-news-entry-title entry)) (apply throw key error rest))))) (let* ((this-directory (dirname (current-filename))) (top-directory (string-append this-directory "/..")) (entries (channel-news-entries (all-the-news top-directory)))) (with-repository top-directory repository (for-each (cut validate-news-entry repository <>) entries) (info (G_ "All ~a channel news entries are valid.~%") (length entries)))) s/cinnamon.scm, gnu/packages/compression.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/django.scm, gnu/packages/dns.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/emacs.scm, gnu/packages/enlightenment.scm, gnu/packages/erlang.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/forth.scm, gnu/packages/fvwm.scm, gnu/packages/games.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile-xyz.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell-xyz.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.scm, gnu/packages/libcanberra.scm, gnu/packages/linux.scm, gnu/packages/lisp-xyz.scm, gnu/packages/lisp.scm, gnu/packages/lolcode.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm, gnu/packages/maths.scm, gnu/packages/mc.scm, gnu/packages/messaging.scm, gnu/packages/music.scm, gnu/packages/ncurses.scm, gnu/packages/networking.scm, gnu/packages/nickle.scm, gnu/packages/openbox.scm, gnu/packages/pdf.scm, gnu/packages/perl-check.scm, gnu/packages/perl.scm, gnu/packages/python-compression.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/ssh.scm, gnu/packages/suckless.scm, gnu/packages/tbb.scm, gnu/packages/telephony.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm, gnu/packages/xfce.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/services/certbot.scm, gnu/services/desktop.scm, gnu/services/version-control.scm, gnu/services/web.scm, guix/import/hackage.scm, guix/licenses.scm: Likewise. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> nikita 2019-09-24gnu: guile-xcb: Fix cross-compilation....* gnu/packages/guile-wm.scm (guile-xcb)[native-inputs]: Add guile. Pierre-Moana Levesque 2019-09-04gnu: guile-wm: Fix cross-compilation....* gnu/packages/guile-wm.scm (guile-wm): Add guile and guile-xcb to native-inputs. Pierre-Moana Levesque