Subject: Re: bug#35691: [bug-guix] remote configure failure due to bad pathnames for crt*.o

From: Ludovic Courtès <[email-masked]>
Date: Wed, 15 May 2019 18:29:06 +0200

Hi Nelson,

(Please keep the bug Cc’d.)

"Nelson H. F. Beebe" <[email-masked]> skribis:

> Here is what I find about installed gcc-related packages:
>
> 	$ guix package --list-installed |grep gcc
> 	gccgo   4.9.4   out     /gnu/store/7108fl31hfj9lb4y76g89sxdb43c1wpc-gccgo-4.9.4
> 	gcc-objc        8.3.0   out     /gnu/store/44r4xl10nmix25bv6bv974r280vc232c-gcc-objc-8.3.0
> 	gcc-objc++      8.3.0   out     /gnu/store/wqycqqp4almqcmmsj7gys56lyk9girvq-gcc-objc++-8.3.0
> 	gcc-bootstrap   0       out     /gnu/store/fgarfy5392vz5hik1ag5b8ccv0r4cm01-gcc-bootstrap-0
> 	gcc-toolchain   9.1.0   out     /gnu/store/aqv6njg05w2yqh8krgrjy0wcbfxb4nn3-gcc-toolchain-9.1.0

It’s crowded here.  Please remove everything but ‘gcc-toolchain’.

Now, if you want to have Objective-C support, you of course have to
install ‘gcc-objc’ and/or ‘gcc-objc++’.  However, you’ll have to make
sure that they come after ‘gcc-toolchain’ in your profile, like so:

  guix install gcc-toolchain gcc-objc

> Maybe it is related to another problem that I wanted to eventually
> raise on a guix list.  Namely, after installing the new GUIX 1.0 VM, I
> found that /usr/bin, /usr/sbin, and /sbin do not exist, and /bin
> contains only /bin/sh.  Even after numerous "guix install" runs, /bin
> continues to have only one entry.

Correct.

> This seems bizarre, because it is long-standing practice that
> shell scripts should set PATH to a limited value to avoid
> trojan attacks, and things like "/bin/rm foo" should always work.

The GNU build system purposefully makes no assumptions on the location
of tools: ‘configure.ac’ files have AC_PROG_SED, AC_PATH_PROG, and
similar calls.

> On your GUIX systems, do you have a reasonably populated /bin?  Ditto
> the other three.

No.  By default, one gets /bin/sh, and nothing more.

This is a radical departure from Unix tradition, but (1) GNU’s Not Unix
;-), and (2) the lack of a global name space gives rise to many
interesting properties: transactional upgrades and rollbacks are now
possible, per-user profiles, on-the-fly environments with ‘guix
environment’, etc.

>   (packages
>     (list (specification->package "nss-certs")))

Note that this is bogus, due to
<https://issues.guix.gnu.org/issue/35541>, which will be fixed in
Guix 1.0.1 in the coming days.

You should write:

  (packages (append (list (specification->package "nss-certs"))
                    %base-packages))

to get the full set of “base packages” (Coreutils, grep, etc.) in $PATH
by default.

Once you’ve made that change, you have to reconfigure your system:

  guix system reconfigure /etc/config.scm

HTH!

Thanks,
Ludo’.