1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-19 12:11:28 +00:00

Merge remote-tracking branch 'origin/glibc-2.20' into staging

This commit is contained in:
Eelco Dolstra 2014-11-16 22:17:36 +01:00
commit a0f3faf34e
42 changed files with 235 additions and 1089 deletions

View file

@ -0,0 +1,15 @@
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801
https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=212740
--- a/gcc/sched-deps.c 2014/07/17 07:48:49 212739
+++ b/gcc/sched-deps.c 2014/07/17 07:49:44 212740
@@ -2744,7 +2744,8 @@
Consider for instance a volatile asm that changes the fpu rounding
mode. An insn should not be moved across this even if it only uses
pseudo-regs because it might give an incorrectly rounded result. */
- if (code != ASM_OPERANDS || MEM_VOLATILE_P (x))
+ if ((code != ASM_OPERANDS || MEM_VOLATILE_P (x))
+ && !DEBUG_INSN_P (insn))
reg_pending_barrier = TRUE_BARRIER;
/* For all ASM_OPERANDS, we must traverse the vector of input operands.

View file

@ -61,7 +61,7 @@ let version = "4.8.3";
enableParallelBuilding = true;
patches = []
patches = [ ./bug-61801.patch ]
++ optional enableParallelBuilding ./parallel-bconfig.patch
++ optional (cross != null) ./libstdc++-target.patch
++ optional noSysDirs ./no-sys-dirs.patch

View file

@ -21,6 +21,8 @@ stdenv.mkDerivation {
dontDisableStatic = true;
NIX_CFLAGS_COMPILE = "-D__USE_BSD";
meta = {
homepage = http://www.cwi.nl/htbin/sen1/twiki/bin/view/SEN1/ATerm;
license = "LGPL";

View file

@ -1,170 +0,0 @@
Picked from upstream commits, but excluding changes to news and tests:
d183645616b0533 and 4e8f95a0df7c2
Also see https://sourceware.org/bugzilla/show_bug.cgi?id=17137
diff --git a/locale/setlocale.c b/locale/setlocale.c
index 9458468..6455b8b 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
@@ -272,6 +272,8 @@ setlocale (int category, const char *locale)
of entries of the form `CATEGORY=VALUE'. */
const char *newnames[__LC_LAST];
struct __locale_data *newdata[__LC_LAST];
+ /* Copy of the locale argument, for in-place splitting. */
+ char *locale_copy = NULL;
/* Set all name pointers to the argument name. */
for (category = 0; category < __LC_LAST; ++category)
@@ -281,7 +283,13 @@ setlocale (int category, const char *locale)
if (__glibc_unlikely (strchr (locale, ';') != NULL))
{
/* This is a composite name. Make a copy and split it up. */
- char *np = strdupa (locale);
+ locale_copy = strdup (locale);
+ if (__glibc_unlikely (locale_copy == NULL))
+ {
+ __libc_rwlock_unlock (__libc_setlocale_lock);
+ return NULL;
+ }
+ char *np = locale_copy;
char *cp;
int cnt;
@@ -299,6 +307,7 @@ setlocale (int category, const char *locale)
{
error_return:
__libc_rwlock_unlock (__libc_setlocale_lock);
+ free (locale_copy);
/* Bogus category name. */
ERROR_RETURN;
@@ -391,8 +400,9 @@ setlocale (int category, const char *locale)
/* Critical section left. */
__libc_rwlock_unlock (__libc_setlocale_lock);
- /* Free the resources (the locale path variable). */
+ /* Free the resources. */
free (locale_path);
+ free (locale_copy);
return composite;
}
diff --git a/locale/findlocale.c b/locale/findlocale.c
index bbaf708..22e8b53 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <assert.h>
+#include <errno.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
@@ -57,6 +58,45 @@ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR;
+/* Checks if the name is actually present, that is, not NULL and not
+ empty. */
+static inline int
+name_present (const char *name)
+{
+ return name != NULL && name[0] != '\0';
+}
+
+/* Checks that the locale name neither extremely long, nor contains a
+ ".." path component (to prevent directory traversal). */
+static inline int
+valid_locale_name (const char *name)
+{
+ /* Not set. */
+ size_t namelen = strlen (name);
+ /* Name too long. The limit is arbitrary and prevents stack overflow
+ issues later. */
+ if (__glibc_unlikely (namelen > 255))
+ return 0;
+ /* Directory traversal attempt. */
+ static const char slashdot[4] = {'/', '.', '.', '/'};
+ if (__glibc_unlikely (memmem (name, namelen,
+ slashdot, sizeof (slashdot)) != NULL))
+ return 0;
+ if (namelen == 2 && __glibc_unlikely (name[0] == '.' && name [1] == '.'))
+ return 0;
+ if (namelen >= 3
+ && __glibc_unlikely (((name[0] == '.'
+ && name[1] == '.'
+ && name[2] == '/')
+ || (name[namelen - 3] == '/'
+ && name[namelen - 2] == '.'
+ && name[namelen - 1] == '.'))))
+ return 0;
+ /* If there is a slash in the name, it must start with one. */
+ if (__glibc_unlikely (memchr (name, '/', namelen) != NULL) && name[0] != '/')
+ return 0;
+ return 1;
+}
struct __locale_data *
internal_function
@@ -65,7 +105,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
{
int mask;
/* Name of the locale for this category. */
- char *loc_name;
+ char *loc_name = (char *) *name;
const char *language;
const char *modifier;
const char *territory;
@@ -73,31 +113,39 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
const char *normalized_codeset;
struct loaded_l10nfile *locale_file;
- if ((*name)[0] == '\0')
+ if (loc_name[0] == '\0')
{
/* The user decides which locale to use by setting environment
variables. */
- *name = getenv ("LC_ALL");
- if (*name == NULL || (*name)[0] == '\0')
- *name = getenv (_nl_category_names.str
+ loc_name = getenv ("LC_ALL");
+ if (!name_present (loc_name))
+ loc_name = getenv (_nl_category_names.str
+ _nl_category_name_idxs[category]);
- if (*name == NULL || (*name)[0] == '\0')
- *name = getenv ("LANG");
+ if (!name_present (loc_name))
+ loc_name = getenv ("LANG");
+ if (!name_present (loc_name))
+ loc_name = (char *) _nl_C_name;
}
- if (*name == NULL || (*name)[0] == '\0'
- || (__builtin_expect (__libc_enable_secure, 0)
- && strchr (*name, '/') != NULL))
- *name = (char *) _nl_C_name;
+ /* We used to fall back to the C locale if the name contains a slash
+ character '/', but we now check for directory traversal in
+ valid_locale_name, so this is no longer necessary. */
- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0
- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0)
+ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0
+ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0)
{
/* We need not load anything. The needed data is contained in
the library itself. */
*name = (char *) _nl_C_name;
return _nl_C[category];
}
+ else if (!valid_locale_name (loc_name))
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ *name = loc_name;
/* We really have to load some data. First we try the archive,
but only if there was no LOCPATH environment variable specified. */

View file

@ -1,206 +0,0 @@
http://anonscm.debian.org/viewvc/pkg-glibc/glibc-package/trunk/debian/patches/any/cvs-CVE-2014-5119.diff?revision=6248&view=co
commit a1a6a401ab0a3c9f15fb7eaebbdcee24192254e8
Author: Florian Weimer <fweimer@redhat.com>
Date: Tue Aug 26 19:38:59 2014 +0200
__gconv_translit_find: Disable function [BZ #17187]
This functionality has never worked correctly, and the implementation
contained a security vulnerability (CVE-2014-5119).
2014-08-26 Florian Weimer <fweimer@redhat.com>
[BZ #17187]
* iconv/gconv_trans.c (struct known_trans, search_tree, lock,
trans_compare, open_translit, __gconv_translit_find):
Remove module loading code.
--- a/iconv/gconv_trans.c
+++ b/iconv/gconv_trans.c
@@ -238,181 +238,12 @@ __gconv_transliterate (struct __gconv_step *step,
return __GCONV_ILLEGAL_INPUT;
}
-
-/* Structure to represent results of found (or not) transliteration
- modules. */
-struct known_trans
-{
- /* This structure must remain the first member. */
- struct trans_struct info;
-
- char *fname;
- void *handle;
- int open_count;
-};
-
-
-/* Tree with results of previous calls to __gconv_translit_find. */
-static void *search_tree;
-
-/* We modify global data. */
-__libc_lock_define_initialized (static, lock);
-
-
-/* Compare two transliteration entries. */
-static int
-trans_compare (const void *p1, const void *p2)
-{
- const struct known_trans *s1 = (const struct known_trans *) p1;
- const struct known_trans *s2 = (const struct known_trans *) p2;
-
- return strcmp (s1->info.name, s2->info.name);
-}
-
-
-/* Open (maybe reopen) the module named in the struct. Get the function
- and data structure pointers we need. */
-static int
-open_translit (struct known_trans *trans)
-{
- __gconv_trans_query_fct queryfct;
-
- trans->handle = __libc_dlopen (trans->fname);
- if (trans->handle == NULL)
- /* Not available. */
- return 1;
-
- /* Find the required symbol. */
- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context");
- if (queryfct == NULL)
- {
- /* We cannot live with that. */
- close_and_out:
- __libc_dlclose (trans->handle);
- trans->handle = NULL;
- return 1;
- }
-
- /* Get the context. */
- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames)
- != 0)
- goto close_and_out;
-
- /* Of course we also have to have the actual function. */
- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans");
- if (trans->info.trans_fct == NULL)
- goto close_and_out;
-
- /* Now the optional functions. */
- trans->info.trans_init_fct =
- __libc_dlsym (trans->handle, "gconv_trans_init");
- trans->info.trans_context_fct =
- __libc_dlsym (trans->handle, "gconv_trans_context");
- trans->info.trans_end_fct =
- __libc_dlsym (trans->handle, "gconv_trans_end");
-
- trans->open_count = 1;
-
- return 0;
-}
-
-
int
internal_function
__gconv_translit_find (struct trans_struct *trans)
{
- struct known_trans **found;
- const struct path_elem *runp;
- int res = 1;
-
- /* We have to have a name. */
- assert (trans->name != NULL);
-
- /* Acquire the lock. */
- __libc_lock_lock (lock);
-
- /* See whether we know this module already. */
- found = __tfind (trans, &search_tree, trans_compare);
- if (found != NULL)
- {
- /* Is this module available? */
- if ((*found)->handle != NULL)
- {
- /* Maybe we have to reopen the file. */
- if ((*found)->handle != (void *) -1)
- /* The object is not unloaded. */
- res = 0;
- else if (open_translit (*found) == 0)
- {
- /* Copy the data. */
- *trans = (*found)->info;
- (*found)->open_count++;
- res = 0;
- }
- }
- }
- else
- {
- size_t name_len = strlen (trans->name) + 1;
- int need_so = 0;
- struct known_trans *newp;
-
- /* We have to continue looking for the module. */
- if (__gconv_path_elem == NULL)
- __gconv_get_path ();
-
- /* See whether we have to append .so. */
- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0)
- need_so = 1;
-
- /* Create a new entry. */
- newp = (struct known_trans *) malloc (sizeof (struct known_trans)
- + (__gconv_max_path_elem_len
- + name_len + 3)
- + name_len);
- if (newp != NULL)
- {
- char *cp;
-
- /* Clear the struct. */
- memset (newp, '\0', sizeof (struct known_trans));
-
- /* Store a copy of the module name. */
- newp->info.name = cp = (char *) (newp + 1);
- cp = __mempcpy (cp, trans->name, name_len);
-
- newp->fname = cp;
-
- /* Search in all the directories. */
- for (runp = __gconv_path_elem; runp->name != NULL; ++runp)
- {
- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name),
- trans->name, name_len);
- if (need_so)
- memcpy (cp, ".so", sizeof (".so"));
-
- if (open_translit (newp) == 0)
- {
- /* We found a module. */
- res = 0;
- break;
- }
- }
-
- if (res)
- newp->fname = NULL;
-
- /* In any case we'll add the entry to our search tree. */
- if (__tsearch (newp, &search_tree, trans_compare) == NULL)
- {
- /* Yickes, this should not happen. Unload the object. */
- res = 1;
- /* XXX unload here. */
- }
- }
- }
-
- __libc_lock_unlock (lock);
-
- return res;
+ /* Transliteration module loading has been removed because it never
+ worked as intended and suffered from a security vulnerability.
+ Consequently, this function always fails. */
+ return 1;
}

View file

@ -1,336 +0,0 @@
From: Siddhesh Poyarekar <siddhesh@redhat.com>
Date: Thu, 27 Feb 2014 15:42:09 +0000 (+0530)
Subject: Fix sign of input to bsloww1 (BZ #16623)
X-Git-Url: http://repo.or.cz/w/glibc.git/commitdiff_plain/1cadc85813d736f7682fa2eeadae639ab6b66c65
Fix sign of input to bsloww1 (BZ #16623)
In 84ba214c, I removed some redundant sign computations and in the
process, I incorrectly got rid of a temporary variable, thus passing
the absolute value of the input to bsloww1. This caused #16623.
This fix undoes the incorrect change.
[nix]: drop docs update (wouldn't apply)
---
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index ac5348f..fafe96f 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -594,6 +594,7 @@ cos 0x1.0000010b239a9p0
cos 0x1.00000162a932bp0
cos 0x1.000002d452a10p0
cos 0x1.000005bc7d86dp0
+cos 0x1.200145a975ce6p32
cos 1
cos 2
cos 3
@@ -1748,6 +1749,7 @@ sin 7
sin 8
sin 9
sin 10
+sin 0x1.2001469775ce6p32
sincos 0
sincos -0
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 8f79359..59c08a7 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -74446,6 +74446,75 @@ cos 0x1.000005bc7d86dp0
= cos tonearest ldbl-128ibm 0x1.000005bc7d86dp+0L : 0x8.a513ba9f703d3ffffffcb92354p-4L : inexact-ok
= cos towardzero ldbl-128ibm 0x1.000005bc7d86dp+0L : 0x8.a513ba9f703d3ffffffcb92354p-4L : inexact-ok
= cos upward ldbl-128ibm 0x1.000005bc7d86dp+0L : 0x8.a513ba9f703d3ffffffcb92358p-4L : inexact-ok
+cos 0x1.200145a975ce6p32
+= cos downward flt-32 0x1.200146p+32f : -0xf.74fbep-4f : inexact-ok
+= cos tonearest flt-32 0x1.200146p+32f : -0xf.74fbdp-4f : inexact-ok
+= cos towardzero flt-32 0x1.200146p+32f : -0xf.74fbdp-4f : inexact-ok
+= cos upward flt-32 0x1.200146p+32f : -0xf.74fbdp-4f : inexact-ok
+= cos downward dbl-64 0x1.200146p+32 : -0xf.74fbd5498fe5p-4 : inexact-ok
+= cos tonearest dbl-64 0x1.200146p+32 : -0xf.74fbd5498fe5p-4 : inexact-ok
+= cos towardzero dbl-64 0x1.200146p+32 : -0xf.74fbd5498fe48p-4 : inexact-ok
+= cos upward dbl-64 0x1.200146p+32 : -0xf.74fbd5498fe48p-4 : inexact-ok
+= cos downward ldbl-96-intel 0x1.200146p+32L : -0xf.74fbd5498fe4c0dp-4L : inexact-ok
+= cos tonearest ldbl-96-intel 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos towardzero ldbl-96-intel 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos upward ldbl-96-intel 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos downward ldbl-96-m68k 0x1.200146p+32L : -0xf.74fbd5498fe4c0dp-4L : inexact-ok
+= cos tonearest ldbl-96-m68k 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos towardzero ldbl-96-m68k 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos upward ldbl-96-m68k 0x1.200146p+32L : -0xf.74fbd5498fe4c0cp-4L : inexact-ok
+= cos downward ldbl-128 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef59e8p-4L : inexact-ok
+= cos tonearest ldbl-128 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef59e8p-4L : inexact-ok
+= cos towardzero ldbl-128 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef59ep-4L : inexact-ok
+= cos upward ldbl-128 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef59ep-4L : inexact-ok
+= cos downward ldbl-128ibm 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef5cp-4L : inexact-ok
+= cos tonearest ldbl-128ibm 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef58p-4L : inexact-ok
+= cos towardzero ldbl-128ibm 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef58p-4L : inexact-ok
+= cos upward ldbl-128ibm 0x1.200146p+32L : -0xf.74fbd5498fe4c0c71bd9e4ef58p-4L : inexact-ok
+= cos downward flt-32 0x1.200144p+32f : 0xf.bc96cp-4f : inexact-ok
+= cos tonearest flt-32 0x1.200144p+32f : 0xf.bc96dp-4f : inexact-ok
+= cos towardzero flt-32 0x1.200144p+32f : 0xf.bc96cp-4f : inexact-ok
+= cos upward flt-32 0x1.200144p+32f : 0xf.bc96dp-4f : inexact-ok
+= cos downward dbl-64 0x1.200144p+32 : 0xf.bc96ca2c658a8p-4 : inexact-ok
+= cos tonearest dbl-64 0x1.200144p+32 : 0xf.bc96ca2c658a8p-4 : inexact-ok
+= cos towardzero dbl-64 0x1.200144p+32 : 0xf.bc96ca2c658a8p-4 : inexact-ok
+= cos upward dbl-64 0x1.200144p+32 : 0xf.bc96ca2c658bp-4 : inexact-ok
+= cos downward ldbl-96-intel 0x1.200144p+32L : 0xf.bc96ca2c658abf5p-4L : inexact-ok
+= cos tonearest ldbl-96-intel 0x1.200144p+32L : 0xf.bc96ca2c658abf6p-4L : inexact-ok
+= cos towardzero ldbl-96-intel 0x1.200144p+32L : 0xf.bc96ca2c658abf5p-4L : inexact-ok
+= cos upward ldbl-96-intel 0x1.200144p+32L : 0xf.bc96ca2c658abf6p-4L : inexact-ok
+= cos downward ldbl-96-m68k 0x1.200144p+32L : 0xf.bc96ca2c658abf5p-4L : inexact-ok
+= cos tonearest ldbl-96-m68k 0x1.200144p+32L : 0xf.bc96ca2c658abf6p-4L : inexact-ok
+= cos towardzero ldbl-96-m68k 0x1.200144p+32L : 0xf.bc96ca2c658abf5p-4L : inexact-ok
+= cos upward ldbl-96-m68k 0x1.200144p+32L : 0xf.bc96ca2c658abf6p-4L : inexact-ok
+= cos downward ldbl-128 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8fbp-4L : inexact-ok
+= cos tonearest ldbl-128 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8fbp-4L : inexact-ok
+= cos towardzero ldbl-128 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8fbp-4L : inexact-ok
+= cos upward ldbl-128 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8fb8p-4L : inexact-ok
+= cos downward ldbl-128ibm 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8cp-4L : inexact-ok
+= cos tonearest ldbl-128ibm 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a9p-4L : inexact-ok
+= cos towardzero ldbl-128ibm 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a8cp-4L : inexact-ok
+= cos upward ldbl-128ibm 0x1.200144p+32L : 0xf.bc96ca2c658abf5ace7b886a9p-4L : inexact-ok
+= cos downward dbl-64 0x1.200145a975ce6p+32 : -0x6.568e7ed3dffdp-4 : inexact-ok
+= cos tonearest dbl-64 0x1.200145a975ce6p+32 : -0x6.568e7ed3dffccp-4 : inexact-ok
+= cos towardzero dbl-64 0x1.200145a975ce6p+32 : -0x6.568e7ed3dffccp-4 : inexact-ok
+= cos upward dbl-64 0x1.200145a975ce6p+32 : -0x6.568e7ed3dffccp-4 : inexact-ok
+= cos downward ldbl-96-intel 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe8p-4L : inexact-ok
+= cos tonearest ldbl-96-intel 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos towardzero ldbl-96-intel 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos upward ldbl-96-intel 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos downward ldbl-96-m68k 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe8p-4L : inexact-ok
+= cos tonearest ldbl-96-m68k 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos towardzero ldbl-96-m68k 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos upward ldbl-96-m68k 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfep-4L : inexact-ok
+= cos downward ldbl-128 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd726840e8p-4L : inexact-ok
+= cos tonearest ldbl-128 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd726840e4p-4L : inexact-ok
+= cos towardzero ldbl-128 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd726840e4p-4L : inexact-ok
+= cos upward ldbl-128 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd726840e4p-4L : inexact-ok
+= cos downward ldbl-128ibm 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd726842p-4L : inexact-ok
+= cos tonearest ldbl-128ibm 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd72684p-4L : inexact-ok
+= cos towardzero ldbl-128ibm 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd72684p-4L : inexact-ok
+= cos upward ldbl-128ibm 0x1.200145a975ce6p+32L : -0x6.568e7ed3dffcdfe227fd72684p-4L : inexact-ok
cos 1
= cos downward flt-32 0x1p+0f : 0x8.a514p-4f : inexact-ok
= cos tonearest flt-32 0x1p+0f : 0x8.a514p-4f : inexact-ok
@@ -157744,6 +157813,75 @@ sin 10
= sin tonearest ldbl-128ibm 0xap+0L : -0x8.b44f7af9a7a92ce7fb22be025p-4L : inexact-ok
= sin towardzero ldbl-128ibm 0xap+0L : -0x8.b44f7af9a7a92ce7fb22be024cp-4L : inexact-ok
= sin upward ldbl-128ibm 0xap+0L : -0x8.b44f7af9a7a92ce7fb22be024cp-4L : inexact-ok
+sin 0x1.2001469775ce6p32
+= sin downward flt-32 0x1.200148p+32f : -0x5.595d8p-4f : inexact-ok
+= sin tonearest flt-32 0x1.200148p+32f : -0x5.595d8p-4f : inexact-ok
+= sin towardzero flt-32 0x1.200148p+32f : -0x5.595d78p-4f : inexact-ok
+= sin upward flt-32 0x1.200148p+32f : -0x5.595d78p-4f : inexact-ok
+= sin downward dbl-64 0x1.200148p+32 : -0x5.595d7e536fe38p-4 : inexact-ok
+= sin tonearest dbl-64 0x1.200148p+32 : -0x5.595d7e536fe34p-4 : inexact-ok
+= sin towardzero dbl-64 0x1.200148p+32 : -0x5.595d7e536fe34p-4 : inexact-ok
+= sin upward dbl-64 0x1.200148p+32 : -0x5.595d7e536fe34p-4 : inexact-ok
+= sin downward ldbl-96-intel 0x1.200148p+32L : -0x5.595d7e536fe35eep-4L : inexact-ok
+= sin tonearest ldbl-96-intel 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin towardzero ldbl-96-intel 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin upward ldbl-96-intel 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin downward ldbl-96-m68k 0x1.200148p+32L : -0x5.595d7e536fe35eep-4L : inexact-ok
+= sin tonearest ldbl-96-m68k 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin towardzero ldbl-96-m68k 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin upward ldbl-96-m68k 0x1.200148p+32L : -0x5.595d7e536fe35ed8p-4L : inexact-ok
+= sin downward ldbl-128 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d944p-4L : inexact-ok
+= sin tonearest ldbl-128 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d94p-4L : inexact-ok
+= sin towardzero ldbl-128 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d94p-4L : inexact-ok
+= sin upward ldbl-128 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d94p-4L : inexact-ok
+= sin downward ldbl-128ibm 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9dap-4L : inexact-ok
+= sin tonearest ldbl-128ibm 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9dap-4L : inexact-ok
+= sin towardzero ldbl-128ibm 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d8p-4L : inexact-ok
+= sin upward ldbl-128ibm 0x1.200148p+32L : -0x5.595d7e536fe35edbe2ad0df9d8p-4L : inexact-ok
+= sin downward flt-32 0x1.200146p+32f : 0x4.220ffp-4f : inexact-ok
+= sin tonearest flt-32 0x1.200146p+32f : 0x4.220ffp-4f : inexact-ok
+= sin towardzero flt-32 0x1.200146p+32f : 0x4.220ffp-4f : inexact-ok
+= sin upward flt-32 0x1.200146p+32f : 0x4.220ff8p-4f : inexact-ok
+= sin downward dbl-64 0x1.200146p+32 : 0x4.220ff25f5cfp-4 : inexact-ok
+= sin tonearest dbl-64 0x1.200146p+32 : 0x4.220ff25f5cf04p-4 : inexact-ok
+= sin towardzero dbl-64 0x1.200146p+32 : 0x4.220ff25f5cfp-4 : inexact-ok
+= sin upward dbl-64 0x1.200146p+32 : 0x4.220ff25f5cf04p-4 : inexact-ok
+= sin downward ldbl-96-intel 0x1.200146p+32L : 0x4.220ff25f5cf02a4p-4L : inexact-ok
+= sin tonearest ldbl-96-intel 0x1.200146p+32L : 0x4.220ff25f5cf02a48p-4L : inexact-ok
+= sin towardzero ldbl-96-intel 0x1.200146p+32L : 0x4.220ff25f5cf02a4p-4L : inexact-ok
+= sin upward ldbl-96-intel 0x1.200146p+32L : 0x4.220ff25f5cf02a48p-4L : inexact-ok
+= sin downward ldbl-96-m68k 0x1.200146p+32L : 0x4.220ff25f5cf02a4p-4L : inexact-ok
+= sin tonearest ldbl-96-m68k 0x1.200146p+32L : 0x4.220ff25f5cf02a48p-4L : inexact-ok
+= sin towardzero ldbl-96-m68k 0x1.200146p+32L : 0x4.220ff25f5cf02a4p-4L : inexact-ok
+= sin upward ldbl-96-m68k 0x1.200146p+32L : 0x4.220ff25f5cf02a48p-4L : inexact-ok
+= sin downward ldbl-128 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679ccp-4L : inexact-ok
+= sin tonearest ldbl-128 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679ccp-4L : inexact-ok
+= sin towardzero ldbl-128 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679ccp-4L : inexact-ok
+= sin upward ldbl-128 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679cc4p-4L : inexact-ok
+= sin downward ldbl-128ibm 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679cp-4L : inexact-ok
+= sin tonearest ldbl-128ibm 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679cp-4L : inexact-ok
+= sin towardzero ldbl-128ibm 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679cp-4L : inexact-ok
+= sin upward ldbl-128ibm 0x1.200146p+32L : 0x4.220ff25f5cf02a464dbb3a679ep-4L : inexact-ok
+= sin downward dbl-64 0x1.2001469775ce6p+32 : -0x6.444fda50019fcp-4 : inexact-ok
+= sin tonearest dbl-64 0x1.2001469775ce6p+32 : -0x6.444fda50019f8p-4 : inexact-ok
+= sin towardzero dbl-64 0x1.2001469775ce6p+32 : -0x6.444fda50019f8p-4 : inexact-ok
+= sin upward dbl-64 0x1.2001469775ce6p+32 : -0x6.444fda50019f8p-4 : inexact-ok
+= sin downward ldbl-96-intel 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f6p-4L : inexact-ok
+= sin tonearest ldbl-96-intel 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin towardzero ldbl-96-intel 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin upward ldbl-96-intel 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin downward ldbl-96-m68k 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f6p-4L : inexact-ok
+= sin tonearest ldbl-96-m68k 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin towardzero ldbl-96-m68k 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin upward ldbl-96-m68k 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f58p-4L : inexact-ok
+= sin downward ldbl-128 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca70604p-4L : inexact-ok
+= sin tonearest ldbl-128 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
+= sin towardzero ldbl-128 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
+= sin upward ldbl-128 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
+= sin downward ldbl-128ibm 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca708p-4L : inexact-ok
+= sin tonearest ldbl-128ibm 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
+= sin towardzero ldbl-128ibm 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
+= sin upward ldbl-128ibm 0x1.2001469775ce6p+32L : -0x6.444fda50019f9f5ba3779ca706p-4L : inexact-ok
sincos 0
= sincos downward flt-32 0x0p+0f : 0x0p+0f 0x1p+0f : inexact-ok
= sincos tonearest flt-32 0x0p+0f : 0x0p+0f 0x1p+0f : inexact-ok
diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c
index 6105e9f..50109b8 100644
--- a/sysdeps/ieee754/dbl-64/s_sin.c
+++ b/sysdeps/ieee754/dbl-64/s_sin.c
@@ -447,19 +447,21 @@ __sin (double x)
}
else
{
+ double t;
if (a > 0)
{
m = 1;
+ t = a;
db = da;
}
else
{
m = 0;
- a = -a;
+ t = -a;
db = -da;
}
- u.x = big + a;
- y = a - (u.x - big);
+ u.x = big + t;
+ y = t - (u.x - big);
res = do_sin (u, y, db, &cor);
cor = (cor > 0) ? 1.035 * cor + eps : 1.035 * cor - eps;
retval = ((res == res + cor) ? ((m) ? res : -res)
@@ -671,19 +673,21 @@ __cos (double x)
}
else
{
+ double t;
if (a > 0)
{
m = 1;
+ t = a;
db = da;
}
else
{
m = 0;
- a = -a;
+ t = -a;
db = -da;
}
- u.x = big + a;
- y = a - (u.x - big);
+ u.x = big + t;
+ y = t - (u.x - big);
res = do_sin (u, y, db, &cor);
cor = (cor > 0) ? 1.035 * cor + eps : 1.035 * cor - eps;
retval = ((res == res + cor) ? ((m) ? res : -res)
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index f3980f8..544f1c7 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -10900,6 +10900,14 @@ idouble: 1
Test "cos_downward (0x1.0c152382d7365p+0)":
double: 1
idouble: 1
+Test "cos_downward (0x1.200145a975ce6p+32)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.200146p+32)":
+ildouble: 1
+ldouble: 1
Test "cos_downward (0x1.921fb4p+0)":
ildouble: 1
ldouble: 1
@@ -11126,6 +11134,9 @@ idouble: 1
Test "cos_towardzero (0x1.0c152382d7365p+0)":
double: 1
idouble: 1
+Test "cos_towardzero (0x1.200146p+32)":
+double: 1
+idouble: 1
Test "cos_towardzero (0x1.921fb4p+0)":
ildouble: 1
ldouble: 1
@@ -11258,6 +11269,17 @@ idouble: 1
Test "cos_upward (0x1.0c1524p+0)":
double: 1
idouble: 1
+Test "cos_upward (0x1.200144p+32)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.200145a975ce6p+32)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.200146p+32)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "cos_upward (0x1.921fb4p+0)":
double: 1
idouble: 1
@@ -15155,6 +15177,19 @@ double: 1
idouble: 1
ildouble: 1
ldouble: 1
+Test "sin_downward (0x1.2001469775ce6p+32)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "sin_downward (0x1.200146p+32)":
+double: 1
+idouble: 1
+Test "sin_downward (0x1.200148p+32)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "sin_downward (0x1.921fb54442d18468p+0)":
ildouble: 1
ldouble: 1
@@ -15383,6 +15418,9 @@ double: 1
idouble: 1
ildouble: 1
ldouble: 1
+Test "sin_towardzero (0x1.200146p+32)":
+double: 1
+idouble: 1
Test "sin_towardzero (0x1.921fb54442d18468p+0)":
ildouble: 1
ldouble: 1
@@ -15532,6 +15570,12 @@ ldouble: 1
Test "sin_upward (-0x8.60a92p-4)":
ildouble: 1
ldouble: 1
+Test "sin_upward (0x1.2001469775ce6p+32)":
+ildouble: 1
+ldouble: 1
+Test "sin_upward (0x1.200148p+32)":
+ildouble: 1
+ldouble: 1
Test "sin_upward (0x1.921fb4p+0)":
double: 1
idouble: 1

View file

@ -1,12 +0,0 @@
diff -ur glibc-2.17.orig/csu/Makefile glibc-2.17/csu/Makefile
--- glibc-2.17.orig/csu/Makefile 2012-12-25 04:02:13.000000000 +0100
+++ glibc-2.17/csu/Makefile 2013-08-19 16:01:57.132378550 +0200
@@ -172,7 +172,7 @@
os=Linux; \
fi; \
printf '"Compiled on a %s %s system on %s.\\n"\n' \
- "$$os" "$$version" "`date +%Y-%m-%d`";; \
+ "$$os" "$$version";; \
*) ;; \
esac; \
files="$(all-Banner-files)"; \

View file

@ -46,10 +46,6 @@ postInstall() {
ln -s lib $out/lib64
fi
# This file, that should not remain in the glibc derivation,
# may have not been created during the preInstall
rm -f $out/lib/libgcc_s.so.1
# Get rid of more unnecessary stuff.
rm -rf $out/var $out/sbin/sln
}

View file

@ -13,7 +13,7 @@ cross:
let
version = "2.19";
version = "2.20";
in
@ -56,14 +56,6 @@ stdenv.mkDerivation ({
"/bin:/usr/bin", which is inappropriate on NixOS machines. This
patch extends the search path by "/run/current-system/sw/bin". */
./fix_path_attribute_in_getconf.patch
./fix-math.patch
./cve-2014-0475.patch
./cve-2014-5119.patch
/* Remove references to the compilation date. */
./glibc-remove-date-from-compilation-banner.patch
];
postPatch =
@ -77,8 +69,11 @@ stdenv.mkDerivation ({
+ ''
echo "LDFLAGS-nscd += -static-libgcc" >> nscd/Makefile
''
# Replace the date and time in nscd by $out.
# It is used as a protocol compatibility check.
# Replace the date and time in nscd by a prefix of $out.
# It is used as a protocol compatibility check.
# Note: the size of the struct changes, but using only a part
# would break hash-rewriting. When receiving stats it does check
# that the struct sizes match and can't cause overflow or something.
+ ''
cat ${./glibc-remove-datetime-from-nscd.patch} \
| sed "s,@out@,$out," | patch -p1
@ -155,7 +150,7 @@ stdenv.mkDerivation ({
}
else fetchurl {
url = "mirror://gnu/glibc/glibc-${version}.tar.gz";
sha256 = "15n7x9mmzhd7w6s5hd9srx0h23b32gwb306x98k9ss940yvnvb8q";
sha256 = "1g6ysvk15arpi7c1f1fpx5slgfr2k3dqd5xr0yvijajp1m0xxq9p";
};
# Remove absolute paths from `configure' & co.; build out-of-tree.

View file

@ -35,7 +35,7 @@ in
preInstall = ''
if [ -f ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 ]; then
mkdir -p $out/lib
ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1
cp ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1
fi
'';

View file

@ -1,12 +1,12 @@
diff -rupN a/elf/rtld.c b/elf/rtld.c
--- a/elf/rtld.c 2013-08-11 00:52:55.000000001 +0200
+++ b/elf/rtld.c 2014-02-18 13:56:19.000000001 +0100
@@ -1639,7 +1639,7 @@ ERROR: ld.so: object '%s' cannot be load
diff -ru glibc-2.20-orig/elf/rtld.c glibc-2.20/elf/rtld.c
--- glibc-2.20-orig/elf/rtld.c 2014-09-07 10:09:09.000000000 +0200
+++ glibc-2.20/elf/rtld.c 2014-10-27 11:32:25.203043157 +0100
@@ -1513,7 +1513,7 @@
open(). So we do this first. If it succeeds we do almost twice
the work but this does not matter, since it is not for production
use. */
- static const char preload_file[] = "/etc/ld.so.preload";
+ static const char preload_file[] = "/etc/ld-nix.so.preload";
if (__builtin_expect (__access (preload_file, R_OK) == 0, 0))
if (__glibc_unlikely (__access (preload_file, R_OK) == 0))
{
/* Read the contents of the file. */

View file

@ -5,7 +5,7 @@
/* We use this to make sure the receiver is the same. */
-static const char compilation[21] = __DATE__ " " __TIME__;
+static const char compilation[21] = "@out@";
+static const char compilation[] = "@out@";
/* Statistic data for one database. */
struct dbstat

View file

@ -28,8 +28,8 @@ build null {
mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale"
# Hack to allow building of the locales (needed since glibc-2.12)
sed -i -e "s,^LOCALEDEF=.*,LOCALEDEF=localedef --prefix=$TMPDIR," -e \
/library-path/d ../glibc-2*/localedata/Makefile
sed -i -e 's,^$(rtld-prefix) $(common-objpfx)locale/localedef,localedef --prefix='$TMPDIR',' ../glibc-2*/localedata/Makefile
${if allLocales then "" else
"echo SUPPORTED-LOCALES=\"${toString locales}\" > ../glibc-2*/localedata/SUPPORTED"}

View file

@ -0,0 +1,16 @@
Allow BusyBox to be invoked as "<something>-busybox". This is
necessary when it's run from the Nix store as <hash>-busybox during
stdenv bootstrap.
diff -ru -x '*~' busybox-1.22.1-orig/libbb/appletlib.c busybox-1.22.1/libbb/appletlib.c
--- busybox-1.22.1-orig/libbb/appletlib.c 2014-01-09 19:15:44.000000000 +0100
+++ busybox-1.22.1/libbb/appletlib.c 2014-10-29 09:53:01.232052068 +0100
@@ -764,7 +764,7 @@
int applet = find_applet_by_name(name);
if (applet >= 0)
run_applet_no_and_exit(applet, argv);
- if (strncmp(name, "busybox", 7) == 0)
+ if (strstr(name, "busybox") != 0)
exit(busybox_main(argv));
}

View file

@ -1,4 +1,4 @@
{stdenv, fetchurl, enableStatic ? false, extraConfig ? ""}:
{ lib, stdenv, uclibc, fetchurl, enableStatic ? false, enableMinimal ? false, useUclibc ? false, extraConfig ? "" }:
let
configParser = ''
@ -7,14 +7,7 @@ let
NAME=`echo "$LINE" | cut -d \ -f 1`
OPTION=`echo "$LINE" | cut -d \ -f 2`
if test -z "$NAME"; then
continue
fi
if test "$NAME" == "CLEAR"; then
echo "parseconfig: CLEAR"
echo > .config
fi
if ! [[ "$NAME" =~ ^CONFIG_ ]]; then continue; fi
echo "parseconfig: removing $NAME"
sed -i /$NAME'\(=\| \)'/d .config
@ -25,19 +18,6 @@ let
}
'';
nixConfig = ''
CONFIG_PREFIX "$out"
CONFIG_INSTALL_NO_USR y
# Use the external mount.cifs program.
CONFIG_FEATURE_MOUNT_CIFS n
CONFIG_FEATURE_MOUNT_HELPERS y
'';
staticConfig = stdenv.lib.optionalString enableStatic ''
CONFIG_STATIC y
'';
in
stdenv.mkDerivation rec {
@ -48,17 +28,34 @@ stdenv.mkDerivation rec {
sha256 = "12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf";
};
patches = [ ./busybox-in-store.patch ];
configurePhase = ''
export KCONFIG_NOTIMESTAMP=1
make defconfig
make ${if enableMinimal then "allnoconfig" else "defconfig"}
${configParser}
cat << EOF | parseconfig
${staticConfig}
${nixConfig}
CONFIG_PREFIX "$out"
CONFIG_INSTALL_NO_USR y
${lib.optionalString enableStatic ''
CONFIG_STATIC y
''}
# Use the external mount.cifs program.
CONFIG_FEATURE_MOUNT_CIFS n
CONFIG_FEATURE_MOUNT_HELPERS y
${extraConfig}
$extraCrossConfig
EOF
make oldconfig
'' + lib.optionalString useUclibc ''
makeFlagsArray+=("CC=gcc -isystem ${uclibc}/include -B${uclibc}/lib -L${uclibc}/lib")
'';
crossAttrs = {
@ -75,8 +72,8 @@ stdenv.mkDerivation rec {
meta = {
description = "Tiny versions of common UNIX utilities in a single small executable";
homepage = http://busybox.net/;
license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.viric ];
platforms = lib.platforms.linux;
};
}

View file

@ -1,12 +0,0 @@
diff --git a/include/libbb.h b/include/libbb.h
index f12800f..e7806c2 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -40,6 +40,7 @@
#include <sys/poll.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#include <sys/resource.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/time.h>

View file

@ -11,20 +11,10 @@ stdenv.mkDerivation {
sha256 = "8dd3de546aeb1ae42fb05409aeb724a145fe9aa1dbe1115441c2297c9d48cf31";
};
configureFlags =
if stdenv ? isDietLibC
then ""
else "--enable-dynamic-e2fsck --enable-elf-shlibs";
configureFlags ="--enable-dynamic-e2fsck --enable-elf-shlibs";
buildInputs = [gettext];
preInstall = "installFlagsArray=('LN=ln -s')";
postInstall = "make install-libs";
NIX_CFLAGS_COMPILE =
if stdenv ? isDietLibC then
"-UHAVE_SYS_PRCTL_H " +
(if stdenv.system == "x86_64-linux" then "-DHAVE_LSEEK64_PROTOTYPE=1 -Dstat64=stat" else "")
else "";
}
#note that ext3cow requires the ext3cow kernel patch !!!!

View file

@ -4,7 +4,7 @@ assert cross == null -> stdenv.isLinux;
let
version = "3.12.6";
version = "3.12.32";
kernelHeadersBaseConfig =
if cross == null
@ -17,8 +17,8 @@ stdenv.mkDerivation {
name = "linux-headers-${version}";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.bz2";
sha256 = "1qh6f1az0flfrbkdjx1i9r7yf31ad0gxigax91nd33z2jmd6h4df";
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
sha256 = "1hzws2bf267hfk81ywqcxspkyi1lg56x63izdc0pv1338xcfas53";
};
targetConfig = if cross != null then cross.config else null;

View file

@ -26,10 +26,6 @@ stdenv.mkDerivation {
postInstall = "rm $out/sbin/insmod.static"; # don't need it
# We don't want bash (and therefore glibc) in the closure of the
# output, since we want to put this in a initrd.
dontPatchShebangs = stdenv ? isDietLibC;
meta = {
homepage = http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/;
description = "Tools for loading and managing Linux kernel modules";

View file

@ -16,11 +16,6 @@ let
continue
fi
if test "$NAME" == "CLEAR"; then
echo "parseconfig: CLEAR"
echo > .config
fi
echo "parseconfig: removing $NAME"
sed -i /^$NAME=/d .config
@ -51,13 +46,14 @@ let
'';
in
stdenv.mkDerivation {
name = "uclibc-0.9.33.2" + stdenv.lib.optionalString (cross != null)
name = "uclibc-0.9.34-pre-20141029" + stdenv.lib.optionalString (cross != null)
("-" + cross.config);
src = fetchurl {
url = http://www.uclibc.org/downloads/uClibc-0.9.33.2.tar.bz2;
sha256 = "0qhngsbzj2s6nz92b1s2p0dmvwk8xiqpy58j7ljzw186grvjr3cq";
url = http://www.uclibc.org/downloads/snapshots/uClibc-20141029.tar.bz2;
sha256 = "018r3bhw1jyyihmm5xxq1psl3r5yx02a57p8qxvay3vvzxn2cvzm";
};
# 'ftw' needed to build acl, a coreutils dependency
@ -80,6 +76,8 @@ stdenv.mkDerivation {
buildInputs = stdenv.lib.optional (gccCross != null) gccCross;
enableParallelBuilding = true;
installPhase = ''
mkdir -p $out
make PREFIX=$out VERBOSE=1 install ${crossMakeFlag}
@ -92,7 +90,7 @@ stdenv.mkDerivation {
# Derivations may check for the existance of this attribute, to know what to link to.
inherit libiconv;
};
meta = {
homepage = http://www.uclibc.org/;
description = "A small implementation of the C library";

View file

@ -194,6 +194,11 @@ in
"--with-xorg-conf-dir=$(out)/share/X11/xorg.conf.d"
"--with-udev-rules-dir=$(out)/lib/udev/rules.d"
];
patches = [( args.fetchpatch {
url = "http://cgit.freedesktop.org/xorg/driver/xf86-input-vmmouse/patch/"
+ "?id=1cbbc03c4b37d57760c57bd2e0b0f89d744a5795";
sha256 = "1qkhwj2yal0cz15lv9557d10ylvxlq05ibq43pm2rrvqdg3mb6h4";
})];
};
xf86videoati = attrs: attrs // {
@ -209,6 +214,11 @@ in
xf86videovmware = attrs: attrs // {
buildInputs = attrs.buildInputs ++ [ args.mesa_drivers ]; # for libxatracker
patches = [( args.fetchpatch {
url = "http://cgit.freedesktop.org/xorg/driver/xf86-video-vmware/patch/"
+ "?id=4664412d7a5266d2b392957406b34abc5db95e48";
sha256 = "1gix83f1is91iq1zd66nj4k72jm24jjjd9s9l0bzpzhgc8smqdk2";
})];
};
xf86videoqxl = attrs: attrs // {

View file

@ -29,63 +29,6 @@ rec {
overrideSetup = stdenv: setupScript: stdenv.override { inherit setupScript; };
# Return a modified stdenv that uses dietlibc to create small
# statically linked binaries.
useDietLibC = stdenv: stdenv //
{ mkDerivation = args: stdenv.mkDerivation (args // {
NIX_CFLAGS_LINK = "-static";
# libcompat.a contains some commonly used functions.
NIX_LDFLAGS = "-lcompat";
# These are added *after* the command-line flags, so we'll
# always optimise for size.
NIX_CFLAGS_COMPILE =
args.NIX_CFLAGS_COMPILE or ""
+ " -Os -s -D_BSD_SOURCE=1";
configureFlags =
args.configureFlags or ""
+ " --disable-shared"; # brrr...
NIX_GCC = import ../build-support/gcc-wrapper {
inherit stdenv;
libc = pkgs.dietlibc;
inherit (stdenv.gcc) gcc binutils nativeTools nativePrefix;
nativeLibc = false;
};
});
isDietLibC = true;
};
# Return a modified stdenv that uses klibc to create small
# statically linked binaries.
useKlibc = stdenv: klibc: stdenv //
{ mkDerivation = args: stdenv.mkDerivation (args // {
NIX_CFLAGS_LINK = "-static";
# These are added *after* the command-line flags, so we'll
# always optimise for size.
NIX_CFLAGS_COMPILE =
args.NIX_CFLAGS_COMPILE or "" + " -Os -s";
configureFlags =
args.configureFlags or "" + " --disable-shared"; # brrr...
NIX_GCC = pkgs.runCommand "klibc-wrapper" {} ''
mkdir -p $out/bin
ln -s ${klibc}/bin/klcc $out/bin/gcc
ln -s ${klibc}/bin/klcc $out/bin/cc
mkdir -p $out/nix-support
echo 'PATH=$PATH:${stdenv.gcc.binutils}/bin' > $out/nix-support/setup-hook
'';
});
isKlibc = true;
isStatic = true;
};
# Return a modified stdenv that tries to build statically linked
# binaries.
makeStaticBinaries = stdenv: stdenv //

View file

@ -1,39 +1,12 @@
let
fetch = { file, sha256 }: import <nix/fetchurl.nix> {
url = "http://tarballs.nixos.org/stdenv-linux/i686/r24519/${file}";
inherit sha256;
{
busybox = import <nix/fetchurl.nix> {
url = http://tarballs.nixos.org/stdenv-linux/i686/73b75f6157db79fc899154a497823e82e409e76d/busybox;
sha256 = "159208615405938d9830634f15d38adf5a9c33643926845c44499dbe6dd62042";
executable = true;
};
in {
sh = fetch {
file = "sh";
sha256 = "1l6sdhyqjlh4m5gj3pfpi8aisp1m012lpwxfcc4v1x8g429mflmy";
};
bzip2 = fetch {
file = "bzip2";
sha256 = "1p5nkrdn52jm6rsx8x3wwjpsh83f2qsjl1qckkgnkplwhj23zjp7";
};
mkdir = fetch {
file = "mkdir";
sha256 = "02ff7i9ph9ahiapsg2v9c3pwr7sl73sk4n7ic112ljkrgwkail33";
};
cpio = fetch {
file = "cpio";
sha256 = "046if3aqqramyhrn2yxrjf4bfkl8x1bcqxhvi7ml9nrv9smx8irg";
};
curl = fetch {
file = "curl.bz2";
sha256 = "1v0yfb4gcdyqpl2fxlxjh337r28c23iqm7vwck4p4643xd55di7q";
};
bootstrapTools = {
url = http://tarballs.nixos.org/stdenv-linux/i686/r24519/bootstrap-tools.cpio.bz2;
sha256 = "0imypaxy6piwbk8ff2y1nr7yk49pqmdgdbv6g8miq1zs5yfip6ij";
bootstrapTools = import <nix/fetchurl.nix> {
url = http://tarballs.nixos.org/stdenv-linux/i686/73b75f6157db79fc899154a497823e82e409e76d/bootstrap-tools.tar.xz;
sha256 = "68c430b84dbeac0bd1bea4cdd3159dce44a76445e07860caed1972b4608c42ca";
};
}

View file

@ -1,10 +1,9 @@
# Use the static tools for i686-linux. They work on x86_64-linux
# machines as well.
# Use busybox for i686-linux since it works on x86_64-linux as well.
(import ./i686.nix) //
{
bootstrapTools = {
url = http://tarballs.nixos.org/stdenv-linux/x86_64/r23302/bootstrap-tools.cpio.bz2;
sha256 = "0w89kqhx47yl0jifp2vffp073pyrqha5f312kp971smi4h41drna";
bootstrapTools = import <nix/fetchurl.nix> {
url = http://tarballs.nixos.org/stdenv-linux/x86_64/73b75f6157db79fc899154a497823e82e409e76d/bootstrap-tools.tar.xz;
sha256 = "e29d47a5dc9f1ff10c3fbaacbd03a3cca0c784299df09fcdd9e25797ec6414ad";
};
}

View file

@ -40,20 +40,15 @@ rec {
bootstrapTools = derivation {
name = "bootstrap-tools";
builder = bootstrapFiles.sh;
builder = bootstrapFiles.busybox;
args =
if system == "armv5tel-linux" || system == "armv6l-linux"
|| system == "armv7l-linux"
then [ ./scripts/unpack-bootstrap-tools-arm.sh ]
else [ ./scripts/unpack-bootstrap-tools.sh ];
else [ "ash" "-e" ./scripts/unpack-bootstrap-tools.sh ];
# FIXME: get rid of curl.
inherit (bootstrapFiles) bzip2 mkdir curl cpio;
tarball = import <nix/fetchurl.nix> {
inherit (bootstrapFiles.bootstrapTools) url sha256;
};
tarball = bootstrapFiles.bootstrapTools;
inherit system;

View file

@ -1,4 +1,4 @@
{system ? builtins.currentSystem}:
{ system ? builtins.currentSystem }:
with import ../../top-level/all-packages.nix {inherit system;};
@ -6,84 +6,32 @@ rec {
# We want coreutils without ACL support.
coreutils_ = coreutils.override (args: {
coreutilsMinimal = coreutils.override (args: {
aclSupport = false;
});
# bzip2 wants utime.h, a header 'legacy' in uclibc
uclibcForBzip2 = uclibc.override {
extraConfig = ''
UCLIBC_SUSV3_LEGACY y
UCLIBC_SUSV4_LEGACY y
'';
};
gccLinkStatic = wrapGCCWith (import ../../build-support/gcc-wrapper) uclibcForBzip2
stdenv.gcc.gcc;
stdenvLinkStatic = overrideGCC stdenv gccLinkStatic;
curlStatic = import ../../tools/networking/curl {
stdenv = stdenvLinkStatic;
inherit fetchurl;
curlMinimal = curl.override {
zlibSupport = false;
sslSupport = false;
linkStatic = true;
scpSupport = false;
};
bzip2Static = import ../../tools/compression/bzip2 {
stdenv = stdenvLinkStatic;
inherit fetchurl;
linkStatic = true;
};
#gccNoShared = wrapGCC ( gcc.gcc.override { enableShared = false; } );
busyboxStaticSh = busybox.override {
busyboxMinimal = busybox.override {
useUclibc = true;
enableStatic = true;
enableMinimal = true;
extraConfig = ''
CLEAR
CONFIG_STATIC y
CONFIG_ASH y
CONFIG_BASH_COMPAT y
CONFIG_ASH_ALIAS y
CONFIG_ASH_GETOPTS y
CONFIG_ASH_CMDCMD y
CONFIG_ASH_JOB_CONTROL y
CONFIG_ASH_BUILTIN_ECHO y
CONFIG_ASH_BUILTIN_PRINTF y
CONFIG_ASH_BUILTIN_TEST y
'';
};
busyboxStaticLn = busybox.override {
extraConfig = ''
CLEAR
CONFIG_STATIC y
CONFIG_LN y
'';
};
busyboxStaticMkdir = busybox.override {
extraConfig = ''
CLEAR
CONFIG_STATIC y
CONFIG_ASH_OPTIMIZE_FOR_SIZE y
CONFIG_MKDIR y
CONFIG_TAR y
CONFIG_UNXZ y
'';
};
busyboxStaticCpio = busybox.override {
extraConfig = ''
CLEAR
CONFIG_STATIC y
CONFIG_CPIO y
# (shlevy) Are these necessary?
CONFIG_FEATURE_CPIO_O y
CONFIG_FEATURE_CPIO_P y
'';
};
build =
build =
stdenv.mkDerivation {
name = "build";
@ -91,7 +39,7 @@ rec {
buildInputs = [nukeReferences cpio];
buildCommand = ''
set -x
set -x
mkdir -p $out/bin $out/lib $out/libexec
# Copy what we need of Glibc.
@ -105,26 +53,26 @@ rec {
cp -d ${glibc}/lib/libnsl*.so* $out/lib
cp -d ${glibc}/lib/libutil*.so* $out/lib
cp -d ${glibc}/lib/crt?.o $out/lib
cp -rL ${glibc}/include $out
chmod -R u+w $out/include
# Hopefully we won't need these.
rm -rf $out/include/mtd $out/include/rdma $out/include/sound $out/include/video
find $out/include -name .install -exec rm {} \;
find $out/include -name ..install.cmd -exec rm {} \;
mv $out/include $out/include-glibc
# Copy coreutils, bash, etc.
cp ${coreutils_}/bin/* $out/bin
cp ${coreutilsMinimal}/bin/* $out/bin
(cd $out/bin && rm vdir dir sha*sum pinky factor pathchk runcon shuf who whoami shred users)
cp ${bash}/bin/bash $out/bin
cp ${findutils}/bin/find $out/bin
cp ${findutils}/bin/xargs $out/bin
cp -d ${diffutils}/bin/* $out/bin
cp -d ${gnused}/bin/* $out/bin
cp -d ${gnugrep}/bin/* $out/bin
cp -d ${gnugrep}/bin/grep $out/bin
cp ${gawk}/bin/gawk $out/bin
cp -d ${gawk}/bin/awk $out/bin
cp ${gnutar}/bin/tar $out/bin
@ -133,9 +81,11 @@ rec {
cp -d ${gnumake}/bin/* $out/bin
cp -d ${patch}/bin/* $out/bin
cp ${patchelf}/bin/* $out/bin
cp ${curlMinimal}/bin/curl $out/bin
cp -d ${curlMinimal}/lib/libcurl* $out/lib
cp -d ${gnugrep.pcre}/lib/libpcre*.so* $out/lib # needed by grep
# Copy what we need of GCC.
cp -d ${gcc.gcc}/bin/gcc $out/bin
cp -d ${gcc.gcc}/bin/cpp $out/bin
@ -151,6 +101,8 @@ rec {
rm -rf $out/lib/gcc/*/*/plugin
#rm -f $out/lib/gcc/*/*/*.a
cp -rd ${gcc.gcc}/libexec/* $out/libexec
chmod -R u+w $out/libexec
rm -rf $out/libexec/gcc/*/*/plugin
mkdir $out/include
cp -rd ${gcc.gcc}/include/c++ $out/include
chmod -R u+w $out/include
@ -159,19 +111,18 @@ rec {
cp -d ${gmpxx}/lib/libgmp*.so* $out/lib
cp -d ${mpfr}/lib/libmpfr*.so* $out/lib
cp -d ${ppl}/lib/libppl*.so* $out/lib
cp -d ${cloogppl}/lib/libcloog*.so* $out/lib
cp -d ${mpc}/lib/libmpc*.so* $out/lib
cp -d ${zlib}/lib/libz.so* $out/lib
cp -d ${libelf}/lib/libelf.so* $out/lib
# Copy binutils.
for i in as ld ar ranlib nm strip readelf objdump; do
cp ${binutils}/bin/$i $out/bin
done
cp -d ${binutils}/lib/lib*.so* $out/lib
chmod -R u+w $out
# Strip executables even further.
for i in $out/bin/* $out/libexec/gcc/*/*/*; do
if test -x $i -a ! -L $i; then
@ -189,19 +140,10 @@ rec {
mv $out/.pack $out/pack
mkdir $out/on-server
(cd $out/pack && (find | cpio -o -H newc)) | bzip2 > $out/on-server/bootstrap-tools.cpio.bz2
mkdir $out/in-nixpkgs
cp ${busyboxStaticSh}/bin/busybox $out/in-nixpkgs/sh
cp ${busyboxStaticCpio}/bin/busybox $out/in-nixpkgs/cpio
cp ${busyboxStaticMkdir}/bin/busybox $out/in-nixpkgs/mkdir
cp ${busyboxStaticLn}/bin/busybox $out/in-nixpkgs/ln
cp ${curlStatic}/bin/curl $out/in-nixpkgs
cp ${bzip2Static}/bin/bzip2 $out/in-nixpkgs
chmod u+w $out/in-nixpkgs/*
strip $out/in-nixpkgs/*
nuke-refs $out/in-nixpkgs/*
bzip2 $out/in-nixpkgs/curl
tar cvfJ $out/on-server/bootstrap-tools.tar.xz -C $out/pack .
cp ${busyboxMinimal}/bin/busybox $out/on-server
chmod u+w $out/on-server/busybox
nuke-refs $out/on-server/busybox
''; # */
# The result should not contain any references (store paths) so
@ -210,22 +152,33 @@ rec {
allowedReferences = [];
};
unpack =
stdenv.mkDerivation {
derivation {
name = "unpack";
inherit system;
builder = "${build}/on-server/busybox";
args = [ "ash" "-e" "-c" "eval \"$buildCommand\"" ];
buildCommand = ''
${build}/in-nixpkgs/mkdir $out
${build}/in-nixpkgs/bzip2 -d < ${build}/on-server/bootstrap-tools.cpio.bz2 | (cd $out && ${build}/in-nixpkgs/cpio -v -i)
export PATH=${build}/on-server:$out/bin
busybox mkdir $out
< ${build}/on-server/bootstrap-tools.tar.xz busybox unxz | busybox tar x -C $out
for i in $out/bin/* $out/libexec/gcc/*/*/*; do
echo patching $i
if ! test -L $i; then
LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \
$out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.2 --set-rpath $out/lib --force-rpath $i
fi
if [ -L "$i" ]; then continue; fi
if [ -z "''${i##*/liblto*}" ]; then continue; fi
echo patching "$i"
LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \
$out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.2 --set-rpath $out/lib --force-rpath "$i"
done
for i in $out/lib/libpcre*; do
if [ -L "$i" ]; then continue; fi
echo patching "$i"
$out/bin/patchelf --set-rpath $out/lib --force-rpath "$i"
done
# Fix the libc linker script.
@ -241,11 +194,12 @@ rec {
test =
stdenv.mkDerivation {
derivation {
name = "test";
inherit system;
builder = "${build}/on-server/busybox";
args = [ "ash" "-e" "-c" "eval \"$buildCommand\"" ];
realBuilder = "${unpack}/bin/bash";
buildCommand = ''
export PATH=${unpack}/bin
ls -l
@ -259,23 +213,22 @@ rec {
awk --version
grep --version
gcc --version
${build}/in-nixpkgs/sh -c 'echo Hello World'
curl --version
ldlinux=$(echo ${unpack}/lib/ld-linux*.so.2)
export CPP="cpp -idirafter ${unpack}/include-glibc -B${unpack}"
export CC="gcc -idirafter ${unpack}/include-glibc -B${unpack} -Wl,-dynamic-linker,$ldlinux -Wl,-rpath,${unpack}/lib"
export CXX="g++ -idirafter ${unpack}/include-glibc -B${unpack} -Wl,-dynamic-linker,$ldlinux -Wl,-rpath,${unpack}/lib"
echo '#include <stdio.h>' >> foo.c
echo '#include <limits.h>' >> foo.c
echo 'int main() { printf("Hello World\n"); return 0; }' >> foo.c
echo 'int main() { printf("Hello World\\n"); return 0; }' >> foo.c
$CC -o $out/bin/foo foo.c
$out/bin/foo
echo '#include <iostream>' >> bar.cc
echo 'int main() { std::cout << "Hello World\n"; }' >> bar.cc
echo 'int main() { std::cout << "Hello World\\n"; }' >> bar.cc
$CXX -v -o $out/bin/bar bar.cc
$out/bin/bar
@ -286,5 +239,5 @@ rec {
make install
''; # */
};
}

View file

@ -1,9 +1,7 @@
set -e
# Unpack the bootstrap tools tarball.
echo Unpacking the bootstrap tools...
$mkdir $out
$bzip2 -d < $tarball | (cd $out && $cpio -i)
$builder mkdir $out
< $tarball $builder unxz | $builder tar x -C $out
# Set the ELF interpreter / RPATH in the bootstrap binaries.
echo Patching the bootstrap tools...
@ -21,32 +19,17 @@ fi
LD_LIBRARY_PATH=$out/lib $LD_BINARY $out/bin/cp $out/bin/patchelf .
for i in $out/bin/* $out/libexec/gcc/*/*/*; do
echo patching $i
if ! test -L $i; then
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-interpreter $LD_BINARY --set-rpath $out/lib --force-rpath $i
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-interpreter $LD_BINARY --set-rpath $out/lib --force-rpath $i
fi
done
for i in $out/lib/librt* ; do
echo patching $i
if ! test -L $i; then
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-interpreter $LD_BINARY --set-rpath $out/lib --force-rpath $i
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-interpreter $LD_BINARY --set-rpath $out/lib --force-rpath $i
fi
if [ -L "$i" ]; then continue; fi
if [ -z "${i##*/liblto*}" ]; then continue; fi
echo patching "$i"
LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \
$out/bin/patchelf --set-interpreter $LD_BINARY --set-rpath $out/lib --force-rpath "$i"
done
for i in $out/lib/libgmp* $out/lib/libppl* $out/lib/libcloog* $out/lib/libmpc* $out/lib/libpcre* $out/lib/libstdc++*.so.*[0-9]; do
echo trying to patch $i
if test -f $i -a ! -L $i; then
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-rpath $out/lib --force-rpath $i
LD_LIBRARY_PATH=$out/lib $LD_BINARY \
$out/bin/patchelf --set-rpath $out/lib --force-rpath $i
fi
for i in $out/lib/libpcre*; do
if [ -L "$i" ]; then continue; fi
echo patching "$i"
$out/bin/patchelf --set-rpath $out/lib --force-rpath "$i"
done
# Fix the libc linker script.
@ -60,13 +43,21 @@ mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so
ln -s bash $out/bin/sh
ln -s bzip2 $out/bin/bunzip2
# Mimic the gunzip script as in gzip installations
# Provide a gunzip script.
cat > $out/bin/gunzip <<EOF
#!$out/bin/sh
exec $out/bin/gzip -d "\$@"
EOF
chmod +x $out/bin/gunzip
# fetchurl needs curl.
bzip2 -d < $curl > $out/bin/curl
chmod +x $out/bin/curl
# Provide fgrep/egrep.
echo "#! $out/bin/sh" > $out/bin/egrep
echo "exec $out/bin/grep -E \"\$@\"" >> $out/bin/egrep
echo "#! $out/bin/sh" > $out/bin/fgrep
echo "exec $out/bin/grep -F \"\$@\"" >> $out/bin/fgrep
# Provide xz (actually only xz -d will work).
echo "#! $out/bin/sh" > $out/bin/xz
echo "exec $builder unxz \"\$@\"" >> $out/bin/xz
chmod +x $out/bin/egrep $out/bin/fgrep $out/bin/xz

View file

@ -24,7 +24,7 @@ stdenv.mkDerivation {
};
sharedLibrary =
!stdenv.isDarwin && !(stdenv ? isDietLibC) && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin" && !linkStatic;
!stdenv.isDarwin && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin" && !linkStatic;
patchPhase = stdenv.lib.optionalString stdenv.isDarwin "substituteInPlace Makefile --replace 'CC=gcc' 'CC=clang'";

View file

@ -12,8 +12,6 @@ stdenv.mkDerivation rec {
buildInputs = [ zlib xz ];
preBuild = "cd squashfs-tools";
NIX_LDFLAGS = "-lgcc_s"; # for pthread_cancel
installFlags = "INSTALL_DIR=\${out}/bin";

View file

@ -77,7 +77,7 @@ stdenv.mkDerivation rec {
-e "s|/usr/src/unifont.bdf|$PWD/unifont.bdf|g"
'';
patches = [ ./fix-bash-completion.patch ];
patches = [ ./fix-bash-completion.patch ./glibc-2.20.patch ];
configureFlags = optional zfsSupport "--enable-libzfs"
++ optionals efiSupport [ "--with-platform=efi" "--target=${efiSystems.${stdenv.system}.target}" "--program-prefix=" ];

View file

@ -0,0 +1,29 @@
* grub-core/kern/emu/hostfs.c: squahes below warning
warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use
_DEFAULT_SOURCE"
Signed-off-by: Khem Raj <address@hidden>
Upstream-Status: Submitted
---
grub-core/kern/emu/hostfs.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/grub-core/kern/emu/hostfs.c b/grub-core/kern/emu/hostfs.c
index 7e725f6..823116d 100644
--- a/grub-core/kern/emu/hostfs.c
+++ b/grub-core/kern/emu/hostfs.c
@@ -19,7 +19,11 @@
#include <config-util.h>
+/* Legacy feature macro.*/
#define _BSD_SOURCE
+/* New feature macro that provides everything _BSD_SOURCE and
+ * _SVID_SOURCE provided and possibly more. */
+#define _DEFAULT_SOURCE
#include <grub/fs.h>
#include <grub/file.h>
#include <grub/disk.h>
--
2.1.0

View file

@ -43,7 +43,6 @@ stdenv.mkDerivation rec {
dontDisableStatic = linkStatic;
CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
LDFLAGS = if linkStatic then "-static" else "";
CXX = "g++";
CXXCPP = "g++ -E";

View file

@ -4,7 +4,6 @@
, scpSupport ? false, libssh2 ? null
, gssSupport ? false, gss ? null
, c-aresSupport ? false, c-ares ? null
, linkStatic ? false
}:
assert zlibSupport -> zlib != null;
@ -41,30 +40,18 @@ stdenv.mkDerivation rec {
( if scpSupport then "--with-libssh2=${libssh2}" else "--without-libssh2" )
]
++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}"
++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}"
++ stdenv.lib.optionals linkStatic [ "--enable-static" "--disable-shared" ]
;
++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}";
dontDisableStatic = linkStatic;
CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
LDFLAGS = if linkStatic then "-static" else "";
CXX = "g++";
CXXCPP = "g++ -E";
# libtool hack to get a static binary. Notice that to 'configure' I passed
# other LDFLAGS, because it doesn't use libtool for linking in the tests.
makeFlags = if linkStatic then "LDFLAGS=-all-static" else "";
crossAttrs = {
# We should refer to the cross built openssl
# For the 'urandom', maybe it should be a cross-system option
configureFlags = [
( if sslSupport then "--with-ssl=${openssl.crossDrv}" else "--without-ssl" )
"--with-random /dev/urandom"
]
++ stdenv.lib.optionals linkStatic [ "--enable-static" "--disable-shared" ]
;
];
};
passthru = {

View file

@ -5178,7 +5178,7 @@ let
glfw2 = callPackage ../development/libraries/glfw/2.x.nix { };
glfw3 = callPackage ../development/libraries/glfw/3.x.nix { };
glibc = callPackage ../development/libraries/glibc/2.19 {
glibc = callPackage ../development/libraries/glibc {
kernelHeaders = linuxHeaders;
installLocales = config.glibc.locales or false;
machHeaders = null;
@ -5186,13 +5186,13 @@ let
gccCross = null;
};
glibc_memusage = callPackage ../development/libraries/glibc/2.19 {
glibc_memusage = callPackage ../development/libraries/glibc {
kernelHeaders = linuxHeaders;
installLocales = false;
withGd = true;
};
glibcCross = forceNativeDrv (makeOverridable (import ../development/libraries/glibc/2.19)
glibcCross = forceNativeDrv (makeOverridable (import ../development/libraries/glibc)
(let crossGNU = crossSystem != null && crossSystem.config == "i586-pc-gnu";
in {
inherit stdenv fetchurl;
@ -5220,11 +5220,11 @@ let
installLocales = config.glibc.locales or false;
};
glibcLocales = callPackage ../development/libraries/glibc/2.19/locales.nix { };
glibcLocales = callPackage ../development/libraries/glibc/locales.nix { };
glibcInfo = callPackage ../development/libraries/glibc/2.19/info.nix { };
glibcInfo = callPackage ../development/libraries/glibc/info.nix { };
glibc_multi = callPackage ../development/libraries/glibc/2.19/multi.nix {
glibc_multi = callPackage ../development/libraries/glibc/multi.nix {
inherit glibc;
glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;
};
@ -8073,7 +8073,7 @@ let
# -- Linux kernel expressions ------------------------------------------------
linuxHeaders = linuxHeaders_3_7;
linuxHeaders = linuxHeaders_3_12;
linuxHeaders24Cross = forceNativeDrv (import ../os-specific/linux/kernel-headers/2.4.nix {
inherit stdenv fetchurl perl;
@ -8085,7 +8085,7 @@ let
cross = assert crossSystem != null; crossSystem;
});
linuxHeaders_3_7 = callPackage ../os-specific/linux/kernel-headers/3.7.nix { };
linuxHeaders_3_12 = callPackage ../os-specific/linux/kernel-headers/3.12.nix { };
linuxHeaders_3_14 = callPackage ../os-specific/linux/kernel-headers/3.14.nix { };