From 4a00169ff613ecd3e12d4b6b5862e71ad873a92d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 20 Oct 2006 16:01:11 +0000 Subject: [PATCH] * Okay, we do need part of svn path=/nixpkgs/trunk/; revision=6790 --- pkgs/os-specific/linux/dietlibc/builder.sh | 4 -- pkgs/os-specific/linux/dietlibc/default.nix | 16 +++-- pkgs/os-specific/linux/dietlibc/no-wchar.h | 77 +++++++++++++++++++++ 3 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 pkgs/os-specific/linux/dietlibc/no-wchar.h diff --git a/pkgs/os-specific/linux/dietlibc/builder.sh b/pkgs/os-specific/linux/dietlibc/builder.sh index 0f1dbf534c5..ab20c8ea1b5 100644 --- a/pkgs/os-specific/linux/dietlibc/builder.sh +++ b/pkgs/os-specific/linux/dietlibc/builder.sh @@ -15,10 +15,6 @@ postInstall() { # Copy from Glibc; binutils wants it. cp $glibc/include/sys/user.h $out/include/sys/ - - # This header is bogus: it contains declarations that aren't - # defined anywhere. - rm $out/include/wchar.h } genericBuild diff --git a/pkgs/os-specific/linux/dietlibc/default.nix b/pkgs/os-specific/linux/dietlibc/default.nix index 67bdaf15c18..708933ffa33 100644 --- a/pkgs/os-specific/linux/dietlibc/default.nix +++ b/pkgs/os-specific/linux/dietlibc/default.nix @@ -11,8 +11,16 @@ stdenv.mkDerivation { builder = ./builder.sh; inherit (stdenv) glibc; - # dietlibc's sigcontext.h provides a macro called PC(), which is - # rather intrusive (e.g., binutils fails to compile because of it). - # Rename it. - patches = [./pc.patch]; + patches = [ + + # dietlibc's sigcontext.h provides a macro called PC(), which is + # rather intrusive (e.g., binutils fails to compile because of + # it). Rename it. + ./pc.patch + + # wchar.h declares lots of functions that don't actually exist. + # Remove them. + ./no-wchar.h + + ]; } diff --git a/pkgs/os-specific/linux/dietlibc/no-wchar.h b/pkgs/os-specific/linux/dietlibc/no-wchar.h new file mode 100644 index 00000000000..92be2cd2fea --- /dev/null +++ b/pkgs/os-specific/linux/dietlibc/no-wchar.h @@ -0,0 +1,77 @@ +diff -rc dietlibc-0.30-orig/include/wchar.h dietlibc-0.30/include/wchar.h +*** dietlibc-0.30-orig/include/wchar.h 2005-09-21 09:33:08.000000000 +0200 +--- dietlibc-0.30/include/wchar.h 2006-10-20 15:04:04.000000000 +0200 +*************** +*** 30,99 **** + unsigned long sofar; + } mbstate_t; + +- wint_t btowc(int); +- wint_t fgetwc(FILE *); +- wchar_t* fgetws(wchar_t *__restrict__, int, FILE *__restrict__); +- wint_t fputwc(wchar_t, FILE *); +- int fputws(const wchar_t *__restrict__, FILE *__restrict__); +- int fwide(FILE *, int); +- int fwprintf(FILE *__restrict__, const wchar_t *__restrict__, ...); +- int fwscanf(FILE *__restrict__, const wchar_t *__restrict__, ...); +- wint_t getwc(FILE *); +- wint_t getwchar(void); +- +- size_t mbrlen(const char *__restrict__, size_t, mbstate_t *__restrict__); +- size_t mbrtowc(wchar_t *__restrict__, const char *__restrict__, size_t, mbstate_t *__restrict__); +- int mbsinit(const mbstate_t *); +- size_t mbsrtowcs(wchar_t *__restrict__, const char **__restrict__, size_t, mbstate_t *__restrict__); +- wint_t putwc(wchar_t, FILE *); +- wint_t putwchar(wchar_t); +- int swprintf(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, ...); +- int swscanf(const wchar_t *__restrict__, const wchar_t *__restrict__, ...); +- +- wint_t ungetwc(wint_t, FILE *); +- int vfwprintf(FILE *__restrict__, const wchar_t *__restrict__, va_list); +- int vfwscanf(FILE *__restrict__, const wchar_t *__restrict__, va_list); +- int vwprintf(const wchar_t *__restrict__, va_list); +- int vswprintf(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, va_list); +- int vswscanf(const wchar_t *__restrict__, const wchar_t *__restrict__, va_list); +- int vwscanf(const wchar_t *__restrict__, va_list); +- size_t wcrtomb(char *__restrict__, wchar_t, mbstate_t *__restrict__); +- wchar_t *wcscat(wchar_t *__restrict__, const wchar_t *__restrict__); +- wchar_t *wcschr(const wchar_t *, wchar_t); +- int wcscmp(const wchar_t *, const wchar_t *); +- int wcscoll(const wchar_t *, const wchar_t *); +- wchar_t* wcscpy(wchar_t *__restrict__, const wchar_t *__restrict__); +- size_t wcscspn(const wchar_t *, const wchar_t *); +- size_t wcsftime(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, const struct tm *__restrict__); +- size_t wcslen(const wchar_t *) __pure; +- wchar_t *wcsncat(wchar_t *__restrict__, const wchar_t *__restrict__, size_t); +- int wcsncmp(const wchar_t *, const wchar_t *, size_t); +- wchar_t *wcsncpy(wchar_t *__restrict__, const wchar_t *__restrict__, size_t); +- wchar_t *wcspbrk(const wchar_t *, const wchar_t *); +- wchar_t *wcsrchr(const wchar_t *, wchar_t); +- size_t wcsrtombs(char *__restrict__, const wchar_t **__restrict__, size_t, mbstate_t *__restrict__); +- size_t wcsspn(const wchar_t *, const wchar_t *); +- wchar_t *wcsstr(const wchar_t *__restrict__, const wchar_t *__restrict__); +- double wcstod(const wchar_t *__restrict__, wchar_t **__restrict__); +- float wcstof(const wchar_t *__restrict__, wchar_t **__restrict__); +- wchar_t *wcstok(wchar_t *__restrict__, const wchar_t *__restrict__, wchar_t **__restrict__); +- long wcstol(const wchar_t *__restrict__, wchar_t **__restrict__, int); +- long double wcstold(const wchar_t *__restrict__, wchar_t **__restrict__); +- long long wcstoll(const wchar_t *__restrict__, wchar_t **__restrict__, int); +- unsigned long wcstoul(const wchar_t *__restrict__, wchar_t **__restrict__, int); +- unsigned long long wcstoull(const wchar_t *__restrict__, wchar_t **__restrict__, int); +- +- size_t wcsxfrm(wchar_t *__restrict__, const wchar_t *__restrict__, size_t); +- int wctob(wint_t); +- +- wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); +- int wmemcmp(const wchar_t *, const wchar_t *, size_t); +- wchar_t *wmemcpy(wchar_t *__restrict__, const wchar_t *__restrict__, size_t); +- wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); +- wchar_t *wmemset(wchar_t *, wchar_t, size_t); +- int wprintf(const wchar_t *__restrict__, ...); +- int wscanf(const wchar_t *__restrict__, ...); +- + __END_DECLS + + #endif +--- 30,35 ---- +Only in dietlibc-0.30/include: wchar.h~