Parallel building randomly fails because bash's Makefiles at some
point do a recursive make invocation to build a file "version.h":
../version.h: ../config.h ../Makefile Makefile
-( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} version.h )
As a result, both the parent and the child can end up building
version.h at the same time. This causes the build to fail with
mv: cannot stat `newversion.h': No such file or directory
http://hydra.nixos.org/build/3853249
The new bash-completion support in NixOS doesn't require this patch anymore.
Besides, the patch was insufficient for most purposes anyway: Bash completion
modules are spread out over all user profiles listed in $NIX_PROFILES (plus the
current-system profile), so getting full support for all installed modules
requires support for more than one "bash_completion.d" directory anyway.
Please note that this update changes the directory structure quite a bit. In
particular, the file "/etc/bash_completion" no longer exists, which means that
shell code which relies on that path must be updated. I'll commit appropriate
changes for NixOS in a moment.
Including the bash-completion package in bash itself sounded like a good idea
at the time, but it wasn't. After having actually integrated completion support
into NixOS, it has become obvious that this property isn't required at all.
Keeping bash-completion separate from bash works just fine. Anyone who wants
completion support can just install that package.
svn path=/nixpkgs/trunk/; revision=29467
Add the command-line completion library to the "interactive" version of
bash. That code is *not* active by default. To enable it, run
| . ${bash}/etc/bash_completion
in your ~/.bashrc. If you prefer to build bashInteractive without that
feature, use the following override in ~/.nixpkgs/config.nix to disable it:
| {
| packageOverrides = pkgs:
| {
| bashInteractive = pkgs.bashInteractive.override {
| bashCompletion = null;
| };
| };
| }
svn path=/nixpkgs/trunk/; revision=29244
linking path), and with this achieved bash being cross-compilable.
I fixed the few expressions involved in bash building, so they have well stated
native and non-native inputs.
I also tried to cross-build guile, and with this I found a problem in the
actual cross-gcc: it calls the binutils ld, instead of the ld wrapper. This
way, the programs/shared_libraries don't get the proper -rpath.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18497
`selectVersion ./foo "bar"' instead of `import ./foo/bar.nix'.
* Replaced `with args' with formal function arguments in several
packages.
* Renamed several files to `default.nix'. As a general rule, version
numbers should only be included in the filename when there is a
reason to keep multiple versions of a package in Nixpkgs.
Otherwise, it just makes it harder to update the package.
svn path=/nixpkgs/trunk/; revision=18403
This comes from:
svn diff ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff
patch -p0 < diff
and then adding into svn all files new from the patch.
trunk@18255 comes from the last time I updated stdenv-updates from trunk.
svn path=/nixpkgs/stdenv-updates2/; revision=18272
Changed the built-in default $PATH to /no-such-path. (This also
applies to the "standard utilities path" used by "command -p", so
that doesn't work anymore, but it didn't work anyway on NixOS and
nobody uses it.) Include the startup files for non-interactive
login shells. Use bashrc when started from ssh.
svn path=/nixpkgs/trunk/; revision=12365
URLs to http://nix.cs.uu.nl/dist/tarballs. With content-addressable
mirror support (r9190, NIXPKGS-70) this is no longer necessary:
fetchurl will try to download from that location automatically. So
we can keep the original URLs.
svn path=/nixpkgs/trunk/; revision=9192
* Make builders unexecutable by removing the hash-bang line and
execute permission.
* Convert calls to `derivation' to `mkDerivation'.
* Remove `system' and `stdenv' attributes from calls to
`mkDerivation'. These transformations were all done automatically,
so it is quite possible I broke stuff.
* Put the `mkDerivation' function in stdenv/generic.
svn path=/nixpkgs/trunk/; revision=874
builders for typical Autoconf-style to be much shorten, e.g.,
. $stdenv/setup
genericBuild
The generic builder does lots of stuff automatically:
- Unpacks source archives specified by $src or $srcs (it knows about
gzip, bzip2, tar, zip, and unpacked source trees).
- Determines the source tree.
- Applies patches specified by $patches.
- Fixes libtool not to search for libraries in /lib etc.
- Runs `configure'.
- Runs `make'.
- Runs `make install'.
- Strips debug information from static libraries.
- Writes nested log information (in the format accepted by
`log2xml').
There are also lots of hooks and variables to customise the generic
builder. See `stdenv/generic/docs.txt'.
* Adapted the base packages (i.e., the ones used by stdenv) to use the
generic builder.
* We now use `curl' instead of `wget' to download files in `fetchurl'.
* Neither `curl' nor `wget' are part of stdenv. We shouldn't
encourage people to download stuff in builders (impure!).
* Updated some packages.
* `buildinputs' is now `buildInputs' (but the old name also works).
* `findInputs' in the setup script now prevents inputs from being
processed multiple times (which could happen, e.g., if an input was
a propagated input of several other inputs; this caused the size
variables like $PATH to blow up exponentially in the worst case).
* Patched GNU Make to write nested log information in the format
accepted by `log2xml'. Also, prior to writing the build command,
Make now writes a line `building X' to indicate what is being
built. This is unfortunately often obscured by the gigantic tool
invocations in many Makefiles. The actual build commands are marked
`unimportant' so that they don't clutter pages generated by
`log2html'.
svn path=/nixpkgs/trunk/; revision=845