Subject: [alpine-aports] [PATCH v2] main/lttng-ust: upgrade to 2.10.3

From: Michael Jeanson <[email-masked]>
Date: Wed, 20 Mar 2019 11:34:43 -0500

---
 ...c5baf1565ba1daa2b96f5e4a297571c505b4.patch | 103 ++++++++++++++++++
 main/lttng-ust/APKBUILD                       |  10 +-
 2 files changed, 109 insertions(+), 4 deletions(-)
 create mode 100644 main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch

diff --git a/main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch b/main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch
new file mode 100644
index 0000000000..6d770e30f8
--- /dev/null
+++ b/main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch
@@ -0,0 +1,103 @@
+From 13d2c5baf1565ba1daa2b96f5e4a297571c505b4 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <[email-masked]>
+Date: Wed, 20 Mar 2019 11:07:35 -0400
+Subject: [PATCH] compat: work around broken _SC_NPROCESSORS_CONF on MUSL libc
+
+On MUSL libc the _SC_NPROCESSORS_CONF sysconf will report the number of
+CPUs allocated to the task based on the affinity mask instead of the
+total number of CPUs configured on the system.
+
+Signed-off-by: Michael Jeanson <[email-masked]>
+Signed-off-by: Mathieu Desnoyers <[email-masked]>
+---
+ libringbuffer/smp.c | 66 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+diff --git a/libringbuffer/smp.c b/libringbuffer/smp.c
+index 9e7114be..656a75da 100644
+--- a/libringbuffer/smp.c
++++ b/libringbuffer/smp.c
+@@ -2,6 +2,7 @@
+  * libringbuffer/smp.c
+  *
+  * Copyright (C) 2011-2012 Mathieu Desnoyers <[email-masked]>
++ * Copyright (C) 2019 Michael Jeanson <[email-masked]>
+  *
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+@@ -26,6 +27,7 @@
+ 
+ int __num_possible_cpus;
+ 
++#if (defined(__GLIBC__) || defined( __UCLIBC__))
+ void _get_num_possible_cpus(void)
+ {
+ 	int result;
+@@ -43,3 +45,67 @@ void _get_num_possible_cpus(void)
+ 		return;
+ 	__num_possible_cpus = result;
+ }
++
++#else
++
++/*
++ * The MUSL libc implementation of the _SC_NPROCESSORS_CONF sysconf does not
++ * return the number of configured CPUs in the system but relies on the cpu
++ * affinity mask of the current task.
++ *
++ * So instead we use a strategy similar to GLIBC's, counting the cpu
++ * directories in "/sys/devices/system/cpu" and fallback on the value from
++ * sysconf if it fails.
++ */
++
++#include <dirent.h>
++#include <limits.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/types.h>
++
++#define __max(a,b) ((a)>(b)?(a):(b))
++
++void _get_num_possible_cpus(void)
++{
++	int result, count = 0;
++	DIR *cpudir;
++	struct dirent *entry;
++
++	cpudir = opendir("/sys/devices/system/cpu");
++	if (cpudir == NULL)
++		goto end;
++
++	/*
++	 * Count the number of directories named "cpu" followed by and
++	 * integer. This is the same strategy as glibc uses.
++	 */
++	while ((entry = readdir(cpudir))) {
++		if (entry->d_type == DT_DIR &&
++			strncmp(entry->d_name, "cpu", 3) == 0) {
++
++			char *endptr;
++			unsigned long cpu_num;
++
++			cpu_num = strtoul(entry->d_name + 3, &endptr, 10);
++			if ((cpu_num < ULONG_MAX) && (endptr != entry->d_name + 3)
++					&& (*endptr == '\0')) {
++				count++;
++			}
++		}
++	}
++
++end:
++	/*
++	 * Get the sysconf value as a fallback. Keep the highest number.
++	 */
++	result = __max(sysconf(_SC_NPROCESSORS_CONF), count);
++
++	/*
++	 * If both methods failed, don't store the value.
++	 */
++	if (result < 1)
++		return;
++	__num_possible_cpus = result;
++}
++#endif
diff --git a/main/lttng-ust/APKBUILD b/main/lttng-ust/APKBUILD
index d78437b316..1c37424c6a 100644
--- a/main/lttng-ust/APKBUILD
+++ b/main/lttng-ust/APKBUILD
@@ -1,16 +1,17 @@
 # Contributor: Michael Jeanson <[email-masked]>
 # Maintainer: Michael Jeanson <[email-masked]>
 pkgname=lttng-ust
-pkgver=2.10.1
+pkgver=2.10.3
 pkgrel=0
 pkgdesc="LTTng 2.0 Userspace Tracer"
 url="https://lttng.org"
 arch="all"
-license="LGPL-2.0-or-later"
+license="LGPL-2.1-or-later"
 makedepends="userspace-rcu-dev>0.10 util-linux-dev linux-headers bash"
 install=""
 subpackages="$pkgname-doc $pkgname-dev"
-source="https://lttng.org/files/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://lttng.org/files/$pkgname/$pkgname-$pkgver.tar.bz2
+	13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch"
 
 builddir="$srcdir"/$pkgname-$pkgver
 
@@ -34,4 +35,5 @@ package() {
 	make DESTDIR="$pkgdir" install
 }
 
-sha512sums="bd9b75ff359a8698ba4f7b6a27d9958c8bd9539fd43d8f1bc4bb40003271c9074f1bb4176d074bac290fad1636d5a3226063275006b781f3533567dea71fac96  lttng-ust-2.10.1.tar.bz2"
+sha512sums="6f646de3a12dbad096014f3069c3e702fb54b824b78770e777f6f877c76ffc48fae863b10c432bff1bba29caafdb5b76cb2b9cb88eb7340d5121300d2c0ff65d  lttng-ust-2.10.3.tar.bz2
+c91ea6ad2085f13de0508d0f238582bcd12f0460cb00f482a85fa5cfe8ec4ce675c084af27387f63cec9cc83430ca80fb995b289f44b515888efb796a97dc320  13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch"
-- 
2.21.0

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Leonardo <[email-masked]>
Date: Wed, 3 Apr 2019 11:09:27 +0200

Hi,

>   create mode 100644 main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch

it fails here with:

make[4]: Leaving directory 
'/home/larena/aports/main/lttng-ust/src/lttng-ust-2.10.3/doc/examples/demo-tracelog'
/bin/sh: ../../config/install-sh: not found
make[3]: *** [Makefile:979: all-local] Error 1

Can you replicate the issue?

Thanks!

/eo

---

---

From: Michael Jeanson <[email-masked]>
Date: Tue, 9 Apr 2019 11:54:11 -0400

Hi,

On 2019-04-03 5:09 a.m., Leonardo wrote:
>>   create mode 100644
>> main/lttng-ust/13d2c5baf1565ba1daa2b96f5e4a297571c505b4.patch
> 
> it fails here with:
> 

I rebuilt the package on my alpine edge system and I can't replicate the
problem, can you try a fresh build and send the full log?

Thanks,

Michael

---