From eee27fe6a076d4ac95032111f9f8ece763b8414036114c3cd266eeb0b62b2923 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Thu, 30 Aug 2012 07:56:40 +0000 Subject: [PATCH] Accepting request 132013 from GNOME:Next Add some patches to help fix building webkit 1.9.6+ OBS-URL: https://build.opensuse.org/request/show/132013 OBS-URL: https://build.opensuse.org/package/show/Base:System/make?expand=0&rev=24 --- make-arglength.patch | 105 ++++++++++++++++++++++++++++++++++++++ make-parallel-build.patch | 27 ++++++++++ make.changes | 10 ++++ make.spec | 6 +++ 4 files changed, 148 insertions(+) create mode 100644 make-arglength.patch create mode 100644 make-parallel-build.patch diff --git a/make-arglength.patch b/make-arglength.patch new file mode 100644 index 0000000..e28ca55 --- /dev/null +++ b/make-arglength.patch @@ -0,0 +1,105 @@ +diff -u make-3.82-orig/configure.in make-3.82/configure.in +--- make-3.82-orig/configure.in 2010-07-28 07:39:50.000000000 +0200 ++++ make-3.82/configure.in 2012-03-21 12:34:20.000000000 +0100 +@@ -64,7 +64,8 @@ + AC_HEADER_STAT + AC_HEADER_TIME + AC_CHECK_HEADERS(stdlib.h locale.h unistd.h limits.h fcntl.h string.h \ +- memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h) ++ memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \ ++ sys/user.h linux/binfmts.h) + + # Set a flag if we have an ANSI C compiler + if test "$ac_cv_prog_cc_stdc" != no; then +Subdirectorios comunes: make-3.82-orig/doc y make-3.82/doc +Subdirectorios comunes: make-3.82-orig/glob y make-3.82/glob +diff -u make-3.82-orig/job.c make-3.82/job.c +--- make-3.82-orig/job.c 2010-07-24 10:27:50.000000000 +0200 ++++ make-3.82/job.c 2012-03-21 12:34:20.000000000 +0100 +@@ -29,6 +29,11 @@ + + #include + ++#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H) ++#include ++#include ++#endif ++ + /* Default shell to use. */ + #ifdef WINDOWS32 + #include +@@ -2795,6 +2800,7 @@ + unsigned int sflags_len = strlen (shellflags); + char *command_ptr = NULL; /* used for batch_mode_shell mode */ + char *new_line; ++ char *args_ptr; + + # ifdef __EMX__ /* is this necessary? */ + if (!unixy_shell) +@@ -2865,8 +2871,17 @@ + return new_argv; + } + ++#ifdef MAX_ARG_STRLEN ++ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ "; ++#define ARG_NUMBER_DIGITS 5 ++#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \ ++ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2)) ++#else ++#define EVAL_LEN 0 ++#endif ++ + new_line = alloca (shell_len + 1 + sflags_len + 1 +- + (line_len*2) + 1); ++ + (line_len*2) + 1 + EVAL_LEN); + ap = new_line; + memcpy (ap, shell, shell_len); + ap += shell_len; +@@ -2875,6 +2890,30 @@ + ap += sflags_len; + *(ap++) = ' '; + command_ptr = ap; ++ ++#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) ++ if (unixy_shell && line_len > MAX_ARG_STRLEN) ++ { ++ unsigned j; ++ memcpy (ap, eval_line, sizeof (eval_line) - 1); ++ ap += sizeof (eval_line) - 1; ++ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++) ++ ap += sprintf (ap, "\\$\\{%u\\}", j); ++ *ap++ = '\\'; ++ *ap++ = '"'; ++ *ap++ = ' '; ++ /* Copy only the first word of SHELL to $0. */ ++ for (p = shell; *p != '\0'; ++p) ++ { ++ if (isspace ((unsigned char)*p)) ++ break; ++ *ap++ = *p; ++ } ++ *ap++ = ' '; ++ } ++#endif ++ args_ptr = ap; ++ + for (p = line; *p != '\0'; ++p) + { + if (restp != NULL && *p == '\n') +@@ -2922,6 +2961,14 @@ + } + #endif + *ap++ = *p; ++ ++#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) ++ if (unixy_shell && line_len > MAX_ARG_STRLEN && (ap - args_ptr > MAX_ARG_STRLEN - 2)) ++ { ++ *ap++ = ' '; ++ args_ptr = ap; ++ } ++#endif + } + if (ap == new_line + shell_len + sflags_len + 2) + /* Line was empty. */ + + diff --git a/make-parallel-build.patch b/make-parallel-build.patch new file mode 100644 index 0000000..3749121 --- /dev/null +++ b/make-parallel-build.patch @@ -0,0 +1,27 @@ +diff -u make-3.82-orig/remake.c make-3.82/remake.c +--- make-3.82-orig/remake.c 2010-07-13 03:20:42.000000000 +0200 ++++ make-3.82/remake.c 2012-03-21 12:47:52.000000000 +0100 +@@ -301,7 +301,7 @@ + /* Check for the case where a target has been tried and failed but + the diagnostics hasn't been issued. If we need the diagnostics + then we will have to continue. */ +- if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag)) ++ if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag) && f->command_state!=cs_not_started ) + { + DBF (DB_VERBOSE, _("Pruning file `%s'.\n")); + return f->command_state == cs_finished ? f->update_status : 0; +@@ -614,6 +614,12 @@ + d->file->dontcare = file->dontcare; + } + ++ /* We may have already encountered this file earlier in the same ++ * pass before we knew we'd be updating this target. In that ++ * case calling update_file now would result in the file being ++ * inappropriately pruned so we toggle the considered bit back ++ * off first. */ ++ d->file->considered = !considered; + + dep_status |= update_file (d->file, depth); + + + diff --git a/make.changes b/make.changes index a2661eb..8699226 100644 --- a/make.changes +++ b/make.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Wed Aug 8 13:33:19 UTC 2012 - dimstar@opensuse.org + +- Add make-arglength.patch: fix the argument list limit of GNU make +- Add make-parallel-build.patch: Fix parallel build issues present + in GNU make 3.82 +- Both patches taken from http://trac.webkit.org/browser/trunk/Tools/gtk/patches/ + are known by upstream and are mandatory to be able to build + libwebkit 1.9.6+. + ------------------------------------------------------------------- Tue Apr 10 14:26:35 CEST 2012 - meissner@suse.de diff --git a/make.spec b/make.spec index 0b0e324..65618a9 100644 --- a/make.spec +++ b/make.spec @@ -32,6 +32,10 @@ Patch4: make-savannah-bug30723-expand_makeflags_before_reexec.diff Patch5: make-savannah-bug30612-handling_of_archives.diff Patch6: make-fix_whitespace_tokenization.diff Patch7: make-glob-faster.patch +# PATCH-FIX-UPSTREAM make-arglength.patch dimstar@opensuse.org -- http://article.gmane.org/gmane.comp.gnu.make.bugs/4219 +Patch8: make-arglength.patch +# PATCH-FIX-UPSTREAM make-parallel-build.patch dmistar@opensuse.org -- http://savannah.gnu.org/bugs/?30653 +Patch9: make-parallel-build.patch Patch64: make-library-search-path.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -46,6 +50,8 @@ The GNU make command with extensive documentation. %patch5 %patch6 -p1 %patch7 -p0 +%patch8 -p1 +%patch9 -p1 if [ %_lib == lib64 ]; then %patch64 fi