Commit Graph

74228 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
Franz Pletz
0e07172c6d bind: Fix patching Makefile.in
There is no postPatchPhase.
2015-12-25 21:39:56 -05:00
Charles Strahan
4867d6943f Merge pull request #11236 from cstrahan/w3m-patches
w3m: use Arch patches
2015-12-25 14:35:08 -06:00
Charles Strahan
9e34985430 w3m: use Arch patches
Fix the built-in help (perl.patch)
  https://bugs.archlinux.org/task/45608

Properly link w3mimgdisplay to x11
  https://bbs.archlinux.org/viewtopic.php?id=196093

Fix rendering bug in w3mimgdisplay (w3m_rgba.patch)
  https://github.com/hut/ranger/issues/86

Don't ignore input tags with invalid types (form_unkown.patch)
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=615843

Fix a segfault when using https (https.patch)
  https://bugzilla.redhat.com/show_bug.cgi?id=707994
2015-12-25 15:26:14 -05:00
Vladimír Čunát
12a0e09563 Merge #11674: libressl-2.3 patches for various pkgs 2015-12-23 23:16:27 +01:00
Robin Gloster
f8ee267576 w3m: do not always link to RAND_egd for openssl
This fixes the build for libressl >= 2.3 as RAND_egd has been removed as
it is insecure.
2015-12-23 22:10:01 +00:00
Robin Gloster
99b1b464b4 qt55.qtbase: add patch to build with libressl 2.3 2015-12-23 22:10:01 +00:00
Robin Gloster
562ba76975 qca2: add patch to build with libressl 2.3 2015-12-23 22:08:33 +00:00
Robin Gloster
501d49ebc4 wpa_supplicant: add patch to build with libressl 2.3 2015-12-23 22:08:33 +00:00
Robin Gloster
4b5cb62488 qt4: add patch to build with libressl 2.3 2015-12-23 22:08:33 +00:00
Robin Gloster
bdfc4efd67 bind: add patch to build with libressl 2.3 2015-12-23 22:08:33 +00:00
Robin Gloster
d30904ea89 ruby: fix build with libressl2.3 2015-12-23 22:08:33 +00: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
Arseniy Seroka
93d3f6f52b Merge pull request #11905 from aborsu/jenkins-update
jenkins ci: 1.638 -> 1.643
2015-12-23 23:10:46 +03:00
Arseniy Seroka
21ebb23e7c Merge pull request #11894 from AndersonTorres/higan
Higan: 095 -> 096
2015-12-23 23:10:31 +03:00
Arseniy Seroka
fc4b704fcf Merge pull request #11900 from NeQuissimus/gradle210
gradle: 2.9 -> 2.10
2015-12-23 23:10:20 +03:00
Arseniy Seroka
afcac3f21f Merge pull request #11907 from ericbmerritt/hub-2.2.2
hub: 2.2.1 -> 2.2.2
2015-12-23 23:09:55 +03:00
Vladimír Čunát
11c702c582 Merge master into staging 2015-12-23 18:57:35 +01:00
Franz Pletz
cbada77b0b clawsMail: 3.13.0 -> 3.13.1 (CVE-2015-8614)
Fixes a remotely triggerable buffer overflow.
http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=3557
Close #11910.
2015-12-23 18:48:38 +01:00
Eric Merritt
6108bb8971 hub: 2.2.1 -> 2.2.2 2015-12-23 08:37:02 -08:00
Thomas Tuegel
354eb9e911 Merge pull request #11902 from ttuegel/dropbox
dropbox: 3.12.5 -> 3.12.6
2015-12-23 09:43:35 -06:00
Augustin Borsu
170f91a249 jenkins ci: 1.638 -> 1.643 2015-12-23 15:47:11 +01:00
Thomas Tuegel
077a3102cc dropbox: 3.12.5 -> 3.12.6 2015-12-23 08:36:50 -06:00
Tim Steinbach
d509f8a30a gradle: 2.9 -> 2.10 2015-12-23 08:44:49 -05:00
Nikolay Amiantov
80ee4ec82a Merge pull request #11837 from bendlas/update-wine
wine: stable, unstable; upgrade to 1.8
2015-12-23 16:41:08 +03:00
Augustin Borsu
1c120c55fb jenkins-job-builder fix: use prefix and host from jenkins cfg, fixes #11897 2015-12-23 11:39:32 +01:00
Augustin Borsu
44ea184997 jenkins ci enhancement: add port and prefix option
As named these options enable to specify a bind host and url prefix
to be used by jenkins. Adding these options in the config rather than
using extra arguments allows us to re-use those information in other
services using jenkins such as jenkins-job-builder or a reverse proxy.
2015-12-23 11:38:57 +01:00
Vladimír Čunát
bf9c16d4ac texinfo6: remove meta.branch and refactor meta
It was wrong ("5.2") and seemed unused in nixpkgs.
2015-12-23 09:19:38 +01:00
Vladimír Čunát
fdf3aa9923 buildRubyGem: use a saner default version to fix #11805
Previously the gems defaulted to "ruby" as the name and
"${ruby-version}-${gem-name}-${gem-version}" as the version,
which was just insane.

https://github.com/NixOS/nixpkgs/issues/9771#issuecomment-141041414
Noone is reacting so it's high time to take at least some action.
/cc @cstrahan.
2015-12-23 09:02:13 +01: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
AndersonTorres
0ed678a414 Higan: 095 -> 096 2015-12-23 00:32:06 -02:00
Robert Helgesson
5b10c11616 fira-code: 1.100 -> 1.101, fixes #11892 2015-12-23 02:31:27 +01:00
Nicole Angel
90e881eece keepass: load plugins from store paths, fixes #11206 2015-12-23 02:12:36 +01:00
Nicole Angel
e99beec0e1 Keefox (keepass plugin): init at 1.5.4 2015-12-23 02:12:15 +01:00
Jakob Gillich
db1086f3a1 gnome3: removed duplicate line, fixes #11891 2015-12-23 02:06:30 +01:00
Tim Williams
e2a25433b2 copyq: init at 2.5.0, fixed #11887 2015-12-23 01:58:59 +01:00
Tim Steinbach
eb8e309d2b kotlin: 1.0.0-beta-3595 -> 1.0.0-beta-4583, fixes #11883 2015-12-23 01:50:06 +01:00
Nathan Zadoks
971d580a00 spotify: fix missing ffmpeg_0_10 dependency, fixes #11877
This makes local playback work.
2015-12-23 01:41:01 +01:00
Derek Gonyeo
9671674959 acbuild: 0.1.1 -> 0.2.2 and moved to own default.nix, fixes #11889 2015-12-23 01:33:37 +01:00
Derek Gonyeo
540c520cf6 rkt: bump version 0.13.0 -> 0.14.0, fixes #11885 2015-12-23 01:27:26 +01:00
Thomas Tuegel
cd7cfcc9a2 arpack: include OpenBLAS path in pkgconfig file 2015-12-22 14:22:19 -06:00
Peter Simons
c55387be69 Merge pull request #11882 from Profpatsch/alsa-utils
alsa-utils: fix alsa-info.sh
2015-12-22 20:52:54 +01:00
Peter Simons
65b8706f0a Merge pull request #11881 from mayflower/pkg/xmonad-patch
haskellPackages.xmonad: Update xmonad-nix.patch
2015-12-22 20:50:34 +01:00
Peter Simons
aefab61296 Merge pull request #11884 from Profpatsch/anki
anki: enable playing sound files
2015-12-22 20:49:52 +01:00
Profpatsch
de12417ec7 anki: enable playing sound files 2015-12-22 20:34:00 +01:00
Profpatsch
b336e1b24a alsa-utils: fix alsa-info.sh 2015-12-22 19:51:55 +01:00
Franz Pletz
eb7a441179 haskellPackages.xmonad: Update xmonad-nix.patch 2015-12-22 19:09:24 +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
Eelco Dolstra
e0d6e79f6c Merge pull request #11830 from vcunat/p/doc-copying-notice
CONTRIBUTING.md: add a notice about licensing
2015-12-22 16:13:53 +01:00
Arseniy Seroka
bdd2073389 Merge pull request #11880 from FRidh/audiotools
python audiotools: 2.22 -> 3.1.1
2015-12-22 17:52:30 +03:00