a4d6e2cf16
The wrapper for Atom was loading libraries via LD_PRELOAD, for example libxkbfile. Now, if you installed atom via nix-env and happened to use a newer nixpkgs for that than what your system environment is build against, you could end up with an error like this: ``` uname: relocation error: /nix/store/68sa3m89shpfaqq1b9xp5p1360vqhwx6-glibc-2.25/lib/libdl.so.2: symbol _dl_catch_error, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference ``` This happens because atom calls the `uname` executable from the system to determine the platform. Because that inherits the `LD_PRELOAD` environment variable, so the libxkbfile library that the `atom` wrapper was build against is loaded into `uname`. But since `atom` comes from `nix-env`, the `libxkbfile` it was built with might be compiled against a newer version of `glibc` than `uname`, which comes from the system, was! Having two versions of glibc loaded into the same processes results in chaos. To fix this, we avoid setting `LD_PRELOAD` and instead use patchelf to set the correct RPATH. RPATH is not inherited by child processes, so the above issue can no longer occur. The only small complication here is that the library that actually loads libxkbfile is not the atom binary itself, but a node extension that atom uses. So instead of setting the RPATH on `atom` only, we also set the `rpath` on all node extensions (`*.node`) the output. |
||
---|---|---|
.github | ||
doc | ||
lib | ||
maintainers/scripts | ||
nixos | ||
pkgs | ||
.editorconfig | ||
.gitignore | ||
.mention-bot | ||
.travis.yml | ||
.version | ||
COPYING | ||
default.nix | ||
README.md |
Nixpkgs is a collection of packages for the Nix package manager. It is periodically built and tested by the hydra build daemon as so-called channels. To get channel information via git, add nixpkgs-channels as a remote:
% git remote add channels git://github.com/NixOS/nixpkgs-channels.git
For stability and maximum binary package support, it is recommended to maintain
custom changes on top of one of the channels, e.g. nixos-16.09
for the latest
release and nixos-unstable
for the latest successful build of master:
% git remote update channels
% git rebase channels/nixos-16.09
For pull-requests, please rebase onto nixpkgs master
.
NixOS linux distribution source code is located inside
nixos/
folder.
- NixOS installation instructions
- Documentation (Nix Expression Language chapter)
- Manual (How to write packages for Nix)
- Manual (NixOS)
- Nix Wiki (deprecated, see milestone "Move the Wiki!")
- Continuous package builds for unstable/master
- Continuous package builds for 16.09 release
- Tests for unstable/master
- Tests for 16.09 release
Communication: