Re: rfc/patch: user-agent distro-description for debuginfod http traffic

2020-01-09 Thread Frank Ch. Eigler
Hi -

> > > We do want a reproducible build. 
> > 
> > Can you give an example?  Bootstrapping a new distro version/arch?
> 
> Probably best explained at https://reproducible-builds.org/ most
> distributions are participating.

(I understood that part, just not how you thought build-time literals
would break reproducibility.)

> It looks like an easily parsable file format.  The attached produces
> some reasonable looking identification strings on a couple of my
> systems out of the box:

OK, took your code, tweaked it just a touch, confirmed it's valgrind
leak-free, and merged to master.

- FChE



Re: rfc/patch: debuginfod client $DEBUGINFOD_PROGRESS env var

2020-01-09 Thread Mark Wielaard
On Thu, 2020-01-02 at 11:44 -0500, Frank Ch. Eigler wrote:
> Hi -
> 
> > > That suggests one timeout could be sufficient - the progress
> > > timeout
> > > you the one you found - just not too short and not too fast.
> > 
> > How about the attached (untested) patch?

I finally tested it in various setups. Including your cool test server:
https://sourceware.org/ml/systemtap/2020-q1/msg2.html


> That looks good, though I'd bump up the 60s -> 120s to give it a big
> margin over already-observed latencies.

Lets split the difference and make it 90s. That is more than twice the
worst delay I ever observed.

Pushed the attached.

Cheers,

Mark
From b8d85ed024a745cff05e56c6337d95d654d5294a Mon Sep 17 00:00:00 2001
From: Mark Wielaard 
Date: Thu, 2 Jan 2020 17:02:42 +0100
Subject: [PATCH] debuginfod: Use DEBUGINFOD_TIMEOUT as seconds to get at least
 100K.

Use just one timeout using CURLOPT_LOW_SPEED_TIME (default 90 seconds)
and CURLOPT_LOW_SPEED_LIMIT (100K).

Signed-off-by: Mark Wielaard 
---
 debuginfod/ChangeLog|  8 
 debuginfod/debuginfod-client.c  | 30 +-
 doc/ChangeLog   |  7 +++
 doc/debuginfod-find.1   | 11 ---
 doc/debuginfod.8|  6 --
 doc/debuginfod_find_debuginfo.3 | 11 ---
 tests/ChangeLog |  4 
 tests/run-debuginfod-find.sh|  2 +-
 8 files changed, 45 insertions(+), 34 deletions(-)

diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 6cfb4e24..18778521 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,11 @@
+2019-01-02  Mark Wielaard  
+
+	* debuginfod.cxx (default_connect_timeout): Removed.
+	(default_transfer_timeout): Removed.
+	(default_timeout): New. Default to 90 seconds.
+	(debuginfod_query_server): Parse server_timeout_envvar as one number.
+	Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
+
 2020-01-09  Frank Ch. Eigler  
 
 	* debuginfod-client.c (add_extra_headers): New function,
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 66ccb21a..e5a2e824 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -105,10 +105,9 @@ static const char *server_urls_envvar = DEBUGINFOD_URLS_ENV_VAR;
 static const char *url_delim =  " ";
 static const char url_delim_char = ' ';
 
-/* Timeout for debuginfods, in seconds. */
+/* Timeout for debuginfods, in seconds (to get at least 100K). */
 static const char *server_timeout_envvar = DEBUGINFOD_TIMEOUT_ENV_VAR;
-static const long default_connect_timeout = 5;
-static const long default_transfer_timeout = -1; /* unlimited */
+static const long default_timeout = 90;
 
 
 /* Data associated with a particular CURL easy handle. Passed to
@@ -483,18 +482,10 @@ debuginfod_query_server (debuginfod_client *c,
   return fd;
 }
 
-  long connect_timeout = default_connect_timeout;
-  long transfer_timeout = default_transfer_timeout;
+  long timeout = default_timeout;
   const char* timeout_envvar = getenv(server_timeout_envvar);
   if (timeout_envvar != NULL)
-{
-  long ct, tt;
-  rc = sscanf(timeout_envvar, "%ld,%ld", &ct, &tt);
-  if (rc >= 1)
-connect_timeout = ct;
-  if (rc >= 2)
-transfer_timeout = tt;
-}
+timeout = atoi (timeout_envvar);
 
   /* make a copy of the envvar so it can be safely modified.  */
   server_urls = strdup(urls_envvar);
@@ -586,10 +577,15 @@ debuginfod_query_server (debuginfod_client *c,
CURLOPT_WRITEFUNCTION,
debuginfod_write_callback);
   curl_easy_setopt(data[i].handle, CURLOPT_WRITEDATA, (void*)&data[i]);
-  if (connect_timeout >= 0)
-curl_easy_setopt(data[i].handle, CURLOPT_CONNECTTIMEOUT, connect_timeout);
-  if (transfer_timeout >= 0)
-curl_easy_setopt(data[i].handle, CURLOPT_TIMEOUT, transfer_timeout);
+  if (timeout > 0)
+	{
+	  /* Make sure there is at least some progress,
+	 try to get at least 100K per timeout seconds.  */
+	  curl_easy_setopt (data[i].handle, CURLOPT_LOW_SPEED_TIME,
+			timeout);
+	  curl_easy_setopt (data[i].handle, CURLOPT_LOW_SPEED_LIMIT,
+			100 * 1024L);
+	}
   curl_easy_setopt(data[i].handle, CURLOPT_FILETIME, (long) 1);
   curl_easy_setopt(data[i].handle, CURLOPT_FOLLOWLOCATION, (long) 1);
   curl_easy_setopt(data[i].handle, CURLOPT_FAILONERROR, (long) 1);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 1422766d..b40a141b 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,10 @@
+2020-01-02  Mark Wielaard  
+
+	* debuginfod.8 (DEBUGINFOD_TIMEOUT): Document as seconds to
+	provide 100K, default 90.
+	* debuginfod-find.1 (DEBUGINFOD_TIMEOUT): Likewise.
+	* debuginfod_find_debuginfo.3 (DEBUGINFOD_TIMEOUT): Likewise.
+
 2019-12-22  Frank Ch. Eigler  
+
+	* run-debuginfod-find.sh: Set DEBUGINFOD_TIMEOUT to 10.
+
 2019-12-22  Frank Ch. Eigler  
 
 	* debuginfod-debs/*: New test files, based on
diff

Re: [PATCH] libebl: Don't install libebl.a, libebl.h and remove backends from spec.

2020-01-09 Thread Mark Wielaard
Hi Dmitry,

On Thu, 2020-01-09 at 02:25 +0300, Dmitry V. Levin wrote:
> On Wed, Jan 08, 2020 at 03:09:32PM +0100, Mark Wielaard wrote:
> > Even if you could use libasm.h, linking with libasm always was kind
> > of
> > useless since there was no supported way to create an Ebl handle.
> > Unless you statically linked with libebl, which was never supported and
> > might still not work since it might conflict with changes in the libebl
> > linked to by libasm/libdw.
> > 
> > In fact our own elfutils.spec doesn't even install it. But sadly some
> > distros (including Fedora... my fault) do install it.
> > 
> > Short term I propose the attached patch.
> 
> Thanks, it works: the packaging check that used to complain about
> compilation error in installed libasm.h turns green when this patch
> is applied.

Great. I pushed it to master.

Thanks,

Mark