* GNU Guix 0.2 released @ 2013-05-12 21:59 Ludovic Courtès 2013-05-13 23:12 ` Xue Fuqiao 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-12 21:59 UTC (permalink / raw) To: bug-guix, gnu-system-discuss, guile-user, nix-dev [-- Attachment #1: Type: text/plain, Size: 6088 bytes --] We are pleased to announce GNU Guix version 0.2, the second alpha release, representing 580 commits by 5 people over 4 months. • About GNU Guix is a functional package manager and distribution of the GNU system. In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses mechanisms from the Nix package management tool, with a Guile Scheme programming interface. http://www.gnu.org/software/guix/ • Download Here are the compressed sources and a GPG detached signature[*]: ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz.sig Use a mirror for higher download bandwidth: http://www.gnu.org/order/ftp.html Here are the MD5 and SHA1 checksums: 4bdbbd736d0bbcb6cd7e28220c4ea1fe guix-0.2.tar.gz 051a65d1d7aa9a0ea69fe97d6d9a8b93fe09cca0 guix-0.2.tar.gz [*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify guix-0.2.tar.gz.sig If that command fails because you don't have the required public key, then run this command to import it: gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4 and rerun the 'gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.69 Automake 1.13.1 Makeinfo 5.1 • Changes since version 0.1 (excerpt from the NEWS file) ** Package management *** Guix commands are now sub-commands of the “guix” program Instead of typing “guix-package”, one now has to type “guix package”, and so on. This has allowed us to homogenize the user interface and initial program setup, and to allow commands to be upgradable through “guix pull”. *** New “guix package --upgrade” option As the name implies, this option atomically upgrades all the packages installed in a profile or the set of packages matching a given regexp. See “Invoking guix package” in the manual. *** New “guix package --search” option Performs a full text search in package synopses and descriptions, and returns the matching packages in recutils format. See “Invoking guix package” in the manual, for details. *** New “guix pull” command The command pulls the latest version of Guix–both the package management modules and the distribution. See the manual for details. *** New binary substituter The “substituter” mechanism allows pre-built binaries to be transparently downloaded instead of performing a build locally. Currently binaries are available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The distribution is continuously built and binaries are made available from there. See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of available binary packages. *** New “guix refresh” command The command is used by Guix maintainers. It automatically updates the distribution to the latest upstream releases of GNU software. *** New “guix hash” command Convenience command to compute the hash of a file. See the manual for details. *** Nix daemon code updated The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated to current Nix ‘master’. ** Programming interfaces *** (guix download) now supports HTTPS, using GnuTLS It allows package source tarballs to be retrieved over HTTPS. *** New ‘native-search-path’ and ‘search-path’ package fields Packages can define in their ‘native-search-path’ field environment variables that define search paths and need to be set for proper functioning of the package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc. These environment variables are automatically set when building a package that uses one of these. *** Package inputs can be a function of the target system type The ‘inputs’ field of a package can now be conditional on the value of (%current-system). This is useful for packages that take system-dependent tarballs as inputs, such as GNU/MIT Scheme. *** New build systems The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have been added. They implement the standard build systems for Perl, Python, and CMake packages. *** Tools to build Linux initrds, QEMU images, and more The (gnu packages linux-initrd) module provides a procedure to build a Linux initrd (“initial RAM disk”). The initrd embeds Guile, which is used to evaluate the given expression. The example below returns an initrd that mounts the /proc file system and starts a REPL: (expression->initrd '(begin (mkdir "/proc") (mount "none" "/proc" "proc") ((@ (system repl repl) start-repl)))) More examples in the linux-initrd.scm file. Experimental interfaces to produce and use QEMU images are provided by the (gnu system vm) module. For instance, the ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in a QEMU virtual machine running the Linux kernel and Guile. ** GNU distribution Many updates and additions have been made to the distribution. Here are the highlights. *** Major updates GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9, Coreutils 8.20, GDB 7.6, Texinfo 5.1. *** Noteworthy new packages TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo, CHICKEN, Scheme48, Hugs, Python, Lua, Samba. Please report bugs to bug-guix@gnu.org. Ludovic, on behalf of the Guix team. [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-12 21:59 GNU Guix 0.2 released Ludovic Courtès @ 2013-05-13 23:12 ` Xue Fuqiao 2013-05-15 0:56 ` Germán Arias 0 siblings, 1 reply; 17+ messages in thread From: Xue Fuqiao @ 2013-05-13 23:12 UTC (permalink / raw) To: bug-guix; +Cc: gnu-system-discuss, guile-user, nix-dev On Mon, May 13, 2013 at 5:59 AM, Ludovic Courtès <ludo@gnu.org> wrote: > We are pleased to announce GNU Guix version 0.2, the second alpha > release, representing 580 commits by 5 people over 4 months. Great news, *thanks* to everyone involved! > • About > > GNU Guix is a functional package manager and distribution of > the GNU system. > > In addition to standard package management features, Guix supports > transactional upgrades and roll-backs, unprivileged package > management, per-user profiles, and garbage collection. Guix uses > mechanisms from the Nix package management tool, with a Guile Scheme > programming interface. > > http://www.gnu.org/software/guix/ > > > • Download > > Here are the compressed sources and a GPG detached signature[*]: > ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz > ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz.sig > > Use a mirror for higher download bandwidth: > http://www.gnu.org/order/ftp.html > > Here are the MD5 and SHA1 checksums: > > 4bdbbd736d0bbcb6cd7e28220c4ea1fe guix-0.2.tar.gz > 051a65d1d7aa9a0ea69fe97d6d9a8b93fe09cca0 guix-0.2.tar.gz > > [*] Use a .sig file to verify that the corresponding file (without the > .sig suffix) is intact. First, be sure to download both the .sig file > and the corresponding tarball. Then, run a command like this: > > gpg --verify guix-0.2.tar.gz.sig > > If that command fails because you don't have the required public key, > then run this command to import it: > > gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4 > > and rerun the 'gpg --verify' command. > > This release was bootstrapped with the following tools: > Autoconf 2.69 > Automake 1.13.1 > Makeinfo 5.1 > > > • Changes since version 0.1 (excerpt from the NEWS file) > > ** Package management > > *** Guix commands are now sub-commands of the “guix” program > > Instead of typing “guix-package”, one now has to type “guix package”, and so > on. This has allowed us to homogenize the user interface and initial program > setup, and to allow commands to be upgradable through “guix pull”. > > *** New “guix package --upgrade” option > > As the name implies, this option atomically upgrades all the packages > installed in a profile or the set of packages matching a given regexp. > See “Invoking guix package” in the manual. > > *** New “guix package --search” option > > Performs a full text search in package synopses and descriptions, and returns > the matching packages in recutils format. See “Invoking guix package” in the > manual, for details. > > *** New “guix pull” command > > The command pulls the latest version of Guix–both the package management > modules and the distribution. See the manual for details. > > *** New binary substituter > > The “substituter” mechanism allows pre-built binaries to be transparently > downloaded instead of performing a build locally. Currently binaries are > available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The > distribution is continuously built and binaries are made available from there. > > See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of > available binary packages. > > *** New “guix refresh” command > > The command is used by Guix maintainers. It automatically updates the > distribution to the latest upstream releases of GNU software. > > *** New “guix hash” command > > Convenience command to compute the hash of a file. See the manual for > details. > > *** Nix daemon code updated > > The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated > to current Nix ‘master’. > > ** Programming interfaces > > *** (guix download) now supports HTTPS, using GnuTLS > > It allows package source tarballs to be retrieved over HTTPS. > > *** New ‘native-search-path’ and ‘search-path’ package fields > > Packages can define in their ‘native-search-path’ field environment variables > that define search paths and need to be set for proper functioning of the > package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its > ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc. > These environment variables are automatically set when building a package that > uses one of these. > > *** Package inputs can be a function of the target system type > > The ‘inputs’ field of a package can now be conditional on the value of > (%current-system). This is useful for packages that take system-dependent > tarballs as inputs, such as GNU/MIT Scheme. > > *** New build systems > > The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have > been added. They implement the standard build systems for Perl, Python, and > CMake packages. > > *** Tools to build Linux initrds, QEMU images, and more > > The (gnu packages linux-initrd) module provides a procedure to build a Linux > initrd (“initial RAM disk”). The initrd embeds Guile, which is used to > evaluate the given expression. The example below returns an initrd that > mounts the /proc file system and starts a REPL: > > (expression->initrd > '(begin > (mkdir "/proc") > (mount "none" "/proc" "proc") > ((@ (system repl repl) start-repl)))) > > More examples in the linux-initrd.scm file. > > Experimental interfaces to produce and use QEMU images are provided by the > (gnu system vm) module. For instance, the > ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in > a QEMU virtual machine running the Linux kernel and Guile. > > ** GNU distribution > > Many updates and additions have been made to the distribution. Here are the > highlights. > > *** Major updates > > GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9, > Coreutils 8.20, GDB 7.6, Texinfo 5.1. > > *** Noteworthy new packages > > TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo, > CHICKEN, Scheme48, Hugs, Python, Lua, Samba. > > > Please report bugs to bug-guix@gnu.org. > > Ludovic, on behalf of the Guix team. -- Best regards, Xue Fuqiao. http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-13 23:12 ` Xue Fuqiao @ 2013-05-15 0:56 ` Germán Arias 2013-05-15 5:01 ` Xue Fuqiao 2013-05-15 8:53 ` Brandon Invergo 0 siblings, 2 replies; 17+ messages in thread From: Germán Arias @ 2013-05-15 0:56 UTC (permalink / raw) To: guile-user; +Cc: gnu-system-discuss, nix-dev, bug-guix On 2013-05-13 17:12:07 -0600 Xue Fuqiao <xfq.free@gmail.com> wrote: > On Mon, May 13, 2013 at 5:59 AM, Ludovic Courtès <ludo@gnu.org> wrote: >> We are pleased to announce GNU Guix version 0.2, the second alpha >> release, representing 580 commits by 5 people over 4 months. > > Great news, *thanks* to everyone involved! > Currently I'm testing GSRC on my PC. So, my question is: What is the difference between Guix and GSRC? Regards. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 0:56 ` Germán Arias @ 2013-05-15 5:01 ` Xue Fuqiao 2013-05-15 7:42 ` Ludovic Courtès 2013-05-15 8:53 ` Brandon Invergo 1 sibling, 1 reply; 17+ messages in thread From: Xue Fuqiao @ 2013-05-15 5:01 UTC (permalink / raw) To: Germán Arias; +Cc: bug-guix On Wed, May 15, 2013 at 8:56 AM, Germán Arias <german@xelalug.org> wrote: > On 2013-05-13 17:12:07 -0600 Xue Fuqiao <xfq.free@gmail.com> wrote: > >> On Mon, May 13, 2013 at 5:59 AM, Ludovic Courtès <ludo@gnu.org> wrote: >>> We are pleased to announce GNU Guix version 0.2, the second alpha >>> release, representing 580 commits by 5 people over 4 months. >> >> Great news, *thanks* to everyone involved! >> > > Currently I'm testing GSRC on my PC. So, my question is: What is the difference between Guix and GSRC? Regards. IIUC GNU SRC is only a simple way to install the latest officially released versions of _GNU_ packages. GNU Guix is a purely functional package manager for the GNU system, and the package in Guix is not necessarily be a GNU program. -- Best regards, Xue Fuqiao. http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 5:01 ` Xue Fuqiao @ 2013-05-15 7:42 ` Ludovic Courtès 2013-05-16 6:34 ` Germán Arias 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-15 7:42 UTC (permalink / raw) To: Xue Fuqiao; +Cc: bug-guix, Germán Arias Hi Germán, Xue Fuqiao <xfq.free@gmail.com> skribis: > On Wed, May 15, 2013 at 8:56 AM, Germán Arias <german@xelalug.org> wrote: >> On 2013-05-13 17:12:07 -0600 Xue Fuqiao <xfq.free@gmail.com> wrote: >> >>> On Mon, May 13, 2013 at 5:59 AM, Ludovic Courtès <ludo@gnu.org> wrote: >>>> We are pleased to announce GNU Guix version 0.2, the second alpha >>>> release, representing 580 commits by 5 people over 4 months. >>> >>> Great news, *thanks* to everyone involved! >>> >> >> Currently I'm testing GSRC on my PC. So, my question is: What is the difference between Guix and GSRC? Regards. > > IIUC GNU SRC is only a simple way to install the latest officially > released versions of _GNU_ packages. GNU Guix is a purely functional > package manager for the GNU system, and the package in Guix is not > necessarily be a GNU program. Right. So Guix is a package manager (like APT, but with additional features), and GNU Guix comes with a GNU/Linux distribution (a small one currently, but the goal is to have a complete distro.) A feature that you may find useful for the purpose of testing GNUstep is that several variants of the same package (for instance, GNUstep build with different options, or different versions of its dependencies) can coexist. The system maintains a mapping between your package’s recipe and its build result, so you know exactly what you’re testing. Anyway, I’ve also been thinking that it’d be great to have GNUstep packaged in Guix one of these days. If you want to help with that, I’m happy to give a hand! :-) Thanks, Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 7:42 ` Ludovic Courtès @ 2013-05-16 6:34 ` Germán Arias 2013-05-16 16:37 ` Ludovic Courtès 0 siblings, 1 reply; 17+ messages in thread From: Germán Arias @ 2013-05-16 6:34 UTC (permalink / raw) To: ludo; +Cc: bug-guix On 2013-05-15 01:42:05 -0600 ludo@gnu.org (Ludovic Courtès wrote: > > A feature that you may find useful for the purpose of testing GNUstep is > that several variants of the same package (for instance, GNUstep build > with different options, or different versions of its dependencies) can > coexist. The system maintains a mapping between your package’s recipe > and its build result, so you know exactly what you’re testing. Interesting. > > Anyway, I’ve also been thinking that it’d be great to have GNUstep > packaged in Guix one of these days. If you want to help with that, I’m > happy to give a hand! :-) I have read the documentation and conceptually it seems easy. But I guess the hard part is the requirements, right?. If I have time I will give a try. Regards. Germán. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-16 6:34 ` Germán Arias @ 2013-05-16 16:37 ` Ludovic Courtès 2013-05-17 4:46 ` German Arias 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-16 16:37 UTC (permalink / raw) To: Germán Arias; +Cc: bug-guix Germán Arias <german@xelalug.org> skribis: > On 2013-05-15 01:42:05 -0600 ludo@gnu.org (Ludovic Courtès wrote: [...] >> Anyway, I’ve also been thinking that it’d be great to have GNUstep >> packaged in Guix one of these days. If you want to help with that, I’m >> happy to give a hand! :-) > > I have read the documentation and conceptually it seems easy. But I guess > the hard part is the requirements, right? It has a few dependencies, yes. Let us know how it goes. > If I have time I will give a try. IIRC GNUstep packages don’t use the GNU build system (./configure && make), but rather gnustep-make, right? If that is the case, a good way to help with GNUstep packaging would be to implement a ‘gnustep-build-system’ embodying GNUstep’s build system idioms. That is a bit more involved, but I (or others here) can help. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-16 16:37 ` Ludovic Courtès @ 2013-05-17 4:46 ` German Arias 2013-05-17 13:27 ` Ludovic Courtès 0 siblings, 1 reply; 17+ messages in thread From: German Arias @ 2013-05-17 4:46 UTC (permalink / raw) To: Ludovic Courtès; +Cc: bug-guix 2013/5/16, Ludovic Courtès <ludo@gnu.org>: > > IIRC GNUstep packages don’t use the GNU build system (./configure && > make), but rather gnustep-make, right? The installation of gnustep packages (make, base, gui and back) is in the normal way: ./configure, make & make install. The difference is that the last three packages use gnustep-make instead of GNU make. But depending of the configuration of gnustep's enviroment, the end user doesn't notice any difference. Because the name of gnustep-make tool is also "make". I don't know how the system can deal two tools named "make". But I think the trick is in the fact that gnustep's packages use GNUmakefiles instead of makefiles. The only difference is that if the system don't know about the gnustep tools. The user will need run the gnustep script, something like ". /usr/.../GNUstep.sh", to set up the variables of gnustep environment. The rest of packages is other history. Many of them only use: make & make install. Here "make" is "gnustep-make", And with the apps made with gnustep, as far as I remember, only GWorkspace uses ./configure. > > If that is the case, a good way to help with GNUstep packaging would be > to implement a ‘gnustep-build-system’ embodying GNUstep’s build system > idioms. That is a bit more involved, but I (or others here) can help. > > Thanks, > Ludo’. > Germán. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-17 4:46 ` German Arias @ 2013-05-17 13:27 ` Ludovic Courtès 2013-05-17 22:58 ` Germán Arias 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-17 13:27 UTC (permalink / raw) To: German Arias; +Cc: bug-guix German Arias <german@xelalug.org> skribis: > 2013/5/16, Ludovic Courtès <ludo@gnu.org>: >> >> IIRC GNUstep packages don’t use the GNU build system (./configure && >> make), but rather gnustep-make, right? > > The installation of gnustep packages (make, base, gui and back) is in the normal > way: ./configure, make & make install. The difference is that the last three > packages use gnustep-make instead of GNU make. But depending of the > configuration of gnustep's enviroment, the end user doesn't notice any > difference. OK. > Because the name of gnustep-make tool is also "make". I don't know how the > system can deal two tools named "make". But I think the trick is in > the fact that > gnustep's packages use GNUmakefiles instead of makefiles. The two ‘make’ programs shouldn’t be a problem. ‘gnustep-make’ just needs to be added as an input, and it will appear before GNU make in $PATH. > The only difference is that if the system don't know about the gnustep > tools. The > user will need run the gnustep script, something like ". > /usr/.../GNUstep.sh", to set > up the variables of gnustep environment. What do you mean with “doesn’t know about the GNUstep tools”? When is it necessary to source that script? What are the variables to be defined? Guix has a mechanism to automatically define search path variables: http://lists.gnu.org/archive/html/bug-guix/2013-03/msg00158.html Would that be of any help? > The rest of packages is other history. Many of them only use: make & > make install. > Here "make" is "gnustep-make", For those, it may make sense to implement a specific build system that automatically adds ‘gnustep-make’ as an input and runs the right commands. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-17 13:27 ` Ludovic Courtès @ 2013-05-17 22:58 ` Germán Arias 2013-05-18 20:54 ` Ludovic Courtès 0 siblings, 1 reply; 17+ messages in thread From: Germán Arias @ 2013-05-17 22:58 UTC (permalink / raw) To: ludo; +Cc: bug-guix [-- Attachment #1: Type: text/plain, Size: 1594 bytes --] On 2013-05-17 07:27:10 -0600 ludo@gnu.org (Ludovic Courtès wrote: [snip] > >> The only difference is that if the system don't know about the gnustep >> tools. The >> user will need run the gnustep script, something like ". >> /usr/.../GNUstep.sh", to set >> up the variables of gnustep environment. > > What do you mean with “doesn’t know about the GNUstep tools”? When is > it necessary to source that script? What are the variables to be > defined? GNUstep can be installed using differents layouts. By default gnustep is installed using the FHS layout. But one popular layout is "gnustep", this install all in "/usr/GNUstep". Since this isn't an standard path to install libraries, headers and tools, the user need add this path or run the gnustep script at session startup or run it when he will use the gnustep-make tool. > > Guix has a mechanism to automatically define search path variables: > > http://lists.gnu.org/archive/html/bug-guix/2013-03/msg00158.html > > Would that be of any help? I think it can help. Although I'm not an expert in what does exactly the gnustep script. I send you it attached if you want take a look. Anyway, installing gnustep with FHS layout, avoids the use of this script. > >> The rest of packages is other history. Many of them only use: make & >> make install. >> Here "make" is "gnustep-make", > > For those, it may make sense to implement a specific build system that > automatically adds ‘gnustep-make’ as an input and runs the right > commands. > > Thanks, > Ludo’. > <GNUstep.sh> [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: GNUstep.sh --] [-- Type: text/x-sh; name="GNUstep.sh", Size: 22607 bytes --] # This file must be sourced inside (ba)sh using: . # # GNUstep.sh. Generated from GNUstep.sh.in by configure. # # Shell initialization for the GNUstep environment. # # Copyright (C) 1997-2008 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Adam Fedor <fedor@gnu.org> # Author: Richard Frith-Macdonald <rfm@gnu.org> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library 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. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Warning - this shell script is delicate, because it is sourced by # using . rather than simply executed. It is sourced because that is # the only way to change the shell variables in the calling # environment. # # Sourcing makes the shell script more delicate for the following reasons: # # * temporary variables are automatically set in the calling # environment! WORKAROUND: we need to unset all them after using # them to avoid polluting the calling environment; # # * not only the exit value of the script, but the exit value of each # command we execute, might be interpreted by the calling # environment. Typically, the calling environment might be using the # shell errexit option ('set -e') in bash parlance, which causes the # shell to exit if any command returns an error value. If this were # a normal script, this option would mean that the shell would exit # if the return value of the whole script were an error value; but # because we are sourced, it is as all the commands in this script # were executed directly in the calling environment, so *all* values # returned by *all* commands must be non-error. [this all typically # happens in rpm builds, where scripts are run with the errexit # option so that errors in scripts abort the build, and now if a # script sources GNUstep.sh, then we are exactly in this situation - # if any command inside GNUstep.sh returns an error value (even if # GNUstep.sh as a whole would be happy and return succes), the whole # rpm build process aborts!]. WORKAROUND: we must make sure all # commands return success - last resorts hacks like 'command || :' # which always returns success whatever command returns. # # If we're running in zsh (auch!) make sure we're using -y # (SH_WORD_SPLIT) else our path manipulations won't work. if [ -n "$ZSH_VERSION" ]; then # If -y is not already set, set it and remember that we # need to set it back to what it was at the end. if ( setopt | grep shwordsplit > /dev/null ); then :; else setopt shwordsplit GS_ZSH_NEED_TO_RESTORE_SET=yes fi fi # When this is set to 'yes', strict gnustep-make v2 compatibility mode # is turned on. GNUSTEP_MAKE_STRICT_V2_MODE=no # # Read our configuration files # # Determine the location of the system configuration file if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf else # Remember that the variable was already set in the environment, and # preserve it at the end of the script. Otherwise we'll unset it to # avoid polluting the environment with our own internal variables. GNUSTEP_KEEP_CONFIG_FILE=yes fi # Determine the location of the user configuration file if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf else GNUSTEP_KEEP_USER_CONFIG_FILE=yes fi # Read the system configuration file if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi # FIXME: determining GNUSTEP_HOME GNUSTEP_HOME=~ # Read the user configuration file ... unless it is disabled (ie, set # to an empty string) if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi # Now, set any essential variable (that is not already set) to the # built-in values. if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # In strict v2 mode, clean these obsolete variables in case the # config file contains them. They shouldn't exist so unsetting # them can't harm. unset GNUSTEP_SYSTEM_ROOT unset GNUSTEP_LOCAL_ROOT unset GNUSTEP_NETWORK_ROOT else # This is deprecated and will be removed if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System fi # This is deprecated and will be removed if [ -z "$GNUSTEP_LOCAL_ROOT" ]; then GNUSTEP_LOCAL_ROOT=/usr/GNUstep/Local fi # This is deprecated and will be removed if [ -z "$GNUSTEP_NETWORK_ROOT" ]; then GNUSTEP_NETWORK_ROOT=/usr/GNUstep/Network fi export GNUSTEP_SYSTEM_ROOT GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT fi # GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED # instead if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_FLATTENED else GNUSTEP_FLATTENED=yes export GNUSTEP_FLATTENED fi GNUSTEP_IS_FLATTENED=yes if [ -z "$LIBRARY_COMBO" ]; then LIBRARY_COMBO=gnu-gnu-gnu fi if [ ! "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # Having these variables in the environment is deprecated and will # be removed. But for now, if we are not in strict gnustep-make v2 # mode, then we always export these variables for # backwards-compatibility. export GNUSTEP_IS_FLATTENED LIBRARY_COMBO # Else they are only exported if GNUSTEP_SH_EXPORT_ALL_VARIABLES # is defined - at the end of the script. fi if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles fi export GNUSTEP_MAKEFILES if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # Make sure this is never set in gnustep-make v2 strict mode; it # might have been set in the config file. unset GNUSTEP_USER_DIR unset GNUSTEP_USER_ROOT else # GNUSTEP_USER_DIR is deprecated and will be removed if [ -z "$GNUSTEP_USER_DIR" ]; then GNUSTEP_USER_DIR=GNUstep fi # # Set GNUSTEP_USER_ROOT which is the variable used in practice. # GNUSTEP_USER_ROOT is deprecated and will be removed # case "$GNUSTEP_USER_DIR" in /*) # An absolute path GNUSTEP_USER_ROOT="$GNUSTEP_USER_DIR";; *) # Something else GNUSTEP_USER_ROOT="$GNUSTEP_HOME/$GNUSTEP_USER_DIR";; esac # This variable was used to set up GNUSTEP_USER_ROOT which is the one # that is actually exported; we can now drop it from the environment. unset GNUSTEP_USER_DIR # This is deprecated and will be removed export GNUSTEP_USER_ROOT fi # If multi-platform support is disabled, just use the hardcoded cpu, # vendor and os determined when gnustep-make was configured. The # reason using the hardcoded ones might be better is that config.guess # and similar scripts might even require compiling test files to # determine the platform - but then you can't source GNUstep.sh # without having gcc, binutils, libc6-dev installed. Which can be a # problem for end-users who are not developers and have no development # tools installed. To prevent this problem, unless we were configured # to determine the platform at run time, by default we use the # hardcoded values of GNUSTEP_HOST*. if [ -z "" ]; then GNUSTEP_HOST=i686-pc-linux-gnu GNUSTEP_HOST_CPU=ix86 GNUSTEP_HOST_VENDOR=pc GNUSTEP_HOST_OS=linux-gnu fi # # Determine the host information # if [ -z "$GNUSTEP_HOST" ]; then # Not all shells (e.g. /bin/sh on FreeBSD < 4.0 or ash) have pushd/popd tmpdir=`pwd`; cd /tmp GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.guess` GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.sub $GNUSTEP_HOST` cd "$tmpdir" unset tmpdir fi if [ -z "$GNUSTEP_HOST_CPU" ]; then GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/cpu.sh $GNUSTEP_HOST` GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/clean_cpu.sh $GNUSTEP_HOST_CPU` fi if [ -z "$GNUSTEP_HOST_VENDOR" ]; then GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/vendor.sh $GNUSTEP_HOST` GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/clean_vendor.sh $GNUSTEP_HOST_VENDOR` fi if [ -z "$GNUSTEP_HOST_OS" ]; then GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/os.sh $GNUSTEP_HOST` GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/clean_os.sh $GNUSTEP_HOST_OS` fi if [ ! "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # These variables are deprecated for usage in shell scripts; you # need to use gnustep-config to get them in a shell script. export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS # Even in strict gnustep-make v2 mode, we export them at the end # if explicitly requested to export all variables. fi # Now load in all the remaining paths . $GNUSTEP_MAKEFILES/filesystem.sh # No longer needed unset GNUSTEP_HOME # Determine if the paths look like Windows paths that need fixing fixup_paths=no # Here we want to use `...` but the only portable way to use it when # there are "..." inside the expression (ie, it's actually # `..."..."...`) seems to be to use it in variable assignments. So we # use a temporary variable and assign the result of `...` to it path_check=`echo "$GNUSTEP_MAKEFILES" | sed 's|^[a-zA-Z]:/.*$||'` if [ -z "$path_check" ]; then fixup_paths=yes fi unset path_check if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_PATHLIST else # GNUSTEP_PATHLIST is deprecated and will be removed. # # GNUSTEP_PATHLIST is like an abstract path-like shell variable, which # can be used to search the gnustep directories. # if [ -z "$GNUSTEP_PATHLIST" ]; then GNUSTEP_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths` export GNUSTEP_PATHLIST fi fi # # Add path to Tools to PATH # # NB: functionally, print_unique_pathlist.sh is mostly used to do the # fixup_paths thing, since duplicated paths will automatically be # checked below when we add them to the PATH. On the other hand, # removing duplicates later can be expensive since we do a echo+grep # for each duplicate. When there are many duplicates it's faster to # use print_unique_pathlist.sh first to remove them and skip the # echos+greps later. GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` # Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths # should only be used by Administrators -- normal users don't have # enough powers to use those tools to do useful things. Our test for # being an 'Administrator' is that anyone who can write to an Admin # directory can be considered powerful enough to use those tools. # FIXME: Unfortunately, this doesn't work if the Admin directory # is mounted read-only, so a better test is required! # So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that # list that exists and that we can write to, we add it to our PATH. for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do if [ -d "$dir" -a -w "$dir" ]; then # Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST if (echo ":${GNUSTEP_TOOLS_PATHLIST}:" \ |grep -v ":${dir}:" >/dev/null); then GNUSTEP_TOOLS_PATHLIST="$dir:$GNUSTEP_TOOLS_PATHLIST" fi fi done # # And now, we put the results into PATH # old_IFS="$IFS" IFS=: for dir in $GNUSTEP_TOOLS_PATHLIST; do # Prepare the path_fragment if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then path_fragment="$dir:$dir/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:$dir/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}" else path_fragment="$dir" fi # Add it to PATH, but only if not already there (eg, typically /usr/bin is already there) if [ -z "$PATH" ]; then PATH="$path_fragment" else if ( echo ":${PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then PATH="${path_fragment}:${PATH}" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_TOOLS_PATHLIST export PATH # Determine the library paths GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_LIBRARIES_PATHLIST; do # prepare the path_fragment for libraries and this dir if [ "$GNUSTEP_IS_FLATTENED" = "yes" ]; then path_fragment="$dir" else path_fragment="$dir/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO:$dir/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS" fi # Append the path_fragment to lib_paths ... in a different way, # depending on the machine we're on. case "$GNUSTEP_HOST_OS" in *nextstep4* | *darwin*) if [ -z "$DYLD_LIBRARY_PATH" ]; then DYLD_LIBRARY_PATH="$path_fragment" else if ( echo ":${DYLD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then DYLD_LIBRARY_PATH="$path_fragment:$DYLD_LIBRARY_PATH" fi fi export DYLD_LIBRARY_PATH;; *hpux*) if [ -z "$SHLIB_PATH" ]; then SHLIB_PATH="$path_fragment" else if ( echo ":${SHLIB_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then SHLIB_PATH="$path_fragment:$SHLIB_PATH" fi fi export SHLIB_PATH; if [ -z "$LD_LIBRARY_PATH" ]; then LD_LIBRARY_PATH="$path_fragment" else if ( echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then LD_LIBRARY_PATH="$path_fragment:$LD_LIBRARY_PATH" fi fi export LD_LIBRARY_PATH;; *) if [ -z "$LD_LIBRARY_PATH" ]; then LD_LIBRARY_PATH="$path_fragment" else if ( echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then LD_LIBRARY_PATH="$path_fragment:$LD_LIBRARY_PATH" fi fi export LD_LIBRARY_PATH;; esac done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_LIBRARIES_PATHLIST # Determine the framework paths - but only on Darwin since it's the # only platform where this is of any use. case "$GNUSTEP_HOST_OS" in *darwin*) GNUSTEP_FRAMEWORKS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY/Frameworks" "$GNUSTEP_LOCAL_LIBRARY/Frameworks" "$GNUSTEP_NETWORK_LIBRARY/Frameworks" "$GNUSTEP_SYSTEM_LIBRARY/Frameworks" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_FRAMEWORKS_PATHLIST; do # prepare the path_fragment for frameworks path_fragment="$dir" # The code below has been temporarily removed, because... # Frameworks in GNUstep-make are supported by creating a link like # # Libraries/libMyFramework.dylib -> # Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib, # # to mitigate the fact that FSF GCC does not support a -framework flag. # # On Darwin, however, we partially emulate -framework by setting the # "install_name" to the framework name during linking. The dynamic # linker (dyld) is smart enough to find the framework under this name, # but only if DYLD_FRAMEWORK_PATH is set (unless we set the # "install_name" to an absolute path, which we don't). We'd really like # to fully support -framework, though. # # Use otool -L MyApplication.app/MyApplication, for instance, to see # how the shared libraries/frameworks are linked. # # if [ "$LIBRARY_COMBO" = "apple-apple-apple" -o \ # "$LIBRARY_COMBO" = "apple" ]; then if [ -z "$DYLD_FRAMEWORK_PATH" ]; then DYLD_FRAMEWORK_PATH="$path_fragment" else if ( echo ":${DYLD_FRAMEWORK_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then DYLD_FRAMEWORK_PATH="$path_fragment:$DYLD_FRAMEWORK_PATH" fi fi export DYLD_FRAMEWORK_PATH done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_FRAMEWORKS_PATHLIST ;; *) ;; esac # # Setup Java CLASSPATH and Guile GUILE_LOAD_PATH # GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_LIBRARY_PATHLIST; do path_fragment="$dir/Libraries/Java" if [ -z "$CLASSPATH" ]; then CLASSPATH="$path_fragment" else if ( echo ":${CLASSPATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then CLASSPATH="$path_fragment:$CLASSPATH" fi fi path_fragment="$dir/Libraries/Guile" if [ -z "$GUILE_LOAD_PATH" ]; then GUILE_LOAD_PATH="$path_fragment" else if ( echo ":${GUILE_LOAD_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then GUILE_LOAD_PATH="$path_fragment:$GUILE_LOAD_PATH" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_LIBRARY_PATHLIST export CLASSPATH export GUILE_LOAD_PATH # # Make sure info files, that we install by default into # xxx/Library/Documentation/info, are found by the info browsing # programs. To get this effect, we add those paths to INFOPATH. # GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_INFO_PATHLIST; do if [ -z "$INFOPATH" ]; then # The ':' at the end means to use the built-in paths after searching # the INFOPATH we provide. INFOPATH="${dir}:" else if ( echo ":${INFOPATH}:"\ |grep -v ":${dir}:" >/dev/null ); then INFOPATH="$INFOPATH:${dir}:" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset GNUSTEP_INFO_PATHLIST export INFOPATH # # Clean up the environment by removing the filesystem variables. Do # it unless we were explicitly requested not to clean it up! Mostly # gnustep-config will request that the environment is not cleaned up, # so it can print out all of the GNUstep variables. # if [ -n "$GNUSTEP_SH_EXPORT_ALL_VARIABLES" ]; then export GNUSTEP_MAKE_STRICT_V2_MODE unset GNUSTEP_KEEP_CONFIG_FILE GNUSTEP_KEEP_USER_CONFIG_FILE export GNUSTEP_CONFIG_FILE GNUSTEP_USER_CONFIG_FILE export GNUSTEP_USER_DEFAULTS_DIR # Always export these variables even if in strict gnustep-make v2 # mode, so that for example gnustep-config can determine them. export GNUSTEP_IS_FLATTENED LIBRARY_COMBO export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS export GNUSTEP_SYSTEM_APPS GNUSTEP_SYSTEM_ADMIN_APPS GNUSTEP_SYSTEM_WEB_APPS GNUSTEP_SYSTEM_TOOLS GNUSTEP_SYSTEM_ADMIN_TOOLS export GNUSTEP_SYSTEM_LIBRARY GNUSTEP_SYSTEM_HEADERS GNUSTEP_SYSTEM_LIBRARIES export GNUSTEP_SYSTEM_DOC GNUSTEP_SYSTEM_DOC_MAN GNUSTEP_SYSTEM_DOC_INFO export GNUSTEP_NETWORK_APPS GNUSTEP_NETWORK_ADMIN_APPS GNUSTEP_NETWORK_WEB_APPS GNUSTEP_NETWORK_TOOLS GNUSTEP_NETWORK_ADMIN_TOOLS export GNUSTEP_NETWORK_LIBRARY GNUSTEP_NETWORK_HEADERS GNUSTEP_NETWORK_LIBRARIES export GNUSTEP_NETWORK_DOC GNUSTEP_NETWORK_DOC_MAN GNUSTEP_NETWORK_DOC_INFO export GNUSTEP_LOCAL_APPS GNUSTEP_LOCAL_ADMIN_APPS GNUSTEP_LOCAL_WEB_APPS GNUSTEP_LOCAL_TOOLS GNUSTEP_LOCAL_ADMIN_TOOLS export GNUSTEP_LOCAL_LIBRARY GNUSTEP_LOCAL_HEADERS GNUSTEP_LOCAL_LIBRARIES export GNUSTEP_LOCAL_DOC GNUSTEP_LOCAL_DOC_MAN GNUSTEP_LOCAL_DOC_INFO export GNUSTEP_USER_APPS GNUSTEP_USER_ADMIN_APPS GNUSTEP_USER_WEB_APPS GNUSTEP_USER_TOOLS GNUSTEP_USER_ADMIN_TOOLS export GNUSTEP_USER_LIBRARY GNUSTEP_USER_HEADERS GNUSTEP_USER_LIBRARIES export GNUSTEP_USER_DOC GNUSTEP_USER_DOC_MAN GNUSTEP_USER_DOC_INFO export GNUSTEP_SYSTEM_USERS_DIR GNUSTEP_LOCAL_USERS_DIR GNUSTEP_NETWORK_USERS_DIR else if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_IS_FLATTENED unset LIBRARY_COMBO unset GNUSTEP_HOST unset GNUSTEP_HOST_CPU unset GNUSTEP_HOST_VENDOR unset GNUSTEP_HOST_OS fi unset GNUSTEP_MAKE_STRICT_V2_MODE # Unset these variables but only if we set them internally; keep # them if they were already in the environment. if [ -z "$GNUSTEP_KEEP_CONFIG_FILE" ]; then unset GNUSTEP_CONFIG_FILE fi unset GNUSTEP_KEEP_CONFIG_FILE if [ -z "$GNUSTEP_KEEP_USER_CONFIG_FILE" ]; then unset GNUSTEP_USER_CONFIG_FILE fi unset GNUSTEP_KEEP_USER_CONFIG_FILE # Always unset these variables unset GNUSTEP_USER_DEFAULTS_DIR unset GNUSTEP_SYSTEM_APPS unset GNUSTEP_SYSTEM_ADMIN_APPS unset GNUSTEP_SYSTEM_WEB_APPS unset GNUSTEP_SYSTEM_TOOLS unset GNUSTEP_SYSTEM_ADMIN_TOOLS unset GNUSTEP_SYSTEM_LIBRARY unset GNUSTEP_SYSTEM_HEADERS unset GNUSTEP_SYSTEM_LIBRARIES unset GNUSTEP_SYSTEM_DOC unset GNUSTEP_SYSTEM_DOC_MAN unset GNUSTEP_SYSTEM_DOC_INFO unset GNUSTEP_NETWORK_APPS unset GNUSTEP_NETWORK_ADMIN_APPS unset GNUSTEP_NETWORK_WEB_APPS unset GNUSTEP_NETWORK_TOOLS unset GNUSTEP_NETWORK_ADMIN_TOOLS unset GNUSTEP_NETWORK_LIBRARY unset GNUSTEP_NETWORK_HEADERS unset GNUSTEP_NETWORK_LIBRARIES unset GNUSTEP_NETWORK_DOC unset GNUSTEP_NETWORK_DOC_MAN unset GNUSTEP_NETWORK_DOC_INFO unset GNUSTEP_LOCAL_APPS unset GNUSTEP_LOCAL_ADMIN_APPS unset GNUSTEP_LOCAL_WEB_APPS unset GNUSTEP_LOCAL_TOOLS unset GNUSTEP_LOCAL_ADMIN_TOOLS unset GNUSTEP_LOCAL_LIBRARY unset GNUSTEP_LOCAL_HEADERS unset GNUSTEP_LOCAL_LIBRARIES unset GNUSTEP_LOCAL_DOC unset GNUSTEP_LOCAL_DOC_MAN unset GNUSTEP_LOCAL_DOC_INFO unset GNUSTEP_USER_APPS unset GNUSTEP_USER_ADMIN_APPS unset GNUSTEP_USER_WEB_APPS unset GNUSTEP_USER_TOOLS unset GNUSTEP_USER_ADMIN_TOOLS unset GNUSTEP_USER_LIBRARY unset GNUSTEP_USER_HEADERS unset GNUSTEP_USER_LIBRARIES unset GNUSTEP_USER_DOC unset GNUSTEP_USER_DOC_MAN unset GNUSTEP_USER_DOC_INFO unset GNUSTEP_SYSTEM_USERS_DIR unset GNUSTEP_LOCAL_USERS_DIR unset GNUSTEP_NETWORK_USERS_DIR fi if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then unsetopt shwordsplit fi # EOF ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-17 22:58 ` Germán Arias @ 2013-05-18 20:54 ` Ludovic Courtès 2013-05-20 5:36 ` Germán Arias 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-18 20:54 UTC (permalink / raw) To: Germán Arias; +Cc: bug-guix Germán Arias <german@xelalug.org> skribis: > On 2013-05-17 07:27:10 -0600 ludo@gnu.org (Ludovic Courtès wrote: > [snip] >> >>> The only difference is that if the system don't know about the gnustep >>> tools. The >>> user will need run the gnustep script, something like ". >>> /usr/.../GNUstep.sh", to set >>> up the variables of gnustep environment. >> >> What do you mean with “doesn’t know about the GNUstep tools”? When is >> it necessary to source that script? What are the variables to be >> defined? > > GNUstep can be installed using differents layouts. By default gnustep is > installed using the FHS layout. But one popular layout is "gnustep", this > install all in "/usr/GNUstep". Since this isn't an standard path to install > libraries, headers and tools, the user need add this path or run the > gnustep script at session startup or run it when he will use the > gnustep-make tool. OK. As you may have seen, Guix installs each package in a directory of its own (like GNU Stow, if that’s more familiar). This is why Guix already has the necessary infrastructure to set search path environment variables like CPATH and LIBRARY_PATH (GCC’s search paths for headers and libraries). I guess GNUstep packages wouldn’t mind being installed each in their own directory, provided the relevant search path environment variables are set, right? >> Guix has a mechanism to automatically define search path variables: >> >> http://lists.gnu.org/archive/html/bug-guix/2013-03/msg00158.html >> >> Would that be of any help? > > I think it can help. Although I'm not an expert in what does exactly > the gnustep script. I send you it attached if you want take a look. > Anyway, installing gnustep with FHS layout, avoids the use of > this script. Well, it’s a lengthy script, but it seems that one of the important variables is GNUSTEP_SYSTEM_ROOT, and perhaps GNUSTEP_{LIBRARIES_,TOOLS_,}PATHLIST. I guess we’ll need your GNUstep expertise to sort this out. :-) Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-18 20:54 ` Ludovic Courtès @ 2013-05-20 5:36 ` Germán Arias 0 siblings, 0 replies; 17+ messages in thread From: Germán Arias @ 2013-05-20 5:36 UTC (permalink / raw) To: ludo; +Cc: bug-guix On 2013-05-18 14:54:56 -0600 ludo@gnu.org (Ludovic Courtès wrote: [snip] > > I guess GNUstep packages wouldn’t mind being installed each in their own > directory, provided the relevant search path environment variables are > set, right? > Right. [snip] > > Well, it’s a lengthy script, but it seems that one of the important > variables is GNUSTEP_SYSTEM_ROOT, and perhaps > GNUSTEP_{LIBRARIES_,TOOLS_,}PATHLIST. > > I guess we’ll need your GNUstep expertise to sort this out. :-) > > Ludo’. > First I will familiarize myself with Guix. I'll tell you how it goes. Regards. Germán ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 0:56 ` Germán Arias 2013-05-15 5:01 ` Xue Fuqiao @ 2013-05-15 8:53 ` Brandon Invergo 2013-05-15 18:04 ` Ludovic Courtès 2013-05-16 7:29 ` Germán Arias 1 sibling, 2 replies; 17+ messages in thread From: Brandon Invergo @ 2013-05-15 8:53 UTC (permalink / raw) To: Germán Arias; +Cc: gnu-system-discuss, guile-user, nix-dev, bug-guix [-- Attachment #1: Type: text/plain, Size: 1763 bytes --] Hi Germán, > Currently I'm testing GSRC on my PC. So, my question is: What is the > difference between Guix and GSRC? Regards. GSRC can be thought of as a up-to-date quarterly release of all GNU software. It automates the fetch/configure/build/install procedure and provides the occasional patch when necessary, making it easier to install a GNU package from source. It has light package management features, such as dependency resolution, but it should not be thought of as a package manager. GSRC only provides GNU software so external dependencies must be installed separately by the user. Guix, on the other hand, is a full package manager that will eventually form the foundation of a GNU distribution. It has far more features as a package manager, including some really novel ones that go above and beyond the usual package management functionality (better to let Ludovic explain). The Guix distribution will provide all of the software necessary to have a complete, bootable GNU system, including non-GNU packages. It will also handle all the fun "under-the-hood" stuff like system configuration and initialization, etc. Both can be used on top of an existing distro but when the Guix distro is ready, I will subjectively say that GSRC would be more appropriate for just installing a package or two on top of an existing system. There is certainly some functional overlap, and this topic has come up before as a result, but there remains a conceptual distinction. In fact, I've made changes to GSRC to reinforce this distinction (i.e. removing 3rd-party dependencies). I think that just about sums it up but I welcome other comments. :) Cheers, Brandon -- Brandon Invergo http://brandon.invergo.net [-- Attachment #2: Type: application/pgp-signature, Size: 489 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 8:53 ` Brandon Invergo @ 2013-05-15 18:04 ` Ludovic Courtès 2013-06-30 21:40 ` Matthew Lien 2013-05-16 7:29 ` Germán Arias 1 sibling, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2013-05-15 18:04 UTC (permalink / raw) To: Brandon Invergo; +Cc: gnu-system-discuss, Germán Arias, bug-guix (Stripping Cc list.) Brandon Invergo <brandon@invergo.net> skribis: > Guix, on the other hand, is a full package manager that will eventually > form the foundation of a GNU distribution. It has far more features as > a package manager, including some really novel ones that go above and > beyond the usual package management functionality (better to let Ludovic > explain). Yes. Basically Guix is two things: a package manager (like, say, dpkg/APT), and a distribution. The package manager provides the features tools like APT implement. From a user’s viewpoint, in addition to what common package managers implement, it supports nifty features, detailed at <http://www.gnu.org/software/guix/manual/guix.html#Features>. From a developer’s viewpoint, its functional approach simplifies reasoning about package composition, and allows developers to actually check that packages do build and work together (see <http://www.gnu.org/software/guix/manual/guix.html#Introduction>.) Also, it has a Scheme API that makes packaging relatively easy (see <http://www.gnu.org/software/guix/manual/guix.html#Programming-Interface>). > The Guix distribution will provide all of the software necessary to > have a complete, bootable GNU system, including non-GNU packages. It > will also handle all the fun "under-the-hood" stuff like system > configuration and initialization, etc. Yes. Currently the distro has ~400 packages, and can only be used atop a running GNU/Linux system. In that sense, it’s comparable to GSRC in that it provides a way to install the latest versions of GNU packages (though GSRC has more GNU packages, I think.) But as Brandon notes, the longer-term goal is to build “the GNU System”. Until now, the GNU Project has been providing many independent packages, which have been integrated and delivered to final users by others. In a way, this is great, because it’s a sign that the free software ideals have expanded way beyond the GNU Project. However, I believe it’s also detrimental to GNU in several ways. Distros have been making compromises, in particular to software freedom, that contradict GNU’s vision. Integration of GNU software, and cohesion among the various GNU packages has arguably suffered. Distros have contributed to a disconnection between users and developers of GNU packages. Distro branding has made GNU, and to some extent its political message, much less visible to users. Etc. Having a GNU distro is an opportunity to fix these problems. A stronger GNU Project is good for individual GNU packages, and it’s good for software freedom. Let’s build that GNU System! :-) Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 18:04 ` Ludovic Courtès @ 2013-06-30 21:40 ` Matthew Lien 2013-06-30 22:40 ` Ludovic Courtès 0 siblings, 1 reply; 17+ messages in thread From: Matthew Lien @ 2013-06-30 21:40 UTC (permalink / raw) To: Ludovic Courtès; +Cc: gnu-system-discuss, Germán Arias, bug-guix [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=GB2312, Size: 3468 bytes --] 2 minor (webpage) bug report: 1. the link available as pre-built binaries<http://hydra.gnu.org/jobset/gnu/master#tabs-status>in 'Status' on http://www.gnu.org/software/guix/ is dead. (hydra.gnu.org down?) 2. 'Download Area' on http://savannah.gnu.org/projects/guix/ points to a 404 location. Maybe list those two links on the project page? ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz.sig Best wishes, BlueT - Matthew Lien - ¾´Ã÷ 2013/5/16 Ludovic Court¨¨s <ludo@gnu.org> > (Stripping Cc list.) > > Brandon Invergo <brandon@invergo.net> skribis: > > > Guix, on the other hand, is a full package manager that will eventually > > form the foundation of a GNU distribution. It has far more features as > > a package manager, including some really novel ones that go above and > > beyond the usual package management functionality (better to let Ludovic > > explain). > > Yes. Basically Guix is two things: a package manager (like, say, > dpkg/APT), and a distribution. > > The package manager provides the features tools like APT implement. > From a user¡¯s viewpoint, in addition to what common package managers > implement, it supports nifty features, detailed at > <http://www.gnu.org/software/guix/manual/guix.html#Features>. > > From a developer¡¯s viewpoint, its functional approach simplifies > reasoning about package composition, and allows developers to actually > check that packages do build and work together (see > <http://www.gnu.org/software/guix/manual/guix.html#Introduction>.) > Also, it has a Scheme API that makes packaging relatively easy (see > <http://www.gnu.org/software/guix/manual/guix.html#Programming-Interface > >). > > > The Guix distribution will provide all of the software necessary to > > have a complete, bootable GNU system, including non-GNU packages. It > > will also handle all the fun "under-the-hood" stuff like system > > configuration and initialization, etc. > > Yes. Currently the distro has ~400 packages, and can only be used atop > a running GNU/Linux system. In that sense, it¡¯s comparable to GSRC in > that it provides a way to install the latest versions of GNU packages > (though GSRC has more GNU packages, I think.) > > But as Brandon notes, the longer-term goal is to build ¡°the GNU System¡±. > Until now, the GNU Project has been providing many independent packages, > which have been integrated and delivered to final users by others. > > In a way, this is great, because it¡¯s a sign that the free software > ideals have expanded way beyond the GNU Project. > > However, I believe it¡¯s also detrimental to GNU in several ways. > Distros have been making compromises, in particular to software freedom, > that contradict GNU¡¯s vision. Integration of GNU software, and cohesion > among the various GNU packages has arguably suffered. Distros have > contributed to a disconnection between users and developers of GNU > packages. Distro branding has made GNU, and to some extent its > political message, much less visible to users. Etc. > > Having a GNU distro is an opportunity to fix these problems. A stronger > GNU Project is good for individual GNU packages, and it¡¯s good for > software freedom. > > Let¡¯s build that GNU System! :-) > > Ludo¡¯. > > -- / GPG 5296C7A8 / / matthew = BlueT / / matthew@BlueT.org / / Just be Perl Hacking! / [-- Attachment #2: Type: text/html, Size: 4905 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-06-30 21:40 ` Matthew Lien @ 2013-06-30 22:40 ` Ludovic Courtès 0 siblings, 0 replies; 17+ messages in thread From: Ludovic Courtès @ 2013-06-30 22:40 UTC (permalink / raw) To: Matthew Lien Cc: gnu-system-discuss, Brandon Invergo, Germán Arias, bug-guix Hi, Matthew Lien <bluet@bluet.org> skribis: > 2 minor (webpage) bug report: > > 1. the link available as pre-built > binaries<http://hydra.gnu.org/jobset/gnu/master#tabs-status>in > 'Status' on > http://www.gnu.org/software/guix/ is dead. > (hydra.gnu.org down?) Yeah, the web server at hydra.gnu.org is intermittently down these days (we’re working on it.) > 2. 'Download Area' on http://savannah.gnu.org/projects/guix/ points to a > 404 location. > Maybe list those two links on the project page? > ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz > ftp://alpha.gnu.org/gnu/guix/guix-0.2.tar.gz.sig Indeed. I’ve added a link from https://savannah.gnu.org/projects/guix/ to work around this problem. Thanks for the report, Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: GNU Guix 0.2 released 2013-05-15 8:53 ` Brandon Invergo 2013-05-15 18:04 ` Ludovic Courtès @ 2013-05-16 7:29 ` Germán Arias 1 sibling, 0 replies; 17+ messages in thread From: Germán Arias @ 2013-05-16 7:29 UTC (permalink / raw) To: Brandon Invergo; +Cc: guile-user, bug-guix On 2013-05-15 02:53:05 -0600 Brandon Invergo <brandon@invergo.net> wrote: > Hi Germán, > >> Currently I'm testing GSRC on my PC. So, my question is: What is the >> difference between Guix and GSRC? Regards. > > GSRC can be thought of as a up-to-date quarterly release of all GNU > software. It automates the fetch/configure/build/install procedure and > provides the occasional patch when necessary, making it easier to > install a GNU package from source. It has light package management > features, such as dependency resolution, but it should not be thought of > as a package manager. GSRC only provides GNU software so external > dependencies must be installed separately by the user. > > Guix, on the other hand, is a full package manager that will eventually > form the foundation of a GNU distribution. It has far more features as > a package manager, including some really novel ones that go above and > beyond the usual package management functionality (better to let Ludovic > explain). The Guix distribution will provide all of the software > necessary to have a complete, bootable GNU system, including non-GNU > packages. It will also handle all the fun "under-the-hood" stuff like > system configuration and initialization, etc. > > Both can be used on top of an existing distro but when the Guix distro > is ready, I will subjectively say that GSRC would be more appropriate > for just installing a package or two on top of an existing system. > > There is certainly some functional overlap, and this topic has come up > before as a result, but there remains a conceptual distinction. In > fact, I've made changes to GSRC to reinforce this distinction > (i.e. removing 3rd-party dependencies). > > I think that just about sums it up but I welcome other comments. :) > > Cheers, > > Brandon > Well I think that a system to easy install will be appreciated by the final users. Especially if it helps with find/install the requirements. There are packages like gnustep-gui or octave that can be succesfully installed with a lot of missed functionalities if the user don't care about the recomended requirements. And not all people out there that want use a gnu package are programmers. So I think GSRC can help people in this way. Regards. Germán. ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2013-06-30 22:45 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-12 21:59 GNU Guix 0.2 released Ludovic Courtès 2013-05-13 23:12 ` Xue Fuqiao 2013-05-15 0:56 ` Germán Arias 2013-05-15 5:01 ` Xue Fuqiao 2013-05-15 7:42 ` Ludovic Courtès 2013-05-16 6:34 ` Germán Arias 2013-05-16 16:37 ` Ludovic Courtès 2013-05-17 4:46 ` German Arias 2013-05-17 13:27 ` Ludovic Courtès 2013-05-17 22:58 ` Germán Arias 2013-05-18 20:54 ` Ludovic Courtès 2013-05-20 5:36 ` Germán Arias 2013-05-15 8:53 ` Brandon Invergo 2013-05-15 18:04 ` Ludovic Courtès 2013-06-30 21:40 ` Matthew Lien 2013-06-30 22:40 ` Ludovic Courtès 2013-05-16 7:29 ` Germán Arias
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).