commit 1c256b85970681fc1df422035aabe0a2e8da7d3f
Merge: 451e5366 9bceddfb
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 23 14:48:59 2026 +1000
Merge branch 'main' into pmi-append-mode
commit 451e5366e4f57c373da73e08d9ab0776f7967a39
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 23 08:52:30 2026 +1000
libpcp_import: build, docs, qa and comments updates on code review
commit 9bceddfbadff601341cbb74995542feead19366b
Merge: e9bbdb8b 1ac9652b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 10:57:37 2026 +1000
Merge pull request #2629 from kmcdonell/wip
QA updates, retire some PMDAs, small extra units related changes
commit a6c5e2ef897d4be5c0dc2a86996602790cd717e7
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 11:58:49 2026 +1000
pcp.pmi, LogImport: add wrappers for pmiSetZoneinfo and pmiSetImportProgram
Add Python ctypes declarations and method implementations for the two
new single-context pmiSet* APIs added on this branch:
pmiSetZoneinfo(zoneinfo) - set Olson timezone from zoneinfo string
pmiSetImportProgram(tool, ...) - register import program with pmdapmimport
Add Perl XS declarations for the same two functions. pmiSetVolumeSize
is omitted from Perl as its callback argument has no natural XS mapping.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit e379b2ec1ff17127e7ad212aad08960e6d40038e
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 10:57:36 2026 +1000
libpcp_import: add pmiSetImportProgram() for import tool registration
pmiSetImportProgram(tool, version, args, archive) writes tool identity
to PCP_IMPORT_DIR/{tool} so pmdapmimport can serve pmimport.* metrics.
PCP_IMPORT_DIR is a new pcp.conf variable (configure --with-importdir,
default /run/pmimport) that is created root:root 0755 by packaging.
The file is opened with O_NOFOLLOW|O_CLOEXEC to prevent symlink
substitution and fd leakage; O_TRUNC handles restart after unclean exit.
pmiEnd() removes the file on clean archive close so pmimport.* metrics
accurately reflect which tools are currently recording.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 1f5019adf948adf34bd65bc8c90906e1d7005b32
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 19 18:41:57 2026 +1000
libpcp_import: eliminate .meta bloat in append-mode archives
Three sources of repeated metadata writes in PMI_APPEND mode:
Indoms: check_indom() had no dedup check so every append session
re-wrote all indom records regardless of whether membership had
changed. For timer-driven collectors like sadc this caused O(N×S)
.meta growth where N is the number of processes and S is the number
of sessions per day.
Fix: compare the registered indom against the most recent entry in
hashindom (populated by __pmLogLoadMeta on append open). For v3
archives use pmaDeltaInDom() — the same helper pmlogger uses — to
write a compact TYPE_INDOM_DELTA record when membership changes, and
update the hash with the full indom afterwards so the next comparison
starts from the correct state. For v2 archives use pmaSameInDom()
and fall back to full indom writes. Link -lpcp_archive for access
to pmaDeltaInDom() and pmaSameInDom().
Help text: _pmi_put_text() reset meta_done=0 each session via
pmiStart inherit, causing all help text to be re-written on every
append. Fix: check __pmLogLookupText() before writing; skip if
content is unchanged.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 930460a76fff623cd47574434835c69f561f85d9
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 18 10:51:15 2026 +1000
libpcp_import: add pmiSetZoneinfo() for v3 archive Olson timezone
PCP v3 archives have a 'zoneinfo' label field for the full Olson
database timezone identifier (e.g. "Australia/Brisbane"), which gives
tools DST-correct replay without ambiguity. pmiSetTimezone() only
sets the POSIX abbreviated form ("AEST-10") and was incorrectly
clearing zoneinfo when applying it to the label.
Add pmiSetZoneinfo(const char *value) which sets the zoneinfo field
independently, modelled on pmiSetTimezone(). Passing NULL auto-detects
the local Olson name via __pmZoneinfo() (libpcp tz.c), which handles
both the /etc/localtime symlink case and the recursive file-content
matching fallback.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit d8a186ab6be04b793db158c6c2643355b486996c
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 17 14:08:06 2026 +1000
libpcp_import: add pmiSetVolumeSize() for automatic data volume rotation
Add pmiSetVolumeSize(size_t max_bytes, void (*on_rotate)(const char *))
to libpcp_import. After each successful pmiHighResWrite() or pmiWrite()
call, if the current data volume file size meets or exceeds max_bytes the
library closes the current volume, opens the next numbered volume (writing
a new label), and invokes the caller's callback with the path of the
just-closed volume so compression or other post-processing can be arranged.
Passing max_bytes=0 disables rotation (the default).
Guard: pmiSetVolumeSize() rejects a threshold at or below the on-disk
label size for the configured archive version. Accepting a sub-label
threshold would cause a rotation cascade since every new volume's label
immediately exceeds the threshold. The check uses the public pmapi.h
field-width constants to avoid a dependency on the file-static
__pmLabel_v2/v3 types.
Also: replace the magic number 100000 in _pmi_put_result() with the
named constant PMI_FLUSH_INTERVAL throughout archive.c.
Also: pair consecutive int fields in pmi_context (private.h) to eliminate
four bytes of alignment padding before each pointer on 64-bit platforms.
The struct is private to libpcp_import so there is no ABI constraint.
QA: check_volsize.c exercises rotation, callback, size-bound and label-size
guard; wired into qa/1693 (the existing PMI_APPEND test) with a
pmlogcheck step to verify multi-volume archive integrity.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 63b681aeeb4bed12861309b55db5aa9f96d943bc
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 17:10:59 2026 +1000
pcp.pmi: fix pmiWrite when sec=0 and usec is omitted
The condition 'if sec and not usec' fails when sec==0 because 0 is
falsy, leaving usec as None and causing pmiWrite2(0, None) to raise
TypeError against its c_int argtypes. Change to 'if usec is None'
so the datetime/float dispatch and the usec=0 fallback always run
when usec was not supplied by the caller.
Add a pmiWrite(0) call at the start of qa/src/test_pmi.python to
cover this path, and update qa/708.out accordingly.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 90d2c1846eae89616214e8b16eec9a795e5bd51e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 16:31:19 2026 +1000
libpcp_import: address coderabbit review findings
pmiPutAtomValueHandle: validate atom is non-NULL before passing to
_pmi_stuff_atomvalue, returning PM_ERR_ARG to avoid a segfault on
PM_TYPE_STRING metrics where atom->cp would be dereferenced.
archive.c _pmi_do_desc: when a descriptor for this PMID already exists
in the archive, verify it is compatible before skipping the write.
A package upgrade may have corrected an incorrect type, semantics,
instance domain or units for a metric, in which case the old archive
cannot be extended with new data. Return PM_ERR_LOGCHANGETYPE,
PM_ERR_LOGCHANGESEM, PM_ERR_LOGCHANGEINDOM or PM_ERR_LOGCHANGEUNITS
as appropriate so the caller has a precise diagnosis.
qa/group: add local group to qa/1670 so the standard local sweep
picks up the new append-mode coverage.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit af52c92d0181a3fa86b3a5db7f060bc69f2be19f
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 13:01:20 2026 +1000
qa: makefile cleanups, removing unneeded macros
commit e0014ef6f728945828d91b8efea62f2faeedfe92
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 11:04:27 2026 +1000
pcp.pmi: add type annotations to pmiLogImport API
Annotate all method signatures in the pmiLogImport class with PEP 484
type hints, compatible with the project's Python 3.6 minimum.
Return types reflect actual Python-level values (int status, pmID,
pmInDom, pmUnits, None). String parameters are annotated as str since
bytes encoding is an internal detail. pmiPutValue/pmiGetHandle inst
parameters are Optional[str] to reflect the None-for-singular-metric
convention. pmiWrite sec is Union[int, float, datetime] matching its
three-way dispatch. Imports Optional and Union from typing.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 1de184d6b6d22ffae84199402798ca9fa209364a
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 10:56:00 2026 +1000
man: add Python SYNOPSIS to all pmi* man pages
Add a Python SYNOPSIS section to each libpcp_import man page that has
a Python binding in src/python/pcp/pmi.py. The Python API wraps the C
library via the pmi.pmiLogImport class; methods are called on an
instance. Multi-line call signatures use the same continuation-indent
style as the existing Perl SYNOPSIS sections.
pmiputresult.3 gains a Python-only synopsis (Perl has no binding for
pmiPutResult/pmiPutHighResResult). pmisetversion.3 gains both Perl and
Python synopses, fixing a pre-existing omission. pmiusecontext.3 and
pmierrstr.3 are left without a Python synopsis as pmi.pmiLogImport
handles context switching internally and surfaces errors as exceptions.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 91f772425c09f3d2aedffcf8f4dbe0ba88267fd5
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 10:43:57 2026 +1000
libpcp_import: add pmiPutAtomValueHandle to public API
Add pmiPutAtomValueHandle(int handle, pmAtomValue *atom) as a binary
counterpart to pmiPutValueHandle, passing values directly via the
pmAtomValue union rather than as strings requiring parsing.
Refactor stuff.c to extract _pmi_alloc_vp and _pmi_alloc_valblock
static helpers, eliminating the duplicated result/vset/vp setup and
pmValueBlock allocation that both _pmi_stuff_value and the new
_pmi_stuff_atomvalue share.
Update pmiputvaluehandle.3 and exercise the new function in
qa/src/check_import.c covering the INSITU path (U32), DPTR path
(64-bit), bad-handle and duplicate-value error cases.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit ec9d164178b1cc4a388bdc1dcd4d5968885c1b2a
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 2 12:26:49 2026 +1000
libpcp_import, libpcp: improve archive append mode and public API
logutil.c: rework __pmLogOpenAppend() to use __pmLogFindOpen() for
volume discovery. Previously we iterated using lcp->numti (temporal
index count) as a starting hint; this bypassed the canonical readdir +
__pmLogAddVolume path. Now:
- __pmLogFindOpen() performs the directory scan, correctly setting
lcp->name, lcp->minvol and lcp->maxvol via __pmLogAddVolume.
- .meta and .index handles from __pmLogFindOpen (read mode) are used
to validate the archive label and load the temporal index for
lcp->endtime, then closed and reopened in r+ mode for writing.
- The highest data volume (lcp->maxvol) is opened in r+ mode so its
label is validated with __pmLogChkLabel before appending, matching
the consistency checking done by __pmLogChangeVol in the read path.
- acp->ac_flags |= PM_CTXFLAG_LAST_VOLUME signals that we are at the
most recent volume, following the __pmLogOpen convention.
import.h: expose pmiWrite2, pmiHighResWrite and pmiPutHighResResult as
the preferred Y2038-safe interfaces. pmiWrite(int,int) is marked
deprecated.
pmiwrite.3: document pmiWrite, pmiWrite2 and pmiHighResWrite on one
page; note pmiWrite as deprecated and pmiHighResWrite as preferred.
pmiputresult.3: document pmiPutResult and pmiPutHighResResult together;
note pmiPutHighResResult as the preferred nanosecond-resolution variant.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b8a7fbb2b71ac00d91585bfff6672602bfe87e40
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 1 16:49:44 2026 +1000
libpcp_import: expose pmiWrite2 and pmiHighResWrite in public API
pmiWrite2(int64_t sec, int usec) and pmiHighResWrite(int64_t sec, int nsec)
were already implemented and exported from the shared library but were
missing from the public import.h header, making them unusable by callers
without forward-declaring them manually.
Add declarations for both and deprecate pmiWrite(int, int) with a comment:
its 32-bit seconds argument is not Y2038-safe and callers should migrate to
pmiHighResWrite() for nanosecond-resolution timestamps or pmiWrite2() for
microsecond resolution.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 2fe039df7d848390a6491a4eb1e5c49ca6ea5e64
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 9 11:20:46 2026 +1000
libpcp, libpcp_import: implement an archive append mode of operation
Rename the second argument of pmiStart() from the implicit boolean
'inherit' to an explicit 'flags' field. Named constants are now
provided in import.h:
PMI_INHERIT (0x1) - existing behaviour: inherit metric definitions
from the current context into the new one
PMI_APPEND (0x2) - open an existing archive for appending instead
of creating a new one
pmiStart() with PMI_APPEND opens the named archive if it already
exists and positions all file handles at end-of-file, loading the
existing metadata so that subsequent pmiWrite() calls append new
records after the last existing record. If the archive does not
yet exist the flag is silently ignored and a new archive is created,
making PMI_APPEND safe for unconditional use in timer-driven
collectors (e.g. sadc) on first invocation.
Add QA test 1693 to exercise the append mode.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 1ac9652bc305d98dd733c13d7eafead8422dd59d
Merge: a2c3f51c 28905524
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 06:59:05 2026 +1000
Merge branch 'main' into wip
commit 28905524ea695b3a1e6dbcdd11f3a075475b9f10
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 06:34:06 2026 +1000
rpm packaging: obsolete (remove) mic and roomtemp PMDA packages
commit a2c3f51cb152e50a91f97d198d65f0250147f68b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:38:47 2026 +1000
qa/archives/mk.common: tighten up shell variable quoting
commit 668623e3371ec5022cf3436e9b3897820a92da39
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:27:02 2026 +1000
qa/archives/mk.amdgpu: small fixups
As spotted by @coderabbitai.
commit 47ae945b5458de0e4059ef69f1c8de41eb01fe0b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:21:49 2026 +1000
Update qa/1559
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
commit e9bbdb8b938f3f2644fad5a21b2cee02faf790a4
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 17:47:26 2026 +1000
qa: fix regression in qa/1543 by filtering changed label
commit 0bd8521c87609701e44b371db4173a374c0d307f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 17:21:20 2026 +1000
qa/archives/GNUmakefile: package the amd-smi output files
Needed by qa/1674.
commit c5ae751ede574f69dc86e1a3d7892cbd73583a59
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:57:12 2026 +1000
qa/archives/GNUmakefile: make sure renamed archives are packaged
commit c12caed0a4f10701b5262633f109df3cbe362704
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:51:09 2026 +1000
qa/archives/nvidiagpu.*: renamed to qa/archives/nvidiagpu-0.*
In preparation for extra units changes for nvidia PMDA.
commit 9a53571da90f56d89dfaa77e1c5b23650c7d012e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:43:37 2026 +1000
qa/archives: mk.* rework
- move to a archive-<version> style of naming so we can generate
multiple archives from the mk.foo scripts to deal with the
evolution of the underlying PMDAs (triggered by amdgpu and the
extra units and metadata changes there)
- convert mk.nvidiagpu to use mk.common (in preparation for
extra units changes for the nvidia PMDA)
commit 01d5079fa81b35300fb292a23f4913afb47e549e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 09:00:48 2026 +1000
qa: track name change for amdgpu qa archive(s)
tests: 1559, 1669, 1670
commit 3b37af8a06ea213b9fa8f2fb5f4e3697ff4418c0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 09:00:09 2026 +1000
src/pmlogrewrite/gram.y: fix small memory leak from extraunits clause
Found by qa/1670.
commit df71b48f5185d5ae6e8c42c10651fbfd7e007c59
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:58:18 2026 +1000
src/pmdas/amdgpu/rewrite.conf: rework for extraunits
Because this rewrite file includes the PMNS <--> PMID fixups,
clauses using metric names are potentially ambiguous and were
confusing pmlogrewrite. Changing to PMIDs for the new extraunits
changes fixes the problem.
commit b1494f97eb1ebb5c9f237dd2e8b98a487621e1f7
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:56:19 2026 +1000
qa/common: prefer diffuse for graphical diffs, if available
For me (on bozo), meld is really slow (to exit), so switching to diffuse.
commit 7dac1fc4662fff14f5aa6d17ce04057ccea4b9b2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:34:37 2026 +1000
qa/GNUmakefile & qa/GNUmakefile.install: the qa mic subdir has been removed
commit 7d44e0c3b22a91033822d47a8f76e0d17e9ef8ed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:02:56 2026 +1000
Retire the roomtemp PMDA
I built this PMDA more than 30 years ago as a proof of concept one
night in a hotel room while on a PCP speaking tour for SGI ... I
no longer have the Dallas one-wire sensor and a PMDA that needs one
temperature sensor plugged into a serial port is probably not that
widely used.
commit 8eba4293ea03392c0db5025efdedfaae6069616a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 07:46:11 2026 +1000
Retire the mic PMDA
The hardware this PMDA depends upon (the Intel® Xeon Phi™ Coprocessor)
stopped shipping almost 9 years ago, so this PMDA is very unlikely to
be of further use.
commit 3b8ca296fba6d27f1d9877622cdf56a22207a022
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 07:27:41 2026 +1000
qa/1187: track name change for original amdgpu QA archive
commit dde1336ec3954b10d64edf1566026eabe7767911
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 21 07:49:12 2026 +1000
debian/control.pcp: update pcp-conf Breaks: and Replaces:
/etc/pcp/indom.conf moved from pcp to pcp-conf.
commit 13767bad0d83923f325957a0d2e994f18d07fbc6
Merge: e7355308 5a35adf6
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 12:23:36 2026 +1000
Merge pull request #2627 from kmcdonell/wip
Add amdgpu PMDA QA test and fix clock metrics unit conversion
commit 5a35adf60d1b786b5b8683652b260ac9295fa3b1
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 10:38:11 2026 +1000
pmdas/amdgpu: small rework
- better error handling for store method
- don't include fake.c in build
commit 525b638cc417b60bc8fa71b9e1a2ec50545739f9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 10:16:37 2026 +1000
qa/1674: check for failure messages from awk
Thanks coderabbitai.
commit e8d92720beb844834e49041b415a13fbe8f5ecf3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 09:57:20 2026 +1000
pmnsmerge.static: rework based on feeedback from coderabbitai
Review in the context of PR 2627.
Make build and use of pmnsmerge.static consistent.
commit f83f0d4802be32714d7a9267ef7283d7682866ed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:50:50 2026 +1000
src/pmdas/amdgpu: improvements
- add amdgpu.control.debug to turn debugging on/off while running
- lots of additional diagnostics under -Dappl1 guards
- fix max clock values - they appear to be KHz not Mhz
- change to extra units for power and temperature
commit d0c9996c6b333e6bfddc8b50891e79e5aa15090e
Merge: 0ee8019a b25dbfda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:44:20 2026 +1000
Merge branch 'main' into wip
commit b25dbfda794d77d2ba436c6482b67d6fcc3bf9dc
Merge: e7355308 26b62109
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:41:41 2026 +1000
Merge branch 'amdgpu'
commit 0ee8019a5bc8dcffa62d19a2c8ca2e2182fc017a
Merge: 329ee605 e7355308
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:22:38 2026 +1000
Merge branch 'main' into wip
commit e7355308175f80cbb99ec07936edbf1c4262ad27
Merge: 8cddb009 b440f2c3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:20:30 2026 +1000
Merge pull request #2610 from kmcdonell/amdgpu
Updates for pmlogrewrite and amdgpu PMDA
commit 26b621095fbe23753f00e59015b0f218791fdbed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:18:19 2026 +1000
amdgpu PMDA: updated qa and test archive
commit 329ee605fc3f1f0e4b45f2f4974fe419ee8f6860
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 06:32:13 2026 +1000
pmnsmerge: build pmnsmerge.static and use it to create local.pmns
commit 8cddb009b1db532a5ffcdbbf1c7007fb6920eea0
Merge: cf8cdf4b bf7adf23
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 21:13:33 2026 +1000
Merge branch 'main' of ../pcp
commit bf7adf233581457b3d08515213d0622812e1995f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 17:17:02 2026 +1000
qa/1544: pmlogger may be a drive-by victim
Dinking with pmproxy may change the metrics from the pmproxy PMDA
which in turn may cause the primary pmlogger to exit, and if there is
no systemd ambulance to apply CPR, and if check.callback is in play
then this and some (large) number of following tests fail because the
primary pmlogger is not running.
commit 8d2f05736b3e6b7cbb372efa3326adb03e00eb92
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 17:15:20 2026 +1000
qa/024: cifs PMDA recently appeared, but it may not be there
Filter away, Mr. Magoo.
commit cf8cdf4b71ebd6801b423807c6f70b8dcd8bce38
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 18 12:03:09 2026 +1000
build: rename root.local to local.root; fix Debian install paths
Rename the generated local context PMNS file from root.local to
local.root throughout (GNUmakefile, .gitignore, pcp-conf.install,
QA test 1742, pcpintro.1).
Also fix pcp-conf.install to use usr/lib/pcp/ rather than
usr/libexec/pcp/ for the new entries - Debian sets libexecdir=/usr/lib
so $(PCP_PMNSADM_DIR) resolves correctly in the makefiles but the
static paths in the install manifest must match.
Addresses review feedback from Kenj.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 58ebd890b437fd434643d4d195a825d4a1fdd26f
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 12:49:24 2026 +1000
build: add QA test and docs for local context DSO PMDA mechanism
QA test 1742 exercises PM_CONTEXT_LOCAL using PCP_PMCDCONF_PATH=local.conf
and PMNS_DEFAULT=root.local: verifies hinv.ncpu is fetchable, mmv wildcard
resolution works, and pmcd.* metrics are absent from the local namespace.
Document PCP_PMCDCONF_PATH and PMNS_DEFAULT usage for local context in
pcpintro(1), including the recommended pairing of local.conf + root.local.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 4d1f2d850f5b26872a0ea16b45b6b22325232b1c
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:30:41 2026 +1000
build: local context files minor formatting tweaks and fixes
Related to #2615.
commit 2aa5606b5fdec1d2910e66542b09915c958b31d1
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 20:50:17 2026 +1000
build: fix duplicate root_* PMNS file installs in pcp-conf PMDAs
PMDAs contributing root_* files to pcp-conf were installing a real
file copy to both $(PMDAADMDIR) and $(PCP_PMNSADM_DIR). Make the
$(PCP_PMNSADM_DIR) and $(PCP_PMNS_DIR) entries symlinks back to the
canonical copy in $(PMDAADMDIR) instead.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 93f9006292ce71291b93a81ebf1b1636b99f6cb7
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 18:35:58 2026 +1000
build: generate root.local PMNS for local context DSO PMDAs
During the build, generate a merged PMNS root.local containing the
combined namespace for all DSO PMDAs listed in local.conf. Uses
pmcpp.static to resolve domain macros and awk to merge the separate
root{} blocks from each PMDA's root_* file into a single namespace.
Install root.local to PCP_PMNS_DIR as part of pcp-conf, alongside
the existing per-PMDA root_* files. Clients using PM_CONTEXT_LOCAL
can select this namespace via PMNS_DEFAULT.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b776d19b5194512a72c83eba135148f35ad4b433
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 11:06:10 2026 +1000
build: move root_* namespace files to pcp-conf for local context
Arrange for the root_* namespace files to be installed via the
pcp-conf package, so that pmNewContext(PM_CONTEXT_LOCAL,...) in
PMAPI clients can use DSO PMDAs for sampling using just pcp-conf
and pcp-libs installed. The final step is to add a "root.local"
without cpp-directives (there is no pmcpp(1) binary is available
in this minimal install situation).
Related to #2615.
commit 41c71e8d09c9edccba5f7a75673a3a43305db16a
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 12 17:38:31 2026 +1000
build: introduce local.conf with dso PMDAs for local context
Arrange for the build to produce /etc/pcp/local.conf for use
with pmNewContext(PM_CONTEXT_LOCAL,...) so that PMAPI clients
can use DSO PMDAs for sampling using just pcp-libs installed,
and no pmcd installed/running if they wish.
Related to #2615.
commit 2f88a1a20e7a3dcfa60af5be50894cb4d6e8acda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 16:58:03 2026 +1000
qa/1094: capture stderr and filter, and remake
After pmlogger_daily diagnostic improvements.
Fallout from macOS work on pmlogger_daily et al.
commit 92ee2b1b68d0ba0da6827bfd892b2000bdfe048e
Merge: 29e63c95 245f3fa0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:59:18 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit b440f2c3c15ffcc8df2795d6ec14ee2869155221
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:55:56 2026 +1000
src/pmdas/amdgpu: move fake library routines to a separate source file
Move fake routines to (new) fake.c and cleanup drm.c.
commit f52c123a2c60cfb0bd0e331bd3c411866430b27d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:47:23 2026 +1000
src/pmdas/amdgpu/drm.c: small tweaks in fake routines implementaion
commit 245f3fa0c58976db6e8e13d847d8f53569de8ebb
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 17 14:46:39 2026 +1000
build: update gitignore for debian/ generated sysusers files
commit ac8e96c8b1fa4d4abc68c448c9a75ca1eaec02fd
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:28:39 2026 +1000
src/pmdas/amdgpu/drm.c: fix calloc() botch in fake library routines
Found by valgrind.
commit 19993a221edfee2532007596d7131f9cc3186708
Merge: fa574d6d ad88f2db
Author: Paul Smith <tallpsmith@gmail.com>
Date: Wed Jun 17 14:20:17 2026 +1000
Merge pull request #2626 from tallpsmith/feature/brewfile-mac-deps
build/mac: replace brew-packages.txt with a top-level Brewfile
commit 88bb5db665e6e41eb63475a4a77ab943b394dd83
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:10:05 2026 +1000
src/pmdas/amdgpu/amdgpu.c: fix fatal problem with PMID changes
Move GPU metrics from cluster 2 to cluster 3 exposed a quirk in
the implementation ... none of the cluster 3 metrics were being
refreshed, so no values were available.
commit b2208e689a3bc5377456bd15d139e3f83e5059a2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:05:37 2026 +1000
src/pmdas/amdgpu/drm.c: hackery to support development without hardware
Fake minimal implementation of the drm*() and amd*() library routines
that the PMDA needs ... allows testing if you don't have AMD GPU
hardware.
Obviously this is disabled by default 8^)
commit ad88f2db1ff4aff7ed12f32bef2f6d2ce81dc497
Author: Paul Smith <tallpsmith@gmail.com>
Date: Thu Jun 11 09:53:01 2026 +1000
build/mac: replace brew-packages.txt with a top-level Brewfile
Simplifies macOS dep install to `brew bundle` for contributors and CI.
The Brewfile sits at the repo root so `brew bundle` works with no args;
Brewfile.lock.json is gitignored (cosmetic, not load-bearing).
- INSTALL.md, .github/workflows/macOS.yml, .cirrus.yml all updated
- Cirrus cache fingerprint now hashes the Brewfile package set
- build/mac/brew-packages.txt removed
commit 770d8ac7d8ceca0ec6f9f684857564d8307984dc
Merge: 647eb6c1 29e63c95
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 06:48:41 2026 +1000
Merge branch 'main' into amdgpu
commit 29e63c95af7f49240f751b0751145217a56eda83
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 06:46:40 2026 +1000
1425.out: remade after pmlogger_daily diagnostic improvements
Fallout from macOS work on pmlogger_daily et al.
commit 16d21906d4c3a6d1506950d10ca6aea28c28a858
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 17:34:59 2026 +1000
debian/pcp-testsuite.postinst: use getent in preference /etc/passwd
Makes a lintain error go away.
commit fa574d6dc8875962e1ec36b99448b67272c0b9e8
Merge: 9b168767 9f0982d0
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 14:45:49 2026 +1000
Merge branch 'main' of github.com:performancecopilot/pcp
commit 9b1687674e68de66cfd0b6b461a8acaa12fb07de
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 14:44:20 2026 +1000
pmdadb2: fix SQL function names and column names for Db2 12.1
Correct several bugs identified by testing against Db2 12.1 Community
Edition where the original queries produced SQL0206N or SQL0440N errors:
MON_GET_LATCH does not exist. The correct function name is
MON_GET_EXTENDED_LATCH_WAIT(member). Updated both the latch instance
domain query and the cluster 6 metric query.
TOTAL_SORT_TIME does not exist in MON_GET_DATABASE. The correct column
name is TOTAL_SECTION_SORT_TIME. Rename the metric accordingly to
db2.database.total_section_sort_time.
STMT_SORTS does not exist in MON_GET_PKG_CACHE_STMT. The correct column
name is TOTAL_SORTS.
UNREAD_PREFETCH_PAGES belongs to MON_GET_TABLESPACE, not
MON_GET_BUFFERPOOL. Move it from the bufferpool cluster (where it
produced SQL0206N) to the tablespace cluster as a new item 14, renaming
the metric to db2.tablespace.unread_prefetch_pages.
POOL_NO_VICTIM_BUFFER is unconfirmed in MON_GET_BUFFERPOOL and likely
a snapshot-era element that was never surfaced in the monitoring table
function. Remove it from the bufferpool cluster.
MON_GET_TRANSACTION_LOG takes a single member INTEGER parameter, not
two parameters. Remove the stale comment that described it as
(db_name, member) — the query was already correct at (-1).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 647eb6c178ac67390f2ab333b87f1c347cef1be2
Merge: 7ef39c36 1c372c0a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 14:27:10 2026 +1000
Merge branch 'main' into amdgpu
commit 9f0982d0846ecf367c5c14577e6f921b1120d48d
Merge: 0186ab1f 1c372c0a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 14:18:27 2026 +1000
Merge branch 'main' of ../pcp
commit 1c372c0adb05e278edfcfe1f63daa6a76600fe0e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 14:17:32 2026 +1000
qa/GNUmakefile: package common.perl
Missed when the file was added.
commit 0186ab1f80f5d0e69306f4398b5a938ec6619f64
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 13:05:22 2026 +1000
qa: add common.perl to the makefile for builds/CI
commit 2d9cb990b40406bab8eed7531857f01a8c19336f
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:54:49 2026 +1000
pmdards: remove unused generated files checked into git
commit 9bd60ae96cd3098c430db9c9190d9d74b46ffbdc
Merge: 04d35b66 014a29c6 117b55d2
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:53:10 2026 +1000
Merge branches 'makepkgs-ci-mode' and 'pmdadb2'
commit c670e49563d87d2f715b6fc3a90721e13bae6457
Merge: bdf948e9 8eaa9714
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:10:46 2026 +1000
Merge branch 'units'
Conflicts:
qa/1668.out
Fixed up between units and main branches.
commit bdf948e95d9dc094f7f0f34d7ca6278e6ddc3adf
Merge: ac9c6578 04d35b66
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:02:01 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 04d35b66533950efe44c4eef94af7585b238b50f
Merge: 58eecb96 f37b2208
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:01:32 2026 +1000
Merge pull request #2619 from kmcdonell/mac
macOS QA and build fixups
commit 014a29c67c20b8b5e1324c05b63d6dff25ff2d9a
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 09:54:24 2026 +1000
Makepkgs: add --ci mode to reduce output volume while preserving error context
--verbose floods container CI platforms with enough output to trigger
internal container runtime timeouts (libpod exit-file races etc.).
Dropping --verbose silently loses the error context on build failure.
Add --ci mode as a middle ground: all output still goes to Logs/pcp in
full, but only phase headers and error/failure lines are streamed to
stdout in real time via a single _tee_log() helper. On failure,
build_failure() emits a filtered error summary and the last 100 lines
of the log, which is far more useful than the previous 10-line tail.
Switch all CI platform configs and the macOS workflow to --ci.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit ac9c657866f66d1f46e15f0b0ebe694785893c05
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 08:01:51 2026 +1000
debian/changelog: 30 Jul is Thu, not Wed, and lintian noticed!
commit 7ef39c366a280848aad154c7edc7a0ae46eda652
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 06:59:23 2026 +1000
src/pmdas/amdgpu/amdgpu.c: fix PM_LABEL_* logic
Spotted by @coderabbitai in the context of PR #2610.
commit 0d4b6704187be2067c46f92451d345501146e87f
Merge: c595ea2a 58eecb96
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 06:47:26 2026 +1000
Merge branch 'main' into amdgpu
commit c595ea2a5c181c1738eca3f9d855b720c883337d
Merge: 18dae4f2 62bd06c5
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 06:46:33 2026 +1000
Merge branch 'main' into amdgpu
commit 18dae4f2ffa2f57efe001b37028009c00ac9113a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 06:45:26 2026 +1000
src/pmdas/amdgpu/amdgpu.c: add throttled diagnostics in pmFetch callback
commit 117b55d226a0e7abad4f21293d167bf5dded3b47
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 21:44:32 2026 +1000
pmdadb2: address second round of coderabbit review comments
Fix four valid issues identified in review:
Align latch indom query with metric query: the indom enumeration
returned all non-null latch names while the metric query filtered to
TOTAL_EXTENDED_LATCH_WAITS > 0, so instance-only requests could expose
latch names that then produced PM_ERR_VALUE on fetch. Apply the same
filter to both queries.
Fix pkg_cache metric semantics: db2.pkg_cache.total_executions and the
four other SUM(...) aggregates are snapshots over the current package
cache contents; they can decrease when statements are evicted or the
cache is flushed. Changed from PM_SEM_COUNTER to PM_SEM_INSTANT and
updated the help text accordingly.
Use ConnectTimeout in ibm_db DSN: self.timeout was parsed from the
configuration file but never applied. Include ConnectTimeout=N in the
connection string so the configured value actually limits how long the
driver waits during initial connection.
Clear cluster value caches before repopulating: db2_refresh_db_scoped
and db2_refresh_instanced appended to values dicts without clearing
first. Dropped connections accumulated indefinitely in the connection
metrics dicts, and failed refreshes left stale values. Clear each
metric's values dict at the start of every refresh.
Two further comments were assessed and not actioned:
- MON_GET_* member -1 vs -2: -1 (current member) is correct for
standard non-partitioned Db2. DPF/pureScale users would need -2.
- Lossy instance name encoding: Db2 regular identifiers cannot contain
spaces or :: so the risk is theoretical only.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit ef31da0eb80e9be4e677e8597ae0d1e151ae68f3
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 16:17:36 2026 +1000
pmdadb2: add discrete instance metrics and pmlogconf recording configs
Add cluster 9 (ENV_GET_INSTANCE_INFO) providing three PM_SEM_DISCRETE
string metrics that are logged once and carried as archive context:
db2.instance.name - Db2 instance name (INST_NAME)
db2.instance.version - full service level string (SERVICE_LEVEL)
db2.instance.platform - OS and CPU architecture (PLATFORM)
These are queried from the first available database connection since
all databases on a Db2 instance share the same version and platform.
A new db2_refresh_singleton method handles this: it iterates databases
until one responds and stops, unlike db2_refresh_db_scoped which loops
all databases and uses indom 6.
Add two pmlogconf recording configuration files installed to
/var/lib/pcp/config/pmlogconf/db2/ and included in the base pcp
package (not pcp-pmda-db2), since pmlogger may run on a host that
does not have the PMDA subpackage installed:
pmlogconf.summary - db2.instance.* discrete metrics (log-once)
pmlogconf.default - db2.database, db2.bufferpool, db2.log,
db2.pkg_cache aggregate performance metrics
The manifest pattern in pcp.spec.in and redhat.spec is left as
(etc/pcp|pmdas)/db2 so pmlogconf files are not claimed by the
pcp-pmda-db2 subpackage and fall through to the base pcp package.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b4499b6ba11351c1c90d1912683383fd533ddb14
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 15:25:28 2026 +1000
pmdadb2: address coderabbit review comments
pcp.spec.in: move %preun and %files for pcp-pmda-db2 inside the
existing %if "@have_python@" == "true" blocks that cover all other
unconditional Python PMDAs (netcheck, rabbitmq, etc).
pmdadb2.python: use RawConfigParser so that '%' characters in
passwords are not misinterpreted as configparser interpolation markers.
Pre-populate indom 6 from self.databases before querying so a transient
per-database query failure does not drop that database from the instance
domain for all db-scoped metrics. Use json.dumps() in the label
callback so special characters in database or application names do not
produce malformed JSON. Remove unused intobool() method.
pmdadb2.1: add missing DESCRIPTION subsections for db2.latch and
db2.pkg_cache metric clusters.
qa/2002: replace eval-based config parsing with per-variable awk
assignments to avoid shell injection via crafted config values.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 3c781735f043c71d95b68f913cc1f78caa8dd710
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 14:58:05 2026 +1000
pmdadb2: new Python PMDA for IBM Db2 performance metrics
Adds a PMDA for collecting performance data from IBM Db2 databases using
the ibm_db Python package and the Db2 MON_GET_* monitoring table functions.
Nine metric clusters (0-8) covering ~85 metrics across eight namespaces:
db2.database.* (27) database-wide aggregates: transactions, row counts,
sort/lock/deadlock/escalation/timeout statistics,
package cache efficiency, direct I/O, connections
db2.bufferpool.* (14) per buffer pool: logical/physical/async reads and
writes for data, index and column-organised pages,
pool I/O times, unread prefetch pages, no-victim events
db2.table.* (10) per user table: row DML counts, lock waits/escalations/
deadlocks, overflow accesses, full table scans
db2.workload.* (8) per workload: row counts, CPU time, transactions,
lock waits
db2.tablespace.* (14) per tablespace: buffer pool and async I/O for data
and index pages, direct read/write counts and times
db2.connection.* (10) per active connection: CPU time, row counts, commits,
rollbacks, lock waits, deadlocks, escalations
db2.latch.* (2) per latch type: extended wait time and count
(MON_GET_LATCH, filtered to contended latches only)
db2.log.* (10) transaction log I/O: writes, reads, physical I/O
counts, buffer-full events, current used/available KB
db2.pkg_cache.* (6) package cache summary aggregate: cached statement
count, total executions, CPU time, rows read, sorts
Seven instance domains: buffer pools, tables (schema.table), workloads,
tablespaces, connections, latches, and databases.
Multiple databases on a single Db2 instance are supported. The [databases]
section of the configuration file holds a space-separated list of database
names. One connection per database is maintained. The database name is the
instance for the db2.database.*, db2.log.* and db2.pkg_cache.* metrics; all
per-object metrics use dbname::component instance naming. A labels callback
decomposes compound instance names into separate database= and object-type=
label dimensions for use with time series queries.
All metrics and instance domains carry both one-line and long help text,
including the source MON_GET_* column name.
Configuration is at $PCP_SYSCONF_DIR/db2/db2.conf (/etc/pcp/db2/) only.
Design notes:
- ibm_db is not packaged in major Linux distributions, so the PMDA is built
unconditionally whenever Python is available (like pmdanetcheck/pmdanrabbitmq)
rather than gating on a configure-time library check. A graceful ImportError
with a useful diagnostic is emitted at runtime if ibm_db is absent, and the
Install script performs the same check before registering with pmcd.
- Each PCP cluster maps to exactly one MON_GET_* SQL call per configured
database, fetching all columns for all instances in a single round-trip.
Only clusters containing requested metrics are queried per fetch PDU.
- Reconnection after a Db2 instance restart is handled by probing with
VALUES(1) in db2_cursor() rather than relying on ibm_db.active() alone.
db2_exec() clears the connection handle on any query failure to ensure
the next call triggers a full reconnect.
QA test 2002 exercises Install/Remove and validates key metrics against
the first configured database, _notrun if prerequisites are absent.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 58eecb96c6e086e674b1d28eaf5c8210572ecd4b
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 15:10:10 2026 +1000
ci: update the PR workflow to run CI, not full QA
commit 00647003621473f4000224e3dac21f16a76715e9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 15 07:56:10 2026 +1000
src/pmdas/amdgpu/amdgpu.c: add refresh failure reporting
commit 62bd06c536427fe9e73efa08e3e4add0f204438f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 21:30:11 2026 +1000
debian/pcp-testsuite.postinst: for login shell to be set for user pcpqa
Older versions of systemd-sysusers don't do this.
commit eb102deae45ca969e51dc82c445acea40b408c0b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 17:18:07 2026 +1000
debian/pcp-testsuite.postinst: fix typo from debugging last fix
commit 0f38ae979f59f54da574bc58f4ad7f7ac926dbd2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 16:54:04 2026 +1000
build/rpm/pcp.spec.in: track name change for sysusers files over in debian dir
commit 954e70af6e722f8a378e793f88be3301654dbe0a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 14:52:22 2026 +1000
debian: more rework for debian bug #1138692
So, using systemd-sysusers is a great idea, except the systemd pixies changed
the syntax of the sysusers control files at systemd version 247 meaning the
pcp|pcpqa user setup fails on older Ubuntu systems.
More rework to fix the sysusers file in the build.
commit 4fee09a99c199ea0da99d85892eebe43e7a969d0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 10:57:38 2026 +1000
debian: rework for debian bug #1138692
I took Claude's suggestion without proper checking, and it was
wrong:
1. the Depends: for /usr/bin/systemd-sysusers was the wrong
(non-existent!) package
2. the change makes the package installation fail if systemd
is not present
Harden the postinst scripts to use systemd-sysusers if available else
use useradd if available else fail. Fix the Depends: clauses to match.
Check success of systemd-sysusers (or useradd) and fail if they fail.
If we can't install the required pcp (and pcpqa) users, the
installation is doomed.
commit 1a87f63e2a419b49b7bb8a7b2f94acf30a424130
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 08:10:32 2026 +1000
qa: fix tests using sudo instead of $sudo
This issue was identified by @coderabbit in some other tests in the
context of PR #2619 (macOS QA and build fixups).
commit f37b2208297b933886fca997ef29a664abe81fec
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 08:02:56 2026 +1000
macOS QA and build fixups: couple of more issues caught by @coderabbitai
There are 4 open security issues in bookworm.
You can find information about how to handle these issues in the security team's documentation.