public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gcc-patches:master commit in: 10.5.0/gentoo/
Date: Sat, 17 Dec 2022 04:54:10 +0000 (UTC)	[thread overview]
Message-ID: <1671252845.6b7210b745d69eee33e5eda1a7ed5fa6ee93c003.sam@gentoo> (raw)

commit:     6b7210b745d69eee33e5eda1a7ed5fa6ee93c003
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 17 02:49:23 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Dec 17 04:54:05 2022 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=6b7210b7

Revert "10.5.0: backport make 4.4 jobserver fixes"

Not complete but wanted to commit it for posterity
in case we want to resume it.

This reverts commit b0521a3be4d9d67a7190126e58440c4904924744.

Bug: https://bugs.gentoo.org/884633
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../77_all_Factor-out-jobserver_active_p.patch     | 320 ---------------------
 ...-jobserver-style-fifo-for-recent-GNU-make.patch |  66 -----
 10.5.0/gentoo/README.history                       |   4 -
 3 files changed, 390 deletions(-)

diff --git a/10.5.0/gentoo/77_all_Factor-out-jobserver_active_p.patch b/10.5.0/gentoo/77_all_Factor-out-jobserver_active_p.patch
deleted file mode 100644
index 5658a1b..0000000
--- a/10.5.0/gentoo/77_all_Factor-out-jobserver_active_p.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-https://bugs.gentoo.org/884633
-
-https://build.opensuse.org/package/view_file/devel:gcc/gcc12/gcc12-fifo-jobserver-support.patch
-https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1270ccda70ca09f7d4fe76b5156dca8992bd77a6
-
-Rebased by Arsen Arsenović <arsen@aarsen.me>.
-
-From f8ca9e3ea075f5a3743fc74ae227a361f355c0f0 Mon Sep 17 00:00:00 2001
-From: Martin Liska <mliska@suse.cz>
-Date: Tue, 9 Aug 2022 13:59:32 +0200
-Subject: [PATCH 1/2] Factor out jobserver_active_p.
-
-gcc/ChangeLog:
-
-	* gcc.cc (driver::detect_jobserver): Remove and move to
-	jobserver.h.
-	* lto-wrapper.cc (jobserver_active_p): Likewise.
-	(run_gcc): Likewise.
-	* opts-jobserver.h: New file.
-	* opts-common.cc (jobserver_info::jobserver_info): New function.
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -27,6 +27,7 @@ CC recognizes how to compile each input file by suffixes in the file names.
- Once it knows which kind of compilation to perform, the procedure for
- compilation is specified by a string called a "spec".  */
- 
-+#define INCLUDE_STRING
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
-@@ -43,6 +44,7 @@ compilation is specified by a string called a "spec".  */
- #include "opts.h"
- #include "filenames.h"
- #include "spellcheck.h"
-+#include "opts-jobserver.h"
- 
- \f
- 
-@@ -8399,38 +8401,9 @@ driver::final_actions () const
- void
- driver::detect_jobserver () const
- {
--  /* Detect jobserver and drop it if it's not working.  */
--  const char *makeflags = env.get ("MAKEFLAGS");
--  if (makeflags != NULL)
--    {
--      const char *needle = "--jobserver-auth=";
--      const char *n = strstr (makeflags, needle);
--      if (n != NULL)
--	{
--	  int rfd = -1;
--	  int wfd = -1;
--
--	  bool jobserver
--	    = (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2
--	       && rfd > 0
--	       && wfd > 0
--	       && is_valid_fd (rfd)
--	       && is_valid_fd (wfd));
--
--	  /* Drop the jobserver if it's not working now.  */
--	  if (!jobserver)
--	    {
--	      unsigned offset = n - makeflags;
--	      char *dup = xstrdup (makeflags);
--	      dup[offset] = '\0';
--
--	      const char *space = strchr (makeflags + offset, ' ');
--	      if (space != NULL)
--		strcpy (dup + offset, space);
--	      xputenv (concat ("MAKEFLAGS=", dup, NULL));
--	    }
--	}
--    }
-+  jobserver_info jinfo;
-+  if (!jinfo.is_active && !jinfo.skipped_makeflags.empty ())
-+    xputenv (jinfo.skipped_makeflags.c_str ());
- }
- 
- /* Determine what the exit code of the driver should be.  */
---- a/gcc/lto-wrapper.c
-+++ b/gcc/lto-wrapper.c
-@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3.  If not see
-    ./ccCJuXGv.lto.ltrans.o
- */
- 
-+#define INCLUDE_STRING
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
-@@ -48,6 +49,8 @@ along with GCC; see the file COPYING3.  If not see
- #include "simple-object.h"
- #include "lto-section-names.h"
- #include "collect-utils.h"
-+#include "opts-diagnostic.h"
-+#include "opts-jobserver.h"
- 
- /* Environment variable, used for passing the names of offload targets from GCC
-    driver to lto-wrapper.  */
-@@ -1295,32 +1298,43 @@ init_num_threads (void)
- #endif
- }
- 
--/* FIXME: once using -std=c++11, we can use std::thread::hardware_concurrency.  */
--
--/* Return true when a jobserver is running and can accept a job.  */
--
--static bool
--jobserver_active_p (void)
-+void
-+print_lto_docs_link ()
- {
--  const char *makeflags = getenv ("MAKEFLAGS");
--  if (makeflags == NULL)
--    return false;
-+  bool print_url = global_dc->printer->url_format != URL_FORMAT_NONE;
-+  const char *url = global_dc->get_option_url (global_dc, OPT_flto);
- 
--  const char *needle = "--jobserver-auth=";
--  const char *n = strstr (makeflags, needle);
--  if (n == NULL)
--    return false;
--
--  int rfd = -1;
--  int wfd = -1;
--
--  return (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2
--	  && rfd > 0
--	  && wfd > 0
--	  && is_valid_fd (rfd)
--	  && is_valid_fd (wfd));
-+  pretty_printer pp;
-+  pp.url_format = URL_FORMAT_DEFAULT;
-+  pp_string (&pp, "see the ");
-+  if (print_url)
-+    pp_begin_url (&pp, url);
-+  pp_string (&pp, "%<-flto%> option documentation");
-+  if (print_url)
-+    pp_end_url (&pp);
-+  pp_string (&pp, " for more information");
-+  inform (UNKNOWN_LOCATION, pp_formatted_text (&pp));
- }
- 
-+/* Test that a make command is present and working, return true if so.  */
-+
-+static bool
-+make_exists (void)
-+{
-+  const char *make = "make";
-+  char **make_argv = buildargv (getenv ("MAKE"));
-+  if (make_argv)
-+    make = make_argv[0];
-+  const char *make_args[] = {make, "--version", NULL};
-+
-+  int exit_status = 0;
-+  int err = 0;
-+  const char *errmsg
-+    = pex_one (PEX_SEARCH, make_args[0], CONST_CAST (char **, make_args),
-+	       "make", NULL, NULL, &exit_status, &err);
-+  freeargv (make_argv);
-+  return errmsg == NULL && exit_status == 0 && err == 0;
-+}
- /* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */
- 
- static void
-@@ -1535,10 +1549,20 @@ run_gcc (unsigned argc, char *argv[])
-       auto_parallel = 0;
-       parallel = 0;
-     }
--  else if (!jobserver && jobserver_active_p ())
-+  else
-     {
--      parallel = 1;
--      jobserver = 1;
-+      jobserver_info jinfo;
-+      if (jobserver && !jinfo.is_active)
-+	{
-+	  /* Fall back to auto parallelism.  */
-+	  jobserver = 0;
-+	  auto_parallel = 1;
-+	}
-+      else if (!jobserver && jinfo.is_active)
-+	{
-+	  parallel = 1;
-+	  jobserver = 1;
-+	}
-     }
- 
-   if (linker_output)
-@@ -1861,6 +1885,20 @@ cont:
-       maybe_unlink (ltrans_output_file);
-       ltrans_output_file = NULL;
- 
-+      if (nr > 1)
-+	{
-+	  if (jobserver_requested && !jinfo.is_active)
-+	    {
-+	      warning (0, jinfo.error_msg.c_str ());
-+	      print_lto_docs_link ();
-+	    }
-+	  else if (parallel == 0)
-+	    {
-+	      warning (0, "using serial compilation of %d LTRANS jobs", nr);
-+	      print_lto_docs_link ();
-+	    }
-+	}
-+
-       if (parallel)
- 	{
- 	  makefile = make_temp_file (".mk");
---- a/gcc/opts-common.c
-+++ b/gcc/opts-common.c
-@@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
-+#define INCLUDE_STRING
- #include "config.h"
- #include "system.h"
- #include "intl.h"
-@@ -25,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
- #include "options.h"
- #include "diagnostic.h"
- #include "spellcheck.h"
-+#include "opts-jobserver.h"
- 
- static void prune_options (struct cl_decoded_option **, unsigned int *);
- 
-@@ -1805,3 +1807,42 @@ void prepend_xassembler_to_collect_as_options (const char *collect_as_options,
-       obstack_1grow (o, '\'');
-     }
- }
-+
-+jobserver_info::jobserver_info ()
-+{
-+  /* Detect jobserver and drop it if it's not working.  */
-+  string js_needle = "--jobserver-auth=";
-+
-+  const char *envval = getenv ("MAKEFLAGS");
-+  if (envval != NULL)
-+    {
-+      string makeflags = envval;
-+      size_t n = makeflags.rfind (js_needle);
-+      if (n != string::npos)
-+	{
-+	  if (sscanf (makeflags.c_str () + n + js_needle.size (),
-+		      "%d,%d", &rfd, &wfd) == 2
-+	      && rfd > 0
-+	      && wfd > 0
-+	      && is_valid_fd (rfd)
-+	      && is_valid_fd (wfd))
-+	    is_active = true;
-+	  else
-+	    {
-+	      string dup = makeflags.substr (0, n);
-+	      size_t pos = makeflags.find (' ', n);
-+	      if (pos != string::npos)
-+		dup += makeflags.substr (pos);
-+	      skipped_makeflags = "MAKEFLAGS=" + dup;
-+	      error_msg
-+		= "cannot access %<" + js_needle + "%> file descriptors";
-+	    }
-+	}
-+      error_msg = "%<" + js_needle + "%> is not present in %<MAKEFLAGS%>";
-+    }
-+  else
-+    error_msg = "%<MAKEFLAGS%> environment variable is unset";
-+
-+  if (!error_msg.empty ())
-+    error_msg = "jobserver is not available: " + error_msg;
-+}
---- /dev/null
-+++ b/gcc/opts-jobserver.h
-@@ -0,0 +1,44 @@
-+/* GNU make's jobserver related functionality.
-+   Copyright (C) 2022 Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC is free software; you can redistribute it and/or modify it under
-+the terms of the GNU General Public License as published by the Free
-+Software Foundation; either version 3, or (at your option) any later
-+version.
-+
-+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-+WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.
-+
-+See dbgcnt.def for usage information.  */
-+
-+#ifndef GCC_JOBSERVER_H
-+#define GCC_JOBSERVER_H
-+
-+using namespace std;
-+
-+struct jobserver_info
-+{
-+  /* Default constructor.  */
-+  jobserver_info ();
-+
-+  /* Error message if there is a problem.  */
-+  string error_msg = "";
-+  /* Skipped MAKEFLAGS where --jobserver-auth is skipped.  */
-+  string skipped_makeflags = "";
-+  /* File descriptor for reading used for jobserver communication.  */
-+  int rfd = -1;
-+  /* File descriptor for writing used for jobserver communication.  */
-+  int wfd = -1;
-+  /* Return true if jobserver is active.  */
-+  bool is_active = false;
-+};
-+
-+#endif /* GCC_JOBSERVER_H */
--- 
-2.38.1

diff --git a/10.5.0/gentoo/78_all_lto-support-jobserver-style-fifo-for-recent-GNU-make.patch b/10.5.0/gentoo/78_all_lto-support-jobserver-style-fifo-for-recent-GNU-make.patch
deleted file mode 100644
index 5d50461..0000000
--- a/10.5.0/gentoo/78_all_lto-support-jobserver-style-fifo-for-recent-GNU-make.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-https://bugs.gentoo.org/884633
-
-https://build.opensuse.org/package/view_file/devel:gcc/gcc12/gcc12-fifo-jobserver-support.patch
-https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=53e3b2bf16a486c15c20991c6095f7be09012b55
-
-Rebased by Arsen Arsenović <arsen@aarsen.me>.
-
-From ab7a17b024ec3efabb3803e4d1dab461082044a9 Mon Sep 17 00:00:00 2001
-From: Martin Liska <mliska@suse.cz>
-Date: Tue, 9 Aug 2022 13:59:36 +0200
-Subject: [PATCH 2/2] lto: support --jobserver-style=fifo for recent GNU make
-
-gcc/ChangeLog:
-
-	* opts-jobserver.h: Add one member.
-	* opts-common.cc (jobserver_info::jobserver_info): Parse FIFO
-	format of --jobserver-auth.
---- a/gcc/opts-common.c
-+++ b/gcc/opts-common.c
-@@ -1810,8 +1810,14 @@ void prepend_xassembler_to_collect_as_options (const char *collect_as_options,
- 
- jobserver_info::jobserver_info ()
- {
-+  /* Traditionally, GNU make uses opened pipes for jobserver-auth,
-+    e.g. --jobserver-auth=3,4.
-+    Starting with GNU make 4.4, one can use --jobserver-style=fifo
-+    and then named pipe is used: --jobserver-auth=fifo:/tmp/hcsparta.  */
-+
-   /* Detect jobserver and drop it if it's not working.  */
-   string js_needle = "--jobserver-auth=";
-+  string fifo_prefix = "fifo:";
- 
-   const char *envval = getenv ("MAKEFLAGS");
-   if (envval != NULL)
-@@ -1820,8 +1826,15 @@ jobserver_info::jobserver_info ()
-       size_t n = makeflags.rfind (js_needle);
-       if (n != string::npos)
- 	{
--	  if (sscanf (makeflags.c_str () + n + js_needle.size (),
--		      "%d,%d", &rfd, &wfd) == 2
-+	  string ending = makeflags.substr (n + js_needle.size ());
-+	  if (ending.find (fifo_prefix) == 0)
-+	    {
-+	      ending = ending.substr (fifo_prefix.size ());
-+	      pipe_path = ending.substr (0, ending.find (' '));
-+	      is_active = true;
-+	    }
-+	  else if (sscanf (makeflags.c_str () + n + js_needle.size (),
-+			   "%d,%d", &rfd, &wfd) == 2
- 	      && rfd > 0
- 	      && wfd > 0
- 	      && is_valid_fd (rfd)
---- a/gcc/opts-jobserver.h
-+++ b/gcc/opts-jobserver.h
-@@ -37,6 +37,8 @@ struct jobserver_info
-   int rfd = -1;
-   /* File descriptor for writing used for jobserver communication.  */
-   int wfd = -1;
-+  /* Named pipe path.  */
-+  string pipe_path = "";
-   /* Return true if jobserver is active.  */
-   bool is_active = false;
- };
--- 
-2.38.1
-

diff --git a/10.5.0/gentoo/README.history b/10.5.0/gentoo/README.history
index 6d8c5c2..41e961c 100644
--- a/10.5.0/gentoo/README.history
+++ b/10.5.0/gentoo/README.history
@@ -1,7 +1,3 @@
-2		9 Dec 2022
-	+ 77_all_Factor-out-jobserver_active_p.patch
-	+ 78_all_lto-support-jobserver-style-fifo-for-recent-GNU-make.patch
-
 1		19 Nov 2022
 	+ 76_all_configure-c89.patch
 


             reply	other threads:[~2022-12-17  4:54 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-17  4:54 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-04-28  0:07 [gentoo-commits] proj/gcc-patches:master commit in: 10.5.0/gentoo/ Sam James
2023-01-27  8:12 Sam James
2023-01-23  0:35 Sam James
2022-12-17  4:54 Sam James
2022-12-17  4:54 Sam James
2022-11-20  0:25 Sam James
2022-08-22  2:37 Sam James
2022-08-22  1:52 Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1671252845.6b7210b745d69eee33e5eda1a7ed5fa6ee93c003.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox