upg glib-networking libcamera
This commit is contained in:
parent
564eed4bc1
commit
02d20a93c5
|
@ -6,17 +6,16 @@
|
||||||
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
||||||
|
|
||||||
pkgname=glib-networking
|
pkgname=glib-networking
|
||||||
pkgver=2.74.0
|
pkgver=2.76.0
|
||||||
pkgrel=01
|
pkgrel=01
|
||||||
epoch=1
|
epoch=1
|
||||||
pkgdesc="Network extensions for GLib w/o systemd"
|
pkgdesc="Network extensions for GLib w/o systemd"
|
||||||
url="https://gitlab.gnome.org/GNOME/glib-networking"
|
url="https://gitlab.gnome.org/GNOME/glib-networking"
|
||||||
arch=(x86_64)
|
|
||||||
depends=(glib2 libproxy gnutls gsettings-desktop-schemas)
|
depends=(glib2 libproxy gnutls gsettings-desktop-schemas)
|
||||||
makedepends=(meson git)
|
makedepends=(meson git libxml2)
|
||||||
checkdepends=(ca-certificates)
|
checkdepends=(ca-certificates)
|
||||||
# options=(debug) ## uncomment this line to have the debug pkg produced
|
# options=(debug) ## uncomment this line to have the debug pkg produced
|
||||||
_commit=d17632fe495c573612dd69e982a0c49af2952178 # tags/2.74.0^0
|
_commit=eab226398f9872c381033f7cb3af43dcb66600f4 # tags/2.76.0^0
|
||||||
source=("git+https://gitlab.gnome.org/GNOME/glib-networking.git#commit=$_commit")
|
source=("git+https://gitlab.gnome.org/GNOME/glib-networking.git#commit=$_commit")
|
||||||
|
|
||||||
pkgver() {
|
pkgver() {
|
||||||
|
@ -42,11 +41,13 @@ package() {
|
||||||
rm -rf $pkgdir/usr/lib/systemd
|
rm -rf $pkgdir/usr/lib/systemd
|
||||||
}
|
}
|
||||||
|
|
||||||
#---- license gpg-key sha256sums ----
|
#---- arch license gpg-key & sha256sums ----
|
||||||
|
|
||||||
|
arch=(x86_64)
|
||||||
|
|
||||||
license=(GPL2)
|
license=(GPL2)
|
||||||
|
|
||||||
sha256sums=(SKIP)
|
sha256sums=(SKIP)
|
||||||
|
|
||||||
|
## 253b3883d4bc41db49b5e69c7a13a619ede0ddd9afe67c5db925dde2d7dacc44 glib-networking-1:2.76.0-01-x86_64.pkg.tar.lz
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,25 @@
|
||||||
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
|
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
|
||||||
|
|
||||||
pkgname=glib-networking
|
pkgname=glib-networking
|
||||||
pkgver=2.74.0
|
pkgver=2.76.0
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
epoch=1
|
epoch=1
|
||||||
pkgdesc="Network extensions for GLib"
|
pkgdesc="Network extensions for GLib"
|
||||||
url="https://gitlab.gnome.org/GNOME/glib-networking"
|
url="https://gitlab.gnome.org/GNOME/glib-networking"
|
||||||
arch=(x86_64)
|
arch=(x86_64)
|
||||||
license=(GPL2)
|
license=(GPL2)
|
||||||
depends=(glib2 libproxy gnutls gsettings-desktop-schemas)
|
depends=(
|
||||||
makedepends=(meson git)
|
glib2
|
||||||
|
gnutls
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
libproxy
|
||||||
|
)
|
||||||
|
makedepends=(
|
||||||
|
git
|
||||||
|
meson
|
||||||
|
)
|
||||||
checkdepends=(ca-certificates)
|
checkdepends=(ca-certificates)
|
||||||
options=(debug)
|
_commit=eab226398f9872c381033f7cb3af43dcb66600f4 # tags/2.76.0^0
|
||||||
_commit=d17632fe495c573612dd69e982a0c49af2952178 # tags/2.74.0^0
|
|
||||||
source=("git+https://gitlab.gnome.org/GNOME/glib-networking.git#commit=$_commit")
|
source=("git+https://gitlab.gnome.org/GNOME/glib-networking.git#commit=$_commit")
|
||||||
sha256sums=('SKIP')
|
sha256sums=('SKIP')
|
||||||
|
|
||||||
|
@ -38,4 +45,4 @@ package() {
|
||||||
meson install -C build --destdir "$pkgdir"
|
meson install -C build --destdir "$pkgdir"
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim:set sw=2 et:
|
# vim:set sw=2 sts=-1 et:
|
||||||
|
|
|
@ -5,3 +5,4 @@ meson
|
||||||
gettext
|
gettext
|
||||||
|
|
||||||
|
|
||||||
|
libxml2
|
||||||
|
|
|
@ -9,9 +9,8 @@ pkgbase=libcamera
|
||||||
pkgname=(libcamera libcamera-tools gst-plugin-libcamera) # libcamera-docs
|
pkgname=(libcamera libcamera-tools gst-plugin-libcamera) # libcamera-docs
|
||||||
pkgver=0.0.4
|
pkgver=0.0.4
|
||||||
_commit=6a57d964abdb3f24608c0fc2839d96e02eebddeb # refs/tags/v0.0.4
|
_commit=6a57d964abdb3f24608c0fc2839d96e02eebddeb # refs/tags/v0.0.4
|
||||||
pkgrel=01
|
pkgrel=02
|
||||||
pkgdesc="A complex camera support library for Linux, Android, and ChromeOS w/o systemd"
|
pkgdesc="A complex camera support library for Linux, Android, and ChromeOS w/o systemd"
|
||||||
arch=(x86_64)
|
|
||||||
url="https://libcamera.org/"
|
url="https://libcamera.org/"
|
||||||
depends=(glibc)
|
depends=(glibc)
|
||||||
makedepends=(doxygen git glib2 graphviz gst-plugins-base gtest libdrm
|
makedepends=(doxygen git glib2 graphviz gst-plugins-base gtest libdrm
|
||||||
|
@ -69,6 +68,10 @@ package_libcamera() {
|
||||||
provides=(libcamera.so libcamera-base.so)
|
provides=(libcamera.so libcamera-base.so)
|
||||||
|
|
||||||
meson install -C build --destdir "$pkgdir"
|
meson install -C build --destdir "$pkgdir"
|
||||||
|
|
||||||
|
# remove unneeded signatures as they make the package unreproducible
|
||||||
|
rm -frv "$pkgdir/usr/lib/$pkgname/"*.sign
|
||||||
|
|
||||||
(
|
(
|
||||||
cd "$pkgdir"
|
cd "$pkgdir"
|
||||||
# _pick $pkgbase-docs usr/share/doc
|
# _pick $pkgbase-docs usr/share/doc
|
||||||
|
@ -119,13 +122,16 @@ package_gst-plugin-libcamera() {
|
||||||
mv -v $pkgname/* "$pkgdir"
|
mv -v $pkgname/* "$pkgdir"
|
||||||
}
|
}
|
||||||
|
|
||||||
#---- license gpg-key sha256sums ----
|
#---- arch license gpg-key & sha256sums ----
|
||||||
|
|
||||||
|
arch=(x86_64)
|
||||||
|
|
||||||
license=(LGPL2.1 GPL2)
|
license=(LGPL2.1 GPL2)
|
||||||
|
|
||||||
sha256sums=(SKIP)
|
sha256sums=(SKIP)
|
||||||
|
|
||||||
|
## fb26fb957f1ae679ccc2e0a2e43d92c98702112cf93643c83e9c960bd06a2e6f gst-plugin-libcamera-0.0.4-02-x86_64.pkg.tar.lz
|
||||||
|
## 5135cbbf70cef7ae2153b9c426f8327058dbbae5f91e1da8496fcac59acec8fd libcamera-0.0.4-02-x86_64.pkg.tar.lz
|
||||||
|
## e5d8af1fbf262423ff7441d4bb67b70351c4154e1625c87438237bbbcb7c466c libcamera-tools-0.0.4-02-x86_64.pkg.tar.lz
|
||||||
|
|
||||||
# f25979b048deb34e476dfbedf2c08b3fe8ed52e66372f9c55b7f57e41476fb2e gst-plugin-libcamera-0.0.4-01-x86_64.pkg.tar.lz
|
|
||||||
# 40002ce1f660392bcfc79a0b2e72b4ac6130b1e307664192ffc03824f60eaaae libcamera-0.0.4-01-x86_64.pkg.tar.lz
|
|
||||||
# 01daafeb63063928dd1042377d7f1034917fcdfcd9bd3c3dbc9e73e487f92e79 libcamera-tools-0.0.4-01-x86_64.pkg.tar.lz
|
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ pkgbase=libcamera
|
||||||
pkgname=(libcamera libcamera-docs libcamera-tools gst-plugin-libcamera)
|
pkgname=(libcamera libcamera-docs libcamera-tools gst-plugin-libcamera)
|
||||||
pkgver=0.0.4
|
pkgver=0.0.4
|
||||||
_commit=6a57d964abdb3f24608c0fc2839d96e02eebddeb # refs/tags/v0.0.4
|
_commit=6a57d964abdb3f24608c0fc2839d96e02eebddeb # refs/tags/v0.0.4
|
||||||
pkgrel=1
|
pkgrel=2
|
||||||
pkgdesc="A complex camera support library for Linux, Android, and ChromeOS"
|
pkgdesc="A complex camera support library for Linux, Android, and ChromeOS"
|
||||||
arch=(x86_64)
|
arch=(x86_64)
|
||||||
url="https://libcamera.org/"
|
url="https://libcamera.org/"
|
||||||
|
@ -85,6 +85,10 @@ package_libcamera() {
|
||||||
provides=(libcamera.so libcamera-base.so)
|
provides=(libcamera.so libcamera-base.so)
|
||||||
|
|
||||||
meson install -C build --destdir "$pkgdir"
|
meson install -C build --destdir "$pkgdir"
|
||||||
|
|
||||||
|
# remove unneeded signatures as they make the package unreproducible
|
||||||
|
rm -frv "$pkgdir/usr/lib/$pkgname/"*.sign
|
||||||
|
|
||||||
(
|
(
|
||||||
cd "$pkgdir"
|
cd "$pkgdir"
|
||||||
_pick $pkgbase-docs usr/share/doc
|
_pick $pkgbase-docs usr/share/doc
|
||||||
|
|
60
tbb/PKGBUILD
60
tbb/PKGBUILD
|
@ -1,60 +0,0 @@
|
||||||
#!/usr/bin/bash
|
|
||||||
# JOBoRun : Jwm OpenBox Obarun RUNit
|
|
||||||
# Maintainer : Joe Bo Run <joborun@disroot.org>
|
|
||||||
# PkgSource : url="https://gittea.disroot.org/joborun-pkg/jobextra/$pkgname"
|
|
||||||
# Website : https://pozol.eu
|
|
||||||
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
|
||||||
|
|
||||||
pkgname=tbb
|
|
||||||
pkgver=2021.5.0
|
|
||||||
pkgrel=04
|
|
||||||
pkgdesc='High level abstract threading library'
|
|
||||||
arch=('x86_64')
|
|
||||||
url='https://www.threadingbuildingblocks.org/'
|
|
||||||
depends=('gcc-libs' 'hwloc')
|
|
||||||
makedepends=('cmake' 'inetutils' 'ninja' 'python' 'swig')
|
|
||||||
conflicts=('intel-tbb')
|
|
||||||
provides=("intel-tbb=$pkgver")
|
|
||||||
replaces=('intel-tbb')
|
|
||||||
source=(https://github.com/oneapi-src/oneTBB/archive/v$pkgver/$pkgname-$pkgver.tar.gz
|
|
||||||
retry-pthread_create.patch::https://github.com/oneapi-src/oneTBB/pull/824.patch)
|
|
||||||
|
|
||||||
## with or without the patch building fails (tried last 17 Noc 2022)
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
# Patch for mold:
|
|
||||||
patch -d oneTBB-$pkgver -p1 -i ../retry-pthread_create.patch
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
# TBB_STRICT is ON by default and turns on -Werror, but `-DTBB_STRICT=OFF` is currently broken:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/847
|
|
||||||
# Upstream doesn't support GCC 12 yet:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/823#issuecomment-1128997690
|
|
||||||
# So we turn off the problematic new warnings in GCC 12 manually.
|
|
||||||
export CXXFLAGS="$CXXFLAGS -Wno-error=uninitialized -Wno-error=address"
|
|
||||||
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr -DTBB4PY_BUILD=ON .
|
|
||||||
ninja all python_build
|
|
||||||
}
|
|
||||||
|
|
||||||
check() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
ninja test
|
|
||||||
}
|
|
||||||
|
|
||||||
## 2 out 134 tests failed see check.log ## comment out the check section and rerun makepkg without -f
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
DESTDIR="$pkgdir" ninja install
|
|
||||||
}
|
|
||||||
|
|
||||||
#---- license gpg-key sha256sums ----
|
|
||||||
|
|
||||||
license=('Apache')
|
|
||||||
|
|
||||||
sha256sums=(e5b57537c741400cf6134b428fc1689a649d7d38d9bb9c1b6d64f092ea28178a # tbb-2021.5.0.tar.gz
|
|
||||||
70b077d1cac26e35336a8217f9c56c1ce2c8885c6df6dfb9805aa8374dad9617) # retry-pthread_create.patch
|
|
||||||
|
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
# Maintainer: Felix Yan <felixonmars@archlinux.org>
|
|
||||||
# Contributor: Stéphane Gaudreault <stephane@archlinux.org>
|
|
||||||
# Contributor: Thomas Dziedzic < gostrc at gmail >
|
|
||||||
# Contributor: Denis Martinez <deuns.martinez AT gmail.com>
|
|
||||||
# Contributor: Bogdan Burlacu <bogdan.burlacu AT pm.me>
|
|
||||||
|
|
||||||
pkgname=tbb
|
|
||||||
pkgver=2021.5.0
|
|
||||||
pkgrel=2
|
|
||||||
pkgdesc='High level abstract threading library'
|
|
||||||
arch=('x86_64')
|
|
||||||
url='https://www.threadingbuildingblocks.org/'
|
|
||||||
license=('Apache')
|
|
||||||
depends=('gcc-libs' 'hwloc')
|
|
||||||
makedepends=('cmake' 'inetutils' 'ninja' 'python' 'swig')
|
|
||||||
conflicts=('intel-tbb')
|
|
||||||
provides=("intel-tbb=$pkgver")
|
|
||||||
replaces=('intel-tbb')
|
|
||||||
source=(https://github.com/oneapi-src/oneTBB/archive/v$pkgver/$pkgname-$pkgver.tar.gz
|
|
||||||
retry-pthread_create.patch::https://github.com/oneapi-src/oneTBB/pull/824.patch)
|
|
||||||
sha512sums=('0e7b71022e397a6d7abb0cea106847935ae79a1e12a6976f8d038668c6eca8775ed971202c5bd518f7e517092b67af805cc5feb04b5c3a40e9fbf972cc703a46'
|
|
||||||
'62c1535a3888f27f1af5f472c57b8e22dc6977a0a64edb84d9ea84e4a967169d2c79a2b20654c4aa3da2891fec9538c22c6e5d8a5f296947b8760c6f97e02d98')
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
# Patch for mold:
|
|
||||||
patch -d oneTBB-$pkgver -p1 -i ../retry-pthread_create.patch
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
# TBB_STRICT is ON by default and turns on -Werror, but `-DTBB_STRICT=OFF` is currently broken:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/847
|
|
||||||
# Upstream doesn't support GCC 12 yet:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/823#issuecomment-1128997690
|
|
||||||
# So we turn off the problematic new warnings in GCC 12 manually.
|
|
||||||
export CXXFLAGS="$CXXFLAGS -Wno-error=uninitialized -Wno-error=address"
|
|
||||||
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr -DTBB4PY_BUILD=ON .
|
|
||||||
ninja all python_build
|
|
||||||
}
|
|
||||||
|
|
||||||
check() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
ninja test
|
|
||||||
}
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
DESTDIR="$pkgdir" ninja install
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
#!/usr/bin/bash
|
|
||||||
# JOBoRun : Jwm OpenBox Obarun RUNit
|
|
||||||
# Maintainer : Joe Bo Run <joborun@disroot.org>
|
|
||||||
# PkgSource : url="https://gittea.disroot.org/joborun-pkg/jobextra/$pkgname"
|
|
||||||
# Website : https://pozol.eu
|
|
||||||
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
|
||||||
|
|
||||||
pkgname=tbb
|
|
||||||
pkgver=2021.5.0
|
|
||||||
pkgrel=02
|
|
||||||
pkgdesc='High level abstract threading library'
|
|
||||||
arch=('x86_64')
|
|
||||||
url='https://www.threadingbuildingblocks.org/'
|
|
||||||
depends=('gcc-libs' 'hwloc')
|
|
||||||
makedepends=('cmake' 'inetutils' 'ninja' 'python' 'swig')
|
|
||||||
conflicts=('intel-tbb')
|
|
||||||
provides=("intel-tbb=$pkgver")
|
|
||||||
replaces=('intel-tbb')
|
|
||||||
source=(https://github.com/oneapi-src/oneTBB/archive/v$pkgver/$pkgname-$pkgver.tar.gz
|
|
||||||
retry-pthread_create.patch::https://github.com/oneapi-src/oneTBB/pull/824.patch)
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
# Patch for mold:
|
|
||||||
patch -d oneTBB-$pkgver -p1 -i ../retry-pthread_create.patch
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
# TBB_STRICT is ON by default and turns on -Werror, but `-DTBB_STRICT=OFF` is currently broken:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/847
|
|
||||||
# Upstream doesn't support GCC 12 yet:
|
|
||||||
# https://github.com/oneapi-src/oneTBB/issues/823#issuecomment-1128997690
|
|
||||||
# So we turn off the problematic new warnings in GCC 12 manually.
|
|
||||||
export CXXFLAGS="$CXXFLAGS -Wno-error=uninitialized -Wno-error=address"
|
|
||||||
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr -DTBB4PY_BUILD=ON .
|
|
||||||
ninja all python_build
|
|
||||||
}
|
|
||||||
|
|
||||||
#check() {
|
|
||||||
# cd oneTBB-$pkgver
|
|
||||||
# ninja test
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
## 2 out 134 tests failed see check.log
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cd oneTBB-$pkgver
|
|
||||||
DESTDIR="$pkgdir" ninja install
|
|
||||||
}
|
|
||||||
|
|
||||||
#---- license gpg-key sha256sums ----
|
|
||||||
|
|
||||||
license=('Apache')
|
|
||||||
|
|
||||||
sha256sums=(e5b57537c741400cf6134b428fc1689a649d7d38d9bb9c1b6d64f092ea28178a # tbb-2021.5.0.tar.gz
|
|
||||||
70b077d1cac26e35336a8217f9c56c1ce2c8885c6df6dfb9805aa8374dad9617) # retry-pthread_create.patch
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
tbb/note
10
tbb/note
|
@ -1,10 +0,0 @@
|
||||||
can't be build with this patch or at this time
|
|
||||||
|
|
||||||
previous note was on jul 19 2022, the pkg went to testing then vanished
|
|
||||||
the PKGBUILD comes back now 3 months later unchanged, the pkg goes to testing
|
|
||||||
still doesn't build with same error.
|
|
||||||
|
|
||||||
But now the pkg is moved to extra ....??? It makes one wonder
|
|
||||||
about the true environment on which arch builds the packages.
|
|
||||||
Reverting back to gcc 11 to get this built is not worth the trouble, the patch
|
|
||||||
was meant to deal with this issue, while upstream has no support for 12.
|
|
|
@ -1,63 +0,0 @@
|
||||||
From f12c93efd04991bc982a27e2fa6142538c33ca82 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rui Ueyama <ruiu@cs.stanford.edu>
|
|
||||||
Date: Sat, 7 May 2022 19:55:24 +0800
|
|
||||||
Subject: [PATCH] Retry if pthread_create fails with EAGAIN
|
|
||||||
|
|
||||||
On many Unix-like systems, pthread_create can fail spuriously even if
|
|
||||||
the running machine has enough resources to spawn a new thread.
|
|
||||||
Therefore, if EAGAIN is returned from pthread_create, we actually have
|
|
||||||
to try again.
|
|
||||||
|
|
||||||
I observed this issue when running the mold linker
|
|
||||||
(https://github.com/rui314/mold) under a heavy load. mold uses OneTBB
|
|
||||||
for parallelization.
|
|
||||||
|
|
||||||
As another data point, Go has the same logic to retry on EAGAIN:
|
|
||||||
https://go-review.googlesource.com/c/go/+/33894/
|
|
||||||
|
|
||||||
nanosleep is defined in POSIX 2001, so I believe that all Unix-like
|
|
||||||
systems support it.
|
|
||||||
|
|
||||||
Signed-off-by: Rui Ueyama <ruiu@cs.stanford.edu>
|
|
||||||
---
|
|
||||||
src/tbb/rml_thread_monitor.h | 19 ++++++++++++++++++-
|
|
||||||
1 file changed, 18 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/tbb/rml_thread_monitor.h b/src/tbb/rml_thread_monitor.h
|
|
||||||
index 13b556380..5b844b232 100644
|
|
||||||
--- a/src/tbb/rml_thread_monitor.h
|
|
||||||
+++ b/src/tbb/rml_thread_monitor.h
|
|
||||||
@@ -31,6 +31,7 @@
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <cstring>
|
|
||||||
#include <cstdlib>
|
|
||||||
+#include <time.h>
|
|
||||||
#else
|
|
||||||
#error Unsupported platform
|
|
||||||
#endif
|
|
||||||
@@ -191,8 +192,24 @@ inline thread_monitor::handle_type thread_monitor::launch( void* (*thread_routin
|
|
||||||
check(pthread_attr_init( &s ), "pthread_attr_init has failed");
|
|
||||||
if( stack_size>0 )
|
|
||||||
check(pthread_attr_setstacksize( &s, stack_size ), "pthread_attr_setstack_size has failed" );
|
|
||||||
+
|
|
||||||
pthread_t handle;
|
|
||||||
- check( pthread_create( &handle, &s, thread_routine, arg ), "pthread_create has failed" );
|
|
||||||
+ int tries = 0;
|
|
||||||
+ for (;;) {
|
|
||||||
+ int error_code = pthread_create(&handle, &s, thread_routine, arg);
|
|
||||||
+ if (!error_code)
|
|
||||||
+ break;
|
|
||||||
+ if (error_code != EAGAIN || tries++ > 20) {
|
|
||||||
+ handle_perror(error_code, "pthread_create has failed");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // pthreaed_create can spuriously fail on many Unix-like systems.
|
|
||||||
+ // Retry after tries * 1 millisecond.
|
|
||||||
+ struct timespec ts = {0, tries * 1000 * 1000};
|
|
||||||
+ nanosleep(&ts, NULL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
check( pthread_attr_destroy( &s ), "pthread_attr_destroy has failed" );
|
|
||||||
return handle;
|
|
||||||
}
|
|
Loading…
Reference in New Issue