aboutsummaryrefslogtreecommitdiff
path: root/nix/libstore/misc.hh
blob: edbf24047eddcde8ffdaa07e954cd6ed16f3e65d (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once

#include "derivations.hh"


namespace nix {


/* Read a derivation, after ensuring its existence through
   ensurePath(). */
Derivation derivationFromPath(StoreAPI & store, const Path & drvPath);

/* Place in `paths' the set of all store paths in the file system
   closure of `storePath'; that is, all paths than can be directly or
   indirectly reached from it.  `paths' is not cleared.  If
   `flipDirection' is true, the set of paths that can reach
   `storePath' is returned; that is, the closures under the
   `referrers' relation instead of the `references' relation is
   returned. */
void computeFSClosure(StoreAPI & store, const Path & path,
    PathSet & paths, bool flipDirection = false,
    bool includeOutputs = false, bool includeDerivers = false);

/* Return the path corresponding to the output identifier `id' in the
   given derivation. */
Path findOutput(const Derivation & drv, string id);

bool willBuildLocally(const Derivation & drv);

bool substitutesAllowed(const Derivation & drv);


}
c7180a9d8316f9d52b6f7a20d5e8d'>guix-install.sh: Fix setting GUIX_LOCPATH....After installing Guix home on my new foreign system, the locale did not work and GDM did not even let me to log in. After some digging around using tty3 and tty4, I realized the GUIX_LOCPATH is not being set properly. I had nothing installed in the ~/.guix-profile (the symlink did not even exist) and I had glibc-locales installed in ~/.guix-home, yet GUIX_LOCPATH contained "$HOME/.guix-profile/lib/locale:". I believe when the code was modified from the original "home or profile" to the current "home and profile" the || was used by accident instead of &&. I also remove the trailing :, since it is taken care of by the ${...:+:}. * etc/guix-install.sh (sys_create_init_profile): Change-Id: I8a3287fe809af58aee2edc924154eecf91fa1eb8 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Tomas Volf 2024-04-29guix-install.sh: Add default value for XCURSOR_PATH....This improves compatibility with (at least) Gnome based systems. On my new Ubuntu 22.04 install the mouse cursor was broken (after I installed Guix) until I set this. * etc/guix-install.sh (sys_create_init_profile): Set default value for XCURSOR_PATH. Change-Id: I489f0307d99e4d8d82671f291c78b90c7b6dae4a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Tomas Volf 2024-04-07guix-install.sh: Make Guix modules available too....* etc/guix-install.sh (GUILE_LOAD_PATH): Prepend directory to current Guix modules. (GUILE_LOAD_COMPILED_PATH): Likewise to compiled modules. Change-Id: I0b2722a38b1f8ebab32142cbc372a23cadfb0620 Janneke Nieuwenhuizen 2024-04-05guix-install.sh: Add ‘--uninstall’ flag....* etc/guix-install.sh (REQUIRE): Add groupdel and userdel. (chk_term): Handle ‘WAR’. (sys_delete_store, sys_delete_build_user, sys_delete_guix_daemon) (sys_delete_init_profile, sys_delete_user_profiles): New functions. (main): Rename to… (main_install): … this. (main_uninstall): New function. (main): Dispatch between these two. * doc/guix.texi (Installation): Refer to “Binary Installation” instead of repeating it. (Binary Installation): Document uninstallation. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Change-Id: I55b7c10823773bced2e268273e8ce828cb3bd98d Ludovic Courtès 2024-04-03Switch order of the default substitute servers....The aim here is to improve the user experience. There's anecdotal evidence that the network performance for bordeaux is better compared to ci at least for some users, and I don't know of any issues with rate limiting or access restriction for bordeaux compared to ci. It also has IPv6 support. Additionally, bordeaux generally had more substitutes than ci, particularly for aarch64-linux and armhf-linux. This change will offer a very slight speedup for those substitutes that only bordeaux has. Bordeaux has been a default substitute server for nearly 3 years now and I think this change is overdue. I'm also hopeful that we'll be able to build on the testing regarding mirrors for bordeaux, and that'll allow potentially improving the hosting setup (through providing more redundancy) and further improving substitute fetching for users who currently have issues with substitute access. * config-daemon.ac: Switch substitute urls order. * doc/guix.texi: Ditto. * etc/guix-install.sh: Ditto. * gnu/installer/newt/network.scm (wait-service-online): Ditto. * guix/store.scm (%default-substitute-urls): Ditto. Change-Id: I4f6d93ae1fc8b03d80b47b18b5749a51f1fde17b Signed-off-by: Christopher Baines <mail@cbaines.net> Christopher Baines 2023-07-16guix-install.sh: Fix incomplete installation....‘false || return’ returns false, and ‘set -e’ aborts the script. This leaves Guix half installed with visual indication of error. * etc/guix-install.sh (sys_customize_bashrc, sys_maybe_setup_selinux): Explicitly return 0. Tobias Geerinckx-Rice 2023-07-16guix-install.sh: Install SELinux policy only if tools are present....* etc/guix-install.sh (sys_maybe_setup_selinux): Silently return if the ‘semodule’ or ‘restorecon’ commands are missing. Tobias Geerinckx-Rice 2023-07-09guix-install.sh: Remove any old systemd units first....Don't clobber /dev/null permissions if units are masked. * etc/guix-install.sh (sys_enable_guix_daemon): Factor out unit installation. Unconditionally remove any old units. Install and enable gnu-store.mount after guix-daemon.service. Tobias Geerinckx-Rice 2023-07-09guix-install.sh: Don't patch guix-daemon.service....* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete sed invocations. Tobias Geerinckx-Rice 2023-07-09guix-install.sh: Unconditionally install gnu-store.mount....* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete conditional. Tobias Geerinckx-Rice 2023-07-05guix-install.sh: Don't extract the binary ‘.’....* etc/guix-install.sh (sys_create_store): Strip the first tar file name component. Tobias Geerinckx-Rice 2023-05-25guix-install.sh: Install SELinux policy and relabel file systems if needed....Fixes <https://issues.guix.gnu.org/62487>. * etc/guix-install.sh (sys_maybe_setup_selinux): New function. (main): Use it. Ludovic Courtès 2023-04-24guix-install.sh: Fix GUIX_ALLOW_OVERWRITE condition....Before this change, the "Overwriting existing installation!" would be displayed erroneously. * etc/guix-install.sh (sys_create_store): Fix overwrite conditional. Maxim Cournoyer 2023-04-09guix-install.sh: Source both profiles, default user's and home....* etc/guix-install.sh (sys_create_init_profile): Source both profiles, default user's and home. Andrew Tropin 2023-02-17guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable....The need for this use case appeared when attempting to install Guix on a truly minimal image made with Buildroot, which lacked enough GNU components that I had to extract a guix pack to /gnu before attempting installation, which would then refuse to proceed because of the existing /gnu. * etc/guix-install.sh: Document environment variables. (sys_create_store) [GUIX_ALLOW_OVERWRITE]: Skip pre-existing installation checks and output a warning. Extract the tarball directly to /. Maxim Cournoyer 2022-12-16guix-install.sh: Directly exit in case of errors in chk_require....* etc/guix-install.sh (chk_require): Directly exit in case of errors in chk_require, instead of relying on 'set -e'. Maxim Cournoyer 2022-12-16guix-install.sh: Add missing "useradd" command....* etc/guix-install.sh: (REQUIRE): Add missing "useradd" command. Maxim Cournoyer 2022-12-11guix-install.sh: Gracefully fail on | bash....* etc/guix-install.sh (welcome): Print an error message and a hint if the first read fails. Tobias Geerinckx-Rice 2022-12-09guix-install.sh: Authorize all project build farms at once....* etc/guix-install.sh (sys_authorize_build_farms): Iterate over all hosts. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Tobias Geerinckx-Rice 2022-11-16guix-install.sh: Expand mktemp template for busybox compatibility....Fixes <https://issues.guix.gnu.org/58858>. * etc/guix-install.sh (main): Use 6 'X' characters in the template, as this is the minimum required by Busybox's mktemp (which matches glibc's mktemp behavior). Reported-by: conses <contact@conses.eu> Maxim Cournoyer 2022-11-14guix-install.sh: Remove unnecessary XDG_DATA_DIRS export....This started out as a bug-fix for a GUI login loop that was resulting from XDG_DATA_DIRS not including any of the host distro's directories. The solution was to export the vari- able (with fail-safe defaults) before source-ing GUIX_PROFILE/etc/profile. It turns out changes have already been made to ensure that XDG_DATA_DIRS, etc. are always exported before anything guix-specific. So, this export is no longer necessary. For reference, the aforementioned bug was found on a Debian 11 machine and it's guix.sh init profile for guix version 1.2. * etc/guix-install.sh (sys_create_init_profile): Remove unnecessary XDG_DATA_DIRS export. Signed-off-by: 宋文武 <iyzsong@member.fsf.org> Prafulla Giri 2022-11-08guix-install.sh: Run guix.sh script in /etc/profile.d last....* etc/guix-install.sh: Rename /etc/profile.d/guix.sh to zzz-guix.sh. This script refers to environment variables set by the host distribution. They may be set in other scripts in /etc/profile.d, which must therefore be run first. Example: in Ubuntu 20.04, XDG_DATA_DIRS is set in /etc/profile.d/xdg_dirs_desktop_session.sh Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Konrad Hinsen 2022-10-16guix-install.sh: Cosmetically tweak non-interactive output....Avoid printing Press return to continue...[1666352494.051]: Starting installation… [1666352648.869]: … when the return itself wasn't echoed on the console. * etc/guix-install.sh (welcome): Add a carriage return to the prompt, so that the next line of output may overwrite it. Tobias Geerinckx-Rice 2022-10-16guix-install.sh: Warn if we suspect dodgy automation....This doesn't affect the installation (yet), but reserves the right to default to safe values other than ‘y’ in future. * etc/guix-install.sh (welcome): Warn if the ‘return’ wasn't. Tobias Geerinckx-Rice 2022-10-16guix-install.sh: Treat all uncaught errors as fatal....* etc/guix-install.sh: Set -o pipefail. Tobias Geerinckx-Rice 2022-10-16guix-install.sh: Suggest what to do if fetching OpenPGP key(s) fails....* etc/guix-install.sh (chk_gpg_keyring): Report an _err and set the exit_flag if wget | gpg --import fails. Tobias Geerinckx-Rice 2022-10-16guix-install.sh: Time out fetching OpenPGP keys....The default 900s provide no useful backstop in interactive use. * etc/guix-install.sh (chk_gpg_keyring): Add a 30s wget --timeout. Tobias Geerinckx-Rice 2022-10-11guix-install.sh: Restore compatibility with "yes" invocation....Commit 6a2e303d3a had modified prompt_yes_no to only read a single character, aiming to ease the user experience. This was, in retrospect, a bad idea, as it makes user input error more likely and introduces complexity. This commit reverts to line-oriented input, while preserving the default yes value so that a user can simply hit 'Enter' at the prompt in place of typing "yes". * etc/guix-install.sh (_flush): Delete function. (prompt_yes_no): Restore line-oriented read. Remove loop. Make anything else than yes means no. Use Bash features to streamline definition. Reported-by: Lars-Dominik Braun <lars@6xq.net> and others. Maxim Cournoyer 2022-10-07guix-install.sh: Add Bash prompt customization option....Fixes <https://issues.guix.gnu.org/55484>. * etc/guix-install.sh (sys_customize_bashrc): New function. (main): Use it. Maxim Cournoyer 2022-10-07guix-install.sh: Introduce 'die' utility function....* etc/guix-install.sh (die): New function. (chk_sys_arch): Use it. (guix_get_bin_list, guix_get_bin, sys_create_store): Likewise. Maxim Cournoyer 2022-10-07guix-install.sh: Improve prompt_yes_no procedure....* etc/guix-install.sh (_flush): New function. (prompt_yes_no): Clear input, then only read the first character, silently. Add the [Yes/no] string to the message. When a newline is entered by the user, treat it as the default value, which is "yes". (chk_gpg_keyring): Remove "(yes/no)" from the prompt message. (configure_substitute_discovery): Likewise. (sys_authorize_build_farms): Likewise. Maxim Cournoyer