# GNU Guix --- Functional package management for GNU # Copyright © 2018 Julien Lepiller # # 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 . DOC_PO_FILES= \ %D%/guix-manual.es.po \ %D%/guix-manual.de.po \ %D%/guix-manual.fr.po \ %D%/guix-manual.ru.po \ %D%/guix-manual.zh_CN.po DOC_COOKBOOK_PO_FILES= \ %D%/guix-manual.de.po EXTRA_DIST = \ %D%/guix-manual.pot \ %D%/guix-cookbook.pot \ $(DOC_PO_FILES) \ $(DOC_COOKBOOK_PO_FILES) POT_OPTIONS = --package-name "guix" --package-version "$(VERSION)" \ --copyright-holder "Ludovic Courtès" \ --msgid-bugs-address "ludo@gnu.org" doc-po-update-%: @lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \ output="$(srcdir)/po/doc/guix-manual.$$lang.po" ; \ input="$(srcdir)/po/doc/guix-manual.pot" ; \ if test -f "$$output"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \ esac; \ }; \ touch "$$output"; \ else \ echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \ exit 1; \ fi doc-po-update-cookbook-%: @lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \ output="$(srcdir)/po/doc/guix-cookbook.$$lang.po" ; \ input="$(srcdir)/po/doc/guix-cookbook.pot" ; \ if test -f "$$output"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \ esac; \ }; \ touch "$$output"; \ else \ echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \ exit 1; \ fi $(srcdir)/po/doc/%.pot-update: doc/%.texi $(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \ -p "$$(echo $@ | sed 's|-update||')" $(POT_OPTIONS) @touch "$$(echo $@ | sed 's|-update||')" TMP_POT_FILES = contributing.pot guix.pot doc-pot-update: for f in $(TMP_POT_FILES); do \ $(MAKE) $(srcdir)/po/doc/guix.pot-update; \ $(MAKE) $(srcdir)/po/doc/contributing.pot-update; \ done $(MAKE) $(srcdir)/po/doc/guix-cookbook.pot-update; msgcat $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) > $(srcdir)/po/doc/guix-manual.pot rm -f $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) doc-po-update: doc-pot-update for f in $(DOC_PO_FILES); do \ lang="`echo "$$f" | $(SED) -es'|.*/guix-manual\.\(.*\)\.po$$|\1|g'`"; \ $(MAKE) "doc-po-update-$$lang"; \ done for f in $(DOC_COOKBOOK_PO_FILES); do \ lang="`echo "$$f" | $(SED) -es'|.*/guix-cookbook\.\(.*\)\.po$$|\1|g'`"; \ $(MAKE) "doc-po-update-cookbook-$$lang"; \ done .PHONY: doc-po-update doc-pot-update es.guix.gnu.org/47584>. I removed the 'Based upon mkdir-p from (guix build utils)' comment because it's quite a bit different now. * gnu/build/activation.scm (verify-not-symbolic): Delete. (mkdir-p/perms): Rewrite in terms of 'openat'. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: Id2f5bcbb903283afd45f6109190210d02eb383c7 Maxime Devos 2024-08-11privilege: Add POSIX capabilities(7) support....* gnu/system/privilege.scm (<privileged-program>): Add a field representing the program's POSIX capabilities. (privileged-program-capabilities): New public procedure. * doc/guix.texi (Privileged Programs): Document it. * gnu/build/activation.scm (activate-privileged-programs): Take a LIBCAP package argument providing setcap(8) to apply said capabilities. * gnu/services.scm (privileged-program->activation-gexp): Pass said package argument where supported. Include privileged-program-capabilities in the compatibility hack. Tobias Geerinckx-Rice 2024-08-11build: Rename activate-setuid-programs....* gnu/build/activation.scm (activate-setuid-programs): Rename this… (activate-privileged-programs): …to this. Operate on a list of <privileged-program> records. * gnu/services.scm (setuid-program->activation-gexp): Adjust caller. Tobias Geerinckx-Rice 2024-08-11services: setuid-program: Populate /run/privileged/bin....Create /run/setuid-programs compatibility symlinks so that we can migrate all users (both package and human) piecemeal at our leisure. Apart from being symlinks, this should be a user-invisible change. * gnu/build/activation.scm (%privileged-program-directory): New variable. [activate-setuid-programs]: Put privileged copies in %PRIVILEGED-PROGRAM-DIRECTORY, with compatibility symlinks to each in %SETUID-DIRECTORY. * gnu/services.scm (setuid-program-service-type): Update docstring. * doc/guix.texi (Setuid Programs): Update @file{} name accordingly. Tobias Geerinckx-Rice 2024-02-19services: activation: Ensure /run existence....* gnu/build/activation.scm (activation-script): Ensure /var/run existence. * gnu/build/install.scm (evaluate-populate-directive) [directives]: Remove directory /run. Change-Id: I19ca8e7605c0cff598ab89077a94e20390ba27b0 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Nicolas Graves