diff mbox series

[bug#50967,3/3] guix: scripts: Make sure profile directory exists.

Message ID 20211004231331.5269-3-go.wigust@gmail.com
State Accepted
Headers show
Series [bug#50967,1/3] gnu: Move (gnu home-services) to (gnu home services). | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Oleg Pykhalov Oct. 4, 2021, 11:13 p.m. UTC
* guix/scripts/home.scm (process-action): Make sure profile directory exists.
* tests/guix-home.sh: New file.
* Makefile.am (SH_TESTS): Add this.
---
 Makefile.am           |  1 +
 guix/scripts/home.scm |  2 ++
 tests/guix-home.sh    | 73 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+)
 create mode 100644 tests/guix-home.sh

Comments

Oleg Pykhalov Oct. 5, 2021, 10:20 a.m. UTC | #1
Oleg Pykhalov <go.wigust@gmail.com> writes:

> * guix/scripts/home.scm (process-action): Make sure profile directory exists.
> * tests/guix-home.sh: New file.
> * Makefile.am (SH_TESTS): Add this.
> ---
>  Makefile.am           |  1 +
>  guix/scripts/home.scm |  2 ++
>  tests/guix-home.sh    | 73 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 76 insertions(+)
>  create mode 100644 tests/guix-home.sh
>
> diff --git a/Makefile.am b/Makefile.am
> index b66789fa0b..5bf2567dc8 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -546,6 +546,7 @@ SH_TESTS =					\
>    tests/guix-package-aliases.sh			\
>    tests/guix-package-net.sh			\
>    tests/guix-system.sh				\
> +  tests/guix-home.sh				\
>    tests/guix-archive.sh				\
>    tests/guix-authenticate.sh			\
>    tests/guix-environment.sh			\
> diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
> index 75df6d707d..115dfadb57 100644
> --- a/guix/scripts/home.scm
> +++ b/guix/scripts/home.scm
> @@ -1,6 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
>  ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
> +;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -179,6 +180,7 @@ ACTION must be one of the sub-commands that takes a home environment
>  declaration as an argument (a file name.)  OPTS is the raw alist of options
>  resulting from command-line parsing."
>    (define (ensure-home-environment file-or-exp obj)
> +    (ensure-profile-directory)
>      (unless (home-environment? obj)
>        (leave (G_ "'~a' does not return a home environment ~%")
>               file-or-exp))
> diff --git a/tests/guix-home.sh b/tests/guix-home.sh
> new file mode 100644
> index 0000000000..e79982b7f7
> --- /dev/null
> +++ b/tests/guix-home.sh
> @@ -0,0 +1,73 @@
> +#!/bin/sh
> +
> +# GNU Guix --- Functional package management for GNU
> +# Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
> +#

[…]

Well, guix home reconfigure will break your ~/.bashrc.  Sorry.

Don't use this "test".
Ludovic Courtès Oct. 6, 2021, 9:22 p.m. UTC | #2
Hi,

Oleg Pykhalov <go.wigust@gmail.com> skribis:

> Well, guix home reconfigure will break your ~/.bashrc.  Sorry.

Ah, thanks for letting us know.  :-)

Perhaps you need to set HOME before, or is there another way you could
achieve that?

Thanks,
Ludo’.
diff mbox series

Patch

diff --git a/Makefile.am b/Makefile.am
index b66789fa0b..5bf2567dc8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -546,6 +546,7 @@  SH_TESTS =					\
   tests/guix-package-aliases.sh			\
   tests/guix-package-net.sh			\
   tests/guix-system.sh				\
+  tests/guix-home.sh				\
   tests/guix-archive.sh				\
   tests/guix-authenticate.sh			\
   tests/guix-environment.sh			\
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 75df6d707d..115dfadb57 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -1,6 +1,7 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -179,6 +180,7 @@  ACTION must be one of the sub-commands that takes a home environment
 declaration as an argument (a file name.)  OPTS is the raw alist of options
 resulting from command-line parsing."
   (define (ensure-home-environment file-or-exp obj)
+    (ensure-profile-directory)
     (unless (home-environment? obj)
       (leave (G_ "'~a' does not return a home environment ~%")
              file-or-exp))
diff --git a/tests/guix-home.sh b/tests/guix-home.sh
new file mode 100644
index 0000000000..e79982b7f7
--- /dev/null
+++ b/tests/guix-home.sh
@@ -0,0 +1,73 @@ 
+#!/bin/sh
+
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
+#
+# 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/>.
+
+#
+# Test the 'guix home' using the external store, if any.
+#
+
+guix home --version
+
+NIX_STORE_DIR="$(guile -c '(use-modules (guix config))(display %storedir)')"
+localstatedir="$(guile -c '(use-modules (guix config))(display %localstatedir)')"
+GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
+export NIX_STORE_DIR GUIX_DAEMON_SOCKET
+
+# Run tests only when a "real" daemon is available.
+if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
+then
+    exit 77
+fi
+
+STORE_PARENT="$(dirname "$NIX_STORE_DIR")"
+export STORE_PARENT
+if test "$STORE_PARENT" = "/"; then exit 77; fi
+
+test_directory="$(mktemp -d)"
+export test_directory
+trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
+
+(
+    cd "$test_directory" || exit 77
+
+    cat > "dot-bashrc" <<'EOF'
+# dot-bashrc test file for guix home
+EOF
+
+    cat > "home.scm" <<'EOF'
+(use-modules (gnu home)
+             (gnu home-services)
+             (gnu home services shells)
+             (gnu services)
+             (guix gexp))
+
+(home-environment
+ (services
+  (list
+   (service home-bash-service-type
+            (home-bash-configuration
+             (guix-defaults? #t)
+             (bashrc
+              (list
+               (local-file (string-append (dirname (current-filename))
+                                          "/dot-bashrc")))))))))
+EOF
+)
+
+guix home reconfigure "${test_directory}/home.scm"