Browse Source

Merge branch 'master' into gtk-rebuild

Conflicts:
	gnu/packages/gtk.scm
gn-latest-20200428
宋文武 6 years ago
parent
commit
86a81222ca
  1. 1
      .dir-locals.el
  2. 4
      .gitignore
  3. 2
      AUTHORS
  4. 29
      Makefile.am
  5. 372
      NEWS
  6. 3
      README
  7. 2
      THANKS
  8. 2
      build-aux/check-available-binaries.scm
  9. 2
      build-aux/check-final-inputs-self-contained.scm
  10. 33
      build-aux/hydra/gnu-system.scm
  11. 33
      build-aux/hydra/guix.scm
  12. 6
      build-aux/list-packages.scm
  13. 47
      build-aux/make-binary-tarball.scm
  14. 7
      config-daemon.ac
  15. 14
      configure.ac
  16. 9
      daemon.am
  17. 14
      doc.am
  18. 1115
      doc/guix.texi
  19. 139
      etc/completion/bash/guix
  20. 93
      gnu-system.am
  21. 4
      gnu/artwork.scm
  22. 95
      gnu/build/activation.scm
  23. 17
      gnu/build/file-systems.scm
  24. 47
      gnu/build/install.scm
  25. 26
      gnu/packages.scm
  26. 34
      gnu/packages/admin.scm
  27. 6
      gnu/packages/apl.scm
  28. 25
      gnu/packages/apr.scm
  29. 102
      gnu/packages/audacity.scm
  30. 394
      gnu/packages/audio.scm
  31. 8
      gnu/packages/autogen.scm
  32. 6
      gnu/packages/autotools.scm
  33. 99
      gnu/packages/base.scm
  34. 54
      gnu/packages/bash.scm
  35. 1006
      gnu/packages/bioinformatics.scm
  36. 45
      gnu/packages/boost.scm
  37. BIN
      gnu/packages/bootstrap/i686-linux/bash
  38. BIN
      gnu/packages/bootstrap/i686-linux/mkdir
  39. BIN
      gnu/packages/bootstrap/i686-linux/tar
  40. BIN
      gnu/packages/bootstrap/i686-linux/xz
  41. BIN
      gnu/packages/bootstrap/x86_64-linux/bash
  42. BIN
      gnu/packages/bootstrap/x86_64-linux/mkdir
  43. BIN
      gnu/packages/bootstrap/x86_64-linux/tar
  44. BIN
      gnu/packages/bootstrap/x86_64-linux/xz
  45. 5
      gnu/packages/busybox.scm
  46. 52
      gnu/packages/calendar.scm
  47. 37
      gnu/packages/cdrom.scm
  48. 2
      gnu/packages/certs.scm
  49. 54
      gnu/packages/check.scm
  50. 14
      gnu/packages/cmake.scm
  51. 75
      gnu/packages/code.scm
  52. 128
      gnu/packages/commencement.scm
  53. 86
      gnu/packages/compression.scm
  54. 25
      gnu/packages/cross-base.scm
  55. 4
      gnu/packages/cups.scm
  56. 10
      gnu/packages/curl.scm
  57. 190
      gnu/packages/databases.scm
  58. 4
      gnu/packages/dejagnu.scm
  59. 47
      gnu/packages/dictionaries.scm
  60. 28
      gnu/packages/disk.scm
  61. 8
      gnu/packages/ebook.scm
  62. 4
      gnu/packages/ed.scm
  63. 13
      gnu/packages/elf.scm
  64. 196
      gnu/packages/emacs.scm
  65. 2
      gnu/packages/engineering.scm
  66. 9
      gnu/packages/enlightenment.scm
  67. 87
      gnu/packages/fcitx.scm
  68. 4
      gnu/packages/feh.scm
  69. 41
      gnu/packages/fltk.scm
  70. 159
      gnu/packages/freedesktop.scm
  71. 8
      gnu/packages/ftp.scm
  72. 85
      gnu/packages/game-development.scm
  73. 132
      gnu/packages/games.scm
  74. 152
      gnu/packages/gcc.scm
  75. 79
      gnu/packages/gd.scm
  76. 4
      gnu/packages/gdb.scm
  77. 10
      gnu/packages/gettext.scm
  78. 34
      gnu/packages/ghostscript.scm
  79. 7
      gnu/packages/gimp.scm
  80. 243
      gnu/packages/gl.scm
  81. 68
      gnu/packages/glib.scm
  82. 842
      gnu/packages/gnome.scm
  83. 72
      gnu/packages/gnucash.scm
  84. 4
      gnu/packages/gnunet.scm
  85. 12
      gnu/packages/gnupg.scm
  86. 23
      gnu/packages/gnutls.scm
  87. 69
      gnu/packages/gnuzilla.scm
  88. 5
      gnu/packages/graphics.scm
  89. 155
      gnu/packages/gstreamer.scm
  90. 206
      gnu/packages/gtk.scm
  91. 117
      gnu/packages/guile.scm
  92. 685
      gnu/packages/haskell.scm
  93. 14
      gnu/packages/hurd.scm
  94. 92
      gnu/packages/ibus.scm
  95. 4
      gnu/packages/icu4c.scm
  96. 114
      gnu/packages/image.scm
  97. 48
      gnu/packages/imagemagick.scm
  98. 658
      gnu/packages/java.scm
  99. 43
      gnu/packages/jemalloc.scm
  100. 193
      gnu/packages/julia.scm

1
.dir-locals.el

@ -14,6 +14,7 @@
((indent-tabs-mode . nil)
(eval . (put 'eval-when 'scheme-indent-function 1))
(eval . (put 'test-assert 'scheme-indent-function 1))
(eval . (put 'test-assertm 'scheme-indent-function 1))
(eval . (put 'test-equal 'scheme-indent-function 1))
(eval . (put 'test-eq 'scheme-indent-function 1))
(eval . (put 'call-with-input-string 'scheme-indent-function 1))

4
.gitignore

@ -96,7 +96,7 @@ stamp-h[0-9]
/doc/guix.tp
/doc/guix.vr
/doc/guix.vrs
/nix/scripts/substitute-binary
/nix/scripts/substitute
/doc/images/bootstrap-graph.png
/doc/images/bootstrap-graph.eps
/guix-register
@ -112,3 +112,5 @@ GTAGS
/emacs/guix-helper.scm
/emacs/guix-init.el
/emacs/guix-profiles.el
/doc/os-config-bare-bones.texi
/doc/os-config-desktop.texi

2
AUTHORS

@ -35,4 +35,6 @@ alphabetical order):
David Thompson <dthompson2@worcester.edu>
Paul van der Walt <paul@denknerd.org>
Mark H. Weaver <mhw@netris.org>
Christopher A. Webber <cwebber@dustycloud.org>
Andy Wingo <wingo@pobox.com>
Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>

29
Makefile.am

@ -51,6 +51,7 @@ MODULES = \
guix/build-system/cmake.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
guix/build-system/haskell.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/waf.scm \
@ -74,16 +75,20 @@ MODULES = \
guix/build/python-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/waf-build-system.scm \
guix/build/haskell-build-system.scm \
guix/build/store-copy.scm \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/profiles.scm \
guix/build/pull.scm \
guix/build/rpath.scm \
guix/build/cvs.scm \
guix/build/svn.scm \
guix/build/syscalls.scm \
guix/build/gremlin.scm \
guix/build/emacs-utils.scm \
guix/build/graft.scm \
guix/search-paths.scm \
guix/packages.scm \
guix/import/utils.scm \
guix/import/gnu.scm \
@ -96,7 +101,7 @@ MODULES = \
guix/scripts/gc.scm \
guix/scripts/hash.scm \
guix/scripts/pull.scm \
guix/scripts/substitute-binary.scm \
guix/scripts/substitute.scm \
guix/scripts/authenticate.scm \
guix/scripts/refresh.scm \
guix/scripts/system.scm \
@ -104,6 +109,7 @@ MODULES = \
guix/scripts/import/gnu.scm \
guix/scripts/import/nix.scm \
guix/scripts/environment.scm \
guix/scripts/publish.scm \
guix.scm \
$(GNU_SYSTEM_MODULES)
@ -129,7 +135,8 @@ KCONFIGS = \
# Templates, examples.
EXAMPLES = \
gnu/system/os-config.tmpl
gnu/system/examples/bare-bones.tmpl \
gnu/system/examples/desktop.tmpl
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go guix/tests.go
@ -162,7 +169,7 @@ SCM_TESTS = \
tests/pk-crypto.scm \
tests/pki.scm \
tests/sets.scm \
tests/substitute-binary.scm \
tests/substitute.scm \
tests/builders.scm \
tests/derivations.scm \
tests/ui.scm \
@ -178,7 +185,9 @@ SCM_TESTS = \
tests/union.scm \
tests/profiles.scm \
tests/syscalls.scm \
tests/lint.scm
tests/gremlin.scm \
tests/lint.scm \
tests/publish.scm
if HAVE_GUILE_JSON
@ -201,6 +210,7 @@ SH_TESTS = \
tests/guix-gc.sh \
tests/guix-hash.sh \
tests/guix-package.sh \
tests/guix-package-net.sh \
tests/guix-system.sh \
tests/guix-archive.sh \
tests/guix-authenticate.sh \
@ -235,6 +245,9 @@ tests/guix-gc.log: \
# Public key used to sign substitutes from hydra.gnu.org.
dist_pkgdata_DATA = hydra.gnu.org.pub
# Bash completion file.
dist_bashcompletion_DATA = etc/completion/bash/guix
EXTRA_DIST = \
HACKING \
ROADMAP \
@ -248,6 +261,7 @@ EXTRA_DIST = \
build-aux/check-final-inputs-self-contained.scm \
build-aux/download.scm \
build-aux/list-packages.scm \
build-aux/make-binary-tarball.scm \
srfi/srfi-37.scm.in \
srfi/srfi-64.scm \
srfi/srfi-64.upstream.scm \
@ -333,6 +347,13 @@ dist_emacsui_DATA = emacs/guix-main.scm
nodist_emacsui_DATA = emacs/guix-helper.scm
include emacs.am
# The self-contained tarball.
guix-binary.%.tar.xz:
-GUIX_PACKAGE_PATH= \
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/make-binary-tarball.scm" "$*" "$@"
dist-hook: sync-descriptions gen-ChangeLog assert-no-store-file-names
distcheck-hook: assert-binaries-available assert-final-inputs-self-contained

372
NEWS

@ -10,6 +10,378 @@ Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 0.8.2 (since 0.8.1)
** Package management
*** New “binary tarball” installation method is available
See “Binary Installation” in the manual.
*** New ‘guix publish’ command, to publish one’s store
See “Invoking guix publish” in the manual.
*** ‘guix package’ runs “profile creation hooks” as needed
It creates X.509 certificate bundles in the profile’s etc/ssl directory, if
needed, generates a package database cache for GHC if the profile includes GHC
(the Haskell compiler), and generates an Info ‘dir’ file (this part was
already done before.)
*** ‘guix package’ creates an ‘etc/profile’ file in the profile
See “Invoking guix package” in the manual.
*** Commands understand version prefixes, such as ‘gcc-5’ for ‘gcc-5.1.0’
*** ‘guix package --search’ now sorts packages by name and version
*** Substitute information is now fetched using HTTP pipelining
Before that the “substituter” used threads. Using HTTP pipelining means that
resource consumption is reduced on both the client and server sides. As a
side effect, a progress report is displayed as substitute info is downloaded.
*** ‘guix package’ warns when a $GUIX_PACKAGE_PATH module cannot be loaded
*** New ‘--sources’ option to ‘guix build’
*** New Bash completion file, installed in $sysconfdir/bash_completion.d
*** New ‘guix import hackage’ command
See “Invoking guix import” in the manual.
*** ‘guix lint’ supports FTP for the ‘source’ and ‘home-page’ checkers
*** ‘guix lint’ has a new ‘derivation’ checker
*** ‘guix import cpan’ better handles dependencies and licenses
*** Packages are now build in an environment with a UTF-8 locale
** Distribution
*** C library's name service switch (NSS) is now fully configurable
See “Name Service Switch” in the manual.
*** New services: wicd, lirc, colord, upower, console-keymap, postgresql
*** Xorg service supports new drivers, such as Nouveau
*** lsh service has new options, initializes its seed by default
*** /etc/ssl symlink is created, for X.509 certificates
See “X.509 Certificates” in the manual.
*** ‘guix system’ reports duplicate service identifiers
*** New /etc/bashrc file that loads Bash completion when available
*** SLiM service uses sessions from /run/current-system/profile/share/xsessions
See “X Window” in the manual.
*** The Linux “YAMA” restricting policy on PTRACE_ATTACH is now disabled
*** /etc/shells now lists all the user accounts’ shells
*** /gnu/store is now remounted read-only, to avoid accidental modification
*** /etc/profile is sources each profile’s ‘etc/profile’ file
*** 718 new packages
aalib, aarddict, acpid, agg, aisleriot, alsa-modular-synth, ant, ardour,
ardour, argtable, arpack-ng, aspell-dict-ru, aubio, audacity, avidemux,
avidemux, azr3, bamtools, bash-completion, bedops, bind-utils, bluez, bool,
brdf-explorer, bwa, calf, calibre, catch, ccl, chibi-scheme, chmlib,
clalsadrv, clipper, clisp, clustal-omega, colord, colordiff, cpufrequtils,
crossmap, csound, ctl, cunit, cutadapt, desktop-file-utils, djvulibre,
dnsmasq, dosfstools, double-conversion, dovecot, ecl, efl, elementary,
elogind, emacs-no-x, emotion-generic-players, enca, enlightenment,
evas-generic-loaders, exim, express, extremetuxracer, faad2, fastx-toolkit,
fcitx, fdupes, flexbar, fluidsynth, font-adobe-source-han-sans,
font-wqy-zenhei, freepats, gambit-c, ganv, geda-gaf, geoclue, geocode-glib,
ghc, ghc-case-insensitive, ghc-containers, ghc-fgl, ghc-hashable, ghc-http,
ghc-hunit, ghc-mtl, ghc-network, ghc-network-uri, ghc-parallel, ghc-parsec,
ghc-paths, ghc-primitive, ghc-quickcheck, ghc-random, ghc-split, ghc-stm,
ghc-syb, ghc-text, ghc-tf-random, ghc-unordered-containers, ghc-vector,
ghc-zlib, girara, gitolite, glib-networking, glibc-locales,
glibc-utf8-locales, glibc-utf8-locales, glm, gnome-mines,
gnome-settings-daemon, gnome-terminal, gnucash, gnugo, grit, gst-libav,
guile-minikanren, guile-reader, hdparm, hisat, htseq, htsjdk, hunspell,
hyphen, i2c-tools, ibus, icecast, icedtea6, icedtea7, ilmbase, ir, isync,
ixion, jack2, jalv, jansson, jemalloc, julia, key-mon, ladspa, lash,
leptonica, liba52, libabw, libaio, libass, libavc1394, libbluray, libbs2b,
libcaca, libcap-ng, libcdio-paranoia, libcdr, libdca, libdv, libdvdcss,
libe-book, libedit, libepoxy, libetonyek, libexttextcat, libffcall,
libfreehand, libgnomecanvasmm, libgtextutils, libgweather, libical,
libiec61883, libinput, liblo, libmodplug, libmspack, libmspub, libmtp,
libmwaw, libodfgen, libpagemaker, libqtxdg, libquvi, libquvi-scripts,
libraw1394, librecad, librep, librevenge, libsbsms, libsecret, libshout,
libsoup, libsrtp, libtocc, libungif, libva, libvisio, libwacom, libwebp,
libwpd, libwpg, libwps, libxklavier, libxmp, libyaml, lilv, lilypond, lirc,
livestreamer, ltrace, lv2, lv2-mda-epiano, lv2-mda-piano, lvtk, macs, mariadb,
markdown, mdadm, mdds, mesa-headers, mesa-utils, miredo, miso, moreutils,
mpd-mpc, mpdscribble, mplayer2, mpv, muparser, mythes, ncbi-vdb, ngircd,
ngs-java, ngs-sdk, npth, nss-certs, openblas, openexr, openlibm, openntpd,
openspecfun, openvpn, orc, orcus, p11-kit, patchage, pbtranscript-tofu, pcb,
perl-algorithm-c3, perl-algorithm-diff, perl-aliased,
perl-apache-logformat-compiler, perl-appconfig, perl-b-hooks-endofscope,
perl-base, perl-bit-vector, perl-boolean, perl-cache-cache,
perl-cache-fastmmap, perl-capture-tiny, perl-carp-assert,
perl-carp-assert-more, perl-carp-clan, perl-catalyst-action-renderview,
perl-catalyst-action-rest, perl-catalyst-component-instancepercontext,
perl-catalyst-devel, perl-catalyst-dispatchtype-regex,
perl-catalyst-model-dbic-schema, perl-catalyst-plugin-accesslog,
perl-catalyst-plugin-authentication, perl-catalyst-plugin-captcha,
perl-catalyst-plugin-configloader, perl-catalyst-plugin-session,
perl-catalyst-plugin-session-state-cookie,
perl-catalyst-plugin-session-store-fastmmap, perl-catalyst-plugin-stacktrace,
perl-catalyst-plugin-static-simple, perl-catalyst-runtime,
perl-catalyst-traitfor-request-proxybase, perl-catalyst-view-download,
perl-catalyst-view-json, perl-catalyst-view-tt,
perl-catalystx-component-traits, perl-catalystx-roleapplicator,
perl-catalystx-script-server-starman, perl-cgi-simple, perl-cgi-struct,
perl-class-accessor, perl-class-accessor-chained, perl-class-accessor-grouped,
perl-class-c3, perl-class-c3-adopt-next, perl-class-c3-componentised,
perl-class-data-inheritable, perl-class-date, perl-class-factory-util,
perl-class-inspector, perl-class-load, perl-class-load-xs,
perl-class-method-modifiers, perl-class-methodmaker, perl-class-singleton,
perl-class-tiny, perl-class-unload, perl-class-xsaccessor, perl-common-sense,
perl-compress-raw-bzip2, perl-compress-raw-zlib, perl-config-any,
perl-config-autoconf, perl-config-general, perl-context-preserve,
perl-cpan-meta, perl-cpan-meta-check, perl-cpan-meta-requirements,
perl-cpan-meta-yaml, perl-cpanel-json-xs, perl-crypt-randpasswd,
perl-data-dump, perl-data-dumper-concise, perl-data-optlist, perl-data-page,
perl-data-stream-bulk, perl-data-tumbler, perl-data-visitor, perl-date-calc,
perl-date-calc-xs, perl-datetime, perl-datetime-event-ical,
perl-datetime-event-recurrence, perl-datetime-format-builder,
perl-datetime-format-flexible, perl-datetime-format-http,
perl-datetime-format-ical, perl-datetime-format-natural,
perl-datetime-format-strptime, perl-datetime-locale, perl-datetime-set,
perl-datetime-timezone, perl-datetimex-easy, perl-dbd-pg, perl-dbix-class,
perl-dbix-class-cursor-cached, perl-dbix-class-introspectablem2m,
perl-dbix-class-schema-loader, perl-devel-caller, perl-devel-checkbin,
perl-devel-globaldestruction, perl-devel-lexalias, perl-devel-overloadinfo,
perl-devel-partialdump, perl-devel-stacktrace, perl-devel-stacktrace-ashtml,
perl-devel-symdump, perl-digest-hmac, perl-digest-md5-file,
perl-dist-checkconflicts, perl-email-abstract, perl-email-address,
perl-email-date-format, perl-email-messageid, perl-email-mime,
perl-email-mime-contenttype, perl-email-mime-encodings, perl-email-sender,
perl-email-simple, perl-error, perl-eval-closure, perl-exception-class,
perl-exporter-tiny, perl-extutils-config, perl-extutils-helpers,
perl-extutils-installpaths, perl-file-changenotify, perl-file-copy-recursive,
perl-file-find-rule, perl-file-find-rule-perl, perl-file-homedir,
perl-file-remove, perl-file-sharedir, perl-file-sharedir-install,
perl-file-slurp, perl-file-temp, perl-gd, perl-gd-securityimage,
perl-getopt-long-descriptive, perl-hash-merge, perl-hash-multivalue,
perl-html-form, perl-html-lint, perl-html-tree, perl-http-body,
perl-http-cookiejar, perl-http-parser, perl-http-parser-xs,
perl-http-request-ascgi, perl-http-server-simple, perl-http-tiny,
perl-image-magick, perl-import-into, perl-inc-latest, perl-io-compress,
perl-io-interactive, perl-io-socket-ip, perl-io-stringy, perl-ipc-run,
perl-ipc-sharelite, perl-json, perl-json-any, perl-json-maybexs, perl-json-xs,
perl-lingua-en-findnumber, perl-lingua-en-inflect,
perl-lingua-en-inflect-number, perl-lingua-en-inflect-phrase,
perl-lingua-en-number-isordinal, perl-lingua-en-tagger,
perl-lingua-en-words2nums, perl-lingua-pt-stemmer, perl-lingua-stem,
perl-lingua-stem-fr, perl-lingua-stem-it, perl-lingua-stem-ru,
perl-lingua-stem-snowball-da, perl-list-allutils, perl-list-moreutils,
perl-lwp-protocol-https, perl-lwp-useragent-determined,
perl-memoize-expirelru, perl-mime-types, perl-module-build,
perl-module-build-tiny, perl-module-find, perl-module-implementation,
perl-module-install, perl-module-runtime, perl-module-runtime-conflicts,
perl-module-scandeps, perl-module-util, perl-moo, perl-moose,
perl-moosex-emulate-class-accessor-fast, perl-moosex-getopt,
perl-moosex-markasmethods, perl-moosex-methodattributes, perl-moosex-nonmoose,
perl-moosex-params-validate, perl-moosex-relatedclassroles,
perl-moosex-role-parameterized, perl-moosex-role-withoverloading,
perl-moosex-semiaffordanceaccessor, perl-moosex-strictconstructor,
perl-moosex-traits-pluggable, perl-moosex-types, perl-moosex-types-datetime,
perl-moosex-types-datetime-morecoercions, perl-moosex-types-loadableclass,
perl-moox-types-mooselike, perl-mro-compat, perl-namespace-autoclean,
perl-namespace-clean, perl-net-amazon-s3, perl-net-server,
perl-number-compare, perl-object-signature, perl-package-anon,
perl-package-deprecationmanager, perl-package-stash, perl-package-stash-xs,
perl-padwalker, perl-par-dist, perl-params-util, perl-params-validate,
perl-parent, perl-parse-cpan-meta, perl-path-class, perl-plack,
perl-plack-middleware-fixmissingbodyinredirect,
perl-plack-middleware-methodoverride,
perl-plack-middleware-removeredundantbody, perl-plack-middleware-reverseproxy,
perl-plack-test-externalserver, perl-pod-coverage,
perl-posix-strftime-compiler, perl-readonly, perl-role-tiny, perl-safe-isa,
perl-scalar-list-utils, perl-scope-guard, perl-set-infinite, perl-set-scalar,
perl-snowball-norwegian, perl-snowball-swedish, perl-spiffy,
perl-sql-abstract, perl-sql-splitstatement, perl-sql-tokenizer,
perl-stream-buffered, perl-strictures, perl-string-camelcase,
perl-string-rewriteprefix, perl-string-toidentifier-en, perl-sub-exporter,
perl-sub-exporter-progressive, perl-sub-identify, perl-sub-install,
perl-sub-name, perl-sub-uplevel, perl-svg, perl-sys-hostname-long,
perl-task-weaken, perl-template-timer, perl-template-toolkit,
perl-term-encoding, perl-term-progressbar, perl-term-progressbar-quiet,
perl-term-progressbar-simple, perl-term-readkey, perl-test-base,
perl-test-cleannamespaces, perl-test-differences, perl-test-directory,
perl-test-exception, perl-test-fatal, perl-test-harness, perl-test-leaktrace,
perl-test-longstring, perl-test-mockobject, perl-test-mocktime,
perl-test-most, perl-test-output, perl-test-pod, perl-test-pod-coverage,
perl-test-requires, perl-test-sharedfork, perl-test-tcp, perl-test-trap,
perl-test-utf8, perl-test-warn, perl-test-warnings, perl-test-without-module,
perl-test-writevariants, perl-test-www-mechanize,
perl-test-www-mechanize-catalyst, perl-test-www-mechanize-psgi,
perl-test-yaml, perl-text-aligner, perl-text-balanced, perl-text-csv,
perl-text-diff, perl-text-german, perl-text-glob, perl-text-simpletable,
perl-text-table, perl-text-unidecode, perl-throwable, perl-tie-ixhash,
perl-tie-toobject, perl-time-duration, perl-time-duration-parse,
perl-time-local, perl-time-mock, perl-timedate, perl-tree-simple,
perl-tree-simple-visitorfactory, perl-try-tiny, perl-types-serialiser,
perl-universal-can, perl-universal-isa, perl-uri-find, perl-uri-ws,
perl-variable-magic, perl-www-mechanize, perl-xml-libxml,
perl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base, perl-yaml,
perl-yaml-tiny, ploticus, polipo, portaudio, pumpa, python-apsw,
python-biopython, python-cssselect, python-dbus, python-decorator,
python-drmaa, python-h5py, python-lxml, python-netifaces, python-networkx,
python-pyxdg, python-pyyaml, python-requests, python-scikit-learn,
python-singledispatch, python-sphinx-rtd-theme, python-sympy, python-testlib,
python-tornado, python-urwid, python-waf, python2-apsw,
python2-backport-ssl-match-hostname, python2-biopython, python2-bx-python,
python2-cssselect, python2-cssutils, python2-dbus, python2-decorator,
python2-drmaa, python2-h5py, python2-lxml, python2-netifaces,
python2-networkx, python2-pbcore, python2-pil, python2-pybedtools,
python2-pycairo, python2-pyxdg, python2-pyyaml, python2-rdflib, python2-rsvg,
python2-scikit-learn, python2-singledispatch, python2-six,
python2-sphinx-rtd-theme, python2-sympy, python2-testlib, python2-tornado,
python2-urwid, python2-waf, python2-xlib, quvi, r, rdesktop, recode, rep-gtk,
rseqc, rsound, rubberband, ruby-hoe, rxvt-unicode, s2tc, sawfish, sbcl, seqan,
serd, serf, sfml, shogun, sloccount, smartmontools, snakemake, soil, solfege,
sord, soundtouch, soxr, sra-tools, sratom, srt2vtt, star, starman, stow,
subread, suil, suitesparse, swt, sysfsutils, sysfsutils, taskwarrior, tbb,
terminology, tesseract-ocr, texlive-bin, texlive-texmf, the-silver-searcher,
tidy, tig, timidity++, tocc, totem-pl-parser, tree, tuxguitar, tvtime,
twolame, txt2man, unqlite, upower, utf8proc, vamp, vapoursynth, vcftools,
vigra, wavpack, webkitgtk, webkitgtk, weex, wicd, wpa-supplicant-light,
wxwidgets, wxwidgets, xbindkeys, xcape, xdg-utils, xf86-input-libinput,
xf86-input-wacom, xf86-video-nouveau, xfce, xmp, xosd, xournal, xvid, zathura,
zathura-cb, zathura-djvu, zathura-pdf-poppler, zathura-ps, zeromq,
zita-alsa-pcmi, zita-convolver
*** 189 package updates
acpica-20150410, apl-1.5, apr-1.5.2, arb-2.3.0, at-spi2-atk-2.16.0,
at-spi2-core-2.16.0, atk-2.16.0, autogen-5.18.5, bison-3.0.4, boost-1.57.0,
cairo-1.14.2, ccrtp-2.1.2, check-0.9.14, clang-3.6.0, cmake-3.2.2,
complexity-1.2, cups-filters-1.0.68, curl-7.42.1, dbus-1.8.16,
dbus-glib-0.104, dejagnu-1.5.3, docbook-xml-4.4, docbook-xml-4.5,
e2fsck-static-1.42.12, e2fsprogs-1.42.12, ed-1.11, eigen-3.2.4,
elfutils-0.161, emacs-24.5, emacs-no-x-toolkit-24.5, exo-0.10.3, ffmpeg-2.6.2,
fish-2.1.2, flac-1.3.1, flint-2.4.5, fltk-1.3.3, freetype-2.5.5, garcon-0.4.0,
gcc-5.1.0, gcc-toolchain-5.1.0, gdb-7.9, geiser-0.7, glib-2.44.0, glibc-2.21,
glibc-2.21, glibc-stripped-tarball-2.21, glibmm-2.44.0, global-6.4,
gnome-desktop-3.16.0, gnome-icon-theme-3.12.0, gnome-themes-standard-3.16.0,
gnu-pw-mgr-1.3, gnubik-2.4.2, gnumach-headers-1.5, gnunet-0.10.1,
gnupg-1.4.19, gnupg-2.0.27, gnupg-2.1.4, gnutls-3.4.0,
gobject-introspection-1.44.0, gpgme-1.5.4, gsettings-desktop-schemas-3.16.0,
gst-plugins-base-1.4.5, gst-plugins-good-1.4.5, gstreamer-1.4.5, gtk+-3.16.2,
gtkmm-2.24.4, gtkmm-3.16.0, guile-ssh-0.7.2, guix-0.8.1, guix-0.8.1.fc34dee,
help2man-1.46.6, httpd-2.4.12, hurd-headers-0.6, icecat-31.6.0-gnu1,
icu4c-55.1, imagemagick-6.9.0-4, imlib2-1.4.7, inetutils-1.9.3, inkscape-0.91,
isc-dhcp-4.3.1, itstool-2.0.2, kbd-2.0.2, libgcrypt-1.6.3, libgpg-error-1.18,
libidn-1.30, libltdl-2.4.6, libmicrohttpd-0.9.40, libmikmod-3.3.7,
libotr-4.1.0, libsigc++-2.4.1, libtasn1-4.5, libtool-2.4.6,
libunistring-0.9.5, libuv-1.4.2, libvorbis-1.3.5, libxfce4ui-4.12.0,
libxfce4util-4.12.1, libxfont-1.5.1, lightning-2.1.0, linux-libre-4.0.2,
linux-libre-headers-3.14.37, llvm-3.6.0, lua-5.2.3, man-pages-3.82,
mesa-10.5.4, mig-1.5, minetest-0.4.12, moe-1.7, mpc-1.0.3, mpd-0.19.9,
mu-0.9.12, nano-2.4.1, ncmpcpp-0.6.2, nettle-3.1, nginx-1.8.0, node-0.12.2,
notmuch-0.19, nspr-4.10.8, nss-3.18, ntp-4.2.8p2, ocrad-0.25, octave-3.8.2,
openconnect-7.05, openjpeg-2.0.1, openjpeg-2.1.0, openldap-2.4.40,
openssh-6.8p1, openssl-1.0.2a, pangomm-2.36.0, parallel-20150422,
pari-gp-2.7.3, patch-2.7.5, perf-4.0.2, perl-libwww-6.13, perl-net-http-6.07,
perl-net-ssleay-1.68, perl-test-simple-1.001014, perl-uri-1.67,
pinentry-0.9.0, pius-2.0.11, podofo-0.9.3, poppler-0.32.0, postgresql-9.3.6,
pulseaudio-6.0, python-3.4.3, python-pillow-2.7.0, python-pygobject-3.16.1,
python-setuptools-12.1, python-wrapper-3.4.3, python2-dateutil-2.2,
python2-pillow-2.7.0, python2-pygobject-3.16.1, python2-setuptools-12.1,
qt-5.4.1, ruby-2.2.2, samba-3.6.25, scons-2.3.4, sdl2-2.0.3, sharutils-4.15.1,
sipwitch-1.9.7, slock-1.2, source-highlight-3.1.8, sqlite-3.8.9,
subversion-1.8.13, texinfo-5.2, thunar-1.6.6, thunar-volman-0.8.1,
tor-0.2.5.12, tumbler-0.1.31, tzdata-2015c, ucommon-6.3.1, vala-0.28.0,
valgrind-3.10.1, vlc-2.2.0, vte-0.40.0, wget-1.16.3, wine-1.7.40,
wpa-supplicant-2.4, xboard-4.8.0, xfce4-appfinder-4.12.0, xfce4-panel-4.12.0,
xfce4-session-4.12.0, xfce4-settings-4.12.0, xfconf-4.12.0, xfdesktop-4.12.0,
xfwm4-4.12.0, xorg-server-1.16.4, xterm-317
** Programming interfaces
*** New (guix build gremlin) to parse and validate ELF dynamic link info
*** (guix build-system gnu) has a new ‘validate-runpath’ phase
This phase reads the dynamic entries of ELF files and reports libraries listed
as NEEDED that are not found in the RUNPATH.
*** New (gnu services desktop) module and ‘%desktop-services’ variable
*** New (guix cvs-download) module, for CVS checkouts
*** New (guix build-system waf) module, for the Waf build system
*** New (guix build-system haskell) module, to build Haskell packages
*** (guix build-system gnu) now supports zip archives
*** New convenience syntax ‘modify-phases’ added in (guix build utils)
*** The ‘ld’ wrapper more finely determines whether to use ‘-rpath’
*** (guix gexp) exports ‘gexp-input’ to describe input unambiguously
*** The ‘define-gexp-compiler’ form allows (guix gexp) to be extended
*** New ‘local-file’ constructor exported by (guix gexp)
** Noteworthy bug fixes
*** Profiles created with ‘guix package -p’ as indirect GC roots
Before that they were made permanent GC roots–i.e., uncollectable.
*** ‘guix package’ distinguishes downgrades from upgrades
*** Handle HTTP redirects to relative URI references
(<http://bugs.gnu.org/19840>)
*** Downloads now honor the ‘http_proxy’ environment variable
(<http://bugs.gnu.org/20402>)
*** ‘--no-*’ options are now always correctly handled
(<http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00702.html>)
*** SLiM no longer leaks open file descriptors
*** Don't compare <pam-service> objects with 'equal?'
(<http://bugs.gnu.org/20037>)
*** x86_64 and i686 bootstrap binaries updated (<http://bugs.gnu.org/19780>)
*** ‘find-files’ no longer follows symlinks (<http://bugs.gnu.org/20081>)
*** libc message catalog (‘libc.mo’) is now installed
*** libstdc++ has appropriate RUNPATH (<http://bugs.gnu.org/20358>)
*** ‘dhcp-client-service’ now correctly tracks dhclient’s PID
** Native language support
*** New translations: da (Danish)
*** Updated translations: eo
* Changes in 0.8.1 (since 0.8)
** Package management

3
README

@ -20,8 +20,9 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages:
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later
- [[http://gnupg.org/][GNU libgcrypt]]
- [[http://www.gnu.org/software/make/][GNU Make]]
- optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command
- optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support
in the 'guix download' command. Note that 'guix import pypi' requires

2
THANKS

@ -29,7 +29,9 @@ infrastructure help:
Yutaka Niibe <gniibe@fsij.org>
Andrei Osipov <andrspv@gmail.com>
Adam Pribyl <pribyl@lowlevel.cz>
Pjotr Prins <pjotr.public12@thebird.nl>
rekado <rekado@elephly.net>
Joshua Randall <jcrandall@alum.mit.edu>
Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
Cyrill Schenkel <cyrill.schenkel@gmail.com>
Benno Schulenberg <coordinator@translationproject.org>

2
build-aux/check-available-binaries.scm

@ -33,7 +33,7 @@
(let* ((native (append-map (lambda (system)
(map (cut package-derivation store <> system)
(list %bootstrap-tarballs emacs)))
%supported-systems))
%hydra-supported-systems))
(cross (map (cut package-cross-derivation store
%bootstrap-tarballs <>)
'("mips64el-linux-gnuabi64")))

2
build-aux/check-final-inputs-self-contained.scm

@ -77,5 +77,5 @@ refer to the bootstrap tools."
(set-build-options store #:use-substitutes? #t)
(for-each (cut test-final-inputs store <>)
%supported-systems)))
%hydra-supported-systems)))

33
build-aux/hydra/gnu-system.scm

@ -54,6 +54,7 @@
(gnu packages multiprecision)
(gnu packages make-bootstrap)
(gnu packages commencement)
(gnu packages package-management)
(gnu system)
(gnu system vm)
(gnu system install)
@ -158,9 +159,33 @@ system.")
(set-guile-for-build (default-guile))
(system-disk-image installation-os
#:disk-image-size
(* 800 MiB))))))
(* 860 MiB))))))
'()))
(define (tarball-jobs store system)
"Return Hydra jobs to build the self-contained Guix binary tarball."
(define (->alist drv)
`((derivation . ,(derivation-file-name drv))
(description . "Stand-alone binary Guix tarball")
(long-description . "This is a tarball containing binaries of Guix and
all its dependencies, and ready to be installed on non-GuixSD distributions.")
(license . ,gpl3+)
(home-page . ,%guix-home-page-url)
(maintainers . ("bug-guix@gnu.org"))))
(define (->job name drv)
(let ((name (symbol-append name (string->symbol ".")
(string->symbol system))))
`(,name . ,(cut ->alist drv))))
;; XXX: Add a job for the stable Guix?
(list (->job 'binary-tarball
(run-with-store store
(mbegin %store-monad
(set-guile-for-build (default-guile))
(self-contained-tarball))
#:system system))))
(define job-name
;; Return the name of a package's job.
(compose string->symbol package-full-name))
@ -179,8 +204,7 @@ system.")
valid."
(cond ((member package base-packages)
#f)
((member system
(package-transitive-supported-systems package))
((supported-package? package system)
(package-job store (job-name package) package system))
(else
#f)))))
@ -234,6 +258,7 @@ valid."
(cons job result)
result)))
(append (qemu-jobs store system)
(tarball-jobs store system)
(cross-jobs system))))
((core)
;; Build core packages only.
@ -244,4 +269,4 @@ valid."
(cross-jobs system)))
(else
(error "unknown subset" subset))))
%supported-systems))
%hydra-supported-systems))

33
build-aux/hydra/guix.scm

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -68,25 +68,10 @@
(home-page . ,(package-home-page package))
(maintainers . ("bug-guix@gnu.org"))))
(define (tarball-package checkout nix-checkout)
(define (tarball-package checkout)
"Return a package that does `make distcheck' from CHECKOUT, a directory
containing a Git checkout of Guix."
(let ((dist (dist-package guix checkout)))
(package (inherit dist)
(location (source-properties->location (current-source-location)))
(arguments (substitute-keyword-arguments (package-arguments dist)
((#:phases p)
`(alist-cons-before
'autoreconf 'set-nix-submodule
(lambda _
;; Tell Git to use the Nix checkout that Hydra gave us.
(zero?
(system* "git" "config" "submodule.nix-upstream.url"
,nix-checkout)))
,p))))
(native-inputs `(("git" ,git)
("graphviz" ,graphviz)
,@(package-native-inputs dist))))))
(dist-package guix checkout))
(define (hydra-jobs store arguments)
"Return Hydra jobs."
@ -104,13 +89,9 @@ containing a Git checkout of Guix."
(define guix-checkout
(assq-ref arguments 'guix))
(define nix-checkout
(assq-ref arguments 'nix))
(format (current-error-port) "using checkout ~s (Nix: ~s)~%"
guix-checkout nix-checkout)
(let ((guix (assq-ref guix-checkout 'file-name))
(nix (assq-ref nix-checkout 'file-name)))
(let ((guix (assq-ref guix-checkout 'file-name)))
(format (current-error-port) "using checkout ~s (~s)~%"
guix-checkout guix)
`((tarball . ,(cute package->alist store
(tarball-package guix nix)
(tarball-package guix)
(%current-system))))))

6
build-aux/list-packages.scm

@ -167,7 +167,11 @@ decreasing, is 1."
,system))
`(div "status: "
,(list-join (map url (package-transitive-supported-systems package))
,(list-join (map url
(lset-intersection
string=?
%hydra-supported-systems
(package-transitive-supported-systems package)))
" ")))
(define (package-logo name)

47
build-aux/make-binary-tarball.scm

@ -0,0 +1,47 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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/>.
;;;
;;; Build a self-contained tarball containing binaries for Guix and its
;;; dependencies.
;;;
(use-modules (guix)
(guix ui)
(gnu system install)
(ice-9 match))
(define copy-file*
(lift2 copy-file %store-monad))
(define rename-file*
(lift2 rename-file %store-monad))
(match (command-line)
((_ system file)
(with-store store
(run-with-store store
(mlet %store-monad ((tarball (self-contained-tarball)))
(mbegin %store-monad
(show-what-to-build* (list tarball))
(built-derivations (list tarball))
(copy-file* (derivation->output-path tarball)
(string-append file ".part"))
(rename-file* (string-append file ".part") file)))
#:system system))))

7
config-daemon.ac

@ -5,9 +5,12 @@ AC_MSG_RESULT([$guix_build_daemon])
dnl C++ environment. This macro must be used unconditionnaly.
AC_PROG_CXX
AC_LANG([C++])
if test "x$guix_build_daemon" = "xyes"; then
GUIX_ASSERT_CXX11
AC_PROG_RANLIB
AC_CONFIG_HEADER([nix/config.h])
@ -133,8 +136,8 @@ if test "x$guix_build_daemon" = "xyes"; then
AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
[chmod +x nix/scripts/list-runtime-roots])
AC_CONFIG_FILES([nix/scripts/substitute-binary],
[chmod +x nix/scripts/substitute-binary])
AC_CONFIG_FILES([nix/scripts/substitute],
[chmod +x nix/scripts/substitute])
AC_CONFIG_FILES([nix/scripts/guix-authenticate],
[chmod +x nix/scripts/guix-authenticate])
AC_CONFIG_FILES([nix/scripts/offload],

14
configure.ac

@ -7,7 +7,10 @@ AC_INIT([GNU Guix], [0.8.2], [bug-guix@gnu.org], [guix],
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \
color-tests parallel-tests -Woverride])
color-tests parallel-tests -Woverride -Wno-portability])
# Enable silent rules by default.
AM_SILENT_RULES([yes])
AC_CONFIG_SRCDIR([guix.scm])
AC_CONFIG_MACRO_DIR([m4])
@ -31,6 +34,13 @@ AC_ARG_WITH(store-dir,
[storedir="/gnu/store"])
AC_SUBST(storedir)
AC_ARG_WITH([bash-completion-dir],
AC_HELP_STRING([--with-bash-completion-dir=DIR],
[name of the Bash completion directory]),
[bashcompletiondir="$withval"],
[bashcompletiondir='${sysconfdir}/bash_completion.d'])
AC_SUBST([bashcompletiondir])
dnl Better be verbose.
AC_MSG_CHECKING([for the store directory])
AC_MSG_RESULT([$storedir])
@ -57,7 +67,7 @@ dnl Make sure they are available.
m4_pattern_forbid([PKG_CHECK_MODULES])
m4_pattern_forbid([GUILE_MODULE_AVAILABLE])
PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.5])
PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7])
AC_PATH_PROG([GUILE], [guile])
AC_PATH_PROG([GUILD], [guild])
if test "x$GUILD" = "x"; then

9
daemon.am

@ -25,8 +25,8 @@ CLEANFILES += $(BUILT_SOURCES)
noinst_LIBRARIES = libformat.a libutil.a libstore.a
# Use '-std=c++0x' for 'std::shared_ptr'.
AM_CXXFLAGS = -Wall -std=c++0x
# Use '-std=c++11' for 'std::shared_ptr', 'auto', lambdas, and more.
AM_CXXFLAGS = -Wall -std=c++11
libformat_a_SOURCES = \
nix/boost/format/free_funcs.cc \
@ -112,7 +112,8 @@ libstore_a_CPPFLAGS = \
-DNIX_CONF_DIR=\"$(sysconfdir)/guix\" \
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
-DNIX_BIN_DIR=\"$(bindir)\" \
-DOPENSSL_PATH="\"guix-authenticate\""
-DOPENSSL_PATH="\"guix-authenticate\"" \
-DDEFAULT_CHROOT_DIRS="\"\""
libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \
$(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS)
@ -165,7 +166,7 @@ nix/libstore/schema.sql.hh: nix/libstore/schema.sql
nodist_pkglibexec_SCRIPTS = \
nix/scripts/list-runtime-roots \
nix/scripts/substitute-binary
nix/scripts/substitute
if BUILD_DAEMON_OFFLOAD

14
doc.am

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
#
# This file is part of GNU Guix.
@ -25,12 +25,16 @@ EXTRA_DIST += \
doc/images/bootstrap-graph.eps \
doc/images/bootstrap-graph.pdf
OS_CONFIG_EXAMPLES_TEXI = \
doc/os-config-bare-bones.texi \
doc/os-config-desktop.texi
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += doc/os-config.texi
EXTRA_DIST += doc/os-config.texi
MAINTAINERCLEANFILES = doc/os-config.texi
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI)
EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI)
MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI)
doc/os-config.texi: gnu/system/os-config.tmpl
doc/os-config-%.texi: gnu/system/examples/%.tmpl
$(MKDIR_P) "`dirname "$@"`"
cp "$<" "$@"

1115
doc/guix.texi
File diff suppressed because it is too large
View File

139
etc/completion/bash/guix

@ -0,0 +1,139 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
#
# 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/>.
# Bash completion for Guix commands.
_guix_complete_available_package ()
{
local prefix="$1"
local packages="$(${COMP_WORDS[0]} package -A "^$prefix" | cut -f1)"
COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
}
_guix_complete_installed_package ()
{
local prefix="$1"
local packages="$(${COMP_WORDS[0]} package -I "^$prefix" | cut -f1)"
COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
}
_guix_complete_option ()
{
local options="$(${COMP_WORDS[0]} ${COMP_WORDS[1]} --help \
| grep '^ \+-' \
| sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g' )"
compopt -o nospace
COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[$word_count - 1]}"))
}
_guix_is_command ()
{
local word
local result="false"
for word in ${COMP_WORDS[*]}
do
if [ "$word" = "$1" ]
then
result=true
break
fi
done
$result
}
_guix_is_removing ()
{
local word
local result="false"
for word in ${COMP_WORDS[*]}
do
case "$word" in
--remove|--remove=*|-r)
result=true
break
;;
esac
done
$result
}
_guix_is_dash_L ()
{
[ "${COMP_WORDS[$COMP_CWORD - 1]}" = "-L" ] \
|| { case "${COMP_WORDS[$COMP_CWORD]}" in
--load-path=*) true;;
*) false;;
esac }
}
_guix_complete_file ()
{
# Let Readline complete file names.
compopt -o default
COMPREPLY=()
}
_guix_complete ()
{
local word_count=${#COMP_WORDS[*]}
local word_at_point="${COMP_WORDS[$COMP_CWORD]}"
if [ "$COMP_CWORD" -gt 1 ]
then
case "$word_at_point" in
-*)
_guix_complete_option "$word_at_point"
return
;;
esac
fi
case $COMP_CWORD in
1)
local subcommands="$(guix --help | grep '^ ' | cut -c 2-)"
COMPREPLY=($(compgen -W "$subcommands" -- "$word_at_point"))
;;
*)
if _guix_is_command "package"
then
if _guix_is_dash_L
then
_guix_complete_file
elif _guix_is_removing
then
_guix_complete_installed_package "$word_at_point"
else
_guix_complete_available_package "$word_at_point"
fi
elif _guix_is_command "system"
then
_guix_complete_file # TODO: complete sub-commands
elif _guix_is_command "hash"
then
_guix_complete_file
elif _guix_is_command "import" # TODO: complete sub-commands
then
_guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi
;;
esac
}
complete -F _guix_complete guix

93
gnu-system.am

@ -38,6 +38,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/asciidoc.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/audacity.scm \
gnu/packages/audio.scm \
gnu/packages/autogen.scm \
gnu/packages/autotools.scm \
@ -92,6 +93,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/enchant.scm \
gnu/packages/engineering.scm \
gnu/packages/enlightenment.scm \
gnu/packages/fcitx.scm \
gnu/packages/feh.scm \
gnu/packages/file.scm \
gnu/packages/firmware.scm \
@ -122,6 +124,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/gl.scm \
gnu/packages/glib.scm \
gnu/packages/gnome.scm \
gnu/packages/gnucash.scm \
gnu/packages/gnunet.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnustep.scm \
@ -146,6 +149,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/haskell.scm \
gnu/packages/hugs.scm \
gnu/packages/hurd.scm \
gnu/packages/ibus.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/image.scm \
@ -155,11 +159,12 @@ GNU_SYSTEM_MODULES = \
gnu/packages/irssi.scm \
gnu/packages/iso-codes.scm \
gnu/packages/java.scm \
gnu/packages/jemalloc.scm \
gnu/packages/jrnl.scm \
gnu/packages/julia.scm \
gnu/packages/kde.scm \
gnu/packages/key-mon.scm \
gnu/packages/language.scm \
gnu/packages/ld-wrapper.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libcanberra.scm \
@ -169,8 +174,10 @@ GNU_SYSTEM_MODULES = \
gnu/packages/libffcall.scm \
gnu/packages/libffi.scm \
gnu/packages/libftdi.scm \
gnu/packages/calendar.scm \
gnu/packages/libidn.scm \
gnu/packages/libphidget.scm \
gnu/packages/libreoffice.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
@ -179,6 +186,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/lightning.scm \
gnu/packages/links.scm \
gnu/packages/linux.scm \
gnu/packages/lirc.scm \
gnu/packages/lisp.scm \
gnu/packages/llvm.scm \
gnu/packages/lout.scm \
@ -211,6 +219,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/networking.scm \
gnu/packages/ninja.scm \
gnu/packages/node.scm \
gnu/packages/noweb.scm \
@ -218,7 +227,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/nutrition.scm \
gnu/packages/nvi.scm \
gnu/packages/ocaml.scm \
gnu/packages/ocrad.scm \
gnu/packages/ocr.scm \
gnu/packages/onc-rpc.scm \
gnu/packages/openbox.scm \
gnu/packages/openldap.scm \
@ -267,13 +276,13 @@ GNU_SYSTEM_MODULES = \
gnu/packages/slang.scm \
gnu/packages/slim.scm \
gnu/packages/smalltalk.scm \
gnu/packages/socat.scm \
gnu/packages/ssh.scm \
gnu/packages/stalonetray.scm \
gnu/packages/statistics.scm \
gnu/packages/swig.scm \
gnu/packages/sxiv.scm \
gnu/packages/synergy.scm \
gnu/packages/task-management.scm \
gnu/packages/tbb.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
@ -285,6 +294,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/tre.scm \
gnu/packages/tv.scm \
gnu/packages/unrtf.scm \
gnu/packages/upnp.scm \
gnu/packages/uucp.scm \
@ -297,6 +307,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/web.scm \
gnu/packages/webkit.scm \
gnu/packages/weechat.scm \
gnu/packages/wget.scm \
gnu/packages/wicd.scm \
@ -320,8 +331,10 @@ GNU_SYSTEM_MODULES = \
gnu/services.scm \
gnu/services/avahi.scm \
gnu/services/base.scm \
gnu/services/dbus.scm \
gnu/services/databases.scm \
gnu/services/desktop.scm \
gnu/services/dmd.scm \
gnu/services/lirc.scm \
gnu/services/networking.scm \
gnu/services/ssh.scm \
gnu/services/xorg.scm \
@ -365,6 +378,7 @@ dist_patch_DATA = \
gnu/packages/patches/ath9k-htc-firmware-binutils.patch \
gnu/packages/patches/ath9k-htc-firmware-gcc.patch \
gnu/packages/patches/ath9k-htc-firmware-objcopy.patch \
gnu/packages/patches/audacity-fix-ffmpeg-binding.patch \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/avahi-localstatedir.patch \
gnu/packages/patches/avrdude-fix-libusb.patch \
@ -373,7 +387,9 @@ dist_patch_DATA = \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/binutils-loongson-workaround.patch \
gnu/packages/patches/bitlbee-configure-doc-fix.patch \
gnu/packages/patches/calibre-drop-unrar.patch \
gnu/packages/patches/calibre-no-updates-dialog.patch \
gnu/packages/patches/cdparanoia-fpic.patch \
gnu/packages/patches/chmlib-inttypes.patch \
gnu/packages/patches/clucene-pkgconfig.patch \
@ -390,7 +406,6 @@ dist_patch_DATA = \
gnu/packages/patches/cssc-gets-undeclared.patch \
gnu/packages/patches/cssc-missing-include.patch \
gnu/packages/patches/clucene-contribs-lib.patch \
gnu/packages/patches/curl-gss-api-fix.patch \
gnu/packages/patches/cursynth-wave-rand.patch \
gnu/packages/patches/dbus-localstatedir.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
@ -399,12 +414,22 @@ dist_patch_DATA = \
gnu/packages/patches/doxygen-tmake.patch \
gnu/packages/patches/duplicity-piped-password.patch \
gnu/packages/patches/duplicity-test_selection-tmp.patch \
gnu/packages/patches/elfutils-tests-ptrace.patch \
gnu/packages/patches/emacs-exec-path.patch \
gnu/packages/patches/eudev-rules-directory.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flashrom-use-libftdi1.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/fltk-shared-lib-defines.patch \
gnu/packages/patches/fuse-CVE-2015-3202.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-arm-link-spec-fix.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gcc-libvtv-runpath.patch \
gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \
gnu/packages/patches/geoclue-config.patch \
gnu/packages/patches/ghostscript-runpath.patch \
gnu/packages/patches/gitolite-openssh-6.8-compat.patch \
gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
@ -414,22 +439,32 @@ dist_patch_DATA = \
gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-locales.patch \
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
gnu/packages/patches/gnutls-fix-duplicate-manpages.patch \
gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
gnu/packages/patches/gobject-introspection-cc.patch \
gnu/packages/patches/gobject-introspection-girepository.patch \
gnu/packages/patches/grep-CVE-2015-1345.patch \
gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/grub-freetype.patch \
gnu/packages/patches/gstreamer-0.10-bison3.patch \
gnu/packages/patches/gstreamer-0.10-silly-test.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
gnu/packages/patches/guile-arm-fixes.patch \
gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-linux-syscalls.patch \
gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/guix-test-networking.patch \
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
gnu/packages/patches/hop-bigloo-4.0b.patch \
gnu/packages/patches/hop-linker-flags.patch \
gnu/packages/patches/icecat-CVE-2015-0797.patch \
gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch \
gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch \
gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch \
gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch \
gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch \
gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch \
gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch \
gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch \
gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch \
gnu/packages/patches/icecat-CVE-2015-2716.patch \
gnu/packages/patches/irrlicht-mesa-10.patch \
gnu/packages/patches/jbig2dec-ignore-testtest.patch \
gnu/packages/patches/kmod-module-directory.patch \
@ -442,13 +477,13 @@ dist_patch_DATA = \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/liboop-mips64-deplibs-fix.patch \
gnu/packages/patches/libmad-mips-newgcc.patch \
gnu/packages/patches/librep-rules.mk.patch \
gnu/packages/patches/libtheora-config-guess.patch \
gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/libtool-skip-tests2.patch \
gnu/packages/patches/libssh-CVE-2014-0017.patch \
gnu/packages/patches/libvpx-fix-armhf-link.patch \
gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \
gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \
gnu/packages/patches/lirc-localstatedir.patch \
gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
gnu/packages/patches/lua51-liblua-so.patch \
gnu/packages/patches/luajit-no_ldconfig.patch \
@ -461,6 +496,7 @@ dist_patch_DATA = \
gnu/packages/patches/mhash-keygen-test-segfault.patch \
gnu/packages/patches/mit-krb5-init-fix.patch \
gnu/packages/patches/mpc123-initialize-ao.patch \
gnu/packages/patches/mplayer2-theora-fix.patch \
gnu/packages/patches/module-init-tools-moduledir.patch \
gnu/packages/patches/mupdf-buildsystem-fix.patch \
gnu/packages/patches/mutt-CVE-2014-9116.patch \
@ -473,58 +509,85 @@ dist_patch_DATA = \
gnu/packages/patches/nvi-dbpagesize-binpower.patch \
gnu/packages/patches/nvi-db4.patch \
gnu/packages/patches/openexr-missing-samples.patch \
gnu/packages/patches/openssl-runpath.patch \
gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
gnu/packages/patches/ots-no-include-missing-file.patch \
gnu/packages/patches/patchelf-page-size.patch \
gnu/packages/patches/patchelf-rework-for-arm.patch \
gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
gnu/packages/patches/pavucontrol-sigsegv.patch \
gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
gnu/packages/patches/perl-module-pluggable-search.patch \
gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/perl-tk-x11-discover.patch \
gnu/packages/patches/petsc-fix-threadcomm.patch \
gnu/packages/patches/pingus-sdl-libs-config.patch \
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
gnu/packages/patches/polkit-drop-test.patch \
gnu/packages/patches/portaudio-audacity-compat.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/pulseaudio-fix-mult-test.patch \
gnu/packages/patches/pulseaudio-longer-test-timeout.patch \
gnu/packages/patches/pycairo-wscript.patch \
gnu/packages/patches/pybugz-encode-error.patch \
gnu/packages/patches/pybugz-stty.patch \
gnu/packages/patches/pyqt-configure.patch \
gnu/packages/patches/python-fix-tests.patch \
gnu/packages/patches/python-libffi-mips-n32-fix.patch \
gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch \
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \
gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
gnu/packages/patches/qemu-CVE-2015-3456.patch \
gnu/packages/patches/qt4-ldflags.patch \
gnu/packages/patches/qt4-tests.patch \
gnu/packages/patches/qt5-conflicting-typedefs.patch \
gnu/packages/patches/qt5-runpath.patch \
gnu/packages/patches/r-fix-15899.patch \
gnu/packages/patches/ratpoison-shell.patch \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/ripperx-libm.patch \
gnu/packages/patches/scheme48-tests.patch \
gnu/packages/patches/scotch-test-threading.patch \
gnu/packages/patches/sdl-libx11-1.6.patch \
gnu/packages/patches/serf-comment-style-fix.patch \
gnu/packages/patches/serf-deflate-buckets-test-fix.patch \
gnu/packages/patches/slim-session.patch \
gnu/packages/patches/slim-config.patch \
gnu/packages/patches/slim-sigusr1.patch \
gnu/packages/patches/soprano-find-clucene.patch \
gnu/packages/patches/source-highlight-regexrange-test.patch \
gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch \
gnu/packages/patches/superlu-dist-scotchmetis.patch \
gnu/packages/patches/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/texi2html-document-encoding.patch \
gnu/packages/patches/texi2html-i18n.patch \
gnu/packages/patches/udev-gir-libtool.patch \
gnu/packages/patches/tvtime-gcc41.patch \
gnu/packages/patches/tvtime-pngoutput.patch \
gnu/packages/patches/tvtime-videodev2.patch \
gnu/packages/patches/tvtime-xmltv.patch \
gnu/packages/patches/unzip-CVE-2014-8139.patch \
gnu/packages/patches/unzip-CVE-2014-8140.patch \
gnu/packages/patches/unzip-CVE-2014-8141.patch \
gnu/packages/patches/util-linux-tests.patch \
gnu/packages/patches/upower-builddir.patch \
gnu/packages/patches/valgrind-glibc-2.21.patch \
gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/vtk-mesa-10.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch \
gnu/packages/patches/weex-vacopy.patch \
gnu/packages/patches/wicd-template-instantiation.patch \
gnu/packages/patches/wicd-urwid-1.3.patch \
gnu/packages/patches/wmctrl-64-fix.patch \
gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch \
gnu/packages/patches/wpa-supplicant-2015-2-fix.patch \
gnu/packages/patches/wpa-supplicant-2015-3-fix.patch \
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch \
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch \
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch \
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch \
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch \
gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \
gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \
gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \
@ -538,6 +601,7 @@ dist_patch_DATA = \
gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch \
gnu/packages/patches/xf86-video-r128-glibc-2.20.patch \
gnu/packages/patches/xf86-video-siliconmotion-remove-mibstore.patch \
gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch \
gnu/packages/patches/xf86-video-sis-update-api.patch \
gnu/packages/patches/xf86-video-tdfx-remove-mibstore.patch \
gnu/packages/patches/xf86-video-tga-remove-mibstore.patch \
@ -547,6 +611,9 @@ dist_patch_DATA = \
gnu/packages/patches/xmodmap-asprintf.patch \
gnu/packages/patches/zathura-plugindir-environment-variable.patch
MISC_DISTRO_FILES = \
gnu/packages/ld-wrapper.in
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux

4
gnu/artwork.scm

@ -32,9 +32,9 @@
(method git-fetch)
(uri (git-reference
(url "git://git.savannah.gnu.org/guix/guix-artwork.git")
(commit "61ae7c8")))
(commit "6998d30")))
(sha256
(base32
"102fxk2l6b0ibry3n430q8ljhwrnbml9qgalzkz6v09r7sx6a532"))))
"0k7j3pj9s3zqiqmfkapypssvzx3f12yr0cc2rbzxqfii0b4clp1j"))))
;;; artwork.scm ends here

95
gnu/build/activation.scm

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@ -30,6 +30,7 @@
activate-/bin/sh
activate-modprobe
activate-firmware
activate-ptrace-attach
activate-current-system))
;;; Commentary:
@ -40,6 +41,24 @@
;;;
;;; Code:
(define (enumerate thunk)
"Return the list of values returned by THUNK until it returned #f."
(let loop ((entry (thunk))
(result '()))
(if (not entry)
(reverse result)
(loop (thunk) (cons entry result)))))
(define (current-users)
"Return the passwd entries for all the currently defined user accounts."
(setpw)
(enumerate getpwent))
(define (current-groups)
"Return the group entries for all the currently defined user groups."
(setgr)
(enumerate getgrent))
(define* (add-group name #:key gid password system?
(log-port (current-error-port)))
"Add NAME as a user group, with the given numeric GID if specified."
@ -59,6 +78,11 @@
(define (dot-or-dot-dot? file)
(member file '("." "..")))
(define (make-file-writable file)
"Make FILE writable for its owner.."
(let ((stat (lstat file))) ;XXX: symlinks
(chmod file (logior #o600 (stat:perms stat)))))
(define* (copy-account-skeletons home
#:optional (directory %skeleton-directory))
"Copy the account skeletons from DIRECTORY to HOME."
@ -66,8 +90,21 @@
string<?)))
(mkdir-p home)
(for-each (lambda (file)
(copy-file (string-append directory "/" file)
(string-append home "/" file)))
(let ((target (string-append home "/" file)))
(copy-file (string-append directory "/" file) target)
(make-file-writable target)))
files)))
(define* (make-skeletons-writable home
#:optional (directory %skeleton-directory))
"Make sure that the files that have been copied from DIRECTORY to HOME are
owner-writable in HOME."
(let ((files (scandir directory (negate dot-or-dot-dot?)
string<?)))
(for-each (lambda (file)
(let ((target (string-append home "/" file)))
(when (file-exists? target)
(make-file-writable target))))
files)))
(define* (add-user name group
@ -109,7 +146,14 @@ properties. Return #t on success."
,@(if password `("-p" ,password) '())
,@(if system? '("--system") '())
,name)))
(zero? (apply system* "useradd" args)))))
(and (zero? (apply system* "useradd" args))
(begin
;; Since /etc/skel is a link to a directory in the store where
;; all files have the writable bit cleared, and since 'useradd'
;; preserves permissions when it copies them, explicitly make
;; them writable.
(make-skeletons-writable home)
#t)))))
(define* (modify-user name group
#:key uid comment home shell password system?
@ -128,6 +172,17 @@ properties. Return #t on success."
,name)))
(zero? (apply system* "usermod" args))))
(define* (delete-user name #:key (log-port (current-error-port)))
"Remove user account NAME. Return #t on success. This may fail if NAME is
logged in."
(format log-port "deleting user '~a'...~%" name)
(zero? (system* "userdel" name)))
(define* (delete-group name #:key (log-port (current-error-port)))
"Remove group NAME. Return #t on success."
(format log-port "deleting group '~a'...~%" name)
(zero? (system* "groupdel" name)))
(define* (ensure-user name group
#:key uid comment home shell password system?
(supplementary-groups '())
@ -186,8 +241,22 @@ numeric gid or #f."
#:system? system?))))
groups)
;; Finally create the other user accounts.
(for-each activate-user users))
;; Create the other user accounts.
(for-each activate-user users)
;; Finally, delete extra user accounts and groups.
(for-each delete-user
(lset-difference string=?
(map passwd:name (current-users))
(match users
(((names . _) ...)
names))))
(for-each delete-group
(lset-difference string=?
(map group:name (current-groups))
(match groups
(((names . _) ...)
names)))))
(define (activate-etc etc)
"Install ETC, a directory in the store, as the source of static files for
@ -292,6 +361,20 @@ by itself, without having to resort to a \"user helper\"."
(lambda (port)
(display directory port))))
(define (activate-ptrace-attach)
"Allow users to PTRACE_ATTACH their own processes.
This works around a regression introduced in the default \"security\" policy
found in Linux 3.4 onward that prevents users from attaching to their own
processes--see Yama.txt in the Linux source tree for the rationale. This
sounds like an unacceptable restriction for little or no security
improvement."