Commit Graph

7753 Commits

Author SHA1 Message Date
Charles Strahan
b6c06e216b ruby: new bundler infrastructure
This improves our Bundler integration (i.e. `bundlerEnv`).

Before describing the implementation differences, I'd like to point a
breaking change: buildRubyGem now expects `gemName` and `version` as
arguments, rather than a `name` attribute in the form of
"<gem-name>-<version>".

Now for the differences in implementation.

The previous implementation installed all gems at once in a single
derivation. This was made possible by using a set of monkey-patches to
prevent Bundler from downloading gems impurely, and to help Bundler
find and activate all required gems prior to installation. This had
several downsides:

* The patches were really hard to understand, and required subtle
  interaction with the rest of the build environment.
* A single install failure would cause the entire derivation to fail.

The new implementation takes a different approach: we install gems into
separate derivations, and then present Bundler with a symlink forest
thereof. This has a couple benefits over the existing approach:

* Fewer patches are required, with less interplay with the rest of the
  build environment.
* Changes to one gem no longer cause a rebuild of the entire dependency
  graph.
* Builds take 20% less time (using gitlab as a reference).

It's unfortunate that we still have to muck with Bundler's internals,
though it's unavoidable with the way that Bundler is currently designed.
There are a number improvements that could be made in Bundler that would
simplify our packaging story:

* Bundler requires all installed gems reside within the same prefix
  (GEM_HOME), unlike RubyGems which allows for multiple prefixes to
  be specified through GEM_PATH. It would be ideal if Bundler allowed
  for packages to be installed and sourced from multiple prefixes.
* Bundler installs git sources very differently from how RubyGems
  installs gem packages, and, unlike RubyGems, it doesn't provide a
  public interface (CLI or programmatic) to guide the installation of a
  single gem. We are presented with the options of either
  reimplementing a considerable portion Bundler, or patch and use parts
  of its internals; I choose the latter. Ideally, there would be a way
  to install gems from git sources in a manner similar to how we drive
  `gem` to install gem packages.
* When a bundled program is executed (via `bundle exec` or a
  binstub that does `require 'bundler/setup'`), the setup process reads
  the Gemfile.lock, activates the dependencies, re-serializes the lock
  file it read earlier, and then attempts to overwrite the Gemfile.lock
  if the contents aren't bit-identical. I think the reasoning is that
  by merely running an application with a newer version of Bundler, you'll
  automatically keep the Gemfile.lock up-to-date with any changes in the
  format. Unfortunately, that doesn't play well with any form of
  packaging, because bundler will immediately cause the application to
  abort when it attempts to write to the read-only Gemfile.lock in the
  store. We work around this by normalizing the Gemfile.lock with the
  version of Bundler that we'll use at runtime before we copy it into
  the store. This feels fragile, but it's the best we can do without
  changes upstream, or resorting to more delicate hacks.

With all of the challenges in using Bundler, one might wonder why we
can't just cut Bundler out of the picture and use RubyGems. After all,
Nix provides most of the isolation that Bundler is used for anyway.

The problem, however, is that almost every Rails application calls
`Bundler::require` at startup (by way of the default project templates).
Because bundler will then, by default, `require` each gem listed in the
Gemfile, Rails applications are almost always written such that none of
the source files explicitly require their dependencies. That leaves us
with two options: support and use Bundler, or maintain massive patches
for every Rails application that we package.

Closes #8612
2015-12-29 09:30:21 -05:00
Robin Gloster
8613060425 socat: add patch to fix build with libressl
This fixes the build for libressl >= 2.3 as some legacy openssl code has
been removed.
2015-12-23 22:08:33 +00:00
Robert Helgesson
3af583d976 pdf2svg: add autoreconf hook (close #11888)
This fixes builds that may fail due to all files in the archive having
the same timestamp.
2015-12-23 07:36:25 +01:00
Vladimír Čunát
e16d3d0d8a texlive: add xdvi binary part (fixes #11816)
It seems to work fine for me now, after adding dependency on metafont.
2015-12-22 16:55:32 +01:00
Thomas Strobel
d856841ba4 nixos trustedGRUB: add support for HP laptops 2015-12-22 03:12:30 +01:00
Alexander Shabalin
d76c26e876 gibo: init at 1.0.4, fixes #11871 2015-12-22 02:43:24 +01:00
Alexander Shabalin
a0138e1ed5 dynamic-colors: init at 2013-12-28, fixes #11874 2015-12-22 02:04:06 +01:00
Rok Garbas
38a6b5fb43 Merge pull request #11683 from rvl/fail2ban
Make fail2ban work again
2015-12-22 01:46:18 +01:00
jeaye
1b9b1d0d5c fail2ban 0.9.1 -> 0.9.3 2015-12-21 15:33:15 +08:00
Lancelot SIX
e3e2273382 pkgs.gnupg1: 1.4.19 -> 1.4.20 2015-12-20 18:50:19 +01:00
Thomas Tuegel
5ff1c58606 Merge pull request #11839 from ttuegel/qt-5.4
Qt infrastructure update
2015-12-20 08:11:52 -06:00
Thomas Tuegel
660736def8 polkit-qt: normalize package name to upstream 2015-12-20 07:56:51 -06:00
Thomas Tuegel
17e17ea649 cmst: Qt 5 infrastructure update 2015-12-20 07:56:51 -06:00
Thomas Tuegel
97f7eb1e64 kst: Qt 5 infrastructure update 2015-12-20 07:56:50 -06:00
Thomas Tuegel
c1841675f3 antimicro: Qt 5 infrastructure update 2015-12-20 07:56:36 -06:00
Austin Seipp
10a7021c83 nixpkgs: duperemove 0.09.4 -> 0.10
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2015-12-19 22:43:48 -06:00
Arseniy Seroka
05d08e400c Merge pull request #11823 from rycee/bump/jhead
jhead: 2.87 -> 3.00
2015-12-19 19:05:51 +03:00
Arseniy Seroka
6ee2551c26 Merge pull request #11825 from gebner/djvu2pdf-nix-shell
djvu2pdf: make work in nix-shell
2015-12-19 19:05:26 +03:00
Arseniy Seroka
4472df4335 Merge pull request #11822 from rycee/bump/pdf2svg
pdf2svg: 0.2.2 -> 0.2.3
2015-12-19 19:04:58 +03:00
Tobias Geerinckx-Rice
d4b14974e5 eid-mw: 4.1.9 -> 4.1.11 2015-12-19 12:41:31 +01:00
Tobias Geerinckx-Rice
819ca0997e exfat: 1.2.2 -> 1.2.3
Fixes:
- Fixed clusters loss when file renaming replaces target.
2015-12-19 12:41:31 +01:00
Gabriel Ebner
723e693791 djvu2pdf: make work in nix-shell 2015-12-19 09:43:21 +01:00
Robert Helgesson
1b3930ca04 pdf2svg: 0.2.2 -> 0.2.3
Also minor style changes and upstream source is now on GitHub.
2015-12-19 00:50:46 +01:00
Robert Helgesson
8296346207 jhead: 2.87 -> 3.00
Also clean up the package quite a bit and add myself as maintainer.
2015-12-19 00:29:32 +01:00
Domen Kožar
0e4e01c7a6 add back nixopsUnstable 2015-12-18 18:51:12 +01:00
Domen Kožar
e6f1558692 Merge pull request #11807 from markus1189/lastpass-cli
lastpass-cli: 0.5.1 -> 0.7.0
2015-12-18 12:06:10 +01:00
Peter Simons
817d6d5149 Merge pull request #11802 from aespinosa/add-missing-utmp-lib
screen: include the utmp from the apple_sdk
2015-12-18 11:42:45 +01:00
Rodney Lorrimar
75d143ae9a fail2ban: 0.9.1 -> 0.9.3 2015-12-18 09:44:22 +00:00
Rodney Lorrimar
201859ea18 fail2ban: update python-systemd dependency
The python module has been split off from systemd since v223.
2015-12-18 09:44:22 +00:00
Rodney Lorrimar
242c24c402 fail2ban: python packaging workaround for /etc/fail2ban installation (fixes #11534)
Removed path substitutions from setup.py because these should be handled
by the setuptools install prefix.

Except that the install prefix won't quite work until issue #4968 is
resolved.

In the meantime there are preInstall and postInstall scripts so that
this package continues to work with the nix python packaging
improvements.
2015-12-18 09:44:22 +00:00
Markus Hauck
10e0b68141 lastpass-cli: 0.5.1 -> 0.7.0 2015-12-18 09:41:11 +01:00
Allan Espinosa
37341582bb screen: include the utmp from the apple_sdk 2015-12-18 00:12:31 -06:00
aszlig
662ab05119
beets: Add the external beets-alternatives plugin
It's not included in upstream beets but are linked in the documentation
under "Other plugins", see:

http://beets.readthedocs.org/en/v1.3.15/plugins/index.html#other-plugins

I found this one particularly useful for syncing files to varios media
players that refuse to read my FLAC files properly.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2015-12-18 05:58:27 +01:00
aszlig
68c504fa8f
beets: Use bs1770gain by default for replaygain
After trying with a dozen files, it seems the bs1770gain backend is much
more reliable than the audiotools backend and especially does a better
job (well, compared to audiotools which either does doing nothing at all
or throws an exception) when used on alboms that contain different
sample rates/sizes.

Additionally, we already had a few issues regarding the audiotools
backend, even to the extent that @sampsyco almost wanted to drop it
upstream (see sampsyco/beets#1342).

Also related issues are #10376 and sampsyo/beets#1592.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2015-12-18 05:58:27 +01:00
Tobias Geerinckx-Rice
535b4279c7 ipad_charge, simple-scan: libusb{-compat -> 1} 2015-12-17 23:51:43 +01:00
Tobias Geerinckx-Rice
11a8cddff4 man-db: use groff from closure, not PATH 2015-12-17 23:51:43 +01:00
Pascal Wittmann
a111fa517e zsh-navigation-tools: 1.3.2 -> 1.4 2015-12-17 18:28:35 +01:00
Thomas Tuegel
97b2b05a24 calamares: fix Qt dependencies 2015-12-17 05:50:32 -06:00
goibhniu
3725d5afdc Merge pull request #11757 from rycee/fix/colordiff
colordiff: add archive URL
2015-12-17 01:12:05 +01:00
goibhniu
1b3168069d Merge pull request #11768 from k0ral/rmlint
rmlint: 2.4.1 -> 2.4.2
2015-12-17 01:10:47 +01:00
goibhniu
81901bda04 Merge pull request #11770 from k0ral/nmap
nmap: 7.00 -> 7.01
2015-12-17 01:10:13 +01:00
koral
e007b1b764 nmap: 7.00 -> 7.01 2015-12-16 23:21:19 +00:00
koral
123a6041de rmlint: 2.4.1 -> 2.4.2 2015-12-16 22:35:01 +00:00
John Wiegley
2cd323a51a tor: Allow building on Darwin 2015-12-16 14:10:31 -08:00
Nikolay Amiantov
13548530a6 networkmanager: fix udev rules file, fixes #11744 2015-12-16 22:55:03 +01:00
Eelco Dolstra
79a3c8a952 9pfs: Add
This is a FUSE-based 9p client.
2015-12-16 20:31:14 +01:00
Eelco Dolstra
9dae6345f4 Typo 2015-12-16 20:31:14 +01:00
Robert Helgesson
d66a1a46e6 colordiff: add archive URL
When a new version of colordiff is released the old tarball is moved to
the archive directory. This breaks builds until the derivation is
updated to the new version. This commit lets fetchurl know about the
archive URL.
2015-12-16 00:49:43 +01:00
vbgl
3ebd2df8dd Merge pull request #11630 from lancelotsix/update_xorriso
pkgs.xorriso: 1.4.0 -> 1.4.2
2015-12-15 22:52:15 +01:00
Nikolay Amiantov
83a8e8e4ef polkit_gnome: cleanup, add platforms 2015-12-15 18:09:07 +03:00