Commit Graph

31601 Commits

Author SHA1 Message Date
Shea Levy
ac2035287f Greatly reduce kernel closure size
Based on access analysis with strace, I determined an essentially
minimal required set of files from the kernel source that was needed to
build all current kernel packages on 3.10, which ultimately resulted in
keeping 30M of source. Generalizing from that minimal set, which
required ad-hoc specifications of which headers outside of include/ and
arch/*/include and which files in the scripts/ directory should be kept,
to a policy of keeping all non-arch-specific headers that aren't part of
the drivers/ directory and the entire scripts/ directory added an
additional 17M, but there was nothing in the analysis that indicated
that that ad-hoc specification was at all complete so I think the extra
hit is worth the likely greater compatibility.

For reference, we now keep:

* All headers that are NOT in arch/${notTargetArch}/include or drivers/
* The scripts/ directory
* Makefile
* arch/${targetArch}/Makefile

IMO the most likely cause of future problems are the headers in
drivers/, but hopefully they won't actually be needed as they add 50M
Ideally kernel packages would only use include and
arch/${targetArch}/include, but alas this is observably not the case.

master:
  * $out
    * size: 234M
    * references-closure: linux-headers, glibc, attr, acl, zlib, gcc,
      coreutils, perl, bash
merge-kernel-builds:
  * $out
    * size: 152M
    * references-closure: none
  * $dev
    * size: 57M
    * references-closure: linux-headers, glibc, zlib, gcc

So even with the non-minimal set we still beat out master. Keeping the
drivers headers would make us only slightly bigger.

Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-05 06:55:47 -05:00
Shea Levy
a589bfae17 Update and fix kernel packages to new kernel build
In most cases, this just meant changing kernelDev (now removed from
linuxPackagesFor) to kernel.dev. Some packages needed more work (though
whether that was because of my changes or because they were already
broken, I'm not sure). Specifics:

* psmouse-alps builds on 3.4 but not 3.10, as noted in the comments that
  were already there
* blcr builds on 3.4 but not 3.10, as noted in comments that were
  already there
* open-iscsi, ati-drivers, wis-go7007, and openafsClient don't build on
  3.4 or 3.10 on this branch or on master, so they're marked broken
* A version-specific kernelHeaders package was added

The following packages were removed:

* atheros/madwifi is superceded by official ath*k modules
* aufs is no longer used by any of our kernels
* broadcom-sta v6 (which was already packaged) replaces broadcom-sta
* exmap has not been updated since 2011 and doesn't build
* iscis-target has not been updated since 2010 and doesn't build
* iwlwifi is part of mainline now and doesn't build
* nivida-x11-legacy-96 hasn't been updated since 2008 and doesn't build

Everything not specifically mentioned above builds successfully on 3.10.
I haven't yet tested on 3.4, but will before opening a pull request.

Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-04 21:17:04 -05:00
Shea Levy
6b7ede300f systemtap: Remove from linuxPackagesFor
It doesn't seem to depend on the kernel in any way.

Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-02 00:03:49 -05:00
Shea Levy
2c38df1c5b kernel build: limit dev output footprint
This makes the disk usage footprint of building the kernel smaller in 3
ways:

1) There is no separate kernel source derivation
2) Rather than using the entire build tree, only the output of make
modules_prepare is kept in the $dev output (plus the module symbol
versioning file generated during the build)
3) Only the subset of the source tree known to be needed for external
builds is kept in $dev

Note that while 2) is supported by official kernel documentation, I
couldn't find any source describing what we need to keep for 3). I've
started with the bare minimum (the main Makefile is called by the
Makefile generated by make modules_prepare) and we can/should add more
as needed for kernelPackages.

Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-01 23:56:24 -05:00
Shea Levy
f95d214cfd Implement generic kernel build via manual-config
This has three major benefits:

1. We no longer have two kernel build processes to maintain

2. The build process is (IMO) cleaner and cleaves more closely to
upstream. In partuclar, we use make install to install the kernel and
development source/build trees, eliminating the guesswork about which
files to copy.

3. The derivation has multiple outputs: the kernel and modules are in
the default `out' output, while the build and source trees are in a
`dev' output. This makes it possible for the full source and build tree
to be kept (which is expected by out-of-tree modules) without bloating
the closure of the system derivation.

In addition, if a solution for how to handle queries in the presence of
imports from derivations ever makes it into nix, a framework for
querying the full configuration of the kernel in nix expressions is
already in place.

Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-01 09:21:25 -05:00
Shea Levy
a87b1f36e0 manual-config: Fully general cross-compiling
In the most general case, the cross and native kernel may differ in
patches and configuration file as well as architecture, kernel target,
etc. It's probably overkill to support that case, but since it was
doable without much duplication and it will make integrating with the
existing cross-compilation support in the generic kernel I decided to
implement it anyway.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 23:09:42 -05:00
Shea Levy
784c6d320c manual-config: Put `source' before the version in the sourceRoot name
nix's version parsing treats the previous name as a package named
`linux' with version `${version}-source', when we really want a package
named `linux-source' with version `${version}'

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 22:50:41 -05:00
Shea Levy
0c5776bc0f manual-config: Patch conf.c for generate-config.pl
This only affects the `oldaskconfig' make target, so it shouldn't really
affect current manual-config users, but it does make it more
straightforward to implement the generic kernel build on top of
manual-config.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 22:49:12 -05:00
Shea Levy
fe185f0a18 manual-config: Always add config query functions
If the config attrset is manually specified, we still want isYes,
isModule, etc. to work. But we let the passed in config attrset take
precedence, if for some reason the caller wants to provide their own
implementation of one or more of these functions.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 22:46:43 -05:00
Shea Levy
008992619f linux/manual-config: Cross-compiling support
With this, I was able to successfully compile a defconfig kernel for the
sheevaplug, though I didn't actually try to run it (not having a
sheevaplug myself).

For native compiles, the most significant difference is that the
platform's kernel target is built directly rather than hoping the
default make target will pull it in.

Also some stylistic improvements along the way.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 22:38:06 -05:00
Shea Levy
58246936e4 platforms.nix: Separate 32-bit and 64-bit PCs
With this, stdenv.platform.kernelArch can be used by the kernel builder
for PC platforms too.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-31 21:34:44 -05:00
Michael Raskin
af9db522cf Update FLTK and TigerVNC; doesn't fix TigerVNC Xvnc build per se 2014-01-01 01:36:57 +04:00
Peter Simons
bad39d4861 Merge pull request #1435 from tomberek/add_fastcgi
Add fastcgi Haskell package
2013-12-31 07:42:03 -08:00
William A. Kennington III
844ab16b90 apr-util: Cleanup
Add the required packages to buildInputs. Create a wrapper around
apr-1-config so that internal sed commands succeed.
2013-12-31 08:00:21 -06:00
William A. Kennington III
184dd198fb subversion: Tweaks and Fixes
Remove ssl and compression options which are no longer valid when using
serf in place of neon. Also, make sure serf is an optional dependency.
2013-12-31 07:59:37 -06:00
Mathijs Kwik
515488790e texLive: passthru all source attributes 2013-12-31 12:25:44 +01:00
Rickard Nilsson
bc0c50ced9 New Haskell package: wai-handler-fastcgi 2.0.0 2013-12-31 09:55:04 +01:00
Evgeny Egorochkin
b656d78ecb phonon-backend-gstreamer: fix install destination 2013-12-31 10:11:12 +02:00
Nixpkgs Monitor
47c5b16643 syslinux: update from 4.06 to 4.07 2013-12-31 05:44:11 +02:00
Domen Kožar
68e37cf417 ike: add missing dependencies, note kernel compatibility 2013-12-30 22:19:16 +01:00
Peter Simons
caea2b6fd3 haskell-yesod-platform: update to version 1.2.5.3 2013-12-30 20:49:30 +01:00
Peter Simons
330501e733 haskell-yesod-bin: update to version 1.2.5.5 2013-12-30 20:49:30 +01:00
Peter Simons
0301cfccae haskell-warp-tls: update to version 2.0.0.1 2013-12-30 20:49:29 +01:00
Peter Simons
cc6331d0fe haskell-Elm: update to version 0.10.1 2013-12-30 20:49:29 +01:00
Michael Raskin
a3843455c5 Re-add HTTP/HTTPS support back to Subversion by adding serf. Tested. 2013-12-30 23:33:22 +04:00
Michael Raskin
64361fd269 Update SlimerJS to 0.9.0 release 2013-12-30 23:33:22 +04:00
Thomas Bereknyei
218d229b06 Add fastcgi Haskell package 2013-12-30 14:04:26 -05:00
Peter Simons
c39dbf65cd Merge pull request #1422 from ocharles/lens-aeson
haskellPackages.lensAeson: New expression
2013-12-30 10:37:39 -08:00
Peter Simons
ea47447a29 Merge pull request #1426 from wkennington/openssh
openssh: Update from 6.2p2 -> 6.4p1
2013-12-30 10:37:27 -08:00
Lluís Batlle i Rossell
34859e2a42 Adding wxWidgets 3.0.0 2013-12-30 17:35:31 +01:00
Shea Levy
4af1c79c06 Remove uses of __overrides feature
In addition to replacing use of a feature with IMO confusing semantics,
this will also let us cleanly separate out all-packages.nix into
category-specific files without changing the structure of the pkgs
attrset.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-12-30 11:04:45 -05:00
Lluís Batlle i Rossell
f529e91501 Updating vxl from 1.13 to 1.17. 2013-12-30 15:32:51 +01:00
Moritz Heidkamp
29e16c62eb Add chunksync package 2013-12-30 15:04:25 +01:00
Rob Vermaas
1e36663229 Update node packages 2013-12-30 13:24:51 +01:00
Rob Vermaas
96a51da082 Oraclejdk7: Fix hash and extracted path for jce_policy.zip. Add extra rpath. 2013-12-30 12:39:48 +01:00
Michael Raskin
950b785993 Use CLisp 2.44.1 for SBCL build --- some releases like it better for bootstrapping... 2013-12-30 14:17:48 +04:00
William A. Kennington III
c4e03f0739 openssh: Update from 6.2p2 -> 6.4p1
This patch also bumps up the HPN version of openssh so that it compiles
on top of 6.4. Along with the bump, a package was added for the high
performance networking version.

The gcmrekey patch was removed as this vulnerability is fixed in
version 6.4 onward. http://www.openssh.org/txt/gcmrekey.adv
2013-12-30 02:42:12 -06:00
William A. Kennington III
0270be1eb6 subversion: Update from 1.7.14 -> 1.8.5 2013-12-30 00:08:59 +00:00
Marius Rejdak
2da33b4ecf tint2 nixpkg 2013-12-29 23:35:46 +01:00
Michael Raskin
26b3d0ab50 Update unstable Wine to 1.7.9 2013-12-30 02:32:19 +04:00
Michael Raskin
d22106ab2d Update SBCL to 1.1.14 2013-12-30 02:30:55 +04:00
William A. Kennington III
b05d8d8310 vlc: Update from 2.1.1 -> 2.1.2 2013-12-29 21:35:01 +01:00
Domen Kožar
5e641b3ffc pythonPackages.py: 1.4.13 -> 1.4.19 2013-12-29 20:04:26 +01:00
Domen Kožar
8a920ad306 pyramid_jinja: 1.6 -> 1.9 2013-12-29 19:57:34 +01:00
Domen Kožar
43ede75535 python3Packages: update some to fix py3k support 2013-12-29 19:52:26 +01:00
Domen Kožar
c73f118af6 setuptools: 0.9.8 -> 2.0.2 2013-12-29 19:15:36 +01:00
Michael Raskin
952a0a3797 Fix btrfs source link 2013-12-29 21:34:30 +04:00
Michael Raskin
e0b529d088 Fix btrfs source link 2013-12-29 21:33:37 +04:00
Domen Kožar
5603e611a7 xbmc: 12.2 -> 12.3 2013-12-29 17:53:40 +01:00
Michael Raskin
e9ec56a596 Update vim_configurable to the same source tag as default vim 2013-12-29 19:38:43 +04:00