@@ -347,35 +347,110 @@ jobs:
347347 ./exercise -? 2>&1 | head -3 && echo "✓ Rebuilt binary works!"
348348 fi
349349
350- - name : Debug dynamic PMDA GNUmakefile
350+ - name : Debug testsuite state before QA
351351 run : |
352- echo "=== Checking installed GNUmakefile for dynamic PMDA ==="
353- echo ""
354- echo "GNUmakefile location:"
355- ls -la /var/lib/pcp/testsuite/pmdas/dynamic/GNUmakefile || echo "NOT FOUND!"
356-
357- echo ""
358- echo "GNUmakefile content (CFLAGS section):"
359- sed -n '20,30p' /var/lib/pcp/testsuite/pmdas/dynamic/GNUmakefile
352+ echo "=========================================="
353+ echo "=== TESTSUITE STATE BEFORE QA TESTS ==="
354+ echo "=========================================="
360355
361356 echo ""
362- echo "PCP environment from pcp.conf: "
357+ echo "=== 1. PCP Configuration === "
363358 . /etc/pcp.conf
364359 echo "PCP_INC_DIR=$PCP_INC_DIR"
365360 echo "PCP_LIB_DIR=$PCP_LIB_DIR"
361+ echo "PCP_VAR_DIR=$PCP_VAR_DIR"
362+ echo "PCP_PLATFORM=$PCP_PLATFORM"
363+
364+ echo ""
365+ echo "=== 1b. Path Resolution Check (realpath) ==="
366+ echo "/usr/local -> $(realpath /usr/local 2>/dev/null || echo 'FAILED')"
367+ echo "/usr/local/include -> $(realpath /usr/local/include 2>/dev/null || echo 'FAILED')"
368+ echo "PCP_INC_DIR resolved -> $(realpath "$PCP_INC_DIR" 2>/dev/null || echo 'FAILED')"
369+ echo "Homebrew prefix: $(brew --prefix 2>/dev/null || echo 'not installed')"
370+ echo ""
371+ echo "Raw string comparison test:"
372+ echo " PCP_INC_DIR='$PCP_INC_DIR'"
373+ echo " Equals '/usr/include/pcp'? $([ "$PCP_INC_DIR" = "/usr/include/pcp" ] && echo YES || echo NO)"
374+ echo " Equals '/usr/local/include/pcp'? $([ "$PCP_INC_DIR" = "/usr/local/include/pcp" ] && echo YES || echo NO)"
366375
367376 echo ""
368- echo "Checking if libpcp.h exists at expected location:"
369- ls -la "$PCP_INC_DIR/libpcp.h" 2>&1 || echo "NOT FOUND at $PCP_INC_DIR/libpcp.h"
370- ls -la "$PCP_INC_DIR/../libpcp.h" 2>&1 || echo "NOT FOUND at $PCP_INC_DIR/../libpcp.h"
377+ echo "=== 2. Check for libpcp.h in ALL locations ==="
378+ echo "Installed include dir:"
379+ ls -la "$PCP_INC_DIR/libpcp.h" 2>&1 || echo " NOT FOUND"
380+ echo "Parent include dir:"
381+ ls -la "$PCP_INC_DIR/../libpcp.h" 2>&1 || echo " NOT FOUND"
382+ echo "Testsuite src dir:"
383+ ls -la /var/lib/pcp/testsuite/src/libpcp.h 2>&1 || echo " NOT FOUND"
371384
372385 echo ""
373- echo "Checking builddefs location:"
374- ls -la "$PCP_INC_DIR/builddefs" 2>&1 || echo "NOT FOUND at $PCP_INC_DIR/builddefs"
386+ echo "=== 3. Check pmdadynamic binary state ==="
387+ DYNAMIC_DIR="/var/lib/pcp/testsuite/pmdas/dynamic"
388+ echo "Directory contents:"
389+ ls -la "$DYNAMIC_DIR/" | head -20
390+ echo ""
391+ echo "Binary exists and executable?"
392+ if [ -x "$DYNAMIC_DIR/pmdadynamic" ]; then
393+ echo " YES - pmdadynamic is executable"
394+ echo " Timestamp: $(stat -f '%Sm' "$DYNAMIC_DIR/pmdadynamic")"
395+ echo " Size: $(stat -f '%z' "$DYNAMIC_DIR/pmdadynamic") bytes"
396+ else
397+ echo " NO - pmdadynamic missing or not executable"
398+ fi
399+ echo ""
400+ echo "Source file timestamp:"
401+ stat -f '%Sm' "$DYNAMIC_DIR/dynamic.c" 2>&1 || echo " dynamic.c not found"
402+
403+ echo ""
404+ echo "=== 4. Check GNUmakefile in pmdas/dynamic ==="
405+ echo "CFLAGS section (lines 20-35):"
406+ sed -n '20,35p' "$DYNAMIC_DIR/GNUmakefile"
407+
408+ echo ""
409+ echo "=== 5. Check localconfig existence ==="
410+ TESTSUITE="/var/lib/pcp/testsuite"
411+ if [ -f "$TESTSUITE/localconfig" ]; then
412+ echo "localconfig EXISTS - contents:"
413+ cat "$TESTSUITE/localconfig"
414+ else
415+ echo "localconfig DOES NOT EXIST - make setup will run"
416+ fi
417+
418+ echo ""
419+ echo "=== 6. Test include path resolution ==="
420+ cd "$DYNAMIC_DIR"
421+ echo "From $PWD:"
422+ echo " ../../src resolves to: $(cd ../../src 2>/dev/null && pwd || echo 'DOES NOT EXIST')"
423+ echo " Contents of ../../src (if exists):"
424+ ls ../../src/*.h 2>/dev/null | head -5 || echo " No .h files or dir doesn't exist"
425+
426+ echo ""
427+ echo "=== 7. Dry-run make to see what would happen ==="
428+ cd "$TESTSUITE"
429+ echo "Running: make -n setup (dry run)"
430+ sudo -u pcpqa make -n setup 2>&1 | head -50 || echo "make -n failed"
431+
432+ echo ""
433+ echo "=== 8. Check MAKEFLAGS environment ==="
434+ echo "MAKEFLAGS=${MAKEFLAGS:-'(not set)'}"
375435
376436 - name : Run QA sanity tests
437+ env :
438+ MAKEFLAGS : " " # Force serial make - no parallelism
377439 run : |
378440 cd /var/lib/pcp/testsuite
441+
442+ # If localconfig doesn't exist, make setup will run
443+ # Capture its output explicitly
444+ if [ ! -f localconfig ]; then
445+ echo "=== localconfig missing, running make setup explicitly ==="
446+ sudo -u pcpqa make setup 2>&1 | tee /tmp/make-setup.log || {
447+ echo ""
448+ echo "=== MAKE SETUP FAILED ==="
449+ echo "Full output saved to /tmp/make-setup.log"
450+ exit 1
451+ }
452+ fi
453+
379454 sudo -u pcpqa ./check -g sanity -x not_in_ci
380455
381456 - name : Upload QA logs
@@ -387,4 +462,5 @@ jobs:
387462 qa/*.bad
388463 qa/check.log
389464 /var/log/pcp/
465+ /tmp/make-setup.log
390466 retention-days : 7
0 commit comments