nixpkgs/pkgs/top-level/release.nix
Lluís Batlle i Rossell b1b7266aa3 After some testing with an ultrasparc cross-compiler:
Updating the cross-build expressions, adding some flexibility.
Updated the linux headers used cross building, as 2.6.28 had bugs on endianness in
sparc64.
There were, as usual some bugs in gcc. Maybe not many make a cross compiler to
ultrasparc.

For the record, I could build an ultrasparc kernel with this base nix:
import /etc/nixos/nixpkgs/default.nix   # The root nixpkgs default.nix
{
    crossSystem = {
        config = "sparc64-unknown-linux";
        bigEndian = true;
        arch = "sparc64";
        float = "soft";
        withTLS = true;
        cpu = "ultrasparc";
    };

    config = pkgs: {
      packageOverrides = pkgs : {
        platform = {
            name = "sparc64";
            kernelHeadersBaseConfig = "sparc64_defconfig";
            kernelBaseConfig = "sparc64_defconfig";
            kernelArch = "sparc";
            kernelAutoModules = false;
            kernelTarget = "zImage";
            uboot = null;
        };
      };
    };
}

Although it did not boot directly in qemu-system-sparc64:
[sparc64] Kernel already loaded
Unhandled Exception 0x0000000000000020
PC = 0x0000000000404000 NPC = 0x0000000000404004

svn path=/nixpkgs/trunk/; revision=20269
2010-02-27 00:52:48 +00:00

726 lines
16 KiB
Nix

let
allPackages = import ./all-packages.nix;
pkgs = allPackages {};
/* The working or failing letters for cross builds will be sent only to
the following maintainers, as most package maintainers will not be
interested in the result of cross building a package. */
crossMaintainers = with pkgs.lib.maintainers; [ viric ];
/* Set the Hydra scheduling priority for a job. The default
priority (100) should be used for most jobs. A different
priority should only be used for a few particularly interesting
jobs (in terms of giving feedback to developers), such as stdenv.
*/
prio = level: job: toJob job // { schedulingPriority = level; };
toJob = x: if builtins.isAttrs x then x else
{ type = "job"; systems = x; schedulingPriority = 5; };
/* Perform a job on the given set of platforms. The function `f' is
called by Hydra for each platform, and should return some job
to build on that platform. `f' is passed the Nixpkgs collection
for the platform in question. */
testOn = systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {};
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds */
testOnCross = crossSystem: systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system
crossSystem;}) else {};
/* Map an attribute of the form `foo = [platforms...]' to `testOn
[platforms...] (pkgs: pkgs.foo)'. */
mapTestOn = pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs:
pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath path pkgs);
in testOn job.systems getPkg);
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds,
* and triggering the build of the host derivation (cross built - hostDrv). */
mapTestOnCross = crossSystem: pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs: setCrossMaintainers
(pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath (path ++ ["hostDrv"]) pkgs));
in testOnCross crossSystem job.systems getPkg);
setCrossMaintainers = pkg: pkg // { meta.maintainers = crossMaintainers; };
/* Find all packages that have a meta.platforms field listing the
supported platforms. */
packagesWithMetaPlatform = attrSet:
if builtins ? tryEval then
let pairs = pkgs.lib.concatMap
(x:
let pair = builtins.tryEval
(let
attrVal = (builtins.getAttr x attrSet);
in
{val=(processPackage attrVal);
attrVal = attrVal;
attrValIsAttrs = builtins.isAttrs attrVal;
});
success = (builtins.tryEval pair.value.attrVal).success;
in
if success && pair.value.attrValIsAttrs &&
pair.value.val != [] then
[{name= x; value=pair.value.val;}] else [])
(builtins.attrNames attrSet);
in
builtins.listToAttrs pairs
else {};
# May fail as much as it wishes, we will catch the error.
processPackage = attrSet:
if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
packagesWithMetaPlatform attrSet
else
if attrSet ? meta && attrSet.meta ? platforms
then attrSet.meta.platforms
else [];
/* Common platform groups on which to test packages. */
inherit (pkgs.lib.platforms) linux darwin cygwin allBut all mesaPlatforms;
/* Platform groups for specific kinds of applications. */
x11Supported = linux;
gtkSupported = linux;
ghcSupported = linux ++ darwin;
in {
tarball = import ./make-tarball.nix;
} // (mapTestOn ((packagesWithMetaPlatform pkgs) // rec {
MPlayer = linux;
abcde = linux;
alsaUtils = linux;
apacheHttpd = linux;
aspell = all;
at = linux;
aterm242fixes = all;
aterm25 = all;
aterm28 = all;
audacious = linux;
audacious_plugins = linux;
autoconf = all;
automake110x = all;
automake111x = all;
automake19x = all;
avahi = allBut "i686-cygwin"; # Cygwin builds fail
bash = all;
bashInteractive = all;
bazaar = linux; # first let sqlite3 work on darwin
bc = all;
binutils = linux;
bind = linux;
bison23 = all;
bison24 = all;
bitlbee = linux;
bittorrent = linux;
blender = linux;
boost = all;
boostFull = all;
bsdiff = all;
btrfsProgs = linux;
bvi = all;
bzip2 = all;
cabextract = all;
castleCombat = linux;
cdrkit = linux;
chatzilla = linux;
cksfv = all;
classpath = linux;
cmake = all;
#compiz = linux;
consolekit = linux;
coreutils = all;
cpio = all;
cron = linux;
cups = linux;
cvs = linux;
db4 = all;
ddrescue = linux;
dhcp = linux;
dico = linux;
dietlibc = linux;
diffutils = all;
docbook5 = all;
docbook5_xsl = all;
docbook_xml_dtd_42 = all;
docbook_xml_dtd_43 = all;
docbook_xsl = all;
dosbox = linux;
dovecot = linux;
doxygen = linux;
dpkg = linux;
drgeo = linux;
e2fsprogs = linux;
ejabberd = linux;
elinks = linux;
emacs22 = gtkSupported;
emacs23 = gtkSupported;
enscript = all;
eprover = linux;
evince = linux;
expect = linux;
exult = linux;
fbterm = linux;
feh = linux;
file = all;
findutils = all;
flex = all;
flex2535 = all;
fontforge = linux;
fuse = linux;
gajim = linux;
gawk = all;
gcc = all;
gcc33 = linux;
gcc34 = linux;
gcc41 = linux;
gcc42 = linux;
gcc43_multi = ["x86_64-linux"];
gcc44 = linux;
gcj44 = linux;
ghdl = linux;
ghostscript = linux;
ghostscriptX = linux;
gimp = linux;
git = linux;
#gitFull = linux;
glibc = linux;
glibcLocales = linux;
glxinfo = linux;
gnash = linux;
gnat44 = linux;
gnugrep = all;
gnum4 = all;
gnumake = all;
gnupatch = all;
gnupg2 = linux;
gnuplot = allBut "i686-cygwin";
gnused = all;
gnutar = all;
gnutls = linux;
gphoto2 = linux;
gpm = linux;
gprolog = linux;
gpsbabel = all;
gpscorrelate = linux;
gpsd = linux;
gqview = gtkSupported;
graphviz = all;
grub = linux;
grub2 = linux;
gsl = linux;
guile = linux; # tests fail on Cygwin
guileLib = linux;
gv = linux;
gw6c = linux;
gzip = all;
hal = linux;
hal_info = linux;
hddtemp = linux;
hdparm = linux;
hello = all;
host = linux;
htmlTidy = all;
hugin = linux;
iana_etc = linux;
icecat3Xul = linux;
icewm = linux;
idutils = all;
ifplugd = linux;
imagemagick = allBut "i686-cygwin";
impressive = linux;
inetutils = linux;
inkscape = linux;
iputils = linux;
iproute = linux;
iptables = linux;
irssi = linux;
jfsutils = linux;
jfsrec = linux;
jnettop = linux;
jwhois = linux;
k3b = linux;
kbd = linux;
kcachegrind = linux;
keen4 = ["i686-linux"];
kile = linux;
klibc = linux;
konversation = linux;
ktorrent = linux;
kvm = linux;
qemu = linux;
qemu_kvm = linux;
less = all;
lftp = all;
libarchive = linux;
libsmbios = linux;
libtool = all;
libtool_2 = all;
libxml2 = all;
libxslt = all;
linuxwacom = linux;
lout = linux;
lsh = linux;
lsof = linux;
ltrace = linux;
lvm2 = linux;
lynx = linux;
lzma = linux;
man = linux;
manpages = linux;
maxima = linux;
mc = all;
mcabber = linux;
mcron = linux;
mdadm = linux;
mercurial = allBut "i686-cygwin";
mesa = mesaPlatforms;
midori = linux;
mingetty = linux;
mk = linux;
mktemp = all;
mod_python = linux;
module_init_tools = linux;
mono = linux;
monotone = linux;
mpg321 = linux;
mutt = linux;
mysql = linux;
mysql51 = linux;
namazu = all;
nano = allBut "i686-cygwin";
ncat = linux;
netcat = all;
nfsUtils = linux;
nix = all;
nixUnstable = all;
nmap = linux;
nss_ldap = linux;
nssmdns = linux;
ntfs3g = linux;
ntp = linux;
ocaml = linux;
octave = linux;
openoffice = linux;
openssh = linux;
openssl = all;
pam_console = linux;
pam_ldap = linux;
pam_login = linux;
pam_unix2 = linux;
pan = gtkSupported;
par2cmdline = all;
pavucontrol = linux;
pciutils = linux;
perl = all;
php = linux;
pidgin = linux;
pinentry = linux;
pkgconfig = all;
pltScheme = linux;
pmccabe = linux;
policykit = linux;
portmap = linux;
postgresql = all;
postfix = linux;
ppl = all;
procps = linux;
pwdutils = linux;
pthreadmanpages = all;
pygtk = linux;
pyqt4 = linux;
python = allBut "i686-cygwin";
pythonFull = linux;
sbcl = all;
qt3 = linux;
qt4 = linux;
qt45 = linux;
qt46 = linux;
quake3demo = linux;
readline = all;
reiserfsprogs = linux;
rlwrap = all;
rogue = all;
rpm = linux;
rsync = linux;
rubber = allBut "i686-cygwin";
ruby = all;
rxvt_unicode = all;
samba = linux;
screen = linux ++ darwin;
scrot = linux;
sdparm = linux;
seccure = linux;
sgtpuzzles = linux;
sharutils = all;
slim = linux;
sloccount = allBut "i686-cygwin";
smartmontools = all;
smbfsFuse = linux;
socat = linux;
spidermonkey = linux;
splashutils = linux;
sqlite = allBut "i686-cygwin";
squid = linux;
ssmtp = linux;
stdenv = prio 175 all;
stlport = linux;
strace = linux;
su = linux;
sudo = linux;
superTuxKart = linux;
swig = linux;
sylpheed = linux;
sysklogd = linux;
syslinux = ["i686-linux"];
sysvinit = linux;
sysvtools = linux;
tahoelafs = linux;
tangogps = linux;
tcl = linux;
tcpdump = linux;
teeworlds = linux;
tetex = linux;
texLive = linux;
texLiveBeamer = linux;
texLiveExtra = linux;
texinfo = all;
thunderbird2 = linux;
thunderbird3 = linux;
tightvnc = linux;
time = linux;
tinycc = ["i686-linux"];
udev = linux;
uml = ["i686-linux"];
unrar = linux;
unzip = all;
upstart = linux;
usbutils = linux;
utillinux = linux;
utillinuxCurses = linux;
uzbl = linux;
viking = linux;
vice = linux;
vim = linux;
vimHugeX = linux;
vlc = linux;
vncrec = linux;
vorbisTools = linux;
vpnc = linux;
vsftpd = linux;
w3m = all;
webkit = linux;
wget = all;
which = all;
wicd = linux;
wine = ["i686-linux"];
wireshark = linux;
wirelesstools = linux;
wpa_supplicant = linux;
wxGTK = linux;
x11_ssh_askpass = linux;
xchm = linux;
xfig = x11Supported;
xfsprogs = linux;
xineUI = linux;
xkeyboard_config = linux;
xlockmore = linux;
xmltv = linux;
xpdf = linux;
xscreensaver = linux;
xsel = linux;
xterm = linux;
xxdiff = linux;
zdelta = linux;
zile = linux;
zip = all;
zsh = linux;
aspellDicts = {
de = all;
en = all;
es = all;
fr = all;
nl = all;
ru = all;
};
dbus = {
libs = linux;
tools = linux;
};
emacs22Packages = {
bbdb = linux;
cedet = linux;
ecb = linux;
emacsw3m = linux;
emms = linux;
nxml = all;
};
emacs23Packages = emacs22Packages // {
jdee = linux;
};
firefox35Pkgs = {
firefox = prio 150 linux;
};
firefox36Pkgs = {
firefox = linux;
};
gnome = {
gnome_panel = linux;
metacity = linux;
gnome_vfs = linux;
};
gtkLibs = {
gtk = linux;
};
haskellPackages_ghc6102 = {
ghc = ghcSupported;
};
haskellPackages_ghc6103 = {
ghc = ghcSupported;
};
haskellPackages_ghc6104 = {
darcs = ghcSupported;
ghc = ghcSupported;
gtk2hs = linux;
leksah = linux;
lhs2tex = ghcSupported;
haskellPlatform = linux; /* OpenGL/mesa seems to fail on darwin */
xmonad = linux;
};
haskellPackages_ghc6121 = {
ghc = ghcSupported;
};
kde3 = {
kdebase = linux;
kdelibs = linux;
};
kde43 = {
kdelibs = linux;
kdelibs_experimental = linux;
kdebase_workspace = linux;
kdebase = linux;
kdebase_runtime = linux;
oxygen_icons = linux;
kdepimlibs = linux;
kdeadmin = linux;
kdeartwork = linux;
kdeaccessibility = linux;
kdeedu = linux;
kdegraphics = linux;
kdemultimedia = linux;
kdenetwork = linux;
kdepim = linux;
kdepim_runtime = linux;
kdeplasma_addons = linux;
kdegames = linux;
kdetoys = linux;
kdeutils = linux;
kdesdk = linux;
kdewebdev = linux;
krusader = linux;
kmplayer = linux;
ktorrent = linux;
koffice = linux;
konversation = linux;
kdesvn = linux;
amarok = linux;
l10n.ca = linux;
l10n.de = linux;
l10n.fr = linux;
l10n.nl = linux;
l10n.ru = linux;
};
kde44 = {
kdelibs = linux;
kdebase_workspace = linux;
kdebase = linux;
kdebase_runtime = linux;
oxygen_icons = linux;
kdepimlibs = linux;
kdeadmin = linux;
kdeartwork = linux;
kdeaccessibility = linux;
kdeedu = linux;
kdegraphics = linux;
kdemultimedia = linux;
kdenetwork = linux;
kdepim = linux;
kdepim_runtime = linux;
kdeplasma_addons = linux;
kdegames = linux;
kdetoys = linux;
kdeutils = linux;
kdesdk = linux;
kdewebdev = linux;
krusader = linux;
kmplayer = linux;
ktorrent = linux;
koffice = linux;
konversation = linux;
kdesvn = linux;
amarok = linux;
l10n.ca = linux;
l10n.de = linux;
l10n.fr = linux;
l10n.nl = linux;
l10n.ru = linux;
};
linuxPackages_2_6_25 = {
aufs = linux;
kernel = linux;
};
linuxPackages_2_6_27 = {
aufs = linux;
kernel = linux;
virtualbox = linux;
virtualboxGuestAdditions = linux;
};
linuxPackages_2_6_28 = {
aufs = linux;
kernel = linux;
virtualbox = linux;
virtualboxGuestAdditions = linux;
};
linuxPackages_2_6_29 = {
aufs = linux;
kernel = linux;
virtualbox = linux;
virtualboxGuestAdditions = linux;
};
linuxPackages_2_6_32 = {
aufs = linux;
kernel = linux;
virtualbox = linux;
virtualboxGuestAdditions = linux;
};
linuxPackages_2_6_33 = {
aufs = linux;
kernel = linux;
virtualbox = linux;
virtualboxGuestAdditions = linux;
};
strategoPackages = {
sdf = all;
strategoxt = all;
javafront = all;
strategoShell = linux ++ darwin;
dryad = linux;
};
strategoPackages018 = {
sdfStatic = all;
sdf = all;
strategoxt = all;
javafront = all;
aspectjfront = all;
strategoShell = all;
dryad = linux;
};
perlPackages = {
TaskCatalystTutorial = linux;
};
pythonPackages = {
zfec = linux;
};
xorg = {
fontadobe100dpi = linux;
fontadobe75dpi = linux;
fontbh100dpi = linux;
fontbhlucidatypewriter100dpi = linux;
fontbhlucidatypewriter75dpi = linux;
fontbhttf = linux;
fontcursormisc = linux;
fontmiscmisc = linux;
iceauth = linux;
libX11 = linux;
lndir = all;
setxkbmap = linux;
xauth = linux;
xev = linux;
xf86inputkeyboard = linux;
xf86inputmouse = linux;
xf86inputevdev = linux;
xf86inputsynaptics = linux;
xf86videoati = linux;
xf86videointel = linux;
xf86videonv = linux;
xf86videovesa = linux;
xfs = linux;
xkbcomp = linux;
xmessage = linux;
xorgserver = linux;
xrandr = linux;
xrdb = linux;
xset = linux;
};
} )) // (
/* Test some cross builds to the Sheevaplug */
let
crossSystem = {
config = "armv5tel-unknown-linux-gnueabi";
bigEndian = false;
arch = "arm";
float = "soft";
withTLS = true;
};
nativePlatforms = linux;
in {
crossArmLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
});
})