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
next 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