all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* guix shell: error: symlink: File exists: "/bin/cc"
@ 2024-10-13 16:45 Marco Fortina
  2024-10-13 23:11 ` bug#73799: " Marco Fortina
  0 siblings, 1 reply; 3+ messages in thread
From: Marco Fortina @ 2024-10-13 16:45 UTC (permalink / raw)
  To: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 1931 bytes --]

Hello there.

I have this issue when with guix time-machine shell when using --emulate-fhs option and having gcc-toolset and clang-toolset in my manifest.scm.

I this this could be solved with this patch:

diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 9f851a478e..7a276569e9 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -512,8 +512,10 @@ (define-public (make-clang-toolchain clang libomp)
                      ;; Create 'cc' and 'c++' so that one can use it as a
                      ;; drop-in replacement for the default tool chain and
                      ;; have configure scripts find the compiler.
-                     (symlink "clang" (string-append out "/bin/cc"))
-                     (symlink "clang++" (string-append out "/bin/c++"))
+                     (unless (file-exists? "/bin/cc")
+                         (symlink "clang" (string-append out "/bin/cc")))
+                     (unless (file-exists? "/bin/c++")
+                         (symlink "clang++" (string-append out "/bin/c++")))

                      (union-build (assoc-ref %outputs "debug")
                                   (list (assoc-ref %build-inputs
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index a219b2ac89..72e56367a8 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -465,7 +465,8 @@ (define* (link-contents dir #:key (exclude '()))
   ;; bin directories will link to /bin.
   (let ((gcc-path (string-append profile "/bin/gcc")))
     (if (file-exists? gcc-path)
-        (symlink gcc-path "/bin/cc")))
+        (unless (file-exists? "/bin/cc")
+            (symlink gcc-path "/bin/cc"))))

   ;; Guix's ldconfig doesn't search in FHS default locations, so provide a
   ;; minimal ld.so.conf.


This patch will create the symlinks only if destination files is not already present.

Thanks

[-- Attachment #2: Type: text/html, Size: 7271 bytes --]

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#73799: guix shell: error: symlink: File exists: "/bin/cc"
  2024-10-13 16:45 guix shell: error: symlink: File exists: "/bin/cc" Marco Fortina
@ 2024-10-13 23:11 ` Marco Fortina
  2024-10-14 19:13   ` Rutherther via Bug reports for GNU Guix
  0 siblings, 1 reply; 3+ messages in thread
From: Marco Fortina @ 2024-10-13 23:11 UTC (permalink / raw)
  To: 73799

[-- Attachment #1: Type: text/plain, Size: 1931 bytes --]

Hello there.

I have this issue when with guix time-machine shell when using --emulate-fhs option and having gcc-toolset and clang-toolset in my manifest.scm.

I this this could be solved with this patch:

diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 9f851a478e..7a276569e9 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -512,8 +512,10 @@ (define-public (make-clang-toolchain clang libomp)
                      ;; Create 'cc' and 'c++' so that one can use it as a
                      ;; drop-in replacement for the default tool chain and
                      ;; have configure scripts find the compiler.
-                     (symlink "clang" (string-append out "/bin/cc"))
-                     (symlink "clang++" (string-append out "/bin/c++"))
+                     (unless (file-exists? "/bin/cc")
+                         (symlink "clang" (string-append out "/bin/cc")))
+                     (unless (file-exists? "/bin/c++")
+                         (symlink "clang++" (string-append out "/bin/c++")))

                      (union-build (assoc-ref %outputs "debug")
                                   (list (assoc-ref %build-inputs
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index a219b2ac89..72e56367a8 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -465,7 +465,8 @@ (define* (link-contents dir #:key (exclude '()))
   ;; bin directories will link to /bin.
   (let ((gcc-path (string-append profile "/bin/gcc")))
     (if (file-exists? gcc-path)
-        (symlink gcc-path "/bin/cc")))
+        (unless (file-exists? "/bin/cc")
+            (symlink gcc-path "/bin/cc"))))

   ;; Guix's ldconfig doesn't search in FHS default locations, so provide a
   ;; minimal ld.so.conf.


This patch will create the symlinks only if destination files is not already present.

Thanks

[-- Attachment #2: Type: text/html, Size: 7679 bytes --]

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#73799: guix shell: error: symlink: File exists: "/bin/cc"
  2024-10-13 23:11 ` bug#73799: " Marco Fortina
@ 2024-10-14 19:13   ` Rutherther via Bug reports for GNU Guix
  0 siblings, 0 replies; 3+ messages in thread
From: Rutherther via Bug reports for GNU Guix @ 2024-10-14 19:13 UTC (permalink / raw)
  To: 73799; +Cc: Marco Fortina


Hey Marco,

that llvm.scm change is actually irrelevant to the problem. There
will never be cc in the llvm package itself before the condition.
It occurs prior to the profile merging.
There is no fhs in that case
so checking for /bin/cc does not make sense, moreover
it could pose a problem if one built without a sandbox
on a foreign distro. Then the package output could differ
because /bin/gcc or /bin/c++ exist.

As for the change in environment.scm, that is indeed
what causes the issue.
Since there is an if already, maybe it would make sense to
not introduce another condition statement, but to extend
the existing if?

Regards,
Rutherther




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-10-14 19:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-13 16:45 guix shell: error: symlink: File exists: "/bin/cc" Marco Fortina
2024-10-13 23:11 ` bug#73799: " Marco Fortina
2024-10-14 19:13   ` Rutherther via Bug reports for GNU Guix

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.