## START: Set by rpmautospec ## (rpmautospec version 0.8.1) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 1; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %global commit cedb1fc6f725ea1a51dc9f5bbdc1ec6ec00e33d7 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global commitdate 20251007 Name: qthreads Version: 1.22^%{commitdate}git%{shortcommit} Release: %{autorelease} Summary: Lightweight locality-aware user-level threading runtime License: BSD-3-Clause AND MIT URL: https://www.sandia.gov/qthreads/ Source: https://github.com/sandialabs/qthreads/archive/%{commit}/qthreads-%{shortcommit}.tar.gz # Unsupported architectures ExcludeArch: %{ix86} s390x BuildRequires: cmake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: hwloc-devel %description The Qthreads API is designed to make using large numbers of threads convenient and easy. The Qthreads API also provides access to full/empty-bit (FEB) semantics, where every word of memory can be marked either full or empty, and a thread can wait for any word to attain either state. Qthreads is essentially a library for spawning and controlling stackful coroutines: threads with small (4-8k) stacks. The exposed user API resembles OS threads, however the threads are entirely in user-space and use their locked/unlocked status as part of their scheduling. The library's metaphor is that there are many Qthreads and several "shepherds". Shepherds generally map to specific processors or memory regions, but this is not an explicit part of the API. Qthreads are assigned to specific shepherds and are only allowed to migrate when running on a scheduler that supports work stealing or when migration is explicitly triggered via user APIs. The API includes utility functions for making threaded loops, sorting, and similar operations convenient. %package devel Summary: Development files for qthreads library Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Header files and development libraries for qthreads library. %prep %autosetup -p1 -n qthreads-%{commit} %build %cmake %cmake_build %install %cmake_install rm %{buildroot}%{_includedir}/qthread/.gitignore %check # Tests fail on ppc64le, though build completes. Perhaps try a post release commit. #ifnarch ppc64le %ctest #endif %files %license COPYING %doc AUTHORS %doc NEWS %doc README.md %doc README.affinity %doc SCHEDULING %{_libdir}/libqthread.so.1* %files devel %{_includedir}/qthread.h %dir %{_includedir}/qthread %{_includedir}/qthread/*.h %{_includedir}/qthread/*.hpp %dir %{_libdir}/cmake/qthread %{_libdir}/cmake/qthread/*.cmake %{_libdir}/libqthread.so %changelog ## START: Generated by rpmautospec * Wed Oct 08 2025 John Doe - 1.22^20251007gitcedb1fc-1 - Uncommitted changes ## END: Generated by rpmautospec