First movement to get the raspberrypi stdenv building.
This commit is contained in:
parent
1af2ada7d4
commit
1b29d29c76
|
@ -294,7 +294,9 @@ stdenv.mkDerivation ({
|
||||||
${if langAda then " --enable-libada" else ""}
|
${if langAda then " --enable-libada" else ""}
|
||||||
${if (cross == null && stdenv.isi686) then "--with-arch=i686" else ""}
|
${if (cross == null && stdenv.isi686) then "--with-arch=i686" else ""}
|
||||||
${if cross != null then crossConfigureFlags else ""}
|
${if cross != null then crossConfigureFlags else ""}
|
||||||
";
|
" + (if (cross == null && stdenv.platform.name == "raspberrypi") then
|
||||||
|
"--with-arch=armv6 --with-fpu=vfp --with-float=hard --with-mode=arm" else "");
|
||||||
|
# ^ This above is out of "" because we don't want to rebuild stdenv in other archs
|
||||||
|
|
||||||
targetConfig = if (cross != null) then cross.config else null;
|
targetConfig = if (cross != null) then cross.config else null;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ cross :
|
||||||
, machHeaders ? null, hurdHeaders ? null, libpthreadHeaders ? null
|
, machHeaders ? null, hurdHeaders ? null, libpthreadHeaders ? null
|
||||||
, mig ? null, fetchgit ? null
|
, mig ? null, fetchgit ? null
|
||||||
, profilingLibraries ? false, meta
|
, profilingLibraries ? false, meta
|
||||||
, preConfigure ? "", ... }@args :
|
, preConfigure ? "", recentGcc ? true, ... }@args :
|
||||||
|
|
||||||
let
|
let
|
||||||
# For GNU/Hurd, see below.
|
# For GNU/Hurd, see below.
|
||||||
|
@ -120,11 +120,21 @@ stdenv.mkDerivation ({
|
||||||
&& cross.platform.kernelMajor == "2.6") [
|
&& cross.platform.kernelMajor == "2.6") [
|
||||||
"--enable-kernel=2.6.0"
|
"--enable-kernel=2.6.0"
|
||||||
"--with-__thread"
|
"--with-__thread"
|
||||||
] ++ stdenv.lib.optionals stdenv.isArm [
|
] ++ stdenv.lib.optionals (cross == null &&
|
||||||
|
(stdenv.system == "armv5tel-linux") ||
|
||||||
|
(!recentGcc && stdenv.platform.name == "raspberrypi")) [
|
||||||
"--host=arm-linux-gnueabi"
|
"--host=arm-linux-gnueabi"
|
||||||
"--build=arm-linux-gnueabi"
|
"--build=arm-linux-gnueabi"
|
||||||
"--without-fp"
|
"--without-fp"
|
||||||
|
|
||||||
|
# To avoid linking with -lgcc_s (dynamic link)
|
||||||
|
# so the glibc does not depend on its compiler store path
|
||||||
|
"libc_cv_as_needed=no"
|
||||||
|
] ++ stdenv.lib.optionals (cross == null && recentGcc && stdenv.platform.name == "raspberrypi") [
|
||||||
|
"--host=arm-linux-gnueabihf"
|
||||||
|
"--build=arm-linux-gnueabihf"
|
||||||
|
"--with-fp"
|
||||||
|
|
||||||
# To avoid linking with -lgcc_s (dynamic link)
|
# To avoid linking with -lgcc_s (dynamic link)
|
||||||
# so the glibc does not depend on its compiler store path
|
# so the glibc does not depend on its compiler store path
|
||||||
"libc_cv_as_needed=no"
|
"libc_cv_as_needed=no"
|
||||||
|
@ -192,6 +202,10 @@ stdenv.mkDerivation ({
|
||||||
configureScript="`pwd`/../$sourceRoot/configure"
|
configureScript="`pwd`/../$sourceRoot/configure"
|
||||||
|
|
||||||
${preConfigure}
|
${preConfigure}
|
||||||
|
'' + stdenv.lib.optionalString (cross == null
|
||||||
|
&& recentGcc
|
||||||
|
&& stdenv.platform.name == "raspberrypi") ''
|
||||||
|
configureFlagsArray=("CFLAGS=-march=armv6 -mfpu=vfp -mhard-float")
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, profilingLibraries ? false
|
, profilingLibraries ? false
|
||||||
, gccCross ? null
|
, gccCross ? null
|
||||||
, debugSymbols ? false
|
, debugSymbols ? false
|
||||||
|
, recentGcc ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert stdenv.gcc.gcc != null;
|
assert stdenv.gcc.gcc != null;
|
||||||
|
@ -19,7 +20,7 @@ in
|
||||||
+ stdenv.lib.optionalString debugSymbols "-debug";
|
+ stdenv.lib.optionalString debugSymbols "-debug";
|
||||||
|
|
||||||
inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries
|
inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries
|
||||||
gccCross;
|
gccCross recentGcc;
|
||||||
|
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@ rec {
|
||||||
if stdenvType == "i686-linux" then stdenvLinux else
|
if stdenvType == "i686-linux" then stdenvLinux else
|
||||||
if stdenvType == "x86_64-linux" then stdenvLinux else
|
if stdenvType == "x86_64-linux" then stdenvLinux else
|
||||||
if stdenvType == "armv5tel-linux" then stdenvLinux else
|
if stdenvType == "armv5tel-linux" then stdenvLinux else
|
||||||
|
if stdenvType == "armv6l-linux" then stdenvLinux else
|
||||||
if stdenvType == "armv7l-linux" then stdenvLinux else
|
if stdenvType == "armv7l-linux" then stdenvLinux else
|
||||||
if stdenvType == "mips64el-linux" then stdenvLinux else
|
if stdenvType == "mips64el-linux" then stdenvLinux else
|
||||||
if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
|
if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
|
||||||
|
|
|
@ -87,6 +87,7 @@ let
|
||||||
|| result.system == "x86_64-linux"
|
|| result.system == "x86_64-linux"
|
||||||
|| result.system == "powerpc-linux"
|
|| result.system == "powerpc-linux"
|
||||||
|| result.system == "armv5tel-linux"
|
|| result.system == "armv5tel-linux"
|
||||||
|
|| result.system == "armv6l-linux"
|
||||||
|| result.system == "armv7l-linux"
|
|| result.system == "armv7l-linux"
|
||||||
|| result.system == "mips64el-linux";
|
|| result.system == "mips64el-linux";
|
||||||
isGNU = result.system == "i686-gnu"; # GNU/Hurd
|
isGNU = result.system == "i686-gnu"; # GNU/Hurd
|
||||||
|
@ -120,6 +121,7 @@ let
|
||||||
isMips = result.system == "mips-linux"
|
isMips = result.system == "mips-linux"
|
||||||
|| result.system == "mips64el-linux";
|
|| result.system == "mips64el-linux";
|
||||||
isArm = result.system == "armv5tel-linux"
|
isArm = result.system == "armv5tel-linux"
|
||||||
|
|| result.system == "armv6l-linux"
|
||||||
|| result.system == "armv7l-linux";
|
|| result.system == "armv7l-linux";
|
||||||
|
|
||||||
# Utility function: allow stdenv to be easily regenerated with
|
# Utility function: allow stdenv to be easily regenerated with
|
||||||
|
|
|
@ -16,6 +16,7 @@ rec {
|
||||||
else if system == "x86_64-linux" then import ./bootstrap/x86_64
|
else if system == "x86_64-linux" then import ./bootstrap/x86_64
|
||||||
else if system == "powerpc-linux" then import ./bootstrap/powerpc
|
else if system == "powerpc-linux" then import ./bootstrap/powerpc
|
||||||
else if system == "armv5tel-linux" then import ./bootstrap/armv5tel
|
else if system == "armv5tel-linux" then import ./bootstrap/armv5tel
|
||||||
|
else if system == "armv6l-linux" then import ./bootstrap/armv5tel
|
||||||
else if system == "armv7l-linux" then import ./bootstrap/armv5tel
|
else if system == "armv7l-linux" then import ./bootstrap/armv5tel
|
||||||
else if system == "mips64el-linux" then import ./bootstrap/loongson2f
|
else if system == "mips64el-linux" then import ./bootstrap/loongson2f
|
||||||
else abort "unsupported platform for the pure Linux stdenv";
|
else abort "unsupported platform for the pure Linux stdenv";
|
||||||
|
@ -57,7 +58,7 @@ rec {
|
||||||
builder = bootstrapFiles.sh;
|
builder = bootstrapFiles.sh;
|
||||||
|
|
||||||
args =
|
args =
|
||||||
if system == "armv5tel-linux"
|
if (system == "armv5tel-linux" || system == "arm6l-linux")
|
||||||
then [ ./scripts/unpack-bootstrap-tools-arm.sh ]
|
then [ ./scripts/unpack-bootstrap-tools-arm.sh ]
|
||||||
else [ ./scripts/unpack-bootstrap-tools.sh ];
|
else [ ./scripts/unpack-bootstrap-tools.sh ];
|
||||||
|
|
||||||
|
@ -189,7 +190,7 @@ rec {
|
||||||
|
|
||||||
# 5) Build Glibc with the bootstrap tools. The result is the full,
|
# 5) Build Glibc with the bootstrap tools. The result is the full,
|
||||||
# dynamically linked, final Glibc.
|
# dynamically linked, final Glibc.
|
||||||
stdenvLinuxGlibc = stdenvLinuxBoot2Pkgs.glibc;
|
stdenvLinuxGlibc = stdenvLinuxBoot2Pkgs.glibc.override { recentGcc = false; };
|
||||||
|
|
||||||
|
|
||||||
# 6) Construct a third stdenv identical to the 2nd, except that
|
# 6) Construct a third stdenv identical to the 2nd, except that
|
||||||
|
@ -201,19 +202,23 @@ rec {
|
||||||
coreutils = bootstrapTools;
|
coreutils = bootstrapTools;
|
||||||
libc = stdenvLinuxGlibc;
|
libc = stdenvLinuxGlibc;
|
||||||
};
|
};
|
||||||
overrides = pkgs: {
|
overrides = pkgs: ({
|
||||||
glibc = stdenvLinuxGlibc;
|
glibc = stdenvLinuxGlibc;
|
||||||
inherit (stdenvLinuxBoot1Pkgs) perl;
|
inherit (stdenvLinuxBoot1Pkgs) perl;
|
||||||
|
} // (if (platform ? name && platform.name != "raspberrypi") then {
|
||||||
# Link GCC statically against GMP etc. This makes sense because
|
# Link GCC statically against GMP etc. This makes sense because
|
||||||
# these builds of the libraries are only used by GCC, so it
|
# these builds of the libraries are only used by GCC, so it
|
||||||
# reduces the size of the stdenv closure.
|
# reduces the size of the stdenv closure.
|
||||||
|
|
||||||
|
# On raspberry pi we can't do that, because libgcc/libstdc++ are made
|
||||||
|
# without hardfp, and can't be linked with the new hardfp code in gcc.
|
||||||
gmp = pkgs.gmp.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
gmp = pkgs.gmp.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
mpfr = pkgs.mpfr.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
mpfr = pkgs.mpfr.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
mpc = pkgs.mpc.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
mpc = pkgs.mpc.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
isl = pkgs.isl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
isl = pkgs.isl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
cloog = pkgs.cloog.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
cloog = pkgs.cloog.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
};
|
} else {}));
|
||||||
inherit fetchurl;
|
inherit fetchurl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,104 @@ rec {
|
||||||
ubootConfig = "sheevaplug_config";
|
ubootConfig = "sheevaplug_config";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
raspberrypi = {
|
||||||
|
name = "raspberrypi";
|
||||||
|
kernelMajor = "2.6";
|
||||||
|
kernelHeadersBaseConfig = "kirkwood_defconfig";
|
||||||
|
kernelBaseConfig = "bcmrpi_defconfig";
|
||||||
|
kernelArch = "arm";
|
||||||
|
kernelAutoModules = false;
|
||||||
|
kernelExtraConfig =
|
||||||
|
''
|
||||||
|
BLK_DEV_RAM y
|
||||||
|
BLK_DEV_INITRD y
|
||||||
|
BLK_DEV_CRYPTOLOOP m
|
||||||
|
BLK_DEV_DM m
|
||||||
|
DM_CRYPT m
|
||||||
|
MD y
|
||||||
|
REISERFS_FS m
|
||||||
|
BTRFS_FS m
|
||||||
|
XFS_FS m
|
||||||
|
JFS_FS m
|
||||||
|
EXT4_FS m
|
||||||
|
USB_STORAGE_CYPRESS_ATACB m
|
||||||
|
|
||||||
|
# mv cesa requires this sw fallback, for mv-sha1
|
||||||
|
CRYPTO_SHA1 y
|
||||||
|
|
||||||
|
IP_PNP y
|
||||||
|
IP_PNP_DHCP y
|
||||||
|
NFS_FS y
|
||||||
|
ROOT_NFS y
|
||||||
|
TUN m
|
||||||
|
NFS_V4 y
|
||||||
|
NFS_V4_1 y
|
||||||
|
NFS_FSCACHE y
|
||||||
|
NFSD m
|
||||||
|
NFSD_V2_ACL y
|
||||||
|
NFSD_V3 y
|
||||||
|
NFSD_V3_ACL y
|
||||||
|
NFSD_V4 y
|
||||||
|
NETFILTER y
|
||||||
|
IP_NF_IPTABLES y
|
||||||
|
IP_NF_FILTER y
|
||||||
|
IP_NF_MATCH_ADDRTYPE y
|
||||||
|
IP_NF_TARGET_LOG y
|
||||||
|
IP_NF_MANGLE y
|
||||||
|
IPV6 m
|
||||||
|
VLAN_8021Q m
|
||||||
|
|
||||||
|
CIFS y
|
||||||
|
CIFS_XATTR y
|
||||||
|
CIFS_POSIX y
|
||||||
|
CIFS_FSCACHE y
|
||||||
|
CIFS_ACL y
|
||||||
|
|
||||||
|
WATCHDOG y
|
||||||
|
WATCHDOG_CORE y
|
||||||
|
ORION_WATCHDOG m
|
||||||
|
|
||||||
|
ZRAM m
|
||||||
|
NETCONSOLE m
|
||||||
|
|
||||||
|
# Fail to build
|
||||||
|
DRM n
|
||||||
|
SCSI_ADVANSYS n
|
||||||
|
USB_ISP1362_HCD n
|
||||||
|
SND_SOC n
|
||||||
|
SND_ALI5451 n
|
||||||
|
FB_SAVAGE n
|
||||||
|
SCSI_NSP32 n
|
||||||
|
ATA_SFF n
|
||||||
|
SUNGEM n
|
||||||
|
IRDA n
|
||||||
|
ATM_HE n
|
||||||
|
SCSI_ACARD n
|
||||||
|
BLK_DEV_CMD640_ENHANCED n
|
||||||
|
|
||||||
|
FUSE_FS m
|
||||||
|
|
||||||
|
# nixos mounts some cgroup
|
||||||
|
CGROUPS y
|
||||||
|
|
||||||
|
# Latencytop
|
||||||
|
LATENCYTOP y
|
||||||
|
|
||||||
|
# Ubi for the mtd
|
||||||
|
MTD_UBI y
|
||||||
|
UBIFS_FS y
|
||||||
|
UBIFS_FS_XATTR y
|
||||||
|
UBIFS_FS_ADVANCED_COMPR y
|
||||||
|
UBIFS_FS_LZO y
|
||||||
|
UBIFS_FS_ZLIB y
|
||||||
|
UBIFS_FS_DEBUG n
|
||||||
|
'';
|
||||||
|
kernelTarget = "uImage";
|
||||||
|
uboot = "sheevaplug";
|
||||||
|
# Only for uboot = uboot :
|
||||||
|
ubootConfig = "sheevaplug_config";
|
||||||
|
};
|
||||||
|
|
||||||
guruplug = sheevaplug // {
|
guruplug = sheevaplug // {
|
||||||
# Define `CONFIG_MACH_GURUPLUG' (see
|
# Define `CONFIG_MACH_GURUPLUG' (see
|
||||||
# <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>)
|
# <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>)
|
||||||
|
|
Loading…
Reference in New Issue