;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Marek Benc ;;; Copyright © 2017 Efraim Flashner ;;; ;;; 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 . (define-module (gnu packages ots) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages glib) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) #:use-module (gnu packages xml) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:prefix license:)) (define-public ots (package (name "ots") (version "0.5.0") (source (origin (method url-fetch) ;; libots seems to have left sourceforge and taken their release ;; tarballs with them (uri (list (string-append "mirror://debian/pool/main/o/ots/ots_" version ".orig.tar.gz") (string-append "mirror://sourceforge/libots/libots/" name "-" version "/" name "-" version ".tar.gz"))) (sha256 (base32 "0dz1ccd7ymzk4swz1aly4im0k3pascnshmgg1whd2rk14li8v47a")) (patches (search-patches "ots-no-include-missing-file.patch")))) (build-system gnu-build-system) (arguments ;; With '-jN', the rule to build the 'ots' command can be triggered ;; before libots-1.la has been built. '(#:parallel-build? #f #:phases (modify-phases %standard-phases (add-after 'configure 'set-shared-lib-extension (lambda _ ;; For some reason, the 'libtool' script (from Libtool ;; 1.5.2, Debian variant) sets 'shrext_cmds' instead of ;; 'shrext' for the shared library file name extension. ;; This leads to the creation of 'libots-1' instead of ;; 'libots-1.so'. Fix that. (substitute* "libtool" (("shrext_cmds") "shrext")) #t))))) (inputs (list glib popt libxml2 zlib)) (native-inputs `(("glib:bin" ,glib "bin") ("pkg-config" ,pkg-config))) (synopsis "Tool for summarizing texts") (description "The Open Text Summarizer is a library and command-line tool for summarizing texts. The program reads a text and decides which sentences are important and which are not. OTS will create a short summary or will highlight the main ideas in the text. The program can either print the summarized text as plain text or HTML. If in HTML, the important sentences are highlighted. The program is multi lingual and works with UTF-8 encoding.") (home-page "http://libots.sourceforge.net/") (license license:gpl2+))) an class='msg-tooltip'>Since commit 8ce6f4dc2879919c12bc76a2f4b01200af97e019, importing this module in a gexp would pull in (guix config) from the host, thereby leading to non-reproducible derivations. Users in (gnu services ...) do not expect that so simply remove the (guix utils) dependency for now. * gnu/build/shepherd.scm (fork+exec-command/container)[strip-pid]: New procedure. Use it instead of 'strip-keyword-arguments'. Ludovic Courtès 2020-09-21build: shepherd: Check for container support....Fixes: <https://issues.guix.gnu.org/43533>. * gnu/build/shepherd.scm (fork+exec-command/container): Check if containers are supported before joining PID namespaces. Mathieu Othacehe 2020-09-02installer: Run the installation inside a container....When the store overlay is mounted, other processes such as kmscon, udev and guix-daemon may open files from the store, preventing the underlying install support from being umounted. See: https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html. To avoid this situation, mount the store overlay inside a container, and run the installation from within that container. * gnu/build/shepherd.scm (fork+exec-command/container): New procedure. * gnu/services/base.scm (guix-shepherd-service): Support an optional PID argument passed to the "start" method. If that argument is passed, ensure that guix-daemon enters the given PID MNT namespace by using fork+exec-command/container procedure. * gnu/installer/final.scm (umount-cow-store): Remove it, (install-system): run the installation from within a container. * gnu/installer/newt/final.scm (run-install-shell): Remove the display hack. Mathieu Othacehe 2020-06-12shepherd: 'read-pid-file/container' terminates the whole process group....This mirrors a change made in the Shepherd 0.8.0. Previously, upon startup failure, we could have left processes behind. * gnu/build/shepherd.scm (read-pid-file/container): Kill (- PID) instead of PID. Ludovic Courtès 2020-06-12shepherd: Unblock signals in the child process....Fixes <https://bugs.gnu.org/41791>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. This change mirrors changes made in the Shepherd 0.8.1, where signals are blocked in the shepherd process in support of 'signalfd'. The regression was introduced with the switch to 0.8.1 in 3f9c62d1a8b345909adaeb22f454ad22554c55a1: child processes would not receive SIGTERM upon 'herd stop SERVICE'. * gnu/build/shepherd.scm <top level>: Autoload (shepherd system). (make-forkexec-constructor/container): Call call to 'sigaction' and 'unblock-signals'. Ludovic Courtès