From b37ab28401c55adbb8e36ea2931849636752524d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 4 May 2021 16:57:05 +0200 Subject: Update NEWS. --- NEWS | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 122c184f65..7f7a3d4d3d 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ #+TITLE: Guix NEWS – history of user-visible changes #+STARTUP: content hidestars -Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès +Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès Copyright © 2016, 2017, 2018 Ricardo Wurmus Copying and distribution of this file, with or without modification, @@ -11,6 +11,89 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus Please send Guix bug reports to bug-guix@gnu.org. +* Changes in 1.3.0 (since 1.2.0) + +** Package management + +*** POWER9 (powerpc64le-linux) is now supported as a technology preview +*** New ‘--export-manifest’ and ‘--export-channels’ options of ‘guix package’ +*** New ‘--profile’ option for ‘guix environment’ +*** New ‘--discover’ option of ‘guix-daemon’, for local substitute discovery +*** New ‘--advertise’ option of ‘guix publish’ +*** New ‘--with-patch’ and ‘--with-latest’ package transformation options +*** ‘guix system image’ supersedes the ‘disk-image’ and ‘vm-image’ sub-commands +*** ‘--verbosity=1’ no longer displays download URLs +*** ‘guix publish -C’ now supports zstd compression via Guile-zstd +*** ‘guix-daemon’ now supports zstd substitutes, which decompress faster +*** New ‘guix import go’ command, to import Go packages +*** ‘guix import opam’ now supports Coq packages and has a ‘--repo’ option +*** ‘guix import crate’ now honors semantic versioning (“semver”) +*** ‘guix import nix’ has been removed +*** New updaters (see ‘guix refresh’): ‘sourceforge’ and ‘generic-html’ +*** Substitute installation has been optimized +*** ‘guix’ commands suggest alternative sub-commands or options upon typos +*** Offloading no longer requires ‘guile’ to be in $PATH on build machines +*** ‘GUIX_EXTENSIONS_PATH’ is honored when looking for extensions such as GWL +*** New ‘--format’ option for ‘guix processes’ + +** Distribution + +*** ‘qemu-binfmt-service-type’ now relies on statically-linked QEMU +*** ‘guix system init’ has been optimized +*** New ‘--graph-backend’ option for ‘guix system {extension,shepherd}-graph’ + +** Programming interfaces + +*** New ‘channel-with-substitutes-available’ procedure in (guix channels) +*** New modules (guix substitutes), (guix narinfo), and (guix avahi) +*** records can be passed to ‘guix system image’ +*** New (guix ipfs) module to interact with an IPFS gateway + +** Noteworthy bug fixes + +*** Risk of local privilege escalation via guix-daemon fixed + (, CVE-2021-27851) +*** Setuid programs on Guix System are no longer setgid root + () +*** Risk of local privilege escalation during reconfigure fixed + () +*** Grafting recognizes UTF-16 and UTF-32 store references + () +*** (guix git) honors HTTP/HTTPS proxy settings for Git submodules + () +*** Fix ‘guix substitute’ crash when interleaving lzip and gzip + () +*** Fix GnuTLS memory corruption when used from Guile + () +*** Update GnuTLS to 3.6.15, addressing a time-dependent test failure + () + +** Native language support + +*** Updated translations of the manual + +The manual is fully translated into French and German, 90% translated into +Spanish, and has preliminary translations into Chinese, Brazilian Portuguese, +and Russian. + +*** Update translations of the cookbook + +The cookbook is fully translated in French and German and has a preliminary +translation into Korean. + +*** Updated translations of messages + +This version of Guix is fully translated in French, German, and Slovak; it has +good translation into Brazilian Portuguese and Spanish, and preliminary +translations in a dozen other languages. + +*** Translations now hosted on Fedora’s Weblate instance + +Translations are now handled at + (thanks, Fedora!). +You can join to help improve translations in your native language of messages, +documentation, package descriptions, and the web site. + * Changes in 1.2.0 (since 1.1.0) ** Package management -- cgit v1.2.3 able-static"))) (inputs (list libjpeg-turbo libtiff zlib)) (synopsis "Little CMS, a small-footprint colour management engine") (description "Little CMS is a small-footprint colour management engine, with special focus on accuracy and performance. It uses the International Color Consortium standard (ICC), approved as ISO 15076-1.") (license license:x11) (home-page "https://www.littlecms.com/") (properties '((cpe-name . "little_cms_color_engine"))))) (define-public libpaper (package (name "libpaper") (version "2.0.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/rrthomas/libpaper/releases" "/download/v" version "/libpaper-" version ".tar.gz")) (sha256 (base32 "0aipyaqp30cn919j7w5wvlgkw0v4aqsax82i2zw4wmgck8g6ax77")))) (build-system gnu-build-system) (native-inputs (list help2man)) (arguments (list #:configure-flags ''("--disable-static" ;; Tests require a relocatable build. "--enable-relocatable") ;; --enable-relocate is broken on the Hurd #:tests? (not (or (target-hurd?) (%current-target-system))))) (outputs '("out" "debug")) (home-page "https://github.com/rrthomas/libpaper") (synopsis "Library for handling paper sizes") (description "The paper library and accompanying files are intended to provide a simple way for applications to take actions based on a system- or user-specified paper size.") ;; The library is LGPL3+, everything else GPL3+. (license (list license:lgpl3+ license:gpl3+)))) (define-public psutils (package (name "psutils") (version "2.09") (source (origin (method url-fetch) (uri (string-append "https://github.com/rrthomas/psutils/releases" "/download/v" version "/psutils-" version ".tar.gz")) (sha256 (base32 "1nmp0hb7c4a315vv1mqw2cbckvca8bzh1cv3gdvwwy24w9qba6p3")))) (build-system gnu-build-system) (inputs (list perl perl-ipc-run3)) (native-inputs (list libpaper)) (arguments (list #:tests? #f ; FIXME: requires files not present in tarball #:configure-flags ;; Help the build system locate Perl when cross-compiling. (if (%current-target-system) #~(list (string-append "ac_cv_path_PERL=" (search-input-file %build-inputs "bin/perl"))) #~'()) #:phases #~(modify-phases %standard-phases (add-after 'install 'wrap-scripts (lambda _ (let ((perl5lib (getenv "PERL5LIB"))) (for-each (lambda (file) (wrap-program file `("PERL5LIB" ":" prefix (,(string-append perl5lib ":" #$output "/lib/perl5/site_perl"))))) (find-files (string-append #$output "/bin") ".")))))))) (synopsis "Collection of utilities for manipulating PostScript documents") (description "PSUtils is a collection of utilities for manipulating PostScript documents. Programs included are psnup, for placing out several logical pages on a single sheet of paper, psselect, for selecting pages from a document, pstops, for general imposition, psbook, for signature generation for booklet printing, and psresize, for adjusting page sizes.") (home-page "https://github.com/rrthomas/psutils") (license (list license:gpl3+ ;; This file carries the "historical" psutils license (v1), ;; which is "effectively BSD 3-clause" (a quote from the file). (license:non-copyleft "file://extractres.in.in" "See extractres.in.in in the distribution."))))) (define-public ghostscript (package (name "ghostscript") (version "9.56.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/ArtifexSoftware/" "ghostpdl-downloads/releases/download/gs" (string-delete #\. version) "/ghostscript-" version ".tar.xz")) (sha256 (base32 "1r5qash65m6ignki6z72q4rlai9ka99xrxnmqd19n02has00cd6l")) (patches (search-patches "ghostscript-no-header-creationdate.patch" "ghostscript-no-header-id.patch" "ghostscript-no-header-uuid.patch" "ghostscript-CVE-2023-36664.patch" "ghostscript-CVE-2023-36664-fixup.patch")) (modules '((guix build utils))) (snippet ;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so ;; we leave it, at least for now. ;; TODO Try unbundling ijs, which is developed alongside Ghostscript. ;; Likewise for the thread-safe lcms2 fork called "lcms2art". '(begin (for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg" "libpng" "tiff" "zlib")))))) (build-system gnu-build-system) (outputs '("out" "doc")) ;19 MiB of HTML/PS doc + examples (arguments (list #:disallowed-references '("doc") #:configure-flags #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib") "--with-system-libtiff" "LIBS=-lz" (string-append "ZLIBDIR=" (dirname (search-input-file %build-inputs "include/zlib.h"))) "--enable-dynamic" "--disable-compile-inits" (string-append "--with-fontpath=" (search-input-directory %build-inputs "share/fonts/type1/ghostscript")) #$@(if (%current-target-system) '(;; Specify the native compiler, which is used to build 'echogs' ;; and other intermediary tools when cross-compiling; see ;; <https://ghostscript.com/FAQ.html>. "CCAUX=gcc" ;; Save 'config.log' etc. of the native build under ;; auxtmp/, useful for debugging. "--enable-save_confaux") '())) #:phases #~(modify-phases %standard-phases #$@(if (target-hurd?) #~((add-after 'unpack 'patch-leptonica (lambda _ (let ((patch-file #$(local-file (search-patch "ghostscript-leptonica-hurd.patch")))) (with-directory-excursion "leptonica" (invoke "patch" "--force" "-p1" "-i" patch-file)))))) #~()) (add-before 'configure 'create-output-directory (lambda _ ;; The configure script refuses to function if the directory ;; specified as -rpath does not already exist. (mkdir-p (string-append #$output "/lib")))) (add-after 'configure 'remove-doc-reference (lambda _ ;; Don't retain a reference to the 'doc' output in 'gs'. ;; The only use of this definition is in the output of ;; 'gs --help', so this change is fine. (substitute* "base/gscdef.c" (("GS_DOCDIR") "\"~/.guix-profile/share/doc/ghostscript\"")))) (add-after 'configure 'patch-config-files (lambda _ (substitute* "base/unixhead.mak" (("/bin/sh") (which "sh"))))) #$@(if (%current-target-system) '((add-after 'configure 'add-native-lz (lambda _ ;; Add missing '-lz' for native tools such as 'mkromfs'. (substitute* "Makefile" (("^AUXEXTRALIBS=(.*)$" _ value) (string-append "AUXEXTRALIBS = -lz " value "\n")))))) '()) (replace 'build (lambda _ ;; Build 'libgs.so', but don't build the statically-linked 'gs' ;; binary (saves 22 MiB). (invoke "make" "so" "-j" (number->string (parallel-job-count))))) (replace 'install (lambda _ (invoke "make" "soinstall"))) (add-after 'install 'create-gs-symlink (lambda _ ;; Some programs depend on having a 'gs' binary available. (symlink "gsc" (string-append #$output "/bin/gs"))))))) (native-inputs (append (list perl pkg-config ;needed for freetype python-minimal-wrapper tcl) ;; When cross-compiling, some of the natively-built tools require all ;; these libraries. (if (%current-target-system) (list zlib libjpeg-turbo) '()))) (inputs (list fontconfig freetype font-ghostscript jbig2dec libjpeg-turbo libpaper libpng libtiff zlib)) (synopsis "PostScript and PDF interpreter") (description "Ghostscript is an interpreter for the PostScript language and the PDF file format. It also includes a C library that implements the graphics capabilities of the PostScript language. It supports a wide variety of output file formats and printers.") (home-page "https://www.ghostscript.com/") (license license:agpl3+))) (define-public ghostscript/x (package/inherit ghostscript (name (string-append (package-name ghostscript) "-with-x")) (inputs (modify-inputs (package-inputs ghostscript) (prepend libxext libxt))))) (define-public ghostscript/cups (package/inherit ghostscript (name "ghostscript-with-cups") (inputs (modify-inputs (package-inputs ghostscript) (prepend cups-minimal))))) (define-public ijs (package (name "ijs") (version (package-version ghostscript)) (source (package-source ghostscript)) (build-system gnu-build-system) (native-inputs (append (if (target-riscv64?) (list config) '()) (list libtool automake autoconf))) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'autogen (lambda _ ;; need to regenerate macros (system* "autoreconf" "-if") ;; do not run configure (substitute* "autogen.sh" (("^.*\\$srcdir/configure.*") "")) (system* "bash" "autogen.sh") ;; create configure script in ./ijs/ (chdir "ijs") ;; do not run configure (substitute* "autogen.sh" (("^.*\\$srcdir/configure.*") "") (("^ + && echo Now type.*$") "")) (invoke "bash" "autogen.sh"))) ,@(if (target-riscv64?) `((add-after 'unpack 'update-config-scripts (lambda* (#:key native-inputs inputs #:allow-other-keys) (for-each (lambda (file) (install-file (search-input-file (or native-inputs inputs) (string-append "/bin/" file)) "ijs")) '("config.guess" "config.sub"))))) '())))) (synopsis "IJS driver framework for inkjet and other raster devices") (description "IJS is a protocol for transmission of raster page images. This package provides the reference implementation of the raster printer driver architecture.") (license license:expat) (home-page (package-home-page ghostscript)))) (define-public font-ghostscript (package (name "font-ghostscript") (version "8.11") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gs-fonts/gs-fonts/" version "%20%28base%2035%2C%20GPL%29/ghostscript-fonts-std-" version ".tar.gz")) (sha256 (base32 "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; nothing to check, just files to copy #:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1)) #:phases (modify-phases %standard-phases (delete 'configure) (delete 'build) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (dir (string-append out "/share/fonts/type1/ghostscript"))) (mkdir-p dir) (for-each (lambda (file) (copy-file file (string-append dir "/" file))) (find-files "." "pfb|afm")) #t)))))) (synopsis "Free replacements for the PostScript fonts") (description "Ghostscript fonts provides fonts and font metrics customarily distributed with Ghostscript. It currently includes the 35 standard PostScript fonts.") (license license:gpl2) (home-page "https://sourceforge.net/projects/gs-fonts/"))) (define-public gs-fonts (deprecated-package "gs-fonts" font-ghostscript)) (define-public libspectre (package (name "libspectre") (version "0.2.10") (source (origin (method url-fetch) (uri (string-append "https://libspectre.freedesktop.org/releases" "/libspectre-" version ".tar.gz")) (sha256 (base32 "01sdaakrv5js8r6gj2r1ankyl304161z060f25mrmz3b1ylb4q6g")))) (build-system gnu-build-system) (inputs (list ghostscript)) (native-inputs (list pkg-config)) (synopsis "Postscript rendering library") (description "libspectre is a small library for rendering Postscript documents. It provides a convenient easy to use API for handling and rendering Postscript documents.") (license license:gpl2+) (home-page "https://www.freedesktop.org/wiki/Software/libspectre")))