From mboxrd@z Thu Jan 1 00:00:00 1970 From: csanchezdll@gmail.com (Carlos =?utf-8?Q?S=C3=A1nchez?= de La Lama) Subject: Re: User-profile search paths should include system-profile directories Date: Tue, 20 Sep 2016 16:38:44 +0200 Message-ID: <7td1jyab63.fsf@gmail.com> References: <7tpoo7kk73.fsf@gmail.com> <87eg4mo7dp.fsf@gnu.org> <7th99b9g0k.fsf@gmail.com> <87bmziabse.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmMDG-0000tX-J2 for guix-devel@gnu.org; Tue, 20 Sep 2016 10:39:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bmMD6-00006t-9n for guix-devel@gnu.org; Tue, 20 Sep 2016 10:39:57 -0400 In-Reply-To: <87bmziabse.fsf@gmail.com> (Alex Kost's message of "Tue, 20 Sep 2016 17:25:21 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Alex Kost Cc: guix-devel@gnu.org Alex Kost writes: > Carlos S=C3=A1nchez de La Lama (2016-09-20 09:39 +0200) wrote: > >> Hi, >> >>>> Is this the intended behaviour? I am wondering whether packages with >>>> search paths should include both the user-profile directories and the >>>> system-profile ones. >>> >>> I think you=E2=80=99re right. This was discussed at >>> , leading to a patch (for GuixSD). >>> >>> However, we failed to build consensus around the approach of this patch, >>> so we did not apply it. If you have ideas, please email >>> 20255@debbugs.gnu.org. :-) >> >> what about something like: >> >> - /etc/profile >> # [...] >> GUIX_PROFILES=3D"/run/current-system/profile:$HOME/.guix-profile" >> . /run/current-system/profile/etc/profile >> # [...] >> . "$HOME/.guix-profile/etc/profile" >> # [...] >> >> - /run/current-system/profile/etc/profile >> profiles=3D"${GUIX_PROFILES:=3D/gnu/store/-profile}" >> export PATH=3D"${profiles//:/\/bin}/bin ${profiles//:/\/sbin}/sbin" >> # [...] >> >> >> - $HOME/.guix-profile/etc/profile >> profiles=3D"${GUIX_PROFILES:=3D/gnu/store/-profile}" >> export ACLOCAL_PATH=3D"${profiles//:/\/share/aclocal}/share/aclocal" >> # [...] >> >> That is, each profile adds all its search paths to all the profile roots >> passed in the colon separated variable GUIX_PROFILES. If GUIX_PROFILES >> is empty, it adds the search paths inside its own directory only (as >> until now). > > I think it was mentioned somewhere in the bug discussion: this will not > work for some things. For example, if a user has 'guile' in a system > profile, and several guile packages (but not 'guile' itself) in > ~/.guix-profile, then GUILE_LOAD_PATH will include > "/share/guile/site/2.0" but not > "/share/guile/site/2.0". That's why combining profiles > inside "guix package --search-paths" command looks like the only > solution. It will actually solve it, that is the case I was trying to fix in fact. The code I show will include /share/guile/site/2.0 prefixed by every root in the colon-separated list GUIX_PROFILES (note the difference with current code with has GUIX_PROFILE, singular). If GUIX_PROFILES is (as in the example): GUIX_PROFILES=3D"/run/current-system/profile:$HOME/.guix-profile" And guile is in the system profile, the line export GUILE_LOAD_PATH=3D"${profiles//://share/guile/site/2.0:}/share/guile= /site/2.0" will produce: export GUILE_LOAD_PATH=3D/run/current-system/profile/share/guile/site/2.0:$= HOME/.guix-profile/share/guile/site/2.0 As desired. Same result if guile is only in user profile, or if it is on both. Try the following in bash: profiles=3D"/run/current-system/profile:$HOME/.guix-profile:/my/third/profi= le" echo "${profiles//://share/guile/site/2.0:}/share/guile/site/2.0" BR Carlos