Your Distro Is a Scheme Library Hacking Your Way Through the GNU Guix API

Your Distro Is a Scheme Library Hacking Your Way Through the GNU Guix API

Your distro is a Scheme library Hacking your way through the GNU Guix API Ludovic Courtes` FOSDEM 2016 The Emacs of distros When large numbers of nontechnical workers are using a programmable editor, they will be tempted constantly to begin programming in the course of their day-to-day lives. This should contribute greatly to computer literacy [...] – Stallman, 1981 user freedom = access + empowerment $ guix package -i emacs guile ? #1. Packages & package lookup. #2. The store. build processes chroot, separate UIDs Guile Scheme (guix packages) , make, etc. , make, etc. , make, etc. (guix store) Guile Guile Guile build daemon build processes chroot, separate UIDs Guile Scheme (guix packages) , make, etc. , make, etc. , make, etc. (guix store) Guile Guile Guile build daemon RPCs build processes chroot, separate UIDs Guile Scheme (guix packages) , make, etc. , make, etc. , make, etc. (guix store) Guile Guile Guile build daemon RPCs #3. From packages to derivations. coreutils-8.24 libcap-2.24 acl-2.2.52 gmp-6.1.0 attr-2.4.47 m4-1.4.17 perl-5.22.1 gettext-0.19.7 expat-2.1.0 9 nodes guix graph --type=package coreutils coreutils-8.24 libcap-2.24 acl-2.2.52 gmp-6.1.0 Whereattr-2.4.47 are GCC, libc, etc.?m4-1.4.17 perl-5.22.1 gettext-0.19.7 expat-2.1.0 9 nodes guix graph --type=package coreutils coreutils-8.24 acl-2.2.52 libcap-2.24 attr-2.4.47 gettext-0.19.7 gmp-6.1.0 expat-2.1.0 perl-5.22.1 m4-1.4.17 tar-1.28 patch-2.7.5 sed-4.2.2 bzip2-1.0.6 diffutils-3.3 findutils-4.6.0 gzip-1.6 xz-5.2.2 gcc-4.9.3 coreutils-8.24 file-5.25 glibc-2.22 grep-2.22 glibc-utf8-locales-2.22 make-4.1 bash-4.3.42 ld-wrapper-0 binutils-2.25.1 gawk-4.1.3 28 nodes guix graph --type=bag-emerged coreutils coreutils-8.24 acl-2.2.52 libcap-2.24 attr-2.4.47 What about the compiler’s compiler, etc.? gettext-0.19.7 gmp-6.1.0 expat-2.1.0 perl-5.22.1 m4-1.4.17 tar-1.28 patch-2.7.5 sed-4.2.2 bzip2-1.0.6 diffutils-3.3 findutils-4.6.0 gzip-1.6 xz-5.2.2 gcc-4.9.3 coreutils-8.24 file-5.25 glibc-2.22 grep-2.22 glibc-utf8-locales-2.22 make-4.1 bash-4.3.42 ld-wrapper-0 binutils-2.25.1 gawk-4.1.3 28 nodes guix graph --type=bag-emerged coreutils coreutils-8.24 acl-2.2.52 libcap-2.24 attr-2.4.47 gmp-6.1.0 gettext-0.19.7 m4-1.4.17 expat-2.1.0 perl-5.22.1 glibc-utf8-locales-2.22 ld-wrapper-0 patch-2.7.5 gawk-4.1.3 ed-1.12 gzip-1.6 file-5.25 findutils-4.6.0 libsigsegv-2.10 bzip2-1.0.6 sed-4.2.2 diffutils-3.3 xz-5.2.2 tar-1.28 lzip-1.16 grep-2.22 coreutils-8.24 libcap-2.24 acl-2.2.52 attr-2.4.47 make-4.1 gmp-6.1.0 gettext-0.19.7 pkg-config-0.29 perl-boot0-5.22.1 perl-5.22.1 m4-1.4.17 expat-2.1.0 guile-2.0.11 glibc-utf8-locales-2.22 readline-6.3 gmp-6.1.0 libgc-7.4.2 gzip-1.6 gzip-1.6 libunistring-0.9.6 libltdl-2.4.6 pkg-config-0.29 libffi-3.2.1 libatomic-ops-7.4.2 ncurses-6.0 m4-1.4.17 bash-4.3.42 readline-6.3 ncurses-6.0 gcc-4.9.3 gcc-4.9.3 ld-wrapper-boot3-0 binutils-2.25.1 zlib-1.2.8 libstdc++-4.9.3 guile-bootstrap-2.0 gcc-cross-boot0-wrapped-4.9.3 glibc-2.22 bash-static-4.3.42 gcc-cross-boot0-wrapped-4.9.3 glibc-intermediate-2.22 gettext-boot0-0.19.7 linux-libre-headers-3.14.37 texinfo-6.0 gcc-cross-boot0-4.9.3 bison-3.0.4 perl-boot0-5.22.1 m4-1.4.17 binutils-cross-boot0-2.25.1 file-boot0-5.25 findutils-boot0-4.6.0 diffutils-boot0-3.3 make-boot0-4.1 gcc-bootstrap-0 binutils-bootstrap-0 bootstrap-binaries-0 glibc-bootstrap-0 82 nodes guix graph --type=bag coreutils (too big) 383 nodes guix graph --type=derivation coreutils origin package bag build system derivation #4. “Staging”: hosting build-side code. build processes chroot, separate UIDs Guile Scheme (guix packages) , make, etc. , make, etc. , make, etc. (guix store) Guile Guile Guile build daemon RPCs #5. Operating system! [email protected] http://gnu.org/software/guix/ Copyright c 2010, 2012–2016 Ludovic Courtes` [email protected]. GNU GuixSD logo, CC-BY-SA 4.0, http://gnu.org/s/guix/graphics Copyright of other images included in this document is held by their respective owners. This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. At your option, you may instead copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/licenses/gfdl.html. The source of this document is available from http://git.sv.gnu.org/cgit/guix/maintenance.git..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us